Explorar o código

业务空间可修改建筑楼层

haojianlong %!s(int64=5) %!d(string=hai) anos
pai
achega
45583b0c37

+ 68 - 7
src/components/business_space/business/handsontable.vue

@@ -38,6 +38,7 @@ import addBusiness from "@/components/business_space/dialogs/addDialog/businessD
 import showTools from "@/utils/handsontable/notShow"
 import handsonUtils from "@/utils/hasontableUtils"
 import Handsontable from "handsontable-pro"
+import buildFloor from '@/utils/handsontable/buildFloorData'
 import 'handsontable-pro/dist/handsontable.full.css'
 import zhCN from 'handsontable-pro/languages/zh-CN';
 import qrcode from "@/components/ledger/lib/qrcode";
@@ -95,10 +96,12 @@ export default {
       buildMess: null,
       filtersArr: [], //表格数据被过滤后的下标
       copyMain: [], //深拷贝数组
+      buildFloorData: [], //楼层数据
     };
   },
   created() {
     this.setData()
+    buildFloor.getData(this.buildFloorData)
   },
   mounted() { },
   methods: {
@@ -107,7 +110,7 @@ export default {
       this.param.UserId = this.userId
       this.param.secret = this.secret
     },
-    //获取表
+    //获取表格数据
     getHeader(headers, buildFloorSelectd) {
       this.headers = headers
       this.buildFloorSelectd = buildFloorSelectd
@@ -124,9 +127,24 @@ export default {
           PageSize: this.page.pageSize
         }
       }
-      if (this.buildFloorSelectd.length && this.buildFloorSelectd[0] && this.buildFloorSelectd[1]) {
-        params.data.Filters = `BuildingId='${this.buildFloorSelectd[0]}';FloorId='${this.buildFloorSelectd[1]}'`
+      if (this.buildFloorSelectd[0] == "noKnow") {
+        params.data.Filters += `buildingId isNull`
+      } else if (this.buildFloorSelectd[0] && this.buildFloorSelectd[0] != "all") {
+        params.data.Filters += `buildingId='${this.buildFloorSelectd[0]}'`
       }
+      if (this.buildFloorSelectd.length > 1) {
+        if (this.buildFloorSelectd[1] == "noKnow") {
+          params.data.Filters += `;floorId isNull`
+        } else if (this.buildFloorSelectd[1] && this.buildFloorSelectd[1] != "all") {
+          params.data.Filters += `;floorId='${this.buildFloorSelectd[1]}'`
+        }
+      }
+      if (!params.data.Filters) {
+        delete params.data.Filters
+      }
+      // if (this.buildFloorSelectd.length && this.buildFloorSelectd[0] && this.buildFloorSelectd[1]) {
+      //   params.data.Filters = `BuildingId='${this.buildFloorSelectd[0]}';FloorId='${this.buildFloorSelectd[1]}'`
+      // }
       // else if (buildFloorSelectd.length && buildFloorSelectd[0] && !buildFloorSelectd[1]) {
       //   params.data.Filters = `BuildingId='${buildFloorSelectd[0]}'`
       // } else {
@@ -134,7 +152,14 @@ export default {
       // }
       queryZone(params, res => {
         this.page.total = res.Total
-        this.main = res.Content
+        this.main = res.Content.map((item) => {
+          if (item.hasOwnProperty("BuildingId") && item.hasOwnProperty("FloorId")) {
+            item.flowBuild = item.BuildingId + "-" + item.FloorId
+          } else if (item.hasOwnProperty("BuildingId") && !item.hasOwnProperty("FloorId")) {
+            item.flowBuild = item.BuildingId
+          }
+          return item
+        });
         if (this.main && this.main.length && this.main[0].RoomID) {
           this.copyMain = tools.deepCopy(this.main);
         }
@@ -339,6 +364,10 @@ export default {
       //生成要修改字段列表
       change.map((item) => {
         let key = item[1].split(".")[0]
+        if (key == "flowBuild" && keyList.indexOf(key) == -1) {
+          keyList.push("BuildingId", "FloorId")
+          param.data.Projection.push("BuildingId", "FloorId")
+        }
         if (item[1] && keyList.indexOf(key) == -1) {
           keyList.push(key)
         }
@@ -349,8 +378,26 @@ export default {
       //生成对应修改数据
       data.map((item, index) => {
         keyList.map(value => {
-          let itemData = tools.dataForKey(item, value)
-          tools.setDataForKey(item, value, itemData == "" ? null : itemData)
+          if (value == "BuildingId") {
+            let itemData = tools.dataForKey(item, "flowBuild")
+            if (itemData == "") {
+              tools.setDataForKey(item, "BuildingId", null)
+              tools.setDataForKey(item, "FloorId", null)
+            } else {
+              let BuildingId = itemData.split("-")[0]
+              let FloorId = itemData.split("-")[1]
+              if (BuildingId && FloorId) {
+                tools.setDataForKey(item, "BuildingId", BuildingId)
+                tools.setDataForKey(item, "FloorId", FloorId)
+              } else if (BuildingId && !FloorId) {
+                tools.setDataForKey(item, "BuildingId", BuildingId)
+                tools.setDataForKey(item, "FloorId", null)
+              }
+            }
+          } else {
+            let itemData = tools.dataForKey(item, value)
+            tools.setDataForKey(item, value, itemData == "" ? null : itemData)
+          }
         })
         param.data.Content.push(item);
       })
@@ -436,7 +483,7 @@ export default {
                         item,
                         head.Path,
                         // child.error ? "表号功能号格式错误" : "表号功能号不存在"
-                        child.error ? child.value? "表号功能号格式错误" : "表号功能号不存在" : "暂未采集到实时数据"
+                        child.error ? child.value ? "表号功能号格式错误" : "表号功能号不存在" : "暂未采集到实时数据"
                       );
                     }
                   });
@@ -459,6 +506,9 @@ export default {
       let arr = tools.copyArr(list)
       let data = showTools.headerTextFilter(arr, "space", this.onlyRead, this.showType)
       data.unshift("是否关联平面图", "与空间相关联的设备");
+      if (this.showType == "all") {
+        data.splice(4, 0, "所属建筑楼层")
+      }
       return data;
     },
     /**
@@ -479,6 +529,17 @@ export default {
         renderer: this.facilityRender,
         readOnly: true
       });
+      if (this.showType == "all") {
+        data.splice(4, 0, {
+          data: "flowBuild",
+          renderer: tools.customDropdownRenderer,
+          editor: "chosen",
+          chosenOptions: {
+            data: this.buildFloorData
+          },
+          readOnly: this.onlyRead
+        })
+      }
       return data;
     },
     myRenderer(instance, td, row, col, prop, value, cellProperties) {

+ 18 - 13
src/views/ledger/spacelist/index.vue

@@ -12,8 +12,9 @@
     <!--------- 页面头部   -------------->
     <div class="saga-title">
       <div class="saga-build-mess">
-        <span style="padding-right:12px;color:#999999;">建筑楼层</span>
-        <el-cascader :options="options" v-model="buildFloorSelectd" :props="props" @change="changeCascader"></el-cascader>
+        <!-- <span style="padding-right:12px;color:#999999;">建筑楼层</span> -->
+        <floorCascader @change="changeCascader"></floorCascader>
+        <!-- <el-cascader :options="options" v-model="buildFloorSelectd" :props="props" @change="changeCascader"></el-cascader> -->
       </div>
       <div class="saga-build-tab">
         <el-radio-group v-model="isMyTab" @change="changeRadio" style="width: 136px;">
@@ -61,6 +62,7 @@ import {
   queryDictionaryHead, //数据中心-字典头部信息查询接口
 } from "@/api/scan/request";
 import tools from '@/utils/scan/tools'
+import floorCascader from "@/components/ledger/lib/floorCascader";
 import { mapGetters, mapActions } from "vuex";
 export default {
   components: {
@@ -70,7 +72,8 @@ export default {
     notRelated,
     graphy,
     handsontableMain,
-    facilityDialog
+    facilityDialog,
+    floorCascader,
   },
   computed: {
     ...mapGetters('layout', ['projectId', 'userId', 'secret'])
@@ -113,7 +116,7 @@ export default {
       },
       floorToMap: {}, //楼层及其对应的模型图
       FloorMap: "", //当前选中的楼层对象
-      buildFloorSelectd: [], //当前所选的建筑楼层
+      buildFloorSelectd: ['all'], //当前所选的建筑楼层
       childBackParam: {}
     };
   },
@@ -195,19 +198,21 @@ export default {
     },
     //修改所选建筑楼层
     changeCascader(val) {
-      // val[0]->建筑 val[1]->楼层
-      if (!this.floorToMap[val[1]].StructureInfo || !this.floorToMap[val[1]].StructureInfo.FloorMap) {
+      this.buildFloorSelectd = val;
+      // 如果选择的是全部或者未明确
+      if (val.indexOf('noKnow') > -1 || val.indexOf('all') > -1) {
         this.isMyTab = 2;
+      } else {
+        // 选择的是具体某个楼层
+        if (!this.floorToMap[val[1]].StructureInfo || !this.floorToMap[val[1]].StructureInfo.FloorMap) {
+          this.isMyTab = 2;
+        }
+        this.FloorMap = this.floorToMap[val[1]];
       }
-      this.FloorMap = this.floorToMap[val[1]];
       this.changeGraphyOrTable(this.isMyTab)
     },
     // 判断切换至图还是表
     changeGraphyOrTable(num) {
-      if (!this.buildFloorSelectd.length) {
-        this.$message("请选择楼层")
-        return false
-      }
       this.activeTabType = this.getItemForType()
       if (num == 2) {
         this.initMessage();
@@ -306,8 +311,8 @@ export default {
     margin-bottom: 10px;
     border: 1px solid #dfe6ec;
     .saga-build-mess {
-      position: absolute;
-      left: 10px;
+      // position: absolute;
+      // left: 10px;
       width: 500px;
       margin-left: 10px;
       i {