Yansen 2 anni fa
parent
commit
de77f6901d

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


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

1
 import React from 'react';
1
 import React from 'react';
2
+import Taro from '@tarojs/taro';
2
 import { View, Image, Button } from '@tarojs/components';
3
 import { View, Image, Button } from '@tarojs/components';
3
 import { ActionSheet, Cell } from '@antmjs/vantui';
4
 import { ActionSheet, Cell } from '@antmjs/vantui';
4
 import { ROLES, ROLE_CITIZEN } from '@/utils/user';
5
 import { ROLES, ROLE_CITIZEN } from '@/utils/user';
5
 import logo from '@/assets/image/logo.png';
6
 import logo from '@/assets/image/logo.png';
6
 import Icon from '@/assets/icons/avatar.png';
7
 import Icon from '@/assets/icons/avatar.png';
7
-import { useModel } from '@/store';
8
 import style from './head.module.less';
8
 import style from './head.module.less';
9
 
9
 
10
 export default (props) => {
10
 export default (props) => {
11
-  const { user, person, duty, onDutyChange } = props;
11
+  const { userModel } = props;
12
+  const { user, person, duty, updateDuty, authProfile } = userModel || {};
12
   const { dutyList = [] } = user || {};
13
   const { dutyList = [] } = user || {};
13
   const role = ROLES[duty || ROLE_CITIZEN];
14
   const role = ROLES[duty || ROLE_CITIZEN];
14
 
15
 
31
   }
32
   }
32
 
33
 
33
   const onSelect = (e) => {
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
   return (
48
   return (
61
         />
65
         />
62
       </View>
66
       </View>
63
       <View className={style.avatar}>
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
         </Button>
70
         </Button>
67
       </View>
71
       </View>
68
     </View>
72
     </View>

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

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

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

46
     flex: none;
46
     flex: none;
47
     width: 16vw;
47
     width: 16vw;
48
     height: 16vw;
48
     height: 16vw;
49
-    border-radius: 50%;
50
-    border: 4px solid #fff;
51
 
49
 
52
     button {
50
     button {
53
       background: transparent;
51
       background: transparent;
54
       padding: 0;
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
     image {
60
     image {
61
+      background: #fff;
59
       width: 100%;
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 Vedi File

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

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

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 Vedi File

1
 import React from 'react';
1
 import React from 'react';
2
 import Taro from '@tarojs/taro';
2
 import Taro from '@tarojs/taro';
3
 import md5 from 'md5';
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
 import { ROLE_CITIZEN } from '@/utils/user';
5
 import { ROLE_CITIZEN } from '@/utils/user';
6
 
6
 
7
 export default function useUser() {
7
 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
   return {
73
   return {
67
     user,
74
     user,
68
     person,
75
     person,
72
     login: maLogin,
79
     login: maLogin,
73
     updateDuty,
80
     updateDuty,
74
     signinByPhone,
81
     signinByPhone,
82
+    authProfile,
75
   }
83
   }
76
 }
84
 }