فهرست منبع

数据质量报告、模型质量报告

yangjunjing 5 سال پیش
والد
کامیت
d9d8d5505b

+ 20 - 0
src/api/model/report.js

@@ -0,0 +1,20 @@
+import httputils from '@/api/scan/httpUtil'
+import { Message } from 'element-ui';
+import axios from 'axios'
+const baseUrl = '/modelapi';
+
+export function exportReport(params, success) {
+    httputils.postJson(`${baseUrl}/upload-json-zip/upload`, params, success)
+}
+
+export function queryFloorList(params, success) {
+    return httputils.postJson(`${baseUrl}/model-floor/query-list`, params, success)
+}
+
+export function queryModel(params, success) {
+    return httputils.postJson(`${baseUrl}/model-folder/query`, params, success)
+}
+
+export function queryReportList(params, success) {
+    return httputils.postJson(`${baseUrl}/report/list/non-blocking`, params, success)
+}

+ 1 - 1
src/api/scan/request.js

@@ -836,7 +836,7 @@ export function queryZoneCount(param, success) {
     http.postJson(url, param, success)
 }
 
-//查询各分区占比
+//业务空间-各分区占比
 export function queryPartitionRatio(param, success) {
     let url = `${baseUrl}/datacenter/statistics/sp-objecttype-count`
     http.postJson(url, param, success)

+ 1 - 1
src/components/ledger/report/datafan.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="saga-fill">
     <div class="mess-view">
-      <el-tooltip class="item" effect="dark" content="Bottom Left 提示文字" placement="bottom-start">
+      <el-tooltip class="item" effect="dark" :content="renderData.tips" placement="bottom-start">
         <i class="el-icon-info"><span>{{renderData.title}}</span></i>
       </el-tooltip>
     </div>

+ 1 - 2
src/components/ledger/report/dataorigin.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="saga-fill">
     <div class="mess-view">
-      <el-tooltip class="item" effect="dark" content="Bottom Left 提示文字" placement="bottom-start">
+      <el-tooltip class="item" effect="dark" :content="renderData.tips" placement="bottom-start">
         <i class="el-icon-info"><span>{{renderData.title}}</span></i>
       </el-tooltip>
     </div>
@@ -68,7 +68,6 @@ export default {
     renderData: {
       deep: true,
       handler: function () {
-        console.log(3)
         this.changeData()
       }
     }

+ 147 - 110
src/views/ledger/report/index.vue

@@ -101,11 +101,9 @@
       <div class="data shaft">
         <span class="contain-title">竖井<i>{{`(${shaftCount?shaftCount:'0'})`}}</i></span>
         <div class="data-show" v-loading="isLoading" v-if="shaft.length">
-          <div class="show-content">
-            <datafan :id="'origin' + shaft" :renderData="shaft[0]"></datafan>
-          </div>
-          <div class="show-content">
-            <data-origin :id="'origin' + shaft" :renderData="shaft[1]"></data-origin>
+          <div class="show-content" v-for="(item,index) in shaft" :key="index">
+            <datafan :id="'origin' + shaft" :renderData="item" v-if="!item.needCountT"></datafan>
+            <data-origin :id="'origin' + item + index" :renderData="item" v-else></data-origin>
           </div>
         </div>
         <div v-if="!shaft.length" class="center" style="height: 60%;transform: translateY(30%);">
@@ -120,6 +118,7 @@
 <script>
 import { mapGetters } from "vuex";
 import {
+  getCenoteType,
   queryLederDelObject,
   notSyncRelationData,
   postRelationInforAtpism,
@@ -144,17 +143,17 @@ import { queryDataSourceCount, synchronizeProj } from "@/fetch/point_http";
 export default {
   data() {
     return {
-      lederDelObjectCount: null,
-      notSyncDataCount: null,
-      postRelationInforCount: null,
-      equipCount: null,
-      equipment: [],
-      assetsCount: null,
-      assets: [],
-      parts: [],
-      partsCount: null,
-      zoneSpaceCount: null,
-      zoneType: [
+      lederDelObjectCount: null,// 台账中待删除的对象
+      notSyncDataCount: null,// 不能同步到物理世界的关系数据
+      postRelationInforCount: null,// 岗位和关联的资产信息点值不一致
+      equipCount: null,// 设备总数
+      equipment: [],// 设备数据
+      assetsCount: null,// 资产总数
+      assets: [],// 资产数据
+      parts: [],// 部件数据
+      partsCount: null,// 部件总数
+      zoneSpaceCount: null,// 业务空间总数
+      zoneType: [// 分区类型
         {
           "Code": "GeneralZone",
           "Name": "默认分区",
@@ -216,19 +215,20 @@ export default {
           "Code": 'FunctionZone'
         }
       ],
-      partProtion: [],
-      defaultPart: [],
-      funtionType: [],
-      business: [],
-      systemCount: null,
-      system: [],
-      rentantCount: null,
-      shaftCount: null,
-      tenant: [],
-      shaft: [],
-      shaftPartProtion: [],
+      partProtion: [],// 业务空间-各分区占比数据
+      defaultPart: [],// 业务空间-默认分区功能类型占比数据
+      business: [],// 业务空间数据
+      systemCount: null,// 系统总数
+      system: [],// 系统数据
+      rentantCount: null,// 租户总数
+      tenant: [],// 租户数据
+      shaftCount: null,// 竖井总数
+      shaft: [],// 竖井数据
+      ShaftFunType: null,// 竖井功能类型
+      shaftPartProtion: [],// 竖井-按功能类型占比数据
       params: null,
-      isLoading: false
+      isLoading: false,
+      color: ["#3485d6", "#a384fc", "#4caf50", "#ff6316", "#fd8bbe", "#03a9f3", "#ea615b"]
     }
   },
   components: {
@@ -247,38 +247,104 @@ export default {
     this.getPartsCount();
     this.getSystemCount();
     this.getTenantCount();
-    this.getShaftCount();
+    // this.getShaftCount();
+    this.getShaftFunType();
   },
   computed: {
     ...mapGetters('layout', ['projectId'])
   },
   methods: {
-    getStatisticsCount() {
-      // 获取顶部四个统计的数据
+    zoneTypeConversion(item) {// 分区类型转换
+      this.zoneType.map(it => {
+        if (item.Name === it.Code) {
+          item.Name = it.Name;
+        }
+      })
+    },
+    functionTypeTranstion(item, type) {// 默认分区功能类型转换
+      type.map(it => {
+        if (item.Name === it.Code) {
+          item.Name = it.Name;
+          this.defaultPart.push({
+            name: item.Name,
+            value: item.Count
+          });
+          // this.defaultPart.map((item, index) => {
+          //   item.itemStyle = {color:this.color}
+          // })
+        }
+        if (it.Content) {
+          this.functionTypeTranstion(item, it.Content)
+        }
+      })
+    },
+    getFunctionType() {// 获取默认分区功能类型
+      let params = {
+        ProjectId: this.projectId,
+        type: "GeneralZone",
+        data: {
+          Filters: "InfoPointCode='RoomFuncType'",
+          Projection: ["DataSource", "InfoPointCode"]
+        }
+      }
+      getDataDictionary(params, res => {
+        this.functionType = JSON.parse(res.Content[0].DataSource)
+        this.getZoneSpaceCount();
+      })
+    },
+    toPercent(point) {// 小数转换成百分比
+      if (point == 0) {
+        return 0;
+      }
+      var str = Number(point * 100).toFixed(2);
+      str += "%";
+      return str;
+    },
+    getShaftFunType() {// 获取数据功能类型
+      getCenoteType(this.param, res => {
+        this.ShaftFunType = res.Content;
+        this.getShaftCount();
+      })
+    },
+    shaftFunTypeTranstion(item) {// 竖井功能类型转换
+      this.ShaftFunType.map((it, index) => {
+        if (item.Name === it.Id) {
+          item.Name = it.Name;
+        }
+      })
+    },
+
+    getStatisticsCount() {// 获取顶部统计数据
       let params = {
         ProjectId: this.projectId,
         Filters: "taskState = -1"
       }
+
+      // 台账中待删除的对象
       queryLederDelObject(params, res => {
         this.lederDelObjectCount = res.Count;
       })
 
+      // 不能同步到物理世界的对象
+
+      // 不能同步到物理世界的关系数据
       notSyncRelationData(this.params, res => {
         this.notSyncDataCount = res.Count;
       })
 
+      // 岗位和关联的资产信息点值不一致
       postRelationInforAtpism(this.params, res => {
         this.postRelationInforCount = res.Count;
       })
     },
-    getEquipCount() {
-      // 获取设备总数
+    getEquipCount() {// 获取设备总数
       countEquip(this.params, res => {
         this.equipCount = res.Count;
         this.getEquipOtherCount();
       })
     },
-    getEquipOtherCount() {
+    getEquipOtherCount() {// 获取设备数据
+      // 未关联资产
       let param = {
         ProjectId: this.projectId,
         Filters: "PropertyId isNull"
@@ -286,7 +352,7 @@ export default {
       countEquip(param, res => {
         this.equipment.push({
           title: '未关联资产',
-          tips: '',
+          tips: '设备未关联资产数量',
           contentValueO: '未关联',
           contentValueT: '已关联',
           text: '',
@@ -296,48 +362,53 @@ export default {
         })
       })
 
+      // 现场验证状态占比
       let par = {
         ProjectId: this.projectId,
         Filters: "taskState = 0 or taskState = 1"
       }
       countEquip(par, res => {
+        let text = this.toPercent(res.Count / this.equipCount)
         this.equipment.push({
-          title: '与模型对应占比',
-          tips: '',
-          contentValueO: '验证',
-          contentValueT: '验证',
+          title: '现场验证状态占比',
+          tips: '设备状态为未找到、已找到的数量与设备总数占比',
+          contentValueO: '验证',
+          contentValueT: '验证',
           text: '',
           needCountO: res.Count,
           needCountT: this.equipCount - res.Count,
-          text: `${res.Count}/${this.equipCount}`
+          text: text
         })
+        this.getEquipBIMIDCount();
       })
-
+    },
+    getEquipBIMIDCount() {// 设备-与模型对应占比
       let pa = {
         ProjectId: this.projectId,
         Filters: "not BimID isNull"
       }
       countEquip(pa, res => {
+        let text = this.toPercent(res.Count / this.equipCount)
         this.equipment.push({
-          title: '现场验证状态占比',
-          tips: '',
-          contentValueO: '已验证',
-          contentValueT: '未验证',
+          title: '与模型对应占比',
+          tips: '"BIM模型中编码"有值的设备数量与设备总数占比',
+          contentValueO: '有BIMID',
+          contentValueT: '无BIMID',
           text: '',
           needCountO: res.Count,
           needCountT: this.equipCount - res.Count,
-          text: `${res.Count}/${this.equipCount}`
+          text: text
         })
         this.isLoading = false;
       })
     },
-    getAssetsCount() {
-      // 获取资产数据
+    getAssetsCount() {// 获取资产数据
       countProperty(this.params, res => {
         // 获取资产总数
         this.assetsCount = res.Count;
       })
 
+      // 未关联资产
       let param = {
         ProjectId: this.projectId,
         Filters: " EquipmentId isnull"
@@ -345,7 +416,7 @@ export default {
       countProperty(param, res => {
         this.assets.push({
           title: '未关联资产',
-          tips: '',
+          tips: '资产未关联设备数量',
           contentValueO: '未关联',
           contentValueT: '已关联',
           text: `总数${this.assetsCount}`,
@@ -354,6 +425,7 @@ export default {
         })
       })
 
+      // 现场验证状态占比
       let par = {
         ProjectId: this.projectId,
         Filters: " taskState = 0 or taskState = 1"
@@ -363,7 +435,7 @@ export default {
         text = this.toPercent(text);
         this.assets.push({
           title: '现场验证状态占比',
-          tips: '',
+          tips: '资产状态为未找到、已找到的数量与资产总数占比',
           contentValueO: '已验证',
           contentValueT: '未验证',
           text: text,
@@ -372,6 +444,7 @@ export default {
         })
       })
 
+      // 有无坐标占比
       let pa = {
         ProjectId: this.projectId,
         Filters: " not BIMLocation isnull"
@@ -381,7 +454,7 @@ export default {
         text = this.toPercent(text);
         this.assets.push({
           title: '有无坐标占比',
-          tips: '',
+          tips: '有坐标的资产数量百分比',
           contentValueO: '有坐标',
           contentValueT: '无坐标',
           text: text,
@@ -390,41 +463,22 @@ export default {
         })
       })
     },
-    getPartsCount() {
+    getPartsCount() {// 获取部件数据
       queryPart(this.params, res => {
         this.partsCount = res.Count;
       })
     },
-    PartsTypeConversion(item) {
-      this.zoneType.map(it => {
-        if (item.Name === it.Code) {
-          item.Name = it.Name;
-        }
-      })
-    },
-    getFunctionType() {
-      // 获取默认功能分区类型
-      let params = {
-        ProjectId: this.projectId,
-        type: "GeneralZone",
-        data: {
-          Filters: "InfoPointCode='RoomFuncType'",
-          Projection: ["DataSource", "InfoPointCode"]
-        }
-      }
-      getDataDictionary(params, res => {
-        this.functionType = JSON.parse(res.Content[0].DataSource)
-        this.getZoneSpaceCount();
-      })
-    },
-    getZoneSpaceCount() {
+    getZoneSpaceCount() {// 获取业务空间数据
+
+      // 获取业务空间总数
       queryZoneCount(this.params, res => {
         this.zoneSpaceCount = res.Count;
       })
 
+      // 获取业务空间的各分区占比
       queryPartitionRatio(this.params, res => {
         res.Content.map(item => {
-          this.PartsTypeConversion(item);
+          this.zoneTypeConversion(item);
           this.partProtion.push({
             name: item.Name,
             value: item.Count
@@ -432,42 +486,31 @@ export default {
         })
         this.business.push({
           title: '各分区占比',
-          tips: '',
+          tips: '各类型分区实例数量与实例总数占比',
           needCountO: this.partProtion,
         })
       })
 
+      // 获取业务空间默认分区功能类型占比
       queryDefaultFunTypes(this.params, res => {
         res.Content.map(item => {
           this.functionTypeTranstion(item, this.functionType);
         })
         this.business.push({
           title: '默认分区功能类型占比',
-          tips: '',
-          needCountO: this.funtionType,
+          tips: '默认分区实例的功能区类型占比',
+          needCountO: this.defaultPart,
         })
       })
     },
-    functionTypeTranstion(item, type) {
-      type.map(it => {
-        if (item.Name === it.Code) {
-          item.Name = it.Name;
-          this.defaultPart.push({
-            name: item.Name,
-            value: item.Count
-          });
-        }
-        if (it.Content) {
-          this.functionTypeTranstion(item, it.Content)
-        }
-      })
-    },
-    getSystemCount() {
+    getSystemCount() {// 获取系统数据
       countGeneralSys(this.params, res => {
         this.systemCount = res.Count;
       })
     },
-    getTenantCount() {
+    getTenantCount() {// 获取租户数据
+
+      // 获取租户总数
       queryRentCount(this.params, res => {
         this.rentantCount = res.Count;
       })
@@ -478,7 +521,7 @@ export default {
         text = this.toPercent(text);
         this.tenant.push({
           title: '关联业务空间完成度',
-          tips: '',
+          tips: '已关联业务空间的租户数量百分比',
           contentValueO: '已关联',
           contentValueT: '未关联',
           text: '',
@@ -488,14 +531,17 @@ export default {
         })
       })
     },
-    getShaftCount() {
+    getShaftCount() {// 获取竖井数据
+
+      // 获取竖井总数
       queryCenoteCount(this.params, res => {
         this.shaftCount = res.Count;
       })
 
+      // 获取竖井按功能类型占比
       queryShaftFunctionType(this.params, res => {
         res.Content.map(item => {
-          this.PartsTypeConversion(item);
+          this.shaftFunTypeTranstion(item);
           this.shaftPartProtion.push({
             name: item.Name,
             value: item.Count
@@ -503,33 +549,24 @@ export default {
         })
         this.shaft.push({
           title: '按功能类型占比',
-          tips: '',
+          tips: '竖井实例的竖井功能占比',
           needCountO: this.shaftPartProtion,
         })
       })
 
+      // 获取竖井关联业务空间完成度
       ShaftRelationBusinessSpace(this.params, res => {
         let text = this.toPercent(res.Count / this.shaftCount);
         this.shaft.push({
           title: '关联业务空间完成度',
-          tips: '',
+          tips: '已关联业务空间的竖井数量百分比',
           contentValueO: '已关联',
           contentValueT: '未关联',
-          text: '',
           needCountO: res.Count,
           needCountT: this.shaftCount - res.Count,
           text: text
         })
       })
-    },
-    toPercent(point) {
-      // 小数转换成百分比
-      if (point == 0) {
-        return 0;
-      }
-      var str = Number(point * 100).toFixed(2);
-      str += "%";
-      return str;
     }
   },
 }

+ 151 - 18
src/views/model/report/index.vue

@@ -2,13 +2,13 @@
   <div>
     <div class="statistics">
       <div class="building">
-        <p>建筑模型文件夹:<b>{{8}}</b></p>
+        <p>建筑模型文件夹:<b>{{ModelFileCount}}</b></p>
       </div>
       <div class="includefloor">
-        <p>包含楼层模型文件:<b>{{45}}</b></p>
+        <p>包含楼层模型文件:<b>{{modelFloorCount}}</b></p>
       </div>
       <div class="problematic">
-        <p>检查出问题的楼层模型文件:<b>{{12}}</b></p>
+        <p>检查出问题的楼层模型文件:<b>{{problemCount}}</b></p>
       </div>
     </div>
     <div class="main-content">
@@ -33,13 +33,22 @@
           <el-link href="" download="" :underline="false" type="info">导出模型问题报告</el-link>
         </div>
         <div class="table" style="width: 100%;height: calc(100% - 47px)">
-          <!-- <el-table ref="multipleTable" :data="tableData" stripe height="100%" :header-cell-style="headerStyle"> -->
-          <el-table ref="multipleTable" stripe height="100%" :header-cell-style="headerStyle" v-loading='loading'>
-            <el-table-column prop="InfoPointName" label="模型楼层" fixed width="150"></el-table-column>
+          <el-table ref="multipleTable" :data="tableData" stripe height="100%" :header-cell-style="headerStyle" v-loading='loading'>
+            <el-table-column prop="FloorName" label="模型楼层" fixed width="150"></el-table-column>
             <el-table-column prop="functionNo" label="待删除设备数量" fixed width="150"></el-table-column>
             <el-table-column prop="functionNoDynamicData" label="待补充设备数量" fixed width="150"></el-table-column>
             <el-table-column prop="functionNoDynamicData" label="有问题的检查项" fixed width="150"></el-table-column>
-            <el-table-column prop="functionNoDynamicData" :label="item" v-for="item in checkItem" :key="item" width="150"></el-table-column>
+            <el-table-column prop="functionNoDynamicData" label='构件范围检查' width="200"></el-table-column>
+            <el-table-column prop="functionNoDynamicData" label='设备族编码检查' width="200"></el-table-column>
+            <el-table-column prop="functionNoDynamicData" label='部件所在位置检查' width="200"></el-table-column>
+            <el-table-column prop="functionNoDynamicData" label='柱边界检查' width="200"></el-table-column>
+            <el-table-column prop="ConnectorCheck" label='连接件检查' width="200"></el-table-column>
+            <el-table-column prop="functionNoDynamicData" label='系统类型名称检查' width="200"></el-table-column>
+            <el-table-column prop="functionNoDynamicData" label='未在空间中的设备' width="200"></el-table-column>
+            <el-table-column prop="functionNoDynamicData" label='管段检查' width="200"></el-table-column>
+            <el-table-column prop="functionNoDynamicData" label='管网及相关设备检查' width="200"></el-table-column>
+            <el-table-column prop="functionNoDynamicData" label='Revit族参数完整性检查' width="200"></el-table-column>
+            <el-table-column prop="XyzOverlapCheck" label='xyz坐标重叠检查' width="200"></el-table-column>
             <template slot="empty">
               <div style="height: 60%;transform: translate(-22%,50%);">
                 <i class="icon-wushuju iconfont"></i>
@@ -57,25 +66,28 @@
 </template>
 
 <script>
+import { mapGetters } from "vuex";
 import dasBoard from "@/views/dasboard/index";
+import request from "@/api/model/file.js";
+import { exportReport, queryFloorList, queryModel, queryReportList } from "@/api/model/report.js";
 export default {
   components: {
     dasBoard
   },
   data() {
     return {
-      tableList: [  // tab数据
-        { Code: 'one', Name: '模型文件夹1' },
-        { Code: 'two', Name: '模型文件夹2' },
-        { Code: 'three', Name: '模型文件夹3' }
-      ],
-      activeTab: '',  // tab当前选中项
-      headerStyle: {  // 列表样式
+      params: null,
+      ModelFileCount: null,// 模型文件夹数量
+      modelFloorCount: null,// 包含楼层模型文件数量
+      problemCount: 0,// 检查出问题的楼层模型文件数量
+      tableList: [], // tab数据
+      tableData: [],// 列表数据
+      activeTab: '', // tab当前选中项
+      headerStyle: { // 列表样式
         backgroundColor: '#e1e4e5',
         color: '#2b2b2b',
         lineHeight: '30px'
       },
-      checkItem: ['构件范围检查', '设备族编码检查', '部件所在位置检查', '柱边界检查', '连接件检查', '系统类型名称检查', '未在空间中的设备', '管段检查', '管网及相关设备检查', 'Revit族参数完整性检查', 'xyz坐标重叠检查'],  // 检查项数据
       iconClassMap: { // 模型文件夹icon映射
         "Success": "msg-icon el-icon-success success-color",
         "Error": "msg-icon el-icon-error error-color",
@@ -86,17 +98,138 @@ export default {
         pageNumber: 1,
         total: 0
       },
-      loading:false
+      loading: false,
+      lostFloort: {
+        ary: [],
+        Bary: [],
+        Fary: [],
+        regex: /^(B||F)(\d)/
+      }
     }
   },
   mounted() { },
   created() {
-    this.activeTab = this.tableList[0].Code;// 默认选中第一个模型文件夹
+    this.params = {
+      ProjectId: this.projectId
+    }
+    this.getModelFileCount();
+    this.getModelFloorCount();
+  },
+  computed: {
+    ...mapGetters('layout', ['projectId'])
   },
   methods: {
+    getlostFloors(ary, eng, FloorName) {
+      let newAry = ary[0];
+      if (newAry.FloorName !== '1') {
+        ary.unshift({ FloorName: `${1}` })
+      }
+      for (let i = 0; i < ary.length; i++) {
+        if (i === ary.length - 1) {
+          break;
+        }
+        let x = ary[i].FloorName;
+        let y = ary[i + 1].FloorName;
+        let z = { FloorName: `${Number(x) + 1}` };
+        if (Number(x) + 1 !== Number(y)) {
+          ary.splice(i + 1, 0, z)
+          i++;
+        }
+      }
+      for (let i = 0; i < ary.length; i++) {
+        ary[i].FloorName = `${eng + ary[i].FloorName}`;
+      }
+      for (let i = 0; i < ary.length; i++) {
+        for (let j = 0; j < FloorName.length; j++) {
+          if (ary[i].FloorName === FloorName[j].FloorName) {
+            break;
+          } else {
+            if (j === FloorName.length - 1) {
+              ary[i].FloorName = `${'丢失' + ary[i].FloorName}`
+            }
+          }
+        }
+      }
+    },
+    getModelFileCount() {// 获取项目下所有模型文件夹
+      let params = {
+        ProjectId: this.projectId,
+      }
+      queryModel(this.params, res => {
+        this.ModelFileCount = res.Content.length;
+        this.tableList = res.Content;
+        this.tableList.map((item, index) => {
+          item.Code = item.Id;
+        })
+        this.activeTab = this.tableList[0].Code;// 默认选中第一个模型文件夹
+        this.getExportReport();
+        this.getModelFloor();
+      });
+    },
+    getModelFloorCount() {
+      queryFloorList(this.params, res => {
+        this.modelFloorCount = res.Total;
+        res.Content.map(item => {
+          if (!item.DataCheckResult) {
+            this.problemCount += 1;
+          }
+        })
+      });
+    },
+    getExportReport() {
+      let params = {
+        ProjectId: this.projectId,
+        Id: this.activeTab
+      }
+      // exportReport(params,res => {
+      //   console.log(res,3958)
+      // });
+    },
     getData(tab) {
       // 切换tab时执行
-      console.log(tab, 3939)
+      this.getExportReport();
+      this.getModelFloor();
+    },
+    getModelFloor() {// 获取当前楼层下的模型楼层
+      let params = {
+        ProjectId: this.projectId,
+        Id: `${this.activeTab}`
+      }
+      queryReportList(params, res => {
+        let FloorName = res.Content;
+        let that = this;
+        if (res.Content.length > 1) {
+          res.Content.map(item => {
+            // this.tableData = [];
+            // let FloorN = item.FloorName;
+            // if (this.lostFloort.regex.test(FloorN)) {
+            //   FloorN.replace(/^(B||F)(\d)/, function (a, b, c) {
+            //     if (b === "B") {
+            //       item.FloorName = c;
+            //       that.lostFloort.Bary.push(item);
+            //     } else if (b === "F") {
+            //       item.FloorName = c;
+            //       that.lostFloort.Fary.push(item);
+            //     }
+            //   })
+            // } else {
+            //   that.lostFloort.ary.push(item)
+            // }
+          })
+          this.tableData = [];
+          console.log(this.lostFloort.Bary, 12)
+          console.log(this.lostFloort.Fary, 14)
+          if (this.lostFloort.Bary.length > 0) {
+            this.getlostFloors(this.lostFloort.Bary, "B", FloorName);
+          }
+          if (this.lostFloort.Fary.length > 0) {
+            this.getlostFloors(this.lostFloort.Fary, "F", FloorName);
+          }
+          this.tableData = [...this.lostFloort.ary, ...this.lostFloort.Bary, ...this.lostFloort.Fary];
+        } else {
+          this.tableData = res.Content;
+        }
+      })
     },
     del() {
       // 点击需从模型中删除的设备