import Vue from 'vue' import Vuex from 'vuex' import { setCookie, getCookie, formatDate, dgTree } from '@/utils/util.js'; import { stDev, stProd, proPath } from '@/config/config.js'; import axios from '@/config/axios.js'; import index from './index/index.js'; import system from './system/index.js'; // import { ctx } from '@/config/config.js'; Vue.use(Vuex); const state = { // ctx: process.env.NODE_ENV === 'production' ? ('/' + ctx) : '', // 请求地址 ajaxCtx: '', // 图片基础路径 imgBaseUrl: '', // 文件基础路径 fileBaseUrl: '', // 上传文件路径 fileUploadUrl: '', // 下载文件路径 fileDownloadUrl: '', // 从表页面返回的当前页面值 currentStates: {}, // 仓库编码 storageattr: '', // 内控标准-成分、材质、公差、探伤-判断是否存在未保存的数据,1:存在、0:不存在 nkHaveChild: '', // 内控标准-成分、材质、公差、探伤页面观察此属性的变化,如果为'1'则检验自身页面中是否存在未保存数据 // 存在则将nkHaveChild赋值为'1',反之赋值为'0' nkDoCheck: '', jfHaveChild: '', jfDoCheck: '', // // // ==================================== // 面包屑 breadcrumb: [{ menuId: 1, meta: { 'title': '首页' } }], // 登录日期,用于操作时的提交日期 单位毫秒 loginTime: new Date().getTime(), // 路由表 routes: [], // 用户信息 有就不用再取菜单 userInfo: null, // 表格数据 tableParams: { form: { // // 筛选条件 // params: { // }, // // 排序 // sort: { // }, pageNum: 1, pageSize: 20 }, // 返回分页数据 page: { total: 0 } }, // 拥有权限信息 ownPrivilege: [], token: '', loginInfo: null }; const getters = { ctx () { if (process.env.NODE_ENV === 'development') { return window.location.origin + '/views/'; } else { return window.location.origin + '/views/'; } }, API () { if (process.env.NODE_ENV === 'development') { return stDev; } else { return stProd; } }, // 平台数据权限项目路径名 proPath () { return proPath; } } const mutations = { // // 更新路由表 addRouters (state, routes) { state.routes = routes }, // 更新权限信息 refreshOwnPrivilege (state, ownPrivilege) { state.ownPrivilege = ownPrivilege }, loginInfo (state, loginInfo) { state.loginInfo = loginInfo; }, // 用户详情 userInfo (state, userInfo) { state.userInfo = userInfo; }, // 更新 pageSize (state, pageSize) { state.table.page.pageSize = pageSize; state.table.form.pageSize = pageSize; }, pageIndex (state, pageIndex) { state.table.form.pageIndex = pageIndex; }, total (state, total) { state.table.page.total = total; }, breadcrumb (state, breadcrumb) { state.breadcrumb = breadcrumb; }, setToken (state, options) { state.token = options.token; } } const actions = { // 取用户信息 getUserInfo ({ commit, state }) { let res = axios.get(proPath + 'v1/sysusers/user/token'); res.then(res => { // 放入东西 commit('userInfo', res.data); }); return res; }, getLoginInfo ({ commit, state }) { let res = axios.post(proPath + 'auth/remoteauthentication/token'); res.then(res => { // 放入东西 commit('loginInfo', res.data); }); return res; }, getOwnMenuUrl ({ commit, state }) { let res = axios.get(proPath + 'v1/sysmenus/findFunctionMenusByUserId'); res.then(res => { window.top.localStorage.setItem('ownPrivilege', JSON.stringify(res.data)); // 放入东西 commit('refreshOwnPrivilege', res.data); }); return res; }, // 取菜单权限信息 generateRoutes ({ commit, state }, obj) { // let asyncRouterMap = [{ path: '*', redirect: '/404', hidden: true }]; let asyncRouterMap = []; let res = axios.get(proPath + 'v1/sysmenus/findMenusByUserId'); res.then(res => { // 处理路由 if (res.code === '0') { asyncRouterMap = asyncRouterMap.concat(res.data, asyncRouterMap); dgTree(asyncRouterMap, 'children', item => { item.name = item.menuLabel; item.url = item.menuUrl; }); } else { // 查询失败 // asyncRouterMap = ; } // 更新state commit('addRouters', asyncRouterMap); }); return res; }, // 退出/注销 loginOut ({ commit, state }) { // 清除cookie数据 let res = axios.get(proPath + 'logout'); res.then(res => { setCookie('accessToken', '', -1, '/'); setCookie('refreshToken', '', -1, '/'); setCookie('workDate', '', -1); }); return res; }, // 获取apollo用户列表 apolloUser ({ commit, state }) { let res = axios.get(proPath + 'user'); res.then(res => { // 处理路由 commit('addUser', res); }); }, // 获取部门列表 apolloOrg ({ commit, state }) { let res = axios.get(proPath + 'organizations'); res.then(res => { // 处理路由 commit('addOrg', res); }); } } export default new Vuex.Store({ state, modules: { index: index, system: system }, actions, getters, mutations });