wlzboy
6 天以前 09e6dc3fb7266620fafb5e341808a8eb36e080a1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
import config from '@/config'
import storage from '@/utils/storage'
import constant from '@/utils/constant'
import { login, logout, getInfo } from '@/api/login'
import { wechatLogin } from '@/api/wechat'
import { getToken, setToken, removeToken } from '@/utils/auth'
 
const baseUrl = config.baseUrl
 
const user = {
  state: {
    token: getToken(),
    userId: storage.get(constant.userId),
    name: storage.get(constant.name),
    nickName: storage.get(constant.nickName),
    avatar: storage.get(constant.avatar),
    roles: storage.get(constant.roles),
    permissions: storage.get(constant.permissions),
    deptId: storage.get(constant.deptId),
    branchCompanyId: storage.get(constant.branchCompanyId),
    branchCompanyName: storage.get(constant.branchCompanyName),
    oaUserId: storage.get(constant.oaUserId)
  },
 
  mutations: {
    SET_TOKEN: (state, token) => {
      state.token = token
    },
    SET_USER_ID: (state, userId) => {
      state.userId = userId
      storage.set(constant.userId, userId)
    },
    SET_NAME: (state, name) => {
      state.name = name
      storage.set(constant.name, name)
    },
    SET_NICK_NAME: (state, nickName) => {
      state.nickName = nickName
      storage.set(constant.nickName, nickName)
    },
    SET_AVATAR: (state, avatar) => {
      state.avatar = avatar
      storage.set(constant.avatar, avatar)
    },
    SET_ROLES: (state, roles) => {
      state.roles = roles
      storage.set(constant.roles, roles)
    },
    SET_PERMISSIONS: (state, permissions) => {
      state.permissions = permissions
      storage.set(constant.permissions, permissions)
    },
    SET_DEPT_ID: (state, deptId) => {
      state.deptId = deptId
      storage.set(constant.deptId, deptId)
    },
    SET_BRANCH_COMPANY_ID: (state, branchCompanyId) => {
      state.branchCompanyId = branchCompanyId
      storage.set(constant.branchCompanyId, branchCompanyId)
    },
    SET_BRANCH_COMPANY_NAME: (state, branchCompanyName) => {
      state.branchCompanyName = branchCompanyName
      storage.set(constant.branchCompanyName, branchCompanyName)
    },
    SET_OA_USER_ID: (state, oaUserId) => {
      state.oaUserId = oaUserId
      storage.set(constant.oaUserId, oaUserId)
    }
  },
 
  actions: {
    // 登录
    Login({ commit }, userInfo) {
      const username = userInfo.username.trim()
      const password = userInfo.password
      const code = userInfo.code
      const uuid = userInfo.uuid
      return new Promise((resolve, reject) => {
        login(username, password, code, uuid).then(res => {
          setToken(res.token)
          commit('SET_TOKEN', res.token)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    },
 
    // 微信登录
    WechatLogin({ commit }, wechatData) {
      return new Promise((resolve, reject) => {
        wechatLogin(wechatData).then(res => {
          setToken(res.token)
          commit('SET_TOKEN', res.token)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    },
 
    // 获取用户信息
    GetInfo({ commit, state }) {
      return new Promise((resolve, reject) => {
        getInfo().then(res => {
          const user = res.user
          const avatar = (user == null || user.avatar == "" || user.avatar == null) ? require("@/static/images/profile.jpg") : baseUrl + user.avatar
          const username = (user == null || user.userName == "" || user.userName == null) ? "" : user.userName
          const nickname = (user == null || user.nickName == "" || user.nickName == null) ? username : user.nickName
          const userId = (user == null || user.userId == null) ? null : user.userId
          const deptId = (user == null || user.deptId == null) ? null : user.deptId
          
          if (res.roles && res.roles.length > 0) {
            commit('SET_ROLES', res.roles)
            commit('SET_PERMISSIONS', res.permissions)
          } else {
            commit('SET_ROLES', ['ROLE_DEFAULT'])
          }
          commit('SET_USER_ID', userId)
          commit('SET_NAME', username)
          commit('SET_NICK_NAME', nickname)
          commit('SET_AVATAR', avatar)
          commit('SET_DEPT_ID', deptId)
          commit('SET_BRANCH_COMPANY_ID', res.branchCompanyId)
          commit('SET_BRANCH_COMPANY_NAME', res.branchCompanyName)
          commit('SET_OA_USER_ID', res.oaUserId)
          resolve(res)
        }).catch(error => {
          reject(error)
        })
      })
    },
 
    // 退出系统
    LogOut({ commit, state }) {
      return new Promise((resolve, reject) => {
        logout(state.token).then(() => {
          commit('SET_TOKEN', '')
          commit('SET_ROLES', [])
          commit('SET_PERMISSIONS', [])
          removeToken()
          storage.clean()
          
          // 触发全局事件,通知 App.vue 停止轮询
          uni.$emit('user-logout')
          
          resolve()
        }).catch(error => {
          // 即使退出接口失败,也要清空本地状态
          commit('SET_TOKEN', '')
          commit('SET_ROLES', [])
          commit('SET_PERMISSIONS', [])
          removeToken()
          storage.clean()
          
          // 触发全局事件
          uni.$emit('user-logout')
          
          reject(error)
        })
      })
    }
  }
}
 
export default user