import { defHttp } from '/@/utils/http/axios'; import { getMenuListResultModel } from './model/menuModel'; import { useUserStore } from '/@/store/modules/user'; import { RoleEnum } from '/@/enums/roleEnum'; import menu from '/@/mock/menu.json' import menu_get_ids from '/@/mock/menu_get_ids.json' import tool from '/@/utils/Tool'; import { identity } from 'lodash-es'; import { session } from '/@/utils/Memory'; enum Api { BaseMenuUrl = '/menu', SaveStructure = '/user-center/department/editDepartment', DeleteStructure = "/user-center/department/deleteDepartment", GetMenuList = '/menu/me/menus', SysAdminMenuList = '/admin/me/menus', GetMenuIdsByRoleId = '/menu/get_ids/', GetChildDepartment = '/user-center/department/getChildDepartment', // GetMenuTreeData = "/base-center/menu/getMenuTreeData", GetMenuTreeData = "/base-center/newmenu/getMenuTreeData", DeleteMenuData = '/base-center/newmenu/deleteMenuData', DeleteMenuDataList = '/base-center/newmenu/deleteMenuDataList' } /** * 删除机构 * @param ids 删除id数组 */ export const DeleteStructure = (params) => { return new Promise((resolve, reject) => { defHttp.post({ url: Api.DeleteStructure, params: tool.objectToFormData(params) }).then((res) => { resolve(res.datas) }) }) } /** * @description: 新增机构 */ export const saveStructure = (params) => { return new Promise((resolve, reject) => { defHttp.post({ url: Api.SaveStructure, params: tool.objectToFormData(params) }) .then((res) => { resolve(res.datas) }) }) }; /** * @description: 获取机构列表 */ export const structureList = () => { return new Promise((resolve, reject) => { defHttp.post({ url: Api.GetChildDepartment }).then((res) => { var a = tool.structureTree([res.datas]); console.log(a) resolve(a) }) }) }; /** * @description: Get user menu based on id */ export const getMenuList = (args?: number) => { // const userStore = useUserStore(); // let url = Api.GetMenuList; // try { // if (userStore.getRoleList.find((v) => v == RoleEnum.SYS_ADMIN)) { // url = Api.SysAdminMenuList; // } // return new Promise((resolve, reject) => { // resolve(menu) // }) // } catch (e) { } try { return new Promise((resolve, reject) => { return defHttp.post({ url: Api.GetMenuTreeData, }).then(r => { session.setItem("menu_get_ids", menu_get_ids.concat(r.datas.map(i => i.id))) var o = buildTree(r.datas) resolve(o) }); }) } catch (e) { }; }; /** * @description: 获取新菜单列表 */ function buildTree(nodes, parentId = null) { let tree = []; for (let node of nodes) { if (node.parentid === parentId) { node.meta = JSON.parse(node.meta) node.children = buildTree(nodes, node.id); tree.push(node); } } return tree; } export const menuList = (args?: number) => { try { return new Promise((resolve, reject) => { return defHttp.post({ url: Api.GetMenuTreeData, }).then(r => { session.setItem("menu_get_ids", menu_get_ids.concat(r.datas.map(i => i.id))) var o = buildTree(r.datas) resolve(o) }); }) } catch (e) { }; } /** * @description: Get user menu based on id */ export const getMenuList2 = (args?: number) => { const userStore = useUserStore(); let url = Api.GetMenuList; try { if (userStore.getRoleList.find((v) => v == RoleEnum.SYS_ADMIN)) { url = Api.SysAdminMenuList; } return defHttp.get({ url, params: { needButton: args == 1 ? false : null, }, }); } catch (e) { } }; /** * @description: 按钮的单个删除和数组删除 */ export const delMenu = (menuIds: string[]) => { return defHttp.post({ url: Api.DeleteMenuDataList, data: menuIds.map(i => { return { id: i } }) }); }; export const getMenusIdsByRoleId = (roleId: string) => { const url = Api.GetMenuIdsByRoleId + roleId; // return defHttp.get>({ url }); return new Promise((resolve, reject) => { // resolve(menu_get_ids); resolve(session.getItem("menu_get_ids")) }) };