首页IT科技elementui日期选择器范围(element ui datepicker时间控件实现范围选择周,季,年。)

elementui日期选择器范围(element ui datepicker时间控件实现范围选择周,季,年。)

时间2025-05-02 21:10:24分类IT科技浏览3542
导读:因项目要求,需日,周,月,季,年五种日期范围选择器,故参考文章(在末尾)后分享...

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

一.效果图

二           、版本及下载

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 // 引入dayjs export 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 选择周

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
干粉灭火器站在上风口还是下风口(站上风口,文心一言任重道远) echarts饼状图颜色渐变搭配(ECharts 饼图颜色设置教程 – 4 种方式设置饼图颜色)