el-table自定义展开行

这篇具有很好参考价值的文章主要介绍了el-table自定义展开行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

根据element ui官方文档说明,展开行需要用到两个属性:row-key 和 expand-row-keys,还有expand-change事件

expand-change,vue.js,elementui,前端

 expand-change,vue.js,elementui,前端

 在el-table中:

row-key="f_ID"
:expand-row-keys="expandKeys"
@expand-change="expandChange"

 注意:row-key是数据的唯一标识。

template中完整代码如下:

<el-table :data="InfoTableData" 
        :height="tableHeight"
        :row-class-name="tableRowClassName"
        :row-style="selectedstyle"
        @selection-change="handleSelectionChange"
        @cell-click="handleOne"
        @row-click="handleRow"
        row-key="f_ID"
        :expand-row-keys="expandKeys"
        @expand-change="expandChange"
        style="width: 100% ; fontSize:16px; margin-top: 100px;"
        :header-cell-style="{'text-align':'center'}"
        :cell-style="{'text-align':'center'}">
        <el-table-column
            type="selection"
            width="55">
        </el-table-column>
        <el-table-column type="expand">
            <template #default="props">
                <div m="4">
                    <h3>展开明细</h3>
                    <el-table :data="props.row.expandRow" v-loading="loading" element-loading-text="加载中...">
                        <el-table-column label="物料编码" prop="maT_CODE" />
                        <el-table-column label="产品编码" prop="maT_LOT" />
                        <el-table-column label="产品名称" prop="maT_NAME" />
                        <el-table-column label="生产日期" prop="maT_DC" :formatter="getMatDC"/>
                        <el-table-column label="数量" prop="maT_QTY" />
                    </el-table>
                </div>
            </template>
        </el-table-column>
        <el-table-column label="序号" width="100">
            <template slot-scope="scope">
                {{scope.$index + 1}}
            </template>
        </el-table-column>
        <el-table-column label="状态" prop="f_STATE" width="60"/>
        <el-table-column label="送货单编号" prop="f_CODE" width="150"/>
        <el-table-column label="收货单编号" prop="receiptS_CODE" width="150"/>
        <el-table-column label="源单类型" prop="sourcE_ORDER_TYPE" width="100"/>
        <el-table-column label="源单编号" prop="sourcE_ORDER_CODE" width="100"/>
        <el-table-column label="供应商" prop="provider" width="100"/>
        <el-table-column label="生产商" prop="producer" width="100"/>
        <el-table-column label="送货日期" prop="senD_DATA" width="120" :formatter="dateFormat"/>
        <el-table-column label="收货地址" prop="receivE_ADDTESSES" width="100"/>
        <el-table-column label="客户" prop="customer" width="100"/>
        <el-table-column label="收货人" prop="receiver" width="100"/>
        <el-table-column label="收货人联系方式" prop="receiveR_PHONE_NUMBER"  width="140"/>
        <el-table-column label="创建人" prop="creatoR_ID" width="100"/>
        <el-table-column label="创建时间" prop="creatoR_TIME" width="120" :formatter="dateFormatCreate"/>
        <el-table-column label="审核人" prop="checK_NAME" width="100"/>
        <el-table-column label="审核时间" prop="checK_TIME" width="120" :formatter="dateFormatCheck"/>
        <el-table-column label="收货时间" prop="" width="120" :formatter="dateFormatRecive"/>
    </el-table>

解决展开行第一次展开数据不显示问题:在获取数据的时候往数据中追加一个expandRow字段(字段名可自定义)文章来源地址https://www.toymoban.com/news/detail-541714.html

获取数据的时候
...
this.InfoTableData.forEach(item => {
    item.expandRow = []
})
...
data(){
    return{
        InfoTableData:[],
        expandKeys:[],
        loading:true,
        fId:""
    }

},
methods:{
    // 展开行
        expandChange(row,expandRow){
            // 拿id
            this.fId = row.f_ID;
            //判断当前展开行是否有数据,没有则将expandKeys设为空
            if(!expandRow.length){
                this.expandKeys.shift()
                this.expandKeys = [];
                return;
            }
            //将展开行的f_ID push到expandKeys数组里面
            this.expandKeys = [];
            expandRow.forEach(item=>{
                this.expandKeys.shift()
                this.expandKeys.push(item.f_ID)
            })
            //判断是否关闭当前行
            if(expandRow.indexOf(row) == -1){
                this.expandKeys.shift()
                row.expandRow = [];
                return;
            }
            //发送axios请求
            this.$axios.post("/api/MESAPI/DeliveryOrder/GetDeliveryOrder",{
                "f_ID": this.fId
            }).then(res=>{
                if(res.data.code == 200){
                    this.loading = true;
                    //将数据赋值到追加的expandRow中
                    this.InfoTableData.forEach((item,index)=>{
                        if(item.f_ID === row.f_ID){
                            this.InfoTableData[index].expandRow = res.data.data.deliveryOrderDetail;
                            this.loading = false;
                        }
                    })
                }else{
                    alert(res.data.msg)
                }
            })
        },
}

到了这里,关于el-table自定义展开行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • el-table默认选中

    最近开发,记录下el-table组件默认选中数据的方式,后台返回的数据不尽相同,代码里面有注释,可以自己根据不同的值换成自己需要的对应的key 场景1:根据用户选择的不同的id去请求渲染的数据,在渲染出来的数据里面进行数据的默认勾选 场景2:每次渲染的表格不同,所以

    2024年02月11日
    浏览(33)
  • el-table那些事

    用于记录工作和日常学习遇到的坑,需求。 vue3+element-plus+ts 1、获取el-table所有勾选的行数据 1、需要先声明一个ref变量,并赋值给el-table 2、通过el-table提供的getSelectionRows()函数获取选中的\\\"行对象\\\"数据集 2、el-table自定义列标题 3、el-table列可编辑,加入el-input等 4、el-table勾选只

    2024年02月14日
    浏览(30)
  • el-table 列分页

    2024年02月05日
    浏览(38)
  • el-table实现懒加载(el-table-infinite-scroll)

    2023.8.15今天我学习了用el-table对大量的数据进行懒加载。 效果如下:   1.首先安装:   2.全局引入: 3.页面使用: 如果大家有不懂的地方可以参考: 1.vue—在el-table上实现懒加载效果_列表懒加载插件_迷路小灰灰的博客-CSDN博客 2.el-table-infinite-scroll - npm (npmjs.com) 

    2024年02月12日
    浏览(37)
  • el-table合并单元格

    el-tabel数据结构 此处为this.rolePermitItemList 合并后的样式: el-table-column 需要添加property字段,属性值同props,用来判断需要合并的字段

    2024年02月14日
    浏览(32)
  • elemeentui el-table封装

    elemeentui el-table封装 

    2024年01月19日
    浏览(35)
  • el-table纵向垂直表头

    参考:https://www.jianshu.com/p/1f38eaffd070

    2024年02月09日
    浏览(33)
  • el-table数据处理

    在写表格时遇到,后端返回的数据是对象,并且缺少字段 1.每一条数据加上 一个字段 2.将对象转成数组 以下是数据

    2024年02月15日
    浏览(22)
  • el-table 改变行高

    el-table改变行高 row-style 行的 style 的回调方法,也可以使用一个固定的 Object 为所有行设置一样的 Style。 cell-style 单元格的 style 的回调方法,也可以使用一个固定的 Object 为所有单元格设置一样的 Style。 header-row-style 表头行的 style 的回调方法,也可以使用一个固定的 Object 为所

    2024年02月11日
    浏览(23)
  • el-table 表格头部合并

    就是这样哟

    2024年02月14日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包