From bead15769fc56de52ce4516fdd57430658301f46 Mon Sep 17 00:00:00 2001 From: chenyuan Date: Fri, 7 Aug 2026 14:25:01 +0800 Subject: [PATCH] feat: add product factors step one analysis --- src/api/studentTrainingAnswer.js | 36 +++ .../product-development-factors.vue | 291 ++++++++---------- ...velopment-factors-step-one.static.test.cjs | 23 ++ 3 files changed, 185 insertions(+), 165 deletions(-) create mode 100644 tests/product-development-factors-step-one.static.test.cjs diff --git a/src/api/studentTrainingAnswer.js b/src/api/studentTrainingAnswer.js index 8477691..9531765 100644 --- a/src/api/studentTrainingAnswer.js +++ b/src/api/studentTrainingAnswer.js @@ -201,3 +201,39 @@ export function checkNewProductSurveyStepFour(form) { headers: { repeatSubmit: false }, }); } + +const productDevelopmentFactorsStepOneDimensions = ["用户需求真实性", "产品体验闭环", "生态与兼容"]; + +function validateProductDevelopmentFactorsStepOneDemo(payload) { + const factors = Array.isArray(payload?.factors) ? payload.factors : []; + if (factors.length !== productDevelopmentFactorsStepOneDimensions.length) { + throw new Error("请完成用户需求真实性、产品体验闭环和生态与兼容分析"); + } + const dimensions = factors.map((factor) => String(factor?.dimension || "").trim()); + if (new Set(dimensions).size !== productDevelopmentFactorsStepOneDimensions.length + || productDevelopmentFactorsStepOneDimensions.some((dimension) => !dimensions.includes(dimension))) { + throw new Error("提交的分析维度不完整或重复"); + } + const incompleteFactor = factors.find((factor) => !String(factor?.successAnalysis || "").trim() + || !String(factor?.failedAnalysis || "").trim()); + if (incompleteFactor) { + throw new Error(`请完成${incompleteFactor.dimension || "该项"}的成功产品和失败产品分析`); + } + return { valid: true, message: "校验通过" }; +} + +export function checkProductDevelopmentFactorsStepOne(payload) { + if (isStudentDemo()) { + try { + return Promise.resolve({ code: 200, data: validateProductDevelopmentFactorsStepOneDemo(payload) }); + } catch (error) { + return Promise.reject(error); + } + } + return request({ + url: "/api/student-training-answers/product-development-factors/step-1/validate", + method: "post", + data: payload, + headers: { repeatSubmit: false }, + }); +} diff --git a/src/views/foundation/product-development-factors.vue b/src/views/foundation/product-development-factors.vue index 727526d..1173886 100644 --- a/src/views/foundation/product-development-factors.vue +++ b/src/views/foundation/product-development-factors.vue @@ -49,81 +49,75 @@ -
- - -
+