Vue+Element-ui实现表格嵌套表格(表头不同)

这篇具有很好参考价值的文章主要介绍了Vue+Element-ui实现表格嵌套表格(表头不同)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

实现效果

vue单元格动态嵌套表格,# Vue,Element-ui,vue.js,element-ui

模板

<!-- 查询条件 -->
<el-form label-width="60px" class="query-form">
  <el-form-item label="状态:">
    <el-select v-model="queryBody.status" clearable placeholder="请选择状态">
      <el-option
        v-for="item in status"
        :key="item.value"
        :label="item.label"
        :value="item.value"
      />
    </el-select>
  </el-form-item>
  <el-form-item label="大标题:" class="query-title">
    <el-input
      v-model="queryBody.fuzzy"
      placeholder="请输入大标题关键字"
      clearable
    />
  </el-form-item>
  <el-button type="primary" class="query-btn" @click="queryIntegrateList">
    查询
  </el-button>
</el-form>
<!-- 列表表格区域 -->
<el-table ref="refTable" :data="integrateList" border stripe
          style="width: 100%" @expand-change="expandChange"
>
  <el-table-column type="expand">
    <template slot-scope="scope">
      <el-form label-position="left" inline class="demo-table-expand">
        <el-table :data="scope.row.child" border stripe style="width: 100%">
          <el-table-column type="index" />
          <el-table-column prop="title" label="小标题" />
          <el-table-column prop="author" label="作者" />
          <el-table-column label="操作" width="180px">
            <template slot-scope="scope">
              <el-button
                circle
                type="primary"
                icon="el-icon-search"
                size="mini"
                @click="xxx(scope.row.id)"
              />
            </template>
          </el-table-column>
        </el-table>
      </el-form>
    </template>
  </el-table-column>
  <el-table-column prop="title" label="大标题" />
  <el-table-column prop="child.length" label="包含数量" />
  <el-table-column label="状态" prop="status">
    <template slot-scope="scope">
      <el-tag v-if="scope.row.status== 0" type="warning">
        审核中
      </el-tag>
      <el-tag v-else-if="scope.row.status== 1" type="success">
        审核通过
      </el-tag>
      <el-tag v-else type="danger">
        审核驳回
      </el-tag>
    </template>
  </el-table-column>
</el-table>
<!-- 分页 -->
<el-pagination
  :current-page="queryParams.pages"
  :page-sizes="[5,10, 15, 20]"
  :page-size="queryParams.size"
  layout="total, sizes, prev, pager, next, jumper"
  :total="total"
  @size-change="handleSizeChange"
  @current-change="handleCurrentChange"
/>

js

data () {
  return {
    // 大栏目列表数据
    integrateList: [],
    total: 0,

    // 查询参数对象1(放在请求的params里,以?形式拼接)
    queryParams: {
      pages: 1,
      size: 5
    },

    // 查询参数对象
    queryBody: {
      fuzzy: '',
      status: ''
    },
    
    // 大栏目状态下拉列表
    status: [
      {
        value: '',
        label: '全部'
      },
      {
        value: '0',
        label: '审核中'
      },
      {
        value: '1',
        label: '审核通过'
      },
      {
        value: '2',
        label: '审核驳回'
      }
    ]
  }
},
mounted () {
  this.InitIntegrateList()
},
methods: {
  InitIntegrateList () {
    //调用接口,初始化大栏目列表
  },
  
  //点击查询按钮触发
  queryIntegrateList () {
    this.queryParams.pages = 1
    this.InitIntegrateList()
  },
  
  //页面数据条数发生变化触发
  handleSizeChange (newPageSize) {
    this.queryParams.size = newPageSize
    this.InitIntegrateList()
  },
  
  //页码发生变化触发
  handleCurrentChange (newPageNum) {
    this.queryParams.pages = newPageNum
    this.InitIntegrateList()
  },
  
  //根据id查询信息
  xxx(id) {
    //可能针对id调接口,查询展示信息
  },

  // 只允许出现一个展开的大栏目
  expandChange (row, expandedRows) {
    let that = this
    if (expandedRows.length > 1) {
      that.expands = []
      if (row) {
        that.expands.push(row)
      }
      this.$refs.refTable.toggleRowExpansion(expandedRows[0])
    } else {
      that.expands = []
    }
  }

}

样式

.demo-table-expand {
    font-size: 0;
}
.demo-table-expand label {
  width: 90px;
  color: #99a9bf;
}
.demo-table-expand .el-form-item {
  margin-right: 0;
  margin-bottom: 0;
  width: 50%;
}
.query-form {
  display: flex;
  .query-title {
    margin: 0 95px 0;
  }
}

其它说明

data中integrateList根据后端返回的json数据确定,其格式为:文章来源地址https://www.toymoban.com/news/detail-634477.html

[
    {
        "id": "1",
        "title": "yyy",
        "status": 1,
        "child": [
            {
                "id": "1",
                "title": "yyyy",
                "author": "admin",
                ...
            }
        ]
    },
    {
        "id": "2",
        "title": "2-777",
        "status": 0,
        "child": [
            {
                "id": "1",
                "title": "ttt",
                "author": "t1",
                 ...
            },
            {
                "id": "2",
                "title": "qqq",
                "author": "q1",
                 ...
            }
        ]
    }
]

到了这里,关于Vue+Element-ui实现表格嵌套表格(表头不同)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • element-ui 表格(table)合并表头下面合并列且可以收缩展开

    百度了一大堆,发现了首行不能合并,想到了用dom做,找到了下面这个链接 1、表头合并 —— 给table添加属性:header-cell-style=\\\"headerStyle\\\",里面给首行设置跨行 element-ui表头合并 - ^Mao^ - 博客园 2、表内合并 —— 给table添加属性:span-method=\\\"arraySpanMethod\\\",里面设置合并 Element - The wor

    2024年02月16日
    浏览(41)
  • element-ui table-自定义表格某列的表头样式或者功能

    自带表格 自定义表格某列的表头样式或者功能

    2024年02月03日
    浏览(39)
  • element-ui table表格滚动条拉到最右侧 表头与内容不能对齐

    1.问题概述 当表格数据太多,会出现纵向滚动条和横向滚动条,把横向滚动条拉到最右侧时,会出现表头与内容不能对齐的现象。 2.解决方法 1.当页面数据加载完毕后,在后面加上 2.别忘了给表格加上ref属性

    2024年02月10日
    浏览(32)
  • element-ui 表格el-table高度不是一个固定值时固定表头

    elementui中为表格组件提供了height属性实现固定表头 height可以为数字或者字符串,当为一个数字时表示固定的高度,也可以为百分比等字符串。 当height不是一个固定值时,如期望表格可以填充完页面剩余空间,并且固定表头时,可以通过给height属性赋值字符串形式实现。以页

    2024年01月25日
    浏览(49)
  • (vue)element-ui 表格实现勾选单选

    效果: 重选后: 解决参考:https://blog.csdn.net/m0_58373910/article/details/125912828

    2024年02月12日
    浏览(37)
  • Vue中使用Element UI的Table组件实现嵌套表格(最简单示例)

    以下是一个简单的示例代码,演示如何在Vue中使用Element UI的Table组件实现嵌套表格: 上面的代码通过type=\\\"expand\\\"设置了一个展开按钮,点击该按钮会显示与当前行关联的子表格内容。 在上面的示例中,我们定义了一个包含姓名和年龄的主表格,以及一个展开列用于显示与每行

    2024年02月02日
    浏览(39)
  • vue搭配element-ui前端实现表格分页

    如果不从后台请求数据,那么就需要在前端手动管理数据。可以使用以下步骤实现该功能: 在 Vue 组件的 data 中定义一个数组来存放所有数据(不分页)。 在 mounted 钩子函数中,手动获取数据并存放到上一步定义的数组中。 在模板中使用 element-ui 的表格组件来展示数据,同

    2024年02月11日
    浏览(33)
  • vue+element-UI实现跟随滚动条加载表格数据

    el-table当数据量大的时候,实现滚动到底部后加载数据,直接上js代码,有其他需求请各自更改  第一步、在data中定义两个数组 第二步、在数据发生改变的方法中先循环存放一部分数据用于页面显示 第三步、在mounted监听滚动事件

    2024年02月16日
    浏览(50)
  • vue2&Element-ui实现表格单元格合并

    由于项目需要实现单元格合并目前只是单页没有做分页处理先上效果图 看下数据结构 Element table提供的api arraySpanMethod columnIndex=0表示从第一列开始 rowIndex表示需要操作的行数 同济医院加上合计有12行从0开始=11 判断条件是rowIndex余12===0 我们打印一下 或者改成 表示从0开始到1

    2024年02月12日
    浏览(32)
  • vue+Element UI 实现动态表单(点击按钮增删表格及嵌套输入框的增删)(1)

    el-button size=“small” @click=“addTable”新增 el-button size=“small” @click=“delTable”删除 el-table ref=“table” :data=“tableDataBind.taAssessltems” tooltip-effect=“dark” border @selection-change=“selectRow” 规格: 重量: 数量: 加工费: el-button size=“mini” type=“primary” icon=“el-icon-circle-plus-ou

    2024年04月13日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包