Bladeren bron

批量关联资产开发

zhangyu 5 jaren geleden
bovenliggende
commit
ee04ca7311
2 gewijzigde bestanden met toevoegingen van 82 en 8 verwijderingen
  1. 9 1
      src/api/scan/config.js
  2. 73 7
      src/components/ledger/lib/linkassets.vue

+ 9 - 1
src/api/scan/config.js

@@ -9,5 +9,13 @@ export const zone = {
   PowerSupplyZone: 'zone-power-supply', //供电分区
   LightingZone: 'zone-lighting', //照明分区
   AirConditioningZone: 'metaspace', //空调分区
-  TenantZone: 'zone-tenant' //租赁分区
+  TenantZone: 'zone-tenant', //租赁分区
+  HeatingZone:'zone-heating', //采暖分区
+  CleanZone:'zone-clean', //洁净分区
+  DomesticWaterSupplyZone:'zone-domestic-water', //生活给水分区
+  NetworkZone:'zone-network', //网络分区
+  FunctionZone:'zone-function', //功能分区
+  FireZone:'zone-fire', //防火分区
+  SecurityZone:'zone-security', //安防分区
+  Ispace:'ispace', //元空间
 }

+ 73 - 7
src/components/ledger/lib/linkassets.vue

@@ -10,7 +10,7 @@
       <span class="condition-title">建筑楼层:</span>
       <el-cascader :options="bfoptions" v-model="buildFloor" filterable size="small" @change="handleChangeBf" style="width:250px;"></el-cascader>
     </el-row>
-    <el-row style="margin-top:30px;">
+    <el-row style="margin-top:30px;" v-show="spaceShow">
       <span class="condition-title">分区类型空间实例:</span>
       <el-cascader v-model="space" filterable clearable collapse-tags size="small" :options="spaceList" :props="props" @change="handleChangeSpace" style="width:250px;"></el-cascader>
     </el-row>
@@ -22,7 +22,7 @@
 </template>
 <script>
 
-import { floorQuery, buildingQuery } from '@/api/scan/request'
+import { floorQuery, buildingQuery, queryDictionaryHead, queryZone } from '@/api/scan/request'
 
 import { mapGetters } from "vuex"
 export default {
@@ -47,17 +47,61 @@ export default {
       deviceType: '', //选择的设备类型
       spaceList: [], //空间实例列表
       space: [], //选择的空间实例
-      props: { multiple: true }, //多选级联配置
+      spaceShow: false,
+      props: { 
+        multiple: true,
+        lazy: true,
+        lazyLoad (node, resolve) {
+          if(node.value) {
+            let zone = node.value,
+                level = node.level,
+                nodes = []
+            function recursionGetData(pageNum, zone) {
+              pageNum = pageNum ? pageNum : 1
+              let params = {
+                zone: node.value,
+                data: {
+                  Orders: "CreateTime desc, RoomID asc",
+                  PageNumber: pageNum,
+                  PageSize: 1000,
+                  Projection: ["RoomID", "RoomName", "RoomLocalName", "CreateTime"]
+                },
+              }
+              if(this.spaceShow) {
+                if(this.buildFloor.length == 2 && this.buildFloor[1] != 'all') {
+                  params.data.Filters = `buildingId='${this.buildFloor[0]}';floorId='${this.buildFloor[1]}'`
+                } else {
+                  params.data.Filters = `buildingId='${this.buildFloor[0]}'`
+                }
+              }
+              queryZone(params, res => {
+                nodes = nodes.concat(res.Content.map(item => ({
+                  value: item.RoomID,
+                  label: item.RoomLocalName?item.RoomLocalName:item.RoomName,
+                  leaf: level >= 1
+                })))
+                if (res.Total / (res.PageSize * res.PageNumber) > 1) {
+                  recursionGetData(res.PageNumber + 1, zone)
+                } else {
+                  resolve(nodes);
+                }
+              })
+            }
+            recursionGetData(1, zone)
+          }
+        }
+      }, //多选级联配置
 
     };
   },
   created() {
-    this.getData() //获取建筑楼层数据
+    this.getBuildFloorData() //获取建筑楼层数据
+    this.getSpaceData() //获取分区类型数据
   },
   mounted() { },
   methods: {
     //获取建筑楼层数据
-    getData() {
+    getBuildFloorData() {
       let data, buildParams = {
         PageNumber: 1,
         PageSize: 1000,
@@ -130,13 +174,35 @@ export default {
         this.bfoptions = data
       })
     },
+    //获取空间分区数据
+    getSpaceData(){
+      let params = {
+        Filters: "parentId = 'Space'",
+        PageNumber: 1,
+        PageSize: 1000,
+        Projection: [ "Code", "Name" ]
+      }
+      queryDictionaryHead(params, res => {
+        this.spaceList = res.Content.map((item) => {
+          return {
+            label: item.Name,
+            value: item.Code
+          }
+        })
+      })
+    },
     // 修改设备类型
     handleChangeDevice() {
 
     },
     // 修改建筑楼层
-    handleChangeBf() {
-
+    handleChangeBf(val) {
+      let lastVal = val.slice(-1)[0]
+      if(!lastVal || lastVal == 'noKnow' || val[0] == 'all') {
+        this.spaceShow = false
+      } else {
+        this.spaceShow = true
+      }
     },
     // 修改空间实例
     handleChangeSpace() {