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

  • 传统推广渐渐失效,有没有新的推广方式来代替呢?

    传统推广渐渐失效,有没有新的推广方式来代替呢?

  • 荣耀换机克隆在哪(荣耀手机克隆到荣耀手机)

    荣耀换机克隆在哪(荣耀手机克隆到荣耀手机)

  • 剑灵怎么赚钱(剑灵怎么赚钱最快)

    剑灵怎么赚钱(剑灵怎么赚钱最快)

  • 微信太阳表情的意思(微信表情包太阳)

    微信太阳表情的意思(微信表情包太阳)

  • 手机频繁自动重启怎么办(手机频繁自动重启是主板的问题吗)

    手机频繁自动重启怎么办(手机频繁自动重启是主板的问题吗)

  • 软件在手机桌面上找不到(软件在手机桌面没有快捷显示怎么办)

    软件在手机桌面上找不到(软件在手机桌面没有快捷显示怎么办)

  • 抖音认证蓝v后,还能改名吗(抖音认证蓝V后,能在其他账号直播吗?)

    抖音认证蓝v后,还能改名吗(抖音认证蓝V后,能在其他账号直播吗?)

  • wps卸载了文件还在吗(wps2019卸载了怎么还能打开)

    wps卸载了文件还在吗(wps2019卸载了怎么还能打开)

  • 电脑的开始键在哪里(电脑的开始键在右上角怎么回事)

    电脑的开始键在哪里(电脑的开始键在右上角怎么回事)

  • 亲密付提现对方知道吗(亲密付的钱能转出来吗)

    亲密付提现对方知道吗(亲密付的钱能转出来吗)

  • 中国移动获得的5g频段是多少GHz(中国移动获得的5g试验频率资源中属于新增频段的有)

    中国移动获得的5g频段是多少GHz(中国移动获得的5g试验频率资源中属于新增频段的有)

  • 纽扣电池没电了怎么办(纽扣电池没电了会漏液吗)

    纽扣电池没电了怎么办(纽扣电池没电了会漏液吗)

  • 腾讯会议怎么开麦(腾讯会议怎么开小窗口)

    腾讯会议怎么开麦(腾讯会议怎么开小窗口)

  • 剪映怎么拼接上下两个视频(剪映怎么拼接上一段视频)

    剪映怎么拼接上下两个视频(剪映怎么拼接上一段视频)

  • 微博修改昵称修改失败是什么意思(微博修改昵称怎么修改)

    微博修改昵称修改失败是什么意思(微博修改昵称怎么修改)

  • rx580支持什么主板(rx580his)

    rx580支持什么主板(rx580his)

  • 手机激活是什么意思(手机激活是什么步骤)

    手机激活是什么意思(手机激活是什么步骤)

  • 腾讯vr模式怎么打开(腾讯如何使用vr模式)

    腾讯vr模式怎么打开(腾讯如何使用vr模式)

  • 华为nova5pro的呼吸灯在哪里设置(华为nova5pro怎么呼叫语音助手)

    华为nova5pro的呼吸灯在哪里设置(华为nova5pro怎么呼叫语音助手)

  • 手机查社保怎么查(手机查社保怎么查询缴费记录与社会保障局一样吗)

    手机查社保怎么查(手机查社保怎么查询缴费记录与社会保障局一样吗)

  • vⅰv0手机怎么录屏

    vⅰv0手机怎么录屏

  • Windows 10无线网络连接经常掉线怎么办(windows10无线网卡怎么连接无线网)

    Windows 10无线网络连接经常掉线怎么办(windows10无线网卡怎么连接无线网)

  • linux reader怎么使用?linux reader的使用教程(linux阅读pdf)

    linux reader怎么使用?linux reader的使用教程(linux阅读pdf)

  • python公有成员和私有成员的介绍(python有public)

    python公有成员和私有成员的介绍(python有public)

  • 股票印花税如何计算
  • 材料采购成本是主营业务成本吗
  • 领用库存商品用于固定资产
  • 个体户需要给员工交保险吗
  • 没有社保可以缴费吗
  • 房地产企业回迁房增值税
  • 蔬菜批发销售免税政策
  • 资本公积与什么有关
  • 增值税退税什么时候办理
  • 进行利润分配时必须遵循的原则
  • 收资料费怎么入账科目
  • 供应商不给我们开发票,我怎么入账
  • 计提社保个人部分需要计提吗
  • 营改增后建筑施工税率调整变化
  • 建筑工程公司项目经理职责
  • 税务局代开专用发票要缴纳城建税吗?
  • 中药饮片适用增值税税率
  • 土地平整费计入什么科目
  • 亏损企业季度盈利企业所得税怎么预缴?
  • microsoft edge怎么设置关闭所有网页
  • 华为手机定位另外一个华为手机怎么办
  • 鸿蒙系统智能设备怎么开启
  • 泡脚有什么好处和作用
  • 市净率怎么计算举例说明
  • 个人所得税和企业所得税都要交吗
  • 政府发放奖励金如何入账
  • vue3.0项目
  • 营业外收支计算公式
  • 其他收益年末需要结转吗
  • 银行进账单和现金缴款单的区别
  • 银行汇票属于银行存款吗
  • 培训公司要交哪些税
  • 尚硅谷docker笔记
  • 自动化工具 业务有哪些
  • vue动态路由是什么
  • 用人单位招用失业人员补贴
  • 收押金退押金会计分录
  • 计提预付账款会计分录
  • 蔬菜免征增值税优惠
  • 事业收入如何确认
  • 如何做进项税额明细表
  • Monaco-editor的JSONSchema配置及使用介绍
  • zabbix 网络监控
  • mysql集群三种方式
  • 进料加工保税是什么意思
  • 维修费用的处理规定
  • SQL高级应用之同服务器上复制表到另一数据库中并实现去重复
  • 哪些税种影响当期损益
  • 个税申报错误已经扣税款怎么处理
  • 车辆保险费如何提高
  • 电子承兑汇票到期怎么兑现
  • 公对公转账货款写成了往来款怎么办
  • 房租费用入账怎么处理
  • 可供分配利润包括提取的盈余公积吗
  • 营改增后如何纳税
  • 个税 退手续费
  • 结转费用时财务费用为负
  • 单位车辆保险费
  • 实例讲解液化滤镜瘦身
  • mysql处理海量数据
  • mac电脑快速查询
  • centos 安装方法
  • 配置结果
  • freebsd6.2 nginx+php+mysql+zend系统优化防止ddos攻击
  • UPnPFramework.exe - UPnPFramework进程介绍
  • 如何快速找到注册的软件
  • win8 自动登录
  • python爬取教程
  • cocos2d-x教程
  • jquery validate demo 基础
  • 仿客齐集首页导航条DIV+CSS+JS [代码实例]
  • cocos设置中文
  • 关于android中view的说法正确的是
  • [android] intent实例
  • angular keyup
  • 深入解析windows第7版pdf
  • javascript教程完整版
  • 有关单位和个人应该怎么样
  • 福州税务实名认证
  • 全年个人一次性奖金单独计税优惠
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设