feat: 优化单选题增加隐藏功能
- 优化隐藏逻辑,将 过滤 options 的方式改变成备份数据的形式. - 还原逻辑优化,减少冗余操作.
This commit is contained in:
@@ -26,7 +26,7 @@ const question = defineModel<IQuestion>('question', {
|
||||
default: { config: { is_required: false } }
|
||||
});
|
||||
|
||||
const filterOptions = <IMatrixListOption[]>[];
|
||||
let filterOptions = <IMatrixListOption[]>[];
|
||||
|
||||
const list = computed(() => {
|
||||
// 有意外情况,可能存在 hideOptions
|
||||
@@ -37,13 +37,11 @@ const list = computed(() => {
|
||||
// 取出 hideOptions,然后提出相应的元素,需要重置 hideOptions。
|
||||
// 不然会出现再次进入无法得到原来所有的选项
|
||||
const hideOptions = question.value.hideOptions;
|
||||
// 备份 options
|
||||
filterOptions = [...options];
|
||||
|
||||
_list.options = options.filter((option) => {
|
||||
const res = hideOptions.includes(option.option_key);
|
||||
if (res) {
|
||||
// 如果有相应的选项, 需要把它 push 到 filterOptions
|
||||
filterOptions.push(option);
|
||||
}
|
||||
return !res;
|
||||
return !hideOptions.includes(option.option_key);
|
||||
});
|
||||
question.value.hideOptions = [];
|
||||
} else {
|
||||
@@ -92,14 +90,8 @@ watch(
|
||||
|
||||
onUnmounted(() => {
|
||||
if (!filterOptions.length) return;
|
||||
let options = question.value.list[0].options;
|
||||
// 把 filterOptions 里面的选项加上
|
||||
options = [...options, ...filterOptions];
|
||||
question.value.list[0].options = options;
|
||||
|
||||
// 如果已经有随机的配置,不需要重新进行排序
|
||||
if (question.value.config.select_random) return;
|
||||
// 重新进行排序
|
||||
options.sort((optionA, optionB) => Number(optionA.option_key) - Number(optionB.option_key));
|
||||
// 把 options 还原
|
||||
question.value.list[0].options = filterOptions;
|
||||
});
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user