From 19f83633217b90cbc9625bca4cf7d5642be4824c Mon Sep 17 00:00:00 2001
From: lzhe <lzhe@example.com>
Date: 星期四, 18 四月 2024 18:27:48 +0800
Subject: [PATCH] 1

---
 src/views/mdc/add-station-status.vue |  125 +++++++++++++++
 src/views/mdc/state-feedback.vue     |   17 --
 src/views/mdc/station-live.vue       |  321 ++++++++++++++++++++++++++++++++++++++--
 src/views/mdc/station.png            |    0 
 4 files changed, 430 insertions(+), 33 deletions(-)

diff --git a/src/views/mdc/add-station-status.vue b/src/views/mdc/add-station-status.vue
new file mode 100644
index 0000000..7134425
--- /dev/null
+++ b/src/views/mdc/add-station-status.vue
@@ -0,0 +1,125 @@
+<template>
+	<el-dialog :title="titleMap[mode]" v-model="visible" :width="570" destroy-on-close @closed="$emit('closed')">
+		<el-form :model="addDictForm" :rules="addDictRules" :disabled="mode=='show'" ref="dialogForm" label-width="120px" label-position="center">
+			<el-row>
+				<el-col :span="24">
+					<el-form-item label="鐘舵�佹椂闂�">
+						<el-date-picker v-model="addDictForm.date" type="datetimerange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡" align="right" value-format="YYYY-MM-DD HH:mm:ss" @change="dateChange">
+					</el-date-picker>
+					</el-form-item>
+				</el-col>
+				<!-- <el-col :span="24">
+					<el-form-item label="鐘舵��" prop="wcs">
+						<el-select v-model="addDictForm.wcs" style="width: 100%">
+							<el-option v-for="item in feedBackStatusList" :key="item.code" :label="item.name" :value="item.code"/>
+						</el-select>
+					</el-form-item>
+				</el-col> -->
+				<el-col :span="24">
+					<el-form-item label="鎻忚堪">
+						<el-input v-model="addDictForm.description" placeholder="鎻忚堪" clearable></el-input>
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<template #footer>
+			<el-button @click="visible=false" >鍙� 娑�</el-button>
+			<el-button v-if="mode!='show'" type="primary" :loading="isSaveing" @click="dictSubmit()">淇� 瀛�</el-button>
+		</template>
+	</el-dialog>
+</template>
+
+<script>
+	export default {
+		emits: ['success', 'closed'],
+		data() {
+			return {
+				value1: true,
+				mode: "add",
+				titleMap: {
+					add: '鐘舵�佸弽棣�',
+					edit: '淇敼',
+					show: '鏌ョ湅'
+				},
+				visible: false,
+				isSaveing: false,
+				//琛ㄥ崟鏁版嵁
+				addDictForm: {
+					description: "",
+					date: "",
+					endTime: "",
+					startTime: "",
+					wcs: ""
+				},
+				//楠岃瘉瑙勫垯
+				addDictRules: {
+					wcs:[{required: true, message: '璇烽�夋嫨鐘舵��', trigger: 'change'}]
+				}
+			}
+		},
+		mounted() {
+			
+		},
+		methods: {
+			dateChange(val) {
+				this.addDictForm.startTime = val[0];
+				this.addDictForm.endTime = val[1];
+			},
+			//鏄剧ず
+			open(mode='add'){
+				this.mode = mode;
+				this.visible = true;
+				return this
+			},
+			//琛ㄥ崟鎻愪氦鏂规硶
+			dictSubmit(){
+				var obj = Object.assign({},this.addDictForm);
+				obj.workstationIds = [this.workstationId]
+				var that = this;
+				this.$refs.dialogForm.validate(async (valid) => {
+					if (valid) {
+						this.isSaveing = true;
+						this.$HTTP.post("/api/blade-cps/workstation-wcs-feedback/overwrite-feedback-check",obj).then(res=> {
+							that.isSaveing = false;
+							if(res.code == 200) {
+								if(res.data) {
+									that.$confirm(`鍙嶉鐨勬椂闂翠笌宸叉湁鍙嶉閲嶅彔锛屾槸鍚﹁鐩朻, '', {
+										type: 'warning'
+									}).then(() => {
+										that.$HTTP.post("/api/blade-cps/workstation-wcs-feedback/start-feedback-by-no-immediate",obj).then(res=> {
+											if(res.code == 200) {
+												that.$message.success("鎿嶄綔鎴愬姛");
+												that.$emit('success', this.addDictForm, this.mode);
+												that.visible = false;
+											}
+										})
+									}).catch(() => {})
+								}else {
+									that.$HTTP.post("/api/blade-cps/workstation-wcs-feedback/start-feedback-by-no-immediate",obj).then(res=> {
+										if(res.code == 200) {
+											that.$message.success("鎿嶄綔鎴愬姛");
+											that.$emit('success', this.addDictForm, this.mode);
+											that.visible = false;
+										}
+									})
+								}
+							}else {
+								this.$alert(res.message, "鎻愮ず", {type: 'error'});
+							}
+						})
+					}else{
+						return false;
+					}
+				})
+			},
+			//琛ㄥ崟娉ㄥ叆鏁版嵁
+			setData(data){
+				//鍙互鍜屼笂闈竴鏍峰崟涓敞鍏ワ紝涔熷彲浠ュ儚涓嬮潰涓�鏍风洿鎺ュ悎骞惰繘鍘�
+				//Object.assign(this.addDictForm, data);
+			}
+		}
+	}
+</script>
+
+<style>
+</style>
diff --git a/src/views/mdc/state-feedback.vue b/src/views/mdc/state-feedback.vue
index 27adbd7..a487cbb 100644
--- a/src/views/mdc/state-feedback.vue
+++ b/src/views/mdc/state-feedback.vue
@@ -2,7 +2,7 @@
  * @Author: lzhe lzhe@example.com
  * @Date: 2024-03-26 10:28:33
  * @LastEditors: lzhe lzhe@example.com
- * @LastEditTime: 2024-04-18 17:10:39
+ * @LastEditTime: 2024-04-18 18:07:47
  * @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
 -->
@@ -273,21 +273,6 @@
 				this.$HTTP.post("/api/blade-cps/workstation-wcs-feedback/page?current=1&size=15",obj).then(res=> {
 					if(res.code == 200) {
 						this.searchDataList = res.data.records;
-					}
-				})
-			},
-			loadNode(node, resolve, reject) {
-				if(node.data.id) {
-					this.parentId = node.data.id;
-				}else {
-					this.parentId = '0';
-				}
-				this.$HTTP.get("/api/blade-system/menu/lazy-list",{parentId: this.parentId}).then(res=> {
-					if(res.code == 200) {
-						res.data.forEach(node => {
-							node.hasChildren = !node.hasChildren;
-						});
-						resolve(res.data);
 					}
 				})
 			},
diff --git a/src/views/mdc/station-live.vue b/src/views/mdc/station-live.vue
index 8cfa92b..7eba7c9 100644
--- a/src/views/mdc/station-live.vue
+++ b/src/views/mdc/station-live.vue
@@ -1,24 +1,311 @@
 <!--
- * @Date: 2024-04-09 22:11:21
- * @LastEditors: Sneed
- * @LastEditTime: 2024-04-13 22:15:47
- * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/mdc/station-live.vue
- 鐘舵�佸弽棣�
+ * @Author: lzhe lzhe@example.com
+ * @Date: 2024-03-26 10:28:33
+ * @LastEditors: lzhe lzhe@example.com
+ * @LastEditTime: 2024-04-18 18:27:19
+ * @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>
-    <el-main>
-        <el-card shadow="never">
-            鏁堢巼鍒嗘瀽
-        </el-card>
-    </el-main>
+	<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>
+		<div class="aposcope-right">
+			<div class="content-machine-box">
+				<div class="content-machine-img"><img src="./station.png" alt=""></div>
+				<div class="content-machine-detail">
+					<div class="content-machine-name">461</div>
+					<el-form :model="stationForm" ref="dialogForm" label-width="80px" label-position="center" style="width: 100%;">
+						<el-row>
+							<el-col :span="8">
+								<el-form-item label="宸ヤ綅缂栧彿">{{stationForm.test}}</el-form-item>
+							</el-col>
+							<el-col :span="8">
+								<el-form-item label="鏈哄櫒鍝佺墝">{{stationForm.test}}</el-form-item>
+							</el-col>
+							<el-col :span="8">
+								<el-form-item label="鏈哄櫒缂栧彿">{{stationForm.test}}</el-form-item>
+							</el-col>
+							<el-col :span="8">
+								<el-form-item label="鏈哄櫒鍚嶇О">{{stationForm.test}}</el-form-item>
+							</el-col>
+						</el-row>
+					</el-form>
+				</div>
+			</div>
+			<div class="collect-info-panel">
+				<div class="fact-analysis-realtim">
+					<div class="fact-analysis-card">
+						<div class="card-name" style="background-color: rgb(127, 192, 192);">璁惧鐘舵��</div>
+						<div class="card-value" style="background-color: rgba(127, 192, 192, 0.14);"></div>
+					</div>
+				</div>
+			</div>
+		</div>
+	</div>
+	<save-dialog v-if="dialog.save" ref="saveDialog"  @success="addfeedbackSuccess" @closed="dialog.save=false"></save-dialog>
 </template>
-
 <script>
-    export default {
-        
-    }
+import saveDialog from './add-station-status'
+	export default {
+		name: "state-feedback",
+		data(){
+			return {
+				stationForm: {
+					test: "461"
+				},
+				dialog: {
+					save: false
+				},
+				lastLevelId: "",
+				current: "1",
+				size: "15",
+				searchData: {
+					feedBackStatus: [],
+					date: [],
+					endDate: "",
+					startDate: ""
+				},
+				searchDataList: [],  //鍙充晶鏁版嵁list
+				aList: [],
+				defalutProps: {
+					label: 'title',
+  					children: 'children',
+					isLeaf: 'hasChildren',
+					disabled: 'disabled'
+				},
+				parentId: "0",
+				tableData: [],
+				searchSelection: []
+			}
+		},
+		created(){
+			
+		},
+		mounted(){
+			this.getTreeList();
+		},
+		components: {
+			saveDialog
+	    },
+		methods: {
+			addfeedbackSuccess() {
+				this.getlist();
+			},
+			feedBackStatusChange(val) {
+				this.getlist();
+			},
+			handleNodeClick(data) {
+				if(data.code) {
+					this.lastLevelId = data.id;
+					var obj = {
+						workstationId: this.lastLevelId,
+					}
+					if(this.searchData.feedBackStatus.length != 0) {
+						obj.feedBackStatus = this.searchData.feedBackStatus;
+					}
+					if(this.searchData.endDate) {
+						obj.endDate = this.searchData.endDate;
+					}
+					if(this.searchData.startDate) {
+						obj.startDate = this.searchData.startDate;
+					}
+					this.$HTTP.post("/api/blade-cps/workstation-wcs-feedback/page?current=1&size=15",obj).then(res=> {
+						if(res.code == 200) {
+							this.searchDataList = res.data.records;
+						}
+					})
+				}
+			},
+			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 = {};  
+			  const tree = [];  
+			  // 绗竴姝ワ細鍒涘缓id鍒板璞$殑鏄犲皠  
+			  items.forEach(item => {  
+			    idMap[item.id] = { ...item, children: [] };  
+			  }); 
+			  // 绗簩姝ワ細鏋勫缓鏍戝舰缁撴瀯  
+			  items.forEach(item => {  
+			    const currentNode = idMap[item.id];  
+			    // 濡傛灉parentId涓�0锛岃鏄庢槸鏍硅妭鐐�  
+			    if (item.parentId === 0) {  
+			      tree.push(currentNode);  
+			    } else {  
+			      // 鍚﹀垯锛屾煡鎵剧埗鑺傜偣锛屽苟灏嗗綋鍓嶈妭鐐规坊鍔犲埌鐖惰妭鐐圭殑children鏁扮粍涓�  
+			      const parentId = item.parentId;  
+			      if (idMap[parentId]) {  
+			        idMap[parentId].children.push(currentNode);  
+			      }  
+			    }  
+			  });  
+			  return tree;  
+			},
+			addTreeDisable(treeData) {
+				var tree = [];
+				treeData.forEach(item=> {
+					if(item.code) {
+						item.disabled = false;
+					}else {
+						item.disabled = true;
+					}
+					tree.push(item);
+				})
+				return tree;
+			},
+			getTreeList(flag) {
+				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(()=> {
+								this.lastLevelId = this.getLastLevelIds(this.tableData).lastLevelId;
+								this.$refs.treeRef.setCurrentKey(this.lastLevelId);  //绗竴涓妭鐐圭殑绗竴涓瓙鑺傜偣鏈�鍚庝竴绾ч粯璁ら�変腑
+								this.getlist();  //娓叉煋鍙嶉鍒楄〃
+							})
+							
+						}
+					}
+				})
+			},
+			getlist() {
+				var obj = {
+					workstationId: this.lastLevelId,
+				}
+				if(this.searchData.feedBackStatus != 0) {
+					obj.feedBackStatus = this.searchData.feedBackStatus;
+				}
+				if(this.searchData.endDate) {
+					obj.endDate = this.searchData.endDate;
+				}
+				if(this.searchData.startDate) {
+					obj.startDate = this.searchData.startDate;
+				}
+				this.$HTTP.post("/api/blade-cps/workstation-wcs-feedback/page?current=1&size=15",obj).then(res=> {
+					if(res.code == 200) {
+						this.searchDataList = res.data.records;
+					}
+				})
+			}
+		}
+	}
 </script>
-
-<style lang="scss" scoped>
-
+<style scoped>
+.aposcope-main {
+	display: flex;
+	min-height: 100%;
+	margin: 8px;
+}
+.aposcope-left {
+	width: 240px;
+	margin-right: 8px;
+	padding: 4px;
+	background-color: #fff;
+}
+.aposcope-right {
+	flex: 1;
+	padding: 8px;
+	background-color: #fff;
+}
+.left-title {
+	font-size: 16px;
+    text-align: center;
+    height: 38px;
+    line-height: 38px;
+    border-bottom: 1px solid #e2e2e2;
+    background-color: #409eff;
+    color: #fff;
+    border-radius: 2px 2px 0 0;
+}
+.content-machine-box {
+	display: flex;
+	align-items: center;
+}
+.content-machine-img {
+	margin: 14px;
+    padding: 2px;
+    border: 1px solid #e8e8e8;
+    width: 148px;
+    height: 145px;
+    justify-content: center;
+}
+.content-machine-img img {
+    width: 135px;
+    height: 135px;
+}
+.content-machine-detail {
+    display: flex;
+    width: calc(100% - 210px);
+    flex-direction: column;
+    align-items: flex-start;
+    align-content: flex-start;
+    flex-wrap: nowrap;
+}
+.content-machine-name {
+    margin-bottom: 12px;
+    font-size: 24px;
+    font-weight: 700;
+}
+.collect-info-panel {
+    background-color: rgba(59, 142, 142, .06);
+    padding: 8px;
+    padding-top: 0;
+}
+.fact-analysis-realtim {
+    display: flex;
+    flex-direction: row;
+    flex-wrap: wrap;
+    justify-content: flex-start;
+    align-content: flex-start;
+    box-sizing: border-box;
+    background: #fff;
+}
+.fact-analysis-card {
+    border-radius: 2px;
+    box-sizing: border-box;
+    display: flex;
+    margin: 8px;
+}
+.fact-analysis-card .card-name {
+    width: 98px;
+    height: 68px;
+    display: flex;
+    justify-content: center;
+    align-items: center;
+    color: #fff;
+}
+.fact-analysis-card .card-value {
+    min-width: 118px;
+    max-width: 396px;
+    align-items: center;
+    padding: 0 8px;
+    overflow: hidden;
+    word-break: break-all;
+}
 </style>
\ No newline at end of file
diff --git a/src/views/mdc/station.png b/src/views/mdc/station.png
new file mode 100644
index 0000000..c44b787
--- /dev/null
+++ b/src/views/mdc/station.png
Binary files differ

--
Gitblit v1.9.3