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: [], }, mutations: { //获取权限合集 getPermsEntity() { state.permsEntity = msg }, // 获取完整面包屑路径 changeCata(state, msg) { state.catalogueName = msg; }, // 获取点击的目录点对象 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: { // 用户登录 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: {}, });