当前位置: 首页 > news >正文

基于Jeecgboot3.6.3的vue3版本的流程中仿钉钉流程的鼠标拖动功能支持

因为这个项目license问题无法开源,更多技术支持与服务请加入我的知识星球。

 1、因为原先仿钉钉流程里不能进行鼠标拖动来查看流程,所以根据作者提供的信息进行修改,在hooks下增加下面文件useDraggableScroll.ts

import { ref, onMounted, onBeforeUnmount, type Ref } from 'vue'export function useDraggableScroll(containerRef: Ref<HTMLElement | null>) {const isDragging = ref(false);let startX: number, startY: number;let scrollLeft: number, scrollTop: number;const onMouseDown = (e: MouseEvent) => {if (!containerRef.value) return;isDragging.value = true;startX = e.pageX;startY = e.pageY;scrollLeft = containerRef.value.scrollLeft;scrollTop = containerRef.value.scrollTop;document.addEventListener('mousemove', onMouseMove);document.addEventListener('mouseup', onMouseUp);};const onMouseMove = (e: MouseEvent) => {if (!isDragging.value || !containerRef.value) return;const deltaX = e.pageX - startX;const deltaY = e.pageY - startY;containerRef.value.scrollLeft = scrollLeft - deltaX;containerRef.value.scrollTop = scrollTop - deltaY;};const onMouseUp = () => {isDragging.value = false;document.removeEventListener('mousemove', onMouseMove);document.removeEventListener('mouseup', onMouseUp);};onMounted(() => {containerRef.value?.addEventListener('mousedown', onMouseDown);});onBeforeUnmount(() => {containerRef.value?.removeEventListener('mousedown', onMouseDown);});return {isDragging,};
}

2、在lowflow\flowDesign\index修改增加相应的操作

import { useDraggableScroll } from '@/views/lowflow/hooks/useDraggableScroll'

const designerContainerRef = ref<HTMLElement | null>(null)
useDraggableScroll(designerContainerRef);

<div class="designer-container cursor-default active:cursor-grabbing" ref="designerContainerRef">

designer-container {
  --flow-bg-color: v-bind(bgColor);
  position: relative;
  display: flex;
  flex-direction: row;
  height: 100%;
  width: 100%;
  overflow: auto;
  background-color: var(--flow-bg-color);
  padding: 80px 0;

3、ModelDesigner.vue的样式做下面的跳转,以便满足拖动等界面要求

.el-dialog.is-fullscreen.ddDialog {overflow: hidden;}.ddDialog .el-dialog__body {height: 95%;overflow: auto;}

4、效果图

相关文章:

基于Jeecgboot3.6.3的vue3版本的流程中仿钉钉流程的鼠标拖动功能支持

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、因为原先仿钉钉流程里不能进行鼠标拖动来查看流程&#xff0c;所以根据作者提供的信息进行修改&#xff0c;在hooks下增加下面文件useDraggableScroll.ts import { ref, onMounted, on…...

Docker Compse单机编排

一.Docker Compse 介绍 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose&#xff0c;你可以使用 YAML 文件来配置应用程序的服务、网络和卷&#xff0c;然后使用单个命令创建和启动所有服务。这使得在开发、测试和部署过程中管理多容器应用程…...

“AI+Security”系列第2期(一):对抗!大模型自身安全的攻防博弈

近日&#xff0c;由安全极客、Wisemodel 社区和 InForSec 网络安全研究国际学术论坛联合主办的“AISecurity”系列第 2 期——对抗&#xff01;大模型自身安全的攻防博弈线上活动如期举行。本次活动邀请了君同未来创始人兼 CEO 韩蒙、前阿里云高级安全专家郑瀚、ChaMd5 AI 组负…...

Python Static Typing: 提升代码可靠性与可读性的使用技巧

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…...

Datawhale多模态赛事(1)

赛事说明&#xff1a;https://tianchi.aliyun.com/competition/entrance/532251/introduction?spma2c22.12281925.0.0.2f307137p8qZmp 学习平台&#xff1a;https://linklearner.com/home 第一天 1.报名赛道学习赛事 https://tianchi.aliyun.com/competition/entrance/53225…...

云手机在海外社交媒体运营中的作用

随着社交媒体的全球普及&#xff0c;海外社交媒体运营成为众多企业与个人提升品牌影响力和扩大市场份额的重要策略。在这一进程中&#xff0c;海外云手机以其独特的功能&#xff0c;为海外社交媒体运营提供了强大的支持。 那么&#xff0c;海外云手机在海外社交媒体运营中究竟扮…...

Ubuntu怎么进入救援模式或单用户模式

进入救援模式&#xff08;Rescue Mode&#xff09;或单用户模式&#xff08;Single User Mode&#xff09;的方法取决于你所使用的Linux发行版。以下是通用的步骤&#xff0c;适用于大多数基于GRUB引导的系统&#xff0c;如Ubuntu、Debian、CentOS等&#xff1a; 重启你的系统。…...

学习鸿蒙-构建私有仓储

1.选择 鸿蒙提供ohpm-repo工具用于构建本地私有仓储 ohpm-repo下载 2.环境配置 安装node&#xff0c;ohpm-repo 支持 node.js 18.x 及以上版本 node最新版本下载 3.配置文件及运行 1.解压 ohpm-repo 私仓工具包 2.进入 ohpm-repo 解压目录的 conf 目录内&#xff0c;打开 c…...

经验是负债,学习是资产

经验是负债&#xff0c;学习是资产 经验是负债&#xff0c;学习是资产。这是李嘉诚先生的一句名言。他一语道出了学习在企业发展中的推动作用。 企业家经营的目的&#xff0c;无非就是将利润最大化。企业能够产生利润&#xff0c;靠的是提升自身业绩、降低运营成本&#xff0c;…...

电脑屏幕录制工具分享5款,附上详细电脑录屏教程(2024全新)

日月更迭&#xff0c;转眼间已经来到了2024年的立秋&#xff0c;在这个数字技术快速发展的时代&#xff0c;电脑录屏技术已经成为了一项不可或缺的技能&#xff0c;无论是用于工作汇报、在线教学、游戏直播还是个人娱乐。那么录屏软件哪个好用呢&#xff1f;接下来&#xff0c;…...

Docker资源隔离的实现策略以及适用场景

Docker通过多种技术实现资源隔离&#xff0c;确保不同容器之间相互独立并有效利用主机资源。 以下是Docker资源隔离的主要实现策略以及适用场景&#xff1a; 实现策略 1、命名空间&#xff08;Namespaces&#xff09; 进程命名空间&#xff08;PID Namespace&#xff09;: 隔…...

PLL基本原理、设计及应用

PLL基本原理 锁相环&#xff08;Phase-Locked Loop, PLL&#xff09;是一种基本的反馈控制系统&#xff0c;广泛应用于电子通信、信号处理、时钟同步等多个领域。PLL通过反馈机制锁定输入信号的频率和相位&#xff0c;从而实现输出信号与输入信号的同步。其基本工作原理可以概…...

Qt实现类似淘宝商品看板的界面,带有循环翻页以及点击某页跳转的功能

效果如下&#xff1a; #ifndef ModelDashboardGroup_h__ #define ModelDashboardGroup_h__#include <QGridLayout> #include <QLabel> #include <QPushButton> #include <QWidget>#include <QLabel> #include <QWidget> #include <QMou…...

2024下半年国际学术会议一览表

在科技与人文的交汇点&#xff0c;2024年的国际学术会议季即将拉开帷幕&#xff0c;一系列聚焦于计算机科学与人工智能、工程与技术、教育与社会科学的盛会&#xff0c;不仅展示了全球学术研究的最新成果&#xff0c;更促进了跨学科交流与合作&#xff0c;为未来的科技发展与社…...

serial靶场

项目地址 https://download.vulnhub.com/serial/serial.zip 实验过程 将下载好的靶机导入到VMware中&#xff0c;设置网络模式为NAT模式&#xff0c;然后开启靶机虚拟机 使用C段扫描&#xff0c;获取靶机IP地址 arp-scan -l 扫描一下端口 nmap -sV -p- 192.168.48.149 查看…...

如何在Vue3项目中引入并使用Echarts图表

在Vue 3项目中引入并使用ECharts图表&#xff0c;你可以通过npm或yarn来安装ECharts&#xff0c;然后在Vue组件中引入并使用它。以下是一个基本的步骤指南&#xff1a; 1. 安装ECharts 首先&#xff0c;你需要在你的Vue 3项目中安装ECharts。打开你的终端或命令提示符&#x…...

C# 子类、接口

栏目总目录 子类 继承的概念 继承机制&#xff1a;C#支持单继承&#xff0c;即一个类只能直接继承自一个基类。但基类本身可以继承自另一个类&#xff0c;从而实现继承链。继承关键字&#xff1a;使用冒号&#xff08;:&#xff09;表示继承关系&#xff0c;子类在声明时指定…...

Qt实现圆形窗口

重新实现paintEvent()函数。 效果如下&#xff1a; 效果为蓝色区域&#xff0c;背景是vs接面&#xff0c;代码直接复制可用&#xff0c;留给有需要的人。 #ifndef CircleWidget_h__ #define CircleWidget_h__#include <QWidget>class CCircleWidget : public QWidget {Q…...

LeetCode 算法:有效的括号 c++

原题链接&#x1f517;&#xff1a;有效的括号 难度&#xff1a;简单⭐️ 题目 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘]’ 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; …...

react和vue的diff算法的差别

React 的 Diff 算法 React 的 diff 算法主要基于以下几个原则&#xff1a; 同层比较&#xff1a; React 只会比较同一层级的节点&#xff0c;不会跨层级比较。假设跨层级的变化较少&#xff0c;从而简化了算法&#xff0c;提高了性能。 深度优先遍历&#xff1a; React 采用深…...

从课程设计到毕业设计:手把手教你用STC89C52和DS1302做一个带温度显示的电子钟(附完整代码)

从课程设计到毕业设计&#xff1a;STC89C52与DS1302打造高精度温度显示电子钟实战指南 1. 项目规划与硬件选型 在开始动手之前&#xff0c;我们需要对整个项目进行系统性的规划。一个完整的电子钟系统需要考虑时间显示、温度监测、用户交互和电源管理等多个功能模块。对于高校电…...

ContentProvider call方法在跨进程通信中的高效实践

1. ContentProvider call方法入门&#xff1a;跨进程通信的新选择 第一次接触ContentProvider的call方法时&#xff0c;我还在用广播和AIDL处理跨进程通信。那会儿每次看到项目里复杂的AIDL接口定义和广播接收代码就头疼&#xff0c;直到发现这个被很多人忽略的"宝藏方法&…...

Tauri Android 打包原理与实战指南

Tauri Android 打包原理与实战指南 基于 JoyaLand 项目的实际打包经验整理,记录原理、流程与踩坑解决方案。 一、Tauri Android 打包架构原理 1.1 整体架构 ┌─────────────────────────────────────────────┐ │ …...

Linux开发实战:Shell脚本与构建系统进阶指南

1. Linux开发者工具箱&#xff1a;从基础到进阶的实用指南作为一名在Linux环境下摸爬滚打多年的开发者&#xff0c;我深知高效工具链对生产力提升的重要性。这个系列文章最初只是我个人工作笔记的整理&#xff0c;后来逐渐发展成覆盖Linux开发全流程的实用指南。不同于教科书式…...

低成本数据标注:OpenClaw+Phi-3-vision-128k-instruct半自动化标记工具

低成本数据标注&#xff1a;OpenClawPhi-3-vision-128k-instruct半自动化标记工具 1. 为什么我们需要半自动化数据标注 在计算机视觉项目中&#xff0c;数据标注往往是耗时最长、成本最高的环节。我曾经参与过一个商品识别项目&#xff0c;团队3个人花了整整两周时间才完成50…...

嵌入式系统中单例模式的应用与实现

1. 单例模式在嵌入式系统中的核心价值在资源受限的嵌入式环境中&#xff0c;全局状态管理一直是个棘手的问题。想象一下这样的场景&#xff1a;温度传感器模块认为系统运行正常&#xff0c;而控制模块却检测到了硬件故障&#xff0c;两个模块对系统状态的认知出现分歧&#xff…...

STM32智能垃圾桶开发实战:语音识别与自动分类

1. 项目概述这个智能垃圾桶项目是我去年为一个社区环保活动设计的硬件方案。当时社区正在推广垃圾分类&#xff0c;但居民反映传统分类垃圾桶使用不便&#xff0c;经常出现错投混投的情况。于是我就琢磨着用STM32做个能听懂人话、自动开盖的智能垃圾桶&#xff0c;让垃圾分类变…...

微软老员工称部分“被更新损坏“的电脑实际早已注定失败

据微软资深工程师雷蒙德陈表示&#xff0c;微软的系统更新并非总是客户设备损坏的罪魁祸首。有时这些设备早已存在问题&#xff0c;只是客户在补丁星期二重启尝试导致系统无法启动之前没有注意到。更新背后的真相陈在文章中写道&#xff1a;"我在企业产品支持部门的同事们…...

批量图片添加文字水印工具:Windows 上手指南(预览与平铺)

面向需要在 Windows 上 批量 给 图片 叠 文字水印 的同事&#xff0c;工具名【批量图片添加文字水印工具】。下文只写能力与操作顺序&#xff0c;不写实现细节。输入与目录支持选择多个文件或整个文件夹&#xff0c;路径可拖拽填入&#xff1b;多文件路径用分号分隔。勾选「遍历…...

高效部署Kafka Connect集群:AKHQ的5个进阶实战策略

高效部署Kafka Connect集群&#xff1a;AKHQ的5个进阶实战策略 【免费下载链接】akhq Kafka GUI for Apache Kafka to manage topics, topics data, consumers group, schema registry, connect and more... 项目地址: https://gitcode.com/gh_mirrors/ak/akhq Apache K…...