feat: 1. 完善交叉评查上传创建任务,改成动态加载文档类型。

2. 重新对齐交叉评查的接口。
This commit is contained in:
2025-12-02 10:10:03 +08:00
parent c9e0d5abba
commit 88466b7a8b
21 changed files with 561 additions and 174 deletions
+16 -4
View File
@@ -857,6 +857,9 @@ export default function RolePermissions() {
// 存储每个路由的 permissionsrouteId -> permissions[]
const [routePermissionsMap, setRoutePermissionsMap] = useState<Map<number, ApiPermission[]>>(new Map());
// 保存权限的 loading 状态
const [savingPermissions, setSavingPermissions] = useState(false);
// 加载初始数据
useEffect(() => {
loadData();
@@ -1130,7 +1133,7 @@ export default function RolePermissions() {
};
// v3.0: 获取HTTP方法对应的标签样式
const getMethodTagStyle = (method: string): React.CSSProperties => {
const getMethodTagStyle = (method: string | null | undefined): React.CSSProperties => {
const styles: Record<string, React.CSSProperties> = {
'GET': { backgroundColor: '#e6f7ed', color: '#52c41a', border: '1px solid #b7eb8f' },
'POST': { backgroundColor: '#e6f0ff', color: '#1890ff', border: '1px solid #91caff' },
@@ -1138,6 +1141,12 @@ export default function RolePermissions() {
'DELETE': { backgroundColor: '#fff1f0', color: '#f5222d', border: '1px solid #ffa39e' },
'PATCH': { backgroundColor: '#f0f5ff', color: '#722ed1', border: '1px solid #d3adf7' }
};
// 空值检查:如果 method 为 null 或 undefined,返回默认样式
if (!method) {
return { backgroundColor: '#f5f5f5', color: '#666', border: '1px solid #d9d9d9' };
}
return styles[method.toUpperCase()] || { backgroundColor: '#f5f5f5', color: '#666', border: '1px solid #d9d9d9' };
};
@@ -1251,6 +1260,7 @@ export default function RolePermissions() {
return;
}
setSavingPermissions(true);
try {
// 1. 保存路由权限
const routeResult = await updateRoleRoutePermissions(selectedRole.id, selectedRouteIds);
@@ -1284,6 +1294,8 @@ export default function RolePermissions() {
} catch (error) {
console.error("保存权限失败:", error);
toastService.error("保存权限失败");
} finally {
setSavingPermissions(false);
}
};
@@ -1593,11 +1605,11 @@ export default function RolePermissions() {
<h3> "{selectedRole.role_name}" </h3>
<Button
type="primary"
icon="ri-save-line"
icon={savingPermissions ? "ri-loader-4-line spin" : "ri-save-line"}
onClick={handleSavePermissions}
disabled={!isProvincialAdmin}
disabled={!isProvincialAdmin || savingPermissions}
>
{savingPermissions ? '保存中...' : '保存权限'}
</Button>
</div>