位置: 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)

  • 三证合一后纳税人识别号和信用代码一样吗
  • 注册会计师税法真题
  • 车间设备折旧费属于制造费用吗
  • 固定资产进项税怎么入账
  • 税控盘当月不抵扣怎么申报
  • 19年房产税新规
  • 小规模纳税人开普票要交税吗
  • 会计核算过程中的计量尺度通常有
  • 房屋建筑物评估技术鉴定表
  • 2018年车船税收费标准
  • 企业购买黄金如何处理
  • 小规模与一般纳税人哪个好
  • 案例分析个人心得体会
  • 改扩建要计提折旧吗
  • 向境外企业转让房产
  • 收到农产品发票3%抵9%怎么做账
  • 发生的费用可以直接计入主营业务成本吗
  • 已经开了的发票可以打销货清单吗
  • 含税房租
  • 现金日记账有哪几种
  • bios如何恢复默认值
  • 文件的类型可以通过什么来区分
  • win11进入黑屏
  • 无形资产的摊销应计入什么科目
  • 鼠标灯亮但是鼠标失灵
  • 融资租赁货车
  • php中的变量都以什么开头
  • win10开机强制进入
  • 废旧物资处理计入什么科目
  • win10商店发生了错误请稍后再试
  • 没收逾期未收回的包装物押金
  • 以分期收款方式销售货物的按照什么日期确认收入的实现
  • 稿酬所得计入什么科目
  • php 时间
  • 新所得税会计准则
  • web实训报告怎么写
  • 工程师模式有什么用
  • day01-GUI坦克大战01
  • 农药普通发票可以抵扣
  • 分公司二季度安全生产分析会内容
  • 可转债公允价值变动计入
  • 跨年度的利息收入怎么做账
  • node运行vue项目
  • 购买税控设备的分录怎么做
  • MySQL提示The InnoDB feature is disabled需要开启InnoDB的解决方法
  • 事业单位无形资产包括
  • mysql的存储引擎有哪些,区别是什么
  • 异地预缴税款怎么做账
  • 现金短缺与溢余解析
  • 行政单位应缴预算款原则上按月缴清
  • 固定资产不可以搬走,那什么资产能搬走的?
  • 以前年度销售退回买方账务处理
  • 记账凭证的基本要素包括
  • 管理费用有负数怎么结总账
  • 固定资产为
  • 行政事业单位支出范围和标准
  • 一般纳税人购货取得普通发票
  • 防伪税控技术维护费
  • 计提资产减值准备会计科目
  • mysql转换数据类型
  • 电脑充电系统故障
  • 电脑收藏夹文件恢复
  • 笔记本用的上网卡
  • 怎么测试windows摄像头
  • centos 空闲磁盘合并
  • 如何更改ubuntu下载源
  • Win10预览版镜像
  • 激素六项雌二醇30
  • unity collider类属性方法
  • shell脚本 su
  • 网络ping大包
  • Windows环境下搭建Python开发环境的方法
  • javascript中的原型和原型链
  • linux给本地用户发邮件
  • javascript 日期运算
  • jquery实例
  • 税务局全年绩效分析报告
  • 杭州残保金2021年新政策申报时间
  • 小规模纳税人需要建账吗
  • 税务稽查的后果
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设