From 10147d5f5c6dedc2f3a9c413e8cc2746daa1b190 Mon Sep 17 00:00:00 2001 From: chenyuan Date: Tue, 11 Aug 2026 18:45:35 +0800 Subject: [PATCH] feat: add consumer behavior kano needs --- src/api/studentTrainingAnswer.js | 19 +++ src/views/demand/consumer-behavior.vue | 193 ++++++++++++++++++++++--- 2 files changed, 193 insertions(+), 19 deletions(-) diff --git a/src/api/studentTrainingAnswer.js b/src/api/studentTrainingAnswer.js index f36edbc..4cfd190 100644 --- a/src/api/studentTrainingAnswer.js +++ b/src/api/studentTrainingAnswer.js @@ -352,3 +352,22 @@ export function checkConsumerBehaviorStepOne(payload) { headers: { repeatSubmit: false }, }); } + +export function checkConsumerBehaviorStepTwo(payload) { + const needs = Array.isArray(payload?.needs) ? payload.needs : []; + const allowedTypes = ["基本型", "期望型", "兴奋型", "无差异型", "反向型"]; + if (isStudentDemo()) { + const incomplete = needs.find((item) => !String(item?.feature || "").trim() + || !allowedTypes.includes(item?.kanoType) || !String(item?.featureDirection || "").trim()); + if (!needs.length || needs.length > 20 || incomplete) { + return Promise.reject(new Error("请完整填写功能、KANO类型和对应功能方向(最多20行)")); + } + return Promise.resolve({ code: 200, data: { valid: true, message: "校验通过" } }); + } + return request({ + url: "/api/student-training-answers/consumer-behavior/step-2/validate", + method: "post", + data: { needs }, + headers: { repeatSubmit: false }, + }); +} diff --git a/src/views/demand/consumer-behavior.vue b/src/views/demand/consumer-behavior.vue index f43c55a..2872909 100644 --- a/src/views/demand/consumer-behavior.vue +++ b/src/views/demand/consumer-behavior.vue @@ -90,21 +90,40 @@
-

假如本次调研共回收有效问卷 500 份,以下是各题目的数据统计结果:

-
-
{{ surveyStats }}
-
-

请把数据整理到 Excel 中,并上传 Excel 文件。

-
- - - 上传Excel文件 - -
- - {{ form.dataExcelFileName }} +
+

+ 在正式设计问卷之前,需要理解消费者需求的层次结构。不同类型的需求对购买决策的影响方式截然不同。结合案例资料,通过 KANO 模型进行用户需求分类,填写下表。 +

+
+ 增加一行 + 删除一行
+
+ + + + + + + + + + + + +
编号功能对应KANO类型对应功能方向
{{ index + 1 }}