From c8f2ed12f3fab6caf2fbfb5deb8c673031dbb778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?TOP=E7=B3=AF=E7=B1=B3?= <1130395124@qq.com> Date: Tue, 7 Mar 2023 23:24:33 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E7=99=BB=E5=BD=95=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 2 +- src/components/layout/layout.vue | 6 +++++ src/core/models/user.js | 44 +++++++++++++++++++------------- src/store/modules/user.js | 6 +++++ 4 files changed, 39 insertions(+), 19 deletions(-) diff --git a/src/App.vue b/src/App.vue index 2d24a30..02b16e8 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,7 +2,7 @@ export default { onLaunch: function () { this.$store.dispatch("system/initConfig"); - this.$models.user.checkLogin(); + this.$models.user.initUser(); }, onShow: function () {}, onHide: function () {}, diff --git a/src/components/layout/layout.vue b/src/components/layout/layout.vue index 7d293d8..74e6bcc 100644 --- a/src/components/layout/layout.vue +++ b/src/components/layout/layout.vue @@ -86,8 +86,14 @@ export default { computed: { ...mapState({ config: (state) => state.system.config, + isLogin: (state) => state.user.token.length > 0, }), }, + created() { + if (this.isLogin) { + this.$store.dispatch("user/info"); + } + }, mounted() { const { statusBarHeight, headerHeight } = this.config; // #ifndef H5 diff --git a/src/core/models/user.js b/src/core/models/user.js index a08383e..a83c80e 100644 --- a/src/core/models/user.js +++ b/src/core/models/user.js @@ -8,6 +8,7 @@ export default { */ platformLogin() { return new Promise((resolve, reject) => { + // #ifdef MP-WEIXIN uni.login({ provider: "weixin", success(result) { @@ -17,12 +18,30 @@ export default { code: result.code } }).then((response) => { + uni.setStorageSync("open_id", response.data.openid); resolve(response.data); }); } }); + // #endif }); }, + /** + * 初始化用户 + */ + async initUser() { + // openid + let openId = uni.getStorageSync("open_id"); + if (!openId) { + await this.platformLogin().then((response) => { + openId = response.openid; + }); + } + $store.commit("user/openId", openId); + // token + let token = uni.getStorageSync("user_access_token"); + $store.commit('user/token', token); + }, /** * 发送验证码 */ @@ -45,27 +64,15 @@ export default { }); }); }, - /** - * 检查登录状态 - */ - checkLogin() { - let token = uni.getStorageSync("user_access_token"); - if (token) { - $store.commit("user/token", token); - this.info().then(user => { - $store.commit('user/openId', user.openid); - }); - } else { - this.platformLogin().then((response) => { - $store.commit('user/openId', response.openid); - }); - } - }, /** * 获取信息 */ info() { return new Promise((resolve, reject) => { + let cacheUser = uni.getStorageSync('userinfo'); + if (cacheUser) { + return resolve(cacheUser); + } prototype.$request({ api: 'user.info', }).then(response => { @@ -77,7 +84,7 @@ export default { mobile: response.data.mobile, create_time: response.data.create_time, }; - $store.commit('user/info', user); + uni.setStorageSync('userinfo', user); return resolve(user); } else { return reject(response.msg); @@ -137,7 +144,8 @@ export default { }).then(response => { if (response.code == 1) { uni.setStorageSync('user_access_token', response.data.token); - this.checkLogin(); + // 提交token到store + this.initUser(); return resolve(response); } else { return reject(response.msg); diff --git a/src/store/modules/user.js b/src/store/modules/user.js index eb1e56d..4bcf2a2 100644 --- a/src/store/modules/user.js +++ b/src/store/modules/user.js @@ -1,3 +1,4 @@ +import user from "@/core/models/user"; export default { namespaced: true, state: { @@ -22,6 +23,11 @@ export default { } }, actions: { + info(context) { + user.info().then(info => { + context.commit('info', info); + }); + }, logout(context) { context.commit('info', null); },