From 0939aa5f3cc12a8856456a51cf2b661b6cd780c7 Mon Sep 17 00:00:00 2001
From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com>
Date: 星期四, 31 七月 2025 17:25:49 +0800
Subject: [PATCH] 1

---
 项目代码/WCS/WIDESEAWCS_Client/src/views/LineInfo.vue |  436 +++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 315 insertions(+), 121 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineInfo.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineInfo.vue"
index 6099e2b..1390ffe 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineInfo.vue"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineInfo.vue"
@@ -1,131 +1,325 @@
 <template>
-  <div>
-    <el-popover placement="bottom" :title="equipNo" width="200" trigger="click">
-      <template #reference>
-        <div :style="{
-          color: equipNoFontColor,
-          width: width,
-          height: height,
-          left: left,
-          top: top,
-          margin_top: marginTop
-        }" style="position: absolute" @click="mouseClick">
-          <img v-if="imgType == '1'" src="../../public/lines.png" style="width: 40px" />
-          <img v-if="imgType == '2'" src="../../public/lines2.png" style="width: 40px" />
-          <label v-if="equipNo != ''" style="position: relative; margin-left: 5px; top: -35px;font-size: 12px;">{{
-            equipNo }}</label>
-        </div>
-      </template>
-      <el-row>
-        <el-col :span="12">鏄惁鏈夌洏:</el-col>
-        <el-col :span="12">{{ lineItemInfo.r_Line_HasPallet }}</el-col>
-      </el-row>
-      <el-row>
-        <el-col :span="12">鎵樼洏鏉$爜</el-col>
-        <el-col :span="12">{{ lineItemInfo.r_Line_Barcode }}</el-col>
-      </el-row>
-      <el-row>
-        <el-col :span="12">鐩爣浣嶇疆</el-col>
-        <el-col :span="12">{{ lineItemInfo.r_Line_Target }}</el-col>
-      </el-row>
-      <el-row>
-        <el-col :span="12">浠诲姟鍙�</el-col>
-        <el-col :span="12">{{ lineItemInfo.r_Line_TaskNum }}</el-col>
-      </el-row>
-      <el-row>
-        <el-col :span="12">鎶ヨ浠g爜</el-col>
-        <el-col :span="12">{{ lineItemInfo.r_Line_ErrorCode }}</el-col>
-      </el-row>
-    </el-popover>
-  </div>
+	<div :class="update()" :style="{ left: left, top: top, marginBottom: 0 + 'px', marginTop: 0 + 'px' }"
+		@click="mouseClick" v-loading.fullscreen.lock="fullscreenLoading">
+		<img v-if="imgType === '2'" src="../../public/lines.png" />
+		<img v-if="imgType === '1'" src="../../public/lines2.png" />
+		<label v-if="equipNo" class="equip-no">{{ equipNo }}</label>
+	</div>
+	<el-dialog v-model="dialogVisible" title="杈撻�佺嚎淇℃伅鏌ョ湅" :before-close="handleClose">
+		<el-form ref="$form" :model="lineItemInfo" label-position="left" label-width="100px" size="medium">
+			<el-row :gutter="20" type="flex" justify="start" align="top" tag="div">
+				<el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+					<el-form-item label="璁惧缂栧彿锛�">
+						<j-el-description :value="equipNo" type="primary" ellipsis></j-el-description>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+					<el-form-item label="鏄惁鏈夌洏:">
+						<j-el-description :value="lineItemInfo.inStock" type="primary" ellipsis></j-el-description>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row :gutter="20" type="flex" justify="start" align="top" tag="div">
+				<el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+					<el-form-item label="浠诲姟鍙�:">
+						<j-el-description :value="lineItemInfo.taskNumm" type="primary" ellipsis></j-el-description>
+					</el-form-item>
+				</el-col>
+				<el-col :span="12" :offset="0" :push="0" :pull="0" tag="div">
+					<el-form-item label="鎶ヨ浠g爜锛�">
+						<j-el-description :value="lineItemInfo.alarm" type="primary" ellipsis></j-el-description>
+					</el-form-item>
+				</el-col>
+			</el-row>
+
+		</el-form><el-divider />
+		<h4 style="margin-bottom: 20px;">鎵嬪姩鎿嶄綔</h4>
+		<el-form ref="form" :model="form" label-width="100px">
+			<el-row :gutter="20" type="flex" justify="start" align="top" tag="div">
+				<el-col :span="16" :offset="0" :push="0" :pull="0" tag="div">
+					<el-form-item label="浠�  鍔�  鍛�  浠�" prop="TargetAddress">
+						<el-select size="large" v-model="form.TaskType" placeholder="璇烽�夋嫨浠诲姟鍛戒护">
+							<el-option label="鍏ュ簱" value="1" />
+							<el-option label="鍑哄簱" value="2" />
+						</el-select>
+					</el-form-item>
+				</el-col>
+			</el-row>
+			<el-row :gutter="20" type="flex" justify="start" align="top" tag="div">
+				<el-col :span="16" :offset="0" :push="0" :pull="0" tag="div">
+					<el-form-item label="涓嬩竴鐩爣鍦板潃:">
+						<el-input size="large" v-model="form.SourceAddress" placeholder="璇疯緭鍏ヨ捣鐐硅鍒楀眰" />
+					</el-form-item>
+				</el-col>
+			</el-row>
+		</el-form>
+		<el-divider />
+		<el-row :gutter="20" type="flex" justify="start" align="top" tag="div">
+			<el-col :span="4" :offset="0" :push="0" :pull="0" tag="div">
+				<el-button type="primary" size="small" plain @click="SendCommand">
+					<i class="el-icon-check">鍙戦�佸懡浠�</i>
+				</el-button>
+			</el-col>
+			<el-col :span="4" :offset="0" :push="0" :pull="0" tag="div">
+				<el-button type="warning" size="small" plain @click="ConveyorLineReset">
+					<i class="el-icon-check">澶嶄綅</i>
+				</el-button>
+
+			</el-col>
+			<el-col :span="4" :offset="0" :push="0" :pull="0" tag="div">
+				<el-button type="danger" size="small" plain @click="ConveyorLineEmergencyStop">
+					<i class="el-icon-check">鍋滄</i>
+				</el-button>
+			</el-col>
+			<el-col :span="4" :offset="0" :push="0" :pull="0" tag="div">
+				<el-button type="danger" size="small" plain @click="ConveyorLineReturn">
+					<i class="el-icon-check">閫�鍥�</i>
+				</el-button>
+			</el-col>
+			<el-col :span="4" :offset="0" :push="0" :pull="0" tag="div">
+				<el-button type="danger" size="small" plain @click="ConveyorLineCancel">
+					<i class="el-icon-check">鍙栨秷浠诲姟</i>
+				</el-button>
+			</el-col>
+			<el-col :span="4" :offset="0" :push="0" :pull="0" tag="div">
+				<el-button type="danger" size="small" plain @click="ConveyorLineInitialize">
+					<i class="el-icon-check">宸ヤ綅鍒濆鍖�</i>
+				</el-button>
+			</el-col>
+		</el-row>
+		<template #footer>
+			<div class="dialog-footer">
+				<el-button @click="dialogVisible = false">鍙栨秷</el-button>
+				<el-button type="primary" @click="dialogVisible = false">
+					纭
+				</el-button>
+			</div>
+		</template>
+	</el-dialog>
 </template>
 
 <script>
 import { defineComponent } from "vue";
+import JElDescription from "./JElDescription";
 export default defineComponent({
-  props: {
-    equipNoFontColor: {
-      type: String,
-      default: "blue",
-    },
-    width: {
-      type: String,
-      default: "40px",
-    },
-    height: {
-      type: String,
-      default: "40px",
-    },
-    equipNo: {
-      type: String,
-      default: "0",
-    },
-    imgType: {
-      type: String,
-      default: "1",
-    },
-    positionX: {
-      type: Int32Array,
-      default: 1,
-    },
-    positionY: {
-      type: Int32Array,
-      default: 1,
-    },
-    url: {
-      type: String,
-      default: "",
-    },
-    marginTop: {
-      type: String,
-      default: "10px",
-    }
-    // mouseClick: {
-    //   type: Function,
-    //   default: function () {
-    //     alert(this.equipNo);
-    //   },
-    // },
-  },
-  data() {
-    return {
-      left: "20px",
-      top: "260px",
-      lineItemInfo: {
-        r_Line_Barcode: "",
-        r_Line_HasPallet: "",
-        r_Line_TaskNum: "",
-        r_Line_ErrorCode: "",
-        r_Line_Target: "",
-      },
-    };
-  },
-  mounted: function () {
-    var axisX = (this.positionX - 1) * 40 + 100;
-    this.left = axisX + "px";
+	components: {
+		JElDescription
+	},
+	props: {
+		equipNoFontColor: {
+			type: String,
+			default: "blue",
+		},
+		equipNo: {
+			type: String,
+			default: "0",
+		},
+		imgType: {
+			type: String,
+			default: "1",
+		},
+		positionX: {
+			type: Int32Array,
+			default: 1,
+		},
+		positionY: {
+			type: Int32Array,
+			default: 1,
+		},
+		url: {
+			type: String,
+			default: "",
+		},
+		condition: {
+			type: Boolean,
+			default: false,
+		},
+	},
+	data() {
+		return {
+			left: "500px",
+			top: "400px",
+			dialogVisible: false,
+			lineItemInfo: {
+				inStock: "",
+				taskNum: "",
+				alarm: "",
+			},
+			form: {
+				TaskType: "",
+				TargetAddress: "",
+				DeviceCode: "",
+			},
+		};
+	},
+	mounted() {
+		const axisX = (this.positionX - 1) * 40 + 100;
+		const axisY = (this.positionY - 1) + 50;
+		this.$nextTick(() => {
+			this.left = `${axisX}px`;
+			this.top = `${axisY}px`;
+		});
+	},
+	methods: {
+		mouseClick() {
+			this.fullscreenLoading = true;
+			this.dialogVisible = true;
+			// 澶勭悊鐐瑰嚮浜嬩欢
+			this.http.post("api/DeviceInfo/GetConveyorLineInfo?DeviceChildCode=" + this.equipNo, null, "")
+				.then((x) => {
+					if (x.status) {
+						this.lineItemInfo = x.data;
+					} else {
+						this.$message({
+							type: "error",
+							message: x.message,
+						});
+					}
+				});
 
-    var axisY = (this.positionY - 1) * 40 + 50;
-    this.top = axisY + "px";
-  },
-  methods: {
-    mouseClick() {
-      if (this.url != "") {
-        this.http
-          .post(this.url + "?equipNo=" + this.equipNo, null, "")
-          .then((x) => {
-            if (x.status) {
-              this.lineItemInfo = x.data;
-            } else {
-              this.$message({
-                type: "error",
-                message: x.message,
-              });
-            }
-          });
-      }
-    },
-  },
+			this.fullscreenLoading = false;
+		},
+
+		SendCommand() {
+			this.fullscreenLoading = true;
+			this.form.DeviceCode=this.equipNo;
+			this.http.post("api/DeviceInfo/ConveyorLineHandTask" ,this.form)
+				.then((x) => {
+					if (!x.status) {
+						this.$message.error(x.message);
+					} else {
+						this.$Message.success(x.message);
+					}
+				})
+				.finally(() => {
+					this.fullscreenLoading = false;
+				});
+		}, 
+		ConveyorLineReset() {
+			this.fullscreenLoading = true;
+			this.http.post("api/DeviceInfo/ConveyorLineReset?DeviceChildCode=" + this.equipNo, null, "")
+				.then((x) => {
+					if (!x.status) {
+						this.$message.error(x.message);
+					} else {
+						this.$Message.success(x.message);
+
+					}
+				})
+				.finally(() => {
+					this.fullscreenLoading = false;
+				});
+		},
+		ConveyorLineEmergencyStop() {
+			this.fullscreenLoading = true;
+			this.http.post("api/DeviceInfo/ConveyorLineEmergencyStop?DeviceChildCode=" + this.equipNo, null, "")
+				.then((x) => {
+					if (!x.status) {
+						this.$message.error(x.message);
+					} else {
+						this.$Message.success(x.message);
+
+					}
+				})
+				.finally(() => {
+					this.fullscreenLoading = false;
+				});
+		}, 
+		ConveyorLineReturn() {
+			this.fullscreenLoading = true;
+			this.http.post("api/DeviceInfo/ConveyorLineReturn?DeviceChildCode=" + this.equipNo, null, "")
+				.then((x) => {
+					if (!x.status) {
+						this.$message.error(x.message);
+					} else {
+						this.$Message.success(x.message);
+					}
+				})
+				.finally(() => {
+					this.fullscreenLoading = false;
+				});
+		},
+		ConveyorLineCancel() {
+			this.fullscreenLoading = true;
+			this.http.post("api/DeviceInfo/ConveyorLineCancel?DeviceChildCode=" + this.equipNo, null, "")
+				.then((x) => {
+					if (!x.status) {
+						this.$message.error(x.message);
+					} else {
+						this.$Message.success(x.message);
+					}
+				})
+				.finally(() => {
+					this.fullscreenLoading = false;
+				});
+		},
+		ConveyorLineInitialize() {
+			this.fullscreenLoading = true;
+			this.http.post("api/DeviceInfo/ConveyorLineInitialize?DeviceChildCode=" + this.equipNo, null, "")
+				.then((x) => {
+					if (!x.status) {
+						this.$message.error(x.message);
+					} else {
+						this.$Message.success(x.message);
+					}
+				})
+				.finally(() => {
+					this.fullscreenLoading = false;
+				});
+		},
+		update() {
+			return !this.condition ? 'custom-img' : 'custom-img-color'
+		},
+		startTimer() {
+			// 寮�鍚畾鏃跺櫒锛屾瘡3绉掓墽琛屼竴娆�
+			this.timer1 = setInterval(() => {
+				update();
+			}, 500);
+		},
+	},
 });
 </script>
 
-<style scoped></style>
\ No newline at end of file
+<style scoped>
+.custom-img {
+	position: relative;
+	display: inline-block;
+	/* background-color:  #d9ecff ; */
+}
+
+.custom-img-color {
+	position: relative;
+	display: inline-block;
+	background-color: #05fa7f;
+	color: white;
+	text-align: center;
+}
+
+/* .custom-img-color::before {
+  content: "";
+  position: absolute;
+  top: 0;
+  right: 0;
+  bottom: 0;
+  left: 0;
+  background-color: #05fa7f;
+  border-radius: 50%;  
+} */
+
+.custom-img img {
+	width: 40px;
+	height: 40px;
+}
+
+.custom-img-color img {
+	width: 40px;
+	height: 40px;
+}
+
+.equip-no {
+	position: absolute;
+	top: 15px;
+	font-size: 12px;
+	margin-left: -35px;
+}
+</style>

--
Gitblit v1.9.3