Commit 49fe926cb86bd3714d7d12a160212a0d5ae7440b

Authored by sfmind
1 parent a72c68ce

uni-app调整vuex目录结构

yudao-ui-app/store/getters.js 0 → 100644
  1 +const getters = {
  2 + accessToken: state => state.user.accessToken,
  3 + userInfo: state => state.user.userInfo,
  4 + hasLogin: state => !!state.user.accessToken
  5 +}
  6 +export default getters
yudao-ui-app/store/index.js
1 import Vue from 'vue' 1 import Vue from 'vue'
2 import Vuex from 'vuex' 2 import Vuex from 'vuex'
3 -import { logout } from '@/api/auth'  
4 -import { getUserInfo } from '@/api/user'  
5 -import { passwordLogin, smsLogin, weixinMiniAppLogin } from '@/api/auth'  
6 -  
7 -const AccessTokenKey = 'ACCESS_TOKEN'  
8 -const RefreshTokenKey = 'REFRESH_TOKEN' 3 +import user from './mudules/user'
  4 +import getters from './getters'
9 5
10 Vue.use(Vuex) // vue的插件机制 6 Vue.use(Vuex) // vue的插件机制
11 7
12 // Vuex.Store 构造器选项 8 // Vuex.Store 构造器选项
13 const store = new Vuex.Store({ 9 const store = new Vuex.Store({
14 - state: {  
15 - accessToken: uni.getStorageSync(AccessTokenKey), // 访问令牌  
16 - refreshToken: uni.getStorageSync(RefreshTokenKey), // 刷新令牌  
17 - userInfo: {}  
18 - },  
19 - getters: {  
20 - accessToken: state => state.accessToken,  
21 - refreshToken: state => state.refreshToken,  
22 - userInfo: state => state.userInfo,  
23 - hasLogin: state => !!state.accessToken 10 + modules: {
  11 + user
24 }, 12 },
25 - mutations: {  
26 - // 更新 state 的通用方法  
27 - SET_STATE_ATTR(state, param) {  
28 - if (param instanceof Array) {  
29 - for (let item of param) {  
30 - state[item.key] = item.val  
31 - }  
32 - } else {  
33 - state[param.key] = param.val  
34 - }  
35 - },  
36 - // 更新令牌  
37 - SET_TOKEN(state, data) {  
38 - // 设置令牌  
39 - const { accessToken, refreshToken } = data  
40 - state.accessToken = accessToken  
41 - state.refreshToken = refreshToken  
42 - uni.setStorageSync(AccessTokenKey, accessToken)  
43 - uni.setStorageSync(RefreshTokenKey, refreshToken)  
44 -  
45 - // 加载用户信息  
46 - this.dispatch('ObtainUserInfo')  
47 - },  
48 - // 更新用户信息  
49 - SET_USER_INFO(state, data) {  
50 - state.userInfo = data  
51 - },  
52 - // 清空令牌 和 用户信息  
53 - CLEAR_LOGIN_INFO(state) {  
54 - uni.removeStorageSync(AccessTokenKey)  
55 - uni.removeStorageSync(RefreshTokenKey)  
56 - state.accessToken = ''  
57 - state.refreshToken = ''  
58 - state.userInfo = {}  
59 - }  
60 - },  
61 - actions: {  
62 - //账号登录  
63 - Login({ state, commit }, { type, data }) {  
64 - if (type === 0) {  
65 - return passwordLogin(data).then(res => {  
66 - commit('SET_TOKEN', res.data)  
67 - })  
68 - } else if (type === 1) {  
69 - return smsLogin(data).then(res => {  
70 - commit('SET_TOKEN', res.data)  
71 - })  
72 - } else {  
73 - return weixinMiniAppLogin(data).then(res => {  
74 - commit('SET_TOKEN', res.data)  
75 - })  
76 - }  
77 - },  
78 - // 退出登录  
79 - async Logout({ state, commit }) {  
80 - commit('CLEAR_LOGIN_INFO')  
81 - await logout()  
82 - },  
83 - // 获得用户基本信息  
84 - async ObtainUserInfo({ state, commit }) {  
85 - const res = await getUserInfo()  
86 - commit('SET_USER_INFO', res.data)  
87 - }  
88 - } 13 + getters
89 }) 14 })
90 -  
91 export default store 15 export default store
yudao-ui-app/store/mudules/user.js 0 → 100644
  1 +import { getUserInfo } from '@/api/user'
  2 +import { passwordLogin, smsLogin, weixinMiniAppLogin, logout } from '@/api/auth'
  3 +
  4 +const AccessTokenKey = 'ACCESS_TOKEN'
  5 +const RefreshTokenKey = 'REFRESH_TOKEN'
  6 +
  7 +const user = {
  8 + state: {
  9 + accessToken: uni.getStorageSync(AccessTokenKey), // 访问令牌
  10 + refreshToken: uni.getStorageSync(RefreshTokenKey), // 刷新令牌
  11 + userInfo: {}
  12 + },
  13 + mutations: {
  14 + // 更新 state 的通用方法
  15 + SET_STATE_ATTR(state, param) {
  16 + if (param instanceof Array) {
  17 + for (let item of param) {
  18 + state[item.key] = item.val
  19 + }
  20 + } else {
  21 + state[param.key] = param.val
  22 + }
  23 + },
  24 + // 更新令牌
  25 + SET_TOKEN(state, data) {
  26 + // 设置令牌
  27 + const { accessToken, refreshToken } = data
  28 + state.accessToken = accessToken
  29 + state.refreshToken = refreshToken
  30 + uni.setStorageSync(AccessTokenKey, accessToken)
  31 + uni.setStorageSync(RefreshTokenKey, refreshToken)
  32 +
  33 + // 加载用户信息
  34 + this.dispatch('ObtainUserInfo')
  35 + },
  36 + // 更新用户信息
  37 + SET_USER_INFO(state, data) {
  38 + state.userInfo = data
  39 + },
  40 + // 清空令牌 和 用户信息
  41 + CLEAR_LOGIN_INFO(state) {
  42 + uni.removeStorageSync(AccessTokenKey)
  43 + uni.removeStorageSync(RefreshTokenKey)
  44 + state.accessToken = ''
  45 + state.refreshToken = ''
  46 + state.userInfo = {}
  47 + }
  48 + },
  49 + actions: {
  50 + //账号登录
  51 + Login({ state, commit }, { type, data }) {
  52 + if (type === 0) {
  53 + return passwordLogin(data)
  54 + .then(res => {
  55 + commit('SET_TOKEN', res.data)
  56 + return Promise.resolve(res)
  57 + })
  58 + .catch(err => {
  59 + return Promise.reject(err)
  60 + })
  61 + } else if (type === 1) {
  62 + return smsLogin(data)
  63 + .then(res => {
  64 + commit('SET_TOKEN', res.data)
  65 + return Promise.resolve(res)
  66 + })
  67 + .catch(err => {
  68 + return Promise.reject(err)
  69 + })
  70 + } else {
  71 + return weixinMiniAppLogin(data)
  72 + .then(res => {
  73 + commit('SET_TOKEN', res.data)
  74 + return Promise.resolve(res)
  75 + })
  76 + .catch(err => {
  77 + return Promise.reject(err)
  78 + })
  79 + }
  80 + },
  81 + // 退出登录
  82 + Logout({ state, commit }) {
  83 + return logout()
  84 + .then(res => {
  85 + return Promise.resolve(res)
  86 + })
  87 + .catch(err => {
  88 + return Promise.reject(err)
  89 + })
  90 + .finally(() => {
  91 + commit('CLEAR_LOGIN_INFO')
  92 + })
  93 + },
  94 + // 获得用户基本信息
  95 + async ObtainUserInfo({ state, commit }) {
  96 + const res = await getUserInfo()
  97 + commit('SET_USER_INFO', res.data)
  98 + }
  99 + }
  100 +}
  101 +export default user