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 @@ - +
正在加载当前实训配置 diff --git a/src/router/index.js b/src/router/index.js index b8d5ce5..2871e53 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -288,7 +288,7 @@ export const dynamicRoutes = [ path: "index", component: () => import("@/views/product/market-opportunity-selection.vue"), name: "product", - meta: { title: "市场机会识别与选品", icon: "产品规划", affix: true, pageKey: "market-opportunity-selection" }, + meta: { title: "市场机会识别与选品", icon: "产品规划", affix: true, pageKey: "market-opportunity-selection", hideSupplementSteps: true }, }, // 产品定价 { diff --git a/src/utils/request.js b/src/utils/request.js index ea9b111..09fc5be 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -99,9 +99,10 @@ service.interceptors.response.use( return Promise.resolve(res.data); } }, - (error) => { - console.log("err" + error); - let { message } = error; + (error) => { + console.log("err" + error); + let { message } = error; + const serverMessage = String(error?.response?.data?.msg || "").trim(); if (message == "Network Error") { message = "后端接口连接异常"; } else if (message.includes("timeout")) { @@ -120,10 +121,13 @@ service.interceptors.response.use( .catch(() => { isRelogin.show = false; }); - } else if (message.includes("code 400")) { - // ElNotification.error({ title: error.response.data }) - ElMessage({ message: error.response.data.msg, type: "error" }); - } + } else if (message.includes("code 400")) { + if (!error.config?.skipErrorMessage) { + ElMessage({ message: serverMessage || "请求参数不符合要求", type: "error" }); + } else { + error.message = serverMessage || "请求参数不符合要求"; + } + } message = "系统接口" + message.substr(message.length - 3) + "异常"; } // ElMessage({ message: message, type: 'error', duration: 5 * 1000 }) diff --git a/src/views/demand/business-feasibility.vue b/src/views/demand/business-feasibility.vue index e4036b2..6e8e25f 100644 --- a/src/views/demand/business-feasibility.vue +++ b/src/views/demand/business-feasibility.vue @@ -24,7 +24,7 @@

Step 01

商业可行性论证

结构化论证
-

商业可行性论证需要从多个维度系统展开。请基于案例信息,完成项目、市场、用户、商业模式、成本收益和风险的论证。

+

商业可行性论证需要从多个维度系统展开。以下提供了可行性分析的各个子模块,根据案例信息,完善填写以下信息。

01

项目概述

结合前序 PEST、SWOT 分析,说明项目为何值得推进。

@@ -42,7 +42,7 @@
03

目标用户群体分析

从不同消费能力和使用场景中识别最有价值的用户。

-
用户群体典型场景核心需求消费能力