Skip to content

PickerDate (日期-选择容器)

Canvas绘制更快渲染速度,自研滚动算法不会在滚动结束的时候回弹,使用了虚拟列表原理,只会绘制需要滚动显示的数据,不用担心数据量大影响渲染速度

支持平台

安卓ios鸿蒙web微信小程序

示例代码

html
<template>
	<t-page title="日期选择" main-class="p-30">
		<t-card main-class="mb-30" title="PickerDate 日期选择"
			sub-title="Canvas绘制,虚拟滚动绘制原理数据在多也不怕了,自研滚动算法,支持年月日、年月日时分秒、年月日时分、时分秒、年月、年、周等日期选择,可限制选择范围"></t-card>
		<t-col main-class="tdr tdb mb-30 tdp">
			<t-text main-class="slh-60">当前日期:{{defaultDate}}</t-text>
		</t-col>
		<t-section title="默认值+日期限制(嵌入模式)" main-class="mb-30"></t-section>
		<t-picker-date main-class="tdr mb-30" v-model="defaultDate" :range="dateRange" @change="pickerChange"
			:embeddable="true">
		</t-picker-date>
		<t-button main-class="mb-30" type="e" @click="defaultDate='1986-11-02 12:35:40'">双向绑定测试</t-button>
		<t-col main-class="tdr tdb mb-30 tdp">
			<t-text main-class="slh-60">表单日期:{{curDate}}</t-text>
		</t-col>
		<t-section title="默认值+日期限制(弹窗模式)" main-class="mb-30"></t-section>
		<t-picker-date main-class="tdr mb-30" v-model="curDate" @confirm="pickerConfirm" :range="dateRange1">
			<template #button>
				<t-button type="p">请选择日期</t-button>
			</template>
		</t-picker-date>
		<t-button main-class="mb-30" type="p" @click="curDate='1986-11-02 12:35:40'">双向绑定测试</t-button>
	</t-page>
</template>

<script setup>
	const defaultDate = ref<string>('1612959739000') //1986-11-02 12:35:40 or 1612959739000
	const curDate = ref<string>('')
	const dateRange = ref<any[][]>([
		['year', '年', [1913, 2099]],
		['month', '月', [1, 12]],
		['date', '日', [1, 31]],
		// ['hour', '时', [0, 23]], // 注意:小时通常是从0到23
		// ['minute', '分', [0, 59]], // 注意:分钟和秒通常是从0开始
		// ['second', '秒', [0, 59]] // 注意:这里我也假设了最大值为59,根据实际需要调整
	]);
	const dateRange1 = ref<any[][]>([
		['year', '年', [1913, 2099]],
		['month', '月', [1, 12]],
		['date', '日', [1, 31]]
	]);
	function pickerChange(e : UTSJSONObject) {
		// console.log(e)
	}
	function pickerConfirm(e : UTSJSONObject) {
		console.log(e)
	}
</script>

属性

名称类型默认值说明可选值
sizeStringmini组件尺寸large(大尺寸), medium(中尺寸), small(小尺寸), mini(迷你)
typeString""组件类型info(信息), primary(正常), error(错误), warning(警告), success(成功)
disabledBooleanfalse组件是否禁用false, true
stopBooleanfalse是否阻止事件冒泡(Tui统一写法处理事件冒泡)false, true
hoverBooleantrue是否有点击效果false, true
pathString""点击组件后跳转的页面路径,如果为空则响应点击事件,如果不为空则跳转页面不会响应单击事件。-
mainClassString""组件根节点的样式-
nativeClassString""组件根节点原生样式-
effectString"normal"组件显示主题normal(正常), dark(深色), light(浅色), plain(镂空)
rangeany[][]`[
					['year', '年', [2010, 2040]],
					['month', '月', [1, 12]],
					['date', '日', [1, 31]]
				]` | 日期范围的配置,完整配置参考:	const dateRange = ref<any[][]>([
	['year', '年', [1913, 2099]],
	['month', '月', [1, 12]],
	['date', '日', [1, 31]],
	['hour', '时', [0, 23]], // 注意:小时通常是从0到23
	['minute', '分', [0, 59]], // 注意:分钟和秒通常是从0开始
	['second', '秒', [0, 59]] // 注意:这里我也假设了最大值为59,根据实际需要调整
]); |  |

| modelValue | String | | 双向绑定的值 | | | title | `String` | `日期` | 标题 | | | label | `String` | `请选择日期` | 标签 | | | showUnit | `Boolean` | `true` | 是否显示单位 | | | titleClass | `String` | | 标题样式 | | | labelClass | String | `` | 标签样式 | | | format | String | yyyy-mm-dd hh:MM:ss | 日期格式化模版 | | | embeddable | Boolean | false | 是否嵌入页面 | |

事件

名称返回参数说明
change(e : UTSJSONObject) 值发生变化时触发,当嵌入页面的时候有效
cancel-点击取消时触发
confirm(e : UTSJSONObject) 点击确认时触发

方法

名称参数返回值说明
show--打开、关闭容器

插槽

名称返回值说明
name-