Browse Source

业务空间交互修改

haojianlong 5 years ago
parent
commit
044211892c

+ 1 - 1
package.json

@@ -28,7 +28,7 @@
         "@saga-web/base": "2.1.9",
         "@saga-web/draw": "2.1.58",
         "@saga-web/graphy": "2.1.30",
-        "@saga-web/cad-engine": "2.0.345"
+        "@saga-web/cad-engine": "2.0.358"
     },
     "devDependencies": {
         "ajv": "^6.9.1",

+ 14 - 15
src/components/business_space/newGraphy/canvasFun.vue

@@ -1,15 +1,15 @@
 <template>
-  <el-row id="canvas-actions-box" :class="{'isEdit':isEdit}">
+  <el-row id="canvas-actions-box" :class="{'isEdit':config.isEdit}">
     <!-- <div :class="{'active':active=='move'}">
       <i class="iconfont icon-move" @click="moveCanvas"></i>
     </div> -->
-    <div v-if="isEdit&&groupSelect" :class="{'active':active=='groupSelect'}">
+    <div v-if="config.isEdit&&config.groupSelect" :class="{'active':active=='groupSelect'}">
       <i class="iconfont icon-shuxingxuanze" @click="groupSelect"></i>
     </div>
     <div>
       <i class="iconfont icon-maximize" @click="fitToWindow"></i>
     </div>
-    <div v-if="!isEdit" >
+    <div v-if="!config.isEdit">
       <el-dropdown size="mini" placement="top-start" @command="handleCommand">
         <i class="el-icon-download" style="font-size:20px;color:#fff;"></i>
         <el-dropdown-menu slot='dropdown'>
@@ -18,7 +18,7 @@
         </el-dropdown-menu>
       </el-dropdown>
     </div>
-    <div v-if="isEdit&&divide" :class="{'active':active=='divide'}">
+    <div v-if="config.isEdit&&config.divide" :class="{'active':active=='divide'}">
       <el-dropdown size="mini" placement="top-start" @command="handleDivideCommand" :hide-on-click="false">
         <i class="iconfont icon-edit1" @click="divide"></i>
         <el-dropdown-menu slot='dropdown'>
@@ -28,13 +28,13 @@
         </el-dropdown-menu>
       </el-dropdown>
     </div>
-    <div v-if="isEdit&&divide">
+    <div v-if="config.isEdit&&config.divide">
       <i class="iconfont icon-Erase" @click="clearDivide"></i>
     </div>
-    <div v-if="isEdit">
+    <div v-if="config.isEdit">
       <i class="iconfont icon-Cancel" @click="undo"></i>
     </div>
-    <div v-if="isEdit">
+    <div v-if="config.isEdit">
       <i class="iconfont icon-Anti-cancel" @click="redo"></i>
     </div>
     <div>
@@ -60,14 +60,13 @@ export default {
     }
   },
   props: {
-    isEdit: {
-      default: false
-    },
-    divide: {
-      default: true
-    },
-    groupSelect: {
-      default: false
+    config: {
+      type: Object,
+      default: {
+        isEdit: false,
+        divide: true,
+        groupSelect: false
+      }
     }
   },
   computed: {

+ 36 - 4
src/components/business_space/newGraphy/graphy.vue

@@ -62,7 +62,7 @@
       <!-- 底部操作按钮 -->
       <el-row class="canvas-actions-box">
         <canvasFun @fit="fit" @savePng="savePng" @saveSvg="saveSvg" @divide="divide" @clearDivide="clearDivide" @undo="undo" @redo="redo"
-          @scale="scale" :isEdit="isEdit" ref="canvasFun"></canvasFun>
+          @changeAbsorb="changeAbsorb" @scale="scale" @groupSelect="groupSelect" :config="config" ref="canvasFun"></canvasFun>
       </el-row>
     </div>
     <!--  -->
@@ -135,7 +135,11 @@ export default {
       FloorObj: {}, //楼层对象
       FloorMap: '', //楼层底图
       tab: {},
-      isEdit: false,
+      config: {
+        isEdit: false,
+        divide: true,
+        groupSelect: true
+      },
       canvasLoading: false,
       view: null,
       scene: null,
@@ -183,6 +187,11 @@ export default {
         // 业务空间
         this.getBusinessSpace();
       }
+      this.config = {
+        isEdit: false,
+        divide: true,
+        groupSelect: true
+      }
       // 获取当前楼层的元空间
       this.getFloorISpace();
       // 查询未关联业务空间的元空间
@@ -365,6 +374,11 @@ export default {
     // 编辑平面图
     editGraphy() {
       this.type = 3;
+      this.config.isEdit = true;
+      this.config.groupSelect = false;
+      this.config.divide = true;
+      // 设置业务空间不可选
+      this.scene.isZoneSelectable = false
     },
     // 查看未关联的业务空间--flag--查看-or-选择
     lookUnrelatBSpace(flag) {
@@ -390,7 +404,16 @@ export default {
         this.groupCreateBSpace()
       } else if (this.groupCreateType == 2) {
         this.type = 5;
+        this.config.isEdit = true;
+        this.config.groupSelect = true;
+        this.config.divide = false;
         this.groupCreateDialogVis = false;
+        // 清空选中空间
+        this.scene.clearSpaceSelection();
+        // 设置空间可选
+        this.scene.isSpaceSelectable = true;
+        // 设置业务空间不可选
+        this.scene.isZoneSelectable = false;
       }
     },
     // 批量创建业务空间
@@ -497,7 +520,8 @@ export default {
       // 设置空间可选
       this.scene.isSpaceSelectable = true;
       // 将已关联的设置不可选,并将当前选的隐藏
-      this.scene.changeSelectZone(this.curZoneItem);
+      this.scene.isZoneSelectable = false;
+      this.curZoneItem.visible = false;
     },
     // 重新划分--保存
     saveRefactorBSP() {
@@ -518,7 +542,7 @@ export default {
       this.updateBSPOutline(zoneObj, IspaceIdList)
     },
     // 批量创建所选业务空间
-    groupCreateZone(){},
+    groupCreateZone() { },
     // 更新业务空间和元空间的关系
     relationInBSPandISP(SpaceId, IspaceIdList) {
       let pa = {
@@ -614,6 +638,14 @@ export default {
       this.view = new FloorView('floorCanvas')
     },
     // 工具栏操作
+    // 吸附
+    changeAbsorb(isAbsorbing) {
+      this.scene.isAbsorbing = isAbsorbing;
+    },
+    // 框选
+    groupSelect() {
+      this.scene.isRectSelection = true;
+    },
     // 适配底图到窗口
     fit() {
       this.view.fitSceneToView()

+ 2 - 2
src/components/business_space/newGraphy/unRelateBSP.vue

@@ -138,9 +138,9 @@ export default {
         }
       }
       if (this.floor[0] == 'isNull') {
-        pa.data.Filters += `BuildingId isNull`
+        pa.data.Filters += `;BuildingId isNull`
       } else if (this.floor[0] && this.floor[0] != 'all') {
-        pa.data.Filters += `BuildingId='${this.floor[0]}'`
+        pa.data.Filters += `;BuildingId='${this.floor[0]}'`
       }
       if (this.floor[1] == 'isNull') {
         pa.data.Filters += `;FloorId isNull`

+ 12 - 2
src/views/ready/buildfloor/drawGraphy/drawFloor.vue

@@ -3,7 +3,7 @@
     <canvas :id="`floorCanvas${id}`" :width="cadWidth" :height="cadHeight" ref="canvas" tabindex="0"></canvas>
     <div class="operate" v-if="showTools">
       <canvasFun @fit="fit" @savePng="savePng" @saveSvg="saveSvg" @divide="divide" @clearDivide="clearDivide" @undo="undo" @redo="redo" @scale="scale"
-        @changeAbsorb="changeAbsorb" :isEdit="isEdit" ref="canvasFun"></canvasFun>
+        @changeAbsorb="changeAbsorb" :config="config" ref="canvasFun"></canvasFun>
     </div>
   </div>
 </template>
@@ -29,7 +29,12 @@ export default {
       modelId: '',
       FloorID: '',
       Outline: [],
-      floorData: {}
+      floorData: {},
+      config: {
+        isEdit: false,
+        divide: true,
+        groupSelect: true
+      }
     };
   },
   props: {
@@ -176,6 +181,11 @@ export default {
           this.$refs.canvasFun.sliderVal = n * 10 / this.view.minScale;
         }
       }
+    },
+    "isEdit": {
+      handler(n) {
+        this.config.isEdit = n;
+      }
     }
   }
 };