微信小程序原生,tdesign时间选择器,t-date-time-picker封装成组件,开始时间结束时间

devtools/2024/12/29 0:58:55/

1.

首先,在项目的 components 目录下创建一个新的文件夹,例如 date-picker,并在其中创建以下文件:

  • date-picker.wxml
  • date-picker.wxss
  • date-picker.js
  • date-picker.json

 2.date-picker.wxml

<view class="date-picker"><t-celltitle="{{title}}"hovernote="{{dateText || '请选择'}}"arrowbindtap="showPicker"t-class="panel-item"/><t-date-time-pickerauto-closetitle="选择日期"visible="{{visible}}"mode="date"default-value="{{date}}"format="YYYY-MM-DD"start="{{start}}"end="{{end}}"filter="{{filter}}"popup-props="{{popupProps}}"bindchange="onConfirm"bindpick="onColumnChange"bindcancel="hidePicker"bindclose="handleClose"/>
</view>

date-picker.js

Component({properties: {title: { type: String, value: '请选择日期' }, // 标题date: { type: String, value: '' }, // 默认为空,将在 attached 中设置start: { type: String, value: '' },},data: {visible: false, // 选择器是否可见dateText: '',    // 显示的日期文本// 指定选择区间起始值end: '2030-09-09 12:12:12',filter(type, options) {if (type === 'year') {return options.sort((a, b) => b.value - a.value);}return options;},popupProps: {usingCustomNavbar: true,},},observers: {'date': function (newVal) {this.setData({ dateText: newVal || '' });},'start': function(newVal) {if (newVal && this.data.end && newVal > this.data.end) {this.setData({ end: newVal });}},'end': function(newVal) {if (newVal && this.data.start && newVal < this.data.start) {wx.showToast({title: '结束日期必须大于或等于开始日期',icon: 'none'});this.setData({ end: '' });}}},methods: {// 显示选择器showPicker() {this.setData({ visible: true });},// 隐藏选择器hidePicker() {this.setData({ visible: false });},// 确认选择onConfirm(e) {const selectedDate = e.detail.value;if (this.data.title === '结束日期' && this.data.start && selectedDate < this.data.start) {wx.showToast({title: '结束日期必须大于或等于开始日期',icon: 'none'});return;}this.setData({date: selectedDate,visible: false});this.triggerEvent('datechange', selectedDate); // 触发事件传递选择的日期},// 列变化(可选)onColumnChange(e) {// 处理列变化逻辑(可选)},// 关闭处理(可选)handleClose() {this.hidePicker();}}
});

date-picker.json

{"component": true,"usingComponents": {"t-cell": "tdesign-miniprogram/cell/cell","t-date-time-picker": "tdesign-miniprogram/date-time-picker/date-time-picker"}
}

3.

 使用组件

在需要使用日期选择器的页面中,引入并使用该组件。

开始时间为今天时间,结束时间大于等于开始时间。

{"usingComponents": {"date-picker":"/components/date-picker/date-picker",}
}
 <view class="title"><date-picker title="开始日期" start="{{today}}" date="{{startDate}}" bind:datechange="onStartDateChange" /></view><view class="title"><date-picker title="结束日期" start="{{startDate}}" date="{{endDate}}" bind:datechange="onEndDateChange" /></view>
data:{//日期选择startDate: '',endDate: '',today: '', // 在 onLoad 中设置
}onLoad(options) {this.setTodayDate();},//日期选择setTodayDate() {const today = new Date();const year = today.getFullYear();const month = String(today.getMonth() + 1).padStart(2, '0');const day = String(today.getDate()).padStart(2, '0');const formattedDate = `${year}-${month}-${day}`;this.setData({ today: formattedDate, startDate: formattedDate });},onStartDateChange(e) {this.setData({ startDate: e.detail });},onEndDateChange(e) {this.setData({ endDate: e.detail });},


http://www.ppmy.cn/devtools/146250.html

相关文章

策略模式以及优化

使用场景 在一个条件语句中又包含了多个条件语句 具体策略类会过多 把抽象策略和具体策略放在一个枚举类里。 方法 exe() 相当于抽象策略&#xff0c;而A和B就相当于实现了抽象策略的具体策略 这样就只需要一个枚举类就可以解决具体策略类过多的问题 public enum Strategy {A{O…

【ETCD】【实操篇(十二)】分布式系统中的“王者之争”:基于ETCD的Leader选举实战

分布式系统中&#xff0c;Leader选举是一个非常重要的概念。Leader选举确保系统中的某个节点&#xff08;Leader&#xff09;负责执行关键任务&#xff0c;而其他节点作为备份&#xff0c;等待Leader的失效或者任务完成后重新选举出新的Leader。通过Leader选举机制&#xff0c;…

zabbix5.0版本(安装部署+添加服务器+拆分数据库)

目录 1.监控内容 2.监控工具 3.Zabbix安装 4.Zabbix添加监控服务器 5.拆分数据库 本篇文章介绍zabbix监控&#xff0c;监控是对我们操作系统进行不间断的监控&#xff0c;这是软件生命周期非常重要的一环&#xff0c;可以做到事前告警&#xff0c;事后根据监控内容排查问题…

在线免费批量生成 Word 文档工具

为了方便的批量生成 Word 文档&#xff0c;写了个在线 Word 文档批量生成工具&#xff0c;可以根据 Excel 数据和 Word 模板批量生成大量个性化的 Word 文档。适用于需要批量生成格式统一但内容不同的文档场景。比如&#xff1a; 批量生成证书、奖状批量生成合同、协议批量生成…

计算机故障找不到x3daudio1_7.dll怎么解决?

x3daudio1_7.dll 是一个动态链接库&#xff08;Dynamic Link Library&#xff0c;简称DLL&#xff09;文件&#xff0c;属于 Microsoft DirectX 组件的一部分。DirectX 是微软公司开发的一系列多媒体编程接口&#xff0c;广泛应用于游戏和多媒体应用程序中&#xff0c;以提供高…

SpringMVC详解

文章目录 1 什么是MVC 1.1 MVC设计思想1.2 Spring MVC 2 SpringMVC快速入门3 SpringMVC处理请求 3.1 请求分类及处理方式 3.1.1 静态请求3.1.2 动态请求 3.2 处理静态请求 3.2.1 处理html文件请求3.2.2 处理图片等请求 3.3 处理动态请求 3.3.1 注解说明3.3.2 示例 3.4 常见问题…

Docker-如何启动docker

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 我们在上一章&#xff0c;讲了虚拟化&#xff0c;虚拟化是把硬件虚拟化&#xff0c;然后创建出来的虚拟机完全隔离&#xff…

基于Spring Boot的手机卡销售系统的设计与实现

博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;熟悉各种主流语言&#xff0c;精通java、python、php、爬虫、web开发&#xff0c;已经做了多年的设计程序开发&#xff0c;开发过上千套设计程序&#xff0c;没有什么华丽的语言&#xff0c;只有实…