Yansen 2 years ago
parent
commit
de77f6901d

BIN
src/assets/image/logo.png View File


+ 14
- 10
src/pages/home/components/Head.jsx View File

@@ -1,14 +1,15 @@
1 1
 import React from 'react';
2
+import Taro from '@tarojs/taro';
2 3
 import { View, Image, Button } from '@tarojs/components';
3 4
 import { ActionSheet, Cell } from '@antmjs/vantui';
4 5
 import { ROLES, ROLE_CITIZEN } from '@/utils/user';
5 6
 import logo from '@/assets/image/logo.png';
6 7
 import Icon from '@/assets/icons/avatar.png';
7
-import { useModel } from '@/store';
8 8
 import style from './head.module.less';
9 9
 
10 10
 export default (props) => {
11
-  const { user, person, duty, onDutyChange } = props;
11
+  const { userModel } = props;
12
+  const { user, person, duty, updateDuty, authProfile } = userModel || {};
12 13
   const { dutyList = [] } = user || {};
13 14
   const role = ROLES[duty || ROLE_CITIZEN];
14 15
 
@@ -31,14 +32,17 @@ export default (props) => {
31 32
   }
32 33
 
33 34
   const onSelect = (e) => {
34
-    onDutyChange(e.detail.value)
35
+    updateDuty(e.detail.value)
35 36
   }
36 37
 
37
-  const { getAvatar } = useModel('user');
38
-
39
-  const onChooseAvatar = (e) => {
40
-    const code = e.detail.code;
41
-    getAvatar(code).then(props.onSuccess);
38
+  const onGetUserProfile = () => {
39
+    // 新版本小程序已开始不支持获取头像, 昵称了
40
+    // Taro.getUserProfile({
41
+    //   desc: '用于完善您的资料',
42
+    //   success: res => {
43
+    //     authProfile(res);
44
+    //   }
45
+    // })
42 46
   }
43 47
 
44 48
   return (
@@ -61,8 +65,8 @@ export default (props) => {
61 65
         />
62 66
       </View>
63 67
       <View className={style.avatar}>
64
-        <Button openType="chooseAvatar" onChooseAvatar={onChooseAvatar}>
65
-          <Image src={avatar}></Image>
68
+        <Button onClick={onGetUserProfile}>
69
+          <Image mode="scaleToFill" src={avatar}></Image>
66 70
         </Button>
67 71
       </View>
68 72
     </View>

+ 3
- 2
src/pages/home/components/StatCard.jsx View File

@@ -17,8 +17,9 @@ export default (props) => {
17 17
   }, [duty])
18 18
 
19 19
   React.useEffect(() => {
20
-    const du = duty || ROLE_CITIZEN
21
-    getIndexData(du).then(setList);
20
+    if (duty) {
21
+      getIndexData(duty).then(setList);
22
+    }
22 23
   }, [duty]);
23 24
 
24 25
   return (

+ 11
- 5
src/pages/home/components/head.module.less View File

@@ -46,18 +46,24 @@
46 46
     flex: none;
47 47
     width: 16vw;
48 48
     height: 16vw;
49
-    border-radius: 50%;
50
-    border: 4px solid #fff;
51 49
 
52 50
     button {
53 51
       background: transparent;
54 52
       padding: 0;
55
-      line-height: 1em;
56
-      border-radius: 50%;
53
+      width: 100%;
54
+      height: 100%;
55
+
56
+      &::after {
57
+        border: none;
58
+      }
57 59
     }
58 60
     image {
61
+      background: #fff;
59 62
       width: 100%;
60
-      height: 112px;
63
+      height: 100%;
64
+      border-radius: 50%;
65
+      border: 4px solid #fff;
66
+      box-sizing: border-box;
61 67
     }
62 68
   }
63 69
 }

+ 3
- 2
src/pages/home/index.jsx View File

@@ -57,7 +57,8 @@ const menus = {
57 57
 
58 58
 export default (props) => {
59 59
 
60
-  const { user, person, duty, updateDuty } = useModel('user');
60
+  const userModel = useModel('user');
61
+  const { user, duty } = userModel || {};
61 62
 
62 63
   const menuArr = React.useMemo(() => {
63 64
     if (!duty) return [];
@@ -67,7 +68,7 @@ export default (props) => {
67 68
 
68 69
   return (
69 70
     <Page tabBar="home" className="home-page">
70
-      <Head user={user} person={person} duty={duty} onDutyChange={updateDuty} />
71
+      <Head userModel={userModel} />
71 72
       <Banner  duty={duty} />
72 73
       <StatCard duty={duty} />
73 74
 

+ 1
- 1
src/services/wxma.js View File

@@ -8,7 +8,7 @@ export const authPhone = (code) => request(`/api/ma/auth-phone`, { params: { cod
8 8
 /*
9 9
  * 授权头像
10 10
  */
11
-export const authUser = (id, data) => request(`/api/ma/auth-user`, { data, method: 'put' });
11
+export const authUser = (data) => request(`/api/ma/auth-user`, { data, method: 'put' });
12 12
 
13 13
 /*
14 14
  * 小程序登录

+ 9
- 1
src/store/user.js View File

@@ -1,7 +1,7 @@
1 1
 import React from 'react';
2 2
 import Taro from '@tarojs/taro';
3 3
 import md5 from 'md5';
4
-import { login, signin, currentUser, authPhone } from '@/services/wxma';
4
+import { login, signin, currentUser, authPhone, authUser } from '@/services/wxma';
5 5
 import { ROLE_CITIZEN } from '@/utils/user';
6 6
 
7 7
 export default function useUser() {
@@ -63,6 +63,13 @@ export default function useUser() {
63 63
     })
64 64
   }
65 65
 
66
+  const authProfile = (data) => {
67
+    const sessionKey = Taro.getStorageSync('sessionKey');
68
+    authUser({ ...data, sessionKey }).then(res => {
69
+      setPerson(res);
70
+    })
71
+  }
72
+
66 73
   return {
67 74
     user,
68 75
     person,
@@ -72,5 +79,6 @@ export default function useUser() {
72 79
     login: maLogin,
73 80
     updateDuty,
74 81
     signinByPhone,
82
+    authProfile,
75 83
   }
76 84
 }