diff --git a/src/views/mapPage/realTimeMap/components-tool/BatchCopyingDialogForm.vue b/src/views/mapPage/realTimeMap/components-tool/BatchCopyingDialogForm.vue index 9184f7ae..4d43330d 100644 --- a/src/views/mapPage/realTimeMap/components-tool/BatchCopyingDialogForm.vue +++ b/src/views/mapPage/realTimeMap/components-tool/BatchCopyingDialogForm.vue @@ -3,7 +3,7 @@ @@ -30,18 +30,53 @@ precision="4" /> + + +
+ 向右 (0) + 向上 (π/2) + 向左 (π) + 向下 (-π/2) +
+
-
- 向上:弧度 1.57079 +
+ + 角度说明
-
- 向左:弧度 3.141592 -
-
- 向下:弧度 -1.57079 -
-
- 向右:弧度 0 +
+
+ 向上:弧度 1.57079 (90°) +
+
+ 向左:弧度 3.141592 (180°) +
+
+ 向下:弧度 -1.57079 (-90°) +
+
+ 向右:弧度 0 (0°) +
@@ -130,6 +165,11 @@ const submitLineLibraryForm = async () => { const safeNumber = (value) => Number(value || 0) +// 常用方向快捷设置 +const setQuickAngle = (angle) => { + batchCopyingForm.value.radian = angle +} + defineExpose({ open }) // 提供 open 方法,用于打开弹窗 @@ -142,8 +182,56 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗 border-top: none !important; } + .quick-angles { + display: flex; + gap: 8px; + flex-wrap: wrap; + + .el-button { + min-width: 80px; + font-size: 12px; + } + } + .tips { + user-select: text; padding-left: 110px; + margin-top: 16px; + + .tips-title { + display: flex; + align-items: center; + gap: 6px; + margin-bottom: 8px; + color: #606266; + font-size: 14px; + font-weight: 500; + + .el-icon { + color: #409eff; + } + } + + .tips-content { + background: #f0f9ff; + border: 1px solid #b3d8ff; + border-radius: 4px; + padding: 8px 12px; + + .tip-item { + margin-bottom: 6px; + font-size: 13px; + color: #606266; + + &:last-child { + margin-bottom: 0; + } + + .el-text { + color: #606266; + } + } + } } } diff --git a/src/views/mapPage/realTimeMap/components-tool/IsometricReplicationDialog.vue b/src/views/mapPage/realTimeMap/components-tool/IsometricReplicationDialog.vue index 7996bf3c..84cb08ae 100644 --- a/src/views/mapPage/realTimeMap/components-tool/IsometricReplicationDialog.vue +++ b/src/views/mapPage/realTimeMap/components-tool/IsometricReplicationDialog.vue @@ -3,7 +3,7 @@ @@ -13,40 +13,99 @@ v-model="form.distance" :min="0" :precision="2" - placeholder="请输入" + placeholder="请输入间隔距离" style="width: 100%" /> - + + + + +
+ + 向右 (0) + + + 向上 (π/2) + + + 向左 (π) + + + 向下 (-π/2) + +
+
+ +
+
+ + 角度说明 +
+
+
+ 向上:弧度 1.57079 (90°) +
+
+ 向左:弧度 3.141592 (180°) +
+
+ 向下:弧度 -1.57079 (-90°) +
+
+ 向右:弧度 0 (0°) +
+
+
@@ -98,5 +313,92 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗 padding: 0px 20px 20px 0; border-top: none !important; } + + .quick-angles { + display: flex; + gap: 8px; + flex-wrap: wrap; + + .el-button { + min-width: 80px; + font-size: 12px; + } + } + + .tips { + user-select: text; + padding-left: 110px; + margin-top: 16px; + + .tips-title { + display: flex; + align-items: center; + gap: 6px; + margin-bottom: 8px; + color: #606266; + font-size: 14px; + font-weight: 500; + + .el-icon { + color: #409eff; + } + } + + .tips-content { + background: #f0f9ff; + border: 1px solid #b3d8ff; + border-radius: 4px; + padding: 8px 12px; + + .tip-item { + margin-bottom: 6px; + font-size: 13px; + color: #606266; + + &:last-child { + margin-bottom: 0; + } + + .el-text { + color: #606266; + } + } + } + } + + // 表单验证样式优化 + .el-form-item { + margin-bottom: 20px; + + &.is-error { + .el-input-number { + .el-input__wrapper { + box-shadow: 0 0 0 1px #f56c6c inset; + } + } + } + } + + // 按钮样式优化 + .dialog-footer { + .el-button { + min-width: 80px; + + &.el-button--primary { + background: #409eff; + border-color: #409eff; + + &:hover { + background: #66b1ff; + border-color: #66b1ff; + } + + &:active { + background: #3a8ee6; + border-color: #3a8ee6; + } + } + } + } } diff --git a/src/views/mapPage/realTimeMap/editMap.vue b/src/views/mapPage/realTimeMap/editMap.vue index dd586cf9..26b7edc3 100644 --- a/src/views/mapPage/realTimeMap/editMap.vue +++ b/src/views/mapPage/realTimeMap/editMap.vue @@ -959,17 +959,21 @@ @@ -981,7 +985,17 @@ >
删除
编辑节点
-
等距复制
+
等距复制
{ //等距复制 const isometricReplication = () => { - // IsometricReplicationDialogRef.value.open() - // hideContextMenu() - message.warning('规则暂未制定') + removeEventListener() //移除监听 + IsometricReplicationDialogRef.value.open(state.contextMenu.currentItem) + hideContextMenu() +} +//复制成功 +const equalDistanceReplicationSucceeded = (list) => { + state.allMapPointInfo.push(...list) + addEditHistory() } //生成检测点 @@ -2952,6 +2971,7 @@ const clickDrawSelectionArea = () => { message.warning('您选择的路径点存在未保存的') return } + removeEventListener() //移除监听 GenerateStraightLinesDialogRef.value.open(routeList) } //批量删除 @@ -2983,6 +3003,7 @@ const clickDrawSelectionArea = () => { top: Math.min(...state.drawSelectionPointList.map((point) => Number(point.locationY))), bottom: Math.max(...state.drawSelectionPointList.map((point) => Number(point.locationY))) } + removeEventListener() //移除监听 BatchCopyingDialogFormRef.value.open(boundaryValue) } else { message.warning('至少选择一个点') @@ -3056,11 +3077,12 @@ const submitBatchCopyingFormSuccess = async (form) => { dataJson = '' } else if (restNode.type === 2) { dataList = restNode.dataList.map( - ({ locationDeep, locationStorey, locationWide, positionMapId }) => ({ + ({ locationDeep, locationStorey, locationWide, positionMapId, locationTypeId }) => ({ locationDeep, locationStorey, locationWide, - positionMapId + positionMapId, + locationTypeId }) ) dataJson = JSON.stringify(dataList)