Pārlūkot izejas kodu

点位,实例,加入查询时loading,表号功能号断数显示,弹出层高度调整

LXXXY 5 gadi atpakaļ
vecāks
revīzija
f51d4c82c8

+ 8 - 3
src/api/point/request.js

@@ -1,6 +1,7 @@
 import fetch from './fetch'
 import { api } from './config.js'
 import http from './httpUtil'
+import storage from '@/framework/utils/storage'
 
 //系统集成统计条形图
 export function getIntegrateStatisticsToBar(param, success) {
@@ -21,10 +22,14 @@ export function getTabFunNumOverview(param, success) {
 }
 
 //表号功能号对应历史数据
-export function getHistoryData(param, success) {
+export function getHistoryData(query, param, success) {
     let url = `/data-platform-3/hisdata/batch_query_period_data_by_metfun`
-    let data = param
-    http.postJson(url, data, success)
+    let ProjectId = storage.get("global_project_selected")
+    url += `?projectId=${ProjectId}`
+    for (let key in query) {
+        url += `&${key}=${query[key]}`
+    }
+    http.postJson(url, param, success)
 }
 
 //获取表号功能号的源数据

+ 2 - 3
src/components/point/report/addTabFunNum.vue

@@ -1,7 +1,7 @@
 <template>
   <!-- 新增表号-功能号 -->
   <div id="addTabFunNum">
-    <el-form :model='form' label-width="150px" ref="ruleForm" :rules="rules">
+    <el-form :model='form' label-width="150px" ref="ruleForm" :rules="rules" style="height:500px;overflow:auto;">
       <el-form-item label="表号-功能号" prop="Id">
         <el-input v-model="form.Id"></el-input>
       </el-form-item>
@@ -36,7 +36,7 @@ export default {
         Id: 'xx-xxx',//表号-功能号
         intervalTime: '',//采集间隔时间
         formula: 'xxxxxxxxxx',//取值公式
-        unit: ''//值单位
+        unit: '',//值单位
       },
       //下拉框选项
       options: [
@@ -81,7 +81,6 @@ export default {
           return false;
         }
       });
-      
     }
   }
 }

+ 6 - 2
src/components/point/report/dataSource.vue

@@ -1,6 +1,6 @@
 <template>
     <!-- 子系统点位(数据来源) -->
-    <div id="dataSource">
+    <div id="dataSource" v-loading="loading">
         <div class="data-item"  v-for="form in forms" :key="form.id">
             <el-form :model="form" label-width="150px">
                 <el-form-item label="数据源名称:">
@@ -37,16 +37,20 @@ export default {
     data() {
         return {
             forms: [
-            ]
+            ],
+            loading: true
         }
     },
     methods: {
         loadDataSource() {
+            this.loading = true;
             let pa = {
                 Filters: "MeterFuncid='" + this.tabFunNum + "'"
             };
             getTabFunNumSourceData(pa, res => {
                 this.forms = res.Content;
+
+                this.loading = false;
             });
         }
     },

+ 4 - 1
src/components/point/report/historyChart.vue

@@ -54,6 +54,9 @@ export default {
   methods: {
     //加载表格
     loadTable() {
+      let query = {
+        secret: this.tabFunNum
+      };
       let pa = {
         criterias:[
           {
@@ -66,7 +69,7 @@ export default {
           }
         ]
       };
-      getHistoryData(pa, res => {
+      getHistoryData(query, pa, res => {
         // this.chartData = res;
         //折线图参数
         let lineChartOption = {

+ 9 - 6
src/components/point/report/integrateStatistics.vue

@@ -5,6 +5,7 @@
       <div class="chart-title">表号功能号总数量:{{ pointData.tabFuncNumSum }}</div>
       <hr style="width:90%" />
       <div ref="loopchart" class="chart"></div>
+      <div class="chart-title" style="padding-left:10%;">目前可能断数的数量:{{ pointData.disConn }}</div>
       <hr style="width:80%" />
       <div style="padding:15px 10%;line-height:2;">
         1点位对多表号功能号:{{ pointData.oneToM }}
@@ -59,7 +60,8 @@ export default {
       pointData: {
         tabFuncNumSum:0,
         oneToM: 0,
-        mToOne: 0
+        mToOne: 0,
+        disConn: 0
       },//总数 一对多 多对一
       //原始点数量
       originalPoint: null
@@ -77,7 +79,8 @@ export default {
           this.pointData = {
             tabFuncNumSum: res.Content[0].Sum,
             oneToM: res.Content[0].OtoM, 
-            mToOne: res.Content[0].MtoO
+            mToOne: res.Content[0].MtoO,
+            disConn: res.Content[0].Disconn
             };
         }
         this.loopChartData = [
@@ -162,8 +165,8 @@ export default {
         this.originalPoint = (() => {
           let sum = 0;
           this.barChartData.map(item => {
-            sum += item["Equipmenttypestandard"];
-            sum += item["Equipmenttypenotstandard"];
+            sum += item["Notrelated"];
+            sum += item["Related"];
           });
           return sum;
         })();
@@ -209,7 +212,7 @@ export default {
                   position: "inside"
                 }
               },
-              data: this.barChartData.map(item => item.Equipmenttypestandard)
+              data: this.barChartData.map(item => item.Related)
             },
             {
               name: "未接入",
@@ -220,7 +223,7 @@ export default {
                   show: true
                 }
               },
-              data: this.barChartData.map(item => item.Equipmenttypenotstandard)
+              data: this.barChartData.map(item => item.Notrelated)
             }
           ]
         };

+ 140 - 108
src/components/point/report/objectInstance.vue

@@ -1,33 +1,33 @@
 <template>
-    <!-- 对象实例 -->
-    <div id="objectInstance">
-        <div ref="test1"></div>
-        <div class="obj-item" v-for="form in forms" :key="form.id">
-            <el-form :model="form" label-width="150px">
-                <el-form-item label="对象类型:">
-                    {{form.TypeCode}}
-                </el-form-item>
-                <el-form-item label="对象实例本地名称:">
-                    {{form.ObjectLocalName}}
-                </el-form-item>
-                <el-form-item label="对象实例本地编码:">
-                    {{form.EquipmentMark}}
-                </el-form-item>
-                <el-form-item label="对象实例ID:">
-                    {{form.ObjectID}}
-                </el-form-item>
-                <el-form-item label="信息点名称:">
-                    {{form.EquipLocalName}}
-                </el-form-item>
-                <el-form-item label="对应值:">
-                    {{form.InfomationPointCode}}
-                </el-form-item>
-                <el-form-item label="对象实例位置图:">
-                    <canvas height="200" width="100" class="instanceMap" :id="form.instanceId"></canvas>
-                </el-form-item>
-            </el-form>
-        </div>
+  <!-- 对象实例 -->
+  <div id="objectInstance" v-loading="loading">
+    <div ref="test1"></div>
+    <div class="obj-item" v-for="form in forms" :key="form.id">
+      <el-form :model="form" label-width="150px">
+        <el-form-item label="对象类型:">
+          {{form.TypeCode}}
+        </el-form-item>
+        <el-form-item label="对象实例本地名称:">
+          {{form.ObjectLocalName}}
+        </el-form-item>
+        <el-form-item label="对象实例本地编码:">
+          {{form.EquipmentMark}}
+        </el-form-item>
+        <el-form-item label="对象实例ID:">
+          {{form.ObjectID}}
+        </el-form-item>
+        <el-form-item label="信息点名称:">
+          {{form.EquipLocalName}}
+        </el-form-item>
+        <el-form-item label="对应值:">
+          {{form.InfomationPointCode}}
+        </el-form-item>
+        <el-form-item label="对象实例位置图:">
+          <canvas height="200" width="100" class="instanceMap" :id="form.instanceId" v-loading="form.loading"></canvas>
+        </el-form-item>
+      </el-form>
     </div>
+  </div>
 </template>
 
 <script>
@@ -35,102 +35,134 @@ import { mapGetters, mapActions } from 'vuex'
 
 import { SGraphyView } from "@sybotan-web/graphy/lib";
 import { DivideFloorScene, } from "cad-engine"
+import { SColor, SPoint } from "@sybotan-web/draw/lib";
 
 import {
-    getTabFunNumObjInstance
+  getTabFunNumObjInstance
 } from '@/api/point/request'
 export default {
-    data() {
-        return {
-            forms: [
-                // {
-                //     id: '1',                 ID
-                //     objType: 'type1' ,       对象类型
-                //     localName: 'name1',      对象实例本地名称
-                //     localNum: 'num1',        对象实例本地编码
-                //     instanceId: 'id1',       对象实例ID
-                //     mesPointName: 'name1',   信息点名称
-                //     mesPointVal: 'value1',   对应值
-                //     instanceMap: 'm'         对象实例位置图
-                // }
-            ],
-            views: [],
-            scenes: [],
-            canvasLoadings: []
-        }
-    },
-    methods: {
-        //加载对象实例
-        loadObjectInstance() {
-            let pa = {
-                Filters: "MeterFuncid='" + this.tabFunNum + "'"
-            };
-            getTabFunNumObjInstance(pa, res => {
-                this.forms = res.Content;
-
-                //加载canvas
+  data() {
+    return {
+      forms: [
+        // {
+        //     id: '1',                 ID
+        //     objType: 'type1' ,       对象类型
+        //     localName: 'name1',      对象实例本地名称
+        //     localNum: 'num1',        对象实例本地编码
+        //     instanceId: 'id1',       对象实例ID
+        //     mesPointName: 'name1',   信息点名称
+        //     mesPointVal: 'value1',   对应值
+        //     instanceMap: 'm'         对象实例位置图
+        // }
+      ],
+      views: [],
+      scenes: [],
+      loading: true,
+      BSPRelaISPLists: [[]]
+    }
+  },
+  methods: {
+    //加载对象实例
+    loadObjectInstance() {
+      this.loading = true;
+      let pa = {
+        Filters: "MeterFuncid='" + this.tabFunNum + "'"
+      };
 
-                // this.forms.map(item => {
-                //     let that = this;
-                //     that.clearGraphy()
-                //     that.views.map(it => {
-                //         it
-                //     })
-                //     that.view = new SGraphyView('floorCanvas')
-                //     that.scene = new DivideFloorScene();
-                //     that.canvasLoading = true;
-                //     let instance = document.getElementById(item.instanceId);
+      let that = this;
+      getTabFunNumObjInstance(pa, res => {
+        that.loading = false;
+        that.forms = res.Content;
+        that.clearGraphy()
+        //加载canvas
+        that.forms.map((key, item) => {
+          that.views[key] = new SGraphyView('floorCanvas')
+          that.scenes[key] = new DivideFloorScene();
+          that.forms[key].loading = true;
 
-                //     let ctx = instance.getContext('2d');
-                //     cxt.moveTo(10,10);
-                //     cxt.lineTo(150,50);
-                //     cxt.lineTo(10,50);
-                //     cxt.stroke();
-                // });
+          that.scenes[key].loadUrl(`/image-service/common/file_get?systemId=revit&key=${this.FloorMap}`).then(() => {
+            that.forms[key].loading = false;
+            that.views[key].scene = that.scenes[key];
+            let tempArr = that.BSPRelaISPLists[key].map((t, i) => {
+              return {
+                RoomLocalName: t.RoomLocalName,
+                OutLine: t.Outline,
+                RoomID: t.RoomID,
+                Color: new SColor(colorArr[i % colorArr.length]),
+              }
             })
-        },
-        //清楚画布
-        clearGraphy(){
-            if (this.view) {
-                this.views = [];
-                this.scenes = this.scenes.map(item => {
-                    item.root.children = null;
-                    return item;
-                })
-                this.scenes = [];
-            }
-        }
-    },
-    mounted() {
-        this.loadObjectInstance();
+            that.scenes[key].addZoneList(tempArr);
+            that.scenes[key].click(that, that.canvasClick)
+            that.views[key].fitSceneToView();
+            that.views[key].maxScale = that.views[key].scale * 10;
+            that.views[key].minScale = that.views[key].scale;
+            // that.$refs.canvasFun.everyScale = that.views[key].scale;
+          })
+        });
+
+      })
     },
-    props: {
-        tabFunNum: String//表号功能号
+    //清楚画布
+    clearGraphy() {
+      if (this.view) {
+        this.views = [];
+        this.scenes = this.scenes.map(item => {
+          item.root.children = null;
+          return item;
+        })
+        this.scenes = [];
+      }
     },
-    computed:{
-        ...mapGetters('layout', ['projectId', 'userId'])
+    // canvas点击事件
+    canvasClick(item, event) {
+      // this.scene.setSpaceSelectable(true);
+      // this.scene.setZoneSelectable(true);
+      // if (this.type == 4) {
+
+      // } else {
+      //   if (item instanceof SpaceItem) {
+      //     this.type = 3;
+      //     this.curZoneItem = {};
+      //     this.scene.setZoneSelectable(false);
+      //   }
+      //   if (item instanceof ZoneItem) {
+      //     this.type = 2;
+      //     this.curZoneItem = item;
+      //     this.scene.setSpaceSelectable(false);
+      //   }
+      // }
     },
-     watch: {
-        //切换时更新数据
-        tabFunNum() {
-            this.loadObjectInstance();
-        }
+  },
+  mounted() {
+    this.loadObjectInstance();
+  },
+  props: {
+    tabFunNum: String//表号功能号
+  },
+  computed: {
+    ...mapGetters('layout', ['projectId', 'userId'])
+  },
+  watch: {
+    //切换时更新数据
+    tabFunNum() {
+      this.loadObjectInstance();
     }
+  }
 }
 </script>
 
 <style lang="less" scoped>
-#objectInstance{
-    height:100%;
-    overflow:auto;
+#objectInstance {
+  height: 100%;
+  overflow: auto;
 }
-.instanceMap{
-    min-height:100px; 
+.instanceMap {
+  min-height: 100px;
 }
-.obj-item{
-    margin: 15px 10px;
-    box-shadow: 2px 2px 2px 2px #aaa;
-    background-color: white;
-    padding: 10px 10px;
+.obj-item {
+  margin: 15px 10px;
+  box-shadow: 2px 2px 2px 2px #aaa;
+  background-color: white;
+  padding: 10px 10px;
 }
 </style>

+ 2 - 1
src/components/point/report/pointTabOverview.vue

@@ -3,7 +3,7 @@
   <div id="pointTabOverview">
     <!-- 对话框 -->
     <el-dialog title="点位/表号共更好对应总览" :visible.sync="dialogVisiable">
-      <el-tabs v-model="activeName">
+      <el-tabs v-model="activeName" style="height:600px;overflow:auto;">
         <!-- 一对多数据 -->
         <el-tab-pane label="一对多" name="otm">
           <el-table :data="oTMData" style="width: 100%">
@@ -76,4 +76,5 @@ export default {
 </script>
 
 <style lang="less" scoped>
+
 </style>

+ 16 - 4
src/components/point/report/tabFunNumOverview.vue

@@ -11,7 +11,15 @@
         <!-- 数据表格 -->
         <div class="table-area">
             <el-table :data="tableData" style="width: 100%" height="calc(100% - 40px)" v-loading="loading" :header-cell-style="headerStyle">
-                <el-table-column prop='MeterFunc' label='表号-功能号' show-overflow-tooltip min-width="100"></el-table-column>
+                <el-table-column prop='MeterFunc' label='表号-功能号' show-overflow-tooltip min-width="100">
+                    <template slot-scope="scope">
+                        <el-tooltip v-if="scope.row.DataQuality" content="已断数,请检查" placement="bottom" effect="light">
+                            <i  class="el-icon-warning-outline" style="float:left;margin: 0 5px;color: red;"></i>
+                        </el-tooltip>
+                        <span>{{ scope.row.MeterFunc }}</span>
+                    </template>
+                    
+                </el-table-column>
                 <el-table-column prop='Data.Data' label='对应值(单位)' show-overflow-tooltip min-width="120">
                     <template slot-scope="scope">
                         <span>{{ scope.row.Data.Data }}</span>
@@ -60,9 +68,13 @@
         <el-drawer :title="'< ' + drawers[2].objId + ' > 的对象实例'" :visible.sync="drawers[2].drawer" :direction="drawers[2].direction" size="50%">
             <objectInstance :tabFunNum='drawers[2].objId'></objectInstance>
         </el-drawer>
-        <el-drawer title="新增表号功能号" :visible.sync="drawers[3].drawer" :direction="drawers[3].direction" size="50%">
+        <el-dialog title="新增表号功能号" :visible.sync="drawers[3].drawer">
             <addTabFunNum @closeDrawer="closeDrawer()"></addTabFunNum>
-        </el-drawer>
+        </el-dialog>
+        
+        <!-- <el-drawer title="新增表号功能号" :visible.sync="drawers[3].drawer" :direction="drawers[3].direction" size="50%">
+            <addTabFunNum @closeDrawer="closeDrawer()"></addTabFunNum>
+        </el-drawer> -->
     </div>
 </template>
 
@@ -87,7 +99,7 @@ export default {
                 lineHeight: '30px'
             },
             allTableData: [],//所有表格数据
-            pageSizes:[5,10,20,50],
+            pageSizes:[10,20,50,100],
             pageSize:10,
             currentPage:1,
             loading: false,//加载