Bläddra i källkod

Merge branch 'system-integration' of http://39.106.8.246:3003/web/ibms into system-integration

zhulizhen1111 4 år sedan
förälder
incheckning
3867a25ef9

+ 1 - 1
config/dev.env.js

@@ -11,7 +11,7 @@ module.exports = merge(prodEnv, {
   MQTT_SERVICE: '"ws://172.16.42.210:61614/stomp/"' //MQ测试环境地址
   // SSO_SERVER: '"http://sso.sagacloud.cn"',  //正式环境
   // BASE_URL: '"http://mbi.sagacloud.cn"', //线上iframe地址
-  // MQTT_SERVICE: '"ws://adm.sagacloud.cn/stomp/"' //MQ正式环境地址
+ // MQTT_SERVICE: '"ws://adm.sagacloud.cn/stomp/"' //MQ正式环境地址
 })
 
 

+ 3 - 0
config/prod.env.js

@@ -9,4 +9,7 @@ module.exports = {
   BASE_URL: '"http://mbi.sagacloud.cn"', //线上iframe地址
   SSO_SERVER: '"http://sso.sagacloud.cn"',  //正式环境
    MQTT_SERVICE: '"ws://adm.sagacloud.cn/stomp/"' //MQ正式环境地址
+  // BASE_URL: '"http://182.92.126.202"', //线上iframe地址(龙湖)
+  // SSO_SERVER: '"http://182.92.126.202:8889"',  //正式环境(龙湖)
+  // MQTT_SERVICE: '"ws://182.92.126.202:61614/stomp/"' //MQ正式环境地址(龙湖)
 }

+ 1 - 1
package.json

@@ -27,7 +27,7 @@
     "axios": "^0.18.0",
     "echarts": "^4.1.0",
     "el-cascader-multi": "^1.1.8",
-    "element-ui": "^2.11.1",
+    "element-ui": "^2.13.2",
     "font-awesome": "^4.7.0",
     "handsontable-pro": "^3.0.0",
     "jquery": "^3.3.1",

+ 7 - 3
src/components/config_point/toolLibrary/settingDialog.vue

@@ -26,8 +26,12 @@
         <template slot-scope="scope">
           <el-button @click="handleEdit(scope.$index, scope.row)">编辑
           </el-button>
-          <el-button type="danger" @click="handleDelete(scope.$index, scope.row)">删除
-          </el-button>
+          <el-popconfirm
+            title="这是一段内容确定删除吗?"
+            @onConfirm="handleDelete(scope.$index, scope.row)"
+          >
+            <el-button slot="reference" type="danger" >删除</el-button>
+          </el-popconfirm>
         </template>
       </el-table-column>
     </el-table>
@@ -175,7 +179,7 @@
         }
       },
       handleDelete(index, row) {
-
+        console.log(row)
       },
       handleChangeProtocolType(val) {
 

+ 5 - 5
src/components/market/owner/uploadImg.vue

@@ -18,12 +18,12 @@
       accept="image/*"
       drag
       :disabled="disabled"
-      style="position: relation"
+      style="position: relative"
       >
           <i class="el-icon-plus avatar-uploader-icon"></i>
           <img v-if="identify" :src="imageGetUrl + '&key=' + identify"></img>
-          <div 
-          v-if="!disabled && identify && isShow" 
+          <div
+          v-if="!disabled && identify && isShow"
           style="width: 20px; height:20px; background: #e6e6e6; position: absolute; top: 5px; right: 0px;"
           @click.stop="deleteImg">
             <i class="el-icon-close" ></i>
@@ -32,7 +32,7 @@
     <div v-else id="uploadFile">
         <div v-if="name">
             <el-button type="text" @click="download">
-                {{name}}          
+                {{name}}
             </el-button>
             <i v-if="disabled" class="el-icon-close delete-icon" style="margin-left:10px; cursor:pointer" @click="deleteImg"></i>
         </div>
@@ -214,4 +214,4 @@ export default {
     }
   }
 }
-</style>
+</style>

+ 242 - 122
src/components/point/report/integrateStatistics.vue

@@ -2,22 +2,102 @@
   <div id="integrateStatistics">
     <!-- 环形表 -->
     <div class="statistics-chart" v-loading="loopchartLoading">
-      <div class="chart-title">表号功能号总数量:{{ tabFuncNumSum }} <span style="float:right">目前可能断数的数量:{{ disConn }}</span></div>
-      <hr style="width:90%" />
+      <div class="chart-title" v-if="!type">
+        表号功能号总数量:{{ tabFuncNumSum }} <span style="float:right">
+        目前可能断数的数量:{{ disConn }}</span>
+      </div>
+      <hr style="width:90%" v-if="!type"/>
       <div ref="loopchart" class="chart" id="loopchart"></div>
     </div>
+    <!--    通讯状态-->
+    <div class="statistics-chart" v-if="type" style="border-top:5px solid #eee;">
+        <span class="contain-title-leftblock">
+         <i class="iconfont icon-juxing"/>
+        通讯状态
+          <i class="el-icon-refresh" style="cursor: pointer"/>
+        </span>
+      <el-table
+        :data="tableData"
+        height="250"
+        border
+        style="width: 100%">
+        <el-table-column
+          prop="date"
+          label="数据源名称"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="name"
+          label="协议类型"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="状态">
+        </el-table-column>
+        <el-table-column
+          prop="date"
+          label="CPU"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="name"
+          label="内存"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="操作">
+        </el-table-column>
+      </el-table>
+    </div>
+    <!--    点位数量-->
+    <div class="statistics-chart" style="border-top:5px solid #eee;" v-if="type">
+        <span class="contain-title-leftblock">
+         <i class="iconfont icon-juxing"/>
+        点位数量
+          <i class="el-icon-refresh" style="cursor: pointer"/>
+        </span>
+      <el-table
+        :data="tableData"
+        height="250"
+        border
+        style="width: 100%">
+        <el-table-column
+          prop="date"
+          label="数据源名称">
+        </el-table-column>
+        <el-table-column
+          prop="name"
+          label="总点位数量">
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="已获取">
+        </el-table-column>
+        <el-table-column
+          prop="name"
+          label="未获取"
+        >
+        </el-table-column>
+        <el-table-column
+          prop="address"
+          label="上数率">
+        </el-table-column>
+      </el-table>
+    </div>
     <!-- 图形图 -->
-    <div class="statistics-chart" style="border-top:5px solid #eee;min-height: calc(65% - 3px);">
+    <div class="statistics-chart" style="border-top:5px solid #eee;min-height: calc(65% - 3px);" v-if="!type">
       <div class="chart-title">共包含原始点位:{{ originalPoint }} 个</div>
       <div style="padding:15px 20px;line-height:2;">
         1点位对多表号功能号:{{oneToM+''}}
-        <br />
+        <br/>
         多点位对1表号功能号:{{mToOne+''}}
         <!-- 查看表号功能号一对多多对一总览 -->
         <el-button @click="showOverview" type="info" icon="el-icon-arrow-right" circle
-          style="margin:-25px 0 0 50px;background:rgb(121, 187, 255);color:rgb(225, 228, 229);border:none;"></el-button>
+                   style="margin:-25px 0 0 50px;background:rgb(121, 187, 255);color:rgb(225, 228, 229);border:none;"></el-button>
       </div>
-      <hr style="width:90%;margin-top: 1px;" />
+      <hr style="width:90%;margin-top: 1px;"/>
       <div ref="barchart" class="" id="barchart" :style="{height:barChartData.length * 120 + 'px'}">
         <el-row class="barchart-title">
           <el-col :span="12">
@@ -46,132 +126,159 @@
       </div>
     </div>
     <!-- 点位/表号功能号对应总览 -->
-    <pointTabOverview ref="overviewDialog"></pointTabOverview>
+    <pointTabOverview ref="overviewDialog" v-if="!type"></pointTabOverview>
   </div>
 </template>
 
 <script>
-//echarts
-import echarts from "echarts";
-import "echarts/lib/chart/bar";
-import "echarts/lib/component/tooltip";
-import "echarts/lib/component/title";
+  //echarts
+  import echarts from "echarts";
+  import "echarts/lib/chart/bar";
+  import "echarts/lib/component/tooltip";
+  import "echarts/lib/component/title";
 
-import {
-  getIntegrateStatisticsToLoop,
-  getIntegrateStatisticsToBar
-} from "@/api/scan/request";
-import pointTabOverview from "./pointTabOverview";
+  import {getIntegrateStatisticsToBar, getIntegrateStatisticsToLoop} from "@/api/scan/request";
+  import pointTabOverview from "./pointTabOverview";
 
-export default {
-  data() {
-    return {
-      //环形图
-      loopChart: null,
-      loopchartLoading: false,
-      //环形图数据
-      loopChartData: [],
-      //条形图数据
-      barChartData: [],
-      //点位-标号功能号数据
-      tabFuncNumSum: 0,//总数
-      oneToM: 0,//一对多
-      mToOne: 0,//多对一
-      disConn: 0,//可能断数数量
-      //原始点数量
-      originalPoint: null,
-      pointInSum: 0, //左侧柱形图已接入
-      pointOutSum: 0, //左侧柱形图未接入
-    };
-  },
-  methods: {
-    //加载图表数据
-    loadChart() {
-      let that = this;
-      that.loopchartLoading = true;
-      //获取环形图数据
-      getIntegrateStatisticsToLoop({}, res => {
-        //设置点位-表号功能号数据
-        const tempData = res.Content[0];
-        that.tabFuncNumSum = tempData.Sum
-        that.oneToM = tempData.OToM
-        that.mToOne = tempData.MToO
-        that.disConn = tempData.Disconn
-        //设置环形表数据
-        that.loopChartData = [
-          { value: tempData.RelatedCount, name: "已对实例数量" },
-          { value: tempData.Sum - tempData.RelatedCount, name: "未对应实例数量" }
-        ];
+  export default {
+    data() {
+      return {
+        //环形图
+        loopChart: null,
+        loopchartLoading: false,
+        //环形图数据
+        loopChartData: [],
+        //条形图数据
+        barChartData: [],
+        //点位-标号功能号数据
+        tabFuncNumSum: 0,//总数
+        oneToM: 0,//一对多
+        mToOne: 0,//多对一
+        disConn: 0,//可能断数数量
+        //原始点数量
+        originalPoint: null,
+        pointInSum: 0, //左侧柱形图已接入
+        pointOutSum: 0, //左侧柱形图未接入
+        tableData: [{
+          date: '2016-05-03',
+          name: '王小虎',
+          address: '上海市普陀区金沙江路 1518 弄'
+        }, {
+          date: '2016-05-02',
+          name: '王小虎',
+          address: '上海市普陀区金沙江路 1518 弄'
+        }, {
+          date: '2016-05-04',
+          name: '王小虎',
+          address: '上海市普陀区金沙江路 1518 弄'
+        }, {
+          date: '2016-05-01',
+          name: '王小虎',
+          address: '上海市普陀区金沙江路 1518 弄'
+        }, {
+          date: '2016-05-08',
+          name: '王小虎',
+          address: '上海市普陀区金沙江路 1518 弄'
+        }, {
+          date: '2016-05-06',
+          name: '王小虎',
+          address: '上海市普陀区金沙江路 1518 弄'
+        }, {
+          date: '2016-05-07',
+          name: '王小虎',
+          address: '上海市普陀区金沙江路 1518 弄'
+        }]
+      };
+    },
+    props: ['type'],
+    methods: {
+      //加载图表数据
+      loadChart() {
+        let that = this;
+        that.loopchartLoading = true;
+        //获取环形图数据
+        getIntegrateStatisticsToLoop({}, res => {
+          //设置点位-表号功能号数据
+          const tempData = res.Content[0];
+          that.tabFuncNumSum = tempData.Sum
+          that.oneToM = tempData.OToM
+          that.mToOne = tempData.MToO
+          that.disConn = tempData.Disconn
+          //设置环形表数据
+          that.loopChartData = [
+            {value: tempData.RelatedCount, name: "已对实例数量"},
+            {value: tempData.Sum - tempData.RelatedCount, name: "未对应实例数量"}
+          ];
 
-        //环形图参数
-        let loopOption = {
-          tooltip: {
-            trigger: "item",
-            formatter: "{a} <br/>{b}: {c} ({d}%)"
-          },
-          color: ['rgb(121, 187, 255)', 'rgb(225, 228, 229)'],
-          graphic: {
-            elements: [
-              {
-                type: "text",
-                left: "center",
-                top: "center",
-                style: {
-                  text: (() => {
-                    let s = 0;
-                    that.loopChartData.map(item => {
-                      s += item["value"];
-                    });
-                    return s;
-                  })(),
-                  textAlign: "center",
-                  fontSize: 32,
-                  fontWeight: 300
+          //环形图参数
+          let loopOption = {
+            tooltip: {
+              trigger: "item",
+              formatter: "{a} <br/>{b}: {c} ({d}%)"
+            },
+            color: ['rgb(121, 187, 255)', 'rgb(225, 228, 229)'],
+            graphic: {
+              elements: [
+                {
+                  type: "text",
+                  left: "center",
+                  top: "center",
+                  style: {
+                    text: (() => {
+                      let s = 0;
+                      that.loopChartData.map(item => {
+                        s += item["value"];
+                      });
+                      return s;
+                    })(),
+                    textAlign: "center",
+                    fontSize: 32,
+                    fontWeight: 300
+                  }
+                },
+                {
+                  type: "text",
+                  left: "center",
+                  top: "center",
+                  style: {
+                    text: (() => {
+                      let s = 0;
+                      that.loopChartData.map(item => {
+                        s += item["value"];
+                      });
+                      return "\n\n\n总数";
+                    })(),
+                    textAlign: "center",
+                    fontSize: 16,
+                    fontWeight: 300
+                  }
                 }
-              },
+              ]
+            },
+            series: [
               {
-                type: "text",
-                left: "center",
-                top: "center",
-                style: {
-                  text: (() => {
-                    let s = 0;
-                    that.loopChartData.map(item => {
-                      s += item["value"];
-                    });
-                    return "\n\n\n总数";
-                  })(),
-                  textAlign: "center",
-                  fontSize: 16,
-                  fontWeight: 300
-                }
+                name: "实例总数",
+                type: "pie",
+                radius: ["50%", "70%"],
+                avoidLabelOverlap: false,
+                legendHoverLink: false,
+                selectedOffset: 0,
+                label: {
+                  color: 'rgb(121, 187, 255)',
+                },
+                emphasis: {
+                  itemStyle: {
+                    // 高亮时点的颜色。
+                    color: undefined
+                  }
+                },
+                data: this.loopChartData
               }
             ]
-          },
-          series: [
-            {
-              name: "实例总数",
-              type: "pie",
-              radius: ["50%", "70%"],
-              avoidLabelOverlap: false,
-              legendHoverLink: false,
-              selectedOffset: 0,
-              label: {
-                color: 'rgb(121, 187, 255)',
-              },
-              emphasis: {
-                itemStyle: {
-                  // 高亮时点的颜色。
-                  color: undefined
-                }
-              },
-              data: this.loopChartData
-            }
-          ]
-        };
+          };
 
-        setTimeout(() => {
-          //实例化
+          setTimeout(() => {
+            //实例化
           that.loopChart = echarts.init(document.getElementById("loopchart"));
           //设置参数并加载
           that.loopChart.setOption(loopOption);
@@ -245,12 +352,25 @@ export default {
 #integrateStatistics {
   border-top: 5px solid #eee;
   .statistics-chart {
-    min-height: calc(35% - 3px);
+    /*min-height: calc(35% - 3px);*/
+
     .chart-title {
       padding: 5px 20px;
       font-size: 16px;
       font-weight: 500;
     }
+
+    .contain-title-leftblock {
+      height: 30px;
+      line-height: 30px;
+      /*border-left: 8px solid black;*/
+      display: inline-block;
+      margin: 8px 0;
+      font-weight: 600;
+      padding-left: 8px;
+      cursor: default;
+    }
+
   }
   .chart {
     min-height: 200px;
@@ -316,4 +436,4 @@ export default {
     }
   }
 }
-</style>
+</style>

+ 300 - 0
src/components/point/report/tabFunDetail.vue

@@ -0,0 +1,300 @@
+<template>
+  <div id="tabFunNumOverview">
+    <!-- 查询 新增 -->
+    <div class="query-area" style="padding:10px;">
+      <!--      <el-input :placeholder="`请输入表号功能号`" v-model="tabFunNum" @keyup.enter.native="handleCurrentChange(1)" style="width:240px;">-->
+      <!--        <i slot="suffix" class="el-input__icon el-icon-search" @click="handleCurrentChange(1)"></i>-->
+      <!--      </el-input>-->
+      <!--      <p style="overflow: hidden;float:right;">-->
+      <!--        <el-button style="height:32px" @click='handleDrawer({},3)'>新增自定义</el-button>-->
+      <!--      </p>-->
+      <el-select v-model="value" placeholder="请选择数据源">
+        <el-option
+          v-for="item in options"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value">
+        </el-option>
+      </el-select>
+      <el-select v-model="value" placeholder="请选择状态">
+        <el-option
+          v-for="item in options"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value">
+        </el-option>
+      </el-select>
+      <el-select v-model="value" placeholder="请选择获取方式">
+        <el-option
+          v-for="item in options"
+          :key="item.value"
+          :label="item.label"
+          :value="item.value">
+        </el-option>
+      </el-select>
+    </div>
+    <!-- 数据表格 -->
+    <div class="table-area">
+      <el-table :data="tableData" style="width: 100%" height="calc(100% - 32px)" v-loading="loading"
+                :header-cell-style="headerStyle"
+                @row-click="handleClickRow">
+        <el-table-column
+          label="序号"
+          type="index"
+        >
+        </el-table-column>
+                <el-table-column prop='' label='状态' show-overflow-tooltip width="35" header-align='center'>
+                  <template slot-scope="scope">
+                      <i class="el-icon-warning-outline" style="float:left;margin: 0 5px;color: red;font-size:18px;"></i>
+                  </template>
+                </el-table-column>
+        <el-table-column prop='MeterFunc' label='表号-功能号' show-overflow-tooltip align='center'></el-table-column>
+        <el-table-column prop='Data.Data' label='查看分精度' show-overflow-tooltip align='center'>
+          <template slot-scope="scope">
+            <el-button style="padding:7px 15px;font-size:15px;" @click="handleDrawer(scope.row, 0)">
+              <i class="el-icon-s-data"/></el-button>
+          </template>
+        </el-table-column>
+        <el-table-column prop='Data.Time' label='对应值 - 获取时间' show-overflow-tooltip min-width="270" header-align='center'
+                         align='center'
+                         style="position:relative;">
+          <template slot-scope="scope">
+            <div style="width:175px;display:inline-block;">
+              <span style="line-height:29px;">{{ scope.row.Data? (scope.row.Data.Data  || '--'): '--' }}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+              <span style="line-height:29px;">{{ scope.row.Data? scope.row.Data.Time : '' }}</span>
+            </div>
+            <span style="width:55.33px;display:inline-block;padding-left:10px;">
+              <el-button class="dialog-btn" @click="refreshThisRow(scope.row)"><i
+                class="el-icon-refresh"></i></el-button>
+            </span>
+          </template>
+        </el-table-column>
+        <el-table-column prop='RelatedPoint' label='涉及子系统点位(数据来源)' show-overflow-tooltip min-width="150" align='center'>
+          <template slot-scope="scope">
+            <span style="display:inline-block;width:16px;line-height:29px;">{{ scope.row.RelatedPoint }}</span>
+            <span style="width:55.33px;display:inline-block;padding-left:10px;">
+              <el-button class="dialog-btn" v-if="scope.row.RelatedPoint" @click="handleDrawer(scope.row, 1)"><i
+                class="el-icon-coin"></i></el-button>
+            </span>
+          </template>
+        </el-table-column>
+        <el-table-column prop='RelatedInstance' label='涉及的对象实例(应用到)' show-overflow-tooltip min-width="150"
+                         align='center'>
+          <template slot-scope="scope">
+            <span style="display:inline-block;width:16px;line-height:29px;">{{ scope.row.RelatedInstance }}</span>
+            <span style="width:55.33px;display:inline-block;padding-left:10px;">
+              <el-button class="dialog-btn" v-if="scope.row.RelatedInstance" @click="handleDrawer(scope.row, 2)"><i
+                class="el-icon-coin"></i>
+              </el-button>
+            </span>
+          </template>
+        </el-table-column>
+      </el-table>
+      <!-- 分页 -->
+      <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage"
+                     :page-sizes="pageSizes"
+                     :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"
+                     style="float:right;margin-top:10px;padding:2px 5px;">
+      </el-pagination>
+    </div>
+    <!-- 对话框和抽屉统一放在drawers中 -->
+    <!-- 对话框 -->
+    <el-dialog :title="'< ' + drawers[0].objId + ' > 的历史数据'" :visible.sync="drawers[0].drawer">
+      <historyChart :tabFunNum='drawers[0].objId'></historyChart>
+    </el-dialog>
+    <!-- 抽屉 -->
+    <el-drawer :title="'< ' + drawers[1].objId + ' > 的子系统点位'" :visible.sync="drawers[1].drawer"
+               :direction="drawers[1].direction" size="35%">
+      <dataSource :tabFunNum='drawers[1].objId'></dataSource>
+    </el-drawer>
+    <el-drawer :title="'< ' + drawers[2].objId + ' > 的对象实例'" :visible.sync="drawers[2].drawer"
+               :direction="drawers[2].direction" size="35%">
+      <objectInstance :tabFunNum='drawers[2].objId' :reValue='drawers[2].value'></objectInstance>
+    </el-drawer>
+    <el-dialog title="新增表号功能号" :visible.sync="drawers[3].drawer">
+      <addTabFunNum @closeDrawer="closeDrawer()" @reloadData="reloadData()"></addTabFunNum>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import {Message} from 'element-ui';
+  import {getTabFunNumOverview} from '@/api/scan/request'
+  import historyChart from './historyChart'
+  import dataSource from './dataSource'
+  import objectInstance from './objectInstance'
+  import addTabFunNum from './addTabFunNum'
+  import lStorage from '@/utils/localStorage'
+
+  export default {
+    data() {
+      return {
+        //表格头样式
+        headerStyle: {
+          backgroundColor: '#e1e4e5',
+          color: '#2b2b2b',
+          lineHeight: '30px'
+        },
+        // allTableData: [],//所有表格数据
+        tableData: [],
+        pageSizes: [10, 20, 50, 100],
+        pageSize: 50,
+        currentPage: 1,
+        total: 0,
+        loading: false,//加载
+        tabFunNum: null,//表号功能号
+        //抽屉
+        drawers: [
+          {drawer: false, direction: 'rtl', objId: ''},
+          {drawer: false, direction: 'rtl', objId: ''},
+          {drawer: false, direction: 'rtl', objId: '', value: ''},
+          {drawer: false, direction: 'rtl', objId: ''}
+        ]
+      }
+    },
+    methods: {
+      //抽屉处理
+      handleDrawer(row, index) {
+        if (index == 2 || index == 1) {
+          //实例数量大于0才能打开
+          if ((row.RelatedInstance > 0 && index == 2) || (row.RelatedPoint > 0 && index == 1)) {
+            this.drawers[index].value = row.Data ? row.Data.Data : '';
+            this.drawers[index].objId = row.MeterFunc;
+            this.drawers[index].drawer = true;
+          }
+        } else {
+          if (index != 3)
+            this.drawers[index].objId = row.MeterFunc;
+          this.drawers[index].drawer = true;
+        }
+      },
+      handleClickRow(row, column, event) {//点击表格行
+        lStorage.set('screen_data', {
+          path: this.$route.path,
+          data: {MeterFunc: row.MeterFunc, RelatedInstance: row.RelatedInstance}
+        })
+      },
+      //获取统计数据
+      getOverViewList() {
+        this.loading = true;
+        let pa = {
+          MeterFunc: this.tabFunNum,
+          PageSize: this.pageSize,
+          PageNumber: this.currentPage
+        }
+        getTabFunNumOverview(pa, res => {
+          // this.allTableData = res.Content;
+          this.tableData = res.Content;
+          this.total = res.Total
+          this.loading = false;
+        });
+      },
+      //刷新当前行数据
+      refreshThisRow(row) {
+        let index = this.tableData.indexOf(row);
+        let pa = {
+          MeterFunc: row.MeterFunc
+        }
+        getTabFunNumOverview(pa, res => {
+          res.Content.forEach(t => {
+            if (t.MeterFunc == row.MeterFunc) {
+              if (t.Data) {
+                this.tableData[index].Data.Data = t.Data.Data || '';
+                this.tableData[index].Data.Time = t.Data.Time || '';
+              }
+              this.tableData[index].DataQuality = t.DataQuality;
+              this.tableData[index].RelatedInstance = t.RelatedInstance;
+              this.tableData[index].RelatedPoint = t.RelatedPoint;
+            }
+          })
+          Message.success('已刷新');
+        });
+      },
+      //分页更换size
+      handleSizeChange(val) {
+        this.currentPage = 1;
+        this.pageSize = val;
+        this.getOverViewList()
+      },
+      //分页更换页
+      handleCurrentChange(val) {
+        this.currentPage = val;
+        this.getOverViewList()
+      },
+      //子组件关闭抽屉
+      closeDrawer() {
+        this.drawers[3].drawer = false;
+      },
+      //新建自定义后重载页面
+      reloadData() {
+        this.$emit('reloadData');
+      },
+      init() {
+        this.getOverViewList();
+      }
+    },
+    mounted() {
+      this.init();
+    },
+    computed: {
+      //根据分页,获取要展示的tableData
+      // tableData: function () {
+      //   return this.allTableData.slice(
+      //     (this.currentPage - 1) * this.pageSize,
+      //     (this.currentPage * this.pageSize < this.allTableData.length) ? this.currentPage * this.pageSize : this.allTableData.length);
+
+      // }
+    },
+    components: {
+      historyChart,
+      dataSource,
+      objectInstance,
+      addTabFunNum
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+  #tabFunNumOverview {
+    border-top: 5px solid #eee;
+    height: calc(100% - 5px);
+    width: 100%;
+    overflow: hidden;
+  }
+
+  .table-area {
+    height: calc(100% - 72px);
+    padding: 0px 10px 10px 10px;
+  }
+
+  .table-area i {
+    text-align: right;
+    font-size: 12px;
+    cursor: pointer;
+    float: right;
+  }
+
+  .dialog-btn {
+    display: none;
+    height: 29px;
+  }
+
+  /deep/ .el-drawer__body {
+    height: 90%;
+    overflow-y: auto;
+  }
+
+  /deep/ .el-table__body-wrapper tr:hover {
+    .dialog-btn {
+      display: inline;
+    }
+  }
+
+  /deep/ .el-dialog__body {
+    padding-bottom: 20px;
+  }
+
+  /deep/ .el-drawer__header > :first-child:focus {
+    outline: none;
+  }
+</style>

+ 9 - 0
src/data/menus.js

@@ -124,6 +124,15 @@ export default [
       // },
       {
         path: '/point/report',
+        name: '系统集成成果管理',
+        icon: '',
+        opts: [{
+          name: '查看',
+          basic: true,
+          permission: 'system:role:query'
+        }]
+      }, {
+        path: '/point/testing',
         name: '系统集成监测',
         icon: '',
         opts: [{

+ 7 - 0
src/router/system.js

@@ -22,6 +22,7 @@ import editDataSouce from '@/views/point/config_point/edit_origin'
 import pointSteps from '@/views/point/config_point/steps'
 import objectData from '@/views/point/objectData'
 import integrateReport from '@/views/point/report'
+import integratedDetection from '@/views/point/testing'
 import toolLibrary from '@/views/point/toolLibrary'
 import dynamicdata from '@/views/point/dynamicdata'
 import equipRela from '@/views/point/dynamicdata/addRelation/equipRela'
@@ -347,6 +348,12 @@ export default [{
         path: 'report',
         name: 'integrateReport',
         component: integrateReport,
+        meta: {keepAlive: false, breadcrumbs: [{label: '系统集成', path: '/point/pointsetting'}, {label: '系统集成成果管理'}]}
+      },
+      {
+        path: 'testing',
+        name: 'integratedDetection',
+        component: integratedDetection,
         meta: {keepAlive: false, breadcrumbs: [{label: '系统集成', path: '/point/pointsetting'}, {label: '系统集成监测'}]}
       },
       {

+ 4 - 2
src/views/point/config_point/edit_origin/dialog.vue

@@ -79,7 +79,7 @@
       <el-form-item>
         <el-button :disabled="formData.wangluo =='jianjie'?true:false">测试</el-button>
         <el-button @click="dialogVisible = false">取消</el-button>
-        <el-button type="primary">保存</el-button>
+        <el-button type="primary" @click="btnClick">保存</el-button>
       </el-form-item>
       <el-form-item label="测试日志">
         <el-input type="textarea" v-model="formData.ceshi" :autosize="{ minRows: 4, maxRows: 4}"
@@ -184,7 +184,9 @@
       openDialog(obj) {
         this.dialogVisible = true
         this.title = obj ? '编辑数据源' : '添加数据源'
-        this.getDataSouse(obj)
+        if (obj) {
+          this.getDataSouse(obj)
+        }
 
       },
       changeItem(ip, port) {

+ 1 - 1
src/views/point/config_point/edit_origin/index1.vue

@@ -2,7 +2,7 @@
     <div>
         <!-- <bread></bread> -->
         <div class="margin-view"></div>
-        <div class="btn-view">
+        <div class="btn-view" >
             <el-button class="btn" @click="btnClick">{{ id? '保存修改': '新建'}}</el-button>
         </div>
         <div class="content-view">

+ 1 - 10
src/views/point/config_point/index.vue

@@ -81,19 +81,10 @@
                 })
             },
             addItem() {
-                this.$router.push({
-                    path: "editDataSouce"
-                })
+              this.$refs.dialog.openDialog()
             },
             goEdit(item) {
-              console.log(item)
               this.$refs.dialog.openDialog(item)
-              // this.$router.push({
-              //     path: "editDataSouce",
-              //     query: {
-              //         key: item.Id
-              //     }
-              // })
             },
           del(item) {
             this.$confirm('删除后无法恢复,所有点位将丢失,是否需要删除', '提示', {

+ 95 - 0
src/views/point/testing/index.vue

@@ -0,0 +1,95 @@
+<template>
+  <div>
+    <!-- 系统集成统计页面 -->
+    <div class="contain-blocks">
+      <span class="contain-title-leftblock">
+         <i class="iconfont icon-juxing"/>
+        对应实例数量</span>
+      <div class="contain-data">
+        <integrateStatistics ref="chart" style="height: calc(100% - 5px);" :key="refresh" type="testing"></integrateStatistics>
+      </div>
+    </div>
+    <!-- 表号功能号总览页面 -->
+    <div class="contain-block meterFunc">
+      <span class="contain-title-leftblock">
+         <span class="iconfont icon-juxing"></span>
+        监测详情</span>
+      <div class="contain-data">
+        <tabFunDetail ref="table" :key="refresh" @reloadData="reloadData()"/>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+  import {mapGetters} from 'vuex'
+  import integrateStatistics from '@/components/point/report/integrateStatistics'
+  import tabFunDetail from '@/components/point/report/tabFunDetail'
+
+  export default {
+    components: {
+      integrateStatistics,
+      tabFunDetail
+    },
+    computed: {
+      ...mapGetters('layout', ['projectId']),
+    },
+    data() {
+      return {
+        refresh: ''//刷新组件
+      }
+    },
+    methods: {
+      //子组件中的新建完成后刷新
+      reloadData() {
+        this.refresh = new Date().getTime();
+      }
+    },
+    watch: {
+      //监听项目变化
+      projectId() {
+        this.refresh = new Date().getTime();
+      }
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+  .contain-blocks {
+    float: left;
+    height: 100%;
+    background: white;
+    width: 34%;
+    margin-right: 5px;
+  }
+
+  .contain-block {
+    float: left;
+    height: 100%;
+    background: white;
+    width: 65%;
+
+  }
+
+  .contain-title-leftblock {
+    height: 30px;
+    line-height: 30px;
+    /*border-left: 8px solid black;*/
+    display: inline-block;
+    margin: 8px 0;
+    font-weight: 600;
+    padding-left: 8px;
+    cursor: default;
+  }
+
+  .contain-data {
+    /*overflow: auto;*/
+    height: calc(100% - 46px);
+  }
+
+  @media screen and (max-width: 1600px) {
+    .meterFunc {
+      width: calc(100% - 400px);
+    }
+  }
+</style>

+ 1 - 1
src/views/point/toolLibrary/index.vue

@@ -5,7 +5,7 @@
       <el-button class="btn" type="text" @click="createTools">配置集成工具库</el-button>
     </div>
     <div class="tool-library-content">
-      <el-button type="text" v-for="item in list" class="btn" @click="detailItem(item)">{{item.val}}</el-button>
+      <el-button type="text" v-for="item in list" class="btn" :key="item.val" @click="detailItem(item)">{{item.val}}</el-button>
     </div>
     <detailDialog ref="detailObject"/>
     <settingDialog ref="setting"/>