From e269a40d1466e75b15ac03260e5f6a9d8d141bb4 Mon Sep 17 00:00:00 2001 From: JiaoTianBo Date: Mon, 30 Mar 2026 16:04:33 +0800 Subject: [PATCH] =?UTF-8?q?fix(api):=20=E4=BF=AE=E5=A4=8D=E9=A3=8E?= =?UTF-8?q?=E9=99=A9=E8=AF=84=E4=BC=B0=E6=8E=A5=E5=8F=A3=E5=8F=82=E6=95=B0?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=8F=8A=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 submitRiskAssessment 函数的 projectId 参数类型从 number 改为 number|string,支持字符串ID - 调整调用处传参,避免项目ID精度丢失,改为传递字符串类型 - 优化风险评估完成通知,消息内容改为更通用提示 - 增加状态变化日志输出,方便调试风险评估状态 - 修改状态重置流程,评估完成后延迟2秒重置状态,提升用户体验 - 保持错误状态处理不变,确保通知正常显示 --- src/api/risk-workorder.ts | 2 +- src/store/modules/sse.ts | 7 +++--- src/views/risk-assessment/index.vue | 35 +++++++++++++++++++---------- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/src/api/risk-workorder.ts b/src/api/risk-workorder.ts index a08d099..1e95490 100644 --- a/src/api/risk-workorder.ts +++ b/src/api/risk-workorder.ts @@ -426,7 +426,7 @@ export type RiskTaskStats = { }; /** 提交异步风险评估任务 */ -export const submitRiskAssessment = (projectId: number) => { +export const submitRiskAssessment = (projectId: number | string) => { return http.request>( "post", `/api/v1/risk/sse/assess/${projectId}` diff --git a/src/store/modules/sse.ts b/src/store/modules/sse.ts index 3be5804..fa6befc 100644 --- a/src/store/modules/sse.ts +++ b/src/store/modules/sse.ts @@ -149,12 +149,13 @@ export const useSseStore = defineStore("sse", () => { riskAssessTask.value = data; riskAssessProgress.value = 100; riskAssessStatus.value = "completed"; - console.log("SSE Store: 风险评估完成", data.result); + console.log("SSE Store: 风险评估完成,完整数据:", data); + console.log("SSE Store: result 结构:", data.result); - // 发送通知 + // 发送通知 - 使用更通用的消息 ElNotification({ title: "风险评估完成", - message: `项目风险评估已完成,已识别 ${data.result?.identifiedRisks?.length || 0} 个风险。`, + message: "项目风险评估已完成,请查看风险列表。", type: "success", duration: 5000, position: "top-right" diff --git a/src/views/risk-assessment/index.vue b/src/views/risk-assessment/index.vue index 7595b17..d457fc2 100644 --- a/src/views/risk-assessment/index.vue +++ b/src/views/risk-assessment/index.vue @@ -85,17 +85,27 @@ const isAssessing = computed( ); // 监听风险评估完成 -watch(riskAssessStatus, newStatus => { - if (newStatus === "completed") { - message("风险评估完成!", { type: "success" }); - loadRiskList(); - loadStatistics(); - sseStore.resetRiskAssessStatus(); - } else if (newStatus === "error") { - message(riskAssessErrorMessage.value || "风险评估失败", { type: "error" }); - sseStore.resetRiskAssessStatus(); - } -}); +watch( + () => sseStore.riskAssessStatus, + newStatus => { + console.log("风险状态变化:", newStatus); + if (newStatus === "completed") { + message("风险评估完成!", { type: "success" }); + loadRiskList(); + loadStatistics(); + // 延迟重置状态,让用户看到完成效果 + setTimeout(() => { + sseStore.resetRiskAssessStatus(); + }, 2000); + } else if (newStatus === "error") { + message(riskAssessErrorMessage.value || "风险评估失败", { + type: "error" + }); + sseStore.resetRiskAssessStatus(); + } + }, + { immediate: false } +); // 分页 const pagination = ref({ @@ -516,7 +526,8 @@ async function handleCreate() { } try { - const res = await submitRiskAssessment(Number(queryParams.value.projectId)); + // 直接传递字符串ID,避免精度丢失 + const res = await submitRiskAssessment(String(queryParams.value.projectId)); console.log("风险评估API响应:", res); console.log("res.data:", res.data); const responseData = res.data as any;