| | |
| | | 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 />, |
| | |
| | | <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" }, |
| | | ]} |
| | | />, |
| | | ]; |
| | |
| | | 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]); |
| | |
| | | <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}> |
| | |
| | | <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" |
| | |
| | | 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 }); |
| | |
| | | }, |
| | | } |
| | | ); |
| | | }; |
| | | |
| | | 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 = { |
| | |
| | | onView={(id) => openDialog("show", id)} |
| | | onEdit={(id) => openDialog("edit", id)} |
| | | onDelete={handleDelete} |
| | | onSetDefault={handleSetDefault} |
| | | updatingDefaultId={updatingDefaultId} |
| | | deleting={deleting} |
| | | /> |
| | | </List> |