更改一列checkbox的顺序

server/2024/10/18 12:21:54/

不知道取啥标题了,记录之用,效果如图:

选取任意checkbox,点击向上或向下按钮,就可以改变顺序:

 代码如下:

vue2

<div class="vm-container"><el-checkbox-group v-model="selectedVMs"><el-checkbox v-for="(vm, index) in vmList" :key="index" :label="vm">{{ vm }}</el-checkbox></el-checkbox-group>
</div><div class="arrow-column"><el-button type="primary" icon="el-icon-arrow-up" @click="moveUp" :disabled="isMoveUpDisabled"></el-button><el-button type="primary" icon="el-icon-arrow-down" @click="moveDown" :disabled="isMoveDownDisabled"></el-button>
</div>

script

javascript">data() {return {vmList: ['VM1', 'VM2', 'VM3', 'VM4', 'VM5','vm6','vm7','vm8','vm9'],selectedVMs: [],}
},
computed: {isMoveUpDisabled() {// 检查是否有选中的虚拟机且最上面的选中项的索引为 0const selectedIndexes = this.selectedVMs.map(vm => this.vmList.indexOf(vm));return selectedIndexes.length === 0 || Math.min(...selectedIndexes) === 0;},isMoveDownDisabled() {// 检查是否有选中的虚拟机且最下面的选中项的索引为 vmList.length - 1const selectedIndexes = this.selectedVMs.map(vm => this.vmList.indexOf(vm));return selectedIndexes.length === 0 || Math.max(...selectedIndexes) === this.vmList.length - 1;}
},
metheds:{moveUp() {// 1. 获取所有选中的虚拟机(VM)的索引位置const selectedIndexes = this.selectedVMs.map(vm => this.vmList.indexOf(vm))// 2. 过滤掉索引小于等于0的项,确保只操作有效的(非第一个)索引const validIndexes = selectedIndexes.filter(index => index > 0)// 3. 按升序排序索引,确保我们从后往前操作(从较大的索引开始移动)validIndexes.sort((a, b) => a - b)// 4. 遍历每一个有效索引,并进行相应的移动操作validIndexes.forEach(index => {if (index > 0) {// 5. 从 vmList 中移除选中的 VM(并保存移除的对象)const vmToMove = this.vmList.splice(index, 1)[0]// 6. 将该 VM 插入到前一个位置,即将其上移this.vmList.splice(index - 1, 0, vmToMove)}})},moveDown() {// 1. 获取所有选中的虚拟机(VM)的索引位置,并过滤掉最后一个索引(即不需要下移的 VM)const selectedIndexes = this.selectedVMs.map(vm =>this.vmList.indexOf(vm)).filter(index => index < this.vmList.length - 1)// 2. 反转索引,确保我们从下往上操作(从较小的索引开始移动)selectedIndexes.sort((a, b) => b - a)// 3. 遍历每一个有效索引,并进行相应的移动操作selectedIndexes.forEach(index => {if (index < this.vmList.length - 1) {// 4. 获取要下移的虚拟机(vm)const vmToMove = this.vmList[index]// 5. 从 vmList 中移除选中的 VMthis.vmList.splice(index, 1)// 6. 将该 VM 插入到后一个位置,即将其下移this.vmList.splice(index + 1, 0, vmToMove)}})
}}

style

.vm-container {float: left;border: 1px solid #dcdfe6; /* 边框样式 */padding: 10px; /* 内边距 */min-width: 100px;max-width: 300px;max-height: 500px; /* 固定高度 */overflow-y: auto; /* 超出内容时出现滚动条 */
}.el-checkbox-group{display: flex;flex-direction: column; /* 子元素垂直排列 */align-items: left; /* 水平居中对齐 */.el-checkbox{margin-right: 0px;}
}.vm-container::v-deep .el-checkbox .el-checkbox__inner{width: 15px;height: 15px;
}.vm-container::v-deep .el-checkbox .el-checkbox__input.is-checked .el-checkbox__inner::after{top: 2px;left:5px
}.arrow-column {margin-left: 10px;float: left;display: flex;flex-direction: column;align-items: left;justify-content: center;
}
.el-button+.el-button{margin-left:0px;margin-top:5px
}

🆗🦌 


http://www.ppmy.cn/server/131302.html

相关文章

docker详解介绍+基础操作 (四)容器镜像

一.镜像结构和原理 Docker 镜像是 Docker 技术的核心组成部分之一&#xff0c;它用于封装应用程序及其依赖项&#xff0c;以便在任何支持 Docker 的环境中运行。了解 Docker 镜像的结构和原理对于有效使用 Docker 至关重要。以下是对 Docker 镜像结构和原理的详细介绍。 Dock…

R语言生物群落(生态)数据统计分析与绘图

R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂&#xff0c;涉及众多统计分析方法。以生物群落数据分析中的最常用的统计方法回归和混合效应模型、多元统计分析技术及结构方程等数量分析方法为主线&#xff0c;通过多个来自经典…

grpc的python使用

RPC 什么是 RPC &#xff1f; RPC&#xff08;Remote Procedure Call&#xff09;远程过程调用&#xff0c;是一种计算机通信协议&#xff0c;允许一个程序&#xff08;客户端&#xff09;通过网络向另一个程序&#xff08;服务器&#xff09;请求服务&#xff0c;而无需了解…

LabVIEW提高开发效率技巧----点阵图(XY Graph)

在LabVIEW开发中&#xff0c;点阵图&#xff08;XY Graph&#xff09; 是一种强大的工具&#xff0c;尤其适用于需要实时展示大量数据的场景。通过使用点阵图&#xff0c;开发人员能够将实时数据可视化&#xff0c;帮助用户更直观地分析数据变化。 1. 点阵图的优势 点阵图&…

注意力机制篇 | 清华大学提出Focused Linear Attention取代Self-Attention成为ViT的新宠

前言:Hello大家好,我是小哥谈。Focused Linear Attention(聚焦线性注意力)是一种用于视觉Transformer模型的注意力机制,旨在提高效率和表现力,它解决了传统线性注意力方法的两个主要问题:聚焦能力和特征多样性。🌈 目录 🚀1.基础概念 🚀2.网络结构 🚀3.…

hbuilderx+uniapp+Android健身房管理系统 微信小程序z488g

目录 项目介绍支持以下技术栈&#xff1a;具体实现截图HBuilderXuniappmysql数据库与主流编程语言java类核心代码部分展示登录的业务流程的顺序是&#xff1a;数据库设计性能分析操作可行性技术可行性系统安全性数据完整性软件测试详细视频演示源码获取方式 项目介绍 用户功能…

【docker】存储之目录挂载和卷映射

一、前言 之所以讲Docker存储的目录挂载和卷映射&#xff0c;是因为之前我们在做关于修改下载的镜像的内容的时候&#xff0c;我们会发现&#xff0c;这个修改的过程比较复杂的&#xff0c;我们需要多个指令&#xff0c;层层深入。而且如果我们的容器一旦销毁后重新启动&#x…