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>
属性
名称 | 类型 | 默认值 | 说明 | 可选值 |
---|---|---|---|---|
size | String | mini | 组件尺寸 | large(大尺寸), medium(中尺寸), small(小尺寸), mini(迷你) |
type | String | "" | 组件类型 | info(信息), primary(正常), error(错误), warning(警告), success(成功) |
disabled | Boolean | false | 组件是否禁用 | false, true |
stop | Boolean | false | 是否阻止事件冒泡(Tui统一写法处理事件冒泡) | false, true |
hover | Boolean | true | 是否有点击效果 | false, true |
path | String | "" | 点击组件后跳转的页面路径,如果为空则响应点击事件,如果不为空则跳转页面不会响应单击事件。 | - |
mainClass | String | "" | 组件根节点的样式 | - |
nativeClass | String | "" | 组件根节点原生样式 | - |
effect | String | "normal" | 组件显示主题 | normal(正常), dark(深色), light(浅色), plain(镂空) |
range | any[][] | `[ |
['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 | - |