vue实现拖拽排序、可用于图片、模块交换位置

录屏软件很卡,实际效果是非常流畅的
vue实现拖拽排序、移除

本质都一样,只不过一个是单行、一个是双列,使用的是vuedraggle组件vuedraggle
draggable就是组件,两个组件都写同一个group,则两栏可以互相拖拽,list绑定对应的数据源

				// 左边栏               <div style="float: left">                 <draggable                     animation="300"                     group="module"                     :list="form.left">                   <div class="left" :style="{height: leftModuleHeight}" v-for="(item,index) in form.left"                        v-model="form.left[index]">                     <span class="text-option">{{ item.name }}</span>                     <i class="el-icon-error"                        style="color: red;font-size: 20px;display: flex;margin-top: -55px;margin-left: 190px;cursor: pointer"                        @click="removeModule(item.name)"></i>                   </div>                 </draggable>               </div>               // 右边栏                  <div style="float: right">                 <draggable                     animation="300"                     group="module"                     :list="form.right">                   <div class="left" :style="{height: rightModuleHeight}" v-for="(item,index) in form.right"                        v-model="form.right[index]">                     <span class="text-option">{{ item.name }}</span>                     <i class="el-icon-error"                        style="color: red;font-size: 20px;display: flex;margin-top: -55px;margin-left: 190px;cursor: pointer"                        @click="removeModule(item.name)"></i>                   </div>                 </draggable>               </div> 
// 数据  form: {         left: [           {id: "xiangmujindu", name: "项目进度"},           {id: "huanjingjiance", name: "环境检测"},           {id: "shipingjiankong", name: "视频监控"}         ],         right: [           {id: "jixiecheliang", name: "机械/车辆"},           {id: "anquanjiankong", name: "安全监控"},           {id: "xiangmudongtai", name: "项目动态"}         ]       }, 
// 动态计算div高度,确保拖拽是,div不会被撑开 computed: {     leftModuleHeight: function () {       return (480 / this.form.left.length) + 'px';     },     rightModuleHeight: function () {       return (480 / this.form.right.length) + 'px';     }   }, method: { // 移除按钮的操作  removeModule(name) {       if (this.form.left.some(v => v.name === name)) {         this.form.left.splice(this.form.left.findIndex(value => value.name === name),1);       }else this.form.right.splice(this.form.right.findIndex(value => value.name === name),1);     }, } 

热门文章

10月19日更新18.3M/S,2024年最新高速SSR/Shadowrocket/Clash/V2ray订阅链接免费节点订阅

这一次的节点更新覆盖了欧洲、新加坡、日本、加拿大、香港、韩国、美国等地区,最高速度可达18.3 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

11月7日更新19.1M/S,2024年最新高速V2ray/SSR/Clash/Shadowrocket订阅链接免费节点订阅

这一次的节点更新覆盖了美国、日本、新加坡、加拿大、欧洲、韩国、香港等地区,最高速度可达19.1 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

4月21日更新18.2M/S,2024年最新高速Shadowrocket/SSR/Clash/V2ray订阅链接免费节点

这一次的节点更新覆盖了香港、韩国、美国、欧洲、加拿大、新加坡、日本等地区,最高速度可达18.2 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

3月29日更新20.5M/S,2024年最新高速SSR/Clash/Shadowrocket/V2ray订阅链接免费节点

这一次的节点更新覆盖了新加坡、加拿大、日本、欧洲、美国、香港、韩国等地区,最高速度可达20.5 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

8月12日更新21.4M/S,2024年最新高速V2ray/Shadowrocket/Clash/SSR订阅链接免费节点订阅

这一次的节点更新覆盖了欧洲、日本、美国、加拿大、新加坡、香港、韩国等地区,最高速度可达21.4 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

7月24日更新20.2M/S,2024年最新高速SSR/V2ray/Clash/Shadowrocket订阅链接免费节点订阅

这一次的节点更新覆盖了美国、日本、新加坡、加拿大、欧洲、香港、韩国等地区,最高速度可达20.2 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

8月19日更新21.7M/S,2024年最新高速Clash/SSR/Shadowrocket/V2ray订阅链接免费节点订阅

这一次的节点更新覆盖了日本、欧洲、加拿大、美国、香港、新加坡、韩国等地区,最高速度可达21.7 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

9月26日更新22.8M/S,2024年最新高速SSR/Clash/V2ray/Shadowrocket订阅链接免费节点订阅

这一次的节点更新覆盖了韩国、日本、美国、加拿大、香港、欧洲、新加坡等地区,最高速度可达22.8 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

7月27日更新22.5M/S,2024年最新高速V2ray/Shadowrocket/Clash/SSR订阅链接免费节点订阅

这一次的节点更新覆盖了欧洲、美国、韩国、加拿大、新加坡、日本、香港等地区,最高速度可达22.5 M/S。只需复制下方的Clash/v2ray订阅链接,在客户端添加后即可正常使用。

Azure DevOps通过Azure Devops部署一个.NET Core WebAPI

前几篇文章中,我们讨论了如何通过流水线实现项目的编译、上传、打包、部署等操作,今天我们来实现一套完整的流程,把之前碎片化的知识点给串起来。 本次我们使用一个ASP.NET Core的WebApi项目来

归纳