label-print-design
Version:
操作简单,组件丰富的一站式打印解决方案打印设计器
1 lines • 23.8 kB
Source Map (JSON)
{"version":3,"file":"base-widget.vue2.mjs","sources":["../../../../../../src/components/content/widget/base-widget.vue"],"sourcesContent":["<script lang=\"ts\">\nconst padding = 30\n</script>\n<template>\n <div @mousedown=\"dragStart($event)\">\n <slot />\n </div>\n <Teleport v-if=\"isDrop\" to=\".design-content\">\n <design :element=\"tmpElement\" ref=\"designRef\" />\n </Teleport>\n <Teleport v-if=\"dragWrapper.visible\" to=\"body\">\n <drag-wrapper :data=\"dragWrapper\" />\n </Teleport>\n</template>\n<script setup lang=\"ts\">\nimport { nextTick, reactive, ref } from 'vue-demi';\n// @ts-ignore\nimport { Container, MyElement, PageUnit, Point, SvgData } from '@myprint/design/types/entity';\nimport { px2unit, unit2px, unit2unit } from '@myprint/design/utils/devicePixelRatio';\nimport Design from '@myprint/design/components/design/design.vue';\nimport {\n addElement, getCurrentPanel,\n handleElementType,\n initElement,\n innerElementIs,\n installParentElement\n} from '@myprint/design/utils/elementUtil';\nimport { clearEventBubble } from '@myprint/design/utils/event';\nimport { dragNewElement, dragNewElementCancel, updatePanel } from '@myprint/design/plugins/moveable/moveable';\nimport { useAppStoreHook as useAppStore } from '@myprint/design/stores/app';\nimport DragWrapper from '@myprint/design/components/content/widget/dragWrapper.vue';\nimport { mouseTips } from '@myprint/design/utils/mouseTips';\nimport { ActionEnum, record, Snapshot } from '@myprint/design/utils/historyUtil';\nimport { recursionForTableCell } from '@myprint/design/utils/table/dataTable';\n\nconst appStore = useAppStore();\n\nconst designRef = ref();\nconst isDrop = ref(false);\nconst tmpElement = ref({} as MyElement);\nconst dragWrapper = reactive({\n visible: false,\n transitionAnime: false,\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n opacity: 0\n} as Container & { visible: boolean, opacity: number, transitionAnime: boolean });\n\nconst props = withDefaults(defineProps<{\n data?: MyElement,\n pageUnit: PageUnit,\n}>(), {\n data: () => ({} as MyElement)\n});\n\nconst panel = getCurrentPanel()\n\n\nfunction dragStart(ev: MouseEvent) {\n mouseTips.visible();\n tmpElement.value = JSON.parse(JSON.stringify(props.data));\n const element = tmpElement.value;\n let parentElement: MyElement;\n \n let startX = 0, startY = 0;\n \n if (element.type == 'PageHeader' || element.type == 'PageFooter') {\n element.width = unit2unit(panel.pageUnit, props.pageUnit, panel.width);\n }\n mouseTips.move(ev.clientX, ev.clientY, '松开取消');\n \n if (props.pageUnit != panel.pageUnit) {\n element.width = unit2unit(props.pageUnit, panel.pageUnit, tmpElement.value.width);\n element.height = unit2unit(props.pageUnit, panel.pageUnit, tmpElement.value.height);\n \n if (element.type == 'DataTable') {\n // 转表格行\n \n recursionForTableCell(element.columnList, providerCell => {\n const columnCell = providerCell;\n if (columnCell.height == null) {\n columnCell.height = 7;\n }\n if (!columnCell.data) {\n columnCell.data = columnCell.label;\n }\n columnCell.height = unit2unit(props.pageUnit, panel.pageUnit, columnCell.height);\n columnCell.width = unit2unit(props.pageUnit, panel.pageUnit, columnCell.width);\n if (columnCell.columnBody) {\n if (columnCell.columnBody.height) {\n columnCell.columnBody.height = unit2unit(props.pageUnit, panel.pageUnit, columnCell.columnBody.height);\n }\n if (columnCell.columnBody.width) {\n columnCell.columnBody.width = unit2unit(props.pageUnit, panel.pageUnit, columnCell.columnBody.width);\n }\n }\n });\n }\n \n if (element.type.startsWith('Svg') && element.data) {\n const data = JSON.parse(element.data) as SvgData;\n const points = data.points as Point[];\n const controlPoints = data.controlPoints as Point[];\n const dataJson = {} as SvgData;\n if (points) {\n for (let point of points) {\n point.x = unit2unit(props.pageUnit, panel.pageUnit, point.x);\n point.y = unit2unit(props.pageUnit, panel.pageUnit, point.y);\n }\n dataJson.points = points;\n }\n \n if (controlPoints) {\n for (let point of controlPoints) {\n point.x = unit2unit(props.pageUnit, panel.pageUnit, point.x);\n point.y = unit2unit(props.pageUnit, panel.pageUnit, point.y);\n }\n dataJson.controlPoints = controlPoints;\n }\n element.data = JSON.stringify(dataJson);\n }\n } else {\n if (element.type == 'DataTable') {\n // 转表格行\n recursionForTableCell(element.columnList, providerCell => {\n const columnCell = providerCell;\n if (columnCell.height == null) {\n columnCell.height = 7;\n }\n if (!columnCell.data) {\n columnCell.data = columnCell.label;\n }\n });\n }\n }\n \n initElement(panel, element, 0);\n \n let halfWidth = unit2px(tmpElement.value.width) / 2;\n let halfHeight = unit2px(tmpElement.value.height) / 2;\n startX = ev.clientX - halfWidth;\n startY = ev.clientY - halfHeight;\n \n element.x = px2unit(startX - appStore.panelPosition.x + appStore.panelPosition.scrollX - padding);\n element.y = px2unit(startY - appStore.panelPosition.y + appStore.panelPosition.scrollY - padding);\n \n element.runtimeOption.x = unit2px(element.x);\n element.runtimeOption.y = unit2px(element.y);\n \n element.runtimeOption.init.x = element.runtimeOption.x;\n element.runtimeOption.init.y = element.runtimeOption.y;\n \n element.runtimeOption.parent = panel;\n \n dragWrapper.visible = true;\n dragWrapper.opacity = 1;\n \n dragWrapper.x = startX;\n dragWrapper.y = startY;\n \n dragWrapper.width = element.runtimeOption.width;\n dragWrapper.height = element.runtimeOption.height;\n \n isDrop.value = true;\n \n document.addEventListener('mousemove', mouseMove);\n document.addEventListener('mouseup', mouseup);\n clearEventBubble(ev);\n \n nextTick(() => {\n const myHtmlElement = designRef.value.$el;\n element.runtimeOption.target = myHtmlElement;\n myHtmlElement.element = element;\n dragNewElement(element.runtimeOption.target, ev);\n });\n \n function mouseMove(evMove: MouseEvent) {\n let diffXNum = evMove.clientX + (-appStore.panelPosition.x) + (-appStore.panelPosition.w);\n let diffYNum = evMove.clientY + (-appStore.panelPosition.y) + (-appStore.panelPosition.h);\n if (diffXNum < 0) {\n diffXNum = 0;\n }\n if (diffYNum < 0) {\n diffYNum = 0;\n }\n\n if (diffXNum <= halfWidth && diffYNum <= halfHeight) {\n if (evMove.clientY < appStore.panelPosition.y || evMove.clientX < appStore.panelPosition.x) {\n dragWrapper.opacity = 1\n } else {\n if (diffYNum == 0) {\n dragWrapper.opacity = (diffXNum / halfWidth);\n } else if (diffXNum == 0) {\n dragWrapper.opacity = (diffYNum / halfHeight);\n } else {\n dragWrapper.opacity = ((diffXNum / halfWidth) + (diffYNum / halfHeight)) / 2;\n }\n }\n }\n dragWrapper.x = element.runtimeOption.x + appStore.panelPosition.x + padding - appStore.panelPosition.scrollX;\n dragWrapper.y = element.runtimeOption.y + appStore.panelPosition.y + padding - appStore.panelPosition.scrollY;\n \n mouseTips.move(dragWrapper.x + halfWidth, dragWrapper.y + halfHeight);\n \n if (diffXNum == 0 && diffYNum == 0) {\n mouseTips.setData('松开放置');\n \n // 判断有没有进入容器/页眉/页脚\n \n const point = { x: element.runtimeOption.x + halfWidth, y: element.runtimeOption.y + halfHeight };\n \n if (!parentElement || !innerElementIs(point, element, parentElement)) {\n if (parentElement) {\n parentElement.runtimeOption.dragInIs = false;\n parentElement = undefined!;\n }\n if (panel.pageHeader && innerElementIs(point, element, panel.pageHeader)) {\n panel.pageHeader.runtimeOption.dragInIs = true;\n parentElement = panel.pageHeader;\n } else if (panel.pageFooter && innerElementIs(point, element, panel.pageFooter)) {\n panel.pageFooter.runtimeOption.dragInIs = true;\n parentElement = panel.pageFooter;\n } else {\n for (let elementOf of panel.elementList!) {\n if (elementOf.type == 'Container' && innerElementIs(point, element, elementOf)) {\n elementOf.runtimeOption.dragInIs = true;\n parentElement = elementOf;\n break;\n }\n }\n }\n panel.runtimeOption.dragInIs = !parentElement;\n }\n } else {\n mouseTips.setData('松开取消');\n \n panel.runtimeOption.dragInIs = false;\n }\n }\n \n function mouseup(mouseupEvent: MouseEvent) {\n mouseTips.hidden();\n mouseupEvent['tmpElement'] = true;\n if (dragWrapper.opacity > 0) {\n // 放回原处\n dragWrapper.opacity = 1;\n if (dragWrapper.x == startX && dragWrapper.y == startY) {\n dragWrapper.visible = false;\n } else {\n dragWrapper.transitionAnime = true;\n dragWrapper.x = startX;\n dragWrapper.y = startY;\n }\n dragNewElementCancel(element.runtimeOption.target);\n isDrop.value = false;\n } else {\n dragWrapper.visible = false;\n panel.runtimeOption.dragInIs = false;\n \n if (parentElement) {\n element.x = element.x - parentElement.x;\n element.y = element.y - parentElement.y;\n addElement(panel, parentElement, element);\n parentElement.runtimeOption.dragInIs = false;\n parentElement = undefined!;\n } else {\n handleElementType(element)\n .handle('PageHeader', () => {\n if (panel.pageHeader != undefined) {\n return;\n }\n panel.pageHeader = element;\n element.width = panel.width;\n element.runtimeOption.width = unit2px(panel.width);\n element.runtimeOption.x = 0;\n element.runtimeOption.y = 0;\n element.x = 0;\n element.y = 0;\n // element.y = panel.height - element.height\n // element.runtimeOption.y = unit2px(panel.height - element.height)\n installParentElement(panel, element);\n }\n )\n .handle('PageFooter', () => {\n if (panel.pageFooter != undefined) {\n return;\n }\n panel.pageFooter = element;\n element.width = panel.width;\n element.runtimeOption.width = unit2px(panel.width);\n element.runtimeOption.x = 0;\n element.x = 0;\n element.y = panel.height - element.height;\n element.runtimeOption.y = unit2px(panel.height - element.height);\n installParentElement(panel, element);\n }\n ).end(() => {\n addElement(panel, panel, element);\n });\n }\n \n // 记录历史\n record(<Snapshot>{\n type: 'Element',\n action: ActionEnum.ADD,\n elementList: [element]\n });\n \n nextTick(() => {\n updatePanel([element]);\n setTimeout(() => {\n isDrop.value = false;\n }, 1);\n });\n }\n \n document.removeEventListener('mousemove', mouseMove);\n document.removeEventListener('mouseup', mouseup);\n }\n \n}\n\n</script>\n"],"names":["useAppStore"],"mappings":"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"}