tnblog
首页
视频
资源
登录

element plus el-date-picker 时间格式设置,时间范围的默认值,获取当周,当月等。设置默认值为上个星期的,上个月的,一个星期的,一个月的。后台接收时间范围参数

4616人阅读 2023/10/8 16:06 总访问:689267 评论:0 收藏:0 手机
分类: 前端

vue3 下 element plus下的基础使用

非常简单直接给那个v-model给默认值就行了:

  1. <el-date-picker v-model="state.choiseDate" type="daterange" range-separator="To" start-placeholder="开始日期"
  2. end-placeholder="结束日期" size="default" value-format="YYYY-MM-DD" />

这里的v-model是state.choiseDate直接给默认值就行了:

  1. const state = reactive({
  2. choiseDate: ['2023-10-2','2023-10-8'],
  3. })

可以配合day.js赋值默认值为上个星期的内容:

  1. onMounted(() => {
  2. // 把时间限制一下,默认取一周的吧,不然数据太多了,查询很慢
  3. state.startDateTime = dayjs().add(-1, 'week').startOf('week').add(1, 'day').format('YYYY-MM-DD')
  4. state.endDateTime = dayjs().add(-1, 'week').endOf('week').add(1, 'day').format('YYYY-MM-DD')
  5. // console.log(state.startDateTime)
  6. // console.log(state.endDateTime)
  7. state.choiseDate = [state.startDateTime, state.endDateTime]
  8. })

还可以使用js+日期处理组件来获取时间范围

比如默认赋值最近一周的,其他时间同理。这里用的moment.js,使用day.js也是一个道理

  1. // 默认给时间范围赋值最近一周
  2. const end = new Date(); // 获取当前时间
  3. const start = new Date();
  4. // 当前时间往前推7天就是最近一周开始的日期
  5. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  6. this.incrementChartsDataRange = [moment(start).format('YYYY-MM-DD'),moment(end).format('YYYY-MM-DD')]

下面贴一下js获取常用时间范围的代码

js获取最近两周:

  1. const end = new Date();
  2. const start = new Date();
  3. start.setTime(start.getTime() - 3600 * 1000 * 24 * 14);
  4. picker.$emit('pick', [start, end]);

最近一月

  1. const end = new Date();
  2. const start = new Date();
  3. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  4. picker.$emit('pick', [start, end]);

最近三月

  1. const end = new Date();
  2. const start = new Date();
  3. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  4. picker.$emit('pick', [start, end]);

后台接收时间范围参数的方法

这里使用的方法是,在进行传递到后台的时候把时间范围取出来变成两个参数,这样后台就非常方便接收了

  1. const queryData = () => {
  2. console.log("重新选择时间查询,选择的时间范围", state.choiseDate)
  3. if (state.choiseDate && state.choiseDate.length > 0) {
  4. state.startDateTime = state.choiseDate[0]
  5. state.endDateTime = state.choiseDate[1]
  6. console.log("有选择时间")
  7. console.log(state.choiseDate[0])
  8. console.log(state.choiseDate[1])
  9. }
  10. else {
  11. console.log("没有选择时间")
  12. state.startDateTime = ""
  13. state.endDateTime = ""
  14. }
  15. // 获取数据的具体逻辑根据实际情况修改
  16. state.growingCirclesData = []
  17. state.pageInfo.pageIndex = 1
  18. getGrowingCircles()
  19. }

上面那个是vue3中的写法,贴一个vue2中的写法与一些补充信息

  1. queryIncrementChartsData() {
  2. if (this.incrementChartsDataRange && this.incrementChartsDataRange.length > 0) {
  3. this.incrementParams.incrementStartDate = this.incrementChartsDataRange[0]
  4. this.incrementParams.incrementEndDate = this.incrementChartsDataRange[1]
  5. console.log("有选择时间")
  6. }
  7. else {
  8. console.log("没有选择时间")
  9. this.incrementParams.incrementStartDate = ""
  10. this.incrementParams.incrementEndDate = ""
  11. }
  12. const my = this
  13. this.$http.get('/education/api/TaskMessage/GetIncrementChartsData', this.incrementParams).then(res => {
  14. console.log('获取图表数据', res)
  15. })
  16. },

这种传递两个参数的方式,在设置默认值的时候也要设置一下这两个时间

  1. mounted() {
  2. // 默认给时间范围赋值最近一周
  3. const end = new Date(); // 获取当前时间
  4. const start = new Date();
  5. // 当前时间往前推7天就是最近一周开始的日期
  6. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  7. this.incrementParams.incrementStartDate = moment(start).format('YYYY-MM-DD')
  8. this.incrementParams.incrementEndDate = moment(end).format('YYYY-MM-DD')
  9. this.incrementChartsDataRange = [this.incrementParams.incrementStartDate, this.incrementParams.incrementEndDate]
  10. this.queryIncrementChartsData()
  11. },

绑定的值定义:

  1. incrementChartsDataRange: ['2023-10-2', '2023-10-8'],
  2. incrementParams: {
  3. incrementStartDate: "",
  4. incrementEndDate: "",
  5. },

后台接收的参数可以这样定义:

  1. public class GetIncrementChartsDto
  2. {
  3. public DateTime? IncrementStartDate { get; set; }
  4. public DateTime? IncrementEndDate { get; set; }
  5. }

如何想要时间改变的时候重新执行查询,其实只需要在时间改变的事件里边执行那个查询的方法而已,取时间那个查询方法里边已经写了,这里只需要调用一下那个方法即可

  1. changeIncrementData(dataVal) {
  2. console.log("增量时间改变", dataVal)
  3. this.queryIncrementChartsData()
  4. },

欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739。有需要软件开发,或者学习软件技术的朋友可以和我联系~(Q:815170684)

评价
如果有缘,错过了还会重来,如果无缘,相遇了也会离开
排名
9
文章
115
粉丝
5
评论
5
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术