vue el-date-picker 时间选择器选择日期范围

el-date-picker选择日期范围

这是element官网上的基础时间选择器选择时间范围

html 复制代码
<template>
  <div class="block">
    <span class="demonstration">默认</span>
    <el-date-picker
      v-model="value1"
      type="daterange"
      range-separator="至"
      start-placeholder="开始日期"
      end-placeholder="结束日期">
    </el-date-picker>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value1: '',
      };
    }
  };
</script>

显示效果如下图

属性 意义
v-model 上面v-model="value1"意味着当前时间选择器组件和value1的值双向绑定,value1变化,这里面的值也会变化
type 显示类型,默认显示date,这边要选择时间范围,使用daterange
range-separator 选择范围时的分隔符,上面选择"至"做分隔符,可能有至会消失一半的问题,这是样式问题,可以点击element-ui中的el-date-picker 页面至字显示不全的原因及解决查看解决方案
start-placeholder 范围选择时开始日期的占位内容
end-placeholder 范围选择时结束日期的占位内容

在查询中添加时间选择器的查询

html 复制代码
<template>
  <div>
    <el-form>
      <el-form-item>
        <el-date-picker
          @change="gettime"
          v-model="rangeDate"
          type="daterange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          value-format="yyyy-MM-dd"
        >
        </el-date-picker>
      </el-form-item>
    </el-form>
  </div>
</template>

<script>
export default {
  data() {
    return {
      rangeDate: "",
      start: "",
      end: "",
    };
  },
  methods:{
    gettime(rangeDate) {
      //定义开始结束时间
      if (rangeDate != null) {
        this.start = rangeDate[0];
        this.end = rangeDate[1];
      }else{
        this.start ='';
        this.end ='';
      }
    },
  }
}
</script>

@change:监听表单元素值变化的事件处理器

  • @change="gettime"这里意味着监听gettime方法的触发
    在methods内写gettime要传入双向绑定的rangeDate,rangeDate改变了数据也会变,当我们先选择了开始和结束时间,但是又清空的时候会报一个读取对象属性为null的错误,这说明rangeDate为null了,所以我们要在方法内定义开始和结束时间之前先判断rangeDate不为空,不为空才可定义开始和结束时间是rangeDate的第一和二值,否则就变为空字符串,也就是全局变量的初始状态

value-format="yyyy-MM-dd"是自定义的一个显示格式,可有可无

前端这个时候就写好了,由于改变了查询条件,我们需要在后端的查询方法内修改高级查询QueryWrapper的查询条件

时间选择分两种,选择了和没选择,由于这个组件一定有开始和结束时间,条件也随之生成,在开始和结束时间都不为空且不为null的情况下才会加上对应的查询条件,数据库内的生日字段必须在开始和结束时间中间才会被查询出来,否则不加新的查询条件,start和end都是前端传过来的

java 复制代码
    @Override
    /*返回PageUtils工具类对象*/
    public PageUtils queryPage(Map<String, Object> params) {
        String username = (String) params.get("username");
        String sex = (String) params.get("sex");
        String start=(String) params.get("start");
        String end=(String) params.get("end");

        QueryWrapper<User> qw = new QueryWrapper<>();
        /*like-模糊查询*/
        qw.like(StringUtils.isNotBlank(username),"username",username)
                .eq(StringUtils.isNotBlank(sex),"sex",sex);
        if (StringUtils.isNotBlank(start) && StringUtils.isNotBlank(end)) {
            qw.between("birthday",start,end);
        }
        /*分页查询*/
        IPage<User> page=this.page(new Query<User>().getPage(params),qw);

        return new PageUtils(page);
    }

此时重新运行,在前端就能看到时间选择筛选出的结果

相关推荐
猿究院_xyz25 分钟前
微信小程序与echarts联动安卓真机测试出现黑色阴影
前端·javascript·微信小程序·小程序·echarts
IT_陈寒36 分钟前
Redis性能翻倍的5个冷门技巧,90%开发者都不知道的深度优化方案
前端·人工智能·后端
清水迎朝阳37 分钟前
监听 edge大声朗读 样式变化
前端·edge
油丶酸萝卜别吃1 小时前
修改chrome配置,关闭跨域校验
前端·chrome
m0_740043731 小时前
3、Vuex-Axios-Element UI
前端·javascript·vue.js
风止何安啊1 小时前
一场组件的进化脱口秀——React从 “类” 到 “hooks” 的 “改头换面”
前端·react.js·面试
JS_GGbond1 小时前
给数组装上超能力:JavaScript数组方法趣味指南
前端·javascript
前端无涯1 小时前
Tailwind CSS v4 开发 APP 内嵌 H5:安卓 WebView 样式丢失问题解决与降级实战
前端
小邋遢2.01 小时前
vscod 执行npm build报错:Error: Cannot find module ‘vite‘
前端·npm·node.js
是你的小橘呀1 小时前
新手入门 React 必备:电影榜单项目核心知识点全解析
前端·javascript