vue 项目使用iview如何做到table嵌套table

1:首先看效果图
在这里插入图片描述
2.这里是使用的table表单组件,组件里面有一个 table-expand 属性需要使用,所以需要引入,我是只有一个组件需要这个属性,所以直接在组件中引入
3:在根据render函数的方式使用
父组件代码

<template>
    <Table :columns="columns10" :data="data9">
        <template slot="action" slot-scope="{ row }">
                    <Button
                            size="small"
                            type="text"
                            @click="handDetails(row)"
                    >
                        详情</Button>
                    <Button
                            size="small"
                            type="text"
                            @click="ShowaddOrder()"
                    >
                        开单</Button>
                    <!--<Button-->
                            <!--size="small"-->
                            <!--type="text"-->
                            <!--@click="editorModal('bj')"-->
                    <!--&gt;-->
                        <!--编辑</Button>-->
                    <!-- <Dropdown trigger="click" :transfer='transfer' style="margin-left: 10px">
                        <a href="javascript:void(0)">
                            更多
                            <Icon type="ios-arrow-down"></Icon>
                        </a>
                        <DropdownMenu slot="list">
                            <DropdownItem  @click.native="Showdiscount(row)">
                                折让
                            </DropdownItem>
                            <DropdownItem @click.native="handDetails('SH')">
                                经理审核
                            </DropdownItem>
                            <DropdownItem @click.native="OutTicketMange()">
                                开票
                            </DropdownItem>
                            <DropdownItem @click.native="OrderConfirm(row)">
                                开单确认
                            </DropdownItem>
                            <DropdownItem @click.native="ChildModal(row)">
                                子订单列表
                            </DropdownItem>
                        </DropdownMenu>
                    </Dropdown> -->
                </template>
    </Table>
</template>

js

<script>
import expandRow from './table-expand'
export default {
        components: { expandRow },
        data () {
            return {
                columns10: [
                    {
                        type: 'expand',
                        width: 50,
                        render: (h, params) => {
                            return h(expandRow, {
                                props: {
                                    row: params.row
                                }
                            })
                        }
                    },
                    {
                        title: '姓名',
                        key: 'name'
                    },
                    {
                        title: '年龄',
                        key: 'age'
                    },
                    {
                        title: 'Address',
                        key: 'address'
                    },
                    
                     {
                        title:  '操作',
                        width: 180,
                        fixed: 'right',
                        slot: 'action'
                    }
                ],
                data9: [
                    {
                        name: 'John Brown',
                        age: 18,
                        address: 'New York No. 1 Lake Park',
                        job: 'Data engineer',
                        interest: 'badminton',
                        birthday: '1991-05-14',
                        book: 'Steve Jobs',
                        movie: 'The Prestige',
                        music: 'I Cry'
                    },
                    {
                        name: 'Jim Green',
                        age: 25,
                        address: 'London No. 1 Lake Park',
                        job: 'Data Scientist',
                        interest: 'volleyball',
                        birthday: '1989-03-18',
                        book: 'My Struggle',
                        movie: 'Roman Holiday',
                        music: 'My Heart Will Go On'
                    },
                    {
                        name: 'Joe Black',
                        age: 30,
                        address: 'Sydney No. 1 Lake Park',
                        job: 'Data Product Manager',
                        interest: 'tennis',
                        birthday: '1992-01-31',
                        book: 'Win',
                        movie: 'Jobs',
                        music: 'Don’t Cry'
                    },
                    {
                        name: 'Jon Snow',
                        age: 26,
                        address: 'Ottawa No. 2 Lake Park',
                        job: 'Data Analyst',
                        interest: 'snooker',
                        birthday: '1988-7-25',
                        book: 'A Dream in Red Mansions',
                        movie: 'A Chinese Ghost Story',
                        music: 'actor'
                    }
                ]
            }
        }
    }
</script>

4:这个时候你就需要在新建新的组件,并在当前项目中引入,我新建了table-expand组件
子组件

<style scoped>
    .expand-row{
        margin-bottom: 16px;
    }
</style>
<template>
    <div>
        <Table height="200" :columns="columnsdata" :data='tabledata'>
           <template slot="action" slot-scope="{ row }">
                    <Button
                            size="small"
                            type="text"
                            @click="handDetails(row)"
                    >
                        删除</Button>
                    <Button
                            size="small"
                            type="text"
                            @click="ShowaddOrder()"
                    >
                        添加</Button>
                    <!--<Button-->
                            <!--size="small"-->
                            <!--type="text"-->
                            <!--@click="editorModal('bj')"-->
                    <!--&gt;-->
                        <!--编辑</Button>-->
                    <!-- <Dropdown trigger="click" :transfer='transfer' style="margin-left: 10px">
                        <a href="javascript:void(0)">
                            更多
                            <Icon type="ios-arrow-down"></Icon>
                        </a>
                        <DropdownMenu slot="list">
                            <DropdownItem  @click.native="Showdiscount(row)">
                                折让
                            </DropdownItem>
                            <DropdownItem @click.native="handDetails('SH')">
                                经理审核
                            </DropdownItem>
                            <DropdownItem @click.native="OutTicketMange()">
                                开票
                            </DropdownItem>
                            <DropdownItem @click.native="OrderConfirm(row)">
                                开单确认
                            </DropdownItem>
                            <DropdownItem @click.native="ChildModal(row)">
                                子订单列表
                            </DropdownItem>
                        </DropdownMenu>
                    </Dropdown> -->
                </template> 
        </Table>
    </div>
</template>
<script>
    export default {
        props: {
            row: Object
        },
        data(){
            return{
                tabledata:[],
        columnsdata:[     
            {
                        type: 'selection',
                        align: 'center',
                        width:'100'
                    }, 
                    {
                        title: '姓名',
                        key: 'name'
                    },
                    {
                        title: '年龄',
                        key: 'age'
                    },
                    {
                        title: 'Address',
                        key: 'address'
                    },
                    {
                        title: '音乐',
                        key: 'music'
                    },
                    {
                        title: '书',
                        key: 'book'
                    },
                    {
                        title: '工作',
                        key: 'job'
                    },
                    {
                        title: '操作',
                        width: 130,
                        fixed: 'right',
                        slot: 'action'
                    },
                    ]
               
            }
            },
 created() {
     this.tabledata.push(this.row)          
        },
    };

</script>

哪里需要改正请在评论区,谢谢

Vue中,如果你想要创建一个嵌套的`<el-table>`组件,你可以这样做来实现表格数据的多层次展示。首先,你需要在父组件中包含子表单,并通过props将数据传递下去。这里是一个简单的例子: ```html <!-- 父组件模板 --> <template> <div> <el-table :data="parentData" border> <!-- 外层表格列定义 --> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="children" label="子表"> <!-- 子表组件 --> <el-table v-for="(childRow, index) in parentData.children" :key="index"> <template slot-scope="scope"> <child-table :data="childRow"></child-table> </template> </el-table-column> </el-table-column> </el-table> </div> </template> <script> import ChildTable from './ChildTable.vue'; // 假设这是子表组件 export default { components: { ChildTable }, data() { return { parentData: [ { name: 'A', children: [{ name: 'A1' }, { name: 'A2' }] }, { name: 'B', children: [{ name: 'B1' }] } ] }; } }; </script> ``` 在这个例子中,`parentData`是一个数组,每个元素都有一个`name`属性和一个`children`属性,后者也是一个数组,表示这个元素下的子元素。然后在`<el-table-column>`中,我们使用了v-for循环遍历外层数据的`children`属性,动态渲染出内层的`<el-table>`。 **注意:** 1. `ChildTable.vue`是你需要自定义的一个子组件,通常它会有自己的`<el-table>`和处理子数据的方式。 2. 这里假设`<child-table>`已导出并导入到父组件中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq614756883

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值