vue el-table expand只展开一行

el-table 有展开行功能,但是展开多行并不好看,所以需要设置 expand只展开一行,用expand-change可以实现
在这里插入图片描述
对于 el-table 绑定填充数据为 tableData,对它的一个 el-table-column,将其设置为:type=“expand”,并且在其中定义一个表格,绑定填充数据为 childTableData,这样点击一行就会展开一个表格,且其填充数据是另一个数组,实际项目中可以从后台获取。

代码如下:

    <el-table
      highlight-current-row
      class="uiot-table"
      max-height="601"
      size="mini"
      border
      :default-sort="{prop: 'name', order: 'ascending'}"
      :data="tableData"
      @sort-change="currSortChange"
      @current-change="currRowchange"
      @expand-change="expandChange">
      <el-table-column type="expand">
        <template>
          <el-table class="table-expand" :data="childTableData" >
            <el-table-column prop="category" :label="$t('deviceManage.device.propTable.name')"></el-table-column>
            <el-table-column prop="address" :label="$t('deviceManage.device.propTable.code')"></el-table-column>
            <el-table-column prop="shop" :label="$t('deviceManage.device.propTable.val')"></el-table-column>
            <el-table-column prop="shopId" label="任务状态"></el-table-column>
          </el-table>
        </template>
      </el-table-column>
      <el-table-column :label="$t('deviceManage.device.table.name')" prop="id"></el-table-column>
      <el-table-column :label="$t('deviceManage.device.table.lat')" prop="name"></el-table-column>
      <el-table-column :label="$t('deviceManage.device.table.lng')" prop="desc"></el-table-column>
    </el-table>
<script>
import {
  HeadCellStyle,
  HeadRowStyle,
  RowStyle,
  CellStyle
} from "@/utils/method";
import "@/styles/uiot.scss";
import apis from "@/api/devApi";
import devDlg from "./components/deviceDlg"

export default {
  components: {
    devDlg
  },
  data() {
    return {
      CurrentRow: "",
      oneDev: {},
      searchName: "",
      dialogType: "new",
      dialogVisible: false,
      tableData: [
        {
          id: "12987122",
          name: "好滋好味鸡蛋仔",
          desc: "荷兰优质淡奶,奶香浓而不腻"
        },
        {
          id: "12987122",
          name: "好滋好味鸡蛋仔",
          desc: "荷兰优质淡奶,奶香浓而不腻"
        },
        {
          id: "12987122",
          name: "好滋好味鸡蛋仔",
          desc: "荷兰优质淡奶,奶香浓而不腻"
        },
        {
          id: "12987122",
          name: "好滋好味鸡蛋仔",
          desc: "荷兰优质淡奶,奶香浓而不腻"
        }
      ],
      childTableData: [
        {
          category: "江浙小吃、小吃零食",
          address: "上海市普陀区真北路",
          shop: "王小虎夫妻店",
          shopId: "10333"
        },
        {
          category: "江浙小吃、小吃零食",
          address: "上海市普陀区真北路",
          shop: "王小虎夫妻店",
          shopId: "10333"
        },
        {
          category: "江浙小吃、小吃零食",
          address: "上海市普陀区真北路",
          shop: "王小虎夫妻店",
          shopId: "10333"
        },
        {
          category: "江浙小吃、小吃零食",
          address: "上海市普陀区真北路",
          shop: "王小虎夫妻店",
          shopId: "10333"
        }
      ],
      total: 0,
      size: 20,
      currPage: 1,
      sortType: true,
      sortName: "name"
    };
  },
  methods: {
    expandChange(row,expandedRows){
      if(expandedRows.length>1){
        expandedRows.shift()
      }
    }
  }
};
</script>

页面效果如下:
在这里插入图片描述
每次点击只会展开表格的一行。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
Element UI中,要展开`el-table`表格的行,你可以使用`expand-row-keys`属性来控制展开的行。首先,你需要在表格的数据中添加一个属性用于标识是否展开该行,比如命名为`expanded`。然后,在`el-table`组件上添加`expand-row-keys`属性,并将其绑定到一个数组,用于存储展开的行的唯一标识。最后,在表格的列配置中,使用`scoped-slot`来自定义展开的内容。 下面是一个示例代码: ```html <template> <el-table :data="tableData" :expand-row-keys="expandedRows" @expand-change="handleExpandChange" > <!-- 自定义展开内容 --> <template v-slot="{ row }"> <el-form :inline="true"> <el-form-item label="姓名"> {{ row.name }} </el-form-item> <el-form-item label="年龄"> {{ row.age }} </el-form-item> <!-- 其他表单项 --> </el-form> </template> <!-- 表格列配置 --> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <!-- 其他列配置 --> </el-table> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, expanded: false }, { name: '李四', age: 20, expanded: false }, // 其他数据 ], expandedRows: [] // 存储展开的行的唯一标识 }; }, methods: { handleExpandChange(row, expanded) { // 当展开行变化时更新expandedRows数组 if (expanded) { this.expandedRows.push(row); // 将展开的行添加到数组中 } else { const index = this.expandedRows.findIndex(item => item === row); if (index > -1) { this.expandedRows.splice(index, 1); // 从数组中移除收起的行 } } } } }; </script> ``` 这是一个基本的示例,你可以根据你的实际需求自定义展开内容和其他列配置。请注意,你需要根据实际情况修改表格数据和列配置的属性名。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值