当前位置: 首页 > news >正文

uni-app yrkDataPicker 日期和时间选择控件

uni-app 选择日期时间控件有 2 月份有 31 天的问题,一直没有修复,uni-calendar 苹果有选择年份和月份后无法显示问题。自己写了一个,只支持 H5 和微信小程序,其他没有试过。

<template><view class="yrk-data-picker"><uni-popup ref="pickerView" type="bottom" style="z-index: 9999999;"><view class="popup-view"><view class="popup-view-header"><view class="popup-view-cancel" @click="pickerCancel">取消</view><view class="popup-view-confirm" @click="pickerConfirm">完成</view></view><picker-view v-if="visible" :indicator-style="indicatorStyle" :value="values" @change="bindChange" class="picker-view"><picker-view-column :style="dateStyle"><view class="item" v-for="(item,index) in years" :key="index">{{formatTime(item)}}{{labels[0]}}</view></picker-view-column><picker-view-column  :style="dateStyle"><view class="item" v-for="(item,index) in months" :key="index">{{formatTime(item)}}{{labels[1]}}</view></picker-view-column><picker-view-column  :style="dateStyle"><view class="item" v-for="(item,index) in days" :key="index">{{formatTime(item)}}{{labels[2]}}</view></picker-view-column><picker-view-column :style="timeStyle"><view class="item" v-for="(item,index) in hours" :key="index">{{formatTime(item)}}{{labels[3]}}</view></picker-view-column><picker-view-column :style="timeStyle"><view class="item" v-for="(item,index) in minutes" :key="index">{{formatTime(item)}}{{labels[4]}}</view></picker-view-column></picker-view></view></uni-popup></view>
</template><script>const da = new Date()/*** yrkDataPicker 日期和时间选择控件* @description 日期和时间选择控件 * @copyright https://my.oschina.net/lovelong1/* @property {Number} startYear 年份开始日期,默认1900* @property {Number} endYear 年份结束日期 默认当前年份* @property {String} mode = ['date','time','datetime'] 选择模式,日期,时间,日期时间,不包含秒针。* @property {String} value 默认日期 格式,'1900-01-01 01:01:01' 默认当前,目前只支持全* @event {Function} change 控件更换 参数 event 参考 picker-view change* @event {Function} cancel 选择取消按钮 * @event {Function} confirm 选择确认按钮 参数 格式化日期 Date数据* @example <yrk-data-picker ref="pickerView" mode="time" value="1981-05-01 23:01:01" @confirm="pickerConfirm"></yrk-data-picker>* 显示控件 this.$refs.pickerView.open('bottom');* 关闭控件 this.$refs.pickerView.close();* pickerConfirm(dateStr,da){ console.log(dataStr,da); }*/	export default {name:'yrkDataPicker',props: {startYear:	{ type:	Number, default:	1900 },endYear:	{ type:	Number, default:	da.getFullYear() },mode: 		{ type: String,	default: 	'time'	},value:		{ type: String,	default: 	null },},computed: {// 解决微信不显示问题。dateStyle() { return this.getStyle(['date','datetime']) },timeStyle() { return this.getStyle(['time','datetime']) }},watch: {mode:{immediate:true,handler(newValue, oldValue){this.init()}},value:{immediate:true,handler(newValue, oldValue){this.init()}}},data() {return {visible: true,tempvalues:[],//临时保存数据values:[],defaults:[{start:1900,end:da.getFullYear()},{start:1,end:12},{start:1,end:31},{start:0,end:23},{start:0,end:59}],labels:['年','月','日','点','分'],keys:['years','months','days','hours','minutes'],years:[],months :[],days :[],hours:[],minutes:[],indicatorStyle: ``,}},created() {this.defaults[0]={start:this.startYear,end:this.endYear};this.defaults.forEach((item,index)=>{for(let i = item.start;i<=item.end;i++){this[this.keys[index]].push(i);}})},methods: {getStyle(modes){const isShow = modes.includes(this.mode);return `flex:${isShow?1:0};width:${isShow?'auto':'0px'};`},init(){this.$nextTick(()=>{let year = da.getFullYear();let month = da.getMonth();let day = da.getDate();let hour = da.getHours();let minute = da.getMinutes();if(this.value){const val = this.parse(this.value);year = val.getFullYear();month = val.getMonth();day = val.getDate();hour = val.getHours();minute = val.getMinutes();}year = year - this.startYear;this.values = [0, 0, 0, 0, 0];setTimeout(()=>{this.values = [year, month, day-1,hour,minute];},0)this.upDays(year, month);})},parse: function(str) {var a = str.split(/[^0-9]/);return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);},open(e){this.$refs.pickerView.open(e);},close(){this.$refs.pickerView.close();this.$emit('close')},pickerCancel() {this.$refs.pickerView.close();this.$emit('cancel')},formatTime(t){return (t<10?`0`:'')+t},pickerConfirm() {this.values = this.tempvalues;let year = this.formatTime(this.years[this.values[0]]);let month = this.formatTime(this.months[this.values[1]]) ;let day = this.formatTime(this.days[this.values[2]]) ;let hour = this.formatTime(this.hours[this.values[3]]);let minute = this.formatTime(this.minutes[this.values[4]]) ;let value = `${year}-${month}-${day} ${hour}:${minute}:00`if(this.mode==='date'){value = `${year}-${month}-${day}`}else if(this.mode==='time'){value = `${hour}:${minute}`}this.$refs.pickerView.close();// console.log(value ,new Date(year,month-1,day,hour,minute,0))this.$emit('confirm', value ,new Date(year,month-1,day,hour,minute,0))},bindChange(e){// console.log(e);if(this.values[1] != e.detail.value[1]){const year = e.detail.value[0]+this.startYear;const month = e.detail.value[1]+1;this.upDays(year, month);}this.tempvalues = e.detail.value;this.$emit('change', e)},upDays(year,month){const monthDays = this.getMonthDaysByYearMonth(year,month);this.days = [];for (let i = 1; i <= monthDays; i++) this.days.push(i);},getMonthDaysByDate(da){return 	this.getMonthDaysByYearMonth(da.getFullYear(), da.getMonth);},getMonthDaysByYearMonth(year=1900,month=0){return 	new Date(year, month,0).getDate();}}}
</script><style lang="scss">.popup-view {background-color: #FFFFFF;.popup-view-header {display: flex;flex-direction: row;justify-content: space-between;align-items: center;border-bottom: 1px solid #F5F5F5;.popup-view-cancel,.popup-view-confirm {box-sizing: border-box;padding: 0 28rpx;font-size: 34rpx;line-height: 90rpx;}.popup-view-cancel{color: #888888;}.popup-view-confirm{color: #007aff;}}.picker-view {height: 476rpx;margin-top: 20rpx;.item{text-align: center;display: flex;flex-direction: column;align-items: center;justify-content: center;}}picker-view-column{// display: flex;}}
</style>

相关文章:

uni-app yrkDataPicker 日期和时间选择控件

uni-app 选择日期时间控件有 2 月份有 31 天的问题&#xff0c;一直没有修复&#xff0c;uni-calendar 苹果有选择年份和月份后无法显示问题。自己写了一个&#xff0c;只支持 H5 和微信小程序&#xff0c;其他没有试过。 <template><view class"yrk-data-picke…...

PAM从入门到精通(十九)

接前一篇文章&#xff1a;PAM从入门到精通&#xff08;十八&#xff09; 本文参考&#xff1a; 《The Linux-PAM Application Developers Guide》 PAM 的应用开发和内部实现源码分析 先再来重温一下PAM系统架构&#xff1a; 更加形象的形式&#xff1a; 六、整体流程示例 2.…...

apache httpd 多后缀解析漏洞

形成原因 Apache HTTPD 支持一个文件拥有多个后缀&#xff0c;并为不同后缀执行不同的指令 在有多个后缀的情况下&#xff0c;只要一个文件含有.php后缀的文件即将被识别成PHP文件&#xff0c;没必要是最后一个后缀。利用这个特性&#xff0c;将会造成一个可以绕过上传白名单…...

Flutter ☞ 数据类型

数值类型 int、double、num int 整型&#xff0c;取值通常在 -253 ~ 253 之间 int class double 64-bt(双精度)浮点数&#xff0c;符合 IEEE 754 标准。 double class num 数值类型的基类&#xff0c;int 和 double 都继承自num。 num class 数值转换 // String -> …...

MyBatis-Plus 实战教程一

这里写目录标题 简介快速上手数据库建立创建实体类修改参数引入依赖测试常见注解介绍TableNameTableIdTableField 常见配置仓库地址 简介 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;…...

闭包(函数)

把内部函数通过return扔出去 必要条件...

Go包介绍与初始化:搞清Go程序的执行次序

Go包介绍与初始化&#xff1a;搞清Go程序的执行次序 文章目录 Go包介绍与初始化&#xff1a;搞清Go程序的执行次序一、main.main 函数&#xff1a;Go 应用的入口函数1.1 main.main 函数1.2 main.main 函数特点 二、包介绍2.1 包介绍与声明2.2 非 main包的 main 函数2.3 包的命名…...

Python教程(15)——Python流程控制语句详解

目录 if语句else if语句for循环遍历类型range关键字 while循环break语句continue语句 Python流程控制是Python编程中非常重要的一部分&#xff0c;它用于控制程序的执行流程。Python提供了多种流程控制语句&#xff0c;包括if语句、while循环、for循环、break和continue语句等。…...

JavaScript基础知识16——分支语句

哈喽&#xff0c;大家好&#xff0c;我是雷工。 今天学习JavaScript基础知识的分支语句&#xff0c;以下为学习笔记。 1、程序三大流程控制语句 ○写几句就从上往下执行几句&#xff0c;这种叫做顺序结构&#xff1b; ○有时要根据条件选择执行代码&#xff0c;这种叫分支结构…...

web开发初级工程师学习笔记

web开发初级工程师学习笔记 前端开发工具实验1 VS Code 初体验介绍 前端开发工具 实验1 VS Code 初体验 介绍 VS Code 环境提供的是一个可以在浏览器中使用原生 VS Code 编辑代码的程序。在该环境中&#xff0c;你可以使用到与本地安装近乎一致的 VS Code 程序来编辑代码文件…...

Linux下Samba服务安装及启用全攻略

Linux下Samba服务安装及启用全攻略 前言一、安装SSH Server二、安装Samba Server1.安装net-tool2.建立账号的samba3.windows通过Samba与linux共享文件4.使用远程工具登录Linux 总结 前言 提示&#xff1a;本文详解了在Linux系统下如何安装和启用Samba服务&#xff0c;涵盖了从…...

【C++】引用’‘的深入解析

&#x1f490; &#x1f338; &#x1f337; &#x1f340; &#x1f339; &#x1f33b; &#x1f33a; &#x1f341; &#x1f343; &#x1f342; &#x1f33f; &#x1f344;&#x1f35d; &#x1f35b; &#x1f364; &#x1f4c3;个人主页 &#xff1a;阿然成长日记 …...

java链式编程对象序列化问题

在使用 openfeign 进行服务之间数据传输时发现了一个问题&#xff0c;数据在下游正常处理&#xff0c;响应到调用端数据也读取到了&#xff0c;但是就是 jackson 转对象序列化时出了问题&#xff0c;异常如下 Failed to complete request: feign.codec.DecodeException: Type d…...

关于Redis(Redisson)超时问题的分析

概述 生产环境中流量高峰期会出现短时间的redis异常&#xff0c;主要报错如下&#xff1a; Redis server response timeoutRedisTimeoutException: Command execution timeout for command: (PING)Command still hasn’t been written into connection! 根据redisson官方所述…...

Redis 主从复制,哨兵,集群——(2)哨兵篇

目录 1. Redis 哨兵是什么&#xff1f; 2. Redis 哨兵有什么用&#xff1f; 2.1 主动监控 2.2 消息通知 2.3 故障转移 2.4 配置中心 3. Redis 哨兵数量配备要求 4. 哨兵配置文件详解 5. quorum 投票数详解 5.1 quorum 的含义 5.2 网络抖动导致主观下线 5.3 quorum …...

C++入门笔记分享

有道云笔记...

使用conda install一直卡在solving environment的解决方法

使用国内镜像源&#xff0c;但install仍旧一直卡在solving environment&#xff0c;超过10分钟就不用等了&#xff1b; 检查C:\Users\UserName 路径下的.condarc文件 将这个defaults这一行删掉即可...

神经网络和AI的关系

神经网络&#xff08;Neural Networks&#xff09;和人工智能&#xff08;Artificial Intelligence&#xff0c;AI&#xff09;之间存在紧密的关系&#xff0c;可以概括为以下几点&#xff1a; 神经网络是AI的子领域&#xff1a;神经网络是人工智能的一个子领域&#xff0c;它是…...

[牛客]计算机网络习题笔记_1020

1、物理层&#xff1a;以太网 调制解调器 电力线通信(PLC) SONET/SDH G.709 光导纤维 同轴电缆 双绞线等。 2、数据链路层&#xff08;网络接口层包括物理层和数据链路层&#xff09;&#xff1a;Wi-Fi(IEEE 802.11) WiMAX(IEEE 802.16) ATM DTM 令牌环 以太网 FDD…...

蓝牙音视频远程控制协议(AVRCP)介绍

零.声明 本专栏文章我们会以连载的方式持续更新&#xff0c;本专栏计划更新内容如下&#xff1a; 第一篇:蓝牙综合介绍 &#xff0c;主要介绍蓝牙的一些概念&#xff0c;产生背景&#xff0c;发展轨迹&#xff0c;市面蓝牙介绍&#xff0c;以及蓝牙开发板介绍。 第二篇:Trans…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

STM32+rt-thread判断是否联网

一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…...

生成 Git SSH 证书

&#x1f511; 1. ​​生成 SSH 密钥对​​ 在终端&#xff08;Windows 使用 Git Bash&#xff0c;Mac/Linux 使用 Terminal&#xff09;执行命令&#xff1a; ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" ​​参数说明​​&#xff1a; -t rsa&#x…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生&#xff0c;我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要&#xff0c;而您认真负责的教学态度&#xff0c;让课程的每一部分都充满了实用价值。 尤其让我…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...