首页 > 其他分享 >table的expand展开——插槽

table的expand展开——插槽

时间:2024-02-19 23:57:16浏览次数:17  
标签:jzmc jz const 插槽 jm 井组 table expand row

el-table 表格展开(type="expand"):

  • type 除了展开 expand,还有序号 index、多选 selection
<el-table :data="myTableData">
  
  <el-table-column type="expand" width="30">
    <template #default="props">
      <el-table :data="jzTableData" style="margin: 10px">
        <el-table-column label="xx" prop="jm" />
        <el-table-column label="yy" prop="bzjh" />
        <el-table-column label="xy" prop="hzjh" />
        <el-table-column label="yx" prop="mqjb" />
      </el-table>
    </template>
  </el-table-column>
  
  <el-table-column label="xxyy" align="center" :show-overflow-tooltip="true" width="80">
    <!--  也可以用下述这种方式写在<el-table-column>里,利用本行的某一个值进行别的操作  -->
    <template
        #default="scope"><span>{{ scope.row['jzmc'] }}</span>
    </template>
  </el-table-column>
  • 已知要做下述表格的展开:

    <el-table-column label="分类" align="center" :show-overflow-tooltip="true" width="80">
      <template
          #default="scope"><span>{{ scope.row['jzmc'] }}</span>
      </template>
    </el-table-column>
    
    <el-table-column type="expand" width="30">
      <template #default="props">
        <el-table :data="jzTableData" style="margin: 10px">
          <el-table-column label="此分类下的物品信息" prop="jm" />
          <!-- ...... -->
        </el-table>
      </template>
    </el-table-column>
    

数据存放形式为:(分开存)

const myTableData = ref([{ // 放 label="分类"
  "jzmc": "类别1",
}, {
  "jzmc": "类别2"
}, {
  "jzmc": "类别3"
}, {
  "jzmc": "类别4"
}, {
  "jzmc": "类别5"
}])

// 井组下井名与信息
const jzTableData = ref([{ // 放展开处显示各自的jm
  "jz": "类别1",
  "jzmc": [{
    "jm": "11"
    }, {
      "jm": "12"
    }, {
      "jm": "13"
    }]
  }, {
    "jz": "类别2",
    "jzmc": [{
      "jm": "21"
    }, {
      "jm": "22"
    }, {
      "jm": "23"
    }]
  }
])
  • 这里可以使用 JavaScript 的 find 方法来找到匹配的井组,然后选择对应的井名,这就需要在 Vue 组件中添加一个方法来处理这个逻辑:

    // el-table里:
    <template #default="props">
      <el-table :data="getJmxx(props.row)" style="margin: 10px">
      	<el-table-column label="井名" prop="jm" />
      </el-table>
    </template>
                  
    // 新方法事件
    const getJmxx =(row)=> {
      const findJm = jzTableData.value.find(jz => jz.jz === row.jzmc);
      if (findJm) {
        return findJm.jzmc;
      } else {
        return [];
      }
    }
    

那如果数据仅是:(存一起)

// 井组下井名与信息
const jzTableData = ref([{
  "jzmc": "井组1",
  "jz": [{
    "jm": "井11"
  }, {
    "jm": "井12"
  }, {
    "jm": "井13"
  }]
}, {
  "jzmc": "井组2",
  "jz": [{
    "jm": "井21"
  }, {
    "jm": "井22"
  }, {
    "jm": "井23"
  }]
}, {
  "jzmc": "井3"
}, {
  "jzmc": "井4"
}, {
  "jzmc": "井5"
}
])
  • 这种的,然后 template 部分更简单,改为:

    <el-table :data="jzTableData" height='calc(100% - 158px)'
              :style="{width: '100%'}" :border="false" :show-summary="false" size="default"
              :stripe="true" :highlight-current-row="false" :cell-style="{padding: '8px 0 '}">
      <el-table-column type="selection"></el-table-column>
      <el-table-column type="expand" width="30">
        <template #default="props">
    			<el-table :data="props.row.jz" style="margin: 10px">
     				 <el-table-column label="井名" prop="jm" />
          </el-table>
        </template>
      </el-table-column>
      
      <el-table-column label="井组名称" align="center" :show-overflow-tooltip="true" width="80">
        <template
                  #default="scope"><span>{{ scope.row['jzmc'] }}</span></template>
      </el-table-column>
      <!-- ...... -->
    

标签:jzmc,jz,const,插槽,jm,井组,table,expand,row
From: https://www.cnblogs.com/zhu-ya-zhu/p/18022194

相关文章

  • 探索AI视频生成新纪元:文生视频Sora VS RunwayML、Pika及StableVideo——谁将引领未来
    探索AI视频生成新纪元:文生视频SoraVSRunwayML、Pika及StableVideo——谁将引领未来由于在AI生成视频的时长上成功突破到一分钟,再加上演示视频的高度逼真和高质量,Sora立刻引起了轰动。在Sora横空出世之前,Runway一直被视为AI生成视频的默认选择,尤其是自去年11月推出第二代模型以......
  • ProTable双击可编辑
    要实现在AntDesign的Table组件中双击单元格修改内容,你可以通过以下步骤来实现:创建一个React组件,并引入所需的依赖:npminstallantd编写示例代码:importReact,{useState}from'react';import{Table,Input}from'antd';constEditableTable=()=>{c......
  • 循环可变化的集合 数组 datatable 等 || c# winfrom DataGridView 动态UI下载功能
    Gif演示   分解步骤1,使用组件DataGridView2,使用DataSource来控制表格展示的数据来源(注意:来源需要是DataTable类型)3,需要用到异步线程。如果是不控制数据源的话,需要使用UI安全线程;(使用Control.Invoke或Control.BeginInvoke方法)4,DataGridView的列如果设置图片,尽量代码......
  • nativeUI页面table列表显示,render渲染函数
    {key:'type',title:$t('cmdType'),width:150,align:'center',render(t){switch(t.type){case2:returnh('span',{......
  • 玩转CompletableFuture线程异步编排,看这一篇就够了
    转载自:https://blog.csdn.net/w306026355/article/details/1097072691、CompletableFuture介绍CompletableFuture可用于线程异步编排,使原本串行执行的代码,变为并行执行,提高代码执行速度。学习异步编排先需要学习线程池和lambda表达式相关知识,学习线程池可以移步我的另一篇博......
  • 解决vue2中el-table表格组件的空状态过小的问题
    问题当我们使用element的表格组件的时候,空状态会变的非常瘪,就会造成页面非常难看这样很不美观解决办法可以使用插槽设置空状态,并通过css来调整空状态的样式新建一个空表格<template><div><el-table:data="tableData"stripestyle="width:100%">......
  • css table 设置记录
     td,th{padding:3px7px2px7px;font-weight:bold;--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#......
  • vue 子组件为插槽slot提供内容
    app.vue<template> <h1>插槽知识</h1> <SmallSlot> <template#header>  <div>  <ul>   <li>1</li>   <li>2</li>   <li>3</li>  </ul> </div> </......
  • vue 具名插槽slot 用法
    vue具名插槽slot为插槽取名字app.vue<template> <h1>插槽知识</h1> <SmallSlot> <template#header>  <div>  <ul>   <li>1</li>   <li>2</li>   <li>3</li>  </ul> ......
  • vue 插槽slot 用法
    vue插槽slot父组件为子组件传递html结构app.vue<template> <h1>插槽知识</h1> <SmallSlot> <div>  <ul>   <li>1</li>   <li>2</li>   <li>3</li>  </ul> </div> </Sma......