index.jsx 3.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import React, { useState, useEffect } from 'react'
  2. import Taro, { useDidShow } from '@tarojs/taro'
  3. import { useModel } from '@/store'
  4. import Spin from '@/components/Spin'
  5. import GetUserPhone from '@/components/GetUserPhone/index'
  6. import GetUserIcon from '@/components/GetUserIcon/index'
  7. import AdvLayer from '@/components/AdvLayer'
  8. import RenZhengScreen from '@/components/RenZhengScreen'
  9. import YeZhuRenZhengPopup from '@/components/YeZhuRenZhengPopup'
  10. import useMountTrack from '@/utils/hooks/useMountTrack'
  11. import { getPage } from '@/utils'
  12. import './index.less'
  13. const pages = require('../pages')
  14. const showError = err => {
  15. Taro.showModal({
  16. title: '错误',
  17. content: err,
  18. showCancel: false
  19. })
  20. }
  21. export default function (props) {
  22. const { user } = useModel('user')
  23. const [page, setPage] = useState({})
  24. const [loading, setLoading] = useState(true)
  25. const [showAuthBasic, setShowAuthBasic] = useState(false)
  26. const [showAuthYeZhu, setShowAuthYeZhu] = useState(false)
  27. const [showAuthPhone, setShowAuthPhone] = useState(false)
  28. const [isAuthedBasic, setIsAuthedBasic] = useState(false)
  29. const [isAuthedPhone, setIsAuthedPhone] = useState(false)
  30. const [isAuthedYeZhu, setIsAuthedYeZhu] = useState(false)
  31. const [needAuthBasic, setNeedAuthBasic] = useState(false)
  32. const [needAuthPhone, setNeedAuthPhone] = useState(false)
  33. const [needAuthYeZhu, setNeedAuthYeZhu] = useState(false)
  34. useDidShow(() => {
  35. setPage(getPage())
  36. })
  37. useEffect(() => {
  38. setLoading(!user || !user.personId)
  39. setIsAuthedBasic(user && user.avatarurl && user.nickname)
  40. setIsAuthedPhone(user && user.phone)
  41. setIsAuthedYeZhu(user && user.verifyStatus === 'certified')
  42. }, [user])
  43. useEffect(() => {
  44. setNeedAuthBasic((page.auth || []).indexOf('avatar') > -1)
  45. setNeedAuthPhone((page.auth || []).indexOf('phone') > -1)
  46. setNeedAuthYeZhu((page.auth || []).indexOf('yezhu') > -1)
  47. }, [page])
  48. // 埋点
  49. useMountTrack()
  50. // 授权手机
  51. useEffect(() => {
  52. if (!isAuthedPhone && needAuthPhone) {
  53. setShowAuthPhone(true)
  54. } else {
  55. setShowAuthPhone(false)
  56. }
  57. }, [isAuthedPhone, needAuthPhone])
  58. // 认证业主
  59. useEffect(() => {
  60. // 如果当前是认证业务页面
  61. if (page.isYeZhuRenZheng) {
  62. return
  63. }
  64. if (isAuthedPhone && !isAuthedYeZhu && needAuthYeZhu) {
  65. setShowAuthYeZhu(true)
  66. } else {
  67. setShowAuthYeZhu(false)
  68. }
  69. }, [needAuthYeZhu, isAuthedPhone, page])
  70. // 授权头像
  71. useEffect(() => {
  72. let needShow = false
  73. // 授权手机之后才授权头像
  74. if (isAuthedPhone) {
  75. // 要求业主认证的
  76. if (isAuthedYeZhu || !needAuthYeZhu) {
  77. if (!isAuthedBasic && needAuthBasic) {
  78. needShow = true
  79. }
  80. }
  81. }
  82. setShowAuthBasic(needShow)
  83. }, [isAuthedBasic, needAuthBasic, isAuthedPhone, isAuthedYeZhu, needAuthYeZhu])
  84. return (
  85. <Spin loading={loading}>
  86. {/* 广告 */}
  87. <AdvLayer></AdvLayer>
  88. <RenZhengScreen Show={showAuthYeZhu}></RenZhengScreen>
  89. <GetUserIcon visible={showAuthBasic} onError={err => showError(`授权头像失败: ${err}`)} />
  90. <GetUserPhone visible={showAuthPhone} onError={err => showError(`授权手机失败: ${err}`)} />
  91. {/* <YeZhuRenZhengPopup Show={showAuthYeZhu} Close={() => { }}></YeZhuRenZhengPopup> */}
  92. {
  93. props.children
  94. }
  95. </Spin>
  96. )
  97. }