element table动态自定义循环表头获取数据

html部分

//查询字段
 <el-form-item label="查询字段" prop="cxzd">
            <el-select
              size="mini"
              v-model="value2"
              multiple
              collapse-tags
              filterable
            >
              <el-option
                v-for="(item, index) in options2"
                :key="index"
                :label="item.zdzwm"
                :value="item.id"
              />
            </el-select>
          </el-form-item>
          //列表
 <el-table :height="tableHeight" :data="dataForm" style="width: 100%">
        <el-table-column
          v-for="(col, index) in cols"
          :key="index"
          :prop="col.prop"
          :label="col.label"
        />
      </el-table>

初始化部分

      dataForm: [],
      cols: [],

js部分

  //控制表格高度
    getHeight() {
      this.tableHeight = window.innerHeight - 450 + "px";
    },
    //列表查询方法
    loadTableData(type) {
      if (type == "search") {
        this.current = 1;
      }
      this.cols = [];
      if (this.value2 == null || this.value2.length == 0) {
        this.$alert("未选择查询字段", "提示", {
          confirmButtonText: "确定",
        });
        return;
      }
      let cxzdIds = this.value2.join(",");
      let cxtj = JSON.stringify(this.tjForm);
      //如果this.showtj为true则传cxtj,否则传pxtj
      let obj = {};
      if (this.showtj) {
        obj.cxtj = cxtj;
      } else {
        obj.pxtj = cxtj;
      }
      this.$http({
        url: this.$Api.query,
        method: "POST",
        headers: { "Content-Type": "application/x-www-form-urlencoded" },
        data: this.$qs.stringify({
          current: this.current,
          size: this.size,
          tjbid: this.tjbid,
          cxzdIds: cxzdIds,
          ...obj,
        }),
      }).then((res) => {
        if (res.data.code == "1") {
          // 重置表单列表字段
          //options2的数据是请求接口获取到的
          for (let i = 0; i < this.value2.length; i++) {
            for (let j = 0; j < this.options2.length; j++) {
              if (this.value2[i] == this.options2[j].id) {
                this.cols.push({
                  prop: this.options2[j].zdm,
                  label: this.options2[j].zdzwm,
                });
              }
            }
          }
          //加载列表数据
          this.dataForm = res.data.data.records;
          this.size = parseInt(res.data.data.size);
          this.total = parseInt(res.data.data.total);
        } else {
          this.$message.error(res.data.msg);
        }
      });
    },

options2数据如下
在这里插入图片描述

如果需要实现 Element UI 表格的动态表头,你可以使用动态绑定 el-table-column 的属性来实现。具体步骤如下: 1. 在 data 中定义一个数组,用于存储表头的配置信息。 2. 在 el-table 中使用 v-for 循环遍历表头配置数组,动态绑定 el-table-column 的属性。 3. 如果需要在表头列中自定义显示内容,可以使用 slot-scope 属性来实现。 以下是一个示例代码: ```html <template> <el-table :data="tableData"> <el-table-column v-for="(item, index) in tableColumns" :key="index" :prop="item.prop" :label="item.label"> <template v-if="item.slotName" slot-scope="scope"> <slot :name="item.slotName" :row="scope.row" :column="item"></slot> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tableColumns: [ { prop: 'name', label: '姓名' }, { prop: 'age', label: '年龄' }, { prop: 'gender', label: '性别' }, { prop: 'action', label: '操作', slotName: 'action' } ], tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' } ] } } } </script> ``` 在上面的例子中,我们使用了一个数组 tableColumns 来存储表头的配置信息,包括每一列的 prop、label 和 slotName。然后在 el-table 中使用 v-for 循环遍历表头配置数组,动态绑定 el-table-column 的属性。如果某一列需要自定义显示内容,我们可以在 tableColumns 中定义 slotName 属性,并在 el-table-column 中使用 slot-scope 属性来实现自定义显示内容。最后,在表格的具体数据中,我们只需要按照表头列的属性名定义数据即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值