diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index 97c0807..a5e46d3 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -133,32 +133,26 @@ export const usePermissionStore = defineStore({ const normalizeMenu = (data) => { let path = ''; - if (data.item.url.indexOf('@') > 0) { - path = data.item.url.replace('@', '/'); + if (data.url.indexOf('@') > 0) { + path = data.url.replace('@', '/'); } else { path = - data.item.url || - '/formCallPage?id=' + - data.item.id + - '&name=' + - data.item.name + - '&code=' + - data.item.code; + data.url || '/formCallPage?id=' + data.id + '&name=' + data.name + '&code=' + data.code; } const newPath = { - orderNo: data.item.sortNo, - icon: data.item.iconName, - title: data.item.name, + orderNo: data.sortNo, + icon: data.iconName, + title: data.name, meta: { - orderNo: data.item.sortNo, - icon: data.item.iconName, - title: data.item.name, - elements: (data.item && data.item.elements) || '', + orderNo: data.sortNo, + icon: data.iconName, + title: data.name, + elements: (data && data.elements) || '', }, - name: data.item.name, - hideMenu: data.item.status == 1 ? false : true, + name: data.name, + hideMenu: data.status == 1 ? false : true, path: path, - id: data.item.id || '', + id: data.id || '', children: [], }; if (data.children && data.children.length > 0) { @@ -172,56 +166,56 @@ export const usePermissionStore = defineStore({ const modules = import.meta.glob('../../views/**/**/**/index.vue'); childData.forEach((element) => { // 菜单里配置带参数,但没有单独的主路由,先注册主路由 - if (element.item.status == 1 && element.item.url.indexOf('@') > 0) { - if (router.hasRoute(element.item.code)) { - const path = element.item.url.substring(0, element.item.url.indexOf('@')); - router.addRoute(element.item.code, { + if (element.status == 1 && element.url.indexOf('@') > 0) { + if (router.hasRoute(element.code)) { + const path = element.url.substring(0, element.url.indexOf('@')); + router.addRoute(element.code, { path: path + '/:id', - name: element.item.url.replaceAll('/', ''), + name: element.url.replaceAll('/', ''), meta: { - title: element.item.name, - icon: element.item.iconName, - elements: element.item.elements, + title: element.name, + icon: element.iconName, + elements: element.elements, }, component: modules['../../views/demo' + path + '/index.vue'], }); } else { - const path = element.item.url.substring(0, element.item.url.indexOf('@')); + const path = element.url.substring(0, element.url.indexOf('@')); router.addRoute('Root', { path: path, - name: element.item.code, + name: element.code, meta: { - title: element.item.name, - icon: element.item.iconName, + title: element.name, + icon: element.iconName, hideChildrenInMenu: true, - elements: element.item.elements, + elements: element.elements, }, component: LAYOUT, children: [ { path: path + '/:id', - name: element.item.url.replaceAll('/', ''), + name: element.url.replaceAll('/', ''), meta: { - title: element.item.name, - icon: element.item.iconName, - elements: element.item.elements, + title: element.name, + icon: element.iconName, + elements: element.elements, }, component: modules['../../views/demo' + path + '/index.vue'], }, ], }); } - } else if (element.item.code && element.item.status == 1) { - router.addRoute(element.item.code, { - path: element.item.url, - name: element.item.url.replaceAll('/', ''), + } else if (element.code && element.status == 1) { + router.addRoute(element.code, { + path: element.url, + name: element.url.replaceAll('/', ''), meta: { - title: element.item.name, - icon: element.item.iconName, - elements: element.item.elements, + title: element.name, + icon: element.iconName, + elements: element.elements, }, - // component: () => import('../../views/demo' + element.item.url + '/index.vue') - component: modules['../../views/demo' + element.item.url + '/index.vue'], + // component: () => import('../../views/demo' + element.url + '/index.vue') + component: modules['../../views/demo' + element.url + '/index.vue'], }); } if (element.children && element.children.length > 0) { @@ -232,43 +226,43 @@ export const usePermissionStore = defineStore({ // 注册路由 const registeredRoute = (data) => { const modules = import.meta.glob('../../views/**/**/**/index.vue'); - if (data.item.url.split('/')[1] == 'map') { + if (data.url.split('/')[1] == 'map') { // 大屏的情况下不继承layout router.addRoute('Root', { - path: data.item.url, - name: data.item.code, + path: data.url, + name: data.code, meta: { - title: data.item.name, - icon: data.item.iconName, - elements: data.item.elements, + title: data.name, + icon: data.iconName, + elements: data.elements, }, - component: modules['../../views' + data.item.url + '/index.vue'], + component: modules['../../views' + data.url + '/index.vue'], }); } else { // 正常菜单 - if (data.children.length == 0 && data.item.status == 1) { + if (data.children.length == 0 && data.status == 1) { // 没有子菜单 - if (data.item.url.indexOf('@') > 0) { + if (data.url.indexOf('@') > 0) { //给带参数的路由先注册主路由 - const path = data.item.url.substring(0, data.item.url.indexOf('@')); + const path = data.url.substring(0, data.url.indexOf('@')); router.addRoute('Root', { path: path, - name: data.item.code, + name: data.code, meta: { - title: data.item.name, - icon: data.item.iconName, + title: data.name, + icon: data.iconName, hideChildrenInMenu: true, - elements: data.item.elements, + elements: data.elements, }, component: LAYOUT, children: [ { path: path + '/:id', - name: data.item.url.replaceAll('/', ''), + name: data.url.replaceAll('/', ''), meta: { - title: data.item.name, - icon: data.item.iconName, - elements: data.item.elements, + title: data.name, + icon: data.iconName, + elements: data.elements, }, component: modules['../../views/demo' + path + '/index.vue'], }, @@ -276,46 +270,44 @@ export const usePermissionStore = defineStore({ }); } else { router.addRoute('Root', { - path: data.item.url, - name: data.item.code, + path: data.url, + name: data.code, meta: { - title: data.item.name, - icon: data.item.iconName, + title: data.name, + icon: data.iconName, hideChildrenInMenu: true, - elements: data.item.elements, + elements: data.elements, }, component: LAYOUT, children: [ { - path: data.item.url, - name: data.item.url.replaceAll('/', ''), + path: data.url, + name: data.url.replaceAll('/', ''), meta: { - title: data.item.name, - icon: data.item.iconName, - elements: data.item.elements, + title: data.name, + icon: data.iconName, + elements: data.elements, }, - component: modules['../../views/demo' + data.item.url + '/index.vue'], + component: modules['../../views/demo' + data.url + '/index.vue'], }, ], }); } } else { // 有子菜单 - if (data.item.status == 0) { + if (data.status == 0) { return; } router.addRoute('Root', { - path: data.item.url, - name: data.item.code, + path: data.url, + name: data.code, meta: { - title: data.item.name, - icon: data.item.iconName, - elements: data.item.elements, + title: data.name, + icon: data.iconName, + elements: data.elements, }, component: - data.item.parentId == 0 - ? LAYOUT - : modules['../../views/demo' + data.item.url + '/index.vue'], + data.parentId == 0 ? LAYOUT : modules['../../views/demo' + data.url + '/index.vue'], }); if (data.children && data.children.length > 0) { childRoute(data.children); diff --git a/src/views/demo/jobarea/index.vue b/src/views/demo/jobarea/index.vue index 1df2892..2b413fb 100644 --- a/src/views/demo/jobarea/index.vue +++ b/src/views/demo/jobarea/index.vue @@ -1,16 +1,12 @@ - - -
- 涂鸦 + + +
+
@@ -476,19 +480,26 @@ }} - - -
- 标注 + + +
+
@@ -521,17 +532,12 @@ FontColorsOutlined, RedoOutlined, OneToOneOutlined, - FileImageOutlined, BorderHorizontalOutlined, ExpandOutlined, CompressOutlined, } from '@ant-design/icons-vue'; - import { - UpdatePicStatus, - Deletepic, - UpdatePicName, - UpdatePicParentKey, - } from '@/api/demo/mediaLibrary'; + import { UpdatePicStatus, Deletepic } from '@/api/demo/mediaLibrary'; + import { graffiti_svg, otherimage_svg } from './preview'; import { useMessage } from '@/hooks/web/useMessage'; import { cloneDeep } from 'lodash-es'; import { getAppEnvConfig } from '@/utils/env'; @@ -547,7 +553,9 @@ // 上一张、下一张图片 function clickLeftOrRightButton(direction) { - const list = props.previewRecordList.filter((item) => item.objectKey); + const list = props.previewRecordList.filter( + (item) => item.objectKey && item.objectKey.includes('jpeg'), + ); graffitiFlag.value = false; for (let index = 0; index < list.length; index++) { if (list[index].id == props.nowPreviewRecord.id) { @@ -572,6 +580,7 @@ // 选择 function chooseNowPreviewRecord(value) { emits('chooseNowPreviewRecord', value); + graffitiFlag.value = false; refresh(); } // 刷新表格 @@ -582,7 +591,7 @@ const scale = ref(1); // 放大函数 function zoomIn() { - if (scale.value < 3) { + if (scale.value < 4) { scale.value += 0.1; } } @@ -615,8 +624,8 @@ props.nowPreviewRecord.width > 1040 && props.nowPreviewRecord.height > 800 ) { - imageHeight.value = 800; - imageWidth.value = (800 / props.nowPreviewRecord.height) * props.nowPreviewRecord.width; + imageWidth.value = 1040; + imageHeight.value = (1040 / props.nowPreviewRecord.width) * props.nowPreviewRecord.height; } else { imageHeight.value = 800; imageWidth.value = 1040; @@ -634,11 +643,13 @@ props.nowPreviewRecord.width > 1040 && props.nowPreviewRecord.height > 800 ) { - imageWidth.value = props.nowPreviewRecord.width; - imageHeight.value = props.nowPreviewRecord.height; + scale.value = props.nowPreviewRecord.width / 1040; + // imageWidth.value = props.nowPreviewRecord.width; + // imageHeight.value = props.nowPreviewRecord.height; } else { - imageWidth.value = 2080; - imageHeight.value = 1600; + scale.value = 2; + // imageWidth.value = 2080; + // imageHeight.value = 1600; } } @@ -646,7 +657,7 @@ function refresh() { scale.value = 1; rotationAngle.value = 0; - graffitiFlag.value = false; + // graffitiFlag.value = false; getImageWidthAndHeight(); // 复位 const dragDocument: any = document.querySelector('.dragModal'); @@ -654,11 +665,12 @@ dragDocument.style.left = 0 + 'px'; dragDocument.style.top = 0 + 'px'; } + document.body.style.cursor = 'default'; } // 删除 function deleteImage() { - let content = '确定要删除选择的文件/文件夹吗?'; + let content = '确定要删除选择的文件吗?'; if (props.previewRecordList.length == 1) { content = '下列图片只有一个,删除此图片后将会关闭此弹窗,确定要删除选择的文件吗?'; } @@ -672,7 +684,7 @@ ids: ids, }).then((res) => { handleSuccess(props.nowPreviewRecord); - createMessage.success(res); + createMessage.success('删除成功'); }); }, }); @@ -754,6 +766,7 @@ const nowMouseGraffiti = ref(0); // 设置鼠标格式 function setGraffiti() { + refresh(); graffitiFlag.value = !graffitiFlag.value; if (graffitiFlag.value) { document.body.style.cursor = 'crosshair'; @@ -832,7 +845,21 @@ const mouseCanvasRef = ref(); // 鼠标按下 function onMouseDown(event) { - if (graffitiFlag.value || graffitis.value.some((item) => item.status != 'success')) { + if (!graffitiFlag.value) { + // 拖动 + const dragDocument: any = document.querySelector('.dragModal'); + isDragging.value = true; + initialMouseX = event.clientX; + initialMouseY = event.clientY; + initialDocumentX = dragDocument.offsetLeft; + initialDocumentY = dragDocument.offsetTop; + dragDocument.style.cursor = 'grabbing'; + window.addEventListener('mousemove', onMouseMove); + window.addEventListener('mouseup', onMouseUp); + } else if ( + graffitiFlag.value && + (graffitis.value.length == 0 || !graffitis.value?.some((item) => item.status != 'success')) + ) { // 涂鸦 if (nowGraffiti.value != -1) return; if (graffitis.value.findIndex((item) => item.status == 'mouse') != -1) return; @@ -852,71 +879,64 @@ status: 'edit', }); graffitisClone.value = cloneDeep(graffitis.value); - window.addEventListener('mousemove', onMouseMove); - window.addEventListener('mouseup', onMouseUp); + window.addEventListener('mousemove', onMouseMoveGraffit); + window.addEventListener('mouseup', onMouseUpGraffit); + } + } + + // 鼠标移动-涂鸦 + function onMouseMoveGraffit(event) { + // 涂鸦 + const rect = mouseCanvasRef.value.getBoundingClientRect(); + if (!isDragging.value) return; + endX = event.x - rect.x; + endY = event.y - rect.y; + if (endX < 0 && endY < 0) { + endX = startX; + endY = startY; + } + setMouseData(); + } + // 鼠标松开-涂鸦 + function onMouseUpGraffit(event) { + // 涂鸦 + if (!isDragging.value) return; + const rect = mouseCanvasRef.value.getBoundingClientRect(); + endX = event.x - rect.x; + endY = event.y - rect.y; + if (endX < 0 && endY < 0) { + endX = startX; + endY = startY; + } + isDragging.value = false; + if (event.x > rect.right || event.y > rect.bottom) { + graffitis.value.splice(graffitis.value.length - 1, 1); + nowGraffiti.value = -1; } else { - // 拖动 - const dragDocument: any = document.querySelector('.dragModal'); - isDragging.value = true; - initialMouseX = event.clientX; - initialMouseY = event.clientY; - initialDocumentX = dragDocument.offsetLeft; - initialDocumentY = dragDocument.offsetTop; - dragDocument.style.cursor = 'grabbing'; - window.addEventListener('mousemove', onMouseMove); - window.addEventListener('mouseup', onMouseUp); + setMouseData(); + nowGraffiti.value = graffitis.value.length - 1; } + window.removeEventListener('mousemove', onMouseMoveGraffit); + window.removeEventListener('mouseup', onMouseUpGraffit); } - // 鼠标移动 + + // 鼠标移动-拖动 function onMouseMove(event) { - if (graffitiFlag.value || graffitis.value.some((item) => item.status != 'success')) { - // 涂鸦 - const rect = mouseCanvasRef.value.getBoundingClientRect(); - if (!isDragging.value) return; - endX = event.x - rect.x; - endY = event.y - rect.y; - if (endX < 0 && endY < 0) { - endX = startX; - endY = startY; - } - setMouseData(); - } else { - // 拖动 - const dragDocument: any = document.querySelector('.dragModal'); - if (isDragging.value) { - const deltaX = event.clientX - initialMouseX; - const deltaY = event.clientY - initialMouseY; - dragDocument.style.left = initialDocumentX + deltaX + 'px'; - dragDocument.style.top = initialDocumentY + deltaY + 'px'; - } + // 拖动 + const dragDocument: any = document.querySelector('.dragModal'); + if (isDragging.value) { + const deltaX = event.clientX - initialMouseX; + const deltaY = event.clientY - initialMouseY; + dragDocument.style.left = initialDocumentX + deltaX + 'px'; + dragDocument.style.top = initialDocumentY + deltaY + 'px'; } } - // 鼠标松开 + // 鼠标松开-拖动 function onMouseUp(event) { - if (graffitiFlag.value || graffitis.value.some((item) => item.status != 'success')) { - // 涂鸦 - if (!isDragging.value) return; - const rect = mouseCanvasRef.value.getBoundingClientRect(); - endX = event.x - rect.x; - endY = event.y - rect.y; - if (endX < 0 && endY < 0) { - endX = startX; - endY = startY; - } - isDragging.value = false; - if (event.x > rect.right || event.y > rect.bottom) { - graffitis.value.splice(graffitis.value.length - 1, 1); - nowGraffiti.value = -1; - } else { - setMouseData(); - nowGraffiti.value = graffitis.value.length - 1; - } - window.removeEventListener('mousemove', onMouseMove); - window.removeEventListener('mouseup', onMouseUp); - } else { - // 拖动 - const dragDocument: any = document.querySelector('.dragModal'); - isDragging.value = false; + // 拖动 + const dragDocument: any = document.querySelector('.dragModal'); + isDragging.value = false; + if (dragDocument) { dragDocument.style.cursor = 'default'; } } @@ -947,82 +967,92 @@ //------------------------------------------------------------------------ // 鼠标聚焦 function mouseenter(rect, type) { - if (rect.status != 'edit') { - rect.status = 'mouse'; - document.body.style.cursor = 'pointer'; - } - if (rect.status == 'edit') { - if (type == 'top' || type == 'bottom') { - document.body.style.cursor = 'ns-resize'; - } - if (type == 'left' || type == 'right') { - document.body.style.cursor = 'ew-resize'; - } - if (type == 'leftTop' || type == 'rightBottom') { - document.body.style.cursor = 'nwse-resize'; + if (graffitiFlag.value) { + // 鼠标聚焦状态 + if (rect.status != 'edit') { + rect.status = 'mouse'; + document.body.style.cursor = 'pointer'; } - if (type == 'leftBottom' || type == 'rightTop') { - document.body.style.cursor = 'nesw-resize'; + // 编辑状态 + if (rect.status == 'edit') { + if (type == 'top' || type == 'bottom') { + document.body.style.cursor = 'ns-resize'; + } + if (type == 'left' || type == 'right') { + document.body.style.cursor = 'ew-resize'; + } + if (type == 'leftTop' || type == 'rightBottom') { + document.body.style.cursor = 'nwse-resize'; + } + if (type == 'leftBottom' || type == 'rightTop') { + document.body.style.cursor = 'nesw-resize'; + } } } } // 鼠标离开 function mouseleave(rect) { - if (rect.status == 'mouse' || rect.status == 'edit') { - if (rect.status == 'mouse') { - rect.status = 'success'; - } - if (graffitiFlag.value) { - document.body.style.cursor = 'crosshair'; - } else { - document.body.style.cursor = 'pointer'; + if (graffitiFlag.value) { + if (rect.status == 'mouse' || rect.status == 'edit') { + if (rect.status == 'mouse') { + rect.status = 'success'; + } + if (rect.status == 'edit') { + document.body.style.cursor = 'crosshair'; + } } } } // 编辑状态下的鼠标按下 const mouseEditType = ref(''); function funMouseDownEdit(e, index, type) { - // 获取相对于容器的坐标 - // graffitisClone.value = cloneDeep(graffitis.value); - // const rect = mouseCanvasRef.value.getBoundingClientRect(); - // startX = e.x - rect.x; - // startY = e.y - rect.y; - // isDragging.value = true; - // nowGraffiti.value = index; - // mouseEditType.value = type; - // window.addEventListener('mousemove', funMouseMoveEdit); - // window.addEventListener('mouseup', funMouseUpEdit); + if (graffitiFlag.value) { + // 获取相对于容器的坐标 + graffitisClone.value = cloneDeep(graffitis.value); + const rect = mouseCanvasRef.value.getBoundingClientRect(); + startX = e.x - rect.x; + startY = e.y - rect.y; + isDragging.value = true; + nowGraffiti.value = index; + mouseEditType.value = type; + window.addEventListener('mousemove', funMouseMoveEdit); + window.addEventListener('mouseup', funMouseUpEdit); + } } // 编辑状态下的鼠标移动 function funMouseMoveEdit(e) { - const rect = mouseCanvasRef.value.getBoundingClientRect(); - if (!isDragging.value) return; - endX = e.x - rect.x; - endY = e.y - rect.y; - if (endX < 0 && endY < 0) { - endX = startX; - endY = startY; + if (graffitiFlag.value) { + const rect = mouseCanvasRef.value.getBoundingClientRect(); + if (!isDragging.value) return; + endX = e.x - rect.x; + endY = e.y - rect.y; + if (endX < 0 && endY < 0) { + endX = startX; + endY = startY; + } + funSetMouseDataEdit(); } - funSetMouseDataEdit(); } // 编辑状态下的鼠标松开 function funMouseUpEdit(e) { - if (!isDragging.value) return; - const rect = mouseCanvasRef.value.getBoundingClientRect(); - endX = e.x - rect.x; - endY = e.y - rect.y; - if (endX < 0 && endY < 0) { - endX = startX; - endY = startY; - } - isDragging.value = false; - if (e.x > rect.right || e.y > rect.bottom) { - graffitis.value[nowGraffiti.value] = graffitisClone.value[nowGraffiti.value]; - } else { - funSetMouseDataEdit(); + if (graffitiFlag.value) { + if (!isDragging.value) return; + const rect = mouseCanvasRef.value.getBoundingClientRect(); + endX = e.x - rect.x; + endY = e.y - rect.y; + if (endX < 0 && endY < 0) { + endX = startX; + endY = startY; + } + isDragging.value = false; + if (e.x > rect.right || e.y > rect.bottom) { + graffitis.value[nowGraffiti.value] = graffitisClone.value[nowGraffiti.value]; + } else { + funSetMouseDataEdit(); + } + window.removeEventListener('mousemove', funMouseMoveEdit); + window.removeEventListener('mouseup', funMouseUpEdit); } - window.removeEventListener('mousemove', funMouseMoveEdit); - window.removeEventListener('mouseup', funMouseUpEdit); } // 编辑状态下的数据 function funSetMouseDataEdit() { diff --git a/src/views/demo/system/mediaLibrary/preview/previewImageInformation.vue b/src/views/demo/system/mediaLibrary/preview/previewImageInformation.vue index 4fa7796..1bd2f01 100644 --- a/src/views/demo/system/mediaLibrary/preview/previewImageInformation.vue +++ b/src/views/demo/system/mediaLibrary/preview/previewImageInformation.vue @@ -65,7 +65,7 @@ 拍摄负载 - {{ props.nowPreviewRecord.photographNumber }} + {{ props.nowPreviewRecord.payloadName }} 拍摄人员 @@ -189,17 +189,22 @@ - + + + +
{ addFileTagsFlag.value = true; newFileTagsName.value = ''; + createMessage.success('添加标签成功'); emits('handleSuccess'); }); } else { @@ -326,7 +329,10 @@ id: props.nowPreviewRecord.id, fileTags: JSON.stringify(fileTags.value), graffitiJson: JSON.stringify(graffitiJson.value), + display: props.nowPreviewRecord.display, + showOnMap: props.nowPreviewRecord.showOnMap, }).then((res) => { + createMessage.success('删除标签成功'); emits('handleSuccess'); }); }, @@ -359,10 +365,9 @@ emits('chooseNowPreviewRecord', value); } - // 地图-------------------------------- - const mapRef = ref(); - function flyPoint() { - mapRef.value?.flyToPoint([props.nowPreviewRecord.lng, props.nowPreviewRecord.lat]); + // 打开路径弹窗 + function openPathModal() { + emits('openPathModal', props.nowPreviewRecord); }