mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 18:28:43 +08:00 
			
		
		
		
	
		
			
	
	
		
			102 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			102 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|   | import { getUserInfo } from '@/api/user' | ||
|  | import { passwordLogin, smsLogin, weixinMiniAppLogin, logout } from '@/api/auth' | ||
|  | 
 | ||
|  | const AccessTokenKey = 'ACCESS_TOKEN' | ||
|  | const RefreshTokenKey = 'REFRESH_TOKEN' | ||
|  | 
 | ||
|  | const user = { | ||
|  |   state: { | ||
|  |     accessToken: uni.getStorageSync(AccessTokenKey), // 访问令牌
 | ||
|  |     refreshToken: uni.getStorageSync(RefreshTokenKey), // 刷新令牌
 | ||
|  |     userInfo: {} | ||
|  |   }, | ||
|  |   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) | ||
|  |             return Promise.resolve(res) | ||
|  |           }) | ||
|  |           .catch(err => { | ||
|  |             return Promise.reject(err) | ||
|  |           }) | ||
|  |       } else if (type === 1) { | ||
|  |         return smsLogin(data) | ||
|  |           .then(res => { | ||
|  |             commit('SET_TOKEN', res.data) | ||
|  |             return Promise.resolve(res) | ||
|  |           }) | ||
|  |           .catch(err => { | ||
|  |             return Promise.reject(err) | ||
|  |           }) | ||
|  |       } else { | ||
|  |         return weixinMiniAppLogin(data) | ||
|  |           .then(res => { | ||
|  |             commit('SET_TOKEN', res.data) | ||
|  |             return Promise.resolve(res) | ||
|  |           }) | ||
|  |           .catch(err => { | ||
|  |             return Promise.reject(err) | ||
|  |           }) | ||
|  |       } | ||
|  |     }, | ||
|  |     // 退出登录
 | ||
|  |     Logout({ state, commit }) { | ||
|  |       return logout() | ||
|  |         .then(res => { | ||
|  |           return Promise.resolve(res) | ||
|  |         }) | ||
|  |         .catch(err => { | ||
|  |           return Promise.reject(err) | ||
|  |         }) | ||
|  |         .finally(() => { | ||
|  |           commit('CLEAR_LOGIN_INFO') | ||
|  |         }) | ||
|  |     }, | ||
|  |     // 获得用户基本信息
 | ||
|  |     async ObtainUserInfo({ state, commit }) { | ||
|  |       const res = await getUserInfo() | ||
|  |       commit('SET_USER_INFO', res.data) | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | export default user |