Surpriseplus
2022-11-04 d3208016fbb567fb55186e0275fdd1b421ee3e0d
src/store/index.js
@@ -1,16 +1,51 @@
import Vue from 'vue';
import Vuex from 'vuex';
import { getToken, setToken, removeToken } from '@/utils/auth';
import { Loading, Message } from 'element-ui';
import { login, getPublicKey } from '@/api/api';
var encrypt = new JSEncrypt();
Vue.use(Vuex);
export default new Vuex.Store({
  state: {
    catalogueName: '',
    cataNode: {},
    lang: 'zh',
    menuNode: {},
    verCateNode: {},
    verCateNodes: {},
    styleDirCateNodes: {},
    styleDepCateNodes: {},
    iframeMsg: '',
    token: getToken(),
    //请求计数
    apiCount: 0,
    //loading实例
    loadingInstance: null,
    key: null,
    //系统监控WebSocket
    ws: null,
    //权限合集
    permsEntity: [],
    currentPerms: '',
    //综合展示
    syntiesis: {},
    mapMenuBoolean: false,
    mapPopBoolean: false,
    mapPopBoxFlag: null,
    mapMenuBoxFlag: null,
    mapSpaceQueryLayer: null,
    mapMenuShpFile: null,
  },
  mutations: {
    //获取权限合集
    getPermsEntity(state, msg) {
      state.permsEntity = msg;
    },
    currentPerms(state, msg) {
      state.currentPerms = msg;
    },
    // 获取完整面包屑路径
    changeCata(state, msg) {
      state.catalogueName = msg;
@@ -19,13 +54,104 @@
    changeNode(state, msg) {
      state.cataNode = msg;
    },
    changeLang(state, msg) {
      state.lang = msg;
    },
    getIframe(state, msg) {
      state.iframeMsg = msg;
    },
    changeName(state, msg) {
      state.menuNode = msg;
      // console.log(msg);
    },
    verChangeNode(state, msg) {
      state.verCateNode = msg;
    },
    verChangeNodes(state, msg) {
      state.verCateNodes = msg;
    },
    //样式管理
    styleDepChangeNode(state, msg) {
      state.styleDepCateNodes = msg;
    },
    styleDirChangeNode(state, msg) {
      state.styleDirCateNodes = msg;
    },
    /* 打开Loading */
    START_LOADING(state, msg) {
      state.loadingInstance = Loading.service({
        lock: true,
        text: msg ? msg : '加载中...',
        background: 'rgba(0, 0, 0, 0.7)',
      });
    },
    /* 关闭loading */
    CLOSE_LOADING(state) {
      state.loadingInstance.close();
    },
    /* 更新请求线程池 */
    UPDATE_API_COUNT(state, handle) {
      if (handle == 'add') {
        state.apiCount++;
        this.commit('START_LOADING');
      } else {
        state.apiCount--;
        if (state.apiCount <= 0) {
          this.commit('CLOSE_LOADING');
        }
      }
    },
    SET_TOKEN(state, token) {
      state.token = token;
    },
    SET_KEY(state, key) {
      state.key = key;
    },
  },
  actions: {},
  actions: {
    // 用户登录 login
    login({ commit, state }, userInfo) {
      return new Promise((resolve, reject) => {
        var data = {
          uid: encrypt.encrypt(userInfo.uid),
          pwd: encrypt.encrypt(userInfo.pwd),
        };
        login(data)
          .then((response) => {
            const data = response;
            if (data.code !== 200) {
              return Message({
                message: data.msg,
                type: 'error',
                duration: 5 * 1000,
              });
            }
            commit('SET_TOKEN', data.result.token);
            setToken(data.result.token);
            resolve(data);
          })
          .catch((error) => {
            reject(error);
          });
      });
    },
    getpublickey({ commit, state }, userInfo) {
      return new Promise((resolve, reject) => {
        getPublicKey(userInfo)
          .then((response) => {
            const data = response;
            commit('SET_KEY', data.result);
            encrypt.setPublicKey(data.result); // 设置公钥
            resolve();
          })
          .catch((error) => {
            reject(error);
          });
      });
    },
  },
  modules: {},
});