diff --git a/App.vue b/App.vue index c7e8059..a1419a9 100644 --- a/App.vue +++ b/App.vue @@ -2,9 +2,11 @@ import { mapState, mapMutations, mapActions } from 'vuex'; import { GET_USER_INFO, HEALTH_TYPE_STATUS } from 'api/api'; import { showLoading, hideLoading, showToast, showModal } from 'utils/ui'; +import { formatQuery } from 'utils/util'; export default { - async onLaunch() { + async onLaunch(options) { + console.log('options: ', options); uni.getSetting({ success(res) { if (!res.authSetting['scope.userLocation']) { @@ -17,8 +19,30 @@ export default { }); try { - await this.login(); + if (options.query.scene) { + const query = formatQuery(decodeURIComponent(options.query.scene)); + if (query && query.d) { + await this.getTokenByUserId({ params: { userId: query.d } }); + this.initCommon(); + } else { + await this.login(); + this.initCommon(); + return; + } + } else { + await this.login(); + this.initCommon(); + } + } catch (error) { + console.log('onLaunch error: ', error); + } + }, + computed: mapState('user', ['token']), + + methods: { + ...mapActions('user', ['login', 'getUserInfo', 'getHealthTypeStatus', 'getTokenByUserId']), + async initCommon() { const startTime = +this.$moment() .startOf('year') .format('x'); @@ -34,15 +58,7 @@ export default { }; await this.getUserInfo(params); await this.getHealthTypeStatus(); - } catch (error) { - console.log('error: ', error); - } - }, - - computed: mapState('user', ['token']), - - methods: { - ...mapActions('user', ['login', 'getUserInfo', 'getHealthTypeStatus']), + }, }, }; diff --git a/config/api/user.js b/config/api/user.js index 6b3eec6..dd9cff9 100644 --- a/config/api/user.js +++ b/config/api/user.js @@ -5,3 +5,6 @@ export const SIGN_IN = `${proxyUrl}/users/signin`; // 上传用户微信信息 export const UPDATE_USER = `${proxyUrl}/users/userInfo`; + +// 通过userId 获取token +export const USER_ID_EXCHANGE_TOKEN = `${proxyUrl}/users/userId`; diff --git a/store/modules/user/actions.js b/store/modules/user/actions.js index 0024847..dfb2a50 100644 --- a/store/modules/user/actions.js +++ b/store/modules/user/actions.js @@ -1,6 +1,6 @@ import { showLoading, hideLoading, showModal, showToast } from 'utils/ui'; import { mpLogin, signIn } from 'utils/user'; -import { UPDATE_USER } from 'api/user'; +import { UPDATE_USER, USER_ID_EXCHANGE_TOKEN } from 'api/user'; import { GET_USER_INFO, HEALTH_TYPE_STATUS } from 'api/api'; import { http } from 'plugins/request/index'; @@ -115,6 +115,28 @@ const actions = { }); }); }, + + /** + * 通过userId换取token + * @param {*} commit + * @param {object} params 提交的完整参数 + */ + getTokenByUserId({ commit }, params) { + return new Promise((resolve, reject) => { + http + .get(USER_ID_EXCHANGE_TOKEN, params) + .then(res => { + const { data } = res.data; + commit('setToken', data.token); + commit('setUser', data); + resolve(data); + }) + .catch(data => { + showToast(data.msg || '获取token失败'); + reject(data); + }); + }); + }, }; export default actions;