feat(KnowledgeItemEditor): 添加文件上传替换功能的加载状态

- 添加 loading 状态用于控制文件上传和替换操作
- 在文件上传前设置 loading 状态为 true
- 在文件替换前设置 loading 状态为 true
- 在操作完成后通过 finally 块重置 loading 状态
- 将 loading 状态绑定到确认按钮的 confirmLoading 属性
This commit is contained in:
2026-02-01 23:07:10 +08:00
parent 05088fef1a
commit d24fea83d8

View File

@@ -31,6 +31,7 @@ export default function KnowledgeItemEditor({
}) { }) {
const [fileList, setFileList] = useState<UploadFile[]>([]); const [fileList, setFileList] = useState<UploadFile[]>([]);
const [replaceFileList, setReplaceFileList] = useState<UploadFile[]>([]); const [replaceFileList, setReplaceFileList] = useState<UploadFile[]>([]);
const [loading, setLoading] = useState(false);
const isFileItem = const isFileItem =
data?.contentType === KnowledgeContentType.FILE || data?.contentType === KnowledgeContentType.FILE ||
data?.sourceType === KnowledgeSourceType.FILE_UPLOAD; data?.sourceType === KnowledgeSourceType.FILE_UPLOAD;
@@ -97,6 +98,7 @@ export default function KnowledgeItemEditor({
message.warning("请先选择文件"); message.warning("请先选择文件");
return; return;
} }
setLoading(true);
const formData = new FormData(); const formData = new FormData();
fileList.forEach((file) => { fileList.forEach((file) => {
const origin = file.originFileObj as File | undefined; const origin = file.originFileObj as File | undefined;
@@ -126,6 +128,7 @@ export default function KnowledgeItemEditor({
message.warning("请先选择要替换的文件"); message.warning("请先选择要替换的文件");
return; return;
} }
setLoading(true);
const formData = new FormData(); const formData = new FormData();
formData.append("file", replaceFile); formData.append("file", replaceFile);
await replaceKnowledgeItemFileUsingPut(setId, data.id, formData); await replaceKnowledgeItemFileUsingPut(setId, data.id, formData);
@@ -137,6 +140,8 @@ export default function KnowledgeItemEditor({
onSuccess(); onSuccess();
} catch { } catch {
message.error("操作失败,请重试"); message.error("操作失败,请重试");
} finally {
setLoading(false);
} }
}; };
@@ -153,6 +158,7 @@ export default function KnowledgeItemEditor({
width={860} width={860}
maskClosable={false} maskClosable={false}
okButtonProps={{ disabled: readOnly }} okButtonProps={{ disabled: readOnly }}
confirmLoading={loading}
> >
<Form layout="vertical" disabled={readOnly}> <Form layout="vertical" disabled={readOnly}>
{isCreateMode && ( {isCreateMode && (