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'; import variables from '@/assets/element-variables.scss'; 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, propertiesFlag: null, propertiesName: null, propertiesInfo: null, pickUpPointInfo: null, //主题切换 theme: variables.theme, //登录用户名 uname: null, unid: null, //项目管理 projeOl: null, download: false, showAllLayers: true, primitLayer: null, loading: false, pipelineEntity: [], reporturl: null, layerMnage: false, themeflag: false, language: true, isNaviget: false, treeData: null, checkedKeys: [], queryInfo: [], Map3: [], histogramLayer: [], attachModel: false, attachinfo: null, catModel: false, catModelInfo: null, showPopBoxFlag: false, pickoption: null, }, mutations: { //获取权限合集 getPermsEntity(state, msg) { state.permsEntity = msg; }, currentPerms(state, msg) { state.currentPerms = 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_UNAME(state, name) { state.uname = name; }, SET_TOKEN(state, token) { state.token = token; }, SET_KEY(state, key) { state.key = key; }, CHANGE_SETTING: (state, { key, value }) => { // console.log(state, { key, value }); if (state.hasOwnProperty(key)) { state[key] = value; } }, }, 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) { resolve(data); return // return Message({ // message: data.msg, // type: 'error', // duration: 5 * 1000, // }); } commit('SET_UNAME', data.result.uname); commit('SET_TOKEN', data.result.token); setToken(data.result.token); resolve(data); }) .catch((error) => { reject(error); }); }); }, setCookies(res) { var value = localStorage.getItem('LFToken'); if (value != null) { this.rmCookies(); } var timeData = moment(res.result.expire).format('YYYY-MM-DD HH:mm:ss'); var token = res.result; var LfPrems = { token: token, time: timeData, }; LfPrems = JSON.stringify(LfPrems); localStorage.setItem('LFToken', LfPrems); }, rmCookies() { localStorage.removeItem('LFToken'); }, 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); }); }); }, //主题切换 changeSetting({ commit }, data) { commit('CHANGE_SETTING', data); }, }, modules: {}, });