/* * @Author: zouwenying * @Date: 2020-10-22 14:40:01 * @LastEditTime: 2020-11-20 10:02:36 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \vue-manage-system-master\src\store\store.js */ import Vue from "vue"; import Vuex from "vuex"; Vue.use(Vuex); const store = new Vuex.Store({ state: { token: "", collapse: false,//控制面板是否显示 tagsList: [],//标签页所显示的内容 // 新弹窗 modalParams: {}, // 权限列表 permissionList: [], //菜单列表 menuList:[], thisMenuList:[], // 当前登录用户信息 cruUserInfo:{}, //查询是否有未读消息 messageNumber:false, //最近消息列表集合 messageList:[], //记录消息的状态 messageStatus:2, // 弹窗集合 popups: '', theme:'light',//控制界面的颜色, // 查询的点的坐标 searchPointInfo:{}, }, getters: { getTheme(state) { return state.theme }, getPopups(state) { return state.popups || []; }, getToken(state) { return state.token; }, getSearchPointInfo(state){ return state.searchPointInfo; }, getCollapse(state) { return state.collapse; }, getTagsList(state) { return state.tagsList; }, getModalParams(state) { return state.modalParams; }, // 判断按钮是否有权限 hasPermission: (state) => (role) => { if (state.permissionList.size) { return state.permissionList.has(role) } else { return false } }, //获取菜单列表 getMenuList(state){ return state.menuList; }, getThisMenuList(state){ return state.thisMenuList; }, // 获取当前登录用户信息 getCruUserInfo(state){ return state.cruUserInfo; } }, mutations: { setSearchPointInfo(state,data){ state.searchPointInfo = data; }, setPopups(state, data) { state.popups = data; }, setToken(state, data) { state.token = data; }, setCollapse(state, data) { state.collapse = data; }, setTagList(state, data) { state.tagsList = data; }, setModalParams(state, data) { state.modalParams = data; }, setPermissionList(state, data) { state.permissionList = data; }, setMenuList(state,data){ state.menuList = data; }, setThisMenuList(state,data){ state.thisMenuList = data; }, setcCruUserInfo(state,data){ state.cruUserInfo = data; }, setmessageNumber(state,data){ state.messageNumber=data; }, setmessageList(state,data){ state.messageList=data; }, setmessageStatus(state,data){ state.messageStatus=data; }, setTheme(state, data) { state.theme = data }, }, actions: { tags(ctx, data) { ctx.commit("setTagList", data) }, /** * @description: 打开弹窗 * @param {type} ctx vuex的上下文 * @param {object} args { * id: 唯一标识,必须 * url: 打开的组件url地址,必须 * params: 传递给弹出组件的参数, * notip: 是否显示*为填项必内容,为true时不显示 * backgroud: 是否强制显示底部透明背景色,默认第二个弹出层时不显示透明底色,为true时一定显示 * full: 是否为全屏展示,true为全屏 * } * @return {null} null: */ addPopup(ctx, args) { const params = {...args}; const list = ctx.getters.getPopups; params.id = 'modal_' + (+new Date()) import(/* webpackChunkName: "[request]" */ `@/views${params.url}`).then((res) => { params.component = res.default; params.show = true; list.push(params); ctx.commit('setPopups', list); // ctx.commit('setalertModalParams', params); }).catch((err) => { if (err.message.indexOf("Loading chunk") == 0) { ELEMENT.Message.info("版本已更新,请刷新页面重试"); } else { ELEMENT.Message.info(err.message); } }); }, delPopup(ctx, id) { // let id=id; // ctx.commit('setalertModalParams', { show: false}); const list = ctx.getters.getPopups; list.every((item, index) => { if (item.id === id) { list.splice(index, 1); ctx.commit('setPopups', list); // 解决弹窗关闭,滚动条没有关闭的情况 // const $bar = document.querySelector('.dmp-scroll-bar') // if ($bar) { // document.body.removeChild(document.querySelector('.dmp-scroll-bar')) // } return false; } return true }); }, collapse(ctx, data) { ctx.commit("setCollapse", data); }, openModal(ctx, args) { const params = {...args}; params.id = 'modal_' + (+new Date()) import(/* webpackChunkName: "[request]" */ `@/views${params.url}`).then((res) => { params.component = res.default; params.show = true; ctx.commit('setModalParams', params); }).catch(err => { ELEMENT.Message.error(`${err.message},请刷新页面重试`); }); }, closeModal(ctx) { ctx.commit('setModalParams', { show: false}); } } }) export default store;