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

  • 购买土地缴纳的费用
  • 课税为什么叫课税
  • 本年利润怎么结转分录
  • 视同销售收入是纳税调整项目吗
  • 提供劳务应收未收的款项
  • 满减 优惠券
  • 税金附加是什么类
  • 银行利息月末结算方式
  • 财务凭证和预算凭证目录只能有一条数据
  • 买什么样的房子可以贷款
  • 股东拿不到钱
  • 燃气公司开发票的工程款入什么会计科目核算与分录怎么写?
  • 厂部管理人员工资属于什么会计科目
  • 个人交的工会经费个税
  • 可以把两张发票合写在记账凭证上吗
  • 以股权转让名义转让土地使用权
  • 绿化费用明细
  • 增值税税率如何计算
  • 期末未分配利润大于期初未分配利润+期末净利润
  • 网上申请的增值税专用纸质发票收到后如何确认已收到
  • 收到保险返利计入什么
  • 制造费用分配的的标准是什么?
  • 旅游服务费如何入账
  • 所得税汇算清缴补税的会计处理
  • vue blob下载文件
  • mac系统安装出错
  • 电脑默认网关不可以用
  • 期间费用计入产后成本吗
  • php获取网页视频地址
  • php使用方法
  • 代理记账费用计入什么会计科目
  • 老年人经常便秘怎么办
  • 爱丁堡几点天黑
  • 海关进口增值税如何入账
  • 政府收购企业的补偿款要交税吗
  • zend框架教程
  • dir命令linux
  • 帝国cms导航站模板
  • 股权转让协议受让方应注意
  • phpcms怎么用
  • python np数组
  • access宏操作
  • 取得发票没有加税怎么办
  • 非货币性资产交换的记忆口诀
  • sql2008怎么查询
  • 税前利润是否等于利润总额
  • 收到投资款证明怎么做账
  • 现金流量表每月要报吗
  • 关联企业费用分摊账务
  • 无法确定退货率的处理
  • 同城票据交换差额户的帐号怎么查对方的帐号
  • 结转存货跌价准备是什么意思
  • 水电费没有发票可以入账吗
  • 确定固定资产的标准
  • 财务负责人和办税员可以是一个吗
  • 失控发票已补税及滞纳金后还有事吗
  • 生育津贴与员工有关吗
  • 金税盘里显示有报税资料怎么处理
  • 收付实现制下主营业务成本怎么算
  • 公司运营成本如何计算
  • 会计分录借贷怎么分视频教程
  • 物业管理企业应按职工工资总额的1.5%计提工会经费
  • 会计账簿的设计原则有哪些
  • 什么是分表分库
  • xp系统如何安装软件
  • 如何进入opencore引导
  • win7更改win10系统要怎么更改
  • win10正版和盗版区别大吗
  • win7 64位旗舰版电脑如何取消网页自动保存密码?win7取消自动保存网页密码的方法
  • Linux系统怎么设置中文输入法
  • 为什么调用不了函数
  • linux的cp和mv
  • 最精简的年终工作总结
  • django批量创建数据
  • 购置税发票怎么看自己交了多少税
  • 郑州地方税务局网站官网
  • 区域化管理的利与弊
  • 什么是个税扣缴期限
  • 土地增值税分期清算条件?
  • 北京税务热线电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设