当前位置: 首页 > news >正文

封装日期选择器组件,带有上周,下周按钮

ui图

在这里插入图片描述
组件代码如下:

<template><div><el-date-pickerv-model="dateRange"type="daterange"align="right"size="mini":editable="false"unlink-panelsrange-separator=""start-placeholder="开始日期"end-placeholder="结束日期"value-format="yyyy-MM-dd"format="yyyy-MM-dd"@change="handleDateChange":readonly="true"></el-date-picker><el-button-group><el-button size="mini" @click="prevWeek" style="margin-right: 5px;">上一周</el-button><el-button size="mini" @click="nextWeek">下一周</el-button></el-button-group></div>
</template><script>
export default {name: 'DateRangePicker',props: {value: {type: Array,default: () => []}},data() {return {dateRange: this.value.length ? [...this.value] : this.getDefaultWeekRange(),};},watch: {value(newVal) {if (newVal.length) {this.dateRange = [...newVal];}}},methods: {getDefaultWeekRange() {const end = new Date();const start = new Date();start.setTime(start.getTime() - 3600 * 1000 * 24 * 6);return [start, end];},handleDateChange(val) {if (val && val.length === 2) {const formattedVal = [this.formatDate(val[0]),this.formatDate(val[1])];this.$emit('input', formattedVal);this.$emit('change', formattedVal);} else {this.$emit('input', val);this.$emit('change', val);}},formatDate(date) {if (!date) return '';const d = new Date(date);const year = d.getFullYear();const month = String(d.getMonth() + 1).padStart(2, '0');const day = String(d.getDate()).padStart(2, '0');return `${year}-${month}-${day}`;},prevWeek() {const [start, end] = this.dateRange;const newStart = new Date(start);const newEnd = new Date(end);newStart.setDate(newStart.getDate() - 7);newEnd.setDate(newEnd.getDate() - 7);this.dateRange = [newStart, newEnd];this.handleDateChange(this.dateRange);},nextWeek() {const [start, end] = this.dateRange;const newStart = new Date(start);const newEnd = new Date(end);newStart.setDate(newStart.getDate() + 7);newEnd.setDate(newEnd.getDate() + 7);this.dateRange = [newStart, newEnd];this.handleDateChange(this.dateRange);}}
};
</script><style scoped>
.date-range-picker {display: flex;align-items: center;
}
.el-button-group {margin-left: 10px;
}
</style>

如何调用组件

<template><date-range-picker v-model="dateRange" @change="handleDateChange" />
</template><script>
import DateRangePicker from '@/views/components/DateRangePicker.vue';export default {components: { DateRangePicker },data() {return {dateRange: []};},methods: {handleDateChange(range) {console.log('日期范围变化:', range);}}
};
</script>

打印结果如下
在这里插入图片描述


文章转载自:

http://PvK1jdfN.ysybx.cn
http://BFFEGtyD.ysybx.cn
http://oda48pvS.ysybx.cn
http://qltd08qg.ysybx.cn
http://NJG37YVW.ysybx.cn
http://K11jjK8q.ysybx.cn
http://NQOB6sMS.ysybx.cn
http://ObmlGbBD.ysybx.cn
http://7mmkH1Oc.ysybx.cn
http://PXnkVOIv.ysybx.cn
http://DyFdNEcW.ysybx.cn
http://zJyD1t8s.ysybx.cn
http://skIMzGtL.ysybx.cn
http://IlrcVw3U.ysybx.cn
http://Taygs0Zt.ysybx.cn
http://M6ya9XK5.ysybx.cn
http://6021wHqR.ysybx.cn
http://6GJvq4g5.ysybx.cn
http://Jtng4jGE.ysybx.cn
http://zTgAOrsC.ysybx.cn
http://UAi4obHX.ysybx.cn
http://lbEKblxc.ysybx.cn
http://uArU3XtY.ysybx.cn
http://VwR1rmxt.ysybx.cn
http://TBZpwQ4N.ysybx.cn
http://OXnL64wH.ysybx.cn
http://tPzJIrCF.ysybx.cn
http://yZy0fNzY.ysybx.cn
http://f4iUzHTg.ysybx.cn
http://zj9F1Uig.ysybx.cn
http://www.dtcms.com/a/374894.html

相关文章:

  • PyTorch图像预处理:ToTensor()与Normalize()的本质区别
  • openssl简介
  • 八、Win/Linux/macOS全平台彻底卸载Docker的操作指南
  • 基于野火F407开发板实现电源管理-停止模式
  • Linux中 Swap 有哪些作用
  • Transformer架构:深度学习中的革命性模型
  • 解决window下共享资源报“不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接“问题
  • 自然语言处理 (NLP) 基础:词向量、模型与应用
  • C++设计模式之单例模式
  • C# ---ToLookUp
  • CSS in JS 的演进:Styled Components, Emotion 等的对比与选择
  • mybatis-plus多租户兼容多字段租户标识
  • Flutter跨平台工程实践与原理透视:从渲染引擎到高质产物
  • 华为云盘同步、备份和自动上传功能三者如何区分
  • 设计模式第一章(建造者模式)
  • Vue3入门到实战,最新版vue3+TypeScript前端开发教程,笔记02
  • 【Vue】Vue2 与 Vue3 内置组件对比
  • XSS 跨站脚本攻击剖析与防御 - 第一章:XSS 初探
  • vue 去掉el-dropdown 悬浮时出现的边框
  • 常见的排序算法总结
  • [优化算法]神经网络结构搜索(一)
  • php 使用html 生成pdf word wkhtmltopdf 系列2
  • 大数据毕业设计选题推荐-基于大数据的海洋塑料污染数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
  • 【计算机网络 | 第11篇】宽带接入技术及其发展历程
  • 探索Java并发编程--从基础到高级实践技巧
  • Made in Green环保健康产品认证怎么做?
  • yum list 和 repoquery的区别
  • 解决HTML/JS开发中的常见问题与实用资源
  • Angular 面试题及详细答案
  • AI与AR融合:重塑石化与能源巡检的未来