user.js 4.47 KB
import { login, logout } from '@/api/login'
import { getInfo } from '@/api/system/user.js'
import { getLogisticsCodeLis, getDictData } from '@/api/system/dict-api.js'
import { getToken, setToken, removeToken, removeUserId, removeTime } from '@/utils/auth'
import { getParamsObj } from '@/utils/parseUrlParams'
import { alertWarningMsg } from '@/utils/index.js'

const user = {
  state: {
    token: getToken(),
    userData: null,
    name: '',
    avatar: '',
    roles: [],
    permissions: [],
    linkList: [],
    dict: {
      DECLARE_TRAFMODE: [{ itemCode: 'DECLARE_TRAFMODE_AVIATION', itemChineseName: '航空运输', itemValue: '5' }]
    },
    loading: {
      type: false,
      text: '拼命加载中"'
    }
  },

  mutations: {
    SET_TOKEN: (state, token) => {
      state.token = token
    },
    SET_USERDATA: (state, data) => {
      state.userData = data
    },
    SET_NAME: (state, name) => {
      state.name = name
    },
    SET_AVATAR: (state, avatar) => {
      state.avatar = avatar
    },
    SET_ROLES: (state, roles) => {
      state.roles = roles
    },
    SET_PERMISSIONS: (state, permissions) => {
      state.permissions = permissions
    },
    SET_LINKLIST: (state, linkList) => {
      state.linkList = linkList
    },
    SET_DICT: (state, dict) => {
      state.dict = dict
    },
    SET_LOAD: (state, loading) => {
      state.loading.type = loading.type
      state.loading.text = loading.text
    },
  },

  actions: {
    // 登录
    Login({ commit, state }, userInfo) {
      const loginName = userInfo.userName.trim()
      const password = userInfo.password
      const rememberMe = userInfo.rememberMe
      return new Promise((resolve, reject) => {
        login(loginName, password, rememberMe).then(res => {
          if (res.code != '200') {
            reject(res)
          } else {
            if (!getToken()) {
              setToken(res.data)
              commit('SET_TOKEN', res.data)
              resolve(res)
            } else {
              resolve(res)
            }
          }
        }).catch(error => {
          reject(error)
        })
      })
    },
    //非账号密码登录
    LoginWithoutPassword({ commit }, token) {
      return new Promise((resolve) => {
        if (!getToken()) {
          setToken(token)
          commit('SET_TOKEN', token)
          resolve(token)
        } else {
          resolve(token)
        }
      })
    },

    // 获取用户信息
    async GetInfo({ commit, state }) {
      return new Promise((resolve, reject) => {
        getInfo().then(res => {
          if (res.code === '200') {
            commit("SET_USERDATA", res.data);
            resolve(res)
          } else {
            reject(res)
          }
        }).catch(error => {
          reject(error)
        })
      })
    },

    //获取字典数据
    async GetDict({ commit, state }, codeList) {
      let obj = state.dict
      codeList.forEach((item, idx) => {
        if (obj[item] == undefined || obj[item].length == 0) {
          obj[item] = []
          getDictData({ doctCode: item }).then(res => {
            if (res.code === '200') {
              obj[item] = res.data
            }
          }).catch(err => {
            console.log(err);
          }).finally(() => {
            if (idx == codeList.length - 1) {
              console.log(obj);
              commit('SET_DICT', obj)
            }
          })
        } else {
          if (idx == codeList.length - 1) {
            console.log(obj);
            commit('SET_DICT', obj)
          }
        }
      })
    },

    //退出系统
    LogOut({ commit, state }) {
      return new Promise((resolve, reject) => {
        logout(state.token).then(() => {
          commit('SET_TOKEN', '')
          commit('SET_USERDATA', null)
          removeToken()
          removeTime()
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    },

    // 前端 登出
    FedLogOut({ commit, state }) {
      return new Promise(resolve => {
        commit('SET_TOKEN', '')
        commit('SET_USERDATA', null)
        removeToken()
        removeTime()
        removeUserId()
        location.replace(process.env.VUE_APP_BASE_ROUTE);
        resolve()
      })
    }
  }
}

function getLogisticsCode() {
  return new Promise((resolve, reject) => {
    getLogisticsCodeList().then(res => {
      if (res.code === '200') {
        resolve(res.data)
      } else {
        reject()
      }
    }).catch(err => {
      console.log(err);
      reject()
    })
  })
}


export default user