收款定制开发【ElementUI优化】el-table展开行 ==> :expand-row-keys=“expands“ 刷新表格,保存当前操作展开行

收款定制开发于极迷处识迷 则处处醒,收款定制开发将难放怀一放 则万境宽。

目录

(核心)


 效果比较:

 修改前:刷新表格,收款定制开发展开行消失  ==>   修改后:刷新表格,收款定制开发保存当前操作展开行。

 


一、展开行(基础 可跳过)

参考element UI:

通过设置 type="" 和 Scoped slot 可以开启展开行功能,el-table-column 的模板会被渲染成为展开行的内容,展开行可访问的属性与使用自定义列模板时的 Scoped slot 相同。

1. 展示tag信息

 效果:每行组合数据展示包含的产品名称信息。后端返回的数据结构如下:

  1. <el-table v-loading="loading" stripe :data="groupList">
  2. <el-table-column type="expand" prop="productData">
  3. <template slot-scope="scope">
  4. <div class="tag-content">
  5. <div
  6. class="tag-item"
  7. :key="tag.prdtName"
  8. v-for="tag in scope.row.productData"
  9. >
  10. <el-tag closable style="margin: auto" type="danger">{{
  11. tag.prdtName
  12. }}</el-tag>
  13. </div>
  14. </div>
  15. </template>
  16. </el-table-column>
  17. <el-table-column label="序号" prop="index" width="55">
  18. <template slot-scope="scope">
  19. <span>{{ scope.$index + 1 }}</span>
  20. </template>
  21. </el-table-column>
  22. <el-table-column label="组合编号" align="center" prop="groupCode" />
  23. <el-table-column label="组合名称" align="center" prop="groupName" />
  24. <el-table-column label="产品个数" align="center" prop="productNum" />
  25. </el-table>

至此可以完成全部tags的展示,且满足样式要求一行只展示三个。

  1. .tag-item {
  2. width: 33%;
  3. margin-bottom: 10px;
  4. display: flex;
  5. justify-content: center;
  6. }

 2. 实现添加功能

 只需要在刚才代码的后面添加tag实现新增功能即可

  1. <div class="tag-item">
  2. <el-button
  3. class="button-new-tag"
  4. size="small"
  5. @click="AddProduct(scope.row)"
  6. >+ 新产品</el-button
  7. >
  8. </div>

addProduct()函数中主要:显示dialog==> 清空弹框form表单

问题:

功能已经实现,但是每次操作之后el-table的展开行都关闭了这样用户体验很不友好。这是el-table不是很友好的地方,每次页面刷新都会默认关闭所有的行。

希望:对于每次展开行的操作,操作之后该行继续展开。


二、控制el-table展开行

 1.expand-row-keys

expand-row-keys: 可以通过该属性设置 Table 目前的展开行,需要设置 row-key 属性才能使用,该属性为展开行的 keys 数组。

 实现思路:创建一个expends数组,用于存储展开的keys。每次点击添加时,将该行的id存放进去。

只需要给table添加如下两行代码

  1. row-key="id"
  2. :expand-row-keys="expands"

2.在添加时更新expands

在AddProduct()时记录下当前的行id

  1. // 添加产品对话框
  2. AddProduct(row) {
  3. this.open = true;
  4. this.groupId = row.id;
  5. // 表格置空
  6. this.form = {};
  7. // console.log(this.expands, "[[[[[[expends]]]]]]]]]");
  8. this.expands = [];
  9. this.expands.push(row.id);
  10. // console.log(this.expands, "[[[[[[expends]]]]]]]]]");
  11. },

当然expends可以记录数组,以上只希望记录并保存选中添加行的展开状态。可以根据需要进行修改。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发