deploy-ease-platform/frontend/src/pages/System/Menu/service.ts
dengqichen 226e9211d2 1
2024-12-19 15:22:32 +08:00

191 lines
6.2 KiB
TypeScript

import request from '@/utils/request';
import type { Page } from '@/types/base/page';
import type { MenuResponse, MenuRequest } from './types';
import { MenuTypeEnum } from './types';
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"
}
]
};
// 处理组件路径格式
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 = [dashboard, workflow, ...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}`);