From 1392d8f3def2c21e7a6fc15cf3f68fc1056ec0b6 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期二, 29 七月 2025 19:01:20 +0800
Subject: [PATCH] 三不原则

---
 src/views/dashboard/EquipmentSignage.vue |  683 ++++++++++++++++++++++++++++++++++++++++++--------------
 1 files changed, 510 insertions(+), 173 deletions(-)

diff --git a/src/views/dashboard/EquipmentSignage.vue b/src/views/dashboard/EquipmentSignage.vue
index 9b445fa..6fb7ba7 100644
--- a/src/views/dashboard/EquipmentSignage.vue
+++ b/src/views/dashboard/EquipmentSignage.vue
@@ -21,9 +21,10 @@
               <th>璁惧缂栧彿</th>
               <th>鍨嬪彿</th>
             </tr>
-            <tr v-for="(item,index) in equipmentList" :key="index" @click="selectEquipment(item)">
+            <tr v-for="(item,index) in equipmentList" :key="index" @click="selectEquipment(item)"
+                :style="{backgroundColor:equipmentId===item.equipmentId?'#1D94D4':''}">
               <td>{{item.equipmentId}}</td>
-              <td>{{item.equipmentType}}</td>
+              <td>{{item.equipmentModel}}</td>
             </tr>
           </table>
         </div>
@@ -37,37 +38,37 @@
             <dv-border-box-11 title="璁惧淇℃伅" class="info-container" style="flex:5;">
               <a-descriptions :column="3">
                 <a-descriptions-item label="缁熶竴缂栧彿">
-                  {{equipmentInfo.equipmentId}}
+                  {{equipmentInfo.num|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="ABC鏍囪瘑">
-                  {{equipmentInfo.ABCSymbol}}
+                  {{equipmentInfo.abc|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="璁惧鍚嶇О">
-                  {{equipmentInfo.equipmentName}}
+                  {{equipmentInfo.name|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="鍨嬪彿">
-                  {{equipmentInfo.equipmentType}}
+                  {{equipmentInfo.model|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="璁惧鍒嗙被">
-                  {{equipmentInfo.equipmentCategory}}
+                  {{equipmentInfo.equipmentCategoryName|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="宸ュ尯">
-                  {{equipmentInfo.workArea}}
+                  {{equipmentInfo.areaName|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="鎿嶄綔绯荤粺">
-                  {{equipmentInfo.driveType}}
+                  {{equipmentInfo.system|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="瑙勬牸">
-                  {{equipmentInfo.standard}}
+                  {{equipmentInfo.specification|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="缁存姢閮ㄩ棬">
-                  {{equipmentInfo.depart}}
+                  {{equipmentInfo.manageName|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="宸ユ">
-                  {{equipmentInfo.workshopSection}}
+                  {{equipmentInfo.workShopName|equipmentInfoDisplay}}
                 </a-descriptions-item>
-                <a-descriptions-item label="鎿嶄綔宸�">
-                  {{equipmentInfo.operator}}
+                <a-descriptions-item label="璁惧鐘舵��">
+                  {{equipmentInfo.equipmentStatus|equipmentInfoDisplay}}
                 </a-descriptions-item>
               </a-descriptions>
             </dv-border-box-11>
@@ -75,16 +76,26 @@
             <dv-border-box-11 title="鎿嶄綔璇佷俊鎭�" class="info-container" style="flex:2;">
               <a-descriptions :column="1">
                 <a-descriptions-item label="鎿嶄綔璇佺紪鍙�">
-                  {{equipmentInfo.equipmentId}}
+                  <a-tooltip>
+                    <template slot="title">
+                      {{operationCertificateInfo.num|equipmentInfoDisplay}}
+                    </template>
+                    {{operationCertificateInfo.num|equipmentInfoDisplay}}
+                  </a-tooltip>
                 </a-descriptions-item>
                 <a-descriptions-item label="褰撳墠鍛ㄦ湡鍒嗘暟">
-                  {{equipmentInfo.ABCSymbol}}
+                  {{operationCertificateInfo.currentCycleScore|equipmentInfoDisplay}}
                 </a-descriptions-item>
-                <a-descriptions-item label="鍙戣瘉鏃ユ湡">
-                  {{equipmentInfo.equipmentName}}
+                <a-descriptions-item label="鍙戣瘉/鎴鏃ユ湡">
+                  <a-tooltip>
+                    <template slot="title" v-if="operationCertificateInfo.issueDate||operationCertificateInfo.endTime">
+                      {{operationCertificateInfo.issueDate|equipmentInfoDisplay}}/{{operationCertificateInfo.endTime|equipmentInfoDisplay}}
+                    </template>
+                    {{operationCertificateInfo.issueDate|equipmentInfoDisplay}}/{{operationCertificateInfo.endTime|equipmentInfoDisplay}}
+                  </a-tooltip>
                 </a-descriptions-item>
-                <a-descriptions-item label="鍛ㄦ湡鎴鏃ユ湡">
-                  {{equipmentInfo.equipmentType}}
+                <a-descriptions-item label="鎿嶄綔宸�">
+                  {{operationCertificateInfo.realname|equipmentInfoDisplay}}
                 </a-descriptions-item>
               </a-descriptions>
             </dv-border-box-11>
@@ -92,76 +103,85 @@
             <dv-border-box-11 title="缁存姢淇℃伅" class="info-container" style="flex:2;">
               <a-descriptions :column="1">
                 <a-descriptions-item label="涓嬫涓変繚鏃ユ湡">
-                  {{equipmentInfo.equipmentId}}
+                  <a-tooltip>
+                    <template slot="title" v-if="equipmentInfo.nextThirdMaintenanceTime">
+                      {{equipmentInfo.nextThirdMaintenanceTime}}
+                    </template>
+                    {{equipmentInfo.nextThirdMaintenanceTime|equipmentInfoDisplay}}
+                  </a-tooltip>
                 </a-descriptions-item>
                 <a-descriptions-item label="涓嬫浜屼繚鏃ユ湡">
-                  {{equipmentInfo.ABCSymbol}}
+                  <a-tooltip>
+                    <template slot="title" v-if="equipmentInfo.nextSecondMaintenanceTime">
+                      {{equipmentInfo.nextSecondMaintenanceTime|equipmentInfoDisplay}}
+                    </template>
+                    {{equipmentInfo.nextSecondMaintenanceTime|equipmentInfoDisplay}}
+                  </a-tooltip>
                 </a-descriptions-item>
                 <a-descriptions-item label="鎶�鏈姸鎬�">
-                  {{equipmentInfo.equipmentName}}
+                  {{equipmentInfo.technology_status|equipmentInfoDisplay}}
                 </a-descriptions-item>
               </a-descriptions>
             </dv-border-box-11>
           </div>
 
           <!--鍔熻兘鎸夐挳鍖哄煙-->
-          <div style="display: flex;height: 30%;align-items: center;padding: 0 20px;color: #eee;">
+          <div style="display: flex;height: 30%;align-items: center;padding: 0 20px;color: #fff;">
             <div style="display: flex;justify-content:space-evenly;flex: 1">
               <div style="width: 45%;" class="info-card-container">
-                <div class="info-card-title">鏈湀鎶ヤ慨鏁伴噺</div>
-                <div class="info-card-value" style="color: #EAC910">20</div>
+                <div class="info-card-title">鏈湀鎶ヤ慨娆℃暟</div>
+                <div class="info-card-value" style="color: #EAC910">{{equipmentInfo.repairCount|equipmentInfoDisplay}}
+                </div>
               </div>
 
               <div style="width: 45%;" class="info-card-container">
-                <div class="info-card-title">璁惧鐘舵�侊紙缁翠慨涓瓑锛�</div>
-                <div class="info-card-value">缁翠慨涓�</div>
+                <div class="info-card-title">璁惧鐘舵��</div>
+                <div class="info-card-value">{{equipmentInfo.equipmentStatus|equipmentInfoDisplay}}</div>
               </div>
             </div>
 
             <div style="display: flex;justify-content: space-evenly;font-size: 20px;padding: 0 50px">
-              <dv-decoration-11 style="width: 200px;height: 70px;margin: 0 10px">澶囦欢淇℃伅</dv-decoration-11>
-              <dv-decoration-11 style="width: 200px;height: 70px;margin: 0 10px">淇濆吇璁″垝</dv-decoration-11>
-              <dv-decoration-11 style="width: 200px;height: 70px;margin: 0 10px">鎶ヤ慨</dv-decoration-11>
-              <dv-decoration-11 style="width: 200px;height: 70px;margin: 0 10px">璁惧鐝</dv-decoration-11>
+              <div v-for="(item,index) in buttonList" :key="index" @click="navigateToPage(item)"
+                   style="width: 200px;height: 70px;margin: 0 10px;cursor: pointer">
+                <dv-decoration-11>{{item.label}}</dv-decoration-11>
+              </div>
             </div>
           </div>
         </dv-border-box-12>
 
         <!--鍙充笅鍚勯」鏁版嵁鍥捐〃鍖哄煙-->
         <dv-border-box-12 style="height: 50%" class="right-bottom-row">
-          <div style="display: flex;justify-content:space-evenly;height: 100%">
+          <div style="display: flex;justify-content:space-evenly;height: 100%" v-show="isBelongToMdc">
             <div style="display: flex;flex-wrap: wrap;width: 30%;height: 100%">
               <div id="gauge_chart1" class="gauge-chart"></div>
               <div id="gauge_chart2" class="gauge-chart"></div>
               <div id="gauge_chart3" class="gauge-chart"></div>
               <div id="gauge_chart4" class="gauge-chart"></div>
             </div>
-            <div id="line_chart" style="width:40%;height: 100%;"></div>
-            <div style="width: 25%;height:100%;display: flex;align-items: center">
+            <div id="line_chart" :style="{width:lineChartWidth,height: '100%'}"></div>
+            <div v-show="isBelongToMdc&&isDisplayEquipmentDetails"
+                 style="width: 25%;height:100%;display: flex;align-items: center">
               <a-descriptions :column="2">
                 <a-descriptions-item label="杩愯妯″紡">
-                  {{equipmentInfo.equipmentId}}
+                  {{equipmentDetails.runModble|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="绋嬪簭鍙�">
-                  {{equipmentInfo.ABCSymbol}}
+                  {{equipmentDetails.sequencenumber|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="涓昏酱杞��">
-                  {{equipmentInfo.equipmentName}}
+                  {{equipmentDetails.spindlespeed|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="涓昏酱璐熻嵎">
-                  {{equipmentInfo.equipmentType}}
-                </a-descriptions-item>
-                <a-descriptions-item label="涓昏酱杞��">
-                  {{equipmentInfo.equipmentCategory}}
+                  {{equipmentDetails.spindleload|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="涓昏酱鍊嶇巼">
-                  {{equipmentInfo.workArea}}
+                  {{equipmentDetails.spindlebeilv|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="杩涚粰鍊嶇巼">
-                  {{equipmentInfo.driveType}}
+                  {{equipmentDetails.feedbeilv|equipmentInfoDisplay}}
                 </a-descriptions-item>
                 <a-descriptions-item label="鎶ヨ淇℃伅">
-                  {{equipmentInfo.standard}}
+                  {{equipmentDetails.alrmstate|equipmentInfoDisplay}}
                 </a-descriptions-item>
               </a-descriptions>
             </div>
@@ -169,17 +189,28 @@
         </dv-border-box-12>
       </div>
     </div>
+
+    <SignageModal ref="modalRef" :modalVisible="modalVisible" :modalWidth="modalWidth" :modalTitle=modalTitle
+                  :modalDataApiUrl="modalDataApiUrl"
+                  :modalDataApiParams="modalDataApiParams"
+                  @closeModal="modalVisible=false"/>
   </div>
 </template>
 
 <script>
   import signageApi from '@/api/signage'
   import moment from 'moment'
+  import SignageModal from './modules/SignageModal'
 
   export default {
     name: 'EquipmentSignage',
+    components: { SignageModal },
     props: {
       productionCode: {
+        type: String,
+        default: ''
+      },
+      workshopSectionProductionCode: {
         type: String,
         default: ''
       },
@@ -189,106 +220,304 @@
     },
     data() {
       return {
-        equipmentList: [
+        equipmentId: '',
+        equipmentList: [],
+        equipmentInfo: {},
+        operationCertificateInfo: {},
+        equipmentDetails: {},
+        buttonList: [
           {
-            equipmentId: '2140223',
-            equipmentType: 'CV4160'
+            label: '澶囦欢淇℃伅',
+            pageName: '',
+            modalDataApiUrl: ''
           },
           {
-            equipmentId: '2140224',
-            equipmentType: 'CV4161'
+            label: '淇濆吇璁″垝',
+            pageName: '',
+            modalDataApiUrl: '/eam/equipment/list'
           },
           {
-            equipmentId: '2140225',
-            equipmentType: 'CV4162'
+            label: '鎶ヤ慨',
+            pageName: 'eam-MalfunctionRepair',
+            modalDataApiUrl: ''
           },
           {
-            equipmentId: '2140226',
-            equipmentType: 'CV4163'
-          },
-          {
-            equipmentId: '2140227',
-            equipmentType: 'CV4164'
-          },
-          {
-            equipmentId: '2140227',
-            equipmentType: 'CV4165'
-          },
-          {
-            equipmentId: '2140228',
-            equipmentType: 'CV4166'
-          },
-          {
-            equipmentId: '2140229',
-            equipmentType: 'CV4167'
-          },
-          {
-            equipmentId: '2140230',
-            equipmentType: 'CV4168'
-          },
-          {
-            equipmentId: '2140231',
-            equipmentType: 'CV4169'
-          },
-          {
-            equipmentId: '2140232',
-            equipmentType: 'CV4170'
-          },
-          {
-            equipmentId: '2140233',
-            equipmentType: 'CV4171'
+            label: '璁惧鐝',
+            pageName: 'mdc-base-DeviceCalendar',
+            modalDataApiUrl: ''
           }
         ],
-        equipmentInfo: {
-          equipmentId: '2511563154',
-          ABCSymbol: '3312321421',
-          equipmentName: '鏈烘涓績',
-          equipmentType: 'CV4160',
-          equipmentCategory: '杞ф満',
-          workArea: 'A鍒嗗尯',
-          driveType: 'JSOWJDF',
-          standard: '鏃�',
-          depart: '杞ф満涓績',
-          workshopSection: '407涓�宸ユ',
-          operator: 'admin'
-        },
         lineChart: '',
+        lineChartWidth: '40%',
         lineChartData: [],
         gaugeChart1: '',
         gaugeChart2: '',
         gaugeChart3: '',
         gaugeChart4: '',
-        gaugeChartData1: [],
-        gaugeChartData2: [],
-        gaugeChartData3: [],
-        gaugeChartData4: [],
-        equipmentId: '2140223'
+        gaugeChartData: {
+          utilizationRate: 0,
+          startRate: 0,
+          openRate: 0,
+          overallEquipmentEfficiency: 0
+        },
+        hideLoadingDelayTime: 500,
+        isDisplayEquipmentDetails: false,
+        isBelongToMdc: true,// 鏄惁鍦╩dc璁惧琛ㄤ腑
+        modalVisible: false,
+        modalWidth: 1048,
+        modalTitle: '',
+        modalDataApiUrl: '',
+        modalTableColumns: [],
+        modalDataApiParams: {}
       }
+    },
+    created() {
+      this.equipmentId = this.productionCode
     },
     mounted() {
       window.addEventListener('resize', this.handleWindowResize)
-      this.drawCharts()
-      this.getChartDataByApi()
-    },
-    activated() {
-      this.handleWindowResize()
+      this.getOperationCertificateByApi()
+      // 鎿嶄綔宸ョ骇鐢ㄦ埛杩涘叆鏃惰皟鐢ㄦ帴鍙h幏鍙杕es璁惧鍒楄〃锛屽叾浣欐儏鍐佃幏鍙杕dc璁惧鍒楄〃
+      if (this.userType !== 1) this.getEquipmentListByApi()
+      else this.getAllAreaEquipmentListByApi()
     },
     beforeDestroy() {
       window.removeEventListener('resize', this.handleWindowResize)
     },
+    filters: {
+      equipmentInfoDisplay(value) {
+        return value ? value : '鏃�'
+      }
+    },
+    watch: {
+      isDisplayEquipmentDetails: {
+        handler(newVal) {
+          if (newVal) this.lineChartWidth = '40%'
+          else this.lineChartWidth = '65%'
+          this.$nextTick(() => {
+            if (this.lineChart) this.lineChart.resize()
+          })
+        },
+        immediate: true
+      }
+    },
     methods: {
-      selectEquipment(record) {
-        this.equipmentId = record.equipmentId
+      getOperationCertificateByApi() {
+        signageApi.getOperationCertificateApi()
+          .then(res => {
+            if (res.success && res.result.length > 0) this.operationCertificateInfo = res.result[0]
+          })
       },
 
+      getEquipmentListByApi() {
+        // 棣栭〉涓�杩涘叆鍗宠澶囩骇鎴栧伐娈电骇鏃讹紝workshopSectionProductionCode涓虹┖锛岄粯璁ゆ煡璇㈢涓�涓溅闂翠腑绗竴涓伐娈典笅鐨勮澶囧垪琛�
+        signageApi.getEquipmentListApi(this.workshopSectionProductionCode)
+          .then(res => {
+            if (res.success) {
+              this.equipmentList = res.result
+              if (!this.productionCode && this.equipmentList.length > 0) this.equipmentId = this.equipmentList[0].equipmentId
+            }
+          })
+          .finally(() => {
+            // 姝ゅ涓轰繚璇乪quipmentId姝e父璧嬪�煎悗鍐嶈皟鐢ㄦ帴鍙h幏鍙栧浘琛ㄦ暟鎹互鍙婅澶囪缁嗕俊鎭紙寮傛锛�
+            this.getChartDataByApi()
+            this.getEquipmentInfoByApi()
+            this.getEquipmentDetailsByApi()
+          })
+      },
+
+      getAllAreaEquipmentListByApi() {
+        signageApi.getAllAreaEquipmentListApi(this.workshopSectionProductionCode)
+          .then(res => {
+            if (res.success) {
+              this.equipmentList = res.result
+              this.equipmentList.forEach(item => {
+                item.equipmentId = item.num
+                item.equipmentModel = item.model
+              })
+              if (!this.productionCode && this.equipmentList.length > 0) this.equipmentId = this.equipmentList[0].equipmentId
+            }
+          })
+          .finally(() => {
+            // 姝ゅ涓轰繚璇乪quipmentId姝e父璧嬪�煎悗鍐嶈皟鐢ㄦ帴鍙h幏鍙栬澶囦俊鎭拰缁存姢淇℃伅锛堝紓姝ワ級
+            this.getEquipmentInfoByApi()
+          })
+      },
+
+      // 鑾峰彇鍙充笂瑙掕澶囦俊鎭拰缁存姢淇℃伅
+      getEquipmentInfoByApi() {
+        signageApi.getEquipmentInfoApi(this.equipmentId)
+          .then(res => {
+            if (res.success && res.result.length > 0) this.equipmentInfo = res.result[0]
+            else this.equipmentInfo = {}
+          })
+      },
+
+      /* 鑾峰彇鍙充笅瑙掕澶囪缁嗕俊鎭� */
+      getEquipmentDetailsByApi() {
+        signageApi.getEquipmentDetailsApi(this.equipmentId)
+          .then(res => {
+            if (res.success && res.result) {
+              this.equipmentDetails = res.result
+              this.isDisplayEquipmentDetails = true
+            }
+            else this.isDisplayEquipmentDetails = false
+          })
+      },
+
+      /* 鍙充笅瑙掑浘琛ㄦ暟鎹幏鍙栨眹鎬绘柟娉� */
       getChartDataByApi() {
-
+        this.getGaugeChartDataByApi()
+        this.getLineChartDataByApi()
       },
 
-      /* 缁樺埗鍥捐〃姹囨�绘柟娉� */
-      drawCharts() {
-        this.drawGaugeChart()
-        this.drawLineChart()
+      /* 鍗曞嚮璁惧鍒楄〃涓殑璁惧鏃惰Е鍙� */
+      selectEquipment(record) {
+        // 閬垮厤鐐瑰嚮鐩稿悓璁惧閲嶅鍙戦�佽姹�
+        if (record.equipmentId === this.equipmentId) return
+        this.equipmentId = record.equipmentId
+
+        // 闈炴搷浣滃伐绾ф椂闇�瑕佷紶鍏ヨ澶囩紪鍙蜂互鏌ヨ鍥捐〃鍙婅澶囧悇椤逛俊鎭暟鎹紝鎿嶄綔宸ョ骇鏃跺彲灏嗚澶囧垪琛ㄨ淇℃伅鐩存帴璧嬪�煎睍绀�
+        if (this.userType !== 1) {
+          this.getChartDataByApi()
+          this.getEquipmentDetailsByApi()
+          this.getEquipmentInfoByApi()
+        } else {
+          this.equipmentInfo = record
+        }
+      },
+
+      /* 鍗曞嚮鍙宠竟瀵艰埅鏍忓悗瑙﹀彂 */
+      navigateToPage(record) {
+        if (record.pageName) {
+          this.$router.push({
+            name: record.pageName,
+            params: { equipmentId: this.equipmentId }
+          })
+        } else {
+          this.$refs.modalRef.modalTableColumns = [
+            {
+              title: '#',
+              dataIndex: '',
+              key: 'rowIndex',
+              width: 60,
+              align: 'center',
+              customRender: function(t, r, index) {
+                return parseInt(index) + 1
+              }
+            },
+            {
+              width: 150,
+              align: 'center',
+              title: '璁惧缂栧彿',
+              dataIndex: 'num',
+              key: 'num'
+            },
+            {
+              width: 200,
+              align: 'center',
+              title: '璁惧鍚嶇О',
+              dataIndex: 'name',
+              key: 'name'
+            },
+            {
+              width: 200,
+              align: 'center',
+              title: '璁惧鍨嬪彿',
+              dataIndex: 'model',
+              key: 'model'
+            },
+            {
+              width: 250,
+              align: 'center',
+              title: '瑙勬牸',
+              key: 'specification',
+              dataIndex: 'specification'
+            },
+            {
+              width: 170,
+              align: 'center',
+              title: '涓嬫浜屼繚鏃堕棿',
+              key: 'nextSecondMaintenanceTime',
+              dataIndex: 'nextSecondMaintenanceTime'
+            },
+            {
+              width: 170,
+              align: 'center',
+              title: '涓嬫涓変繚鏃堕棿',
+              key: 'nextThirdMaintenanceTime',
+              dataIndex: 'nextThirdMaintenanceTime'
+            }
+          ]
+          this.modalWidth = 1248
+          this.modalTitle = record.label
+          this.modalDataApiParams = { num: this.equipmentId }
+          this.modalDataApiUrl = record.modalDataApiUrl
+          this.modalVisible = true
+        }
+      },
+
+      /* 璋冪敤鎺ュ彛鑾峰彇璁惧鏁堢巼缁熻 */
+      getGaugeChartDataByApi() {
+        this.gaugeChart1 = this.$echarts.init(document.getElementById('gauge_chart1'))
+        this.gaugeChart2 = this.$echarts.init(document.getElementById('gauge_chart2'))
+        this.gaugeChart3 = this.$echarts.init(document.getElementById('gauge_chart3'))
+        this.gaugeChart4 = this.$echarts.init(document.getElementById('gauge_chart4'))
+        this.gaugeChart1.showLoading({
+          text: '鏁版嵁鍔犺浇涓� ...',
+          color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
+          textColor: '#fff',
+          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+        })
+        this.gaugeChart2.showLoading({
+          text: '鏁版嵁鍔犺浇涓� ...',
+          color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
+          textColor: '#fff',
+          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+        })
+        this.gaugeChart3.showLoading({
+          text: '鏁版嵁鍔犺浇涓� ...',
+          color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
+          textColor: '#fff',
+          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+        })
+        this.gaugeChart4.showLoading({
+          text: '鏁版嵁鍔犺浇涓� ...',
+          color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
+          textColor: '#fff',
+          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+        })
+
+        signageApi.getEquipmentLevelEfficiencyStatisticsApi(this.equipmentId)
+          .then(res => {
+            if (res.success && res.result) {
+              this.gaugeChartData = res.result
+              this.isBelongToMdc = true
+              this.drawGaugeChart()
+            }
+            else this.isBelongToMdc = false
+          })
+      },
+
+      /* 璋冪敤鎺ュ彛鑾峰彇鏁村勾搴﹀埄鐢ㄧ巼 */
+      getLineChartDataByApi() {
+        this.lineChart = this.$echarts.init(document.getElementById('line_chart'))
+        this.lineChart.showLoading({
+          text: '鏁版嵁鍔犺浇涓� ...',
+          color: '#0696e1', // 鍔犺浇鍔ㄧ敾棰滆壊
+          textColor: '#fff',
+          maskColor: 'rgba(1, 25, 75, 0.2)' // 閬僵灞�
+        })
+
+        signageApi.getEquipmentAnnualEfficiencyStatisticsApi(this.equipmentId)
+          .then(res => {
+            if (res.success && res.result) {
+              this.lineChartData = res.result
+              this.isBelongToMdc = true
+              this.drawLineChart()
+            }
+            else this.isBelongToMdc = false
+          })
       },
 
       /* 缁樺埗浠〃鐩樺浘琛� */
@@ -303,12 +532,13 @@
               // 涓绘爣棰樻枃鏈牱寮�
               fontSize: 18,
               fontWeight: 'normal',
-              color: '#00A8AC',
-              fontWeight: 'bold'
+              color: '#1AD8DE'
             }
           },
           tooltip: {
-            formatter: '{a} <br/>{b} : {c}%'
+            formatter: params => {
+              return params.seriesName + '锛�' + params.value + '%'
+            }
           },
           grid: {
             left: '1%',
@@ -318,7 +548,7 @@
           },
           series: [
             {
-              name: '鍒╃敤鐜�',
+              name: '',
               type: 'gauge',
               radius: '80%',
               center: ['50%', '60%'],    // 榛樿鍏ㄥ眬灞呬腑
@@ -354,9 +584,9 @@
               axisLine: {
                 lineStyle: { // 灞炴�ineStyle鎺у埗绾挎潯鏍峰紡
                   color: [ //琛ㄧ洏棰滆壊
-                    [0.3, '#E7781E'],//0-30%澶勭殑棰滆壊
-                    [0.7, '#C5C039'],//30%-60%澶勭殑棰滆壊
-                    [1, '#21C77F']//90%-100%澶勭殑棰滆壊
+                    [0.3, '#F56436'],//0-30%澶勭殑棰滆壊
+                    [0.7, '#FFFF40'],//30%-60%澶勭殑棰滆壊
+                    [1, '#0FC61A']//90%-100%澶勭殑棰滆壊
                   ],
                   width: 15//琛ㄧ洏瀹藉害
                 }
@@ -371,7 +601,7 @@
                   }
                 }
               },
-              data: [{ value: 100 }]
+              data: []
             }
           ]
         }
@@ -383,56 +613,155 @@
 
       /* 缁樺埗鍒╃敤鐜囦华琛ㄧ洏鍥捐〃 */
       drawGaugeChart1(opt) {
-        this.gaugeChart1 = this.$echarts.init(document.getElementById('gauge_chart1'))
         const option = Object.assign({}, opt)
-        option.title.text = '鍒╃敤鐜�'
-        this.gaugeChart1.setOption(option, true)
+
+        signageApi.getGaugeColorByTypeApi('lyl')
+          .then(res => {
+            if (res.success) {
+              const colorRange = res.result.map(item => item = [+item.maximumRange / 100, item.rateParameterColor])
+              option.series[0].axisLine.lineStyle.color = colorRange
+            }
+          })
+          .finally(() => {
+            option.title.text = moment().subtract(1, 'days').format('M鏈圖鏃�') + 'TEEP'
+            option.series[0].name = 'TEEP'
+            option.series[0].data = [this.gaugeChartData.utilizationRate]
+            this.gaugeChart1.setOption(option, true)
+            setTimeout(() => this.gaugeChart1.hideLoading(), this.hideLoadingDelayTime)
+          })
+
+        this.gaugeChart1.getZr().on('click', params => {
+          // 浠呮湁鐐瑰嚮琛ㄧ洏鍖哄煙鎵嶄細鏈変互涓嬪睘鎬э紝topTarget琛ㄧず瑙﹀彂浜嬩欢瀵硅薄锛宻hape琛ㄧず瑙﹀彂浜嬩欢瀵硅薄鐨勫浘鍍忓睘鎬э紝clockwise琛ㄧず琛ㄧ洏鏄惁浠ラ『鏃堕拡鎺掑垪锛岄粯璁や负true
+          if (params.topTarget && params.topTarget.shape && params.topTarget.shape.clockwise !== undefined) {
+            this.$router.push({
+              name: 'mdc-base-StatisticsChart',
+              params: {
+                isEquipment: true,
+                productionId: this.equipmentId,
+                tierName: this.equipmentList.find(item => item.equipmentId === this.equipmentId).equipmentName
+              }
+            })
+          }
+        })
       },
 
       /* 缁樺埗寮�鍔ㄧ巼浠〃鐩樺浘琛� */
       drawGaugeChart2(opt) {
-        this.gaugeChart2 = this.$echarts.init(document.getElementById('gauge_chart2'))
         const option = Object.assign({}, opt)
-        option.title.text = '寮�鍔ㄧ巼'
-        this.gaugeChart2.setOption(option, true)
+
+        signageApi.getGaugeColorByTypeApi('kdl')
+          .then(res => {
+            if (res.success) {
+              const colorRange = res.result.map(item => item = [+item.maximumRange / 100, item.rateParameterColor])
+              option.series[0].axisLine.lineStyle.color = colorRange
+            }
+          })
+          .finally(() => {
+            option.title.text = moment().subtract(1, 'days').format('M鏈圖鏃�') + '寮�鍔ㄧ巼'
+            option.series[0].name = '寮�鍔ㄧ巼'
+            option.series[0].data = [this.gaugeChartData.startRate]
+            this.gaugeChart2.setOption(option, true)
+            setTimeout(() => this.gaugeChart2.hideLoading(), this.hideLoadingDelayTime)
+          })
+
+        this.gaugeChart2.getZr().on('click', params => {
+          // 浠呮湁鐐瑰嚮琛ㄧ洏鍖哄煙鎵嶄細鏈変互涓嬪睘鎬э紝topTarget琛ㄧず瑙﹀彂浜嬩欢瀵硅薄锛宻hape琛ㄧず瑙﹀彂浜嬩欢瀵硅薄鐨勫浘鍍忓睘鎬э紝clockwise琛ㄧず琛ㄧ洏鏄惁浠ラ『鏃堕拡鎺掑垪锛岄粯璁や负true
+          if (params.topTarget && params.topTarget.shape && params.topTarget.shape.clockwise !== undefined) {
+            this.$router.push({
+              name: 'mdc-base-StatisticsChart',
+              params: {
+                isEquipment: true,
+                productionId: this.equipmentId,
+                tierName: this.equipmentList.find(item => item.equipmentId === this.equipmentId).equipmentName
+              }
+            })
+          }
+        })
       },
 
       /* 缁樺埗寮�鏈虹巼浠〃鐩樺浘琛� */
       drawGaugeChart3(opt) {
-        this.gaugeChart3 = this.$echarts.init(document.getElementById('gauge_chart3'))
         const option = Object.assign({}, opt)
-        option.title.text = '寮�鏈虹巼'
-        this.gaugeChart3.setOption(option, true)
+
+        signageApi.getGaugeColorByTypeApi('kdl')
+          .then(res => {
+            if (res.success) {
+              const colorRange = res.result.map(item => item = [+item.maximumRange / 100, item.rateParameterColor])
+              option.series[0].axisLine.lineStyle.color = colorRange
+            }
+          })
+          .finally(() => {
+            option.title.text = moment().subtract(1, 'days').format('M鏈圖鏃�') + '寮�鏈虹巼'
+            option.series[0].name = '寮�鏈虹巼'
+            option.series[0].data = [this.gaugeChartData.openRate]
+            this.gaugeChart3.setOption(option, true)
+            setTimeout(() => this.gaugeChart3.hideLoading(), this.hideLoadingDelayTime)
+          })
+
+        this.gaugeChart3.getZr().on('click', params => {
+          // 浠呮湁鐐瑰嚮琛ㄧ洏鍖哄煙鎵嶄細鏈変互涓嬪睘鎬э紝topTarget琛ㄧず瑙﹀彂浜嬩欢瀵硅薄锛宻hape琛ㄧず瑙﹀彂浜嬩欢瀵硅薄鐨勫浘鍍忓睘鎬э紝clockwise琛ㄧず琛ㄧ洏鏄惁浠ラ『鏃堕拡鎺掑垪锛岄粯璁や负true
+          if (params.topTarget && params.topTarget.shape && params.topTarget.shape.clockwise !== undefined) {
+            this.$router.push({
+              name: 'mdc-base-StatisticsChart',
+              params: {
+                isEquipment: true,
+                productionId: this.equipmentId,
+                tierName: this.equipmentList.find(item => item.equipmentId === this.equipmentId).equipmentName
+              }
+            })
+          }
+        })
       },
 
       /* 缁樺埗OEE浠〃鐩樺浘琛� */
       drawGaugeChart4(opt) {
-        this.gaugeChart4 = this.$echarts.init(document.getElementById('gauge_chart4'))
         const option = Object.assign({}, opt)
-        option.title.text = 'OEE'
-        this.gaugeChart4.setOption(option, true)
+
+        signageApi.getGaugeColorByTypeApi('lyl')
+          .then(res => {
+            if (res.success) {
+              const colorRange = res.result.map(item => item = [+item.maximumRange / 100, item.rateParameterColor])
+              option.series[0].axisLine.lineStyle.color = colorRange
+            }
+          })
+          .finally(() => {
+            option.title.text = moment().subtract(1, 'months').format('M鏈�') + `OEE`
+            option.series[0].name = 'OEE'
+            option.series[0].data = [this.gaugeChartData.overallEquipmentEfficiency]
+            this.gaugeChart4.setOption(option, true)
+            setTimeout(() => this.gaugeChart4.hideLoading(), this.hideLoadingDelayTime)
+          })
+
+        this.gaugeChart4.getZr().on('click', params => {
+          // 浠呮湁鐐瑰嚮琛ㄧ洏鍖哄煙鎵嶄細鏈変互涓嬪睘鎬э紝topTarget琛ㄧず瑙﹀彂浜嬩欢瀵硅薄锛宻hape琛ㄧず瑙﹀彂浜嬩欢瀵硅薄鐨勫浘鍍忓睘鎬э紝clockwise琛ㄧず琛ㄧ洏鏄惁浠ラ『鏃堕拡鎺掑垪锛岄粯璁や负true
+          if (params.topTarget && params.topTarget.shape && params.topTarget.shape.clockwise !== undefined) {
+            this.$router.push({
+              name: 'mdc-base-OEEAnalysis',
+              params: { isEquipment: true, productionId: this.equipmentId }
+            })
+          }
+        })
       },
 
       /* 缁樺埗鎶樼嚎鍥� */
       drawLineChart() {
-        this.lineChart = this.$echarts.init(document.getElementById('line_chart'))
         const newData = {
-          xAxis: ['1鏈�', '2鏈�', '3鏈�', '4鏈�', '5鏈�', '6鏈�', '7鏈�', '8鏈�', '9鏈�', '10鏈�', '11鏈�', '12鏈�'],
+          xAxis: this.lineChartData.dateList,
           yAxis: [
             {
-              name: '鍒╃敤鐜�',
-              value: [20, 60, 50, 60, 20, 50, 60, 70, 23, 40, 60, 70]
+              name: 'TEEP',
+              value: this.lineChartData.dataList.map(item => item.utilizationRate)
             },
             {
               name: '寮�鍔ㄧ巼',
-              value: [23, 60, 44, 40, 74, 80, 60, 90, 70, 40, 70, 40]
+              value: this.lineChartData.dataList.map(item => item.startRate)
             },
             {
               name: 'OEE',
-              value: [90, 70, 40, 70, 80, 60, 73, 60, 70, 90, 40, 65]
+              value: this.lineChartData.dataList.map(item => item.overallEquipmentEfficiency)
             }
           ],
-          yAxisName: '鏁村勾搴﹀埄鐢ㄧ巼'
+          yAxisName: '鏁村勾搴EEP(%)'
         }
         let legendData = []
         let seriesData = []
@@ -446,6 +775,13 @@
             symbolSize: 8,
             itemStyle: {
               color: colorArr[index1]
+            },
+            label: {
+              show: true,
+              position: 'top',
+              textStyle: {
+                color: 'inherit'
+              }
             },
             lineStyle: {
               width: 2
@@ -466,6 +802,17 @@
             trigger: 'axis',
             axisPointer: {
               type: 'shadow'
+            },
+            formatter: function(params) {
+              let result = ''
+              params.forEach((item, index) => {
+                let dom = `<span style="display:inline-block;width:10px;height:10px;border-radius:100px;margin-right:5px;background:${item.color}"></span>${item.seriesName}锛�${item.value}%`
+                if (index === 0) {
+                  result = `<span style="font-weight:bolder;">${item.name}</span>`
+                }
+                result += '<br />' + dom
+              })
+              return result
             }
           },
           legend: {
@@ -475,7 +822,7 @@
             itemGap: 10,
             textStyle: {
               fontSize: 14,
-              color: '#ccc'
+              color: '#fff'
             }
           },
           xAxis: {
@@ -484,14 +831,14 @@
             axisLabel: {
               interval: 0,
               show: true,
-              fontSize: 12,
-              color: '#50729A'
+              fontSize: 14,
+              color: '#fff'
               // rotate: -30,
             },
             axisLine: {
               show: true,
               lineStyle: {
-                color: '#50729A'
+                color: '#fff'
               }
             },
             axisTick: {
@@ -503,9 +850,9 @@
             {
               name: newData.yAxisName,
               nameTextStyle: {
-                color: '#00A8AC',
+                color: '#1AD8DE',
                 fontSize: 18,
-                padding: [0, 0, 0, 90]
+                padding: [0, 0, 0, 120]
               },
               nameGap: 25,
               type: 'value',
@@ -513,7 +860,7 @@
               axisLine: {
                 show: true,
                 lineStyle: {
-                  color: '#50729A'
+                  color: '#fff'
                 }
               },
               axisTick: {
@@ -522,22 +869,24 @@
               splitLine: {
                 show: false,
                 lineStyle: {
-                  color: '#3E4A82'
+                  color: '#fff'
                 }
               }
             },
             {
               type: 'value',
-              position: 'right',
+              position: 'left',
               splitNumber: 5,
+              max: 100,
               axisLabel: {
                 show: true,
-                color: '#50729A'
+                color: '#fff',
+                fontSize:14
               },
               axisLine: {
                 show: true,
                 lineStyle: {
-                  color: '#50729A'
+                  color: '#fff'
                 }
               },
               axisTick: {
@@ -546,7 +895,7 @@
               splitLine: {
                 show: false,
                 lineStyle: {
-                  color: '#3E4A82'
+                  color: '#fff'
                 }
               }
             }
@@ -554,6 +903,7 @@
           series: seriesData
         }
         this.lineChart.setOption(option, true)
+        setTimeout(() => this.lineChart.hideLoading(), this.hideLoadingDelayTime)
       },
 
       /**
@@ -581,20 +931,9 @@
       .left-col {
         padding: 0 10px 0;
 
-        .back-nav {
-          width: 100px;
-          height: 30px;
-          color: #eee;
-          position: absolute;
-          top: 15px;
-          left: 15px;
-          cursor: pointer;
-          z-index: 9999
-        }
-
         .equipmentId-container {
           height: 100%;
-          color: #eee;
+          color: #fff;
           display: flex;
           justify-content: center;
           align-items: center;
@@ -602,7 +941,7 @@
         }
 
         table {
-          color: #eee;
+          color: #fff;
           width: 100%;
           border-collapse: collapse;
           border-spacing: 0;
@@ -620,7 +959,7 @@
 
             th {
               font-weight: bold;
-              background-color: #10695D;
+              background-color: #1CB29D;
               position: sticky;
               z-index: 9999;
               top: 0;
@@ -643,7 +982,7 @@
           }
 
           .info-card-container {
-            background-color: #67C23A;
+            background-color: #0FC61A;
             padding: 5px;
             border-radius: 3px;
 
@@ -682,12 +1021,10 @@
     padding-bottom: 25px;
     white-space: nowrap;
     overflow: hidden;
-    -ms-text-overflow: ellipsis;
-    text-overflow: ellipsis;
   }
 
   /deep/ .ant-descriptions-item-label, /deep/ .ant-descriptions-item-content {
-    color: #eee;
+    color: #fff;
     font-size: 16px;
   }
 

--
Gitblit v1.9.3