diff --git a/src/api/studentTrainingAnswer.js b/src/api/studentTrainingAnswer.js index 7b3bc46..27c8564 100644 --- a/src/api/studentTrainingAnswer.js +++ b/src/api/studentTrainingAnswer.js @@ -450,6 +450,7 @@ export function validateProductDiagnosisIterationStepOne(payload) { method: "post", data: { channels: submittedChannels, conversionRates, funnelChartUrl: value.funnelChartUrl, anomalyRows }, headers: { repeatSubmit: false }, + skipErrorMessage: true, }); } @@ -493,7 +494,7 @@ export function validateProductDiagnosisIterationStepTwo(payload) { return Promise.resolve({ code: 200, data: { valid: true, message: "情感评论占比计算校验通过" } }); } catch (error) { return Promise.reject(error); } } - return request({ url: "/api/student-training-answers/product-diagnosis-iteration/step-2/validate", method: "post", data: value, headers: { repeatSubmit: false } }); + return request({ url: "/api/student-training-answers/product-diagnosis-iteration/step-2/validate", method: "post", data: value, headers: { repeatSubmit: false }, skipErrorMessage: true }); } export function validateProductDiagnosisIterationStepThree(payload) { @@ -509,7 +510,7 @@ export function validateProductDiagnosisIterationStepThree(payload) { return Promise.resolve({ code: 200, data: { valid: true, message: "AB 测试方案、数据与对比图校验通过" } }); } catch (error) { return Promise.reject(error); } } - return request({ url: "/api/student-training-answers/product-diagnosis-iteration/step-3/validate", method: "post", data: value, headers: { repeatSubmit: false } }); + return request({ url: "/api/student-training-answers/product-diagnosis-iteration/step-3/validate", method: "post", data: value, headers: { repeatSubmit: false }, skipErrorMessage: true }); } export function validatePromotionEffectOptimizationStepOne(payload) { diff --git a/src/views/assessment/diagnosis.vue b/src/views/assessment/diagnosis.vue index f569136..7111c24 100644 --- a/src/views/assessment/diagnosis.vue +++ b/src/views/assessment/diagnosis.vue @@ -56,14 +56,14 @@ @@ -308,7 +308,6 @@ onMounted(async () => { try { taskConfig.value = (await getTrainingTaskByKey(TAS .workbench .step-tabs .step-tab.complete .step-marker{border-color:#79eee4;color:#083342;background:#6deee1;box-shadow:none} .workbench .step-tabs .step-connector{flex:0 0 30px;width:30px;height:1px;margin:0;background:rgba(94,193,229,.58)} .workbench .step-tabs .step-connector::after{width:8px;height:8px;border-color:#73c8e7} -.sentiment-table td:last-child{white-space:nowrap}.sentiment-table td:last-child :deep(.el-input-number){display:inline-flex;width:calc(100% - 32px);vertical-align:middle}.sentiment-table td:last-child .unit{display:inline-flex;align-items:center;height:32px;margin-left:6px;vertical-align:middle} @media(max-width:1100px){.diagnosis-page{grid-template-columns:1fr}}@media(max-width:720px){.diagnosis-page{padding:12px}.diagnosis-core{padding:16px;border-radius:20px}.workbench{padding:16px}.workbench-top,.table-toolbar,.sentiment-actions{align-items:stretch;flex-direction:column}.step-tabs{align-items:stretch;flex-direction:column}.step-tabs button{flex:0 0 auto;width:100%}.step-tabs i{flex:0 0 12px;width:2px;height:12px;margin-left:17px}.diagnosis-materials__item,.ab-materials{align-items:stretch;flex-direction:column}.top-issues>div{grid-template-columns:1fr}.chart-preview{align-items:flex-start;flex-direction:column}.chart-preview :deep(.el-image){width:100%;height:170px}} .diagnosis-toolbar{align-self:center;justify-content:flex-end;max-width:100%} @media(max-width:720px){.diagnosis-toolbar{width:100%;justify-content:flex-start}} diff --git a/tests/product-diagnosis-dynamic-channels.static.test.cjs b/tests/product-diagnosis-dynamic-channels.static.test.cjs index 19a4dc5..9e09889 100644 --- a/tests/product-diagnosis-dynamic-channels.static.test.cjs +++ b/tests/product-diagnosis-dynamic-channels.static.test.cjs @@ -27,3 +27,19 @@ test("动态渠道随第一步答案提交并用于校验", () => { assert.match(api, /data: \{ channels: submittedChannels, conversionRates/); assert.match(api, /source\.channelRates\[channel\.id\]/); }); + +test("三个步骤的百分比输入全部将百分号固定在输入框同行", () => { + const units = [...page.matchAll(/%<\/span>/g)]; + assert.equal(units.length, 7); + units.forEach(({ index }) => { + assert.ok(page.lastIndexOf('
', index) > page.lastIndexOf(" { + const validationBlock = api.slice( + api.indexOf("export function validateProductDiagnosisIterationStepOne"), + api.indexOf("export function validatePromotionEffectOptimizationStepOne") + ); + assert.equal((validationBlock.match(/skipErrorMessage:\s*true/g) || []).length, 3); +});