import { useMemo } from 'react' import Taro from '@tarojs/taro' import { useModel } from '@/store' import useRouter from '@/utils/hooks/useRouter' import Loading from './Loading' import { getPageBy, getIndexPageOf } from '../routes' export default (Child) => (props) => { const { person } = useModel('person') const router = useRouter() // 确保人员信息到位 const loading = !person?.personRole; // 校验人员角色及页面是否对应 const jumpPage = useMemo(() => { const personRole = person?.personRole; if (!personRole) return; const isNormalPerson = personRole === 'normal' const currentPage = getPageBy(router.path) let indexPage = getIndexPageOf(personRole) if (!isNormalPerson) { indexPage = `${personRole}/${indexPage.page}` } else { indexPage = `pages/index/index` } const isMatched = isNormalPerson ? // 如果是普通客户, page.root 应该是空的 !currentPage.root : // 其他角色, 应该是对应的 currentPage.root === personRole // 如果对应上, 就不跳转 return isMatched ? personRole : indexPage }, [router.path, person?.personRole]) if (jumpPage) { // 注意此处跳转是没有加上原来的页面参数的 Taro.reLaunch({ url: `/${jumpPage}`, }) } return loading ? : }