张延森 3 vuotta sitten
vanhempi
commit
9003d5fcec

+ 1
- 1
src/app.js Näytä tiedosto

7
 class App extends Component {
7
 class App extends Component {
8
 
8
 
9
   onLaunch(options) {
9
   onLaunch(options) {
10
-    const [,, setPerson, login] = store.getModel('person').getState()
10
+    const {setPerson, login} = store.getModel('person').getState()
11
 
11
 
12
     // 预拉取数据
12
     // 预拉取数据
13
     preFetchData().then((fetchData) => {
13
     preFetchData().then((fetchData) => {

+ 52
- 0
src/components/AuthPage/index.jsx Näytä tiedosto

1
+import React, { useState } from 'react'
2
+import Taro from '@tarojs/taro'
3
+import { useModel } from '@/store'
4
+import { Label, RadioGroup } from '@tarojs/components'
5
+import index from '@/assets/icons/login/LOGO.png'
6
+import './login.less'
7
+
8
+
9
+export default (props) => {
10
+  const { getPhone } = useModel('person')
11
+
12
+  const [loading, setLoading] = useState(false)
13
+  const [checked, setChecked] = useState(false)
14
+
15
+  const handleChange = () => {
16
+    setChecked(true)
17
+  }
18
+
19
+  const handlePhoneNumber = (e) => {
20
+    const { errMsg, ...data } = e.detail || {}
21
+    if (errMsg === 'getPhoneNumber:ok') {
22
+      const sessionKey = Taro.getStorageSync('sessionKey')
23
+      getPhone({ ...data, sessionKey }).then(() => {
24
+        setLoading(false)
25
+      }).catch(() => setLoading(false))
26
+    }
27
+  }
28
+
29
+  return (
30
+    <view>
31
+      <image className='logo' src={index} />
32
+      <view className='v1'>登录后可继续当前操作</view>
33
+      <button
34
+        disabled={!checked}
35
+        loading={loading}
36
+        className='login'
37
+        openType='getPhoneNumber'
38
+        onGetPhoneNumber={handlePhoneNumber}
39
+      >微信手机号一键登录</button>
40
+      <view className='buttom'>
41
+        <Label>
42
+          <RadioGroup onChange={handleChange}>
43
+            <radio checked={checked} />
44
+          </RadioGroup>
45
+          <view>
46
+            我已阅读知晓并同意 <text>《平台用户服务协议》</text>
47
+          </view>
48
+        </Label>
49
+      </view>
50
+    </view>
51
+  )
52
+}

src/pages/login/login.less → src/components/AuthPage/login.less Näytä tiedosto

1
 .logo{
1
 .logo{
2
+  display: block;
2
   width: 320px;
3
   width: 320px;
3
   height: 320px;
4
   height: 320px;
4
   margin: 21px auto;
5
   margin: 21px auto;
6
 }
7
 }
7
 .v1{
8
 .v1{
8
   font-size: 28px;
9
   font-size: 28px;
9
-   line-height: 0;
10
+  line-height: 0;
10
   color: #999;
11
   color: #999;
11
   text-align: center;
12
   text-align: center;
12
 }
13
 }
28
   text-align: center;
29
   text-align: center;
29
   bottom: 80px;
30
   bottom: 80px;
30
   width: 100%;
31
   width: 100%;
31
-  radio{
32
-    transform:scale(0.5);
33
-    margin-right: -9px;
34
-    position: relative;
35
-    bottom: 4px;
36
-    right: -8px;
32
+  vertical-align: middle;
33
+
34
+  radio-group {
35
+    display: inline-block;
36
+    vertical-align: middle;
37
   }
37
   }
38
-  text{
39
-    color: #274190;
40
-    text-decoration: underline;
38
+
39
+  radio {
40
+    transform: scale(.8);
41
+  }
42
+
43
+  view {
44
+    display: inline-block;
45
+    vertical-align: middle;
46
+
47
+    text{
48
+      color: #274190;
49
+      text-decoration: underline;
50
+    }
41
   }
51
   }
42
 }
52
 }

+ 1
- 1
src/layouts/index.jsx Näytä tiedosto

7
 import { getPageBy, getIndexPageOf } from '../routes'
7
 import { getPageBy, getIndexPageOf } from '../routes'
8
 
8
 
9
 export default (Child) => (props) => {
9
 export default (Child) => (props) => {
10
-  const [person] = useModel('person')
10
+  const { person } = useModel('person')
11
   const router = useRouter()
11
   const router = useRouter()
12
 
12
 
13
   // 确保人员信息到位
13
   // 确保人员信息到位

+ 7
- 15
src/pages/index/index.jsx Näytä tiedosto

1
-import React, { Suspense, useState, useEffect, lazy } from 'react'
2
-import { useRouter } from '@tarojs/taro'
1
+import React, { useState, useEffect } from 'react'
2
+import Taro from '@tarojs/taro'
3
 import CustomNav from '@/components/CustomNav'
3
 import CustomNav from '@/components/CustomNav'
4
-import { useModel } from '@/store'
5
 import logo from '@/assets/icons/comm/logo_small.png'
4
 import logo from '@/assets/icons/comm/logo_small.png'
6
 import withLayout from '@/layouts'
5
 import withLayout from '@/layouts'
7
 import tabList from './tabbar'
6
 import tabList from './tabbar'
8
-import './index.less'
9
 import Guide from './tabs/Guide'
7
 import Guide from './tabs/Guide'
10
 import Mine from './tabs/Mine'
8
 import Mine from './tabs/Mine'
11
 import Recommend from './tabs/Recommend'
9
 import Recommend from './tabs/Recommend'
12
-// import Strategy from './tabs/Strategy'
13
-
14
-// const Recommend = lazy(() => import('./tabs/Recommend'))
15
-// const Guide = lazy(() => import('./tabs/Guide'))
16
-// const Strategy = lazy(() => import('./tabs/Strategy'))
17
-// const Mine =  import'./tabs/Mine'
18
-
10
+import './index.less'
19
 
11
 
20
 export default withLayout((props) => {
12
 export default withLayout((props) => {
21
-  const { params } = useRouter()
13
+  const { router, person } = props
14
+  const { params, path } = router
22
   const { tab } = params || {}
15
   const { tab } = params || {}
23
 
16
 
24
-  const [person] = useModel('person')
25
   const [currentTab, setCurrentTab] = useState(0)
17
   const [currentTab, setCurrentTab] = useState(0)
26
 
18
 
27
 
19
 
34
     if (tab) {
26
     if (tab) {
35
       setCurrentTab(tab - 0)
27
       setCurrentTab(tab - 0)
36
     }
28
     }
37
-
38
   }, [tab])
29
   }, [tab])
30
+
39
   return (
31
   return (
40
     <view className='page-index'>
32
     <view className='page-index'>
41
       <view className='index-navbar'>
33
       <view className='index-navbar'>
45
         {currentTab === 0 && <Recommend />}
37
         {currentTab === 0 && <Recommend />}
46
         {currentTab === 1 && <Guide />}
38
         {currentTab === 1 && <Guide />}
47
         {/* {currentTab === 2 && <Strategy />} */}
39
         {/* {currentTab === 2 && <Strategy />} */}
48
-        {currentTab === 2 && <Mine />}
40
+        {currentTab === 2 && <Mine person={person} />}
49
       </view>
41
       </view>
50
       <view className='index-tabbar'>
42
       <view className='index-tabbar'>
51
         <mp-tabbar extClass='custom-tabbar' current={currentTab} list={tabList} onChange={handleTabChange}></mp-tabbar>
43
         <mp-tabbar extClass='custom-tabbar' current={currentTab} list={tabList} onChange={handleTabChange}></mp-tabbar>

+ 1
- 0
src/pages/index/index.less Näytä tiedosto

17
   .index-container {
17
   .index-container {
18
     flex: auto;
18
     flex: auto;
19
     overflow: hidden;
19
     overflow: hidden;
20
+    position: relative;
20
   }
21
   }
21
 }
22
 }
22
 
23
 

+ 4
- 8
src/pages/index/tabs/Mine.jsx Näytä tiedosto

1
 import React from 'react'
1
 import React from 'react'
2
 import Taro from '@tarojs/taro'
2
 import Taro from '@tarojs/taro'
3
 
3
 
4
-import girl from '@/assets/icons/UserCenter/girl.png'
4
+import AuthPage from '@/components/AuthPage'
5
 import boy from '@/assets/icons/UserCenter/boy.png'
5
 import boy from '@/assets/icons/UserCenter/boy.png'
6
 import awaitPay from '@/assets/icons/UserCenter/awaitPay.png'
6
 import awaitPay from '@/assets/icons/UserCenter/awaitPay.png'
7
 import AllOrder from '@/assets/icons/UserCenter/AllOrder.png'
7
 import AllOrder from '@/assets/icons/UserCenter/AllOrder.png'
10
 import HomeLogo from '@/assets/icons/UserCenter/HomeLogo.png'
10
 import HomeLogo from '@/assets/icons/UserCenter/HomeLogo.png'
11
 import ContactMe from '@/assets/icons/UserCenter/ContactMe.png'
11
 import ContactMe from '@/assets/icons/UserCenter/ContactMe.png'
12
 import collect from '@/assets/icons/UserCenter/collect.png'
12
 import collect from '@/assets/icons/UserCenter/collect.png'
13
-import MyTravel from '@/assets/icons/UserCenter/MyTravel.png'
14
 import Rules from '@/assets/icons/UserCenter/Rules.png'
13
 import Rules from '@/assets/icons/UserCenter/Rules.png'
15
 import Userrrrrrr from '@/assets/icons/ProCard/8kb.jpg'
14
 import Userrrrrrr from '@/assets/icons/ProCard/8kb.jpg'
16
-// import Tbas2 from '@/pages/index/tabs/Guide'
17
 import './MineCss/style.less'
15
 import './MineCss/style.less'
18
 
16
 
19
 
17
 
20
 
18
 
21
 export default (props) => {
19
 export default (props) => {
20
+  const { person } = props
21
+
22
   // // 我的行程 
22
   // // 我的行程 
23
   // const HomeLogo = () => {
23
   // const HomeLogo = () => {
24
   //   Taro.navigateTo({ url: '/pages/MineUserAll/Rules/index' })
24
   //   Taro.navigateTo({ url: '/pages/MineUserAll/Rules/index' })
59
     Taro.navigateTo({ url: '/pages/MineUserAll/Rules/index' })
59
     Taro.navigateTo({ url: '/pages/MineUserAll/Rules/index' })
60
   }
60
   }
61
 
61
 
62
-
63
-
64
-
65
-
66
-  return (
62
+  return !person.phone ? <AuthPage /> : (
67
     <scroll-view scroll-y style='height: 77vh;' >
63
     <scroll-view scroll-y style='height: 77vh;' >
68
       <view className='User-box'>
64
       <view className='User-box'>
69
         <view className='User-info'>
65
         <view className='User-info'>

+ 0
- 4
src/pages/login/login.config.js Näytä tiedosto

1
-export default {
2
-  navigationBarTitleText: '登录',
3
-  navigationStyle: 'custom',
4
-}

+ 0
- 23
src/pages/login/login.jsx Näytä tiedosto

1
-import React from 'react'
2
-import CustomNav from '@/components/CustomNav'
3
-import index from '../../assets/icons/login/LOGO.png'
4
-import '../index/index.less'
5
-import './login.less'
6
-
7
-
8
-export default (props) => {
9
-return (
10
-  <view className='page-index'>
11
-    <view className='index-navbar'>
12
-        <CustomNav title='登录' />                 
13
-    </view>
14
-    <image className='logo' src={index} />
15
-    <view className='v1'>登录后可继续当前操作</view>
16
-    <view className='login'>微信手机号一键登录</view>
17
-    <view className='buttom'>
18
-      <radio />
19
-    我已阅读知晓并同意 <text>《平台用户服务协议》</text>
20
-    </view>
21
-  </view>
22
-  
23
-)}

+ 13
- 1
src/services/person.js Näytä tiedosto

1
 import request from '@/utils/request'
1
 import request from '@/utils/request'
2
 
2
 
3
-export const login = (params) => request('/login', { params, method: 'post' })
3
+/**
4
+ * 登录
5
+ * @param {*} params 
6
+ * @returns 
7
+ */
8
+export const signIn = (params) => request('/login', { params, method: 'post' })
9
+
10
+/**
11
+ * 授权手机
12
+ * @param {*} data 
13
+ * @returns 
14
+ */
15
+export const authPhone = (data) => request('/auth-user', { data, method: 'put' })

+ 16
- 4
src/store/models/person.js Näytä tiedosto

1
 import { useState } from "react"
1
 import { useState } from "react"
2
 import Taro from '@tarojs/taro'
2
 import Taro from '@tarojs/taro'
3
-import { login } from '@/services/person'
3
+import { signIn, authPhone } from '@/services/person'
4
 
4
 
5
 export default () => {
5
 export default () => {
6
   const [person, setPerson] = useState()
6
   const [person, setPerson] = useState()
7
   const [peronRoles, setPersonRoles] = useState([])
7
   const [peronRoles, setPersonRoles] = useState([])
8
 
8
 
9
-  const personLogin = (params) => {
10
-    login(params).then((res) => {
9
+  const login = (params) => {
10
+    signIn(params).then((res) => {
11
       const { person : taPerson, personRoleList, sessionKey } = res;
11
       const { person : taPerson, personRoleList, sessionKey } = res;
12
       setPerson(taPerson);
12
       setPerson(taPerson);
13
       setPersonRoles(personRoleList);
13
       setPersonRoles(personRoleList);
15
     })
15
     })
16
   }
16
   }
17
 
17
 
18
-  return [person, peronRoles, setPerson, personLogin]
18
+  const getPhone = (data) => {
19
+    return authPhone(data).then((res) => {
20
+      setPerson(res);
21
+    })
22
+  }
23
+
24
+  return {
25
+    person,
26
+    peronRoles,
27
+    setPerson,
28
+    login,
29
+    getPhone,
30
+  }
19
 }
31
 }