diff --git a/src/api/studentTrainingAnswer.js b/src/api/studentTrainingAnswer.js
index 32b2708..b4dd6bc 100644
--- a/src/api/studentTrainingAnswer.js
+++ b/src/api/studentTrainingAnswer.js
@@ -1078,6 +1078,7 @@ export function checkProductDevelopmentProcessStepTwo(items) {
method: "post",
data: { items },
headers: { repeatSubmit: false },
+ skipErrorMessage: true,
});
}
@@ -1910,10 +1911,10 @@ export function checkCompetitiveEnvironmentAnalysisStepFour(payload) {
const value = payload || {}; const priorities = Array.isArray(value.priorities) ? value.priorities : [];
if (isStudentDemo()) {
const types = ["so", "wo", "st", "wt"]; const ranks = priorities.map((item) => Number(item?.priority));
- if (priorities.length !== types.length || types.some((type) => !priorities.some((item) => item?.strategyType === type)) || new Set(ranks).size !== 4 || ranks.some((rank) => ![1, 2, 3, 4].includes(rank)) || !String(value.overallEvaluation || "").trim() || priorities.some((item) => !String(item?.reason || "").trim()) || !String(value.coreRiskOne || "").trim() || !String(value.coreRiskTwo || "").trim() || !String(value.conclusion || "").trim()) return Promise.reject(new Error("请完整填写策略优先级、总体判断、风险点和总结结论"));
+ if (priorities.length !== types.length || types.some((type) => !priorities.some((item) => item?.strategyType === type)) || new Set(ranks).size !== 4 || ranks.some((rank) => ![1, 2, 3, 4].includes(rank)) || priorities.some((item) => !String(item?.reason || "").trim()) || !String(value.coreRiskOne || "").trim() || !String(value.coreRiskTwo || "").trim() || !String(value.conclusion || "").trim()) return Promise.reject(new Error("请完整填写策略优先级、至少 2 个核心风险点和总结 SWOT 竞争环境评估结论"));
return Promise.resolve({ code: 200, data: { valid: true, message: "校验通过" } });
}
- return request({ url: "/api/student-training-answers/competitive-environment-analysis/step-4/validate", method: "post", data: value, headers: { repeatSubmit: false } });
+ return request({ url: "/api/student-training-answers/competitive-environment-analysis/step-4/validate", method: "post", data: value, headers: { repeatSubmit: false }, skipErrorMessage: true });
}
const consumerScenarioJourneyOrder = ["problem-awareness", "information-search", "evaluation-decision", "purchase-conversion", "post-purchase"];
diff --git a/src/layout/components/AppMain.vue b/src/layout/components/AppMain.vue
index 626ffe9..9f10f75 100644
--- a/src/layout/components/AppMain.vue
+++ b/src/layout/components/AppMain.vue
@@ -14,7 +14,7 @@
Step 01
商业可行性论证需要从多个维度系统展开。请基于案例信息,完成项目、市场、用户、商业模式、成本收益和风险的论证。
+商业可行性论证需要从多个维度系统展开。以下提供了可行性分析的各个子模块,根据案例信息,完善填写以下信息。
结合前序 PEST、SWOT 分析,说明项目为何值得推进。
从不同消费能力和使用场景中识别最有价值的用户。
| 用户群体 | 典型场景 | 核心需求 | 消费能力 |
|---|---|---|---|
| 用户群体 | 典型场景 | 核心需求 | 消费能力 |
|---|---|---|---|
Step 04
结合前述 SWOT 分析,完成市场进入决策、策略优先级排序、风险识别与竞争环境总结。
+结合前述 SWOT 分析,完成策略优先级排序、风险识别与竞争环境总结。
请先完成并保存第 3 步的四类 SWOT 策略,再完成最终决策。
-请选择该产品进入目标市场的总体竞争判断:
策略内容由第 3 步填写的“具体策略建议”自动带入;请完成优先级排序并说明理由。
| 优先级排序 | 策略 | 理由 |
|---|---|---|
| {{ row.label }} {{ strategyForm[row.key].recommendation || '请先在第 3 步填写该策略建议' }} |
请至少指出 2 个风险点。
策略内容由第 3 步填写的“具体策略建议”自动带入;请完成优先级排序并说明理由。
| 优先级排序 | 策略 | 理由 |
|---|---|---|
| {{ row.label }} {{ strategyForm[row.key].recommendation || '请先在第 3 步填写该策略建议' }} |
请至少指出 2 个风险点。
第 {{ currentStep }} 步内容待配置
第 1 步 SWOT 分类已保存,可从上方步骤栏返回查看。