user.js 4.8 KB
import { login, logout } from "@/api/login";
import { getInfo } from "@/api/system/user.js";
import { getDictData } from "@/api/system/dict-api.js";
import {
  getToken,
  setToken,
  removeToken,
  removeUserId,
  removeTime,
} from "@/utils/auth";
import { removeAuthCode } from "../../utils/auth";

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();
            removeAuthCode();
            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;