From e543896c2ac5910fd82b47e71d26dde350835c76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=98=B1=E8=BE=BE?= Date: Wed, 28 May 2025 12:33:21 +0800 Subject: [PATCH] =?UTF-8?q?refactor(Design):=20=E4=BC=98=E5=8C=96=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8A=E4=BC=A0=E5=92=8C=E7=AD=94=E6=A1=88=E5=A4=84?= =?UTF-8?q?=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改 FileUpload 组件,将答案直接赋值给 question.value.answer - 更新 useFileUploadHooks,使用 FileList | [] 类型 -移除 PreviewFileUpload 组件中的无用代码 - 优化 PreviewTextWithImages 组件的 watch监听 - 调整 Survey 预览中的表单验证逻辑 --- .../components/Questions/FileUpload.vue | 3 +-- .../Questions/hooks/useFileUploadHooks.ts | 4 ++-- src/views/Survey/views/Preview/Index.vue | 17 ++++++++++++++++- .../questions/PreviewFileUpload.vue | 15 ++++++++------- .../questions/PreviewTextWithImages.vue | 19 ++++++++++++++++--- 5 files changed, 43 insertions(+), 15 deletions(-) diff --git a/src/views/Design/components/Questions/FileUpload.vue b/src/views/Design/components/Questions/FileUpload.vue index 19a319e..7786628 100644 --- a/src/views/Design/components/Questions/FileUpload.vue +++ b/src/views/Design/components/Questions/FileUpload.vue @@ -34,7 +34,6 @@ const fileLimit = computed(() => { }; }); -console.log(fileLimit.value); /** * 上传文件 * @description 上传文件 @@ -75,7 +74,7 @@ function handleFileUpload() { // 上传文件 // 生成答案 - answer.value = files; + question.value.answer = files; } } } diff --git a/src/views/Design/components/Questions/hooks/useFileUploadHooks.ts b/src/views/Design/components/Questions/hooks/useFileUploadHooks.ts index 842e583..328afa5 100644 --- a/src/views/Design/components/Questions/hooks/useFileUploadHooks.ts +++ b/src/views/Design/components/Questions/hooks/useFileUploadHooks.ts @@ -1,7 +1,7 @@ import { ref } from 'vue'; -const answer = ref(); - +// const answer = ref(); +const answer = ref([]); /** * 文件限制 * @property {number} max - 最大文件大小 diff --git a/src/views/Survey/views/Preview/Index.vue b/src/views/Survey/views/Preview/Index.vue index 6868f4c..5ded15f 100644 --- a/src/views/Survey/views/Preview/Index.vue +++ b/src/views/Survey/views/Preview/Index.vue @@ -650,6 +650,12 @@ async function answer(callback, callbackBeforePage) { // 表单验证(当前页) const errors = questions.value.filter((question) => { const { config, answer, question_type: questionType, error } = question; + + console.log(answer, questionType, error); + // 单独 处理 图文 + if (questionType === 6) { + return; + } let isError = false; // 如果问题没有答案还有是必须填空的,就往下处理 // 2025/4/1新增 : 如果有 error 内容, 同样视为有错误 @@ -687,6 +693,13 @@ async function answer(callback, callbackBeforePage) { question.error = translatedText.value.PleaseInputAValue; } else if (answer && questionType === 2) { // 多选题 + // 选项数量 + + console.log(translatedText.value); + // isError = true; + // question.error = translatedText.value.PleaseSelectAtLeastOneOptions( + // config.min_select ? config.min_select : 0 + // ); } else if (answer && questionType === 10) { // 矩阵多选题 } else if (answer && questionType === 12) { @@ -701,7 +714,9 @@ async function answer(callback, callbackBeforePage) { if (Object.keys(answer).length < (+config.min_select || 0)) { // 选项数量 isError = true; - question.error = translatedText.value.PleaseSelectAtLeastOneOptions(config.min_select); + question.error = translatedText.value.PleaseSelectAtLeastOneOptions( + config.min_select ? config.min_select : 0 + ); } } else if (answer && questionType === 17) { // 恒定总和题 diff --git a/src/views/Survey/views/Preview/components/questions/PreviewFileUpload.vue b/src/views/Survey/views/Preview/components/questions/PreviewFileUpload.vue index 62ea279..ba67e49 100644 --- a/src/views/Survey/views/Preview/components/questions/PreviewFileUpload.vue +++ b/src/views/Survey/views/Preview/components/questions/PreviewFileUpload.vue @@ -3,16 +3,17 @@ import FileUpload from '@/views/Design/components/Questions/FileUpload.vue'; const questionIndex = defineModel('questionIndex', { default: NaN }); const answerIndex = computed(() => question.value.title); const question = defineModel('question', { default: () => {} }); -import { answer } from '@/views/Design/components/Questions/hooks/useFileUploadHooks'; +// import { answer } from '@/views/Design/components/Questions/hooks/useFileUploadHooks'; import { computed, watch } from 'vue'; const emit = defineEmits(['changeAnswer']); -watch(answer, () => { - // 暂时先将答案挂到 question,后续需要优化 - question.value.answer = answer.value; - // emit('changeAnswer', answer.value); - // console.log(`question`, question.value); -}); +// watch(answer, () => { +// // 暂时先将答案挂到 question,后续需要优化 +// question.value.answer = answer.value; +// console.log(question.value.answer); +// // emit('changeAnswer', answer.value); +// // console.log(`question`, question.value); +// });