user.js 5.06 KB
import { userLogin, logout, getInfo } from "@/api/login";
import { getTableHeader } from "@/api/menu";
import { changeCurrentPort } from "@/api/system/user.js";
import { getToken, setToken, removeToken, getUid } from "@/utils/auth";
import { MessageBox, Message } from "element-ui";

const user = {
  state: {
    token: getToken(),
    userData: {},
    name: "",
    id: "",
    avatar: "",
    activePortName: "",
    portNames: [],
    roles: [],
    permissions: [],
    tableHeader: null,
    appLoading: false,
  },

  mutations: {
    SET_TOKEN: (state, token) => {
      state.token = token;
    },
    SET_USERDATA: (state, data) => {
      state.userData = data;
    },
    SET_NAME: (state, name) => {
      state.name = name;
    },
    SET_ID: (state, id) => {
      state.id = id;
    },
    SET_AVATAR: (state, avatar) => {
      state.avatar = avatar;
    },
    SET_ACTIVEPORTNAME: (state, activePortName) => {
      state.activePortName = activePortName;
      sessionStorage.setItem("portName", activePortName);
    },
    SET_PORTNAMES: (state, portNames) => {
      state.portNames = portNames;
    },
    SET_ROLES: (state, roles) => {
      state.roles = roles;
    },
    SET_PERMISSIONS: (state, permissions) => {
      state.permissions = permissions;
    },
    SAVE_TABLEHEADER: (state, table) => {
      state.tableHeader = table;
    },
    SET_APP_LOADING(state, newValue) {
      state.appLoading = newValue;
    }
  },

  actions: {
    // 登录
    Login({ commit }, userInfo) {
      const accNo = userInfo.accNo.trim();
      const password = userInfo.password;
      const rememberMe = userInfo.rememberMe;
      return new Promise((resolve, reject) => {
        userLogin(accNo, password, rememberMe)
          .then((res) => {
            if (res.code == 200) {
              setToken(res.data);
              commit("SET_TOKEN", res.data);
              resolve();
            } else {
              MessageBox.alert(res.msg, "註意", {
                dangerouslyUseHTMLString: true,
              });
              return Promise.reject(new Error(msg));
            }
          })
          .catch((error) => {
            reject(error);
          });
      });
    },

    //获取表头
    GetTableHeaders({ commit, state }) {
      return new Promise((resolve, reject) => {
        getTableHeader()
          .then((res) => {
            if (res.code === 200) {
              commit("SAVE_TABLEHEADER", res.data);
            }
            resolve(res);
          })
          .catch((err) => {
            reject(err);
          });
      });
    },

    //保存表头
    SavetableHeader({ commit, state }, data) {
      commit("SAVE_TABLEHEADER", data);
    },

    // 获取用户信息
    GetInfo({ commit, state }) {
      
      return new Promise((resolve, reject) => {
        getInfo(getUid())
          .then((res) => {
            if (res.code === 200) {
              const user = res.data;
              // const avatar =
              //   user.avatar == ""
              //     ? ""
              //     : process.env.VUE_APP_BASE_API + user.avatar;
              // let ports = [];
              // commit("SET_ID", user.id);
              // commit("SET_NAME", user.userName);
              commit("SET_USERDATA", res.data.userInfo);
              // commit("SET_AVATAR", avatar);
              resolve(res);
            }
          })
          .catch((error) => {
            reject(error);
          });
      });
    },

    //切换口岸
    changePort({ commit }, portName) {
      return new Promise((resolve, reject) => {
        changeCurrentPort({ portName: portName })
          .then((res) => {
            if (res.code === 200) {
              commit("SET_ACTIVEPORTNAME", portName);
            }
            resolve(res);
          })
          .catch((err) => {
            reject(err);
          });
      });
    },

    // 退出系统
    LogOut({ commit, state }) {
      return new Promise((resolve, reject) => {
        logout(state.token)
          .then(() => {
            // window.location.href = "https://test-myapps.secure.fedex.com/purpleid/signout";//wsso系统跳转
            commit("SET_TOKEN", "");
            commit("SET_USERDATA", {});
            removeToken();
            resolve();
          })
          .catch((error) => {
            reject(error);
          });
      });
    },

    RemoveInfo({ commit }) {
      return new Promise((resolve, reject) => {
        commit("SET_USERDATA", { user: {} });
        commit("SET_ROLES", []);
        commit("SET_PERMISSIONS", []);
        commit("SET_NAME", "");
        commit("SET_AVATAR", "");
        resolve();
      }).catch(() => {
        reject();
      });
    },

    // 前端 登出
    FedLogOut({ commit }) {
      return new Promise((resolve) => {
        // window.location.href = "https://test-myapps.secure.fedex.com/purpleid/signout";//wsso系统跳转
        commit("SET_TOKEN", "");
        commit("SET_USERDATA", {});
        removeToken();
        resolve();
      });
    },

    AppLoading({ commit }, newValue) {
      commit('SET_APP_LOADING', newValue)
    },
  },
};

export default user;