From 75b68e6680ac060c408753677e952d4f4547756c Mon Sep 17 00:00:00 2001
From: lzhe <lzhe@example.com>
Date: 星期五, 08 十一月 2024 18:27:18 +0800
Subject: [PATCH] 1

---
 src/views/mdc/station-live.vue |  286 ++++++++++++++++++++++++---------------------------------
 1 files changed, 120 insertions(+), 166 deletions(-)

diff --git a/src/views/mdc/station-live.vue b/src/views/mdc/station-live.vue
index b60879c..6aa3a6a 100644
--- a/src/views/mdc/station-live.vue
+++ b/src/views/mdc/station-live.vue
@@ -2,19 +2,19 @@
  * @Author: lzhe lzhe@example.com
  * @Date: 2024-03-26 10:28:33
  * @LastEditors: lzhe lzhe@example.com
- * @LastEditTime: 2024-06-17 22:29:43
+ * @LastEditTime: 2024-11-08 18:26:10
  * @FilePath: /smart-web/src/views/master/person/main/index.vue
  * @Description: 杩欐槸榛樿璁剧疆,璇疯缃甡customMade`, 鎵撳紑koroFileHeader鏌ョ湅閰嶇疆 杩涜璁剧疆: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 -->
 <template>
 	<div class="aposcope-main">
 		<div class="aposcope-left">
-			<div class="left-title">鏌ヨ鏉′欢</div>
-			<el-tree :data="tableData" node-key="id" default-expand-all :expand-on-click-node="false" :props="defalutProps" @node-click="handleNodeClick" ref="treeRef" highlight-current />
+			<!-- <div class="left-title">鏌ヨ鏉′欢</div> -->
+			<MYTree v-model="treeChecked" @loaded="query"></MYTree>
 		</div>
 		<div class="aposcope-right">
 			<div class="content-machine-box">
-				<div class="content-machine-img"><img src="./station.png" alt=""></div>
+				<div class="content-machine-img"><img :src="stationForm.avatar" alt=""></div>
 				<div class="content-machine-detail">
 					<div class="content-machine-name">{{stationForm.machineName}}</div>
 					<el-form :model="stationForm" ref="dialogForm" label-width="80px" label-position="center" style="width: 100%;">
@@ -46,11 +46,12 @@
 						</div>
 					</div>
 					<div class="fact-analysis-card" v-for="item in dmpList" v-if="dmpList.length != 0">
-						<div class="card-name" :style="{'background-color': item.color}">{{item.description}}</div>
+						<div class="card-name" :style="{'background-color': item.color}">{{item.dpLabel}}</div>
 						<div :class="{'card-value': true,'card-value-bg1':item.name != 'Alarm','card-value-bg2':item.name == 'Alarm'}">{{item.codeName}}</div>
 					</div>
 				</div>
 			</div>
+			
 			<el-tabs type="border-card" class="demo-tabs">
 			    <el-tab-pane label="宸ヤ綅鏁版嵁">
 					<div style="text-align: right;margin-bottom: 14px;">
@@ -60,45 +61,7 @@
 			    		<div><div id="wcs-left" style="width: 100%;height:400px;"></div></div>
 			    		<div><div id="wcs-right" style="width: 100%;height:400px;"></div></div>
 			    	</div>
-					<div class="bottom-panel content-panel">
-						<div class="panel-title">鐝鐘舵�佽褰�</div>
-						<div class="panel-content bottom-panel-chart">
-							<div class="status">
-								<div class="feed-button" @click="table_edit">鐘舵�佸弽棣�</div>
-								<div class="status-wrap align-left">
-									<div class="collect-status">閲囬泦鐘舵��</div>
-									<div class="status-box" v-for="item in achievements"><div class="status-color" :style="{'background-color': item.color}"></div>{{ item.name }}</div>
-								</div>
-								<div class="status-wrap">
-									<el-checkbox v-model="checked1" label="浜哄伐鍙嶉鐘舵��" size="large" />
-									<div class="status-con">
-										<div class="status-box" v-for="item in collectionstatus"><div class="status-color" :style="{'background-color': item.color}"></div>{{ item.name }}</div>
-									</div>
-								</div>
-							</div>
-						</div>
-						<div style="padding: 8px;">
-							<div id="wcs-log" style="width: 100%;height:200px;"></div>
-							<el-table ref="multipleTableRef1" :data="recordData" border style="width: 100%;">
-								<el-table-column prop="shiftIndexName" label="鐝"></el-table-column>
-								<el-table-column prop="5" label="璋冭瘯"></el-table-column>
-								<el-table-column prop="4" label="绂荤嚎"></el-table-column>
-								<el-table-column prop="3" label="寰呮満"></el-table-column>
-								<el-table-column prop="1" label="鎶ヨ"></el-table-column>
-								<el-table-column prop="2" label="杩愯"></el-table-column>
-								<el-table-column prop="oee" label="绋煎姩鐜�%">
-									<template #default="scope">
-										<span>{{(Number(scope.row.oee) * 100).toFixed(2)}}</span>
-									</template>
-								</el-table-column>
-								<el-table-column prop="perdata" label="鎶ヨ鐜�%">
-									<template #default="scope">
-										<span>{{(Number(scope.row.fault) * 100).toFixed(2)}}</span>
-									</template>
-								</el-table-column>
-							</el-table>
-						</div>
-					</div>
+					
 			    </el-tab-pane>
 			    <el-tab-pane label="鏈哄櫒灞ュ巻">
 					<div class="alarm-title">鎶ヨ淇℃伅灞ュ巻</div>
@@ -119,21 +82,64 @@
 					</el-pagination>
 				</el-tab-pane>
 			 </el-tabs>
+
+			 <div class="bottom-panel content-panel">
+				<div class="panel-title">鐝鐘舵�佽褰�</div>
+				<div class="panel-content bottom-panel-chart">
+					<div class="status">
+						<div class="feed-button" @click="table_edit">鐘舵�佸弽棣�</div>
+						<div class="status-wrap align-left">
+							<div class="collect-status">閲囬泦鐘舵��</div>
+							<div class="status-box" v-for="item in achievements"><div class="status-color" :style="{'background-color': item.color}"></div>{{ item.name }}</div>
+						</div>
+						<div class="status-wrap">
+							<el-checkbox v-model="humanFeedback" label="浜哄伐鍙嶉鐘舵��" size="large" />
+							<div class="status-con">
+								<div class="status-box" v-for="item in collectionstatus"><div class="status-color" :style="{'background-color': item.color}"></div>{{ item.name }}</div>
+							</div>
+						</div>
+					</div>
+				</div>
+				<div style="padding: 8px;">
+					<div id="wcs-log" style="width: 100%;height:200px;"></div>
+					<el-table ref="multipleTableRef1" :data="recordData" border style="width: 100%;">
+						<el-table-column prop="shiftIndexName" label="鐝"></el-table-column>
+						<el-table-column prop="5" label="璋冭瘯"></el-table-column>
+						<el-table-column prop="4" label="绂荤嚎"></el-table-column>
+						<el-table-column prop="3" label="寰呮満"></el-table-column>
+						<el-table-column prop="1" label="鎶ヨ"></el-table-column>
+						<el-table-column prop="2" label="杩愯"></el-table-column>
+						<el-table-column prop="oee" label="绋煎姩鐜�%">
+							<template #default="scope">
+								<span>{{(Number(scope.row.oee) * 100).toFixed(2)}}</span>
+							</template>
+						</el-table-column>
+						<el-table-column prop="perdata" label="鎶ヨ鐜�%">
+							<template #default="scope">
+								<span>{{(Number(scope.row.fault) * 100).toFixed(2)}}</span>
+							</template>
+						</el-table-column>
+					</el-table>
+				</div>
+			</div>
 		</div>
 	</div>
-	<save-dialog v-if="dialog.save" ref="saveDialog"  @success="addfeedbackSuccess" :workstationId="lastLevelId" @closed="dialog.save=false"></save-dialog>
+	<save-dialog v-if="dialog.save" ref="saveDialog"  @success="addfeedbackSuccess" :workstationId="treeChecked.toString()" @closed="dialog.save=false"></save-dialog>
 </template>
 <script>
+	import station from "./station.png";
 	import moment from 'moment'
 	import * as echarts from 'echarts';
-	import saveDialog from './add-station-status'
+	import saveDialog from './add-station-status';
+	import MYTree from './MYTree.vue';
 	export default {
 		name: "state-feedback",
 		data(){
 			return {
+				treeChecked: [],
 				achievements: [],
 				collectionstatus: [],
-				checked1: "",
+				humanFeedback: "",
 				alarmtotal: 0,
 				alarmtableData: [],
 				wcsDate: "",
@@ -260,7 +266,6 @@
 				dialog: {
 					save: false
 				},
-				lastLevelId: "",
 				current: "1",
 				size: "15",
 				searchData: {
@@ -293,18 +298,22 @@
 		created(){
 			
 		},
+		watch: {
+			treeChecked() {
+				this.query()
+			}
+		},
 		mounted(){
 			this.newDate();  //鑾峰彇褰撳墠鏃ユ湡
-			this.getTreeList(this.$route.query.code);
 		},
 		components: {
-			saveDialog
+			saveDialog,MYTree
 	    },
 		methods: {
 			table_edit(){
 				this.dialog.save = true
 				this.$nextTick(() => {
-					this.$refs.saveDialog.open('edit').setData(this.lastLevelId);
+					this.$refs.saveDialog.open('edit').setData(this.treeChecked.toString());
 				})
 			},
 			alarmSizeChange(val) {
@@ -319,7 +328,7 @@
 				this.alarmsearchBtn();
 			},
 			alarmsearchBtn() {
-				this.$HTTP.get(`/api/blade-mdc/work-station-analysis/alarm/${this.lastLevelId}?current=${this.alarmsearchData.current}&size=${this.alarmsearchData.size}`).then(res=> {
+				this.$HTTP.get(`/api/mdc/work-station-analysis/alarm/${this.treeChecked.toString()}?current=${this.alarmsearchData.current}&size=${this.alarmsearchData.size}`).then(res=> {
 					if(res.code == 200) {
 						this.alarmtableData = res.data.records;
 						this.alarmtotal = res.data.total;
@@ -336,10 +345,10 @@
 			getrecord() {  //鐝鐘舵�佽褰晅able
 				var obj = {
 					date: this.wcsDate,
-					humanFeedback: true,
-					workstationId: this.lastLevelId
+					humanFeedback: this.humanFeedback,
+					workstationId: this.treeChecked.toString()
 				}
-				this.$HTTP.post(`/api/blade-mdc/status-record/shift-index-status-record-table`,obj).then(res=> {
+				this.$HTTP.post(`/api/mdc/status-record/shift-index-status-record-table`,obj).then(res=> {
 					if(res.code == 200) {
 						var defaultValues = {  
 							oee: 0,  
@@ -412,10 +421,10 @@
 				var obj = {
 					date: this.wcsDate,
 					//date : "2024-05-15",
-					humanFeedback: true,
-					workstationId: this.lastLevelId
+					humanFeedback: this.humanFeedback,
+					workstationId: this.treeChecked.toString()
 				}
-				this.$HTTP.post(`/api/blade-mdc/status-record/shift-index-status-record-chart`,obj).then(res=> {
+				this.$HTTP.post(`/api/mdc/status-record/shift-index-status-record-chart`,obj).then(res=> {
 					if(res.code == 200) {
 						var yAxisData = [];
 						var newData = [];
@@ -560,10 +569,10 @@
 			getwscLvalue() {
 				var obj = {
 					date: this.wcsDate,
-					humanFeedback: true,
-					workstationId: this.lastLevelId
+					humanFeedback: this.humanFeedback,
+					workstationId: this.treeChecked.toString()
 				}
-				this.$HTTP.post(`/api/blade-mdc/status-record/time-distribution`,obj).then(res=> {
+				this.$HTTP.post(`/api/mdc/status-record/time-distribution`,obj).then(res=> {
 					if(res.code == 200) {
 						var myChart = echarts.init(document.getElementById('wcs-left')); 
 						var wcsOption = JSON.parse(JSON.stringify(this.wcsBeginOption));
@@ -586,7 +595,7 @@
 				})
 			},
 			getwcsLcolor() {
-				this.$HTTP.get(`/api/blade-cps/global_wcs/list?code=&name=`).then(res=> {
+				this.$HTTP.get(`/api/smis/global_wcs/list?code=&name=`).then(res=> {
 					if(res.code == 200) {
 						res.data.forEach(item=> {
 							item.itemStyle = {color: item.color};
@@ -599,10 +608,10 @@
 			getwcsR() {
 				var obj = {
 					date: this.wcsDate,
-					humanFeedback: true,
-					workstationId: this.lastLevelId
+					humanFeedback: this.humanFeedback,
+					workstationId: this.treeChecked.toString()
 				}
-				this.$HTTP.post(`/api/blade-mdc/status-record/equipment-efficiency`,obj).then(res=> {
+				this.$HTTP.post(`/api/mdc/status-record/equipment-efficiency`,obj).then(res=> {
 					if(res.code == 200) {
 						var myChart = echarts.init(document.getElementById('wcs-right')); 
 						res.data.forEach(item=> {
@@ -626,105 +635,88 @@
 			addfeedbackSuccess() {
 				
 			},
-			handleNodeClick(data) {
-				if(data.code) {
-					this.lastLevelId = data.id;
-					this.$HTTP.get(`/api/blade-cps/workstation/get?workstationId=${this.lastLevelId}`).then(res=> {
-						if(res.code == 200) {
-							this.stationForm = res.data;
-							this.getdmp(this.lastLevelId,this.stationForm.machineId);
-							//this.newDate();  //鑾峰彇褰撳墠鏃ユ湡
-							this.getwcsR();
-							this.getwscLvalue();  //宸︿晶鍥捐〃
-							this.alarmsearchBtn();  //鏈哄櫒灞ュ巻
-							this.getrecord();  //鐝鐘舵�佽褰晅able
-							this.getlogcart();  //鐝鐘舵�佽褰昪hart
+			query() {
+				if (!this.treeChecked.toString()) return;
+				this.$HTTP.get(`/api/smis/workstation/get?workstationId=${this.treeChecked.toString()}`).then(res=> {
+					if(res.code == 200) {
+						if(res.data.avatar == "") {
+							res.data.avatar = station;
 						}
-					})
-				}
+						this.stationForm = res.data;
+						this.getdmp(this.stationForm.machineId);
+						//this.newDate();  //鑾峰彇褰撳墠鏃ユ湡
+						this.getwcsR();
+						this.getwcsLcolor();  //宸︿晶鍥捐〃
+						this.alarmsearchBtn();  //鏈哄櫒灞ュ巻
+						this.getrecord();  //鐝鐘舵�佽褰晅able
+						this.getlogcart();  //鐝鐘舵�佽褰昪hart
+					}
+				})
 			},
-			getdmp(lastLevelId,machineId) {
-				this.$HTTP.get(`/api/blade-cps/workstation/get-dmp-variables?machineId=${machineId}&workstationId=${lastLevelId}`).then(res=> {
+			getdmp(machineId) {
+				this.$HTTP.get(`/api/smis/workstation/listDatapointsByWorkstationId?machineId=${machineId}&workstationId=${this.treeChecked.toString()}`).then(res=> {
 					if(res.code == 200) {
 						this.dmpList = [];
 						var that = this;
 						//鍙戦�亀ebsocket
 						var obj = {
 							type: "realTimeData",
-							workstationIdList: [lastLevelId]
+							workstationIdList: this.treeChecked
 						}
+						if(res.data.dpConfig == null || res.data.dpConfig.length == 0) return;  //娌″�间笉鐢ㄥ惊鐜�
 						if(this.$TOOL.socket.websocket == null) {  //娌℃湁寤虹珛鍏堝缓绔�
 							this.$TOOL.socket.connectToWebSocket(this.$TOOL.cookie.get("TOKEN")); 
 						}
 						this.$TOOL.socket.sendDataToWebSocket(obj);  //鍙戦��
 						this.$TOOL.socket.websocket.onmessage = function(event) {  
-							if(res.data.length == 0) return;  //娌″�间笉鐢ㄥ惊鐜�
-					        res.data.forEach((item,index)=> {  //绗竴姝ユ妸v鏀惧埌code閲�
-					        	var eventData = JSON.parse(event.data);
-							    if(item.name == "DeviceStatus") {  //鏈哄櫒鐘舵��
-									if(eventData.data[item.name]) {
-										item.code = eventData.data[item.name].v;
+							var JSONData = JSON.parse(res.data.dpConfig);
+							var eventData = JSON.parse(event.data);
+							if(Object.keys(eventData.data).length == 0) return;
+					        JSONData.forEach((item,index)=> {  //绗竴姝ユ妸v鏀惧埌code閲�
+							    if(item.dpName == "DeviceStatus") {  //鏈哄櫒鐘舵��
+									if(eventData.data[item.dpName]) {
+										item.code = eventData.data[item.dpName].v;
 									}
 							        that.allwcs.forEach((item1)=> {
 							        	if(item.code == item1.code) {
 							        		item.codeName = item1.name;    //绗簩姝ユ妸v鐨刢ode鍜岃繍琛屽搴�
-							        		if(item.code == "2") {
-							        			item.color = "#73D13D";
-							        		}else {
-							        			item.color = "#75C0C0";
-							        		}
+							        		item.color = item1.color;
 							        	}
 							        })
 							    }else {
-							    	if(item.name == 'Alarm') {  //鎶ヨ
-										if(eventData.data[item.name]) {
-											var v = JSON.parse(eventData.data[item.name].v);
+							    	if(item.dpName == 'Alarm') {  //鎶ヨ
+										if(eventData.data[item.dpName]) {
+											var v = JSON.parse(eventData.data[item.dpName].v);
 											if(Array.isArray(v)) {  //濡傛灉鏄暟缁勶紝涓嶈祴鍊�
 												if(v.length == 0) {
-													res.data.splice(index,1);
+													JSONData.splice(index,1);
 												}else {
-													item.description = v[0].code;
 													item.codeName = v[0].msg;
-													item.color = "#370C0D";
 												}
 											}else {
-												item.description = v.code;
 												item.codeName = v.msg;
-												item.color = "#370C0D";
 											}
 										}
 							    	}else {
-										if(eventData.data[item.name]) {
-											item.codeName = eventData.data[item.name].v;
-							        		item.color = "#75C0C0";
+										if(eventData.data[item.dpName]) {
+											item.codeName = eventData.data[item.dpName].v;
+										}else {
+											item.codeName = "";
 										}
 							    	}
+									that.allwcs.forEach((item1)=> {
+							        	if(item.code == item1.code) {
+							        		item.color = item1.color;
+							        	}else {
+											item.color = "#7FC0C0";
+										}
+							        })
 							    }
 							});
-							that.dmpList = res.data;
+							that.dmpList = JSONData;
 					    };
 					}
 				})
-			},
-			getLastLevelIds(tree) {  
-				if (tree.length === 0) return ""; // 濡傛灉娌℃湁鏍硅妭鐐癸紝杩斿洖绌� 
-				const lastLevelIds = []; 
-				const lastLevelCodes = [];
-				function traverseTree(node) {  
-					if(!node.code) {
-						lastLevelCodes.push(node.id);
-					}
-					if (node.children.length > 0) {  
-						node.children.forEach(traverseTree); // 閫掑綊閬嶅巻瀛愯妭鐐�  
-					} else {  
-						if(node.code) {
-							lastLevelIds.push(node.id); // 鏈塩ode鎵嶈 
-						}
-					}
-				}  	
-				// 鍙亶鍘嗙涓�涓牴鑺傜偣  
-				traverseTree(tree[0]);  
-				return {lastLevelCodes,lastLevelId:lastLevelIds[0]}; // 杩斿洖lastLevelCodes锛氭病鏈塩ode鐨勬暟缁勩�俵astLevelId锛氭湁code鐨勭涓�涓猧d
 			},
 			buildTree(items) {  
 			  const idMap = {};  
@@ -761,38 +753,8 @@
 				})
 				return tree;
 			},
-			getTreeList(id) {
-				var obj = {
-					groupCategory: 1,
-					groupType: "group_workstation"
-				}
-				this.$HTTP.post("/api/blade-cps/group/groupWorkstation/type",obj).then(res=> {
-					if(res.code == 200) {
-						if (res.code == 200) {
-							var treeDisabled = this.addTreeDisable(res.data);
-							this.tableData = this.buildTree(treeDisabled);  //浠庢墎骞冲寲鍙樹负鏍戠姸缁撴瀯
-							this.$nextTick(()=> {
-								if(id) {
-									this.lastLevelId = id;  //鎸囧畾id
-								}else {
-									this.lastLevelId = this.getLastLevelIds(this.tableData).lastLevelId;
-								}
-								this.$refs.treeRef.setCurrentKey(this.lastLevelId);  //绗竴涓妭鐐圭殑绗竴涓瓙鑺傜偣鏈�鍚庝竴绾ч粯璁ら�変腑
-								//浠ヤ笅鏄垵濮嬪寲鏁版嵁
-								this.getlist();  //娓叉煋璇︽儏鍜�(鐘舵�乴ist)
-								this.getwcsLcolor();  //宸︿晶鍥捐〃
-								this.getwcsR();  //鍙充晶鍥炬爣
-								this.getachievements();  //鐝鐘舵�佽褰曢噰闆嗙姸鎬�
-								this.getrecord();  //鐝鐘舵�佽褰晅able
-								this.getlogcart();  //鐝鐘舵�佽褰昪hart
-							})
-							
-						}
-					}
-				})
-			},
 			getachievements() { //鐝鐘舵�佽褰曢噰闆嗙姸鎬�
-				this.$HTTP.get(`/api/blade-cps/global_wcs/wcs-achievements`).then(res=> {
+				this.$HTTP.get(`/api/smis/global_wcs/wcs-achievements`).then(res=> {
 					if(res.code == 200) {
 						var achievements = [];//閲囬泦鐘舵��
 						var collectionstatus = [];  //浜哄伐鍙嶉鐘舵��
@@ -807,14 +769,6 @@
 						this.achievements = achievements;
 						this.collectionstatus = collectionstatus;
 						this.allwcs = res.data;
-					}
-				})
-			},
-			getlist() {
-				this.$HTTP.get(`/api/blade-cps/workstation/get?workstationId=${this.lastLevelId}`).then(res=> {
-					if(res.code == 200) {
-						this.stationForm = res.data;
-						this.getdmp(this.lastLevelId,this.stationForm.machineId);
 					}
 				})
 			}
@@ -832,6 +786,7 @@
 	margin-right: 8px;
 	padding: 4px;
 	background-color: #fff;
+	padding-top:20px;
 }
 .aposcope-right {
 	flex: 1;
@@ -991,7 +946,6 @@
 }
 .panel-content {
     width: 100%;
-    height: calc(100% - 45px);
 }
 .panel-content-gant, .panel-content-table {
     width: 100%;

--
Gitblit v1.9.3