hookehuyr

feat(单选框): 添加点击事件以清空当前选中项

在RadioField和GenderField组件中,添加了handleClick方法,当点击已选中的单选框时,清空当前选中项并触发onChange事件。这提升了用户体验,允许用户取消选择已选中的选项。
<!--
* @Date: 2022-08-30 11:34:19
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-03-03 15:27:53
* @LastEditTime: 2025-03-27 14:11:08
* @FilePath: /data-table/src/components/GenderField/index.vue
* @Description: 性别选择控件
-->
......@@ -30,7 +30,7 @@
<van-radio v-else :name="x.value" icon-size="1rem" :checked-color="themeVars.radioColor"
style="margin-bottom: 0.25rem">{{ x.title }}</van-radio> -->
<van-config-provider :theme-vars="{ radioLabelColor: x.color }">
<van-radio :name="x.value" icon-size="1rem" :checked-color="themeVars.radioColor" style="margin-bottom: 0rem">
<van-radio @click="handleClick(item)" :name="x.value" icon-size="1rem" :checked-color="themeVars.radioColor" style="margin-bottom: 0rem">
<template #default>
<div :style="{ backgroundColor: x.background_color || '', padding: '0.15rem 0.5rem', borderRadius: '0.25rem' }">{{ x.title }}</div>
</template>
......@@ -108,6 +108,16 @@ const onChange = (item) => {
Cookies.set($route.query.code, JSON.stringify({ [props.item.key]: currentValue }), { expires: 1 });
}
}
// 单选框点击事件, 清空当前选中项
const handleClick = (item) => {
// 如果当前选中项和点击的项相同,清空选中项
if (item.value.value === gender_value.value) {
gender_value.value = '';
// 发送自定义数据结构
onChange(item);
}
}
</script>
<style lang="less" scoped>
......
<!--
* @Date: 2022-08-30 11:34:19
* @LastEditors: hookehuyr hookehuyr@gmail.com
* @LastEditTime: 2025-03-03 15:27:58
* @LastEditTime: 2025-03-27 14:17:04
* @FilePath: /data-table/src/components/RadioField/index.vue
* @Description: 单项选择控件
-->
......@@ -29,6 +29,7 @@
:name="x.value"
icon-size="1rem"
:checked-color="themeVars.radioColor"
@click="handleClick(item)"
>
<template #default>
<div :style="{ backgroundColor: x.background_color || '', padding: '0.15rem 0.5rem', borderRadius: '0.25rem' }">{{ x.title }}</div>
......@@ -202,6 +203,17 @@ const showUrl = (rule) => {
location.href = rule.desc_url
}
const rule_content = ref("");
// 单选框点击事件, 清空当前选中项
const handleClick = (item) => {
// 如果当前选中项和点击的项相同,清空选中项
if (item.value.value === radio_value.value) {
radio_value.value = ''; // 清空选中项
affix_value.value = ''; // 清空补充信息
// 发送自定义数据结构
onChange(item);
}
}
</script>
<style lang="less" scoped>
......