Browse Source

修改配电

luogang 10 months ago
parent
commit
440a6f1006
2 changed files with 202 additions and 68 deletions
  1. 40 0
      ems-ui/src/api/device/device.js
  2. 162 68
      ems-ui/src/views/mgr/powerdist.vue

+ 40 - 0
ems-ui/src/api/device/device.js

@@ -60,3 +60,43 @@ export function delDevice(id) {
     method: 'delete'
     method: 'delete'
   })
   })
 }
 }
+// 查询设备
+export function getByCondition(params) {
+  return request({
+    url: '/ems/device/getByCondition' ,
+    method: 'get',
+    params
+  })
+}
+// 查询设备信息
+export function getDeviceDetail(params) {
+  return request({
+    url: '/ems/device/getDetail' ,
+    method: 'get',
+    params
+  })
+}
+//查询上游设备
+export function getByFlowRel(params) {
+  return request({
+    url: '/ems/device/getByFlowRel' ,
+    method: 'get',
+    params
+  })
+}
+// 查询设备属性信息
+export function getObjAttr(params) {
+  return request({
+    url: '/ems/object/attr/getObjAttr' ,
+    method: 'get',
+    params
+  })
+}
+// 查询设备最新1条指标
+export function getNewIndex(params) {
+  return request({
+    url: '/ems/object/loadIndex/getNewIndex' ,
+    method: 'get',
+    params
+  })
+}

+ 162 - 68
ems-ui/src/views/mgr/powerdist.vue

@@ -36,10 +36,9 @@
     <div class="powerdist-body">
     <div class="powerdist-body">
       <Panel title="变压器">
       <Panel title="变压器">
         <div class="transformer">
         <div class="transformer">
-          <el-select v-model="transformer" size="mini">
-            <el-option label="变压器1" :value="1"></el-option>
-            <!-- <el-option label="变压器2" :value="2"></el-option>
-            <el-option label="变压器3" :value="3"></el-option> -->
+          <el-select v-model="transformer" size="mini" @change="getTransformerInfo">
+            <el-option v-for="item in transformerOptions" :key="item.deviceCode" :label="item.deviceName"
+              :value="item.deviceCode"></el-option>
           </el-select>
           </el-select>
           <div class="transformer-info">
           <div class="transformer-info">
             <!-- <div class="info-header">
             <!-- <div class="info-header">
@@ -49,28 +48,18 @@
             </div> -->
             </div> -->
             <img src="@/assets/images/mgr/line.svg" class="lineImg" alt="">
             <img src="@/assets/images/mgr/line.svg" class="lineImg" alt="">
             <div class="arrowImg">
             <div class="arrowImg">
-              <span>10kV</span>
+              <span>{{ transformerInfo.ratedVoltage }}</span>
               <img src="@/assets/images/mgr/arrow.svg" alt="">
               <img src="@/assets/images/mgr/arrow.svg" alt="">
             </div>
             </div>
             <img class="transformerImg" src="@/assets/images/mgr/transformer.png" alt="">
             <img class="transformerImg" src="@/assets/images/mgr/transformer.png" alt="">
-            <!-- <div class="info-right">
-              <div>
-                <img src="@/assets/images/mgr/temperature.svg" alt="">
-                <span>温度:62.5°C</span>
-              </div>
-              <div>
-                <img src="@/assets/images/mgr/overhold.svg" alt="">
-                <span>负载率:72.5%</span>
-              </div>
-            </div> -->
           </div>
           </div>
           <el-descriptions class="custom-desc" title="设备参数" :column="2" size="mini" border>
           <el-descriptions class="custom-desc" title="设备参数" :column="2" size="mini" border>
-            <el-descriptions-item label="产品型号">S11-M-400/10</el-descriptions-item>
-            <el-descriptions-item label="额定容量">400kVA</el-descriptions-item>
-            <el-descriptions-item label="额定电压">10±5%/0.4kV</el-descriptions-item>
-            <el-descriptions-item label="额定频率">50HZ</el-descriptions-item>
-            <el-descriptions-item label="相数">3</el-descriptions-item>
-            <el-descriptions-item label="生产厂家">XX电器</el-descriptions-item>
+            <el-descriptions-item label="产品型号">{{ transformerInfo.deviceSpec }}</el-descriptions-item>
+            <el-descriptions-item label="额定容量">{{ transformerInfo.ratedCapacity }}</el-descriptions-item>
+            <el-descriptions-item label="额定电压">{{ transformerInfo.ratedVoltage }}</el-descriptions-item>
+            <el-descriptions-item label="额定频率">{{ transformerInfo.ratedFrequency }}</el-descriptions-item>
+            <el-descriptions-item label="相数">{{ transformerInfo.phaseNumber }}</el-descriptions-item>
+            <el-descriptions-item label="生产厂家">{{ transformerInfo.deviceBrand }}</el-descriptions-item>
           </el-descriptions>
           </el-descriptions>
           <alarm :alarmData="transformerAlarmData" />
           <alarm :alarmData="transformerAlarmData" />
         </div>
         </div>
@@ -78,19 +67,20 @@
       <Panel title="配电柜" background="linear-gradient( 180deg, #F1FEFF 0%, #FFFFFF 100%)">
       <Panel title="配电柜" background="linear-gradient( 180deg, #F1FEFF 0%, #FFFFFF 100%)">
         <div class="power">
         <div class="power">
           <el-select v-model="powerCode" size="mini" @change="powerChange">
           <el-select v-model="powerCode" size="mini" @change="powerChange">
-            <el-option v-for="item in powerList" :key="item.boxCode" :label="item.location" :value="item.boxCode"></el-option>
+            <el-option v-for="item in powerList" :key="item.deviceCode" :label="item.deviceName"
+              :value="item.deviceCode"></el-option>
           </el-select>
           </el-select>
           <div class="power-info">
           <div class="power-info">
             <div>
             <div>
-              <span>{{powerInfo.electricityA||'--'}}A</span>
+              <span>{{ powerInfo.la || '--' }}A</span>
               <span>A相</span>
               <span>A相</span>
             </div>
             </div>
             <div>
             <div>
-              <span>{{powerInfo.electricityB||'--'}}A</span>
+              <span>{{ powerInfo.lb || '--' }}A</span>
               <span>B相</span>
               <span>B相</span>
             </div>
             </div>
             <div>
             <div>
-              <span>{{powerInfo.electricityC||'--'}}A</span>
+              <span>{{ powerInfo.lc || '--' }}A</span>
               <span>C相</span>
               <span>C相</span>
             </div>
             </div>
           </div>
           </div>
@@ -99,35 +89,49 @@
             <div class="power-data-body">
             <div class="power-data-body">
               <div>
               <div>
                 <div class="data-name">功率因素</div>
                 <div class="data-name">功率因素</div>
-                <div class="data-num">{{powerInfo.power||'--'}}</div>
+                <div class="data-num">{{ powerInfo.pf || '--' }}</div>
               </div>
               </div>
               <div>
               <div>
                 <div class="power-data-row">
                 <div class="power-data-row">
                   <div>
                   <div>
                     <span class="data-name">A相电压</span>
                     <span class="data-name">A相电压</span>
-                    <span class="data-num">{{powerInfo.voltageA||'--'}}V</span>
+                    <span class="data-num">{{ powerInfo.ua || '--' }}V</span>
                   </div>
                   </div>
                   <div>
                   <div>
                     <span class="data-name">B相电压</span>
                     <span class="data-name">B相电压</span>
-                    <span class="data-num">{{powerInfo.voltageB||'--'}}V</span>
+                    <span class="data-num">{{ powerInfo.ub || '--' }}V</span>
                   </div>
                   </div>
                   <div>
                   <div>
                     <span class="data-name">C相电压</span>
                     <span class="data-name">C相电压</span>
-                    <span class="data-num">{{powerInfo.voltageC||'--'}}V</span>
+                    <span class="data-num">{{ powerInfo.uc || '--' }}V</span>
                   </div>
                   </div>
                 </div>
                 </div>
                 <div class="power-data-row">
                 <div class="power-data-row">
                   <div>
                   <div>
-                    <span class="data-name">AB线电压</span>
-                    <span class="data-num">233.2V</span>
+                    <span class="data-name">A相有功功率</span>
+                    <span class="data-num">{{ powerInfo.pa || '--' }}W</span>
                   </div>
                   </div>
                   <div>
                   <div>
-                    <span class="data-name">BC相电压</span>
-                    <span class="data-num">233.2V</span>
+                    <span class="data-name">B相有功功率</span>
+                    <span class="data-num">{{ powerInfo.pb || '--' }}W</span>
                   </div>
                   </div>
                   <div>
                   <div>
-                    <span class="data-name">AC相电压</span>
-                    <span class="data-num">233.2V</span>
+                    <span class="data-name">C相有功功率</span>
+                    <span class="data-num">{{ powerInfo.pc || '--' }}W</span>
+                  </div>
+                </div>
+                <div class="power-data-row">
+                  <div>
+                    <span class="data-name">A相无功功率</span>
+                    <span class="data-num">{{ powerInfo.ua || '--' }}W</span>
+                  </div>
+                  <div>
+                    <span class="data-name">B相无功功率</span>
+                    <span class="data-num">{{ powerInfo.ub || '--' }}W</span>
+                  </div>
+                  <div>
+                    <span class="data-name">C相无功功率</span>
+                    <span class="data-num">{{ powerInfo.uc || '--' }}W</span>
                   </div>
                   </div>
                 </div>
                 </div>
               </div>
               </div>
@@ -141,7 +145,7 @@
         <div class="switch">
         <div class="switch">
           <img class="rightArrow" src="@/assets/images/mgr/line2.svg" alt="">
           <img class="rightArrow" src="@/assets/images/mgr/line2.svg" alt="">
           <el-table :data="eqptList" style="width: 100%">
           <el-table :data="eqptList" style="width: 100%">
-            <el-table-column prop="eqptSpec"  show-overflow-tooltip label="支路">
+            <el-table-column prop="eqptSpec" show-overflow-tooltip label="支路">
             </el-table-column>
             </el-table-column>
             <el-table-column prop="current" align="center" width="100" label="额定电流">
             <el-table-column prop="current" align="center" width="100" label="额定电流">
             </el-table-column>
             </el-table-column>
@@ -160,13 +164,16 @@
   </div>
   </div>
 </template>
 </template>
 <script>
 <script>
-import { listPowerBox, getPowerIndexs, getEqptIndexs } from '@/api/device/powerbox.js'
-import { listAlarmInfo, updateAlarmInfo } from '@/api/alarm/alarm-info.js'
+import {listPowerBox, getPowerIndexs, getEqptIndexs} from '@/api/device/powerbox.js'
+import {listAlarmInfo, updateAlarmInfo} from '@/api/alarm/alarm-info.js'
+import {getByCondition, getDeviceDetail, getObjAttr, getByFlowRel, getNewIndex} from '@/api/device/device.js'
 export default {
 export default {
   name: 'Powerdist',
   name: 'Powerdist',
-  data() {
+  data () {
     return {
     return {
       transformer: 1,
       transformer: 1,
+      transformerOptions: [],
+      transformerInfo: {},
       transformerAlarmData: [
       transformerAlarmData: [
         {
         {
           name: '变压器油温值:90.3℃',
           name: '变压器油温值:90.3℃',
@@ -200,7 +207,7 @@ export default {
         }
         }
       ],
       ],
       powerAlarmData: [],
       powerAlarmData: [],
-      powerCode: 1,
+      powerCode: '',
       powerList: [],
       powerList: [],
       powerInfo: {},
       powerInfo: {},
       eqptList: []
       eqptList: []
@@ -210,16 +217,16 @@ export default {
     Panel: () => import('./components/panel'),
     Panel: () => import('./components/panel'),
     alarm: () => import('./components/alarm.vue')
     alarm: () => import('./components/alarm.vue')
   },
   },
-  mounted() {
-    this.getPowerList()
+  mounted () {
+    this.getTransformerList()
   },
   },
   methods: {
   methods: {
-    getPowerAlarmList() {
+    getPowerAlarmList () {
       listAlarmInfo({
       listAlarmInfo({
         objType: 4,
         objType: 4,
         objCode: this.powerCode,
         objCode: this.powerCode,
         alarmStateList: [0, 1]
         alarmStateList: [0, 1]
-      }).then(({ rows }) => {
+      }).then(({rows}) => {
         this.powerAlarmData = rows.map(item => ({
         this.powerAlarmData = rows.map(item => ({
           ...item,
           ...item,
           name: item.objName,
           name: item.objName,
@@ -228,23 +235,73 @@ export default {
         }))
         }))
       })
       })
     },
     },
-    getPowerList() {
-      listPowerBox().then(({ rows }) => {
-        this.powerList = rows
-        if (rows.length) {
-          this.powerCode = rows[0].boxCode
+    getPowerList () {
+      getByFlowRel({
+        upstreamObjType: 2,
+        upstreamObjCode: this.transformer,
+        deviceSubCategory: 'W2',
+        psCode: 'AP'
+      }).then(({data}) => {
+        this.powerList = data || []
+        if (data.length) {
+          this.powerCode = data[0].deviceCode
         }
         }
         this.powerChange()
         this.powerChange()
       })
       })
     },
     },
-    getPowerInfo() {
-      getPowerIndexs(this.powerCode).then(({ data }) => {
-        this.powerInfo = data || {}
+    getTransformerList () {
+      getByCondition({
+        deviceSubCategory: 'W2',
+        psCode: 'T'
+      }).then(({code, data}) => {
+        if (code === 200) {
+          this.transformerOptions = data
+          if (data && data.length) {
+            this.transformer = data[0].deviceCode
+          }
+          this.getTransformerInfo()
+        }
+      })
+    },
+    getTransformerInfo () {
+      getDeviceDetail({deviceCode: this.transformer}).then(({code, data}) => {
+        if (code === 200) {
+          this.transformerInfo = data
+          this.getTransformerAttr()
+          this.getPowerList()
+        }
       })
       })
     },
     },
-    getEqptList() {
+    getTransformerAttr () {
+      getObjAttr({
+        objType: 2,
+        objCode: this.transformer
+      }).then(({code, data}) => {
+        if (code === 200) {
+          if (data.attrs && data.attrs.length) {
+            data.attrs.forEach((item, index) => {
+              this.$set(this.transformerInfo, item.attrKey, data.attrValues[index].attrValue + item.attrUnit)
+            })
+          }
+        }
+      })
+    },
+
+    getPowerInfo () {
+      const [{deviceCode, refArea}] = this.powerList.filter(item => item.deviceCode === this.powerCode)
+      getNewIndex({
+        areaCode: refArea,
+        objType: '2',
+        objCode: deviceCode
+      }).then(({code, data}) => {
+        if (code === 200) {
+          this.powerInfo = data || {}
+        }
+      })
+    },
+    getEqptList () {
       this.eqptList = []
       this.eqptList = []
-      getEqptIndexs(this.powerCode).then(({ rows }) => {
+      getEqptIndexs(this.powerCode).then(({rows}) => {
         this.eqptList = (rows || []).map(item => ({
         this.eqptList = (rows || []).map(item => ({
           ...item,
           ...item,
           current: `${item.current || '--'}A`,
           current: `${item.current || '--'}A`,
@@ -253,16 +310,15 @@ export default {
         }))
         }))
       })
       })
     },
     },
-    powerChange() {
+    powerChange () {
       this.getPowerInfo()
       this.getPowerInfo()
-      this.getEqptList()
       this.getPowerAlarmList()
       this.getPowerAlarmList()
     },
     },
-    handlerPowerAlarm(row) {
+    handlerPowerAlarm (row) {
       updateAlarmInfo({
       updateAlarmInfo({
         id: row.id,
         id: row.id,
         alarmState: '2'
         alarmState: '2'
-      }).then(({ code }) => {
+      }).then(({code}) => {
         if (code === 200) {
         if (code === 200) {
           this.$modal.msgSuccess('处理成功')
           this.$modal.msgSuccess('处理成功')
           this.getPowerAlarmList()
           this.getPowerAlarmList()
@@ -281,34 +337,41 @@ export default {
   min-height: inherit;
   min-height: inherit;
   display: flex;
   display: flex;
   flex-direction: column;
   flex-direction: column;
+
   .powerdist-header {
   .powerdist-header {
     background: linear-gradient(180deg, #f1f5ff 0%, #ffffff 100%);
     background: linear-gradient(180deg, #f1f5ff 0%, #ffffff 100%);
     border-radius: 8px;
     border-radius: 8px;
     border: 3px solid #ffffff;
     border: 3px solid #ffffff;
     padding: 20px;
     padding: 20px;
-    > div:first-child {
+
+    >div:first-child {
       font-weight: 500;
       font-weight: 500;
       font-size: 20px;
       font-size: 20px;
       color: #212121;
       color: #212121;
     }
     }
+
     .powerdist-env {
     .powerdist-env {
       display: flex;
       display: flex;
       color: #515a6e;
       color: #515a6e;
       font-size: 14px;
       font-size: 14px;
       justify-content: space-evenly;
       justify-content: space-evenly;
-      > div {
+
+      >div {
         display: flex;
         display: flex;
         align-items: flex-end;
         align-items: flex-end;
+
         img {
         img {
           margin-right: 5px;
           margin-right: 5px;
           height: 30px;
           height: 30px;
         }
         }
-        > div {
+
+        >div {
           display: flex;
           display: flex;
           flex-direction: column;
           flex-direction: column;
           font-weight: 500;
           font-weight: 500;
           font-size: 18px;
           font-size: 18px;
           color: #405383;
           color: #405383;
+
           span:first-child {
           span:first-child {
             font-weight: 400;
             font-weight: 400;
             font-size: 14px;
             font-size: 14px;
@@ -319,69 +382,84 @@ export default {
       }
       }
     }
     }
   }
   }
+
   .powerdist-body {
   .powerdist-body {
     flex: 1;
     flex: 1;
     margin-top: 10px;
     margin-top: 10px;
     display: flex;
     display: flex;
-    > div {
+
+    >div {
       flex: 1;
       flex: 1;
+
       &:not(:first-child) {
       &:not(:first-child) {
         margin-left: 10px;
         margin-left: 10px;
       }
       }
     }
     }
+
     .transformer {
     .transformer {
       padding: 10px;
       padding: 10px;
+
       .transformer-info {
       .transformer-info {
         text-align: center;
         text-align: center;
         margin-top: 50px;
         margin-top: 50px;
         position: relative;
         position: relative;
       }
       }
+
       .transformerImg {
       .transformerImg {
         height: 150px;
         height: 150px;
       }
       }
-      .lineImg{
+
+      .lineImg {
         position: absolute;
         position: absolute;
         width: 275px;
         width: 275px;
         right: -38px;
         right: -38px;
         top: -20px;
         top: -20px;
       }
       }
+
       .arrowImg {
       .arrowImg {
         position: absolute;
         position: absolute;
         left: 5%;
         left: 5%;
         top: 25%;
         top: 25%;
+
         img {
         img {
           width: 80px;
           width: 80px;
         }
         }
+
         span {
         span {
           position: absolute;
           position: absolute;
           top: 10px;
           top: 10px;
           left: 10px;
           left: 10px;
         }
         }
       }
       }
+
       .info-header {
       .info-header {
         position: absolute;
         position: absolute;
         top: -20px;
         top: -20px;
         left: 50%;
         left: 50%;
         transform: translateX(-50%);
         transform: translateX(-50%);
         font-size: 14px;
         font-size: 14px;
+
         span {
         span {
           margin-left: 5px;
           margin-left: 5px;
           font-weight: bold;
           font-weight: bold;
         }
         }
       }
       }
+
       .info-right {
       .info-right {
         position: absolute;
         position: absolute;
         right: 0;
         right: 0;
         top: 50%;
         top: 50%;
         transform: translateY(-50%);
         transform: translateY(-50%);
         font-size: 14px;
         font-size: 14px;
-        > div {
+
+        >div {
           display: flex;
           display: flex;
           align-items: center;
           align-items: center;
           margin-top: 5px;
           margin-top: 5px;
         }
         }
       }
       }
     }
     }
+
     .custom-desc {
     .custom-desc {
       ::v-deep .el-descriptions__header {
       ::v-deep .el-descriptions__header {
         margin-bottom: 5px;
         margin-bottom: 5px;
@@ -389,6 +467,7 @@ export default {
         font-size: 14px;
         font-size: 14px;
         color: #212121;
         color: #212121;
       }
       }
+
       ::v-deep .el-descriptions-item__label {
       ::v-deep .el-descriptions-item__label {
         background: #f4f5fa;
         background: #f4f5fa;
         font-weight: 400;
         font-weight: 400;
@@ -399,12 +478,14 @@ export default {
 
 
     .power {
     .power {
       padding: 10px;
       padding: 10px;
+
       .power-info {
       .power-info {
         display: flex;
         display: flex;
         justify-content: space-between;
         justify-content: space-between;
         margin-top: 10px;
         margin-top: 10px;
         padding: 0 10px;
         padding: 0 10px;
-        > div {
+
+        >div {
           flex: 1;
           flex: 1;
           background: url('~@/assets/images/mgr/backA.svg') no-repeat;
           background: url('~@/assets/images/mgr/backA.svg') no-repeat;
           background-position: center;
           background-position: center;
@@ -416,16 +497,19 @@ export default {
           font-weight: 400;
           font-weight: 400;
           font-size: 12px;
           font-size: 12px;
           color: #6a6a6a;
           color: #6a6a6a;
+
           &:nth-child(2) {
           &:nth-child(2) {
             background: url('~@/assets/images/mgr/backB.svg') no-repeat;
             background: url('~@/assets/images/mgr/backB.svg') no-repeat;
             background-position: center;
             background-position: center;
             background-size: 70%;
             background-size: 70%;
           }
           }
+
           &:nth-child(3) {
           &:nth-child(3) {
             background: url('~@/assets/images/mgr/backC.svg') no-repeat;
             background: url('~@/assets/images/mgr/backC.svg') no-repeat;
             background-position: center;
             background-position: center;
             background-size: 70%;
             background-size: 70%;
           }
           }
+
           span:last-of-type {
           span:last-of-type {
             margin-top: 5px;
             margin-top: 5px;
             font-size: 13px;
             font-size: 13px;
@@ -433,8 +517,10 @@ export default {
           }
           }
         }
         }
       }
       }
+
       .power-data {
       .power-data {
         margin-top: 20px;
         margin-top: 20px;
+
         .power-data-title {
         .power-data-title {
           background: #f4f5fa;
           background: #f4f5fa;
           padding: 8px 10px;
           padding: 8px 10px;
@@ -442,30 +528,36 @@ export default {
           font-size: 14px;
           font-size: 14px;
           color: #212121;
           color: #212121;
         }
         }
+
         .power-data-body {
         .power-data-body {
           border: 1px solid #f0f1f2;
           border: 1px solid #f0f1f2;
           display: flex;
           display: flex;
           align-items: center;
           align-items: center;
           padding: 10px 20px;
           padding: 10px 20px;
           text-align: center;
           text-align: center;
-          > div:last-of-type {
+
+          >div:last-of-type {
             flex: 1;
             flex: 1;
             margin-left: 30px;
             margin-left: 30px;
           }
           }
+
           .power-data-row {
           .power-data-row {
             display: flex;
             display: flex;
             justify-content: space-between;
             justify-content: space-between;
             margin-top: 20px;
             margin-top: 20px;
-            > div {
+
+            >div {
               display: flex;
               display: flex;
               flex-direction: column;
               flex-direction: column;
             }
             }
           }
           }
+
           .data-name {
           .data-name {
             font-weight: 400;
             font-weight: 400;
             font-size: 13px;
             font-size: 13px;
             color: #212121;
             color: #212121;
           }
           }
+
           .data-num {
           .data-num {
             margin-top: 4px;
             margin-top: 4px;
             font-weight: 400;
             font-weight: 400;
@@ -475,10 +567,12 @@ export default {
         }
         }
       }
       }
     }
     }
+
     .switch {
     .switch {
       padding: 10px;
       padding: 10px;
       position: relative;
       position: relative;
-      .rightArrow{
+
+      .rightArrow {
         position: absolute;
         position: absolute;
         top: 65px;
         top: 65px;
         left: -20px;
         left: -20px;