mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +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
 |