Browse Source

竖井台账关联业务空间

LXXXY 5 years ago
parent
commit
fb2e51b5d5

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

@@ -765,6 +765,36 @@ export function saveCenoteRelateSpace(param, success) {
     http.postJson(url, param, success)
     http.postJson(url, param, success)
 }
 }
 
 
+//竖井关联的业务空间的楼层
+export function shaftSpaceBuildingQuery(param, success) {
+    let url = `${baseUrl}/datacenter/shaft/shaft-zoneSpaceBaseTable-building`
+    http.getJson(url, param, success)
+}
+
+//竖井关联的业务空间
+export function shaftSpaceQuery(param, success) {
+    let url = `${baseUrl}/datacenter/shaft/shaft-zoneSpaceBaseTable?ShaftId=${param.ShaftId}`
+    http.postJson(url, param.data, success)
+}
+
+//获取未和当前竖井关联的业务空间
+export function shaftUnlinkSpaceQuery(param, success) {
+    let url = `${baseUrl}/datacenter/shaft/un-shaft-zoneSpaceBaseTable?ShaftId=${param.ShaftId}`
+    http.postJson(url, param.data, success)
+}
+
+//竖井下的业务空间,竖井一对多,不覆盖
+export function linkShaftSpace(param, success) {
+    let url = `${baseUrl}/datacenter/sh-contain-sp-base/link`
+    http.postJson(url, param, success)
+}
+
+//删除竖井下的业务空间,只针对一个对象
+export function spaceInShaftUnlink(param, success) {
+    let url = `${baseUrl}/datacenter/sh-contain-sp-base/unlink?type=${param.type}`
+    http.postJson(url, param.data, success)
+}
+
 //获取租户表格内容信息
 //获取租户表格内容信息
 export function getRentTableData(param, success) {
 export function getRentTableData(param, success) {
     let url = `${baseUrl}/datacenter/tenant/query-with-count`
     let url = `${baseUrl}/datacenter/tenant/query-with-count`
@@ -1479,6 +1509,11 @@ export function updateRelateInSpAndBuild(param, success) {
     let url = `${baseUrl}/datacenter/update-relationship/update-sp`;
     let url = `${baseUrl}/datacenter/update-relationship/update-sp`;
     http.postJson(url, param, success)
     http.postJson(url, param, success)
 }
 }
+//关系-----查询竖井关联的空间类型和名称
+export function shaftSpaceTypeQuery(param, success) {
+    let url = `${baseUrl}/datacenter/sh-contain-sp-base/space-type-query?shaftId=${param.shaftId}`;
+    http.postJson(url, param, success)
+}
 
 
 /**系统集成成果管理 */
 /**系统集成成果管理 */
 //系统集成统计条形图
 //系统集成统计条形图

+ 6 - 8
src/components/ledger/cenote/dialog/addSpaceDialog.vue

@@ -55,9 +55,9 @@
 
 
 <script>
 <script>
 import {
 import {
+  shaftUnlinkSpaceQuery,
   unSysZoneSpace,
   unSysZoneSpace,
-  linkSysSp,
-  queryDictionaryHead
+  linkShaftSpace
 } from "@/api/scan/request";
 } from "@/api/scan/request";
 import floorCascader from "@/components/ledger/lib/floorCascader";
 import floorCascader from "@/components/ledger/lib/floorCascader";
 import dictionaryCas from "@/components/config_point/dictionaryCascader";
 import dictionaryCas from "@/components/config_point/dictionaryCascader";
@@ -130,8 +130,7 @@ export default {
           PageNumber: this.page.pageNumber,
           PageNumber: this.page.pageNumber,
           PageSize: this.page.pageSize
           PageSize: this.page.pageSize
         },
         },
-        shaftId: this.params.ShaftID,
-        sysId: this.$route.query.SysID
+        ShaftId: this.$route.query.ShaftId
       };
       };
       if (this.Buildfloor[0] == "noKnow") {
       if (this.Buildfloor[0] == "noKnow") {
         params.data.Filters += `;buildingId isNull`;
         params.data.Filters += `;buildingId isNull`;
@@ -149,8 +148,7 @@ export default {
       if (this.keycode != "") {
       if (this.keycode != "") {
         params.data.Filters += `;RoomName contain '${this.keycode}' or RoomLocalName contain '${this.keycode}'`;
         params.data.Filters += `;RoomName contain '${this.keycode}' or RoomLocalName contain '${this.keycode}'`;
       }
       }
-
-      unSysZoneSpace(params, res => {
+      shaftUnlinkSpaceQuery(params, res => {
         this.tableData = res.Content;
         this.tableData = res.Content;
         this.page.total = res.Total;
         this.page.total = res.Total;
       });
       });
@@ -168,12 +166,12 @@ export default {
           Content: this.selections.map(item => {
           Content: this.selections.map(item => {
             return {
             return {
               SpaceID: item.RoomID,
               SpaceID: item.RoomID,
-              SysID: this.$route.query.SysID,
+              ShaftId: this.$route.query.ShaftId,
               ObjectType: item.ObjectType
               ObjectType: item.ObjectType
             };
             };
           })
           })
         };
         };
-        linkSysSp(params, res => {
+        linkShaftSpace(params, res => {
           this.$message.success("关联成功!");
           this.$message.success("关联成功!");
           this.$emit("refresh");
           this.$emit("refresh");
         });
         });

+ 63 - 0
src/components/ledger/lib/cenoteGraphy.vue

@@ -0,0 +1,63 @@
+<template>
+  <div id="cenoteGraphy" style="height:100%;width:100%;" ref="graphy">
+    <div v-if="!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-else v-loading="canvasLoading">
+      <canvas id="floorCanvas" :width="canvasWidth" :height="canvasHeight" ref="canvas" tabindex="0"></canvas>
+      <el-row class="canvas-actions-box">
+        <canvasFun @fit="fit"  @scale="scale" ref="canvasFun"></canvasFun>
+      </el-row>
+    </div>
+  </div>
+</template>
+
+<script>
+import canvasFun from "@/components/business_space/newGraphy/canvasFun";
+import { SColor, SPoint } from "@saga-web/draw/lib";
+import { DivideFloorScene, SpaceItem, ZoneItem } from "@saga-web/cad-engine/lib";
+import { FloorView } from "@saga-web/cad-engine/lib/FloorView";
+export default {
+  data() {
+    return {
+      canvasLoading:false,//加载canvas
+      FloorMap:false,//地图
+      canvasWidth: 800,
+      canvasHeight: 600,
+       view: null,
+      scene: null,
+    }
+  },
+  mounted() {
+    this.canvasWidth = this.$refs.graphy.offsetWidth;
+    this.canvasHeight = this.$refs.graphy.offsetHeight;
+  },
+  methods:{
+    // 适配底图到窗口
+    fit() {
+      this.view.fitSceneToView()
+    },
+    // 缩放
+    scale(val) {
+      if (!this.view) {
+        return;
+      }
+      let scale = this.view.scale;
+      this.view.scaleByPoint(val / scale, this.canvasWidth / 2, this.canvasHeight / 2);
+    },
+  }
+}
+</script>
+
+<style lang="less" scoped>
+ .canvas-actions-box {
+    position: absolute;
+    bottom: 20px;
+    left: 50%;
+    transform: translateX(-50%);
+    z-index: 999;
+  }
+</style>

+ 142 - 52
src/views/ledger/cenotelist/relatedSpace.vue

@@ -11,9 +11,13 @@
             <el-button v-show="isEdit" size="small" style="float:right">保存</el-button>
             <el-button v-show="isEdit" size="small" style="float:right">保存</el-button>
             <el-button v-show="isEdit" size="small" @click="isEdit = false" style="float:right">取消</el-button>
             <el-button v-show="isEdit" size="small" @click="isEdit = false" style="float:right">取消</el-button>
           </div>
           </div>
-          <addSpaceDialog :dialogVisible.sync="dialogVisible" ref="addSpaceDialog" @refresh="refresh" :params="cenoteObj" :spaceType="spaceType" :floorType="floorType"></addSpaceDialog>
+          <addSpaceDialog :dialogVisible.sync="dialogVisible" ref="addSpaceDialog" @refresh="refresh" :params="cenoteObj" :spaceType="spaceType"
+            :floorType="floorType"></addSpaceDialog>
         </div>
         </div>
-        <space-select @change="changeSpace"></space-select>
+        <el-select v-model="space" placeholder="请选择业务空间" @change="changeSpace" style="margin-left:15px;">
+          <el-option v-for="item in spaceList" :key="item.Code" :label="item.Name" :value="item.Code">
+          </el-option>
+        </el-select>
       </div>
       </div>
       <div class="saga-build-tab">
       <div class="saga-build-tab">
         <el-radio-group v-model="isMyTab" @change="changeRadio" style="width: 136px;">
         <el-radio-group v-model="isMyTab" @change="changeRadio" style="width: 136px;">
@@ -21,23 +25,29 @@
           <el-radio-button label="2" class="space-own-radio" style="width: 68px;">列表</el-radio-button>
           <el-radio-button label="2" class="space-own-radio" style="width: 68px;">列表</el-radio-button>
         </el-radio-group>
         </el-radio-group>
       </div>
       </div>
-      <div v-show="isMyTab == 1" class="data-item">
-        <el-select v-model="building" placeholder="请选择建筑" @change="changeBuilding">
+      <div v-if="isMyTab == 1" class="data-item">
+        <el-select v-model="building" placeholder="请选择建筑" @change="changeBuilding" v-loading="buildingLoading">
           <el-option v-for="item in buildingList" :key="item.value" :label="item.BuildLocalName" :value="item.BuildID"></el-option>
           <el-option v-for="item in buildingList" :key="item.value" :label="item.BuildLocalName" :value="item.BuildID"></el-option>
         </el-select>
         </el-select>
         <div style="height:calc(100% - 42px);margin:10px 0 0 0;width:100%;position:relative;">
         <div style="height:calc(100% - 42px);margin:10px 0 0 0;width:100%;position:relative;">
-          <el-scrollbar style="height:100%;width:149px;border-right:1px solid;margin:0px;">
-          <div class="floor" style="width:149px;height:100%;">
-            <span class="floor-item">楼 层</span>
-            <div v-if="building">
-            <span class="floor-item" @click="changeFloor(item.FloorID)" :class="{floorItemChoose:(item.FloorID == floor)}" v-for="item in buildingObj.Floor" :key="item.FloorID">{{ item.FloorLocalName }}</span>
+          <el-scrollbar style="height:100%;width:149px;border-right:1px solid;margin:0px;float:left;">
+            <div class="floor" style="width:149px;height:100%;">
+              <span class="floor-item">楼 层</span>
+              <div v-if="building" v-loading="buildingLoading">
+                <span class="floor-item" @click="changeFloor(item.FloorID)" :class="{floorItemChoose:(item.FloorID == floor)}"
+                  v-for="item in buildingObj.Floor" :key="item.FloorID">{{ item.FloorLocalName }}</span>
+              </div>
             </div>
             </div>
-          </div>
           </el-scrollbar>
           </el-scrollbar>
+          <div style="float:right;height:100%;width:calc(100% - 150px);">
+            <cenote-graphy></cenote-graphy>
+          </div>
         </div>
         </div>
+
       </div>
       </div>
-      <div v-show="isMyTab == 2" class="data-item">
-        <related-spaceList :space="space" ref="spacelist"></related-spaceList>
+      <div v-else class="data-item">
+        <related-spaceList :space="space" :buildingList="buildingList" :spaceType="spaceType" :floorType="floorType" ref="relatedSpacelist">
+        </related-spaceList>
       </div>
       </div>
     </div>
     </div>
   </div>
   </div>
@@ -47,20 +57,23 @@
 import spaceSelect from "@/components/ledger/lib/spaceSelect";
 import spaceSelect from "@/components/ledger/lib/spaceSelect";
 import relatedSpaceList from "@/views/ledger/cenotelist/relatedSpaceList";
 import relatedSpaceList from "@/views/ledger/cenotelist/relatedSpaceList";
 import addSpaceDialog from '@/components/ledger/cenote/dialog/addSpaceDialog';
 import addSpaceDialog from '@/components/ledger/cenote/dialog/addSpaceDialog';
-import { queryDictionaryHead, buildingQuery } from '@/api/scan/request'
+import { queryDictionaryHead, buildingQuery, shaftSpaceTypeQuery, shaftSpaceBuildingQuery } from '@/api/scan/request';
+import cenoteGraphy from '@/components/ledger/lib/cenoteGraphy'
 export default {
 export default {
   data() {
   data() {
     return {
     return {
       isMyTab: 1,//默认平面图
       isMyTab: 1,//默认平面图
       isEdit: false,//是否正在编辑
       isEdit: false,//是否正在编辑
       building: '',//当前建筑id
       building: '',//当前建筑id
-      buildingObj:{},//当前建筑obj
+      buildingObj: {},//当前建筑obj
       buildingList: [],
       buildingList: [],
       space: '',//当前业务空间
       space: '',//当前业务空间
+      spaceList: [],//空间list
       floor: '',//当前楼层
       floor: '',//当前楼层
       dialogVisible: false,//添加空间弹窗
       dialogVisible: false,//添加空间弹窗
       spaceType: {},//空间种类
       spaceType: {},//空间种类
       floorType: {},//子组件楼层信息
       floorType: {},//子组件楼层信息
+      buildingLoading:false,//左侧列表加载
     }
     }
   },
   },
   computed: {
   computed: {
@@ -74,36 +87,105 @@ export default {
   components: {
   components: {
     spaceSelect,
     spaceSelect,
     relatedSpaceList,
     relatedSpaceList,
-    addSpaceDialog
+    addSpaceDialog,
+    cenoteGraphy
   },
   },
   created() {
   created() {
     this.load();
     this.load();
-    let pa = {
-      Filters: `parentId='Space'`
-    }
-    queryDictionaryHead(pa, res => {
-      res.Content.map(t => {
-        if (t.Name != "元空间") {
-          this.spaceType[t.Code] = t.Name;
+    this.getSpaceData();
+  },
+  methods: {
+    //获取空间信息
+    getSpaceData() {
+      if (this.cenoteObj.onlyRead) {
+        let pa = {
+          shaftId: this.$route.query.ShaftId
         }
         }
-      })
-    });
-
-    let param = {
-      Cascade: [
-        { Name: "floor" }
-      ]
-    };
-    buildingQuery(param, res => {
-      this.buildingList = res.Content;
-      if(this.buildingList.length > 0){
+        shaftSpaceTypeQuery(pa, res => {
+          this.spaceList = res.Content.map(item => {
+            return { Code: item.ObjectType, Name: item.ObjectTypeName };
+          });
+          this.showDefaultSpace();
+        });
+      }
+      else {
+        let pa = {
+          Filters: `parentId='Space'`
+        }
+        queryDictionaryHead(pa, res => {
+          this.spaceList = res.Content.map(t => {
+            if (t.Name != "元空间") {
+              this.spaceType[t.Code] = t.Name;
+            }
+            return t;
+          });
+          this.showDefaultSpace();
+        });
+      }
+    },
+    //默认显示第一个空间
+    showDefaultSpace() {
+      if (this.spaceList.length) {
+        this.space = this.spaceList[0].Code;
+      }
+      //处理空间类型
+      this.spaceList.map(item => {
+        if (item.Name != "元空间") {
+          this.spaceType[item.Code] = item.Name;
+        }
+      });
+      //加载楼层信息
+      this.loadBuildingData();
+    },
+    //获取楼层信息
+    loadBuildingData() {
+      if (this.cenoteObj.onlyRead) {
+        let param = {
+          ShaftId: this.$route.query.ShaftId,
+          ObjectType: this.space
+        };
+        this.buildingLoading = true;
+        shaftSpaceBuildingQuery(param, res => {
+          this.buildingLoading = false;
+          this.buildingList = res.Content;
+          this.buildingList = this.buildingList.map(item => {
+            item.Floor = item.FloorList;
+            item.BuildID = item.BuildingId;
+            item.BuildLocalName = item.BuildingName;
+            if (item.Floor) {
+              item.Floor = item.Floor.map(item => {
+                item.FloorID = item.FloorId;
+                item.FloorLocalName = item.FloorName;
+                return item;
+              })
+            }
+            return item;
+          })
+          this.handleBuildingData();
+        });
+      }
+      else {
+        let param = {
+          Cascade: [
+            { Name: "floor" }
+          ]
+        };
+        buildingQuery(param, res => {
+          this.buildingList = res.Content;
+          this.handleBuildingData();
+        });
+      }
+    },
+    //处理建筑楼层数据
+    handleBuildingData() {
+      if (this.buildingList.length) {
         this.building = this.buildingList[0].BuildID;
         this.building = this.buildingList[0].BuildID;
         this.buildingObj = this.buildingList[0];
         this.buildingObj = this.buildingList[0];
-        if(this.buildingObj.Floor.length > 0){
+        if (this.buildingObj.Floor && this.buildingObj.Floor.length) {
           this.floor = this.buildingObj.Floor[0].FloorID;
           this.floor = this.buildingObj.Floor[0].FloorID;
         }
         }
       }
       }
-      res.Content.map(item => {
+      this.buildingList.map(item => {
         if (item.BuildID && item.BuildLocalName) {
         if (item.BuildID && item.BuildLocalName) {
           this.floorType[item.BuildID] = item.BuildLocalName;
           this.floorType[item.BuildID] = item.BuildLocalName;
           if (item.Floor instanceof Array) {
           if (item.Floor instanceof Array) {
@@ -115,39 +197,46 @@ export default {
           }
           }
         }
         }
       });
       });
-    });
-  },
-  methods: {
+    },
     //更改业务空间类型
     //更改业务空间类型
     changeSpace(val) {
     changeSpace(val) {
       this.space = val;
       this.space = val;
-      this.load();
+      this.loadBuildingData();
     },
     },
     //加载数据
     //加载数据
     load() {
     load() {
-      if (this.isMyTab == 1) {
-
-      }
-      else {
-        this.$refs.spacelist.getSpaceList();
-      }
+      
     },
     },
     //更换建筑
     //更换建筑
-    changeBuilding(bid){
+    changeBuilding(bid) {
       this.buildingList.map(item => {
       this.buildingList.map(item => {
-        if(item.BuildID == bid){
+        if (item.BuildID == bid) {
           this.buildingObj = item;
           this.buildingObj = item;
+          if(item.Floor && item.Floor.length){
+            this.floor = item.Floor[0].FloorID
+          }
         }
         }
       })
       })
       this.load();
       this.load();
     },
     },
     //更换楼层
     //更换楼层
-    changeFloor(fid){
+    changeFloor(fid) {
       this.floor = fid;
       this.floor = fid;
       this.load();
       this.load();
     },
     },
     //更换列表或平面图
     //更换列表或平面图
     changeRadio(val) {
     changeRadio(val) {
+      if (val == 2) {
+        this.spaceList.unshift({ Code: '', Name: '全部' });
+      }
+      if (val == 1) {
+        if (this.spaceList.length > 0) {
+          this.spaceList.shift();
+        }
+      }
+      if(this.spaceList.length){
+        this.changeSpace(this.spaceList[0].Code);
+      }
       this.isMyTab = val;
       this.isMyTab = val;
       this.load();
       this.load();
     },
     },
@@ -159,7 +248,8 @@ export default {
     },
     },
     //更新
     //更新
     refresh() {
     refresh() {
-      this.load();
+      this.$refs.relatedSpacelist.getSpaceList();
+      this.dialogVisible = false;
     }
     }
   },
   },
   watch: {
   watch: {
@@ -252,9 +342,9 @@ export default {
   cursor: pointer;
   cursor: pointer;
 }
 }
 .floorItemChoose {
 .floorItemChoose {
-  background: rgba(0,0,0,0.2);
+  background: rgba(0, 0, 0, 0.2);
 }
 }
 /deep/ .el-scrollbar__wrap {
 /deep/ .el-scrollbar__wrap {
-    overflow-x: hidden;
-  }
+  overflow-x: hidden;
+}
 </style>
 </style>

+ 137 - 13
src/views/ledger/cenotelist/relatedSpaceList.vue

@@ -4,20 +4,26 @@
       <el-input v-model="keyword" placeholder="请输入关键词" @keyup.enter.native="getSpaceList" style="width:240px;margin:0 0 0 10px;">
       <el-input v-model="keyword" placeholder="请输入关键词" @keyup.enter.native="getSpaceList" style="width:240px;margin:0 0 0 10px;">
         <i slot="suffix" class="el-input__icon el-icon-search" @click="getSpaceList"></i>
         <i slot="suffix" class="el-input__icon el-icon-search" @click="getSpaceList"></i>
       </el-input>
       </el-input>
-      <floorCascader @change="changeCascader"></floorCascader>
+      <el-cascader v-model="Buildfloor" :options="buildingData" @change="handleChange"></el-cascader>
     </div>
     </div>
     <div class="table-area" style="height:calc(100% - 52px)">
     <div class="table-area" style="height:calc(100% - 52px)">
       <el-scrollbar style="height:calc(100% - 40px);">
       <el-scrollbar style="height:calc(100% - 40px);">
         <el-table :data="tableData" style="width: 100%;height:100%;" v-loading="loading" :header-cell-style="headerStyle">
         <el-table :data="tableData" style="width: 100%;height:100%;" v-loading="loading" :header-cell-style="headerStyle">
-          <el-table-column prop='MeterFunc' label='业务空间建筑楼层' show-overflow-tooltip min-width="200" header-align='center' align="center">
+          <el-table-column label='业务空间建筑楼层' show-overflow-tooltip min-width="200" header-align='center' align="center">
+            <template slot-scope="scope">
+              {{ scope.row.BuildingId && floorType[scope.row.BuildingId]? ((floorType[scope.row.BuildingId] || '') + (scope.row.FloorId && floorType[scope.row.FloorId] ? (' - ' + floorType[scope.row.FloorId] || '') : '')) : ''}}
+            </template>
           </el-table-column>
           </el-table-column>
-          <el-table-column prop='MeterFunc' label='业务空间类型' show-overflow-tooltip min-width="200" header-align='center' align="center">
+          <el-table-column label='业务空间类型' show-overflow-tooltip min-width="200" header-align='center' align="center">
+            <template slot-scope="scope">
+              {{spaceType[scope.row.ObjectType] || ''}}
+            </template>
           </el-table-column>
           </el-table-column>
-          <el-table-column prop='MeterFunc' label='业务空间本地名称' show-overflow-tooltip min-width="200" header-align='center' align="center">
+          <el-table-column prop='RoomLocalName' label='业务空间本地名称' show-overflow-tooltip min-width="200" header-align='center' align="center">
           </el-table-column>
           </el-table-column>
-          <el-table-column prop='MeterFunc' label='业务空间本地编码' show-overflow-tooltip min-width="200" header-align='center' align="center">
+          <el-table-column prop='RoomLocalID' label='业务空间本地编码' show-overflow-tooltip min-width="200" header-align='center' align="center">
           </el-table-column>
           </el-table-column>
-          <el-table-column prop='' label='操作' show-overflow-tooltip min-width="90" header-align='center' align='center'>
+          <el-table-column v-if="!$route.query.onlyRead" prop='' label='操作' show-overflow-tooltip min-width="90" header-align='center' align='center'>
             <template slot-scope="scope">
             <template slot-scope="scope">
               <el-button size="mini" @click="handleDelete(scope.$index, scope.row)" type="danger" plain icon="el-icon-delete"></el-button>
               <el-button size="mini" @click="handleDelete(scope.$index, scope.row)" type="danger" plain icon="el-icon-delete"></el-button>
             </template>
             </template>
@@ -33,7 +39,7 @@
 </template>
 </template>
 
 
 <script>
 <script>
-import floorCascader from "@/components/ledger/lib/floorCascader";
+import { shaftSpaceQuery,spaceInShaftUnlink } from "@/api/scan/request";
 export default {
 export default {
   data() {
   data() {
     return {
     return {
@@ -51,21 +57,139 @@ export default {
       options: [],//楼层
       options: [],//楼层
       tableData: [],//表格数据
       tableData: [],//表格数据
       loading: false,//加载
       loading: false,//加载
+      Buildfloor: ["all"],//当前选中的楼层
+      page: {
+        pageSize: 50,
+        pageSizes: [10, 20, 50, 100],
+        pageNumber: 1,
+        total: 0
+      },
     }
     }
   },
   },
-  components:{
-    floorCascader
+  components: {
   },
   },
   methods: {
   methods: {
+    //空间列表
     getSpaceList() {
     getSpaceList() {
-      console.log(111)
+      this.loading = true;
+      let params = {
+        data: {
+          Filters: "not RoomID isNull",
+          Orders: "RoomLocalName desc",
+          PageNumber: this.page.pageNumber,
+          PageSize: this.page.pageSize
+        },
+        ShaftId: this.$route.query.ShaftId
+      };
+      if (this.Buildfloor[0] == "noKnow") {
+        params.data.Filters += `;buildingId isNull`;
+      } else if (this.Buildfloor[0] && this.Buildfloor[0] != "all") {
+        params.data.Filters += `;buildingId='${this.Buildfloor[0]}'`;
+      }
+      if (this.Buildfloor[1] == "noKnow") {
+        params.data.Filters += `;floorId isNull`;
+      } else if (this.Buildfloor[1] && this.Buildfloor[1] != "all") {
+        params.data.Filters += `;floorId='${this.Buildfloor[1]}'`;
+      }
+      if (this.space) {
+        params.data.Filters += `;ObjectType='${this.space}'`;
+      }
+      if (this.keyword) {
+        params.data.Filters += `;RoomName contain '${this.keyword}' or RoomLocalName contain '${this.keyword}'`;
+      }
+      shaftSpaceQuery(params, res => {
+        this.loading = false;
+        this.tableData = res.Content
+      })
+    },
+    //切换楼层
+    handleChange() {
+      this.getSpaceList();
+    },
+    // 删除关系
+    handleDelete(index, row) {
+      this.$confirm("确认删除该关系?", "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning"
+      })
+        .then(() => {
+          let params = {
+            data: [
+              {
+                ShaftId: this.$route.query.ShaftId,
+                SpaceId: row.RoomID
+              }
+            ],
+            type: row.ObjectType
+          };
+          this.deleteSpInSh(params);
+        })
+        .catch(() => {
+          this.$message("取消删除");
+        });
+    },
+    // 删除系统所在竖井关系
+    deleteSpInSh(params) {
+      spaceInShaftUnlink(params, res => {
+        this.$message.success("删除成功");
+        this.getSpaceList();
+      });
     },
     },
-    changeCascader(val){
-      console.log(val);
-    }
   },
   },
   props: {
   props: {
     space: '',//空间id
     space: '',//空间id
+    buildingList: {//建筑楼层
+      Type: Array,
+      default: () => []
+    },
+    spaceType: Object,
+    floorType: Object
+  },
+  computed: {
+    buildingData() {
+      let bL = this.buildingList.concat();
+      bL.map(item => {
+        item.value = item.BuildID;
+        item.label = item.BuildLocalName;
+        item.children = [];
+        if (item.Floor instanceof Array) {
+          item.children = item.Floor.map(fitem => {
+            fitem.value = fitem.FloorID
+            fitem.label = fitem.FloorLocalName
+            return fitem
+          })
+        }
+        if (!this.$route.query.onlyRead) {
+          item.children.unshift({
+            value: "noKnow",
+            label: "未明确建筑"
+          })
+        }
+        item.children.unshift({
+          value: "all",
+          label: "全部"
+        })
+      });
+      if (!this.$route.query.onlyRead) {
+        bL.unshift({
+          value: "all",
+          label: "全部"
+        }, {
+          value: "noKnow",
+          label: "未明确建筑"
+        });
+      }
+      return bL;
+    }
+  },
+  watch: {
+    space: {
+      handler() {
+        this.getSpaceList();
+      },
+      immediate: true
+    }
   }
   }
 }
 }
 </script>
 </script>