From d9f084908ac2a4e966b1f3b9347c3ecb70d7bca1 Mon Sep 17 00:00:00 2001 From: dengqichen Date: Mon, 10 Nov 2025 17:55:05 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84=E5=89=8D=E7=AB=AF=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/pages/System/Role/List/service.ts | 9 +- .../src/pages/System/User/List/service.ts | 2 +- .../Instance/List/components/DetailModal.tsx | 84 ++++++++----------- .../Instance/List/components/HistoryModal.tsx | 48 ++++++----- 4 files changed, 68 insertions(+), 75 deletions(-) diff --git a/frontend/src/pages/System/Role/List/service.ts b/frontend/src/pages/System/Role/List/service.ts index 9957dd65..40ad44f4 100644 --- a/frontend/src/pages/System/Role/List/service.ts +++ b/frontend/src/pages/System/Role/List/service.ts @@ -3,8 +3,9 @@ import type {RoleResponse, RoleRequest, RoleQuery, RoleTagResponse, RoleTagReque import {Page} from "@/types/base.ts"; const BASE_URL = '/api/v1/role'; - -const ROLE_TAG_BASE_URL = '/api/v1/role-tag' +const ROLE_TAG_BASE_URL = '/api/v1/role-tag'; +const PERMISSION_BASE_URL = '/api/v1/permission'; +const MENU_BASE_URL = '/api/v1/menu'; // 获取角色列表(分页) export const getRoleList = (params?: RoleQuery) => request.get>(`${BASE_URL}/page`, {params}); @@ -37,7 +38,7 @@ export const getRolePermissions = (roleId: number) => request.get(`${B export const assignPermissions = (roleId: number, permissionIds: Number[]) => request.post(`${BASE_URL}/${roleId}/permissions`, permissionIds); // 获取所有权限列表 -export const getAllPermissions = () => request.get('/api/v1/permission/list'); +export const getAllPermissions = () => request.get(`${PERMISSION_BASE_URL}/list`); // 获取权限树 -export const getPermissionTree = () => request.get('/api/v1/role/permission-tree'); \ No newline at end of file +export const getPermissionTree = () => request.get(`${MENU_BASE_URL}/permission-tree`); \ No newline at end of file diff --git a/frontend/src/pages/System/User/List/service.ts b/frontend/src/pages/System/User/List/service.ts index c41ab578..aa3524e5 100644 --- a/frontend/src/pages/System/User/List/service.ts +++ b/frontend/src/pages/System/User/List/service.ts @@ -27,7 +27,7 @@ export const resetPassword = (id: number, password: string) => // 分配角色 export const assignRoles = (userId: number, roleIds: number[]) => - request.post(`${ROLE_BASE_URL}/${userId}/assignRoles`, roleIds); + request.post(`${BASE_URL}/${userId}/roles`, roleIds); // 获取所有角色列表(不分页) export const getAllRoles = () => diff --git a/frontend/src/pages/Workflow/Instance/List/components/DetailModal.tsx b/frontend/src/pages/Workflow/Instance/List/components/DetailModal.tsx index 533bfde0..454e507d 100644 --- a/frontend/src/pages/Workflow/Instance/List/components/DetailModal.tsx +++ b/frontend/src/pages/Workflow/Instance/List/components/DetailModal.tsx @@ -1,10 +1,9 @@ import React from 'react'; -import { Dialog, DialogPortal, DialogOverlay, DialogHeader, DialogTitle } from '@/components/ui/dialog'; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/ui/tabs'; import { Badge } from '@/components/ui/badge'; -import * as DialogPrimitive from "@radix-ui/react-dialog"; -import { X } from "lucide-react"; -import { cn } from "@/lib/utils"; +import { Activity, Clock, FileText } from 'lucide-react'; +import { cn } from '@/lib/utils'; import { WorkflowHistoricalInstance } from '../types'; import { NodeType } from '../../../Design/nodes/types'; import FlowGraphTab from './tabs/FlowGraphTab'; @@ -81,52 +80,37 @@ const DetailModal: React.FC = ({ visible, onCancel, instanceDa return ( !open && onCancel()}> - - - - - - Close - - - - - 流程执行详情 - - - - - - - 📊 流程图 + + + +
+ 流程执行详情 + {getStatusBadge(instanceData.status)} +
+
+ 实例ID: {instanceData.processInstanceId} +
+
+
+ +
+ + + + + 流程图 - - ⏱️ 执行时间线 + + + 执行时间线 - - 📋 详细信息 + + + 详细信息 - {/* 流程图标签页 */} - + = ({ visible, onCancel, instanceDa /> - {/* 执行时间线标签页 */} - + = ({ visible, onCancel, instanceDa /> - {/* 详细信息标签页 */} - + - - +
+
); }; diff --git a/frontend/src/pages/Workflow/Instance/List/components/HistoryModal.tsx b/frontend/src/pages/Workflow/Instance/List/components/HistoryModal.tsx index a697f9ae..851a17e6 100644 --- a/frontend/src/pages/Workflow/Instance/List/components/HistoryModal.tsx +++ b/frontend/src/pages/Workflow/Instance/List/components/HistoryModal.tsx @@ -1,9 +1,10 @@ import React, { useState, useEffect } from 'react'; -import { Dialog, DialogContent, DialogHeader, DialogBody, DialogTitle } from '@/components/ui/dialog'; +import { Dialog, DialogContent, DialogHeader, DialogTitle } from '@/components/ui/dialog'; import { Table, TableHeader, TableBody, TableHead, TableRow, TableCell } from '@/components/ui/table'; import { Badge } from '@/components/ui/badge'; import { Button } from '@/components/ui/button'; import { DataTablePagination } from '@/components/ui/pagination'; +import { Loader2, History } from 'lucide-react'; import { WorkflowHistoricalInstance } from '../types'; import { getHistoricalInstances } from '../service'; import DetailModal from './DetailModal'; @@ -73,19 +74,27 @@ const HistoryModal: React.FC = ({ visible, onCancel, workflow return ( <> !open && onCancel()}> - - - 历史执行记录 + + + +
+ + 历史执行记录 +
+
+ 共 {total} 条记录 +
+
- -
+
{loading ? ( -
-
加载中...
+
+ +
加载中...
) : data.length === 0 ? ( -
+
暂无数据
) : ( @@ -125,20 +134,21 @@ const HistoryModal: React.FC = ({ visible, onCancel, workflow {/* 分页器 */} {pageCount > 1 && ( - setQuery(prev => ({ - ...prev, - pageNum: page - 1 - }))} - /> +
+ setQuery(prev => ({ + ...prev, + pageNum: page - 1 + }))} + /> +
)} )}
-