优化 cl-cascader 选择效果

This commit is contained in:
icssoa
2025-10-08 15:27:02 +08:00
parent 81e48b7277
commit 21625cd5f7

View File

@@ -34,6 +34,7 @@
v-if="isMp() ? popupRef?.isOpen : true"
class="h-full bg-transparent"
:current="current"
:disable-touch="disableTouch"
@change="onSwiperChange"
>
<swiper-item
@@ -403,6 +404,11 @@ function clear() {
emit("change", value.value);
}
/**
* 是否禁用触摸
*/
const disableTouch = ref(false);
/**
* 处理选项点击事件
* 根据点击的选项更新选中状态,如果是叶子节点则完成选择并关闭弹窗
@@ -410,6 +416,18 @@ function clear() {
* @param item 被点击的选项数据
*/
function onItemTap(item: ClListViewItem) {
if (disableTouch.value == true) {
return;
}
// 处理选项点击事件的主逻辑,防止重复点击,确保级联选择流程正确
disableTouch.value = true;
// 设置新的定时器
setTimeout(() => {
disableTouch.value = false;
}, 300);
// 如果选项没有值,直接返回
if (item[props.valueKey] == null) {
return;