import { Button, Image, Picker, Text, Textarea, View } from '@tarojs/components'
import Taro, { chooseMedia } from '@tarojs/taro'
import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react'
import type { ModifyModalRef } from './components/ModifyModal'
import ModifyModal from './components/ModifyModal'
import { alert, goLink, isEmptyObject, retrieval } from '@/common/common'
import Popup from '@/components/popup'
import { CompanyTypeApi, PortraitUpdateApi, RealNameUpdateApi } from '@/api/user'
import { companyDetailApi, companyUpdateApi } from '@/api/company'
import './index.scss'
import useLogin from '@/use/useLogin'
import { useSelector } from '@/reducers/hooks'
import useUploadCDNImg from '@/use/useUploadImage'
import { IMG_CND_Prefix } from '@/common/constant'
import useUserInfo from '@/use/useUserInfo'
import IconFont from '@/components/iconfont/iconfont'
import { formatImgUrl } from '@/common/format'
// 列表
const UserEditList = memo((props: any) => {
return (
{props.label}
{props.children ? props.children : props.data ? props.data : {props.placeholder}}
{!props.useIcon && }
)
})
export default () => {
const { getPhoneNumber, getAdminUserInfo } = useLogin()
const { adminUserInfo } = useSelector(state => state.userInfo)
const ModifyNicknameEl = useRef(null)
const ModifyCompanyNameEl = useRef(null)
// 表单数据
const [formData, setFormData] = useState(adminUserInfo)
// 用户信息
useEffect(() => {
setFormData({
...formData,
...(adminUserInfo as any),
})
}, [adminUserInfo])
// 昵称修改保存
const { fetchData: realNameUpdateFetch } = RealNameUpdateApi()
const rules = {
text: [
{
message: '请输入',
},
],
}
const { fetchData: saveFetch } = companyUpdateApi()
const { fetchData: getCompanyFetch } = companyDetailApi()
const handleTextareaSave = async(text, type) => {
retrieval({ text }, rules)
.then(async() => {
let result
if (type == 'Ickname') {
result = await realNameUpdateFetch({ real_name: text })
}
else {
const params = await getCompanyFetch()
result = await saveFetch({
...params.data,
company_name: text,
})
}
if (result.success) {
getAdminUserInfo()
ModifyNicknameEl.current?.setModalShow(false)
ModifyCompanyNameEl.current?.setModalShow(false)
alert.success('保存成功')
}
else {
alert.none(result.msg)
}
})
.catch((message) => {
alert.none(message)
})
}
// Taro.eventCenter.on('message:detail', (message) => console.log(message))
// 面面跳转
const onNavigate = (url: string) => {
goLink(url)
}
// 肖像编辑
const { fetchData: portraitUpdateFetch } = PortraitUpdateApi()
const { getWxPhoto } = useUploadCDNImg()
const handleSelectRortrait = () => {
Taro.showModal({
title: '提示',
content: '是否确定更改头像?',
showCancel: true,
async success(ev) {
if (ev.confirm) {
const result = await getWxPhoto('mall')
const portraitUpdateResult = await portraitUpdateFetch({
avatar_url: IMG_CND_Prefix + (result as any).url,
})
if (portraitUpdateResult.success) {
getAdminUserInfo()
alert.success('保存成功')
}
else {
alert.none(portraitUpdateResult.msg)
}
}
},
})
}
const mGetPhoneNumber = (ev) => {
if (ev.detail?.code) {
getPhoneNumber(ev.detail.code)
}
else {
alert.none('绑定失败!')
}
}
// 获取企业类型
const { fetchData: companyTypeFetch, state: companyTypeData } = CompanyTypeApi()
const getCompanyTypeData = async() => {
const reuslt = await companyTypeFetch()
if (reuslt.success) {
reuslt.data?.list?.every((item, index) => {
if (item.id == (adminUserInfo as any).purchaser_type) {
setFormData({
...(adminUserInfo as any),
company_type_index: index,
})
return false
}
return true
})
}
}
// 修改企业类型
const handleCompanyType = async(ev) => {
const { value } = ev.detail
const item = companyTypeData.data.list && companyTypeData.data.list[value]
if (item) {
if (item.id == 0) { return alert.error('请选择类型') }
const params = await getCompanyFetch()
const result = await saveFetch({
...params.data,
purchaser_type: item.id,
})
if (result.success) {
getAdminUserInfo()
alert.success('保存成功')
}
else {
alert.none(result.msg)
}
}
}
const { removeToken, removeSessionKey, removeUserInfo } = useUserInfo()
const outLogin = () => {
removeToken()
removeSessionKey()
removeUserInfo()
goLink('/pages/index/index', {}, 'switchTab')
}
const comanyTypeDataFormat = useMemo(() => {
if (companyTypeData.data.list) {
return companyTypeData.data.list?.map((item) => {
if (item.id == 0) { item.name = '--请选择类型--' }
return item
})
}
else {
return []
}
}, [companyTypeData])
useEffect(() => {
setFormData({
...(adminUserInfo as any),
company_type_index: 0,
})
getCompanyTypeData()
}, [])
const userInfo = useSelector(state => state.userInfo)
const onPhone = () => {
if (!userInfo?.adminUserInfo?.sale_user_phone) { return alert.error('手机号不能为空') }
Taro.makePhoneCall({
phoneNumber: userInfo?.adminUserInfo?.sale_user_phone,
})
}
const handleClickNickname = () => {
ModifyNicknameEl.current?.setModalShow(true)
}
const handleClickCompanyName = () => {
ModifyCompanyNameEl.current?.setModalShow(true)
}
return (
点击编辑头像
{formData?.phone
? (
{formData?.phone}
)
: (
)}
{!!userInfo?.adminUserInfo?.sale_user_id &&
{userInfo?.adminUserInfo?.sale_user_name}
专属客户经理
{userInfo?.adminUserInfo?.sale_user_phone}
onPhone()}>
拨打
}
{/* */}
handleTextareaSave(value, 'Ickname')} />
handleTextareaSave(value, 'companyName')}
/>
)
}