diff --git a/src/views/mapPage/realTimeMap/components-tool/EditNodesAndAlignmentsDialog.vue b/src/views/mapPage/realTimeMap/components-tool/EditNodesAndAlignmentsDialog.vue new file mode 100644 index 00000000..bef9cc40 --- /dev/null +++ b/src/views/mapPage/realTimeMap/components-tool/EditNodesAndAlignmentsDialog.vue @@ -0,0 +1,349 @@ + + + + + diff --git a/src/views/mapPage/realTimeMap/components-tool/layerSelectionToolDialog.vue b/src/views/mapPage/realTimeMap/components-tool/layerSelectionToolDialog.vue index f31b3566..e80b2f01 100644 --- a/src/views/mapPage/realTimeMap/components-tool/layerSelectionToolDialog.vue +++ b/src/views/mapPage/realTimeMap/components-tool/layerSelectionToolDialog.vue @@ -53,13 +53,13 @@ const changeUnfold = () => { isUnfold.value = !isUnfold.value } const changeSelectList = (item) => { + item.isShow = !item.isShow if (item.category === 'node') { const types = list.value.filter((item) => !item.isShow).map((item) => item.type) emit('layerSelectionSuccess', types) } else { emit('isCurveDisplayChange') } - item.isShow = !item.isShow } const open = (item) => {} diff --git a/src/views/mapPage/realTimeMap/editMap.vue b/src/views/mapPage/realTimeMap/editMap.vue index 54e3d4c5..c42d2f87 100644 --- a/src/views/mapPage/realTimeMap/editMap.vue +++ b/src/views/mapPage/realTimeMap/editMap.vue @@ -2,309 +2,313 @@
-
-
- - - - - - - - - - -
- 确认 -
-
- - +
+
+ - - - -
- 确认 +
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
{{ item.name }}
+
+ + + + + - - - - - - - - -
- 取消 + + + +
+ 确认 +
+ + + + + + +
+ 确认 +
+
+ + + + + + + + + + + + + + + + + + + - - -
- -
{{ item.name }}
-
- -
+ + + + + + + + + + + + + + + + + + + +
+ 取消 + 确认 +
+
+
+
+ +
{{ item.name }}
+
+ +
+
- 确定 + toolbarSwitchType === 'bulkEditing' || + toolbarSwitchType === 'bulkDelete') + " + type="danger" + class="selection-area-btn" + @click="clickDrawSelectionArea" + >确定 +
-
+
-
- +
- - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - -
- 取消 - 确认 -
-
-
+ + + + + + + + + + + + + + +
+ 取消 + 确认 +
+
+
-
- -
{{ item.name }}
+
+ +
{{ item.name }}
+
-
+
@@ -975,6 +981,12 @@ @add-event-listener="addEventListener" @equal-distance-replication-succeeded="equalDistanceReplicationSucceeded" /> + +
{ toolbarSwitchType.value === 'createLineLibrary' || toolbarSwitchType.value === 'createRegion' || toolbarSwitchType.value === 'bulkDelete' || - toolbarSwitchType.value === 'batchCopying' + toolbarSwitchType.value === 'batchCopying' || + toolbarSwitchType.value === 'bulkEditing' ) { state.cursorStyle = 'crosshair' } else if ( @@ -1917,6 +1937,7 @@ const toolbarClick = async (item) => { toolbarSwitchType.value === 'createRegion' || toolbarSwitchType.value === 'bulkDelete' || toolbarSwitchType.value === 'batchCopying' || + toolbarSwitchType.value === 'bulkEditing' || toolbarSwitchType.value === 'editRoute' || toolbarSwitchType.value === 'generateLine' ) { @@ -2127,6 +2148,9 @@ const toolbarClick = async (item) => { case 'batchCopying': //批量复制 break + case 'bulkEditing': + //批量编辑 + break case 'showSortNum': // 显示节点序号 //网格 @@ -2397,7 +2421,7 @@ const replicationNode = () => { resizable: copyMapItem.resizable, rotatable: copyMapItem.rotatable, lockAspectRatio: copyMapItem.lockAspectRatio, - layerSelectionShow: copyMapItem.layerSelectionShow, + layerSelectionShow: true, mapImageUrl: copyMapItem.mapImageUrl, locationYaw: copyMapItem.locationYaw, areaId: null, @@ -2671,6 +2695,7 @@ const startDrawSelection = (event) => { toolbarSwitchType.value === 'drawRoute' || toolbarSwitchType.value == 'generateLine' || toolbarSwitchType.value === 'bulkDelete' || + toolbarSwitchType.value === 'bulkEditing' || toolbarSwitchType.value === 'batchCopying' ) { const { x, y } = disposeEventPoints(event) @@ -2693,6 +2718,7 @@ const updateDrawSelection = throttle((event) => { toolbarSwitchType.value === 'drawRoute' || toolbarSwitchType.value === 'generateLine' || toolbarSwitchType.value === 'bulkDelete' || + toolbarSwitchType.value === 'bulkEditing' || toolbarSwitchType.value === 'batchCopying' ) { if (state.drawSelectionAreaShow) { @@ -2801,6 +2827,7 @@ const endDrawSelection = (event) => { toolbarSwitchType.value === 'drawRoute' || toolbarSwitchType.value === 'generateLine' || toolbarSwitchType.value === 'bulkDelete' || + toolbarSwitchType.value === 'bulkEditing' || toolbarSwitchType.value === 'batchCopying' ) { // 使用 requestAnimationFrame 优化渲染 @@ -2842,7 +2869,7 @@ const clickDrawSelectionArea = () => { }) // 筛选路线 - if (toolbarSwitchType.value === 'batchCopying') { + if (toolbarSwitchType.value === 'batchCopying' || toolbarSwitchType.value === 'bulkEditing') { state.mapRouteList.forEach((route) => { const startPointInBox = route.startPointX >= box.x && @@ -3032,6 +3059,57 @@ const clickDrawSelectionArea = () => { message.warning('至少选择一个点') } } + + //批量编辑 + if (toolbarSwitchType.value === 'bulkEditing') { + removeEventListener() //移除监听 + EditNodesAndAlignmentsRef.value.open() + } +} + +//批量编辑成功 +const editNodesAndAlignmentsSucceeded = (data) => { + let newRoutes = JSON.parse(JSON.stringify(state.drawSelectionRouteList)) + const routeIdSet = new Set(newRoutes.map((route) => route.id)) + state.mapRouteList.forEach((route) => { + if (routeIdSet.has(route.id)) { + data.batchKeys.forEach((key) => { + if (data.formData.hasOwnProperty(key)) { + // 判断method是否变化 + if (key === 'method' && route[key] !== data.formData[key]) { + // 先赋新method + route[key] = data.formData[key] + // 控制点赋值逻辑 + if (data.formData[key] === 0) { + // 变为直线,控制点归零 + route.beginControlX = 0 + route.beginControlY = 0 + route.endControlX = 0 + route.endControlY = 0 + } else { + // 变为曲线,按比例设置控制点 + route.beginControlX = + Number(route.startPointX) + + (Number(route.endPointX) - Number(route.startPointX)) * 0.3 + route.beginControlY = + Number(route.startPointY) + + (Number(route.endPointY) - Number(route.startPointY)) * 0.3 + route.endControlX = + Number(route.startPointX) + + (Number(route.endPointX) - Number(route.startPointX)) * 0.7 + route.endControlY = + Number(route.startPointY) + + (Number(route.endPointY) - Number(route.startPointY)) * 0.7 + } + } else if (key !== 'method') { + route[key] = data.formData[key] + } + } + }) + } + }) + message.success('修改成功') + addEditHistory() } //批量复制 @@ -4642,9 +4720,8 @@ function handleNodeClick(item) { padding: 0 0 0 4px; .top-tool-list { - max-width: calc(100% - 200px); - overflow-x: auto; display: flex; + width: fit-content; align-items: center; text-align: center; position: relative; @@ -4694,8 +4771,6 @@ function handleNodeClick(item) { z-index: 999; text-align: center; box-shadow: rgba(0, 0, 0, 0.05) 0rem 0rem 0rem 0.0625rem; - max-height: calc(100vh - 200px); - overflow-y: auto; .tool-item { cursor: pointer; @@ -4798,7 +4873,7 @@ function handleNodeClick(item) { } .search-select { - padding-right: 20px; + padding: 0 20px; .search-icon { widows: 20px; height: 20px;