From 1abae1d821d2c4da18a16145e3d9d8f7a747da02 Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期五, 08 九月 2023 17:11:37 +0800
Subject: [PATCH] Merge branch 'master' of ssh://10.153.19.150:29418/CanadaMes
---
CanadaMes-ui/src/views/home/index.vue | 399 ++++++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 337 insertions(+), 62 deletions(-)
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index e3a2c1b..7900d17 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -9,7 +9,7 @@
width: 10%;
background-color: white;
margin: 0px 8px 0px 8px;
- border: 1px black solid;
+ border: 1px #EBEEF5 solid;
text-align: center;
padding: 5px;
}
@@ -31,11 +31,13 @@
padding: 3px;
min-height: 40vh;
}
+
.el-footer {
max-height: 60vh;
padding: 0px;
margin: 0px;
}
+
.green {
background-color: green;
}
@@ -57,60 +59,126 @@
}
.gezi {
- height: 23px;
- width: 1.74px;
+ height: 25px;
+ width: 3.25px;
}
-.gezi:nth-child(22) {
- margin-left: 4px;
-}
-
-.gezi:nth-child(43) {
- margin-left: 4px;
-}
-
-.gezi:nth-child(64) {
- margin-left: 4px;
-}
-
+.gezi:nth-child(22),
+.gezi:nth-child(43),
+.gezi:nth-child(64),
.gezi:nth-child(85) {
- margin-left: 4px;
+ margin-left: 7.7px;
}
-.block {
- min-height: 50vh;
- max-width: 100vw;
- background-image: url('xmjc.png');
- margin: 0px;
- background-repeat:no-repeat ;
- background-size:100% 100%;
- background-attachment:local;
+
+
+.blocks {
+ min-height: 49vh;
+ max-width: 100vw;
+ background-image: url('../../img/xmjc.png');
+ margin: 0 auto;
+ background-repeat: no-repeat;
+ /* background-size: 100% 100%; */
+ background-size: 1280px 377px;
+ background-attachment: local;
+ width: 1280px;
+}
+
+.blocks-img {
+ height: 100px;
+ max-width: 100vw;
+ background-repeat: no-repeat;
+ background-size: 32px 66px;
+ background-attachment: local;
+ width: 32px;
+
+ position: absolute;
+ /* left: 116px; */
+ /* left:1060px;18.88px */
+ background-image: url('../../img/bigcar01.png');
+}
+
+.el-table td,
+.el-table th {
+ padding: 8px 0;
+}
+
+.el-table__empty-block {
+ min-height: 41px;
+}
+
+.el-table__empty-text {
+ line-height: 41px;
+}
+
+.box {
+ width: 90%;
+ margin-left: 5%;
+ height: 35px;
+ color: red;
+ font-size: 12px;
+ overflow: hidden;
+}
+
+.text {
+ width: auto;
+ line-height: 35px;
+ white-space: nowrap;
+ animation: textScroll 20s linear infinite;
+ margin: 0 auto;
+}
+
+@keyframes textScroll {
+ 0% {
+ transform: translateX(100%);
+ }
+
+ 100% {
+ transform: translateX(-150%);
+ }
}
</style>
<template>
<el-container>
<!-- <el-header style="padding: 10px;"></el-header> -->
<el-main>
+ <div class="box">
+ <div class="text">
+ Alarm:
+ <label v-for="item in this.alarm" :key="item['id']">
+ {{ item['content'] }}
+ </label>
+ </div>
+ </div>
+
<div style="display:flex;justify-content: space-around;width: 95%;margin: 0 auto;">
- <el-input style="width:15%;" placeholder="Enter the glass lD"></el-input>
- <el-button type="primary">Manually feed the glass</el-button>
+ <el-input style="width:15%;" placeholder="Enter the glass lD" v-model="glassid"></el-input>
+ <el-button type="primary" @click="showform()">Manually feed the glass</el-button>
<el-input style="width:15%;" placeholder="Enter the order number" v-model="order"></el-input>
- <el-button type="warning" @click="getOrder()">Exit the glass by order number</el-button>
+ <el-button type="warning" @click="showform1();">Exit the glass by order number</el-button>
</div>
<div>
<el-table :data="this.tasklist1" border style="width: 100%">
<el-table-column prop="glassId" label="Coming out glass ID"></el-table-column>
- <el-table-column prop="cage" label="The Grille number being used"></el-table-column>
- <el-table-column label="Order number">orderNo</el-table-column>
- <el-table-column prop="address" label="Length and width"></el-table-column>
- <el-table-column prop="address" label="coating"></el-table-column>
+ <el-table-column :width="250" prop="cell" label="The Grille number being used"></el-table-column>
+ <el-table-column prop="orderId" label="Order Nmuber"></el-table-column>
+ <el-table-column prop="lengthwidth" label="Length and width"></el-table-column>
+ <el-table-column prop="coating" label="coating"></el-table-column>
+ <el-table-column label="Operate">
+ <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" @click="endtask(0)">end
+ task</el-button>
+ </el-table-column>
</el-table>
<el-table :data="this.tasklist2" border style="width: 100%">
<el-table-column prop="glassId" label="Incoming glass ID"></el-table-column>
- <el-table-column prop="cage" label="The Grille number being used"></el-table-column>
- <el-table-column label="Order number">orderNo</el-table-column>
- <el-table-column prop="address" label="Length and width"></el-table-column>
- <el-table-column prop="address" label="coating"></el-table-column>
+ <el-table-column :width="250" prop="cell" label="The Grille number being used"></el-table-column>
+ <el-table-column prop="orderId" label="Order Nmuber"></el-table-column>
+ <el-table-column prop="lengthwidth" label="Length and width"></el-table-column>
+ <el-table-column prop="coating" label="coating"></el-table-column>
+ <el-table-column label="Operate">
+ <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" @click="endtask(1)">end
+ task</el-button>
+ </el-table-column>
</el-table>
</div>
<div style="padding: 10px;display: flex;height:85px;">
@@ -126,51 +194,179 @@
</div>
</div>
</el-main>
- <el-footer>
- <div class="block" style="text-align: center;position: relative;">
- <div style="display:flex;position: absolute;float:left;z-index: 999;top:71px;left:136px;">
- <div :class="getStatusClass(item.state)" v-for="item in cagelist1" :key="item['date']"></div>
- </div>
- <div style="display:flex;position: absolute;float:left;z-index: 999;top:71px;left:366px;">
- <div :class="getStatusClass(item.state)" v-for="item in cagelist2" :key="item['date']"></div>
- </div>
- <div style="display:flex;position: absolute;float:left;z-index: 999;top:96px;left:136px;">
- <div :class="getStatusClass(item.state)" v-for="item in cagelist3" :key="item['date']"></div>
- </div>
- <div style="display:flex;position: absolute;float:left;z-index: 999;top:96px;left:366px;">
- <div :class="getStatusClass(item.state)" v-for="item in cagelist4" :key="item['date']"></div>
- </div>
- </div>
+ <el-footer>
+ <div class="blocks" style="position: relative;">
+ <div style="display:flex;position: absolute;float:left;z-index: 999;top:76px;left:253px;">
+ <div :class="getStatusClass(item.state)" v-for="item in cagelist1" :key="item['date']"></div>
+ </div>
+ <div style="display:flex;position: absolute;float:left;z-index: 999;top:76px;left:682.5px;">
+ <div :class="getStatusClass(item.state)" v-for="item in cagelist2" :key="item['date']"></div>
+ </div>
+ <div style="display:flex;position: absolute;float:left;z-index: 999;top:102px;left:253px;">
+ <div :class="getStatusClass(item.state)" v-for="item in cagelist3" :key="item['date']"></div>
+ </div>
+ <div style="display:flex;position: absolute;float:left;z-index: 999;top:102px;left:682.5px;">
+ <div :class="getStatusClass(item.state)" v-for="item in cagelist4" :key="item['date']"></div>
+ </div>
+ <div class="blocks-img" :style="{ left: car1 + 'px', top: '10px' }">
+
+ </div>
+ <div class="blocks-img" :style="{ left: car2 + 'px', top: '129px' }">
+
+ </div>
+ </div>
</el-footer>
+ <el-dialog :visible.sync="dialogFormVisible" title="Please confirm the information">
+ <el-form :model="form" label-width="100px" style="padding-right: 30px">
+ <el-form-item label="order">
+ <el-input v-model="form.orderno" autocomplete="off" />
+ </el-form-item>
+ <el-form-item label="length">
+ <el-input v-model="form.length" autocomplete="off" />
+ </el-form-item>
+ <el-form-item label="width">
+ <el-input v-model="form.width" autocomplete="off" />
+ </el-form-item>
+ <el-form-item label="coating">
+ <el-input v-model="form.coating" autocomplete="off" />
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="cancal()">cancal</el-button>
+ <el-button @click="sbumitglassid()" type="primary">confirm</el-button>
+ </span>
+ </template>
+ </el-dialog>
+ <el-dialog :visible.sync="dialogFormVisible1" title="Ordering Information">
+ <el-form :model="form1" label-width="100px" style="padding-right: 30px">
+ <el-form-item label="order">
+ <el-input v-model="form1.order" autocomplete="off" />
+ </el-form-item>
+ <el-form-item label="number">
+ <el-input v-model="form1.number" autocomplete="off" />
+ </el-form-item>
+ </el-form>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="cancal1()">cancal</el-button>
+ <el-button @click="getOrder();" type="primary">confirm</el-button>
+ </span>
+ </template>
+ </el-dialog>
</el-container>
</template>
<script>
-import { home, home2, loadtask, InsertOrder } from "../../api/home";
+import { home, home2, loadtask, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo } from "../../api/home";
-
+let socket;
export default {
+ name: "Home",
data() {
return {
+ dialogFormVisible: false,
+ dialogFormVisible1: false,
+ form: {
+ orderno: "NG2210210",
+ length: 800,
+ width: 1000,
+ coating: "red",
+ },
+ form1: {
+ order: "NG2210210",
+ number: 800,
+ },
+ alarm: [],
tableData: [],
cagelist1: [],
cagelist2: [],
cagelist3: [],
cagelist4: [],
- form: {},
- task1: 3,
- task2: 4,
+ task1: 2,
+ task2: 3,
tasklist1: [],
tasklist2: [],
- src: "./img/xmjc.png",
- order: ""
+ order: "",
+ glassid: "",
+ url: "../../img/bigcar01.png",
+ car1: 116,
+ car2: 187,
+ incell: "",
+ outcell: ""
};
},
created() {
this.load();
+ this.init();
},
methods: {
+ init() {
+ let viewname = "Home";
+
+ if (typeof (WebSocket) == "undefined") {
+ console.log("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔WebSocket");
+ } else {
+ //console.log("鎮ㄧ殑娴忚鍣ㄦ敮鎸乄ebSocket");
+
+ let socketUrl = "ws://" + "localhost:8888" + "/springboot-vue3/api/talk/" + viewname;
+ if (socket != null) {
+ socket.close();
+ socket = null;
+ }
+ // 寮�鍚竴涓獁ebsocket鏈嶅姟
+ socket = new WebSocket(socketUrl);
+ //鎵撳紑浜嬩欢
+ socket.onopen = function () {
+ console.log("websocket宸叉墦寮�");
+ };
+ // 娴忚鍣ㄧ鏀舵秷鎭紝鑾峰緱浠庢湇鍔$鍙戦�佽繃鏉ョ殑鏂囨湰娑堟伅
+ socket.onmessage = function (msg) {
+
+ //console.log("鏀跺埌鏁版嵁====" + msg.data);
+ let obj = JSON.parse(msg.data);
+ //this.$set(this.record.params, 0, obj.params[0]);
+
+ this.car1 = 116 + 18.88 * obj.params[0][0];
+ this.car2 = 187 + 18.8 * obj.params[0][1];
+ this.tableData = obj.tableData[0];
+ this.cagelist1 = obj.cagelist1[0];
+ this.cagelist2 = obj.cagelist2[0];
+ this.cagelist3 = obj.cagelist3[0];
+ this.cagelist4 = obj.cagelist4[0];
+ this.tasklist1 = obj.tasklist1[0];
+ this.tasklist2 = obj.tasklist2[0];
+ if (this.tasklist1.length > 0) {
+ this.incell = this.tasklist1[0]['cell'];
+ }
+ if (this.tasklist1.length > 0) {
+ this.outcell = this.tasklist2[0]['cell'];
+ }
+ this.alarm = obj.alarmmg[0];
+ // for (let a = 0; a <= this.record.params.length - 1; a++) {
+ // // this.record.xyData[a] = [this.record.canshu[a], this.record.params[0][a]];
+ // // this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
+
+ // // this.record.xyData[a].value = this.record.params[0][a];
+ // this.car1=this.record.params[0][a];
+ // console.log(this.record.params[0][a]);
+
+
+ // }
+ this.$forceUpdate();
+
+ }.bind(this);
+ //鍏抽棴浜嬩欢
+ socket.onclose = function () {
+ console.log("websocket宸插叧闂�");
+ };
+ //鍙戠敓浜嗛敊璇簨浠�
+ socket.onerror = function () {
+ console.log("websocket鍙戠敓浜嗛敊璇�");
+ }
+ }
+ },
load() {
home().then(res => {
this.tableData = res.data.list;
@@ -183,13 +379,27 @@
});
loadtask(this.task1).then(res => {
this.tasklist1 = res.data.list;
+ if (res.data.list.length > 0) {
+ this.incell = this.tasklist1[0]['cell'];
+ }
});
loadtask(this.task2).then(res => {
this.tasklist2 = res.data.list;
+ if (res.data.list.length > 0) {
+ this.outcell = this.tasklist2[0]['cell'];
+ }
+
+ });
+ loadtask(this.task2).then(res => {
+ this.tasklist2 = res.data.list;
+
+ });
+ SelectAlarmmgInfo().then(res => {
+ this.alarm = res.data.alarmmg;
});
},
+ //鏍规嵁鏍煎瓙鐘舵�佷慨鏀归鑹�
getStatusClass(state) {
- //姣忓悇鏍煎瓙涓嶅悓鐘舵�佷笉鍚岄鑹�
if (state == 0) {
return "green gezi";
} else if (state == 1) {
@@ -202,21 +412,86 @@
return "black gezi";
}
},
+ //鎸夎鍗曞嚭鐗�
getOrder() {
- if(this.order!=""){
+ if (this.form1.order != "") {
InsertOrder(this.order).then(res => {
if (res.data.message == 200) {
this.$message.success("Operation successful");
} else {
- this.$message.success("operation failed");
+ this.$message.success("There is no such order");
}
this.load();
});
}
-
+
+ },
+ //鎵嬪姩涓婄墖
+ sbumitglassid() {
+ if (this.form.order != "") {
+ Addglassid(this.glassid).then(res => {
+ if (res.data.message2 == 200) {
+ this.$message.success("Operation successful");
+ this.cancal();
+ } else {
+ this.$message.success("There are currently tasks");
+ }
+ });
+ }
+ },
+ showform() {
+ if (this.glassid != "") {
+ this.form =
+ {
+ orderno: "NG2210210",
+ length: 800,
+ width: 1000,
+ coating: "red",
+ };
+ this.dialogFormVisible = true;
+ }
+ },
+ showform1() {
+ if (this.order != "") {
+ this.form1 =
+ {
+ order: "NG2210210",
+ number: 800,
+ };
+ this.dialogFormVisible1 = true;
+ }
+
+
+ },
+ cancal() {
+ this.dialogFormVisible = false;
+ this.form = {};
+ },
+ cancal1() {
+ this.dialogFormVisible1 = false;
+ this.form1 = {};
+ },
+ endtask(type) {
+ if (type == 0) {
+ UpdateTask(type, this.incell).then(res => {
+ if (res.data.message3 == 200) {
+ this.$message.success("Operation successful");
+ }
+ });
+ } else {
+ UpdateTask(type, this.outcell).then(res => {
+ if (res.data.message3 == 200) {
+ this.$message.success("Operation successful");
+ }
+ });
+ }
+
+
}
+
}
-};
+}
+
</script>
\ No newline at end of file
--
Gitblit v1.8.0