210 lines
7.1 KiB
TypeScript
210 lines
7.1 KiB
TypeScript
import request from '@/utils/request';
|
|
import type { MenuResponse, MenuRequest } from './types';
|
|
import { MenuTypeEnum } from './types';
|
|
import {Page} from "@/types/base";
|
|
|
|
const BASE_URL = '/api/v1/menu';
|
|
|
|
// 获取菜单列表(分页)
|
|
export const getMenus = (params?: any) =>
|
|
request.get<Page<MenuResponse>>(`${BASE_URL}/page`, { params });
|
|
|
|
// 获取菜单树
|
|
export const getMenuTree = () =>
|
|
request.get<MenuResponse[]>(`${BASE_URL}/tree`);
|
|
|
|
// 获取当前用户菜单
|
|
export const getCurrentUserMenus = async () => {
|
|
const menus = await request.get<MenuResponse[]>(`${BASE_URL}/current`);
|
|
console.log('Backend menus:', menus);
|
|
|
|
// // 添加首页路由
|
|
// const dashboard: MenuResponse = {
|
|
// id: 0,
|
|
// createTime: new Date().toISOString(),
|
|
// updateTime: new Date().toISOString(),
|
|
// version: 0,
|
|
// name: "首页",
|
|
// path: "/dashboard",
|
|
// component: "/Dashboard/index",
|
|
// icon: "dashboard",
|
|
// type: MenuTypeEnum.MENU,
|
|
// parentId: 0,
|
|
// sort: 0,
|
|
// hidden: false,
|
|
// enabled: true,
|
|
// createBy: "system",
|
|
// updateBy: "system"
|
|
// };
|
|
//
|
|
// // 添加工作流菜单
|
|
// const workflow: MenuResponse = {
|
|
// id: -2,
|
|
// createTime: new Date().toISOString(),
|
|
// updateTime: new Date().toISOString(),
|
|
// version: 0,
|
|
// name: "工作流管理",
|
|
// path: "/workflow",
|
|
// icon: "apartment",
|
|
// type: MenuTypeEnum.DIRECTORY,
|
|
// parentId: 0,
|
|
// sort: 2,
|
|
// hidden: false,
|
|
// enabled: true,
|
|
// createBy: "system",
|
|
// updateBy: "system",
|
|
// children: [
|
|
// {
|
|
// id: -21,
|
|
// createTime: new Date().toISOString(),
|
|
// updateTime: new Date().toISOString(),
|
|
// version: 0,
|
|
// name: "流程定义",
|
|
// path: "/workflow/definition",
|
|
// component: "/pages/Workflow/Definition/index",
|
|
// icon: "apartment",
|
|
// type: MenuTypeEnum.MENU,
|
|
// parentId: -2,
|
|
// sort: 0,
|
|
// hidden: false,
|
|
// enabled: true,
|
|
// createBy: "system",
|
|
// updateBy: "system"
|
|
// },
|
|
// {
|
|
// id: 1000,
|
|
// createTime: new Date().toISOString(),
|
|
// updateTime: new Date().toISOString(),
|
|
// version: 0,
|
|
// name: "流程实例",
|
|
// path: "/workflow/instance",
|
|
// component: "/Workflow/Instance/index",
|
|
// icon: "instance",
|
|
// type: MenuTypeEnum.DIRECTORY,
|
|
// parentId: -2,
|
|
// sort: 1,
|
|
// hidden: false,
|
|
// enabled: true,
|
|
// createBy: "system",
|
|
// updateBy: "system",
|
|
// children: [
|
|
// {
|
|
// id: 1001,
|
|
// createTime: new Date().toISOString(),
|
|
// updateTime: new Date().toISOString(),
|
|
// version: 0,
|
|
// name: "工作流实例",
|
|
// path: "/workflow/instance",
|
|
// component: "/Workflow/Instance/index",
|
|
// icon: "instance",
|
|
// type: MenuTypeEnum.MENU,
|
|
// parentId: 1000,
|
|
// sort: 1,
|
|
// hidden: false
|
|
// },
|
|
// {
|
|
// id: 1002,
|
|
// createTime: new Date().toISOString(),
|
|
// updateTime: new Date().toISOString(),
|
|
// version: 0,
|
|
// name: "节点设计",
|
|
// path: "/workflow/node-design",
|
|
// component: "/Workflow/NodeDesign/index",
|
|
// icon: "node-design",
|
|
// type: MenuTypeEnum.MENU,
|
|
// parentId: 1000,
|
|
// sort: 2,
|
|
// hidden: false
|
|
// }
|
|
// ]
|
|
// },
|
|
// {
|
|
// id: -23,
|
|
// createTime: new Date().toISOString(),
|
|
// updateTime: new Date().toISOString(),
|
|
// version: 0,
|
|
// name: "流程监控",
|
|
// path: "/workflow/monitor",
|
|
// component: "/pages/Workflow/Monitor/index",
|
|
// icon: "dashboard",
|
|
// type: MenuTypeEnum.MENU,
|
|
// parentId: -2,
|
|
// sort: 2,
|
|
// hidden: false,
|
|
// enabled: true,
|
|
// createBy: "system",
|
|
// updateBy: "system"
|
|
// },
|
|
// {
|
|
// id: -24,
|
|
// createTime: new Date().toISOString(),
|
|
// updateTime: new Date().toISOString(),
|
|
// version: 0,
|
|
// name: "日志流",
|
|
// path: "/workflow/log-stream/:processInstanceId",
|
|
// component: "/pages/LogStream/index",
|
|
// icon: "file-text",
|
|
// type: MenuTypeEnum.MENU,
|
|
// parentId: -2,
|
|
// sort: 3,
|
|
// hidden: false,
|
|
// enabled: true,
|
|
// createBy: "system",
|
|
// updateBy: "system"
|
|
// }
|
|
// ]
|
|
// };
|
|
|
|
// 添加X6测试菜单
|
|
// const x6Test: MenuResponse = {
|
|
// id: -1,
|
|
// createTime: new Date().toISOString(),
|
|
// updateTime: new Date().toISOString(),
|
|
// version: 0,
|
|
// name: "X6测试",
|
|
// path: "/x6-test",
|
|
// component: "/X6Test/index",
|
|
// icon: "experiment",
|
|
// type: MenuTypeEnum.MENU,
|
|
// parentId: 0,
|
|
// sort: 1,
|
|
// hidden: false,
|
|
// enabled: true,
|
|
// createBy: "system",
|
|
// updateBy: "system"
|
|
// };
|
|
|
|
// 处理组件路径格式
|
|
const processMenu = (menu: MenuResponse): MenuResponse => {
|
|
const processed = { ...menu };
|
|
|
|
// 确保组件路径格式正确
|
|
if (processed.component && !processed.component.startsWith('/')) {
|
|
processed.component = `/${processed.component}`;
|
|
}
|
|
|
|
// 递归处理子菜单
|
|
if (processed.children) {
|
|
processed.children = processed.children.map(processMenu);
|
|
}
|
|
|
|
return processed;
|
|
};
|
|
|
|
const processedMenus = menus.map(processMenu);
|
|
const allMenus = [ ...processedMenus];
|
|
console.log('All menus:', allMenus);
|
|
return allMenus;
|
|
};
|
|
|
|
// 创建菜单
|
|
export const createMenu = (data: MenuRequest) =>
|
|
request.post<MenuResponse>(BASE_URL, data);
|
|
|
|
// 更新菜单
|
|
export const updateMenu = (id: number, data: MenuRequest) =>
|
|
request.put<MenuResponse>(`${BASE_URL}/${id}`, data);
|
|
|
|
// 删除菜单
|
|
export const deleteMenu = (id: number) =>
|
|
request.delete(`${BASE_URL}/${id}`);
|