From 8e49faa42ff419efa0641478702ce7d5f8455bd9 Mon Sep 17 00:00:00 2001 From: huangxiaoqiang <huangxiaoqiang@hnkhzn.com> Date: 星期三, 30 七月 2025 20:47:56 +0800 Subject: [PATCH] 1 --- 项目代码/WCS/WIDESEAWCS_Client/src/views/LineComponent.vue | 261 +++++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 206 insertions(+), 55 deletions(-) diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent.vue" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent.vue" index 573faf3..0aebd5a 100644 --- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent.vue" +++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WCS/WIDESEAWCS_Client/src/views/LineComponent.vue" @@ -1,7 +1,7 @@ <template> <div> <el-row> - <template v-for="item in 56" :key="item"> + <template v-for="item in 32" :key="item"> <el-col :span="0.9"> <span class="image-text"></span> <img src="../../public/璐ф灦.jpeg" /> @@ -9,7 +9,7 @@ </template> </el-row> <el-row style="padding-bottom: 5px;"> - <template v-for="item in 56" :key="item"> + <template v-for="item in 32" :key="item"> <el-col :span="0.9"> <span class="image-text"></span> <img src="../../public/璐ф灦.jpeg" /> @@ -19,11 +19,14 @@ </div> <div class="line-container"> <div class="line"></div> - <div class="dot" :style="{ right: dotPosition + 'px' }" ref="childDot" @click="mouseClick"></div> + <!-- <div class="dot" :style="{ right: dotPosition + 'px' }" ref="childDot" @click="mouseClick"></div> --> + <div :class="update()" + :style="{ transform: `translateX(${StackerCrane.CurrentColumn < 33 ? StackerCrane.CurrentColumn * 30 - 29 : 0}px)` }" + ref="childDot" @click="mouseClick"></div> </div> <div> <el-row style="padding-top: 5px;"> - <template v-for="item in 56" :key="item"> + <template v-for="item in 32" :key="item"> <el-col :span="0.9"> <span class="image-text"></span> <img src="../../public/璐ф灦.jpeg" /> @@ -31,7 +34,7 @@ </template> </el-row> <el-row style="padding-bottom: 5px;"> - <template v-for="item in 56" :key="item"> + <template v-for="item in 32" :key="item"> <el-col :span="0.9"> <span class="image-text"></span> <img src="../../public/璐ф灦.jpeg" /> @@ -40,46 +43,102 @@ </el-row> </div> - <el-dialog v-model="dialogVisible" title="淇℃伅鏌ョ湅" :before-close="handleClose"> - <el-form ref="$form" :model="stackerItemInfo" label-position="left" label-width="100px" size="medium"> + <el-dialog v-model="dialogVisible" title="鍫嗗灈鏈轰俊鎭煡鐪�" :before-close="handleClose"> + <el-form ref="$form" :model="StackerCrane" label-position="left" label-width="120px" 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="璁惧缂栧彿锛�"> - <!-- <el-input v-model="equipNo"></el-input> --> - <j-el-description :value="equipNo" type="primary" ellipsis></j-el-description> + <j-el-description :value="StackerCrane.DeviceName" 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="stackerItemInfo.r_Stack_EquipmentStatus" type="primary" - ellipsis></j-el-description> + <j-el-description :value="StackerCrane.Fault" 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="stackerItemInfo.r_Stack_WorkPattern" type="primary" ellipsis></j-el-description> + <j-el-description :value="StackerCrane.Automatic" 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="stackerItemInfo.r_Stack_tasknumber" type="primary" ellipsis></j-el-description> + <j-el-description :value="StackerCrane.CurrentTaskNum" 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-row :gutter="20" type="flex" justify="start" align="top" tag="div" style="margin-bottom: 10px;"> <el-col :span="12" :offset="0" :push="0" :pull="0" tag="div"> <el-form-item label="浣滀笟鐘舵��:"> - <j-el-description :value="stackerItemInfo.r_Stack_jobstate" type="primary" ellipsis></j-el-description> + <j-el-description :value="StackerCrane.Running" 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="stackerItemInfo.r_Stack_linenum + '-' + stackerItemInfo.r_Stack_olumnnum + '-' + stackerItemInfo.r_Stack_layernum" + :value="StackerCrane.CurrentRow + '-' + StackerCrane.CurrentColumn + '-' + StackerCrane.CurrentLayer" 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" style="margin-bottom: 10px;"> + <el-col :span="24" :offset="0" :push="0" :pull="0" tag="div"> + <el-form-item label="鎶ヨ淇℃伅:"> + <j-el-description :value="StackerCrane.StackerAlarm" type="primary" ellipsis></j-el-description> + </el-form-item> + </el-col> + </el-row> + <el-divider /> + <h4 style="margin-bottom: 50px;">鎵嬪姩鎿嶄綔</h4> + <el-form ref="form" :model="form" label-width="90px"> + <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="17" /> + <el-option label="鍑哄簱" value="18" /> + <el-option label="绉诲簱" value="20" /> + <el-option label="鍙栬揣" value="24" /> + <el-option label="鏀捐揣" value="48" /> + </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" style="width: 800px" placeholder="璇疯緭鍏ヨ捣鐐硅鍒楀眰" /> + </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.TargetAddress" style="width: 800px" 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="8" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="primary" size="small" plain @click="start"> + <i class="el-icon-check">鍚姩</i> + </el-button> + + </el-col> + <el-col :span="8" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="warning" size="small" plain @click="reset"> + <i class="el-icon-check">澶嶄綅</i> + </el-button> + + </el-col> + <el-col :span="8" :offset="0" :push="0" :pull="0" tag="div"> + <el-button type="danger" size="small" plain @click="emergencyStop"> + <i class="el-icon-check">鎬ュ仠</i> + </el-button> </el-col> </el-row> </el-form> @@ -95,6 +154,7 @@ </template> <script> +import { id } from "element-plus/es/locale"; import JElDescription from "./JElDescription"; export default { components: { @@ -105,16 +165,24 @@ x: 0, // 鍒濆x鍊� url: "api/Equipment/GetStackerInfoByNo", dialogVisible: false, - stackerItemInfo: { - r_Stack_EquipmentStatus: "", - r_Stack_jobstate: "", - r_Stack_layernum: "", - r_Stack_linenum: "", - r_Stack_olumnnum: "", - r_Stack_tasknumber: "", - r_Stack_WalkingLaserValue: "", - r_Stack_WorkPattern: "", - } + StackerCrane: { + Automatic: "", + Fault: "", + CurrentLayer: "1", + CurrentRow: "1", + CurrentColumn: "1", + CurrentTaskNum: "", + Running: "", + DeviceName: "", + DeviceCode: "", + StackerAlarm:"", + }, + form: { + TaskType: "", + SourceAddress: "", + TargetAddress: "", + DeviceCode: "", + }, }; }, props: { @@ -125,37 +193,92 @@ }, computed: { dotPosition() { - return -this.x; + return this.x; }, }, mounted() { - this.moveDot(-this.x); + this.moveDot(this.x); }, methods: { moveDot(x) { - const dot = this.$refs.childDot; - dot.style.transform = `translateX(${-x}px)`; + this.StackerCrane.Automatic = x.Automatic == null ? "鏁呴殰" : x.Automatic; + this.StackerCrane.Fault = x.Fault == null ? "鏁呴殰" : x.Fault; + this.StackerCrane.Running = x.Running == null ? "鏁呴殰" : x.Running; + this.StackerCrane.CurrentColumn = x.CurrentColumn == undefined ? 1 : x.CurrentColumn; + this.StackerCrane.CurrentLayer = x.CurrentLayer == undefined ? 1 : x.CurrentLayer; + this.StackerCrane.LevelPoint = x.LevelPoint; + this.StackerCrane.DeviceName = x.DeviceName; + this.StackerCrane.StackerAlarm = x.StackerAlarm; + this.form.DeviceCode = x.DeviceCode; + }, + update() { + if (this.StackerCrane.Automatic == "鑱旀満妯″紡" && this.StackerCrane.Fault != "鏁呴殰" && this.StackerCrane.Running == "寰呮満") { + return 'dot-Automatic '; + } + else if (this.StackerCrane.Automatic == "鑱旀満妯″紡" && this.StackerCrane.Fault != "鏁呴殰" && this.StackerCrane.Running == "杩愯涓�") { + return 'dot-Running '; + } else if (this.StackerCrane.Fault == "鏁呴殰") { + return 'dot-Fault '; + } else { + return 'dot-Fault '; + } }, mouseClick() { this.fullscreenLoading = true; this.dialogVisible = true; - // 澶勭悊鐐瑰嚮浜嬩欢 - if (this.url != "") { - this.http.post(this.url + "?equipNo=" + this.equipNo, null, "") - .then((x) => { - if (x.status) { - this.stackerItemInfo = x.data; - } else { - this.$message({ - type: "error", - message: x.message, - }); - } - }); - } this.fullscreenLoading = false; - // this.dialogVisible = false; }, + start() { + this.fullscreenLoading = true; + this.http.post("api/DeviceInfo/StackerHandTask", this.form) + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success("鍫嗗灈鏈哄懡浠ゅ凡涓嬪彂"); + // $vue.success("鎴愬姛."); + this.show = false; + $vue.refresh(); + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + }, reset() { + this.fullscreenLoading = true; + this.http.post("api/DeviceInfo/StackerReset?DeviceCode=" + this.form.DeviceCode) + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success("澶嶄綅鎴愬姛"); + // $vue.success("鎴愬姛."); + this.show = false; + $vue.refresh(); + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + }, + + emergencyStop() { + this.fullscreenLoading = true; + this.http.post("api/DeviceInfo/StackerEmergencyStop?DeviceCode=" + this.form.DeviceCode) + .then((x) => { + if (!x.status) { + this.$message.error(x.message); + } else { + this.$Message.success("鎬ュ仠宸叉寜涓�"); + // $vue.success("鎴愬姛."); + // this.show = false; + // $vue.refresh(); + } + }) + .finally(() => { + this.fullscreenLoading = false; + }); + } }, }; </script> @@ -163,9 +286,9 @@ <style scoped> .line-container { position: relative; - height: 10px; + height: 20px; background-color: #ecf5ff; - width: 1570px; + width: 960px; } .line { @@ -177,11 +300,11 @@ background-color: #a0cfff; } -.dot { +.dot-Running { position: absolute; top: -5px; - width: 20px; - height: 20px; + width: 25px; + height: 25px; border-radius: 50%; background-color: #409eff; transition: transform 0.3s ease; @@ -191,14 +314,42 @@ font-size: 9px; font-weight: bold; color: white; - /* background-image: url("../../public/鍫嗗灈鏈�.png"); - background-repeat: no-repeat; - background-size: cover; - background-position: center; */ +} + +.dot-Automatic { + position: absolute; + top: -5px; + width: 25px; + height: 25px; + border-radius: 50%; + background-color: #0df705; + transition: transform 0.3s ease; + display: flex; + justify-content: center; + align-items: center; + font-size: 9px; + font-weight: bold; + color: white; +} + +.dot-Fault { + position: absolute; + top: -5px; + width: 25px; + height: 25px; + border-radius: 50%; + background-color: #f80410; + transition: transform 0.3s ease; + display: flex; + justify-content: center; + align-items: center; + font-size: 9px; + font-weight: bold; + color: white; } img { - width: 28px; + width: 30px; height: 25px; } -- Gitblit v1.9.3