From 4954d3978cf1967729a5a2d5b90f6baef18974da Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期一, 23 三月 2026 09:35:10 +0800
Subject: [PATCH] #ai redis+页面优化

---
 rsf-admin/src/page/system/aiParam/AiParamList.jsx |   40 +++++++++++++++++++++++++++++++++++-----
 1 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/rsf-admin/src/page/system/aiParam/AiParamList.jsx b/rsf-admin/src/page/system/aiParam/AiParamList.jsx
index 2d854cf..c77de87 100644
--- a/rsf-admin/src/page/system/aiParam/AiParamList.jsx
+++ b/rsf-admin/src/page/system/aiParam/AiParamList.jsx
@@ -29,10 +29,12 @@
 import DeleteOutlineOutlinedIcon from "@mui/icons-material/DeleteOutlineOutlined";
 import EditOutlinedIcon from "@mui/icons-material/EditOutlined";
 import VisibilityOutlinedIcon from "@mui/icons-material/VisibilityOutlined";
+import CheckCircleOutlineRoundedIcon from "@mui/icons-material/CheckCircleOutlineRounded";
 import MyExportButton from "@/page/components/MyExportButton";
 import AiParamForm from "./AiParamForm";
 import AiConfigDialog from "../aiShared/AiConfigDialog";
 import AiRuntimeSummary from "../aiShared/AiRuntimeSummary";
+import { setAiParamDefault } from "@/api/ai/configCenter";
 
 const filters = [
     <SearchInput source="condition" alwaysOn />,
@@ -40,10 +42,10 @@
     <TextInput source="model" label="ai.param.fields.model" />,
     <SelectInput
         source="status"
-        label="common.field.status"
+        label="ai.param.fields.defaultStatus"
         choices={[
-            { id: "1", name: "common.enums.statusTrue" },
-            { id: "0", name: "common.enums.statusFalse" },
+            { id: "1", name: "ai.param.status.default" },
+            { id: "0", name: "ai.param.status.nonDefault" },
         ]}
     />,
 ];
@@ -64,7 +66,7 @@
     return value.length > max ? `${value.slice(0, max)}...` : value;
 };
 
-const AiParamCards = ({ onView, onEdit, onDelete, deleting }) => {
+const AiParamCards = ({ onView, onEdit, onDelete, onSetDefault, updatingDefaultId, deleting }) => {
     const translate = useTranslate();
     const { data, isLoading } = useListContext();
     const records = useMemo(() => (Array.isArray(data) ? data : []), [data]);
@@ -116,7 +118,7 @@
                                     <Chip
                                         size="small"
                                         color={record.statusBool ? "success" : "default"}
-                                        label={translate(record.statusBool ? "ai.common.enabled" : "ai.common.disabled")}
+                                        label={translate(record.statusBool ? "ai.param.status.default" : "ai.param.status.nonDefault")}
                                     />
                                 </Stack>
                                 <Stack direction="row" spacing={1} flexWrap="wrap" useFlexGap mt={1.5}>
@@ -164,6 +166,15 @@
                                     <Button size="small" startIcon={<EditOutlinedIcon />} onClick={() => onEdit(record.id)}>
                                         {translate("common.button.edit")}
                                     </Button>
+                                    <Button
+                                        size="small"
+                                        color={record.statusBool ? "success" : "primary"}
+                                        startIcon={<CheckCircleOutlineRoundedIcon />}
+                                        onClick={() => onSetDefault(record)}
+                                        disabled={deleting || updatingDefaultId === record.id || record.statusBool}
+                                    >
+                                        {translate(record.statusBool ? "ai.param.actions.currentDefault" : "ai.param.actions.setDefault")}
+                                    </Button>
                                 </Stack>
                                 <Button
                                     size="small"
@@ -189,6 +200,7 @@
     const refresh = useRefresh();
     const [deleteOne, { isPending: deleting }] = useDelete();
     const [dialogState, setDialogState] = useState({ open: false, mode: "create", recordId: null });
+    const [updatingDefaultId, setUpdatingDefaultId] = useState(null);
 
     const openDialog = (mode, recordId = null) => setDialogState({ open: true, mode, recordId });
     const closeDialog = () => setDialogState({ open: false, mode: "create", recordId: null });
@@ -210,6 +222,22 @@
                 },
             }
         );
+    };
+
+    const handleSetDefault = async (record) => {
+        if (!record?.id || record.statusBool) {
+            return;
+        }
+        setUpdatingDefaultId(record.id);
+        try {
+            await setAiParamDefault(record.id);
+            notify(translate("ai.param.actions.setDefaultSuccess"));
+            refresh();
+        } catch (error) {
+            notify(error?.message || translate("ai.param.actions.setDefaultFailed"), { type: "error" });
+        } finally {
+            setUpdatingDefaultId(null);
+        }
     };
 
     const dialogTitle = {
@@ -239,6 +267,8 @@
                     onView={(id) => openDialog("show", id)}
                     onEdit={(id) => openDialog("edit", id)}
                     onDelete={handleDelete}
+                    onSetDefault={handleSetDefault}
+                    updatingDefaultId={updatingDefaultId}
                     deleting={deleting}
                 />
             </List>

--
Gitblit v1.9.1