import React, { useState, useEffect } from 'react' import Taro, { useDidShow, useRouter } from '@tarojs/taro' import { useSelector } from 'react-redux' import { View } from '@tarojs/components' import Overlay from '@/components/Overlay' import Loading from '@/components/Loading' import AuthAvatar from '@/components/Auth/AuthAvatar' import AuthPhone from '@/components/Auth/AuthPhone' import Spin from '@/components/Spin/Spin2' import FixedConsultant from '@/components/FixedConsultant' import { report as reportCustomer } from '@/utils/customer' import { ROLE_CODE } from '@/constants/user' import useAuth from './useAuth' import { routes } from '../routes' import './style.scss' export default (ChildComponent) => (props) => { const consultant = useSelector(s => s.system.consultant) const { spinning, userInfo } = useSelector(s => s.user) const { person, ...extInfo } = userInfo || {} const router = useRouter() const page = routes.filter((r) => (router.path.indexOf(r.page) > -1))[0] const [loading, setLoading] = useState(false) const [authPhone, authAvatar] = useAuth(person, page) const { id } = router.params const showConsultant = page.shortcut && page.shortcut.consultant // 页面分享 const [shareContent, setShareContent] = useState({}) // 页面埋点 const [trackData, setTrackData] = useState({}) // 报备客户 useEffect(() => { reportCustomer(person, consultant, false).catch(() => {}) }, [person, consultant]) // 请求埋点设置 useEffect(() => { if (id) { setShareContent({}) } } ,[id, page.type]) // 埋点数据 useEffect(() => { const consultantId = person?.personType === ROLE_CODE.CONSULTANT ? person.personId : undefined setTrackData({ eventType: page.type, propertyName: page.name, consultantId, sharePersonId: person?.personId, targetId: id, }) }, [person, page, id]) // 主要用于埋点 useEffect(() => { Taro.setStorage({ key: 'page', data: page }) }, [page]) useEffect(() => { setLoading(!person || !person.personId) // eslint-disable-next-line react-hooks/exhaustive-deps }, [person]) return ( <> { person && !!person.personId && ( ) } { !!showConsultant && () } ) }