| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 | 
							- import Vue from 'vue'
 
- import Vuex from 'vuex'
 
- import { logout } from '@/api/auth'
 
- import { getUserInfo } from '@/api/user'
 
- import { passwordLogin, smsLogin, weixinMiniAppLogin } from '@/api/auth'
 
- const AccessTokenKey = 'ACCESS_TOKEN'
 
- const RefreshTokenKey = 'REFRESH_TOKEN'
 
- Vue.use(Vuex) // vue的插件机制
 
- // Vuex.Store 构造器选项
 
- const store = new Vuex.Store({
 
-   state: {
 
-     accessToken: uni.getStorageSync(AccessTokenKey), // 访问令牌
 
-     refreshToken: uni.getStorageSync(RefreshTokenKey), // 刷新令牌
 
-     userInfo: {}
 
-   },
 
-   getters: {
 
-     accessToken: state => state.accessToken,
 
-     refreshToken: state => state.refreshToken,
 
-     userInfo: state => state.userInfo,
 
-     hasLogin: state => !!state.accessToken
 
-   },
 
-   mutations: {
 
-     // 更新 state 的通用方法
 
-     SET_STATE_ATTR(state, param) {
 
-       if (param instanceof Array) {
 
-         for (let item of param) {
 
-           state[item.key] = item.val
 
-         }
 
-       } else {
 
-         state[param.key] = param.val
 
-       }
 
-     },
 
-     // 更新令牌
 
-     SET_TOKEN(state, data) {
 
-       // 设置令牌
 
-       const { accessToken, refreshToken } = data
 
-       state.accessToken = accessToken
 
-       state.refreshToken = refreshToken
 
-       uni.setStorageSync(AccessTokenKey, accessToken)
 
-       uni.setStorageSync(RefreshTokenKey, refreshToken)
 
-       // 加载用户信息
 
-       this.dispatch('ObtainUserInfo')
 
-     },
 
-     // 更新用户信息
 
-     SET_USER_INFO(state, data) {
 
-       state.userInfo = data
 
-     },
 
-     // 清空令牌 和 用户信息
 
-     CLEAR_LOGIN_INFO(state) {
 
-       uni.removeStorageSync(AccessTokenKey)
 
-       uni.removeStorageSync(RefreshTokenKey)
 
-       state.accessToken = ''
 
-       state.refreshToken = ''
 
-       state.userInfo = {}
 
-     }
 
-   },
 
-   actions: {
 
-     //账号登录
 
-     Login({ state, commit }, { type, data }) {
 
-       if (type === 0) {
 
-         return passwordLogin(data).then(res => {
 
-           commit('SET_TOKEN', res.data)
 
-         })
 
-       } else if (type === 1) {
 
-         return smsLogin(data).then(res => {
 
-           commit('SET_TOKEN', res.data)
 
-         })
 
-       } else {
 
-         return weixinMiniAppLogin(data).then(res => {
 
-           commit('SET_TOKEN', res.data)
 
-         })
 
-       }
 
-     },
 
-     // 退出登录
 
-     async Logout({ state, commit }) {
 
-       commit('CLEAR_LOGIN_INFO')
 
-       await logout()
 
-     },
 
-     // 获得用户基本信息
 
-     async ObtainUserInfo({ state, commit }) {
 
-       const res = await getUserInfo()
 
-       commit('SET_USER_INFO', res.data)
 
-     }
 
-   }
 
- })
 
- export default store
 
 
  |