From dc1960961445632b61f9a7b4c170eace9a3accf2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=92=B1=E5=86=A0=E5=AD=A6?= <1109935898@qq.com> Date: Thu, 13 Jun 2024 11:21:30 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E5=85=B3=E8=81=94=E9=80=89=E9=A1=B9?= =?UTF-8?q?=E3=80=91=E5=85=B3=E8=81=94=E9=80=89=E9=A1=B9=E6=97=B6=E9=9C=80?= =?UTF-8?q?=E8=A6=81=E5=85=B3=E8=81=94=E9=9A=8F=E6=9C=BA=E7=BB=93=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Answer/questions/QCheckbox.vue | 2 +- .../Answer/questions/QMatrix/MatrixCheck.vue | 15 ++++++++++++++- .../Answer/questions/QMatrix/MatrixRadio.vue | 15 ++++++++++++++- src/views/Answer/questions/QMatrix/MatrixRate.vue | 15 ++++++++++++++- src/views/Answer/questions/QRadio.vue | 2 +- 5 files changed, 44 insertions(+), 5 deletions(-) diff --git a/src/views/Answer/questions/QCheckbox.vue b/src/views/Answer/questions/QCheckbox.vue index 8955389d..a25cd0b6 100644 --- a/src/views/Answer/questions/QCheckbox.vue +++ b/src/views/Answer/questions/QCheckbox.vue @@ -234,7 +234,7 @@ export default defineComponent({ () => props.answer, () => { context.emit("changeAnswer", { - options: options.value, + options: optionGroups.value.flatMap(group => group.options || []), value: value.value, }); // 质量控制 diff --git a/src/views/Answer/questions/QMatrix/MatrixCheck.vue b/src/views/Answer/questions/QMatrix/MatrixCheck.vue index 8ea1032e..9b0f5745 100644 --- a/src/views/Answer/questions/QMatrix/MatrixCheck.vue +++ b/src/views/Answer/questions/QMatrix/MatrixCheck.vue @@ -412,7 +412,20 @@ export default defineComponent({ watch( () => props.answer, () => { - context.emit("changeAnswer", { list: props.list }); + const list = JSON.parse(JSON.stringify(props.list || [])) + const rowItems = rowGroups.value.flatMap(group => group.options || []) + const colItems = colGroups.value.flatMap(group => group.options || []) + list.forEach(li => { + const options = (li.options || []).map(i => i.option_key) + + if(li.type === 1) { + li.options = JSON.parse(JSON.stringify(rowItems.filter(i => options.includes(i.option_key)))) + } else if(li.type === 2) { + li.options = JSON.parse(JSON.stringify(colItems.filter(i => options.includes(i.option_key)))) + } + }) + + context.emit("changeAnswer", { list }); }, { deep: true, diff --git a/src/views/Answer/questions/QMatrix/MatrixRadio.vue b/src/views/Answer/questions/QMatrix/MatrixRadio.vue index 638d4e3d..8b74bbe5 100644 --- a/src/views/Answer/questions/QMatrix/MatrixRadio.vue +++ b/src/views/Answer/questions/QMatrix/MatrixRadio.vue @@ -410,7 +410,20 @@ export default defineComponent({ watch( () => props.answer, () => { - context.emit("changeAnswer", { list: props.list }); + const list = JSON.parse(JSON.stringify(props.list || [])) + const rowItems = rowGroups.value.flatMap(group => group.options || []) + const colItems = colGroups.value.flatMap(group => group.options || []) + list.forEach(li => { + const options = (li.options || []).map(i => i.option_key) + + if(li.type === 1) { + li.options = JSON.parse(JSON.stringify(rowItems.filter(i => options.includes(i.option_key)))) + } else if(li.type === 2) { + li.options = JSON.parse(JSON.stringify(colItems.filter(i => options.includes(i.option_key)))) + } + }) + + context.emit("changeAnswer", { list }); }, { deep: true, diff --git a/src/views/Answer/questions/QMatrix/MatrixRate.vue b/src/views/Answer/questions/QMatrix/MatrixRate.vue index fe6f8294..7a2257e0 100644 --- a/src/views/Answer/questions/QMatrix/MatrixRate.vue +++ b/src/views/Answer/questions/QMatrix/MatrixRate.vue @@ -222,7 +222,20 @@ export default defineComponent({ watch( () => props.answer, () => { - context.emit("changeAnswer", { list: props.list }); + const list = JSON.parse(JSON.stringify(props.list || [])) + const rowItems = rowGroups.value.flatMap(group => group.options || []) + const colItems = colGroups.value.flatMap(group => group.options || []) + list.forEach(li => { + const options = (li.options || []).map(i => i.option_key) + + if(li.type === 1) { + li.options = JSON.parse(JSON.stringify(rowItems.filter(i => options.includes(i.option_key)))) + } else if(li.type === 2) { + li.options = JSON.parse(JSON.stringify(colItems.filter(i => options.includes(i.option_key)))) + } + }) + + context.emit("changeAnswer", { list }); }, { deep: true, diff --git a/src/views/Answer/questions/QRadio.vue b/src/views/Answer/questions/QRadio.vue index d6140cfa..d8682610 100644 --- a/src/views/Answer/questions/QRadio.vue +++ b/src/views/Answer/questions/QRadio.vue @@ -201,7 +201,7 @@ export default defineComponent({ () => props.answer, () => { context.emit("changeAnswer", { - options: options.value, + options: optionGroups.value.flatMap(group => group.options || []), value: value.value, }); // 质量控制