element的form查询时过滤多余的数据

  • 👨🏻‍🎓博主介绍:大家好,我是尼克.张,热爱分享知识,很高兴在这里认识大家🌟
  • 🌈擅长领域:前端开发
  • 🙏🏻如果本文章各位小伙伴们有帮助的话,🍭关注+👍🏻点赞+🗣评论+📦收藏,相应的有空了我也会回访,互助!!!
  • 🤝另本人水平有限,旨在创作简单易懂的文章,在文章描述时如有错,恳请各位大佬指正,在此感谢!!!

项目中经常有查询数据的功能,根据fom表单的内容进行查询,但是在后端有时不要传某些数据,或者不传空数据时,需要对传过去的参数进行过滤。特别当在有时间范围的情况下,需要处理开始和结束时间,因为时间范围控件返回的是一个数组,所以对应取值即可。然后再删除time这个数据,为了不影响form中的time,所以一开始需要对最新的form进行深拷贝一份。最后则使用filterParmas这个方法去除为空的值。

<el-form ref="form" :model="form" label-width="80px" inline>
	<!--...其他的el-form-item-->
  <el-form-item label="时间">
    <el-date-picker
      v-model="date"
      type="datetimerange"
      range-separator=""
      start-placeholder="开始日期"
      end-placeholder="结束日期"
      value-format="yyyy-MM-dd HH:mm:ss"
    >
    </el-date-picker>
  </el-form-item>
  <el-button round @click="getList">查询</el-button>
</el-form>
data() {
  return {
    form: {
      id: "",
      time:[],
      type: 0,
    },
  };
},
watch: {
  form: {
    handler(val) {
      let data = {
        beginTime: val.time?.[0],
        endTime: val.time?.[1],
        ...val,
      };
      data = this.$filterParams(data);
      delete data.time;
      this.finalParams = data;
      console.log(this.finalParams);
    },
    deep: true,
    immediate: true,
  },
},

当触发getList方法时,this.finalParams就是最终传给后端的参数

export function filterParams(obj) {
  for (let key in obj) {
    let falseValue = [undefined, null, ""]
    if (falseValue.includes(obj[key])) {
      delete obj[key]
    }
  }
  return obj
}

查询注意点:

修改时获取当行数据时的如果有下拉,下拉的值是由label,value字段组成。那么下拉列表里也要是label,value的格式,并且字段的值类型要相同。并且在赋值当行数据时要拷贝一下,不然改变弹框里的数据会影响表格里的数据。

  • 如果这篇文章对你有用,记得留个脚印再走哟~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值