From 8613cf70cc59034f27263b14b7d4feaf5385d264 Mon Sep 17 00:00:00 2001 From: chenyuan Date: Fri, 7 Aug 2026 12:42:17 +0800 Subject: [PATCH] feat: add new product survey step three --- src/api/studentTrainingAnswer.js | 36 +++++ src/views/foundation/new-product-survey.vue | 153 +++++++++++++----- ...ew-product-survey-step-one.static.test.cjs | 5 + 3 files changed, 151 insertions(+), 43 deletions(-) diff --git a/src/api/studentTrainingAnswer.js b/src/api/studentTrainingAnswer.js index 311f1ed..d0fce08 100644 --- a/src/api/studentTrainingAnswer.js +++ b/src/api/studentTrainingAnswer.js @@ -134,3 +134,39 @@ export function checkNewProductSurveyStepTwo(form) { headers: { repeatSubmit: false }, }); } + +function validateNewProductSurveyStepThreeDemo(payload) { + const expectedDimensions = ["核心层", "有形层", "延伸层"]; + const rows = Array.isArray(payload?.rows) ? payload.rows : []; + if (rows.length !== expectedDimensions.length) { + throw new Error("请完成核心层、有形层、延伸层分析"); + } + const dimensions = rows.map((row) => String(row?.dimension || "").trim()); + if (new Set(dimensions).size !== expectedDimensions.length || expectedDimensions.some((dimension) => !dimensions.includes(dimension))) { + throw new Error("分析维度不完整或重复"); + } + const invalidRow = rows.find((row) => { + const points = Array.isArray(row?.points) ? row.points : []; + return points.map((point) => String(point || "").trim()).filter(Boolean).length < 2; + }); + if (invalidRow) { + throw new Error(`${invalidRow.dimension || "该层"}至少填写 2 条分析要点`); + } + return { valid: true, message: "校验通过" }; +} + +export function checkNewProductSurveyStepThree(payload) { + if (isStudentDemo()) { + try { + return Promise.resolve({ code: 200, data: validateNewProductSurveyStepThreeDemo(payload) }); + } catch (error) { + return Promise.reject(error); + } + } + return request({ + url: "/api/student-training-answers/new-product-survey/step-3/validate", + method: "post", + data: payload, + headers: { repeatSubmit: false }, + }); +} diff --git a/src/views/foundation/new-product-survey.vue b/src/views/foundation/new-product-survey.vue index aa52aa4..774d2b0 100644 --- a/src/views/foundation/new-product-survey.vue +++ b/src/views/foundation/new-product-survey.vue @@ -154,10 +154,10 @@

Step 03

{{ getStepName(3) }}

- 产品1 / 产品2 / 产品3 + 三层次对照分析

- 根据查找的产品,从核心层、有形层、延伸层开展三层次分析,对比不同产品如何创造用户价值。 + 基于上一步采集的真实数据,运用“三层次理论”进行深度分析,参考示例填写下表;每层至少填写 2 条要点并按换行分条。

@@ -165,21 +165,22 @@ 分析维度 - 内容要求 实例:AI学习机 - 产品1 - 产品2 - 产品3 + {{ step2Form.productName || '所选产品' }}分析 - {{ row.dimension }} - {{ row.requirement }} - {{ row.example }} -