tnblog
首页
视频
资源
登录

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

5220人阅读 2023/10/8 16:06 总访问:725442 评论: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)

评价

css弹性盒子flex布局

css弹性盒子由于版本不同浏览器问题造成了一些不同的写法display:flexbox;在google浏览器中如果使用下面的写法就不行displa...

可输入下拉文本框据输入动态加载数据 jquery-editable-select

用到一个jquery-editable-select的控件github地址:https://github.com/indrimuska/jquery-editable-select这个插件的原理是...

.net mvc分部页.net core分部页

.net分部页的三种方式第一种:@Html.Partial(&quot;_分部页&quot;)第二种:@{ Html.RenderPartial(&quot;分部页&quot;);}...

css中单位pxemrem和vh/vw的理解

&gt;px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。em是相对长度单位。相对于当前对象内文本的字...

让IIS支持webp格式图片让IIS支持vtt格式iis设置mime类型iis配置支持的类型

webp格式图片可以让图片体积变小。也让下载图片变得更加困难一点 在线制作webp工具 https://www.upyun.com/webp?utm_mediu...

网页上传文件断点续传的实现无视文件大小上传以及datatables基本用法

首先明白js是客户带执行代码,c#是服务器上执行代码。本地文件需要用到js处理,服务器端接受c#代码处理1.HTML页面,文件信...

如何使用图标像使用文字一样使用文本图标的方法

1.首先在Iconfont-阿里巴巴矢量图标库上面找到你需要的图标然后加入你的购物车然后选择图标;注意:每个类型的图标会大小不...

使用七牛云的cdn服务提高图片的加载速度

CDN介绍CDN的全称是Content Delivery Network,即内容分发网络。CDN加速主要是加速静态资源,如网站上面上传的图片、媒体,...

通俗易懂什么是.NET?什么是.NET Framework?什么是.NET Core?

朋友圈@蓝羽 看到一篇文章写的太详细太通俗了,搬过来细细看完,保证你对.NET有个新的认识理解原文地址:https://www.cnblo...

JS监听input、keydown有输入法时打字完成后触发事件

在给输入框绑定input或keydown事件时预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件可以用到c...

修改了css后让浏览器从缓存中更新

当我们修改了css后,如果不做一些操作,浏览器是不会自动更新我们的样式文件的。除非是过期或者用户手动刷新清理缓存等。所...

C MVC RedirectToAction跳转时候传递参数Action之间传值

MVC Action之间传值,页面跳转传值方法一:路由传值很简单直接使用 RedirectToAction(string actionName, string controller...

当你工作遇到以下几种状态时请果断跳槽走人

已经有想跳槽的念头,但是一直磨磨蹭蹭、犹犹豫豫的混日子,这种念头或者一直持续,或者是不是冒出头来占据你的思维了。于...

C与Java二进制编码转换补码

在C#与Java接口对接时,需要将图片转化为二进制编码传输,这时候发现c#转换出来的编码的值是0~255的范围,而java方需要的是...
真诚,善良,美好,温柔,皆是你
排名
9
文章
120
粉丝
5
评论
5
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术