数据动态变化时实现多选及回显

 

<template><el-dialog title="设置权限" :visible.sync="showDialog" :close-on-click-modal="false" :append-to-body="true" width="800px"><div v-loading="loading"><el-radio-group v-model="setPowerRadio"><el-radio :label="0" style="display:block;line-height: 30px;">所有人可见</el-radio><el-radio :label="1" style="display:block;line-height: 30px;">选择可见</el-radio></el-radio-group><div v-show="setPowerRadio==1"><el-row><el-col :span="10" style="height: 300px;border: 1px solid #CBCBCB;"><div class="power-department-border">部门</div><el-tree :data="unitsList" :empty-text="emptyText" node-key="id" ref="tree" :default-expand-all="true":highlight-current="true" :render-content="renderContentStation" @node-click="handleNodeClick"class="power-col-left-border"></el-tree></el-col><el-col :span="14" style="padding: 0 10px;height: 300px;"><!-- ref="multipleTable" --><!--选择项发生变化 @selection-change="handleSelectionChange" --><el-table border :data="tableData" tooltip-effect="dark" style="width: 100%" ref="multipleTable"@select="handleSelectionRow" @select-all="handleSelectionAll" class="power-col-right-overflow"><el-table-column type="selection" width="55"></el-table-column><el-table-column prop="userName" label="姓名"></el-table-column></el-table></el-col></el-row><div class="select-people"><div>已选择({{ tableDataRight.length }}):</div><div><span v-for="(item, index) in tableDataRight" :key="index">{{ item.userName }}<span v-if="tableDataRight.length != index + 1">,</span></span></div></div></div><div class="text-center-margin-20-0"><el-button @click="showDialog = false">取 消</el-button><el-button type="primary" @click="onSubmit()">确 定</el-button></div></div></el-dialog>
</template>
<script>export default {data() {return {showDialog: false,loading: false,setPowerRadio: 0, //0所有 1选择CurrentDepartmentId: "", //当前部门idunitsList: [], //部门数组filterText: '', //关键字查询emptyText: '',id: '', //父组件idtableData: [], //人员显示leftCodes: [], //左侧列表id集合tableDataRightCodes: [], //选中的人员id数组tableDataRight: [], //选中的人员总数据search: 0, // 1.搜索开始  0搜索结束};},watch: {filterText(val) {this.$refs.tree.filter(val);},},methods: {add(row, type) {this.showDialog = true;this.routerType = type;this.$nextTick(() => {if (row.fid) {this.id = row.fid;} else {this.id = row.id;}this.getCatetoryAuthLink(); //获取指定分类授权信息this.getDepartmentLink();});},//获取指定分类授权信息getCatetoryAuthLink() {//读初始选中的信息this.tableDataRight = res.data.data.userList; this.leftCodes = this.tableDataRight.map(dev => dev.id);},//获取左侧树型数据getDepartmentLink() {this.unitsList = []this.loading = true;this.search = 1;getDepartment().then(res => {if (res.data.code == 200) {let dataLink = res.data.datathis.unitsList = dataLink.list;this.$nextTick(() => {this.loading = false;if (dataLink.list.length != 0) {this.CurrentDepartmentId = dataLink.list[0].id;this.$refs.tree.setCurrentKey(dataLink.list[0].id);this.getNewPeople(dataLink.list[0].id);}})} else {this.loading = false;this.emptyText = '暂无数据'this.$message.error(res.data.msg);}});},//树-转换handleNodeClick(value) {this.CurrentDepartmentId = value.id;this.search = 1;this.$nextTick(() => {this.getNewPeople(value.id);})},//部门下的人员getNewPeople(id) {this.tableData = []let param = {departmentId: id,page: false,}getUserList(param).then(res => {if (res.data.code == 200) {this.tableData = res.data.data.list;this.defaultChoose(this.tableDataRight, this.tableData);this.$nextTick(() => {this.search = 0;});} else {this.$message.error(res.data.msg);}});},//选择单行handleSelectionRow(row, selected) {if (this.search) return;let booleanValue = this.tableDataRight.some(item => {return item.id == selected.id})//包含if (booleanValue) {this.tableDataRight = this.tableDataRight.filter(item => item.id != selected.id)} else {this.tableDataRight.push(selected)}},//全选/取消全部handleSelectionAll(selection) {if (this.search) return;if (selection.length != 0) {let arr = [...this.tableDataRight, ...selection];this.$nextTick(() => {// this.tableDataRight = Array.from(new Set(arr)) //简单去重let unique = new Map(); //复杂去重arr.forEach(item => unique.set(item.id, item));this.tableDataRight = [...unique.values()];})} else {this.tableData.forEach(item => {this.tableDataRight = this.tableDataRight.filter(ele => ele.id != item.id)})}},// 已选择的设备需要默认勾选// arr所有选中的;tableArr右侧表格显示数据defaultChoose(arr, tableArr) {/*注意:这里不能直接遍历arr,element和item 他们在内存中的地址不同,所以他们是两份不同的数据,所以这么写 toggleRowSelection(element, true) 是不会回显选中的*/for (let index = 0; index < tableArr.length; index++) {const item = tableArr[index];arr.forEach(element => {if (element.id == item.id) {this.$nextTick(() => {this.$refs.multipleTable.toggleRowSelection(item, true);});}});}},//处理名称-站点renderContentStation(h, {node,data,store}) {return ( < div ><span title = {data.departmentName}class = 'style-demo' > {data.departmentName} </span> </div > );},onSubmit() {if (this.setPowerRadio == 1 && this.tableDataRight.length == 0) {this.$message.warning("选择人员不可为空");return false;}let userIdList = this.tableDataRight.map(dev => dev.id);let param = {}if (this.routerType == '素材分类') {param = {categoryId: this.id,fvisible: this.setPowerRadio,userIdList: userIdList,}} else { //素材审核  素材管理param = {recordId: this.id,fvisible: this.setPowerRadio,userIdList: userIdList,}}let urlLink = nullif (this.routerType == '素材分类') {urlLink = setCatetoryAuth;} else {urlLink = setRecordAuth;}urlLink(param).then(res => {if (res.data.code == 200) {this.$message.success("操作成功");this.showDialog = false;if (this.routerType == '素材分类' || this.routerType == '素材管理') {this.$emit("refresh");}} else {this.$message.error(res.data.msg);}});}}}</script>
<style scoped>.select-people {border: 1px solid #CBCBCB;background: #F0F5F7;color: #000000;margin: 10px;width: calc(100% - 20px);min-height: 100px;padding: 10px;box-sizing: border-box;}.power-department-border {border: 1px solid #CBCBCB;background: linear-gradient(180deg, #F0F5F7 93%, #DFE4E6 97%);box-sizing: border-box;vertical-align: middle;text-align: center;line-height: 1.5;padding: 5.5px 0;font-weight: bold;color: #666666;font-size: 16px;font-size: calc(var(--scale) * 16px);border-bottom: 1px solid #CBCBCB;}</style>

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

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

相关文章

Servlet实现会话追踪登录功能(结合JDBC)

目录 1.技术要求 2.关于会话Session 生活例子 代码体现 1.存储到session 2.从session中拿出 3.完成登录功能 4.利用Session作追踪 关于jstl应用 关于EL表达式应用 注意 5.测试 1.技术要求 核心&#xff1a; &#xff08;1&#xff09;Servlet项目的搭建 &#x…

C++---模板进阶(非类型模板参数,模板的特化,模板分离编译)

我们都学习和使用过模板&#xff0c;而这篇文章我们来将一些更深入的知识。在此之前&#xff0c;我们在使用C编程时可以看到模板是随处可见的&#xff0c;它能支持泛型编程。模板包括函数模板和类模板&#xff0c;我们有的人可能会说是模板函数和模板类&#xff0c;但严格讲这样…

Ripple:使用Wavelet Approximations来加速FHE的Programmable Bootstraps

1. 引言 University of Delaware和Nillion团队的 Charles Gouert、Mehmet Ugurbil、Dimitris Mouris、Miguel de Vega 和 Nektarios G. Tsoutsos&#xff0c;2024年论文《Ripple: Accelerating Programmable Bootstraps for FHE with Wavelet Approximations》&#xff0c;开源…

关于一些优化的知识

1、凸优化&#xff1a;一定可找到全局最优解 非凸优化&#xff1a;一般是局部最优解 2、无约束优化问题求解方法&#xff1a;梯度下降、拟牛顿法、高斯牛顿法、LM算法 3、 解释&#xff0c;就是右边的式子对应于就是当前这个xk这个点基础上朝着pk取走步长为a得到了对应的值&…

vscode运行命令报错:标记“”不是此版本中的有效语句分隔符。

1. 报错问题 标记“&&”不是此版本中的有效语句分隔符。 2. 解决办法 将 terminal 中的 owershell 改成 cmd 就 ok

To C道路越走越夯实,1688彻底变身了?

在偌大的电商市场&#xff0c;消费者都是专业的“掘宝者”&#xff0c;热衷于发现各种新奇商品和采购新通路。 拼多多、1688等平台也正是在这种情况下&#xff0c;成为消费市场的“宠儿”。其中&#xff0c;1688的发展路径较为独特&#xff0c;据天眼查&#xff0c;其为源头厂…

《python-配置》在ubuntu系统上安装pycham并破解

阿丹&#xff1a; 因为ai开发要使用ubuntu系统&#xff0c;整理和总结一下如何在这里安装pycham 官网下载&#xff1a;pycham下载地址 PyCharm: the Python IDE for data science and web development 官网操作流程&#xff1a; 1&#xff0c;点击下载 2、下载其他版本 3、…

如何理解与学习数学分析——第二部分——数学分析中的基本概念——第9章——可积性

第2 部分&#xff1a;数学分析中的基本概念 (Concepts in Analysis) 9. 可积性(Integrability) 本章讨论了可积性(integrability)的概念(它不同于积分过程)。研究了反导数(antiderivative&#xff0c;或称原函数)和函数图像下面积之间的关系&#xff0c;然后通过对面积的近似…

应用解析 | 面向智能网联汽车的产教融合解决方案

背景介绍 随着科技的飞速发展&#xff0c;智能网联汽车已成为汽车产业的新宠&#xff0c;引领着未来出行的潮流。然而&#xff0c;行业的高速发展也带来了对高素质技术技能人才的迫切需求。为满足这一需求&#xff0c;推动教育链、人才链与产业链、创新链的深度融合&#xff0…

文件加密软件排行榜前五名|好用的五款文件加密软件分享

你的公司是否存在这些问题&#xff1a; 数据泄露事件常有发生&#xff0c;数据安全的重要性日益凸显&#xff0c;而文件加密软件则是保护数据安全的重要工具。 市场上存在众多文件加密软件&#xff0c;每款都有其独特的特点和优势。 本文将为您分享五款好用的文件加密软件&…

针对多智能体协作框架的元编程——METAGPT

M ETA GPT: M ETA P ROGRAMMING FOR M ULTI -A GENT COLLABORATIVE F RAMEWORK 1.概述 现有的多智能体系统主要面临以下问题&#xff1a; 复杂性处理不足&#xff1a;传统的多智能体系统主要关注简单任务&#xff0c;对于复杂任务的处理能力有限&#xff0c;缺乏深入探索和…

C++中的priority_queue和deque以及适配器

C中的priority_queue和deque 一丶 priority_queue1.1 priority_queue的介绍1.2 priority_queue的使用1.3 priority_queue的模拟实现 二丶 deque2.1 deque的简单介绍2.2 deque的缺陷2.3 为什么要选择deque作为stack和queue的迭代器 三丶 容器适配器3.1 什么是适配器3.2 STL标准库…

GlaDS缘起

题目:Modeling channelized and distributed subglacial drainage in two dimensions 近年来,冰盖表面融化与冰盖动态之间的联系及其对海平面上升的影响引起了广泛关注。特别是格陵兰冰盖的研究显示,表面融水显著影响冰川移动速度,而冰下排水系统对冰川动力学及冰川水文学…

【WP】猿人学_13_入门级cookie

https://match.yuanrenxue.cn/match/13 抓包分析 抓包分析发现加密参数是cookie中有一个yuanrenxue_cookie 当cookie过期的时候&#xff0c;就会重新给match/13发包&#xff0c;这个包返回一段js代码&#xff0c;应该是生成cookie的 <script>document.cookie(y)(u)(a…

Edge工作区按钮消失了,又出现了

在edge的设置中的自定义工具栏处的显示工作区&#xff0c;打开&#xff0c;右上角就有一个工作区的标志然后就可以进入工作区了

产业,到底需要什么大模型?

[ 产业究竟需要怎样的大模型&#xff1f;关于这个问题&#xff0c;本文作者便提出了他的看法&#xff0c;并总结了产业大模型目前阶段的三点落地挑战。一起来看看&#xff0c;或许可以帮助你更好地理解大模型与行业、与产业的融合。 写下这篇的起因&#xff0c;是前不久的一件事…

[已解决]FinalShell连接CentOS失败:java.net.UnknownHostException: centos

报错&#xff1a; 解决办法&#xff1a; 1.查看Windows:C:\Windows\System32\drivers\etc\ 2.拷贝hosts文件&#xff0c;用记事本打开hosts文件 3.添加主机名centos及对应IP地址&#xff0c;保存并粘贴覆盖C:\Windows\System32\drivers\etc\中的hosts文件 4.打开cmd命令窗口输…

Mac下删除系统自带输入法ABC,正解!

一、背景说明 MacOS 在 14.2 以下的系统存在中文输入法 BUG&#xff0c;会造成系统卡顿&#xff0c;出现彩虹圆圈。如果为了解决这个问题&#xff0c;有两种方法&#xff1a; 升级到最新的 14.5 系统使用第三方输入法 在使用第三方输入法的时候&#xff0c;会发现系统自带的 …

RabbitMQ启动报错:Error during startup: {error, {schema_integrity_check_failed,

报错信息如下&#xff1a; Error during startup: {error,{schema_integrity_check_failed,[{table_attributes_mismatch,rabbit_user,[username,password_hash,tags,hashing_algorithm,limits],[username,password_hash,tags,hashing_algorithm]},{table_attributes_mismatch…

集合进阶相关基础及底层原理

集合体系结构 单列集合&#xff1a; Collenction 每次只能添加一个值&#xff0c;其中红色是接口&#xff0c;蓝色是实现类 图来自黑马程序员网课 List系列集合&#xff1a;添加的元素是有序&#xff0c;可重复&#xff0c;有索引 Set系列集合&#xff1a;添加的元素是…