feat[create]: 完成单选置底多选排它
- choice 新增 handleChange 函数,处理多选排它项 - option-action 新增 isPreview 传参,处理 置底和排它的顺序功能
This commit is contained in:
@@ -23,6 +23,7 @@
|
||||
<option-action
|
||||
:data="isPreview ? item.options : item"
|
||||
:active="active"
|
||||
:is-preview="isPreview"
|
||||
:question="element"
|
||||
handle=".moverQues"
|
||||
>
|
||||
@@ -60,11 +61,17 @@
|
||||
</option-action>
|
||||
</van-radio-group>
|
||||
|
||||
<van-checkbox-group v-if="element.question_type === 2" v-model="value" shape="square">
|
||||
<van-checkbox-group
|
||||
v-if="element.question_type === 2"
|
||||
v-model="value"
|
||||
shape="square"
|
||||
@change="handleChange"
|
||||
>
|
||||
<option-action
|
||||
:data="isPreview ? item.options : item"
|
||||
handle=".moverQues"
|
||||
:active="active"
|
||||
:is-preview="isPreview"
|
||||
:question="element"
|
||||
>
|
||||
<template #item="{ element: it, index: itIndex }">
|
||||
@@ -140,6 +147,24 @@ const element = defineModel('element', {
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* 控制选项,如果新增排它项, 那么就直接重新取值
|
||||
* 按理说是不是 watch 更加合理 ??
|
||||
* @param names {number[]} 选中的项
|
||||
*/
|
||||
function handleChange(names) {
|
||||
const newOption = names[names.length - 1];
|
||||
// 如果names 长度小于1,直接返回,不处理
|
||||
if (names.length < 1) return;
|
||||
|
||||
const options = element.value.options[0] ?? element.value.list[0];
|
||||
// 如果新增的结果是排它项, 对结果进行处理
|
||||
if (options[newOption - 1].is_remove_other === 1) {
|
||||
value.value = [newOption];
|
||||
}
|
||||
}
|
||||
|
||||
const emit = defineEmits(['update:element']);
|
||||
const emitValue = () => {
|
||||
emit('update:element', element.value);
|
||||
|
||||
Reference in New Issue
Block a user