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, }); // 质量控制