deploy-ease-platform/frontend/src/pages/System/Menu/service.ts
2024-12-26 20:44:12 +08:00

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}`);