Bläddra i källkod

业务空间建筑楼层定制接口替换

haojianlong 5 år sedan
förälder
incheckning
62cc9c617b

+ 6 - 0
src/api/scan/request.js

@@ -1480,6 +1480,12 @@ export function countObjZone(param, success) {
   http.postJson(url, param, success)
 }
 
+// 查询建筑楼层-统计业务空间state
+export function queryBFloorWithState(param, success) {
+  let url = `${baseUrl}/datacenter/object/zone/building-floor`;
+  http.postJson(url, param, success)
+}
+
 // 创建分区信息
 export function createZone(param, success) {
   let data = param.data

+ 16 - 7
src/components/business_space/newGraphy/graphy.vue

@@ -1,12 +1,12 @@
 <template>
-  <div id="graphy" ref="graphy">
+  <div id="graphy" ref="graphy" v-loading="canvasLoading">
     <div v-show="!FloorMap">
       <div class="center" style="height: 400px;padding-top:182px;box-sizing:border-box;">
         <i class="icon-wushuju iconfont"></i>
         暂无数据
       </div>
     </div>
-    <div class="canvas-box" v-show="FloorMap" v-loading="canvasLoading">
+    <div class="canvas-box" v-show="FloorMap">
       <canvas id="floorCanvas" :width="canvasWidth" :height="canvasHeight" ref="canvas" tabindex="0"></canvas>
       <!-- 初始两个按钮 -->
       <el-row class="buttons-box">
@@ -35,7 +35,7 @@
             <!-- 点击已经关联的业务空间 -->
             <el-button type="primary" plain @click="refactorBSP" :disabled="zoneDisable" style="margin-left:10px;">重新划分业务空间</el-button>
             <el-button type="primary" @click="editeSpaceDetail" :disabled="zoneDisable">编辑空间详情</el-button>
-            <el-button type="primary" plain @click="confirmZoneSpace" :disabled="false||zoneDisable&&curZoneItem.data&&curZoneItem.data.State">确认业务空间
+            <el-button type="primary" plain @click="confirmZoneSpace" :disabled="zoneDisable||(!zoneDisable&&!curZoneItem.isInfected)">确认业务空间
             </el-button>
             <el-button plain @click="cancelGraphy" v-show="!zoneDisable">取 消</el-button>
           </div>
@@ -60,7 +60,7 @@
             <el-button plain @click="cancelGraphy">取 消</el-button>
           </div>
         </div>
-        <div style="position: absolute;right: 0;">
+        <div style="position: absolute;right: 10px;">
           <el-button type="text" @click="lookUnrelatBSpace(false)">未关联平面图的业务空间 {{num}} 条</el-button>
         </div>
       </el-row>
@@ -658,12 +658,17 @@ export default {
         this.$message.success('更新成功');
       })
     },
+    // 保存并确认业务空间
+    confirmAndSave() {
+      this.confirmAndSaveFlag = true;
+      this.saveRefactorBSP();
+    },
     // 重新划分--保存
     saveRefactorBSP() {
       let selectSpace = this.scene.getSelectedSpaces();
       let selectLikeSpace = this.scene.getSelectedLikeSpace();
       //更新业务空间
-      let zoneObj = { Outline: [], Height: 0 }, IspaceIdList = [];
+      let zoneObj = { Outline: [], Height: 0, State: this.confirmAndSaveFlag ? 1 : 0 }, IspaceIdList = [];
       // 空间
       selectSpace.map(t => {
         zoneObj.Outline.push(t.data.OutLine);
@@ -872,7 +877,7 @@ export default {
         zone: this.tab.code,
         data: {
           Content: [zoneObj],
-          Projection: ['Outline', 'BIMLocation']
+          Projection: ['Outline', 'BIMLocation', 'State']
         },
       }
       updateZone(pa, res => {
@@ -1013,6 +1018,8 @@ export default {
 #graphy {
   position: relative;
   width: 100%;
+  box-sizing: border-box;
+  padding: 0 10px 10px;
   height: calc(100% - 56px);
   .canvas-box {
     width: 100%;
@@ -1021,6 +1028,8 @@ export default {
   .buttons-box {
     position: absolute;
     top: 0;
+    left:0;
+    padding: 0 10px;
     width: 100%;
     z-index: 999;
     & > div {
@@ -1059,7 +1068,7 @@ export default {
     bottom: 60px;
     left: 50%;
     transform: translateX(-50%);
-    z-index: 999;
+    z-index: 99;
   }
 }
 </style>

+ 25 - 21
src/views/ledger/spacelist/index.vue

@@ -8,7 +8,15 @@
     <!--------- 页面头部   -------------->
     <div class="saga-title" v-show="!needCalculate">
       <div class="saga-build-mess">
-        <floorCascader @change="changeCascader" ref="floorCascader"></floorCascader>
+        <div style="margin-left: 10px;float: left;">
+          <span style="color: #999999;font-size: 14px;margin-right: 12px;">建筑楼层</span>
+          <el-cascader :options="options" placeholder="请选择建筑楼层" v-model="buildFloorSelectd" @change="changeCascader">
+            <template slot-scope="{ node, data }">
+              <i class="el-icon-warning-outline" v-if="data.Count" style="color:red;margin-right:10px;"></i>
+              <span>{{ data.label }}</span>
+            </template>
+          </el-cascader>
+        </div>
         <input type="hidden" v-model="zoneItemID">
       </div>
       <div class="saga-build-tab">
@@ -62,11 +70,11 @@ import {
   getDataDictionary,
   getAllbusiness,
   getSpaceFloor,
-  buildingQuery, //数据中心-建筑查询
   queryDictionaryHead, //数据中心-字典头部信息查询接口
   getrelationTypeProject, //数据中心-当该项目中的"建筑体下的业务空间"“楼层下的业务空间”关系的状态为需更新时,业务空间台账功能不可用
   getSpaceBdFlCount, // 属于多建筑楼层的空间数据统计
   countObjZone, //受影响统计
+  queryBFloorWithState, // 定制建筑楼层
 } from "@/api/scan/request";
 import tools from '@/utils/scan/tools'
 import floorCascader from "@/components/ledger/lib/floorCascader";
@@ -112,11 +120,6 @@ export default {
         "rel_type": "99"
       },
       options: [], //建筑楼层级联下拉
-      props: { //自定义字段
-        value: "BuildID",
-        label: "BuildLocalName",
-        children: "Floor"
-      },
       floorToMap: {}, //楼层及其对应的模型图
       FloorMap: "", //当前选中的楼层对象
       zoneItemID: '',
@@ -144,29 +147,30 @@ export default {
     },
     // 获取项目下建筑
     getBuilding() {
-      let pa = {
-        Cascade: [{ name: 'floor', Orders: 'SequenceId desc' }],
-        Orders: "BuildLocalName asc",
-      }
-      buildingQuery(pa, res => {
+      queryBFloorWithState({}, res => {
         this.options = res.Content.map(t => {
+          t.value = t.BuildID;
+          t.label = t.BuildLocalName;
+          t.Count = 0;
           if (t.Floor) {
-            t.Floor = t.Floor.map(item => {
-              item.BuildID = item.FloorID;
-              item.BuildLocalName = item.FloorLocalName;
+            t.children = t.Floor.map(item => {
+              item.value = item.FloorID;
+              item.label = item.FloorLocalName;
               this.floorToMap[item.FloorID] = item;
+              if (item.Count > 0) {
+                t.Count++;
+              }
               return item;
             })
+            t.children.unshift({ value: "all", label: "全部" }, { value: 'noKnow', label: "未明确楼层" })
           } else {
-            t.Floor = []
+            t.children = []
           }
           return t;
         })
+        this.options.unshift({ value: "all", label: "全部" }, { value: "noKnow", label: "未明确建筑" })
         if (this.childBackParam.zone) {
           this.changeCascader(this.buildFloorSelectd);
-          this.$refs.floorCascader.setValue(this.buildFloorSelectd)
-        } else {
-          this.$refs.floorCascader.setValue([''])
         }
       })
     },
@@ -449,7 +453,7 @@ export default {
     overflow: hidden;
     height: 100%;
     background: #fff;
-    padding: 10px;
+    // padding: 10px;
     /deep/ .el-tabs__item.is-top {
       border-top: 2px solid transparent;
       &.is-active {
@@ -461,7 +465,6 @@ export default {
       bottom: 0px;
       box-sizing: border-box;
       width: 100%;
-      margin-left: -10px;
       padding: 0 20px;
       line-height: 40px;
       background: #ec808d;
@@ -469,6 +472,7 @@ export default {
     }
   }
   .spaceTypes {
+    padding: 10px 10px 0;
     .types {
       float: left;
       width: 100%;