191 lines
6.2 KiB
TypeScript
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}`);
|