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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/111377.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IDEA中明明导入jar包了,依旧报ClassNotFoundException

解决办法&#xff1a; 1.点击IDEA右上角的设置 2.点击Project Structure... 3.点击Artifacts,点击号把包添加下就可以了

苹果ipa文件签过名之后,不用分发可以直接下载安装到苹果手机上吗?安装原理与解决方案。

为什么我的苹果IPA文件不能安装到手机&#xff1f;我来说说&#xff0c;我们时常使用各种各样的应用程序来完成各类任务&#xff0c;获取信息和娱乐。但是&#xff0c;在众多的应用程序背后&#xff0c;有很多我们可能从未涉及的知识领域。其中&#xff0c;对于苹果设备上的ipa…

nodejs+vue衣服穿搭推荐系统-计算机毕业设计

模块包括主界面&#xff0c;系统首页、个人中心、用户管理、风格标签管理、衣服分类管理、衣服穿搭管理、服装信息管理、我的搭配管理、用户反馈、系统管理等进行相应的操作。无论是日常生活&#xff0c;还是特定场景&#xff0c;诸如面试、约会等&#xff0c;人们都有展现自我…

SpringBoot中pom.xml不引入依赖, 怎么使用parent父项目的依赖

在Spring Boot项目中&#xff0c;如果你想使用父项目的依赖&#xff0c;而不想在pom.xml中显式引入依赖&#xff0c;你可以使用Maven的继承机制。 首先&#xff0c;确保你的Spring Boot项目是一个子项目&#xff0c;即它继承自一个父项目。要实现这一点&#xff0c;在pom.xml文…

GEE:绘制土地利用类型面积分布柱状图

作者:CSDN @ _养乐多_ 本文记录了,在 Google Earth Engine (GEE)中进行随机森林分类后绘制不同类型面积分布柱状图的代码片段。 完整代码请看博客《GEE:随机森林分类教程(样本制作、特征添加、训练、精度、参数优化、贡献度、统计面积)》 柱状图效果如下所示, 文章目…

Deno 快速入门

目录 1、简介 2、安装Deno MacOS下安装 Windows下安装 Linux 下安装 3、创建并运行TypeScript程序 4、内置Web API和Deno命名空间 5、运行时安全 6、导入JavaScript模块 7、远程模块和Deno标准库 8、使用deno.json配置您的项目 9、Node.js API和npm包 10、配置IDE…

ELK 单机安装

一丶软件下载 elasticsearch: https://www.elastic.co/downloads/past-releases kibana: https://www.elastic.co/downloads/past-releases 选择对应的版本的下载即可 二、es 安装es比较简单 rpm -ivh elasticsearch-2.4.2.rpm 修改配置文件 /etc/elasticsearch/elas…

今日思考(2) — 训练机器学习模型用GPU还是NUP更有优势(基于文心一言的回答)

前言 深度学习用GPU&#xff0c;强化学习用NPU。 1.训练深度学习模型&#xff0c;强化学习模型用NPU还是GPU更有优势 在训练深度学习模型时&#xff0c;GPU相比NPU有优势。GPU拥有更高的访存速度和更高的浮点运算能力&#xff0c;因此更适合深度学习中的大量训练数据、大量矩阵…

Oracle发布支持Vscode的Java插件

Oracle 发布对 Visual Studio Code 的 Java 插件支持&#xff0c;这个扩展插件通过基于 OpenJDK 的 javac 编译器和调试器接口的语言服务器&#xff0c;为流行的多语言集成开发环境提供 Java 支持。 VS Code 扩展的核心是Java语言服务器&#xff1a;这是一个使用语言服务器协议…

将输入对象转换为数组数组的维度大于等于1numpy.atleast_1d()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 将输入对象转换为数组 数组的维度大于等于1 numpy.atleast_1d() 选择题 使用numpy.atleast_1d()函数,下列正确的是&#xff1f; import numpy as np a1 1 a2 ((1,2,3),(4,5,6)) print("…

Mac电脑版交互式原型设计软件 Axure RP 8汉化 for mac

Axure RP 8是一款专业快速原型设计软件&#xff0c;它主要用于定义需求、设计功能和界面等&#xff0c;适用于商业分析师、信息架构师、产品经理、IT咨询师、用户体验设计师、交互设计师和UI设计师等用户。 该软件可以快速、高效地创建原型&#xff0c;并支持多人协作设计和版…

【Leetcode】217.存在重复元素

一、题目 1、题目描述 给你一个整数数组 nums 。如果任一值在数组中出现 至少两次 ,返回 true ;如果数组中每个元素互不相同,返回 false 。 示例1: 输入:nums = [1,2,3,1] 输出:true示例2: 输入:nums = [1,2,3,4] 输出:false示例3: 输入:nums = [1,1,1,3,3,4,…

Leetcode 第 365 场周赛题解

Leetcode 第 365 场周赛题解 Leetcode 第 365 场周赛题解题目1&#xff1a;2873. 有序三元组中的最大值 I思路代码复杂度分析 题目2&#xff1a;2874. 有序三元组中的最大值 II思路代码复杂度分析思路2 题目3&#xff1a;2875. 无限数组的最短子数组思路代码复杂度分析 题目4&a…

AST反混淆实战|某国外混淆框架一小段混淆js还原分析

关注它&#xff0c;不迷路。 本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01; 1. 需求 我相信做币圈爬虫的兄弟&#xff0c;或多或少的见过类似下面的…

Docker 部署

1 完全清除旧版本docker for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; doneImages, containers, volumes, and networks stored in /var/lib/docker/ arent automatically removed when y…

一种退避序列实现

介绍功能和需求背景 介绍代码上下文&#xff0c;思路&#xff0c;方案。 讲解代码&#xff0c;评委穿插提问。参会的其他同学有问题也可以提。 评委对代码给建议和反馈 写在前面 你有一个苹果&#xff0c;我有一个苹果&#xff0c;交换一下我们还是只有一个苹果&#xff1b;…

人防行业通信系统

深圳市华脉智联科技有限公司是一家拥有核心自主知识产权的高科技企业&#xff0c;公司致力于公网对讲、融合通信、应急通信、执法调度等领域的系统和技术的开发和探讨&#xff0c;为行业用户提供一整套以通信为基础&#xff0c;软硬件结合的实战解决方案。华脉智联始终坚持将解…

RabbitMQ中的核心概念和交换机类型

目录 一、RabbitMQ相关概念二、Exchange类型三、RabbitMQ概念模型总结 一、RabbitMQ相关概念 Producer&#xff1a;生产者&#xff0c;就是投递消息的一方。生产者创建消息&#xff0c;然后发布到RabbitMQ中。消息一般可以包含两个部分&#xff1a;消息体和附加消息。 消息体…

git 新建 branch 推送 到服务器

通常情况下&#xff0c;需要开发一个模块&#xff0c;从 master 新建立了一个 分支&#xff0c;newbranch&#xff0c;如果推送到服务器&#xff1b; 1&#xff1a;从远程 master 建立本地分支 newbranch&#xff1b; git checkout -b newbranch origin/master 2:当修改完成代码…

@JsonCreator(mode = JsonCreator.Mode.DELEGATING) @JsonValue解释

@JsonCreator(mode = JsonCreator.Mode.DELEGATING)public MessageId(Long id) {this.id = id;}<