import { shallowRef } from 'vue' // API import { GetPermission } from "@a/account"; // utils import { formatTree } from "@/utils/format"; import axios from "axios"; /** 格式化菜单数据生成路由 */ const formatRouterMenu = (data) => { // 检测数据是否存在 if (data && (!Array.isArray(data) || data.length === 0)) { return false; } data.map((item) => { if (item.component) { item.component = shallowRef(require(`@/views/${item.component}`).default) } if (item.children) { formatRouterMenu(item.children) } return item }) return data // 监听存储数据 // const router = []; // 遍历菜单 // data.forEach((item) => { // const router_obj = {}; // // id // router_obj.id = item.id; // // path // router_obj.path = item.path; // // name // router_obj.name = item.router; // // hidden // if (item.hidden === "1") { // router_obj.hidden = true; // } // // redirect // if (item.redirect) { // router_obj.redirect = item.redirect; // } // router_obj.parent_id = item.parent_id; // if (item.children) { // router_obj.children = item.children; // } // // meta // router_obj.meta = { // // 菜单名称 // title: item.name, // // 菜单图标 // icon: item.icon, // // 是否缓存页面 // keepAlive: item.keep === "1" ? true : false, // }; // // component // router_obj.component = shallowRef(require(`@/${item.component}`).default); // 添加至router数组 // router.push(router_obj); // }); // 树状格式化 // const tree_data = formatTree(router, "id", "parent_id", "children", 0); // 返回数据 // return tree_data; }; const state = { async_router: [], elem: "", user_type: "", }; const getters = { async_router: (state) => state.async_router, elem: (state) => state.elem, user_type: (state) => state.user_type, }; const mutations = { SET_ROUTER(state, value) { state.async_router = value; }, SET_ELEM(state, value) { state.elem = value; }, SET_USERTYPE(state, value) { state.user_type = value; }, }; const actions = { getRouterAction(context) { return new Promise((resolve, reject) => { GetPermission() .then((response) => { const data = response.result.menu; let menuData = data.filter(item => { return item.route === '1' }); // 格式化菜单数据生成路由 const menu = formatRouterMenu(menuData); // 存储路由 context.commit("SET_ROUTER", menu); // 存储元素权限 // context.commit("SET_ELEM", response.data.elem_data); // 更新用户类型 // context.commit("SET_USERTYPE", response.data.user); resolve(response); }) .catch((error) => { reject(error); }); }); }, }; export default { namespaced: true, state, getters, mutations, actions, };