From e6e0707b5902b7088d9419c4d9bd9aad470dfa13 Mon Sep 17 00:00:00 2001 From: chenyuan Date: Tue, 11 Aug 2026 23:46:07 +0800 Subject: [PATCH 1/4] feat: refine product value positioning step one --- src/api/studentTrainingAnswer.js | 24 ++++ src/views/product/differentiation.vue | 179 +++++++++++++++++++++++--- 2 files changed, 183 insertions(+), 20 deletions(-) diff --git a/src/api/studentTrainingAnswer.js b/src/api/studentTrainingAnswer.js index 422d013..05a30c0 100644 --- a/src/api/studentTrainingAnswer.js +++ b/src/api/studentTrainingAnswer.js @@ -423,3 +423,27 @@ export function checkConsumerBehaviorStepFour(payload) { headers: { repeatSubmit: false }, }); } + +export function checkProductValuePositioningStepOne(payload) { + const rows = Array.isArray(payload?.rows) ? payload.rows : []; + const types = ["核心痛点1", "核心痛点2", "核心痛点3", "弱需求", "伪需求"]; + if (isStudentDemo()) { + const valid = rows.length === types.length && rows.every((row, index) => row?.id === index + 1 + && row?.type === types[index] + && Boolean(String(row?.description || "").trim()) + && Boolean(String(row?.scene || "").trim())); + return Promise.resolve({ + code: 200, + data: { + valid, + message: valid ? "核心痛点分类填写完整。" : "请完成 3 个核心痛点、弱需求和伪需求的描述与场景。", + }, + }); + } + return request({ + url: "/api/student-training-answers/product-value-positioning/step-1/validate", + method: "post", + data: { rows }, + headers: { repeatSubmit: false }, + }); +} diff --git a/src/views/product/differentiation.vue b/src/views/product/differentiation.vue index 1d5e0d7..5d1b690 100644 --- a/src/views/product/differentiation.vue +++ b/src/views/product/differentiation.vue @@ -48,20 +48,31 @@

{{ activeStepName }}

-
-