美文网首页
vue+elementUI 动态生成查询表单并设置默认值

vue+elementUI 动态生成查询表单并设置默认值

作者: Mr菜头 | 来源:发表于2020-06-24 17:06 被阅读0次

调用组件(父组件):

<fuzzy-search :inquireData="fuzzyFrom" @fuzzySearch="searchAgvReport" ref="fuzzySearch"/>

<script>
import fuzzySearch from "./components/FuzzySearch/defaultSearch.vue";
export default {
  name: "barChart",
  components: { fuzzySearch },
  data() {
    return {
      fuzzyFrom:{
        formItems:[
          {flag: "timer", name: "startTime",value:new Date(new Date()-(60*60*24*30*1000))},
          { flag: "timer", name: "endTime",value:new Date()},
          {flag:"select" ,name:'code',selectList:[{id:3,name:'日'},{id:1,name:'月'},{id:2,name:'年'}],value:3}
        ]
      },
    };
  },
</script>

查询组件(子组件)

<template>
  <div>
    <el-button @click="handleSearch">查询</el-button>
    <div class="sigle">
      <el-form label-position="left" :inline="true" :model="inquireData">
        <el-form-item   v-for="(item,index) in inquireData.formItems"
          :label="item.label"   :key="index"   v-if="item.flag==='input'" >
            <el-input v-model="item.value" style="width:200px"/>
        </el-form-item>

        <el-form-item
          v-else-if="item.flag==='select'"
          :label="item.label"
        >
          <el-select v-model="item.value">
            <el-option
              v-for="(opt, index) in item.selectList"
              :key="index"
              :value="opt.id"
              :label="opt.name"
            />
          </el-select>
        </el-form-item>
        <el-form-item 
            v-else-if="item.flag==='timer'" 
            :label="$t('fuzzySearch.'+item.name)">
          <el-date-picker v-model="item.value" type="date" format="yyyy-MM-dd"></el-date-picker>
        </el-form-item>
      </el-form>
    </div>
  </div>
</template>
<script>
import Moment from 'moment'
export default {
  name: "fuzzySearch",
  props: {
    inquireData: {
      type: Object,
      default() {
        return {formItems:[]};
      }
    },
  },
  data() {
    return { };
  },
  watch: {
  },
  methods: {
    handleSearch() {
      let self = this;
      let searchParams = [];
      let params={};
      searchParams = self.inquireData.formItems; 
      for (let i in searchParams) {
        let value = searchParams[i].value;
        if(!value || value ===""){ //去除空值
          if(typeof(value) != "boolean"){ //布尔值需要保留
            continue;
          }
        }
        if(searchParams[i].flag === "timer"){
          params[searchParams[i].name] = Moment(value).format('YYYY-MM-DD HH:mm:ss')
        }else{
          params[searchParams[i].name] = value;
        }
      }
      this.$emit("fuzzySearch", params);
    },
  }
};
</script>

实际上就是利用vue props 直接传入 表格的数据 并 把 v-model 直接设置为 传入的form item.value

相关文章

网友评论

      本文标题:vue+elementUI 动态生成查询表单并设置默认值

      本文链接:https://www.haomeiwen.com/subject/ntdntktx.html