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