Your Name 3 lat temu
rodzic
commit
6bf8a8160d

+ 0
- 10
src/components/Auth/AuthPage.jsx Wyświetl plik

1
-import React from 'react'
2
-import './style.scss'
3
-
4
-export default (props) => {
5
-  return (
6
-    <View>
7
-
8
-    </View>
9
-  )
10
-}

+ 54
- 0
src/components/Auth/AuthPage/index.jsx Wyświetl plik

1
+import React, { useState, useEffect } from 'react'
2
+import Taro from '@tarojs/taro'
3
+import { View, Image } from '@tarojs/components'
4
+import Disclaimer from '@/components/Disclaimer'
5
+import '@/assets/css/iconfont.css'
6
+import useAuth from '../useAuth'
7
+import './index.scss'
8
+
9
+export default (props) => {
10
+
11
+  const [loading, setLoading] = useState(false)
12
+  const { updateUserInfo } = useAuth()
13
+  
14
+  const handleGetUserInfo = () => {
15
+    Taro.getUserProfile({
16
+      lang: 'zh_CN',
17
+      desc: '用于完成平台注册',
18
+      success: (res) => {
19
+        const { errMsg, ...data } = res || {}
20
+        if (errMsg === 'getUserProfile:ok') {
21
+          setLoading(true)
22
+          updateUserInfo(data).then(() => {
23
+            setLoading(false)
24
+          }).catch((err) => {
25
+            console.error(err)
26
+            setLoading(false)
27
+          })
28
+        } else {
29
+          console.error(errMsg);
30
+          Taro.showToast({
31
+            title: '授权头像失败',
32
+            icon: 'none',
33
+            duration: 2000
34
+          })
35
+        }
36
+      }
37
+    })
38
+  }
39
+
40
+  return (
41
+    <View className='components NeedLogin flex-v'>
42
+      <View className='Logo'>
43
+        <Image mode='aspectFit' className='centerLabel' src={require('@/assets/logo.png')} />
44
+      </View>
45
+      <View className='LoginBtn'>
46
+        <button loading={loading} onClick={handleGetUserInfo}>微信登录</button>
47
+      </View>
48
+      <View className='flex-item'></View>
49
+      <View className='Bottom'>
50
+        <Disclaimer />
51
+      </View>
52
+    </View>
53
+  )
54
+}

src/pages/mine/components/NeedLogin/index.scss → src/components/Auth/AuthPage/index.scss Wyświetl plik

19
     position: relative;
19
     position: relative;
20
     overflow: hidden;
20
     overflow: hidden;
21
     margin-top: 195px;
21
     margin-top: 195px;
22
-    >text {
22
+    >button {
23
       display: block;
23
       display: block;
24
       text-align: center;
24
       text-align: center;
25
       font-size: 32px;
25
       font-size: 32px;

+ 3
- 1
src/layout/index.js Wyświetl plik

6
 import Loading from '@/components/Loading'
6
 import Loading from '@/components/Loading'
7
 import AuthAvatar from '@/components/Auth/AuthAvatar'
7
 import AuthAvatar from '@/components/Auth/AuthAvatar'
8
 import AuthPhone from '@/components/Auth/AuthPhone'
8
 import AuthPhone from '@/components/Auth/AuthPhone'
9
+import AuthPage from '@/components/Auth/AuthPage'
9
 import Spin from '@/components/Spin/Spin2'
10
 import Spin from '@/components/Spin/Spin2'
10
 import FixedConsultant from '@/components/FixedConsultant'
11
 import FixedConsultant from '@/components/FixedConsultant'
11
 import FirstScreen from '@/components/FirstScreen'
12
 import FirstScreen from '@/components/FirstScreen'
26
   const router = useRouter()
27
   const router = useRouter()
27
   const page = routes.filter((r) => (router.path.indexOf(r.page) > -1))[0]
28
   const page = routes.filter((r) => (router.path.indexOf(r.page) > -1))[0]
28
   const [loading, setLoading] = useState(false)
29
   const [loading, setLoading] = useState(false)
29
-  const [authPhone, authAvatar] = useAuth(person, page)
30
+  const [authPhone, authAvatar, authPage] = useAuth(person, page)
30
 
31
 
31
   const { id } = router.params
32
   const { id } = router.params
32
   const showConsultant = page.shortcut && page.shortcut.consultant
33
   const showConsultant = page.shortcut && page.shortcut.consultant
93
           <AuthAvatar />
94
           <AuthAvatar />
94
         </View>
95
         </View>
95
       </Overlay>
96
       </Overlay>
97
+      { authPage && <AuthPage /> }
96
       <Spin size={32} spinning={spinning} />
98
       <Spin size={32} spinning={spinning} />
97
       {
99
       {
98
         person && !!person.personId && (
100
         person && !!person.personId && (

+ 12
- 1
src/layout/useAuth.js Wyświetl plik

3
 export default function useAuth(person, page) {
3
 export default function useAuth(person, page) {
4
   const [authPhone, setAuthPhone] = useState(false)
4
   const [authPhone, setAuthPhone] = useState(false)
5
   const [authAvatar, setAuthAvatar] = useState(false)
5
   const [authAvatar, setAuthAvatar] = useState(false)
6
+  const [authPage, setAuthPage] = useState(false)
6
 
7
 
7
   useEffect(() => {
8
   useEffect(() => {
8
     if (page && page.auth && page.auth.length) {
9
     if (page && page.auth && page.auth.length) {
23
           setAuthAvatar(false)
24
           setAuthAvatar(false)
24
         }
25
         }
25
       }
26
       }
27
+
28
+      // 如果需要授权头像
29
+      if (page.auth.indexOf('page') > -1) {
30
+        if (person.inited && (!person.avatarurl || person.avatarurl.indexOf('default_avatar') > -1)) {
31
+          setAuthPage(true)
32
+        } else {
33
+          setAuthPage(false)
34
+        }
35
+      }
26
     } else {
36
     } else {
27
       setAuthPhone(false)
37
       setAuthPhone(false)
28
       setAuthAvatar(false)
38
       setAuthAvatar(false)
39
+      setAuthPage(false)
29
     }
40
     }
30
   }, [person, page])
41
   }, [person, page])
31
 
42
 
32
-  return [authPhone, authAvatar]
43
+  return [authPhone, authAvatar, authPage]
33
 }
44
 }

+ 0
- 30
src/pages/mine/components/NeedLogin/index.jsx Wyświetl plik

1
-import React, { useState, useEffect } from 'react'
2
-import './index.scss'
3
-import { Image } from '@tarojs/components'
4
-import '@/assets/css/iconfont.css'
5
-
6
-export default function Banner (props) {
7
-  return (
8
-    <view className='components NeedLogin flex-v'>
9
-      <view className='Logo'>
10
-        <Image mode='aspectFit' className='centerLabel' src={require('@/assets/logo.png')} />
11
-      </view>
12
-      <view className='LoginBtn'>
13
-        <text>微信登录</text>
14
-      </view>
15
-      <view className='flex-item'></view>
16
-      <view className='Bottom'>
17
-        <view>
18
-          <view>
19
-            <text className='iconfont icon-shengming'></text>
20
-            <text>免责声明</text>
21
-          </view>
22
-          <view>
23
-            <text>以上价格仅供参考,具体一房一价的信息以售楼处展示为准。房屋位置交通、医疗、教育、商业等配套信息,来源于第三方不作为要约,仅供参考,双方具体权利义务应以法律规定及买卖合同约定为准。本平台对项目周边文化教育的介绍旨在提供相关信息1 意味着信息发布方对就学安排作出承诺。相关教育资首页信息存在调整的可能,应以政府教育主管部门门及办学颁布的政策规定为准。详情请仔细阅读</text>
24
-            <text className='active'>《新联家使用免责条款》</text>
25
-          </view>
26
-        </view>
27
-      </view>
28
-    </view>
29
-  )
30
-}

+ 0
- 14
src/pages/mine/index.jsx Wyświetl plik

10
 import { UPDATE_USER_INFO, ROLE_CODE } from '@/constants/user'
10
 import { UPDATE_USER_INFO, ROLE_CODE } from '@/constants/user'
11
 import store from '@/store'
11
 import store from '@/store'
12
 import './index.scss'
12
 import './index.scss'
13
-import NeedLogin from './components/NeedLogin'
14
 import MineMenuList from './tabData'
13
 import MineMenuList from './tabData'
15
 
14
 
16
 const defaultRuleImage = 'https://yz-websit.oss-cn-hangzhou.aliyuncs.com/xlk/index-icon18.jpg'
15
 const defaultRuleImage = 'https://yz-websit.oss-cn-hangzhou.aliyuncs.com/xlk/index-icon18.jpg'
23
   const user = useSelector(state => state.user)
22
   const user = useSelector(state => state.user)
24
   const [UserRole, setUserRole] = useState(null) // 1-普通用户 2-经纪人 3-置业顾问 4-驻场管理
23
   const [UserRole, setUserRole] = useState(null) // 1-普通用户 2-经纪人 3-置业顾问 4-驻场管理
25
   const [MenuList, setMenuList] = useState([])
24
   const [MenuList, setMenuList] = useState([])
26
-  const [ShowLogin, setShowLogin] = useState(false)
27
   const { dispatch } = store
25
   const { dispatch } = store
28
 
26
 
29
   useEffect(() => {
27
   useEffect(() => {
30
-    setShowLogin(false)
31
     if (user?.userInfo?.person?.personId) {
28
     if (user?.userInfo?.person?.personId) {
32
       const person = user.userInfo.person
29
       const person = user.userInfo.person
33
       setUserRole(person.personType === ROLE_CODE.CUSTOMER ? 1 : person.personType === ROLE_CODE.CHANNEL_AGENT ? 2 : person.personType === ROLE_CODE.CONSULTANT ? 3 : 4)
30
       setUserRole(person.personType === ROLE_CODE.CUSTOMER ? 1 : person.personType === ROLE_CODE.CHANNEL_AGENT ? 2 : person.personType === ROLE_CODE.CONSULTANT ? 3 : 4)
70
 
67
 
71
       <ScrollView scroll-y>
68
       <ScrollView scroll-y>
72
         <view className='PageContent'>
69
         <view className='PageContent'>
73
-
74
-          {/* 需要登录 */}
75
-          {
76
-            ShowLogin &&
77
-            <NeedLogin></NeedLogin>
78
-          }
79
-
80
-          {/* 登录后 */}
81
-          {
82
-            !ShowLogin &&
83
             <view className='Content'>
70
             <view className='Content'>
84
 
71
 
85
               {/* 用户信息 */}
72
               {/* 用户信息 */}
127
               </view>
114
               </view>
128
 
115
 
129
             </view>
116
             </view>
130
-          }
131
         </view>
117
         </view>
132
 
118
 
133
         <view className='copyright'>
119
         <view className='copyright'>

+ 17
- 0
src/routes.js Wyświetl plik

36
     pkg: 'main',
36
     pkg: 'main',
37
     isTab: true,
37
     isTab: true,
38
     type: 'mine',
38
     type: 'mine',
39
+    auth: ['page'],
39
   },
40
   },
40
 
41
 
41
   // 聊天
42
   // 聊天
254
     page: 'pages/mine/myRecommendCode/index',
255
     page: 'pages/mine/myRecommendCode/index',
255
     pkg: 'main',
256
     pkg: 'main',
256
     type: 'mine',
257
     type: 'mine',
258
+    auth: ['phone'],
257
   },
259
   },
258
   {
260
   {
259
     name: '房贷计算器',
261
     name: '房贷计算器',
266
     page: 'pages/mine/userInfo/index',
268
     page: 'pages/mine/userInfo/index',
267
     pkg: 'main',
269
     pkg: 'main',
268
     type: 'mine',
270
     type: 'mine',
271
+    auth: ['phone', 'avatar'],
269
   },
272
   },
270
   {
273
   {
271
     name: '成为驻场管理',
274
     name: '成为驻场管理',
272
     page: 'pages/mine/toBeManager/index',
275
     page: 'pages/mine/toBeManager/index',
273
     pkg: 'main',
276
     pkg: 'main',
274
     type: 'mine',
277
     type: 'mine',
278
+    auth: ['phone'],
275
   },
279
   },
276
   {
280
   {
277
     name: '成为经纪人',
281
     name: '成为经纪人',
278
     page: 'pages/mine/toBeAgent/index',
282
     page: 'pages/mine/toBeAgent/index',
279
     pkg: 'main',
283
     pkg: 'main',
280
     type: 'mine',
284
     type: 'mine',
285
+    auth: ['phone'],
281
   },
286
   },
282
   {
287
   {
283
     name: '我的分享',
288
     name: '我的分享',
290
     page: 'pages/mine/myCourse/index',
295
     page: 'pages/mine/myCourse/index',
291
     pkg: 'main',
296
     pkg: 'main',
292
     type: 'curriculum',
297
     type: 'curriculum',
298
+    auth: ['phone'],
293
   },
299
   },
294
   {
300
   {
295
     name: '我的活动',
301
     name: '我的活动',
302
     page: 'pages/mine/myCustomer/index',
308
     page: 'pages/mine/myCustomer/index',
303
     pkg: 'main',
309
     pkg: 'main',
304
     type: 'mine',
310
     type: 'mine',
311
+    auth: ['phone'],
305
   },
312
   },
306
   {
313
   {
307
     name: '客户详情',
314
     name: '客户详情',
308
     page: 'pages/mine/myCustomerDetail/index',
315
     page: 'pages/mine/myCustomerDetail/index',
309
     pkg: 'main',
316
     pkg: 'main',
310
     type: 'mine',
317
     type: 'mine',
318
+    auth: ['phone'],
311
   },
319
   },
312
   {
320
   {
313
     name: '我的收藏',
321
     name: '我的收藏',
320
     page: 'pages/channel/partnerChannel/index',
328
     page: 'pages/channel/partnerChannel/index',
321
     pkg: 'subpackages',
329
     pkg: 'subpackages',
322
     type: 'mine',
330
     type: 'mine',
331
+    auth: ['phone'],
323
   },
332
   },
324
   {
333
   {
325
     name: '添加客户',
334
     name: '添加客户',
326
     page: 'pages/mine/addCustomer/index',
335
     page: 'pages/mine/addCustomer/index',
327
     pkg: 'main',
336
     pkg: 'main',
328
     type: 'mine',
337
     type: 'mine',
338
+    auth: ['phone'],
329
   },
339
   },
330
   {
340
   {
331
     name: '驻场管理',
341
     name: '驻场管理',
332
     page: 'pages/marketing/residentManager/index',
342
     page: 'pages/marketing/residentManager/index',
333
     pkg: 'subpackages',
343
     pkg: 'subpackages',
334
     type: 'mine',
344
     type: 'mine',
345
+    auth: ['phone'],
335
   },
346
   },
336
   {
347
   {
337
     name: '确认到访',
348
     name: '确认到访',
338
     page: 'pages/marketing/sureVisit/index',
349
     page: 'pages/marketing/sureVisit/index',
339
     pkg: 'subpackages',
350
     pkg: 'subpackages',
340
     type: 'mine',
351
     type: 'mine',
352
+    auth: ['phone'],
341
   },
353
   },
342
   {
354
   {
343
     name: '变更交易节点',
355
     name: '变更交易节点',
344
     page: 'pages/marketing/changeVisit/index',
356
     page: 'pages/marketing/changeVisit/index',
345
     pkg: 'subpackages',
357
     pkg: 'subpackages',
346
     type: 'mine',
358
     type: 'mine',
359
+    auth: ['phone'],
347
   },
360
   },
348
   {
361
   {
349
     name: '盘客工具',
362
     name: '盘客工具',
350
     page: 'pages/consultant/statCustomer/index',
363
     page: 'pages/consultant/statCustomer/index',
351
     pkg: 'subpackages',
364
     pkg: 'subpackages',
352
     type: 'mine',
365
     type: 'mine',
366
+    auth: ['phone'],
353
   },
367
   },
354
   {
368
   {
355
     name: '客户信息',
369
     name: '客户信息',
356
     page: 'pages/mine/customerDetail/index',
370
     page: 'pages/mine/customerDetail/index',
357
     pkg: 'main',
371
     pkg: 'main',
358
     type: 'mine',
372
     type: 'mine',
373
+    auth: ['phone'],
359
   },
374
   },
360
   {
375
   {
361
     name: '客户分析',
376
     name: '客户分析',
362
     page: 'pages/consultant/customerAnalyse/index',
377
     page: 'pages/consultant/customerAnalyse/index',
363
     pkg: 'subpackages',
378
     pkg: 'subpackages',
364
     type: 'mine',
379
     type: 'mine',
380
+    auth: ['phone'],
365
   },
381
   },
366
   {
382
   {
367
     name: '个人主页',
383
     name: '个人主页',
368
     page: 'pages/consultant/myHomepage/index',
384
     page: 'pages/consultant/myHomepage/index',
369
     pkg: 'subpackages',
385
     pkg: 'subpackages',
370
     type: 'mine',
386
     type: 'mine',
387
+    auth: ['phone'],
371
   },
388
   },
372
   {
389
   {
373
     name: '意见反馈',
390
     name: '意见反馈',