From c6d0e88d664f4427fab388bef83af93784bda221 Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Mon, 25 Jul 2022 16:39:39 +0800 Subject: [PATCH] 日期选择器组件,支持清除 --- forms/datePicker/cDatePicker.scss | 16 ++++++++++++++++ forms/datePicker/CDatePicker.vue | 38 ++++++++++++++++++++++++++++++++++---- 2 files changed, 50 insertions(+), 4 deletions(-) diff --git a/forms/datePicker/CDatePicker.vue b/forms/datePicker/CDatePicker.vue index 4f3d64c..faa4d0a 100644 --- a/forms/datePicker/CDatePicker.vue +++ b/forms/datePicker/CDatePicker.vue @@ -23,9 +23,14 @@ :placeholder="placeholder" > <view - v-show="!readOnly" + v-show="!readOnly && !showClear" class="at-icon at-icon-chevron-right" /> + <view + v-show="showClear" + class="at-icon at-icon-close" + @tap.stop="evt => handleClear()" + ></view> </AtInput> </CDateRangeAction> <CDateTimeAction @@ -43,9 +48,14 @@ :placeholder="placeholder" > <view - v-show="!readOnly" + v-show="!readOnly && !showClear" class="at-icon at-icon-chevron-right" /> + <view + v-show="showClear" + class="at-icon at-icon-close" + @tap.stop="evt => handleClear()" + ></view> </AtInput> </CDateTimeAction> <view v-else-if="mode==='date'"> @@ -65,9 +75,14 @@ :placeholder="placeholder" > <view - v-show="!readOnly" + v-show="!readOnly && !showClear" class="at-icon at-icon-chevron-right" /> + <view + v-show="showClear" + class="at-icon at-icon-close" + @tap.stop="evt => handleClear()" + ></view> </AtInput> </picker> </view> @@ -108,6 +123,11 @@ type: Boolean, default: false, }, + // 允许清除 + allowClear: { + type: Boolean, + default: false, + }, }, data() { const year = new Date().getFullYear(); @@ -116,11 +136,21 @@ pickerEnd: year + 30 + '-12-31', }; }, - computed: {}, + computed: { + showClear() { + if (!this.allowClear) { + return false; + } + return !!this.itemRes.formData[this.itemRes.name]; + }, + }, methods: { handleChange(val) { this.itemRes.onChange(val); }, + handleClear() { + this.itemRes.onChange(''); + }, }, mounted() {}, }; diff --git a/forms/datePicker/cDatePicker.scss b/forms/datePicker/cDatePicker.scss index d79be35..0eb8c1b 100644 --- a/forms/datePicker/cDatePicker.scss +++ b/forms/datePicker/cDatePicker.scss @@ -25,6 +25,22 @@ font-size: 48px; color: #ccc; } + .at-icon-close { + padding: 8px; + margin: 4px; + color: #fff; + font-size: 24px; + line-height: 24px; + background-color: #ccc; + border-radius: 50%; + &::after { + @include position(absolute, -24px n n 0); + width: 90px; + height: 90px; + background-color: rgba(#000, 0); + content: ""; + } + } } .at-input__icon { display: none; -- Gitblit v1.9.1