user.js 4.71 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 { alertWarningMsg } from '@/utils/index.js'

const user = {
  state: {
    token: getToken(),
    userData: null,
    name: '',
    avatar: '',
    lockTime: 0,
    roles: [],
    permissions: [],
    linkList: [],
    editEntryData: {
      id: null,
      status: 0,
    },
    dict: {
      DECLARE_TRAFMODE: [{ itemCode: 'DECLARE_TRAFMODE_AVIATION', itemChineseName: '航空运输', itemValue: '5' }]
    },
    dictWit: ['H2000Account'],
    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
    },
    SET_EDITENTRYDATA: (state, obj) => {
      state.editEntryData = obj
    },
    DEL_EDITENTRYDATA: (state) => {
      state.editEntryData = {
        id: null,
        status: 0,
      }
    },
    SET_LOCKTIME: (state, time) => {
      state.lockTime = time
    }
  },

  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)
        })
      })
    },

    // 获取用户信息
    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) => {
        // removeEntryLock(state.editEntryData.id, state.editEntryData.status).then(() => {
        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 => {
        // removeEntryLock(state.editEntryData.id, state.editEntryData.status).then(() => {
        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