You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.4 KiB
48 lines
1.4 KiB
import { mapMutations, mapState } from 'vuex';
|
|
|
|
import { waitTokenRequest } from '@/utils/cacheAndRequest';
|
|
|
|
export default {
|
|
computed: mapState('user', ['token', 'user']),
|
|
methods: {
|
|
...mapMutations('user', ['setUser']),
|
|
// 获取授权
|
|
openAuth() {
|
|
if (this.user && this.user.wxInfo && this.user.wxInfo.nickname) return; // 用户信息里有微信信息就不用再获取了
|
|
if (this.token) {
|
|
this.updateUserInfo();
|
|
} else {
|
|
waitTokenRequest(this.updateUserInfo);
|
|
}
|
|
},
|
|
|
|
// 弹出授权框
|
|
// 用户允许后 提交微信用户信息
|
|
updateUserInfo() {
|
|
/* #ifdef MP-WEIXIN */
|
|
uni.getUserProfile({
|
|
desc: 'TALL仅需要获取您的基本用户信息',
|
|
success: async res => {
|
|
const { avatarUrl, city, country, gender, language, nickName, province } = res.userInfo;
|
|
const data = await this.$u.api.updateUserInfo({
|
|
city,
|
|
country,
|
|
headImgUrl: avatarUrl,
|
|
language,
|
|
nickname: nickName,
|
|
province,
|
|
sex: gender,
|
|
});
|
|
console.log('data: ', data);
|
|
const { user } = this;
|
|
user.wxInfo = data;
|
|
this.setUser(user);
|
|
},
|
|
fail: error => {
|
|
console.log('error: ', error);
|
|
},
|
|
});
|
|
/* #endif */
|
|
},
|
|
},
|
|
};
|
|
|