位置: IT常识 - 正文

element ui datepicker时间控件实现范围选择周,季,年。(element ui datepicker 源码)

编辑:rootadmin
element ui datepicker时间控件实现范围选择周,季,年。

推荐整理分享element ui datepicker时间控件实现范围选择周,季,年。(element ui datepicker 源码),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:element ui datepicker组件的值,element ui datepicker 默认展开,element ui datepicker 默认展开,element ui datepicker 源码,element ui datepicker 回调,element ui datepicker 回调,element ui datepicker 回调,element ui datepicker 源码,内容如对您有帮助,希望把文章链接给更多的朋友!

因项目要求,需日,周,月,季,年五种日期范围选择器,故参考文章(在末尾)后分享

一.效果图

 

 

element ui datepicker时间控件实现范围选择周,季,年。(element ui datepicker 源码)

二、版本及下载 1.实现需要修改源码,目前修改的版本为2.15.3,所以想要实现该方法,请先将elementui升级或者降到2.15.3.

2.将lib包替换到node_module/element-ui下的lib lib包下载地址 https://download.csdn.net/download/qq_39019765/44321511

具体参考:原文链接:https://blog.csdn.net/m0_67391518/article/details/123266454

三、代码中的使用

此为utils下的common.js文件,用于处理周选择器显示

//将日期转换成一年中的第几周export function getYearWeek(date) { //按照国际标准 let time, week, checkDate = new Date(date); checkDate.setDate(checkDate.getDate() + 4 - (checkDate.getDay() || 7)); time = checkDate.getTime(); checkDate.setMonth(0); checkDate.setDate(1); week = Math.floor(Math.round((time - checkDate) / 86400000) / 7) + 1; return week;}//返回格式 2019年第23周,特别注意跨年一周的问题export function getYearAndWeek(date, anotherDate) { let week = getYearWeek(date); let year = date.substring(0, 4); let anotherYear = anotherDate.substring(0, 4); //处理跨年特殊日期 if (anotherDate > date) { let betweenDay = getBetweenDay(new Date(date), new Date(anotherDate)); if (betweenDay == 7 && anotherYear != year) { if (week == 1) { year = parseInt(year) + 1; } } } else { let betweenDay = getBetweenDay(new Date(anotherDate), new Date(date)); if (betweenDay == 7 && anotherYear != year) { if (week != 1) { year = parseInt(year) - 1; } } } return `${year}年第${week}周`;}export function getBetweenDay(beginDate, endDate) { let dateSpan = endDate - beginDate; dateSpan = Math.abs(dateSpan); let days = Math.floor(dateSpan / (24 * 3600 * 1000)); return days + 1;}

type新增季选择器:quarterrange,年选择器:yearrange,周选择器直接在日选择器daterange上修改的,通过添加format来进行判断

代码中,通过添加key值实现点击切换,判断timeName是否为周来进行周选择器处理数据

<el-date-picker ref="refDatePicker" v-model="birthday" :type="TimeType" :key="TimeType" @change="changeDate" :format="timeName === '周' ? format : ''" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions" value-format="yyyy-MM-dd"></el-date-picker>// 引入common的getYearAndWeek用于处理周选择器import { getYearAndWeek } from "@/utils/common.js"<script>import { getYearAndWeek } from "@/utils/common.js"import dayjs from 'dayjs' // 引入dayjsexport default { data() { // 处理点击切换type时选择器的层级问题 const clickFuncGenerator = (picker, type, text) => { this.TimeType = type picker.$emit('pick', new Date()) setTimeout(() => { this.$refs.refDatePicker.focus() this.timeName = text }, 200) } return { TimeType:'daterange', dataForm:{}, time: "week", timeName:"", birthday: '', pickerOptions: { firstDayOfWeek: 1, shortcuts: [{ text: '日', onClick: picker => clickFuncGenerator(picker, 'daterange', '日') }, { text: '周', onClick: picker => clickFuncGenerator(picker, 'daterange', '周') }, { text: '月', onClick: picker => clickFuncGenerator(picker, 'monthrange', '月') }, { text: '季', onClick: picker => clickFuncGenerator(picker, 'quarterrange', '季') }, { text: '年', onClick: picker => clickFuncGenerator(picker, 'yearrange', '年') }] }, }; }, computed: { //用于处理周选择器 format: { get() { let timeType = this.time; let date = this.birthday; if ("week" == timeType && date && date.length > 0) { let beginYearWeek = getYearAndWeek(date[0], date[1]); let endYearWeek = getYearAndWeek(date[1], date[0]); return beginYearWeek + endYearWeek; } else { return ""; } } } } methods: { changeDate() { if (this.birthday) { // 如果已选择 if (this.timeName !== '周') { this.advancedSearch.beginTime = this.birthday[0] this.advancedSearch.endTime = this.birthday[1] this.getDataList() } else { // 如果是周选择器,引入day用于处理周选择器,开始和结束的周时间加1天 this.advancedSearch.beginTime = dayjs(this.birthday[0]).startOf('week').add(1, 'day').format('YYYY-MM-DD') this.advancedSearch.endTime = dayjs(this.birthday[1]).endOf('week').add(1, 'day').format('YYYY-MM-DD') this.getDataList() } } else { this.advancedSearch.beginTime = '' this.advancedSearch.endTime = '' this.getDataList() } }, },};</script>

 dayjs的官方网站Day.js中文网

此文参考:

1.vue elementui时间控件,(单框同时选)范围选择周,季,年。_打杂的程序员的博客-CSDN博客_vue 时间控件

2.element-ui中的el-date-picker日期选择器, 周选择器获取当前选中周,并显示当日期时间段_八神异步的博客-CSDN博客_el-date-picker 选择周

本文链接地址:https://www.jiuchutong.com/zhishi/278769.html 转载请保留说明!

上一篇:navapp.exe - navapp是什么进程文件 作用是什么

下一篇:iconfig.exe进程是什么文件的 iconfig进程查询(icon files)

  • 转让金融商品应交增值税计入
  • 研发费用加计扣除75%还是100%
  • 所得税汇算清缴时间期限
  • 收到商业承兑汇票到期付款通知单,据此登记相关账簿
  • 商品流通企业应收账款的研究
  • 用于员工福利的会计分录
  • 补缴税款的会计怎么做账
  • 怎么控制酒店的设备
  • 生产研发设备
  • 视同销售的销售额如何确定
  • 建筑行业税负率表2023最新
  • 出纳人员怎么核酸检测
  • 软件开发过程的一般步骤
  • 港币转人民币怎么转账
  • 出售设备账务处理
  • 增值税应纳所得额是什么意思
  • 加油充值卡有优惠吗
  • 年终奖跟13薪有什么区别
  • 出差补贴没有发票
  • 企业法人不发工资合法吗
  • 月息和年息的换算公式等额本息
  • 税前扣除是好事吗
  • 全月应纳税所得额什么意思
  • 厂区绿化工程计入什么科目
  • 银行承兑汇票质押贷款骗局
  • 母公司投资收益和子公司
  • Win11 Dev 预览版 Build 25300
  • 安装win7提示版本过低
  • 未按规定开具发票怎么处罚
  • 资产减值损失会影响利润总额吗
  • php yield 异步
  • php处理excel
  • 民营医院所得税税率
  • php 性能优化
  • 我一定要用自己的双手拼出来
  • 小微企业认定标准时间
  • 语音识别的正确流程
  • es6箭头函数写法
  • php基于单例模式开发
  • 股东分红会计分录案例
  • 发票内容服务费可以吗?没有明细
  • 营改增后材料价差调整
  • 无形资产出租如何入账
  • 不是公司员工可以报销费用吗
  • 待转销项税额转出
  • 其他收益做账
  • 工会经费到底怎么算
  • 小规模公司购买汽车会计分录
  • 汇算清缴补缴税款会计分录
  • 税控盘减免税款冲减管理费用
  • 子公司注销前资金怎么办
  • 运费开什么发票
  • 汽车三产件
  • 总公司可以给子公司开票吗
  • 为什么到期一次还本付息要用债权投资利息调整
  • 旅行社开什么票
  • mysql数据备份的方式
  • 要建立linux分区可以有哪几种方法
  • win8.1怎么安装appx没有许可证
  • WIN10系统怎么清理电脑c盘垃圾怎么清理
  • ubuntu怎样
  • sllights.exe - sllights进程是什么意思
  • windows10无法关闭
  • windows媒体中心关不掉
  • 旅游软件页面
  • win10系统预览版
  • win8能不能玩gta5
  • glimp使用方法
  • centos搭建php
  • find 批处理
  • 如何用js实现一个简单的计算器
  • java中主要使用unicode编码方式
  • javascript编程基础
  • 应税销售额和应纳税额
  • 教师资格证认定流程
  • 试验费属于什么税收编码
  • 1950土地改革后土地所有权
  • 2013年山西高考作文
  • 印尼贸易政策
  • 纳税服务理念创新不足
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设