element-ui实现table表格的嵌套(table表格嵌套)功能实现

我不是女神ヾ 2021-07-25 21:02 3480阅读 0赞

最近在做电商类型的官网,希望实现的布局如下:有表头和表身,所以我首先想到的就是table表格组件。

在这里插入图片描述

表格组件中常见的就是:标题和内容一一对应:
在这里插入图片描述
像效果图中的效果,只用基础的表格布局是不行的,因此我想到了table表格中的展开功能:
在这里插入图片描述
然后通过:默认展开所有行
在这里插入图片描述
然后在里面的表格table中默认隐藏表头:
在这里插入图片描述
其他的则需要通过样式进行实现了

element-ui中table表格的嵌套(代码部分)

  1. <el-table v-bind:data="tableData" :default-expand-all="true" class="parentTable"
  2. ref="multipleTable"
  3. v-loading="loading"
  4. element-loading-text="拼命加载中">
  5. <el-table-column type="expand">
  6. <template slot-scope="props">
  7. <div class="conWrap" style="text-align: left;line-height: 16px;font-size: 14px;position: relative;top: -10px;">
  8. <span>订单包号:{ { props.row.OrderNo}}</span>
  9. <span style="margin-left:42px;">付款时间:{ { props.row.CreateTime}}</span>
  10. </div>
  11. <el-table v-bind:data="props.row.OrderDetails" :default-expand-all="true" stripe :show-header="false" class="childTable">
  12. <el-table-column prop="PartNo" align="center"
  13. label="产品型号"
  14. width="180">
  15. <template slot-scope="scope">
  16. <div class="name-b">{ { scope.row.PartNo}}</div>
  17. </template>
  18. </el-table-column>
  19. <el-table-column prop="Mfg"
  20. label="品牌" width="199">
  21. <template slot-scope="scope">
  22. <div class="name-b">{ { scope.row.Mfg}}</div>
  23. </template>
  24. </el-table-column>
  25. <el-table-column prop="Package"
  26. label="封装" width="114">
  27. <template slot-scope="scope">
  28. <div class="name-b">{ { scope.row.Package}}</div>
  29. </template>
  30. </el-table-column>
  31. <el-table-column prop="miaoshu"
  32. label="描述" width="300">
  33. <template slot-scope="scope">
  34. <div class="name-b" style="width:100%;">72MHZ 20KB 37 2V~3.6V-40°C~85°C(TA)</div>
  35. </template>
  36. </el-table-column>
  37. <el-table-column prop="ProductNum" align="center" width="120"
  38. label="申请数量">
  39. <template slot-scope="scope">
  40. <div class="name-b">{ { scope.row.ProductNum}}</div>
  41. </template>
  42. </el-table-column>
  43. <el-table-column prop="maxNum"
  44. label="申请状态">
  45. <template slot-scope="scope">
  46. <div>
  47. <el-popover trigger="hover" placement="right" v-if="scope.row.State==20||scope.row.State==40">
  48. <p v-if="scope.row.State==20">失败原因: { { scope.row.FailReason }}</p>
  49. <p v-if="scope.row.State==40">物流信息: { { scope.row.ExpressNo }}</p>
  50. <div slot="reference" class="name-wrapper">
  51. { { scope.row.State |fiterState(stateMenu)}}
  52. <span v-if="scope.row.State==40" style="margin-left:14px;color:#B77C20;">物流信息</span>
  53. <span v-if="scope.row.State==20" style="margin-left:14px;color:#B77C20;">查看原因</span>
  54. </div>
  55. </el-popover>
  56. <div v-else>
  57. { { scope.row.State |fiterState(stateMenu)}}
  58. </div>
  59. </div>
  60. </template>
  61. </el-table-column>
  62. <el-table-column label="操作" width="162">
  63. <template slot-scope="scope">
  64. <div style="display:flex;">
  65. <el-button type="text" size="small" v-on:click="cancel(scope.row)" v-if="scope.row.State==10||scope.row.State==20">取消</el-button>
  66. <el-button type="text" size="small" v-on:click="sureHave(scope.row)" v-if="scope.row.State==40">确认收货</el-button>
  67. </div>
  68. </template>
  69. </el-table-column>
  70. </el-table>
  71. </template>
  72. </el-table-column>
  73. <el-table-column label="产品型号" align="center" width="180"></el-table-column>
  74. <el-table-column label="品牌" width="199"></el-table-column>
  75. <el-table-column label="封装" width="114"></el-table-column>
  76. <el-table-column label="描述" width="300"></el-table-column>
  77. <el-table-column label="申请数量" align="center" width="120"></el-table-column>
  78. <el-table-column label="申请状态"></el-table-column>
  79. <el-table-column label="操作" align="center" width="118"></el-table-column>
  80. </el-table>

最终效果图:
在这里插入图片描述

样式部分:

  1. .el-table {
  2. border-top: none !important;
  3. }
  4. .el-table__expanded-cell {
  5. padding: 0 !important;
  6. }
  7. .tableWrap {
  8. width: 100%;
  9. }
  10. .el-tabs__nav-scroll {
  11. padding: 0 20px;
  12. box-sizing: border-box;
  13. }
  14. .tableWrap .el-table {
  15. width: 1240px;
  16. margin: 0 auto;
  17. }
  18. .el-icon.el-icon-arrow-right {
  19. color: #fff;
  20. }
  21. .el-table__row.expanded {
  22. background: #fff !important;
  23. position: relative !important;
  24. top: -100px !important;
  25. border: 1px solid red;
  26. }
  27. .el-tabs__content {
  28. display: none;
  29. }
  30. .el-table__row.expanded > td {
  31. padding: 7px 0;
  32. }
  33. .el-table__row.expanded {
  34. border: 1px solid #E5E5E5;
  35. }
  36. .el-table__row.expanded:first-child {
  37. border-bottom: none;
  38. }
  39. .childTable .el-table__body {
  40. border-top: 1px solid #E5E5E5;
  41. }
  42. .childTable .el-table__row.expanded > td:first-child {
  43. border-left: 1px solid #E5E5E5;
  44. }
  45. .childTable .el-table__row.expanded > td:last-child {
  46. border-right: 1px solid #E5E5E5;
  47. }
  48. .el-tabs__header.is-top {
  49. border-bottom: none;
  50. }
  51. .childTable .el-table__header-wrapper {
  52. display: none;
  53. }
  54. .conWrap {
  55. height: 44px;
  56. background: #E5E5E5;
  57. line-height: 44px;
  58. padding-left: 10px;
  59. font-size: 14px;
  60. font-family: Microsoft YaHei;
  61. line-height: 19px;
  62. color: #333333;
  63. }
  64. .conWrap > span {
  65. line-height: 44px;
  66. }
  67. .el-table .has-gutter .is-leaf {
  68. position: relative !important;
  69. left: -48px !important;
  70. }
  71. .el-table .has-gutter .is-leaf:last-child {
  72. position: relative !important;
  73. left: 0px !important;
  74. }
  75. .el-table__header-wrapper {
  76. background: #EBEBEB;
  77. }
  78. .el-table .has-gutter > tr > th {
  79. background: #EBEBEB;
  80. font-size: 14px;
  81. font-family: Microsoft YaHei;
  82. font-weight: bold;
  83. line-height: 19px;
  84. color: #333333;
  85. }

发表评论

表情:
评论列表 (有 0 条评论,3480人围观)

还没有评论,来说两句吧...

相关阅读