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 1 import Vue from 'vue'
2 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 6 Vue.use(Vuex) // vue的插件机制
11 7  
12 8 // Vuex.Store 构造器选项
13 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 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
... ...