ElementUI用el-table实现表格内嵌套表格

文章目录

  • 一、效果图
  • 二、使用场景
  • 三、所用组件元素(Elementui)
  • 四、代码部分

一、效果图

在这里插入图片描述

二、使用场景

🛀el-form 表单内嵌套el-table表格
🛀el-table 表格内又嵌套el-table表格

三、所用组件元素(Elementui)

🍣 合并行或列

多行或多列共用一个数据时,可以合并行或列。
在这里插入图片描述

🍣 表尾合计行(根据具体需求决定使用)

若表格展示的是各类数字,可以在表尾显示各列的合计。
在这里插入图片描述

四、代码部分

<el-form :model="ruleForm" :rules="rules" ref="ruleForm" :label-width="'auto'"><el-table v-show="ruleForm.visitType === 2 && ruleForm.visitingDetailDTOS && ruleForm.visitingDetailDTOS.length" :data="ruleForm.visitingDetailDTOS" :span-method="arraySpanMethod" style="width: 90%" tooltip-effect="light"><el-table-column prop="date" label="来访日期" width="130px"></el-table-column><el-table-column prop="time" label="来访时间段" min-width="160"><template v-slot="{row, $index: index}"><el-table v-if="row.visitingReqList && row.visitingReqList.length" :data="row.visitingReqList" :show-header="false" :span-method="arraySpanMethod" show-summary :summary-method="getPeopleTotal" style="width: 100%" class="hb-row" tooltip-effect="light"><el-table-column prop="time" min-width="160"><template v-slot="{row: childRow, $index}"><el-form-item label-width="0px" :prop="`visitingDetailDTOS[${index}].visitingReqList[${$index}].time`" :rules="rules.visitTime" :show-message="false"><el-time-picker v-if="editType !== 'look' && itemState === 0" :disabled="!childRow.isDelete" is-range v-model="childRow.time" :picker-options="{minTime: ($index > 0 && row.visitingReqList[$index-1].time) ? row.visitingReqList[$index-1].time[1] : ''}" value-format="HH:mm" format="HH:mm" size="small" range-separator="~" start-placeholder="开始" end-placeholder="结束" placeholder="选择时间范围" style="width: 90%"></el-time-picker><span v-else>{{childRow.time}}</span></el-form-item></template></el-table-column><el-table-column prop="num" min-width="80"><template v-slot="{row: childRow, $index}"><el-form-item label-width="0px" :prop="`visitingDetailDTOS[${index}].visitingReqList[${$index}].num`" :rules="rules.maxPeople" :show-message="false"><el-input v-if="editType !== 'look'" v-model.number="childRow.num" type="number" size="small" placeholder="人数" /><span v-else>{{childRow.num}}</span></el-form-item></template></el-table-column><el-table-column v-if="editType !== 'look' && itemState === 0" align="center" min-width="120"><template v-slot="{$index}"><el-button v-if="$index === (row.visitingReqList.length-1)" type="text" size="middle" @click="addCustomTime(row)">添加</el-button><el-button v-if="row.visitingReqList.length !== 1" type="text" size="middle" @click="delCustomTime(row, $index)">删除</el-button></template></el-table-column></el-table></template></el-table-column><el-table-column prop="num" label="来访人数" min-width="80"><template v-slot="{row, $index}"><el-form-item v-if="row.isEdit" style="width: 90%; margin: 0 auto" size="small" :prop="`visitingDetailDTOS[${$index}].reportName`" :show-message="false" :rules="rules.reportName"><j-autocomplete v-model="row.reportName" :suggestOptions="reportNameList" :maxlength="50" trim placeholder="写不写都行,会被合并掉" /></el-form-item><span v-else>{{row.reportName}}</span></template></el-table-column><el-table-column v-if="editType !== 'look' && itemState === 0" label="操作" align="center" min-width="120"><template v-slot="{row}"><template v-if="row.isEdit"><el-button style="color:#303133" type="text" size="middle" @click="cancelEdit(row)">取消</el-button><el-button type="text" size="middle" @click="saveAction(row)">保存</el-button></template><template v-else><el-button type="text" size="middle" @click="editAction(row)">修改</el-button><el-button type="text" size="middle" @click="delAction(row)">删除</el-button></template></template></el-table-column></el-table>
</el-form>data() {return {ruleForm: {visitingDetailDTOS: [],},rules: {visitTime: {required: true, message: '请选择来访时间', trigger: 'change'},maxPeople: {required: true, message: '请输入人数上限', trigger: 'change'},}}
},methods: {arraySpanMethod({ row, column, rowIndex, columnIndex }) {if (column.label === '来访时间段') {return [1, 3];} else if(['来访时间段', '来访人数', '操作'].includes(column.label)) {return [0, 0];}},addCustomTime(row) {row.visitingReqList.push({key: 0,time: '',num: '',numCopy: 0,maxNum: 0,isDelete: true})},delCustomTime(row, index) {row.visitingReqList.splice(index, 1);},
}<style lang="scss" scoped>
// 样式可根据需要调整,此样式只针对本文章效果图....el-table {.el-form-item {margin-bottom: 0;}.hb-row {::v-deep {.el-table__cell {border-bottom: none;}.el-table__body-wrapper {overflow-x: hidden;}.el-table__cell {background-color: #fff;padding: 3px 0;}}.cell {padding-left: 0;}}.el-table::before {background-color: transparent;}::v-deep {.el-table__body tr:hover>td{background-color: rgba($color: #fff, $alpha: 1)!important;}.el-table__body tr.current-row>td{background-color: rgba($color: #fff, $alpha: 1)!important;}}}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/156392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubeadm部署Kubernetes Containerd集群

文章目录 概述一、硬件系统二、基础配置设置主机名配置主机名与IP地址解析关闭防火墙与selinux时间同步(ntp)升级系统内核配置内核转发及网桥过滤*安装ipset及ipvsadm关闭SWAP分区 三、Containerd准备Containerd获取下载解压Containerd配置文件生成并修改Containerd启动及开机自…

5年经验之谈 —— 性能测试如何定位分析性能瓶颈?

你好&#xff0c;我是小牛&#xff0c;目前在一家准一线互联网大厂做测试开发工程师。 对于一般公司普通测试工程师来说&#xff0c;可能性能测试做的并不是很复杂&#xff0c;可能只是编写下脚本&#xff0c;做个压测&#xff0c;然后输出报告结果&#xff0c;瓶颈分析和调优…

【Hello Go】Go语言复合类型

复合类型 分类指针基本操作new函数指针作为函数的参数 数组概述操作数据数组初始化数组比较在函数之间传递数组 slice概述切片的创建和初始化切片操作切片和底层数组关系内建函数appendcopy 切片作为函数传参 map概述创建和初始化常用操作赋值遍历 删除map作函数参数 结构体结构…

近期问题笔记20231116

DMA的洛伦兹约束的来源 多拉格朗日乘子的拉格朗日对偶问题的次梯度搜索 鲁棒优化&#xff0c;only statistical CSI of the users-to-RIS channels H 2 , k \mathbf{H}_{2,k} H2,k​ is available 期望符号的去除&#xff0c; 阅读这篇论文 C.-K. Wen, S. Jin, and K.-K. …

导数...

导数定义: f ′ ( x 0 ) lim ⁡ x → x 0 f ( x ) − f ( x 0 ) x − x 0 f(x_0)\lim\limits_{x\rightarrow{x_0}}\frac{f(x)-f(x_0)}{x-x_0} f′(x0​)x→x0​lim​x−x0​f(x)−f(x0​)​ 罗尔定理:如果函数在[a,b]可导,并且f(a)f(b),那么[a,b]区间内一定有个导数是0 中值…

Python (十三) 输出

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

基于Python+TensorFlow+Django的交通标志识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 随着交通网络的不断扩展和智能交通系统的发展&#xff0c;交通标志的自动识别变得愈发重要。本项目旨在利用Python编…

Redis--list列表

基础概念 元素必须是字符串类型列表头尾增删快&#xff0c;中间增删慢&#xff0c;增删元素是常态元素可以重复最多可以包含2^32 - 1个元素索引和python的列表一样 常用命令 - 增加数据 1.LPUSH key value1 value2 说明&#xff1a;从列表头部压入元素 返回&#xff1a;l…

矩阵转置

描述 输入N&#xff0c;和M&#xff0c;构建两个矩阵:A[N][M]&#xff0c;B[M][N]&#xff0c;M, N <50; 步骤1:输入M, N ; M, N <50; 步骤2:输入A[M][N]; 步骤3:计算:B[N][M]A[M][N]; 步骤4:输出:B [M] [N];这有几个测试组 输入 每个数字都是整数; 输入M, N; M, N <5…

利用SVD对图像进行压缩

利用SVD对图像进行压缩 使用SVD能够对数据进行降维&#xff0c;对图像进行SVD&#xff0c;降维之后然后重构数据&#xff0c;还原后的图像就是压缩后的图像。 SVD SVD进行图像压缩所依据的数学原理就是矩阵的近似表示&#xff1a; A m n ≈ U m k ∑ k k V k n T A_{m\…

基于晶体结构算法优化概率神经网络PNN的分类预测 - 附代码

基于晶体结构算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于晶体结构算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于晶体结构优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

Vue原型对象

原型对象 prototype 称为&#xff1a;显示的原型属性&#xff0c;用法&#xff1a;函数.prototype&#xff0c;例如&#xff1a;Vue.prototype __proto__称为&#xff1a;隐式的原型属性&#xff0c;用户&#xff1a;实例.proto&#xff0c;例如&#xff1a;vm.proto 不管如何 …

[Docker]八.Docker 容器跨主机通讯

一.跨主机通讯原理 在主机192.168.31.140上的docker0(172.17.0.0/16)中有一个容器mycentos( 172.17.0.2/16), 在主机192.168.31.81上的docker0(172.17.0.0/16)中有一个容器mycentos( 172.17.0.2/16),然后在主机192.168.31.140上ping主机192.168.31.81,发现ping不通要实现两个主…

vite构建项目不能使用require解决方案

在utils文件夹下创建一个getImgUrl.ts文件 /** vite的特殊性, 需要处理图片 */ export const require (imgPath: string) > {try {const handlePath imgPath.replace(, ..)console.log(handlePath::, imgPath)return new URL(handlePath, import.meta.url).href} catch (…

如何入驻抖音本地生活服务商,附上便捷流程!

抖音作为一款短视频社交媒体应用&#xff0c;已经成为全球范围内数以亿计的用户的首选。而在普及的同时&#xff0c;短视频领域也在不断拓展自身的业务领域&#xff0c;其中之一就是本地生活服务。继抖音本地生活服务之后支付宝、视频号也相继开展了本地生活服务&#xff0c;用…

Linux(5):Linux 磁盘与文件管理系统

认识 Linux 文件系统 磁盘的物理组成&#xff1a; 1.圆形的磁盘盘(主要记录数据的部分); 2.机械手臂&#xff0c;与在机械手臂上的磁盘读取头(可擦写磁盘盘上的数据)&#xff1b; 3.主轴马达&#xff0c;可以转动磁盘盘&#xff0c;让机械手臂的读取头在磁盘盘上读写数据。 4…

05_面对对象高级_抽象类

抽象类 1. 认识抽象类 在 Java 中有一个关键字叫&#xff1a;abstract &#xff0c;它的中文含义是"抽象"&#xff0c;可以用它来修饰类、成员方法。 abstract 修饰类&#xff0c;这个类就是抽象类。 abstract 修饰方法&#xff0c;这个方法就是抽象方法。 2. 注…

python接口自动化-参数关联

前言 我们用自动化发帖之后&#xff0c;要想接着对这篇帖子操作&#xff0c;那就需要用参数关联了&#xff0c;发帖之后会有一个帖子的id&#xff0c;获取到这个id&#xff0c;继续操作传这个帖子id就可以了 &#xff08;博客园的登录机制已经变了&#xff0c;不能用账号和密…

【算法设计实验三】动态规划解决01背包问题

请勿原模原样复制&#xff01; 01背包dp具体解释详见链接 ↓ 【算法5.1】背包问题 - 01背包 &#xff08;至多最大价值、至少最小价值&#xff09;_背包问题求最小价值_Roye_ack的博客-CSDN博客 关于如何求出最优物品选择方案&#xff1f; 先在递归求dp公式时&#xff0c;若…

Proteus下仿真AT89C51单片机串行口的问题

在Proteus下仿真AT89C51单片机的串行口的时候&#xff0c;Proteu不同版本下差别较大。     同样的程序&#xff0c;在7.8的老版本&#xff08;7.8版本的原理图仿真软件名称是ISIS 7 Professional&#xff09;下仿真串行口&#xff0c;收发均正常。但是&#xff0c;在8.13版…