因为这个项目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、效果图