import Vue from "vue" import Vuex from "vuex" import Cookies from "js-cookie" import layoutStore from "./modules/layout/index" import { defaultRouter } from "@/router/index" import { encryptLoginPassword } from "@/utils"; import { b64DecodeUnicode } from "@/utils"; import request from "@/api/index" import router from "@/router/index" import {addrouters} from "@/router/index" Vue.use(Vuex) const store = new Vuex.Store({ state: { token: Cookies.get("token"), info: "", // 每次刷新都要通过token请求个人信息来筛选动态路由 routers: [], addRouters: [], tokenSources:new Map(), }, mutations: { setToken(state, token) { state.token = token Cookies.set("token", token, { expires: 1 / 24 }) }, setInfo(state, data) { state.info = { role: data.role, permissions: data.permissions, name: data.name, authorityRouter: data.authorityRouter, avatar: data.avatar ? data.avatar : "", uid: data.uid } localStorage.setItem("info", JSON.stringify(store.getters.info)) }, setRouters: (state, routers) => { state.addRouters = routers // 保存动态路由用来addRouter state.routers = defaultRouter.concat(routers) // 所有有权限的路由表,用来生成菜单列表 }, setTokenSources(state,data){ if(data instanceof Array){ state.tokenSources.set(data[0], data[1]) }else{ state.tokenSources = new Map() } }, delTokenSources(state,data){ state.tokenSources.delete(data) }, }, actions: { Login({ state,commit }, params) { let loginForm={} loginForm.username = params.username; loginForm.password = encryptLoginPassword(params.password); // request.fetchLogin(loginForm).then(res => { // if (res.status == 200) { // const dataJSON = JSON.parse(b64DecodeUnicode(res.data)); commit("setToken", "xxxx") commit("setInfo", { permissions: [ { role: "superAdmin", roleName: "超级管理员", }, ], name: "张老师", // avatar: data.avatar ? data.avatar : "", // uid: data.id, // authorityRouter:[], }); commit("setRouters", addrouters) state.addRouters.forEach((res) => { router.addRoute(res); }); console.log() if (params.url) { window.location.href = params.url; } else { router.push({ path: "/" }) } // } // }) }, permissions({ state,commit }, that) { // request.fetchLogin(that.loginForm).then(res => { // if (res.status == 200) { commit("setToken", "xxxx") commit("setInfo", { permissions: [ { role: "superAdmin", roleName: "超级管理员", }, ], name: "李老师", // avatar: data.avatar ? data.avatar : "", // uid: data.id, // authorityRouter:[], }); commit("setRouters", addrouters) state.addRouters.forEach((res) => { that.$router.addRoute(res); }); that.$router.push({ path: "/" }) // } // }) } }, getters: { addRouters: state => state.addRouters, token: state => state.token, info: state => state.info, routers: state => state.routers, logoShow: state => state.layoutStore.logoShow, isCollapse: state => state.layoutStore.isCollapse, uniquerouter: state => state.layoutStore.uniquerouter, tabnavBox: state => state.layoutStore.tabnavBox, rightNav: state => state.layoutStore.rightNav }, modules: { layoutStore } }) export default store