elementui 时间控件el-date-picker 初始化有默认值时,清空后,重置无法回填问题解决方法

elementui 时间段控件 el-date-picker 初始化有默认值时,清空后,重置无法回填问题解决方法

1. 操作过程
列表,查询条件是时间段,初次进入页面,默认查询:当前时间至前一个月的数据。
当点击时间控件的“x”清除默认时间后,再点击“重置”按钮,会出现两个错误。

2. 问题1
F12 报错内容
解决办法:
监听dateRange,发生变化时,置为空数组,而不是null;

 watch: {
    // 监听日期清理后数据为null进行处理否则会报错
    'dateRange'(newVal) {
      if (!newVal) {
        this.dateRange = [];
      }
    }
  }

3. 问题2
修复问题1后,点击重置,默认时间依然不显示,打印 this.dateRange是有值的。
解决办法:增加属性: defaultRange: [], 保存默认值,需要时,赋值给this.dateRange

4. 部分完整代码

 <el-form-item label="办理时间">
        <el-date-picker
          v-model="dateRange"
          style="width: 380px"
          value-format="yyyy-MM-dd HH:mm:ss"
          type="datetimerange"
          range-separator="至"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
        ></el-date-picker>
      </el-form-item>
<script>

import { parseTime } from "@/utils/ruoyi";

export default {
  name: "bike-search",
  dicts: ['exception_data'],
  data() {
    return {
      // 遮罩层
      loading: true,
      bikeList: [],
      dateRange:[],
      defaultRange: [],
      // 查询参数
      queryParams: {
        pageNum: 1,
        pageSize: 20,
        beginTime: undefined,
        endTime: undefined
      },
     
  },
  created() {
    this.setTimeParams();
    this.getList();
  },
  methods: {
    setTimeParams(){
      let now = new Date();
      let begin = new Date(now.getTime());
      begin.setMonth(begin.getMonth()-1);
      let beginstr = parseTime(begin,'{y}-{m}-{d} {h}:{i}:{s}');
      let endstr = parseTime(now,'{y}-{m}-{d} {h}:{i}:{s}');
      this.defaultRange=[beginstr, endstr];
      this.dateRange = this.defaultRange;
    },
    /** 查询业务列表 */
    getList() {
      this.loading = true;
      bikeList(this.addDateRangeInner()).then(response => {
        this.bikeList = response.rows;
        this.total = response.total;
        this.loading = false;
      });
    },
    addDateRangeInner(){
      this.queryParams.beginTime = this.dateRange[0];
      this.queryParams.endTime = this.dateRange[1];
      return this.queryParams;
    },
    
    /** 搜索按钮操作 */
    handleQuery() {
      this.queryParams.pageNum = 1;
      this.getList();
    },
    /** 重置按钮操作 */
    resetQuery() {
      this.resetForm("queryForm");
      this.setTimeParams();
      this.handleQuery();
    },

  },

  watch: {
    // 监听日期清理后数据为null进行处理否则会报错
    'dateRange'(newVal) {
      if (!newVal) {
        this.dateRange = [];
      }
    }
  }


};
</script>
  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
el-date-pickerElement UI中的日期选择器组件,picker-options是el-date-picker组件的一个属性,用于配置日期选择器的选项。 通过设置picker-options属性,可以自定义日期选择器的行为和外观。常见的picker-options属性包括: 1. disabledDate:用于禁用某些日期的函数。可以根据具体需求自定义禁用的日期范围。 2. shortcuts:用于配置快捷选项的数组。每个快捷选项都是一个对象,包含text和onClick两个属性。text表示快捷选项的文本,onClick是一个回调函数,用于处理点击快捷选项后的逻辑。 3. format:用于指定日期的显示格式。可以使用预定义的格式字符串,也可以自定义格式。 4. placeholder:用于设置日期选择器的占位符文本。 5. startPlaceholder和endPlaceholder:用于设置范围选择器的开始和结束日期的占位符文本。 6. rangeSeparator:用于设置范围选择器的分隔符文本。 下面是一个示例,演示如何使用picker-options属性配置el-date-picker组件: ```html <template> <div> <el-date-picker v-model="date" type="date" :picker-options="pickerOptions" placeholder="选择日期" ></el-date-picker> </div> </template> <script> export default { data() { return { date: '', pickerOptions: { disabledDate(time) { // 禁用所有今天之前的日期 return time.getTime() < Date.now() - 8.64e7; }, shortcuts: [ { text: '最近一周', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 7); picker.$emit('pick', [start, end]); } }, { text: '最近一个月', onClick(picker) { const end = new Date(); const start = new Date(); start.setTime(start.getTime() - 3600 * 1000 * 24 * 30); picker.$emit('pick', [start, end]); } } ], format: 'yyyy-MM-dd', placeholder: '请选择日期' } }; } }; </script> ``` 在上面的示例中,pickerOptions对象包含了disabledDate、shortcuts、format和placeholder等属性,用于配置日期选择器的选项。通过设置picker-options属性,可以实现禁用过去日期、添加快捷选项、指定日期格式和设置占位符文本等功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值