From fdeb869c386da95150a087bc22bcebc4e57d0f76 Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Tue, 18 Mar 2025 18:16:32 +0800 Subject: [PATCH] 更新所有表单组件文档和头注释 --- forms/datePicker/CDatePicker.vue | 78 ++++++++++++++++++++++++++++++++++++--- 1 files changed, 72 insertions(+), 6 deletions(-) diff --git a/forms/datePicker/CDatePicker.vue b/forms/datePicker/CDatePicker.vue index 0d4f378..dd2c173 100644 --- a/forms/datePicker/CDatePicker.vue +++ b/forms/datePicker/CDatePicker.vue @@ -1,10 +1,16 @@ /** * CDatePicker - 选择日期范围操作 + * 日期选择组件,用于在表单中选择日期或日期范围 + * 支持三种选择模式:日期选择、日期时间选择和日期范围选择 + * 可限制日期选择范围,支持清除功能和只读模式 * @author Tevin */ <template> - <view class="c-date-picker"> + <view + class="c-date-picker" + :class="readOnly?'read-only':''" + > <CDateRangeAction v-if="mode==='dateRange'" :value="itemRes.formData[itemRes.name]" @@ -19,7 +25,15 @@ :value="itemRes.formData[itemRes.name]" :placeholder="placeholder" > - <view class="at-icon at-icon-chevron-right" /> + <view + v-show="!readOnly && !showClear" + class="at-icon at-icon-chevron-right" + /> + <view + v-show="!readOnly && showClear" + class="at-icon at-icon-close" + @tap.stop="evt => handleClear()" + ></view> </AtInput> </CDateRangeAction> <CDateTimeAction @@ -36,12 +50,23 @@ :value="itemRes.formData[itemRes.name]" :placeholder="placeholder" > - <view class="at-icon at-icon-chevron-right" /> + <view + v-show="!readOnly && !showClear" + class="at-icon at-icon-chevron-right" + /> + <view + v-show="!readOnly && showClear" + class="at-icon at-icon-close" + @tap.stop="evt => handleClear()" + ></view> </AtInput> </CDateTimeAction> <view v-else-if="mode==='date'"> <picker mode="date" + :start="limitStart || pickerStart" + :end="limitEnd || pickerEnd" + :fields="fields" :value="itemRes.formData[itemRes.name]" @change="evt=>handleChange(evt.detail.value)" > @@ -53,7 +78,15 @@ :value="itemRes.formData[itemRes.name]" :placeholder="placeholder" > - <view class="at-icon at-icon-chevron-right" /> + <view + v-show="!readOnly && !showClear" + class="at-icon at-icon-chevron-right" + /> + <view + v-show="!readOnly && showClear" + class="at-icon at-icon-close" + @tap.stop="evt => handleClear()" + ></view> </AtInput> </picker> </view> @@ -85,15 +118,48 @@ }, // 占位提示 placeholder: String, + // 开始日期 + limitStart: String, + // 结束日期 + limitEnd: String, + // 日期选择粒度 year、month、day + fields: { + type: String, + default: 'day', + }, + // 是否只读 + readOnly: { + type: Boolean, + default: false, + }, + // 允许清除 + allowClear: { + type: Boolean, + default: false, + }, }, data() { - return {}; + const year = new Date().getFullYear(); + return { + pickerStart: year - 30 + '-01-01', + 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() {}, }; -- Gitblit v1.9.1