Element-ui中el-table展开行

news2024/11/19 2:45:39

类似这样的需求还记录不记录呢,其实我觉得是没必要的,但是想来还是记录一下吧,因为element-ui里面组件本身也很多,其中el-table的配置样式需求更是很多很多,所以这还是决定来记录一下,以后再有类似的需求也有个印象可以来找一下不是。

展开行在el-table中以及提供了,使用也很简单,不过就是它只能点击左侧箭头icon来控制展开收缩,我这里是点击行的就要展开收缩。所以还需要借助 row-click和expand-change结合(因为点击icon的时候不会触发row-click),然后展开的时候就得通过设置expand-row-keys 这个来控制收缩,注意使用这个必须要设置row-key

 

 

 

核心就是用到这四个配置来实现点击某行控制收缩 

另外这次还有就是样式也正好记录一下 (深色系系统),每次修改element-ui样式的时候有点儿烦烦的呢。

下面上个页面的完整代码吧 

<doc>人员定位分站责任划分</doc>
<template>
  <div class="substation">
    <div>
      <el-form
        :inline="true"
        class="query-form"
        ref="searchForm"
        style="margin-left: 0.0781rem"
        :model="searchForm"
        @keyup.enter.native="refreshList()"
        @submit.native.prevent
      >
        <el-form-item prop="areaStatus" label="区域状态">
          <el-select size="small" v-model="searchForm.areaStatus" placeholder="请选择区域状态">
            <el-option
              v-for="item in areaStatusList"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item prop="responsibilityTeam" label="责任区队">
          <el-select size="small" v-model="searchForm.responsibilityTeam" placeholder="请选择责任区队">
            <el-option
              v-for="item in responsibilityTeamList"
              :key="item.value"
              :label="item.label"
              :value="item.value">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item>
          <el-button type="primary" @click="refreshList()" size="mini">查询</el-button>
          <el-button @click="resetSearch()" size="mini">重置</el-button>
        </el-form-item>
      </el-form>
      <el-table 
        :data="dataList" 
        size="medium" 
        style="width: 100%" 
        border
        v-loading="loading"
        class="table"
        :height="'3.9063rem'"
        :row-key="tableRowKey"
        :expand-row-keys="expandRowKeys"
        @expand-change="tableExpandChange"
        @row-click="rowClick"
        :row-class-name="tableRowClassName"
      >
        <el-table-column type="expand">
          <template slot-scope="scope">
            <!-- 自定义编写 -->
            <div class="expand-content">
              <div>
                <div>{{ scope.row.areaName }}</div>
                <div>{{ scope.row.num }}</div>
              </div>
            </div>
          </template>
        </el-table-column>
        <el-table-column
          label="区域名称"
          show-overflow-tooltip
          prop="areaName">
        </el-table-column>
        <el-table-column
          label="分站数量"
          show-overflow-tooltip
          prop="num">
        </el-table-column>
        <el-table-column
          label="责任区队"
          show-overflow-tooltip
          prop="team">
        </el-table-column>
        <el-table-column
          label="区队人数"
          show-overflow-tooltip
          prop="personTotal">
          <template slot-scope="scope">
            <el-link @click.native.stop="toDistrictTeam(scope.row)" type="primary">{{ scope.row.personTotal }}</el-link>
          </template>
        </el-table-column>
        <el-table-column
          label="短信通知人数"
          show-overflow-tooltip
          prop="noteTotal">
          <template slot-scope="scope">
            <el-link @click.native.stop="roSmsNotification(scope.row)" type="primary">{{ scope.row.noteTotal }}</el-link>
          </template>
        </el-table-column>
        <el-table-column
          header-align="center"
          align="center"
          width="200"
          label="操作"
        >
          <template slot-scope="scope">
            <el-button
              type="text"
              icon="el-icon-plus"
              size="small"
              @click.stop="add(scope.row)"
              >新增</el-button
            >
            <el-button
              type="text"
              icon="el-icon-edit"
              size="small"
              @click.stop="edit(scope.row)"
              >编辑</el-button
            >
            <el-button
              type="text"
              icon="el-icon-delete"
              size="small"
              @click.stop="del(scope.row)"
              >删除</el-button
            >
          </template>
        </el-table-column>
      </el-table>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      searchForm: {
        areaStatus: '0',
        responsibilityTeam: ''
      },
      loading: false,
      areaStatusList: [
        {
          label: '全部',
          value: '0'
        },
        {
          label: '新增',
          value: '1'
        },
        {
          label: '已删除',
          value: '2'
        }
      ], // 区域状态
      responsibilityTeamList: [], // 责任区队
      dataList: [{
        id: '12987122',
        areaName: '行人(副)斜井底',
        num: '12',
        team: '井下机电队',
        personTotal: '12',
        noteTotal: '5'
      },{
        id: '129872122',
        areaName: '1#永久避难硐室',
        num: '12',
        team: '井下机电队',
        personTotal: '12',
        noteTotal: '5'
      },{
        id: '129874122',
        areaName: '集中辅运巷',
        num: '12',
        team: '井下机电队',
        personTotal: '12',
        noteTotal: '5'
      },{
        id: '142987122',
        areaName: '井口',
        num: '12',
        team: '井下机电队',
        personTotal: '12',
        noteTotal: '5'
      },{
        id: '129587122',
        areaName: '3308综采工作面',
        num: '12',
        team: '井下机电队',
        personTotal: '12',
        noteTotal: '5'
      }],
      tableRowKey: 'id',
      expandRowKeys: [],
    };
  },
  mounted() {
    this.refreshList();
  },
  computed: {},
  methods: {
    // 获取数据列表
    refreshList() {
      // this.loading = true
      
    },
    // 重置
    resetSearch() {
      this.$refs.searchForm.resetFields();
      this.refreshList();
    },
    // 新增
    add(row) {
      
    },
    // 编辑
    edit(row) {
      
    },
    // 删除
    del(row) {
      this.$confirm(`确定删除区域“${row.areaName}”所选项吗?`, '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        // this.loading = true
        
      })
    },
    // 短信通知人数
    roSmsNotification(row) {
      
    },
    // 区队人数
    toDistrictTeam(row) {
      
    },
    // 展开行
    tableExpandChange(expandedRows) {
      this.expandCurRow(expandedRows)
    },
    // 点击某行
    rowClick(row) {
      this.expandCurRow(row)
    },
    // 点击展开/收缩当前行
    expandCurRow(row) {
      if(this.expandRowKeys.length) { // 点击已展开的行 就要收起
        if(this.expandRowKeys.indexOf(row[this.tableRowKey]) >= 0) {
          this.expandRowKeys = []
          return
        }
      }
      this.expandRowKeys = [row[this.tableRowKey]]
    },
    tableRowClassName({ row, rowIndex }) {
      return "warning-row";
    },
  },
};
</script>
<style scoped>
.substation {
  width: 100%;
  padding-top: 0.1042rem;
  box-sizing: border-box;
}
.substation > div {
  width: 99%;
  margin: 0 auto;
}

.expand-content {
  width: 100%;
  padding-left: 100px;
  box-sizing: border-box;
}
.expand-content > div {
  width: 100%;
  height: .2813rem;
  display: flex;
  border-bottom: 1px solid rgba(0, 118, 200, .5);
  display: flex;
  padding-left: 10px;
  box-sizing: border-box;
}
.expand-content > div > div {
  /* width: 20%; */
  height: 100%;
  line-height: .2813rem;
  text-align: center;
  color: #FFFFFF;
  font-size: .0677rem;
}
/deep/ .el-input__inner {
  background-color: transparent !important;
  border: 1px solid #0076c8 !important;
  color: #fff;
  margin-bottom: 0.052083rem;
  font-size: 0.067708rem;
  /* width: 1.8229rem!important; */
  height: 0.145833rem;
  padding: 0 0.0781rem;
  /* line-height: 0.2083rem; */
}

/deep/ .el-date-editor .el-range-input {
  background: transparent !important;
}

/deep/ .el-form-item__content {
  line-height: 0.2083rem;
}

/deep/ .el-date-editor .el-range__icon {
  font-size: 0.0729rem;
  margin-left: -0.026rem;
  line-height: 0.125rem;
}

/deep/ .el-date-editor .el-range-separator {
  color: #c0c4cc;
}

/deep/ .el-input__icon {
  width: 0.1302rem;
}

/deep/ .el-range-editor--small .el-range-input {
  font-size: 0.0677rem;
}
/deep/ .el-range-editor--small .el-range-separator {
  line-height: 0.125rem;
  font-size: 0.0677rem;
}
/deep/ .el-form--inline .el-form-item__label {
  color: #c0c4cc;
  font-size: 0.078125rem;
  line-height: 0.2083rem;
}

/deep/ .el-range-editor.el-input__inner {
  padding: 0.0104rem 0.0521rem;
}

/deep/ .el-form-item {
  margin-bottom: 0.1146rem;
}

/deep/ .el-button--mini,
.el-button--small {
  font-size: 0.0625rem;
}

/deep/ .el-date-table {
  font-size: 0.0625rem !important;
}

/deep/.is-leaf {
  background-color: #3c4860 !important;
  color: #fff;
}

/deep/ .el-table {
  background-color: transparent;
}

/deep/ .el-table thead {
  height: 0.244792rem;
}

/deep/.el-table .warning-row {
  background: #1c233b;
  color: #fff;
  height: 0.286458rem !important;
  line-height: 0.286458rem !important;
}

/deep/.el-table td,
/deep/.el-table th.is-leaf {
  border-bottom: 0.0052rem solid #0076c8;
  border-right: none;
}

/deep/.el-table tbody tr:hover > td {
  background-color: rgba(60, 72, 96, 0.3) !important;
  color: #91c9fc;
  cursor: pointer;
}
/deep/.el-table tbody tr.expanded:hover > td {
  background-color: #1a5695!important;
  color: #91c9fc;
  cursor: pointer;
}
/deep/ .el-table__body tr.expanded>td{
  background-color: #1a5695!important;
  color: #91c9fc;
}
/deep/ .el-table__cell.el-table__expanded-cell {
  background: #1c233a!important;
}
/deep/ .el-table__cell.el-table__expanded-cell:hover {
  background: #1c233a!important;
}
/deep/ .el-table__expand-icon>.el-icon {
  color: #fff;
}

/deep/.el-table::before {
  height: 0 !important;
}

/deep/ .el-table .cell {
  font-size: 0.072917rem;
}

/deep/ .el-table--border,
.el-table--group {
  /* border: .0052rem solid #0076c8; */
  border: none;
}

/deep/ .el-input--mini .el-input__icon {
  line-height: 0.2448rem;
}


/*  右边的白线  */
/deep/ .el-table--border::after {
  background-color: transparent!important;
}
</style>

效果是这样的: 

 

当然展开后的逻辑可以自定义去写的,点击的当前行的数据都是可以拿到的,具体可以看上面代码。就这样吧,简单记录一下~ 

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

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

相关文章

linux内核篇-输入输出系统(块设备,字符设备)

计算机系统的输入和输出系统都有哪些呢&#xff1f;有键盘、鼠标、显示器、网卡、硬盘、打印机、CD/DVD 等等&#xff0c;多种多样。但是对于操作系统来讲&#xff0c;却是一件复杂的事情&#xff0c;因为这么多设备&#xff0c;形状、用法、功能都不一样&#xff0c;怎么才能统…

SpringBoot中整合Swagger2接口文档

目录 1、maven依赖 2、swagger2 注解整体说明 2.1、请求类的描述 2.2、方法和方法参数的描述 2.3、方法的响应状态的描述 2.4、对象的描述 3、请求类的描述 3.1、Api&#xff1a;请求类的说明 3.2、示例&#xff1a; 4、方法和方法参数的描述 4.1、ApiOperation&#xff1a…

Linux 中的文件类型

目录 Linux文件类型说明 软链接 软链接特点 软链接工作过程 正常原文件a工作流程 文件a的软链接工作流程 硬链接 硬链接的特点 文件a的硬链接工作流程 软链接与硬链接的比较 测试软链接以及硬链接 1.进入根目录 2.创建test目录 3.进入test目录中&#xff0c;并创建a…

基于Redis的分布式锁,Redisson的简单使用和常用配置

介绍 Redisson是一个在Redis基础上实现的Java驻内存数据网格。Redisson提供了使用Redis的最简单最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离&#xff0c;从而让使用者能够将精力更集中的放在处理业务逻辑上。 Redisson官方文档地址&#xff1a;https://githu…

蛋糕烘焙店小程序开发 让生活多点甜

蛋糕甜品因为较高的颜值、香甜的口感深受大众喜欢&#xff0c;当我们路过一家蛋糕烘焙店的时候&#xff0c;飘香的味道让我们流连忘返。但是互联网时代&#xff0c;各个行业都在转型&#xff0c;蛋糕烘焙店也需要由传统线下店面向线上线下结合的方式转变&#xff0c;以求摆脱区…

数据对象属性分类

数据集由数据对象组成&#xff0c;一个数据对象代表一个实体。数据对象又称样本、实例、数据点或对象。属性&#xff08;attribute&#xff09;是一个数据字段&#xff0c;表示数据对象的一个特征。属性向量&#xff08;或特征向量&#xff09;是用来描述一个给定对象的一组属性…

MySQL之单表访问方法

前言 本文章收录在MySQL性能优化原理实战专栏&#xff0c;点击此处查看更多优质内容。 本文摘录自 ▪ 小孩子4919《MySQL是怎样运行的&#xff1a;从根儿上理解MySQL》 对于我们这些MySQL的使用者来说&#xff0c;MySQL其实就是一个软件&#xff0c;平时用的最多的就是查询功…

快码住!!! 二叉树概念、重要性质、存储结构 技巧大总结!

文章目录 树树的概念树的表示树在实际中的应用 二叉树二叉树的概念特殊的二叉树 二叉树的性质二叉树性质应用的练习题 二叉树的存储结构顺序结构链式结构 树 树的概念 树是一种非线性的数据结构&#xff0c;它是由n(n>0)个有限结点组成的一个具有层次关系的集合。把它叫做…

语言模型及Word2vec与Bert简析

语言模型可以对一段文本的合理性概率进行估计&#xff0c;对信息检索&#xff0c;机器翻译&#xff0c;语音识别等任务有着重要的作用。就以前的学习笔记&#xff0c;本文简单总结了NLP语言模型word2vec和bert分享给大家&#xff0c;疏漏之处&#xff0c;望请指出&#xff0c; …

Go语言的简介和环境搭建

Go语言的简介和环境搭建 带你了解什么是Go语言 如何安装和配置Go的开发环境 静态强类型&#xff0c;编译型语言&#xff01;&#xff01;&#xff01; 1.简介 1.1介绍 Go 也称为 Golang&#xff0c;两个是一个东西。谷歌弄得。创造者都是大佬&#xff0c;所以说这个编程语言很…

PSP - AlphaFold2 Multimer 的 Heteromer (异聚体) MSA 逻辑

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://blog.csdn.net/caroline_wendy/article/details/130733737 同源多聚体 (Homomer) 是由相同的蛋白质亚基组成的,而异源多聚体 (Heteromer) 是由不同的蛋白质亚基组成的。同源多聚体的亚基之间通常有对称的相…

BFT 最前线 | OpenAI开放网络浏览和插件;“360AI商店”上线;Bing市场份额不升反降;亚马逊机器人配送中心投产

原创 | BFT机器人 AI视界 TECHNOLOGY NEWS 01 OpenAI将向所有ChatGPT Plus用户推出网络浏览和插件 OpenAI将向所有ChatGPT Plus用户推出网络浏览和插件近日&#xff0c;OpenAI发文称&#xff0c;将在本周&#xff08;5.15-5.21日&#xff09;内向所有ChatGPT Plus用户推出网络…

【Python scikit-learn】零基础也能轻松掌握的学习路线与参考资料

Python是一种广泛使用的编程语言&#xff0c;随着数据科学领域的不断发展&#xff0c;Python成为了数据科学的主要工具之一。scikit-learn是Python中一款非常流行的机器学习库&#xff0c;它为广大科学家和工程师提供了一种简单而有效的方法来解决机器学习问题。 本文将从以下…

客服软件强攻略——改善客户自助服务

客户自助服务相对容易采用并集成到您现有的客户服务产品中。也就是说&#xff0c;任何自助服务计划都应该经过充分研究&#xff0c;跟踪明确的目标和成功指标&#xff0c;以确保其成功。 有效的自助服务通常可以通过软件工具形成&#xff0c;比如SaleSmartly&#xff08;ss客服…

微服务保护(线程隔离、降级、熔断)

线程隔离 线程隔离有两种方式实现: 线程池隔离信号量隔离 线程池隔离 假设服务A依赖于服务B和服务C&#xff0c;那么服务A就会分别对服务B和服务C创建线程池&#xff0c;当有请求进来时不会使用服务A本身的线程&#xff0c;而是到对应的线程池中取一个线程来调用feign的客户…

ViLT论文精读笔记

ViLT论文精读笔记 0.摘要1.引言2.背景知识&#xff08;小综述&#xff09;2.1对VLP模型分类2.2模态的融合2.3融合前特征的抽取 3.模型方法3.1预训练目标函数&#xff1a;3.1.1 Image Text Matching&#xff1a;3.1.2 Masked Language Modeling3.1.3 Masked Image Modeling 3.2W…

本周刷题记录

截至周三刷了六道题 题目1&#xff1a; 这是个交互题&#xff0c;目前遇到的交互题都是用二分解决的。 本题使用二分精准定位拥有重量为2的石头的堆。 为避免时间超限&#xff0c;应该再输入数据时计算好前缀和。 二分过程中&#xff0c;如果哪边的重量总和不等于石头数&…

关键词采集软件-关键词自动生成器

网站关键词对于SEO优化至关重要&#xff0c;在搜索引擎排名和流量中扮演着重要的角色。而147seo关键词生成软件可以帮助用户更好地发现与他们的业务和目标相关的关键词和话题。其中的147SEO关键词挖掘软件是其核心功能之一&#xff0c;能够自动批量实时挖掘关键词和短语&#x…

day33_css

今日内容 零、 复习昨日 一、CSS 零、 复习昨日 见代码 一 、引言 1.1CSS概念 ​ 层叠样式表(英文全称&#xff1a;Cascading Style Sheets)是一种用来表现HTML&#xff08;标准通用标记语言的一个应用&#xff09;或XML&#xff08;标准通用标记语言的一个子集&#xff09;等文…

以转账案例说明Spring事务

文章目录 1 Spring事务简介1.1 相关概念介绍1.2 转账案例-需求分析1.3 转账案例-环境搭建步骤1:准备数据库表步骤2:创建项目导入jar包步骤3:根据表创建模型类步骤4:创建Dao接口步骤5:创建Service接口和实现类步骤6:添加jdbc.properties文件步骤7:创建JdbcConfig配置类步骤8:创建…