vue使用拖拽功能实现仓库存放货物的需求

效果:
在这里插入图片描述
代码

<template><div><div class="bigTitle">xxxxxxxxxxxxxx仓库拖拽系统</div><div class="container2 flex-j-space-between"><div class="product-list"><div class="leftTree head"><div class="left">物品清单</div></div><div class="product-container"><el-collapse v-model="activeNames" @change="handleChange"><el-collapse-itemclass="list"v-for="(item,index) in products":title="(index + 1) + '、' + item.name":name="index":key="index"><div :draggable="true" @dragstart="onDragStart(item)"><span>长度:</span><span>{{ item.x }}</span><span></span><span>宽度:</span><span>{{ item.y }}</span><span></span><span>高度:</span><span>{{ item.h }}</span><span></span></div></el-collapse-item></el-collapse></div></div><div class="delivery-cabinet"><div class="leftTree head"><div class="left">仓库</div></div><div style="padding-left:48px;"><span class="display-inline t-center" style="width:27.6%;"></span><span class="display-inline t-center" style="margin-left:2%;width:18.4%;"></span><span class="display-inline t-center" style="margin-left:2%;width:27.6%;"></span><span class="display-inline t-center" style="margin-left:2%;width:18.4%;"></span></div><div class="flex-j-space-between height100"><div class="regionSet"><div>D</div><div>C</div><div>B</div><div>A</div></div><div class="bigBox"><divv-for="(item,index) in cabinets":key="index":style="{width:item.x,height:item.y,marginRight:item.mr}"@drop="onDrop(item.id)"@dragover.prevent:draggable="false"class="smallBox"><divv-for="product in item.products":key="product.id"class="product":draggable="false">{{ JSON.parse(product).name }}</div></div></div></div></div></div></div>
</template><script>
// import draggable from "vuedraggable";export default {components: {// draggable},data() {return {products: [{ id: 1, name: "苹果", x: 30, y: 34, h: 25 },{ id: 2, name: "香蕉", x: 12, y: 10, h: 21 },{ id: 3, name: "西瓜", x: 30, y: 50, h: 23 },{ id: 4, name: "荔枝", x: 57, y: 12, h: 24 },{ id: 5, name: "哈密瓜", x: 45, y: 53, h: 32 },{ id: 6, name: "菠萝", x: 11, y: 5, h: 54 },{ id: 7, name: "葡萄", x: 4, y: 34, h: 6 }],cabinets: [{id: 1,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,location: [{ name: "手表", width: 28, height: 50, x: 0, y: 0, bgClor: "red" },{name: "背包",width: 28,height: 16,x: 40,y: 40,bgClor: "#ff33ff"},{name: "缆索",width: 10,height: 80,x: 29,y: 0,bgClor: "yellow"},{name: "头盔",width: 28,height: 40,x: 40,y: 0,bgClor: "green"},{ name: "面包", width: 33, height: 70, x: 68, y: 0, bgClor: "blue" }],products: []},{id: 2,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 3,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 4,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 5,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 6,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 7,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 8,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 9,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 10,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 11,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 12,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 13,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 14,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 15,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 16,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 17,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 18,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 19,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 20,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 21,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 22,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 23,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 24,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 25,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 26,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 27,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 28,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 29,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 30,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 31,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 32,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 33,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 34,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 35,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 36,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 37,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 38,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: "2%",name: 1,products: []},{id: 39,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []},{id: 40,x: "9.2%",y: "24%",mt: 0,mb: 0,mr: 0,name: 1,products: []}// 其他柜子...],activeNames: ["1"]};},methods: {onDragStart(product) {console.log("1111111", product);event.dataTransfer.setData("text/plain", JSON.stringify(product));},onDrop(cabinetId) {const productData = event.dataTransfer.getData("text/plain");console.log("22222222222", productData);const cabinet = this.cabinets.find(cabinet => cabinet.id === cabinetId);cabinet.products.push(productData);console.log("111", cabinet);},handleChange(val) {console.log(val);}}
};
</script><style scoped>
.bigTitle {height: 40px;line-height: 40px;font-size: 24px;text-align: center;padding-top: 5px;
}
.container2 {width: 100%;height: calc(100vh - 40px);padding: 10px;overflow: hidden;
}
.head {border: 0px solid black;width: 100%;height: 40px;display: flex;justify-content: space-between;align-items: center;padding: 0 0 0 15px;border-bottom: #eff4fa 1px solid;.left {font-weight: bold;font-size: 16px;border-left: 4px blue solid;display: flex;align-items: center;height: 18px;padding-left: 10px;}
}
.product-list {width: 400px;border: 1px solid #f0f0f0;height: 100%;
}
.delivery-cabinet {height: 100%;flex: 1;
}.product-list h2,
.delivery-cabinet h2 {font-size: 24px;margin-bottom: 10px;
}.product-container {/* padding: 10px;border-radius: 4px; */
}.product {padding: 10px;margin-bottom: 8px;background-color: #fff;border: 1px solid #ccc;border-radius: 4px;cursor: move;
}.cabinet-container {background-color: #f2f2f2;padding: 10px;border-radius: 4px;
}.cabinet-slot {padding: 10px;margin-bottom: 8px;background-color: #fff;border: 1px solid #ccc;border-radius: 4px;
}.slot-number {font-size: 18px;font-weight: bold;margin-bottom: 5px;
}.slot-content {display: flex;flex-wrap: wrap;gap: 8px;
}.slot-content .product {padding: 6px 8px;background-color: #eee;
}
.regionSet {width: 45px;height: 100%;margin-top: 10px;
}
.regionSet div {height: 23%;display: flex;align-items: center;justify-content: center;
}
.bigBox {display: flex;flex-direction: row;flex-wrap: wrap;justify-content: flex-start;height: calc(100% - 40px);width: calc(100% - 50px);padding: 10px 10px;padding-left: 0px;
}
.smallBox {border: 1px solid green;
}
</style>

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

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

相关文章

利用线程池多线程并发实现TCP两端通信交互,并将服务端设为守护进程

文章目录 实现目标实现步骤封装日志类封装线程池封装线程封装锁封装线程池 TCP通信的接口和注意事项accept TCP封装任务客户端Client.hppClient.cc 服务端Server.hpp Server.cc实现效果 守护进程服务端守护进程化 实现目标 利用线程池多线程并发实现基于TCP通信的多个客户端与…

Java Collection接口详解

Collection 接口 Collection接口是Java集合框架的根接口。 Collection 接口是 List、Set 和 Queue 接口的父接口&#xff0c;通常情况下不被直接使用。 Collection 接口定义了一些通用的方法&#xff0c;通过这些方法可以实现对集合的基本操作。定义的方法既可用于操作 Set …

docker创建镜像并上传云端服务器

docker创建镜像并上传云端服务器 docker容器与镜像的关系1.基本镜像相关文件创建1.1 创建dockerfile文件1.2.创建do.sh文件1.3 创建upload_server_api.py文件1.4 创建upload_server_webui.py文件1.5 文件保存位置 2. 创建镜像操作2.1 创建镜像2.3 创建容器2.2 进入环境容器2.3 …

【2023年电赛国一必备】A题报告模板--可直接使用

任务 图1 任务内容 要求 图2 基本要求内容 图3 发挥部分内容 说明 图4 说明内容 评分标准 图5 评分内容 正文 &#xff08;部分&#xff09; 摘要 本实验旨在设计和制作一个由两个单相逆变器组成的并联系统&#xff0c;用于为电阻负载供电或并入220V电网。采用基于STM…

【react】react生命周期钩子函数:

文章目录 一、生命周期概念:二、生命周期:三、挂载阶段&#xff08;constructor > render > componentDidMount&#xff09;&#xff1a;四、更新阶段&#xff08;render > componentDidUpdate&#xff09;&#xff1a;五、卸载阶段&#xff08;componentWillUnmount …

il汇编整数相加

在这里尝试了IL汇编字符串连接&#xff1b; IL汇编字符串连接_bcbobo21cn的博客-CSDN博客 下面来看一下IL汇编整数相加&#xff1b; 大概的看一下一些资料&#xff0c;下面语句&#xff0c; ldc.i4 20 ldc.i4 30 add 看上去像是&#xff0c;装载整数20到一个类似于…

VK1056B 液晶LCD显示驱动IC/14x4com工作电压2.4-5.2V稳定测试

LCD液晶显示驱动芯片VK1056B 14x4位的显示RAM适用于各种LED应用产品 产品型号&#xff1a;VK1056B (兼容替代TM系列驱动) 产品品牌&#xff1a;VINKA永嘉微电 封装形式&#xff1a;SOP24 SSOP24 产品年份&#xff1a;新年份 提供专业工程服务&#xff0c…

Django Rest_Framework(三)

文章目录 1. 认证Authentication2. 权限Permissions使用提供的权限举例自定义权限 3. 限流Throttling基本使用可选限流类 4. 过滤Filtering5. 排序Ordering6. 分页Pagination可选分页器 7. 异常处理 ExceptionsREST framework定义的异常 8. 自动生成接口文档coreapi安装依赖设置…

Apache Kafka Learning

目录 一、Kafka 1、Message Queue是什么&#xff1f; 2、Kafka 基础架构 3、Kafka安装 二、Maven项目测试 1、Topic API 2、生产者&消费者 一、Kafka Kafka是由Apache软件基金会开发的一个开源流处理平台&#xff0c;由Scala和Java编写。Kafka是一种高吞吐量的分布式…

LCD驱动芯片VK1024B兼容HT系列驱动芯片,体积更小

产品型号&#xff1a;VK1024B 产品&#xff1a;VINKA/永嘉微电 封装形式&#xff1a;SOP16 产品年份&#xff1a;新年份 工程服务&#xff0c;技术支持&#xff0c;用芯服务 VK1024概述&#xff1a; VK1024B 是 24 点、 内存映象和多功能的 LCD 驱动&#xff0c; VK1024B …

【css】css隐藏元素

display:none&#xff1a;可以隐藏元素。该元素将被隐藏&#xff0c;并且页面将显示为好像该元素不在其中。visibility:hidden&#xff1a; 可以隐藏元素。但是&#xff0c;该元素仍将占用与之前相同的空间。元素将被隐藏&#xff0c;但仍会影响布局。 代码&#xff1a; <!…

C++ - 模板分离编译

模板分离编译 我们先来看一个问题&#xff0c;我们用 stack 容器的声明定义分离的例子来引出这个问题&#xff1a; // stack.h // stack.h #pragma once #include<deque>namespace My_stack {template<class T, class Container std::deque<T>>class stack…

完整模型的训练套路

从心所欲 不逾矩 天大地大 皆可去 一、官方模型的初使用 使用VGG16模型 VGG模型使用代码示例&#xff1a; import torchvision.models from torch import nndataset torchvision.datasets.CIFAR10(/cifar10, False, transformtorchvision.transforms.ToTensor())vgg16_true …

Electron 开发,报handshake failed; returned -1, SSL error code 1,错误

代码说明 在preload.js代码中&#xff0c;暴露参数给渲染线程renderer.js访问&#xff0c; renderer.js 报&#xff1a;ERROR:ssl_client_socket_impl.cc(978)] failed; returned -1, SSL error code 1,错误 问题原因 如题所说&#xff0c;跨进程传递消息&#xff0c;这意味…

[Docker实现测试部署CI/CD----自由风格的CI操作[最终架构](5)]

目录 11、自由风格的CI操作&#xff08;最终&#xff09;Jenkins容器化实现方案修改 docker.sock 权限修改 Jenkins 启动命令后重启 Jenkins构建镜像推送到Harbor修改 daemon.json 文件Jenkins 删除构建后操作Jenkins 添加 shell 命令重新构建 Jenkins通知目标服务器拉取镜像目…

redis的安装和配置

一、nosql 二、redis的安装和配置 redis的安装&#xff1a; redis常见配置&#xff1a; 配置文件redis.conf

【数据结构】这堆是什么

目录 1.二叉树的顺序结构 2.堆的概念及结构 3.堆的实现 3.1 向上调整算法与向下调整算法 3.2 堆的创建 3.3 建堆的空间复杂度 3.4 堆的插入 3.5 堆的删除 3.6 堆的代码的实现 4.堆的应用 4.1 堆排序 4.2 TOP-K问题 首先&#xff0c;堆是一种数据结构&#xff0c;一种特…

在SAP中使用苹果手机进行条码扫描

适用于iOS的Liquid UI支持使用内置摄像头或第三方设备&#xff08;如Linea Pro&#xff09;进行条形码扫描。它使您能够通过单击在任何 SAP 输入字段中填充数据。它支持&#xff1a;一维和二维条码扫描。此外&#xff0c;编辑扫描的数据或在扫描后对操作进行编程&#xff0c;以…

2023牛客暑期多校训练营6-C-idol!!

奇数的双阶乘等于小于等于本身的奇数的乘积&#xff0c;偶数的双阶乘等于小于等于本身的非零偶数的乘积。 思路&#xff1a;考虑末位0的个数&#xff0c;我们能想到的最小两数相乘有零的就是2*5&#xff0c;所以本题我们思路就是去找因子2的个数以及因子5的个数&#xff0c;2的…

kubernetes基于helm部署gitlab

kubernetes基于helm部署gitlab 这篇博文介绍如何在 Kubernetes 中使用helm部署 GitLab。 先决条件 已运行的 Kubernetes 集群负载均衡器&#xff0c;为ingress-nginx控制器提供EXTERNAL-IP&#xff0c;本示例使用metallb默认存储类&#xff0c;为gitlab pods提供持久化存储&…