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