From d8b861bb684700ecb53d55a56fab9509939b8fb3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E9=99=88=E6=B2=85?= <907037276@qq.com>
Date: Fri, 28 Aug 2026 12:37:56 +0800
Subject: [PATCH] =?UTF-8?q?fix:=20=E5=AE=8C=E5=96=84=E5=AD=A6=E7=94=9F?=
=?UTF-8?q?=E5=AE=9E=E8=AE=AD=E6=A0=A1=E9=AA=8C=E4=B8=8E=E6=9D=83=E9=87=8D?=
=?UTF-8?q?=E6=81=A2=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/studentTrainingAnswer.js | 5 ++-
src/layout/components/AppMain.vue | 2 +-
src/router/index.js | 2 +-
src/utils/request.js | 18 +++++---
src/views/demand/business-feasibility.vue | 20 ++++++---
.../competitive-environment-analysis.vue | 14 +++---
.../product/market-opportunity-selection.vue | 43 ++++++++++++++++---
...business-feasibility-step1.static.test.cjs | 30 +++++++++++++
...nment-analysis-step4-error.static.test.cjs | 16 +++++++
...tunity-reset-and-navigator.static.test.cjs | 18 ++++++++
.../market-opportunity-step2.static.test.cjs | 15 +++++--
...t-process-step2-validation.static.test.cjs | 7 +++
12 files changed, 155 insertions(+), 35 deletions(-)
create mode 100644 tests/business-feasibility-step1.static.test.cjs
create mode 100644 tests/competitive-environment-analysis-step4-error.static.test.cjs
create mode 100644 tests/market-opportunity-reset-and-navigator.static.test.cjs
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 分类已保存,可从上方步骤栏返回查看。