import React, { useState, useEffect } from 'react' import Taro from '@tarojs/taro' import withLayout from '@/layout' import { getChannelCustomerStatus, getCustomerDetail, getCustomerInfo } from '@/services/person' import { ScrollView, Image } from '@tarojs/components' import Modal from '@/components/Modal' import { ROLE_CODE } from '@/constants/user' import { API_CUSTOMER_DETAILINFO } from '@/constants/api' import { fetch } from '@/utils/request' import { formatDate } from '@/utils/chatDate' import icon24 from '@/assets/mine-icon24.png' import icon25 from '@/assets/mine-icon25.png' import EditUserDetailBasicInfo from '../components/EditUserDetailBasicInfo' import useFollow from './hooks/useFollow' import './index.scss' const addDays = (dt, days) => { const zone8 = 8 * 3600 * 100 // 中国时区, 因为 toJSON 是 ISO 时间 const ret = new Date(new Date(dt).valueOf() + (days - 1) * 24 * 3600 * 1000 + zone8) return ret.toJSON().substring(0, 10) } export default withLayout((props) => { const { router, person } = props const { id } = router.params const [custBaseInfo, setCustBaseInfo] = useState({}) const [custMoreInfo, setCustMoreInfo] = useState({}) const [statusInfo, setStatusInfo] = useState({}) const [followContent, setFollowContent] = useState() const [showUserEditor, setShowUserEditor] = useState(false) const [showFollowModal, setShowFollowModal] = useState(false) const [followList, followSubmitting, addFollow] = useFollow(custBaseInfo) const { channelCustomer, building } = statusInfo const expirationDate = building?.expirationDate ? addDays(channelCustomer?.createDate, building?.expirationDate) : '暂无' const handleAddFollow = () => { addFollow(followContent) const t = setTimeout(() => { setShowFollowModal(false) clearTimeout(t) }, 1500) } useEffect(() => { if (id) { fetch({ url: `${API_CUSTOMER_DETAILINFO}/${id}` }).then((x) => { setCustBaseInfo(x || {}) }) getChannelCustomerStatus(id).then((x) => { setStatusInfo(x || {}) }) getCustomerInfo(id).then((x) => { setCustMoreInfo(x || {}) }) } }, [id, person]) return ( {/* 基本信息 */} 基本信息 setShowUserEditor(true)}> {custBaseInfo.name} {custBaseInfo.phone} {/* 对楼盘意向值: xxxxxxxxxxx */} 跟进状态: 跟进中 报备状态: 报备中 跟进结果: {statusInfo.followed ? '今日已跟进' : '今日未跟进'} 报备结果: {custBaseInfo.status > 1 ? '已到访' : '已报备'} 预计收回时间: {expirationDate} {/* 房源订单 */} { custBaseInfo.customerSignatory?.length > 0 && ( 房源订单 { custBaseInfo.customerSignatory.map((item) => { const apartment = item.buildingApartment || {} const { apartmentName } = apartment const nameShow = apartmentName ? `(${apartmentName})` : '' const status = item.status === 5 ? '结佣' : '签约' const icon = item.status === 5 ? icon24 : icon25 const buildingArea = item.buildingArea ? `${Number(item.buildingArea).toFixed(1)}㎡` : '暂无' const insideArea = item.insideArea ? `${Number(item.insideArea).toFixed(1)}㎡` : '暂无' return ( {`${item.price}${nameShow}`} {status} {`建筑面积: ${buildingArea}`} {`套内面积: ${insideArea}`} ) }) } ) } {/* 操作人员 */} {/* 操作人员 更多 最后跟进人 跟进时间 */} {/* 跟进记录 */} 跟进记录 setShowFollowModal(true)}> 新增 {/* 更多 */} { followList.map((item, index) => ( 范丞丞 {formatDate(item.createDate, 'yyyy-MM-dd hh:mm')} {item.recordContent} )) } setShowFollowModal(false)}>