From 31101f632c27c05d15f30ca3084e3ed3da2a29af Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期五, 08 十二月 2023 11:42:08 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 springboot-vue3/src/main/resources/config.properties                                     |   57 ++
 CanadaMes-ui/src/views/Electrical/Positioning2.vue                                       |   49 
 CanadaMes-ui/src/views/home/index.vue                                                    |   69 +
 springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java        |   86 ++
 CanadaMes-ui/src/views/Electrical/Parameter2.vue                                         |   99 ++-
 CanadaMes-ui/src/views/Electrical/State.vue                                              |    2 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java    |   54 +
 springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java        |   26 
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java              |   48 
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java              |   25 
 CanadaMes-ui/src/views/Electrical/Positioning1.vue                                       |   49 
 CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue                          |   50 
 CanadaMes-ui/src/views/Electrical/alarm.vue                                              |    2 
 CanadaMes-ui/src/api/home.js                                                             |    7 
 CanadaMes-ui/src/views/Electrical/Action.vue                                             |    2 
 CanadaMes-ui/src/configuration/parameter2.json                                           |   11 
 CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue                                 |   50 
 CanadaMes-ui/src/configuration/ManualJog.json                                            |    4 
 CanadaMes-ui/src/views/Electrical/Servomanual.vue                                        |   50 
 CanadaMes-ui/src/views/Electrical/Sign.vue                                               |    2 
 springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java              |   14 
 CanadaMes-ui/src/views/Electrical/ManualonePosition.vue                                  |   51 
 springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java             |    2 
 springboot-vue3/src/main/resources/Alarm.json                                            |  507 ++++++++++++++++++
 CanadaMes-ui/src/configuration/ServoManualone.json                                       |   12 
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java      |   53 +
 CanadaMes-ui/src/lang/locales/zh-CN.json                                                 |    4 
 springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java         |   14 
 CanadaMes-ui/src/img/xmjc.png                                                            |    0 
 CanadaMes-ui/src/lang/locales/en-US.json                                                 |   17 
 CanadaMes-ui/src/views/Electrical/ManualJog.vue                                          |   50 
 CanadaMes-ui/src/views/Electrical/Parameter1.vue                                         |   49 
 CanadaMes-ui/src/views/Electrical/ServoManualone.vue                                     |  129 ++-
 springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java |    1 
 34 files changed, 1,219 insertions(+), 426 deletions(-)

diff --git a/CanadaMes-ui/src/api/home.js b/CanadaMes-ui/src/api/home.js
index beef5bd..29d0964 100644
--- a/CanadaMes-ui/src/api/home.js
+++ b/CanadaMes-ui/src/api/home.js
@@ -222,4 +222,11 @@
     })
 }
 
+export function CompleteQueue(id,frameid) {
+    return request({
+        url: '/home/CompleteQueue?id=' + id+'&frameid='+frameid,
+        method: 'post',
+        data:""
+    })
+}
 
diff --git a/CanadaMes-ui/src/configuration/ManualJog.json b/CanadaMes-ui/src/configuration/ManualJog.json
index 02678ba..1930afc 100644
--- a/CanadaMes-ui/src/configuration/ManualJog.json
+++ b/CanadaMes-ui/src/configuration/ManualJog.json
@@ -164,7 +164,7 @@
     },
     {
       "button": {
-        "name": "B02鐢电闃�",
+        "name": "B02鍚规皵",
         "value": 0,
         "address": "DB10.0",
         "state": 1
@@ -191,7 +191,7 @@
     },
     {
       "button": {
-        "name": "B01鐢电闃�",
+        "name": "B01鍚规皵",
         "value": 0,
         "address": "DB10.0",
         "state": 1
diff --git a/CanadaMes-ui/src/configuration/ServoManualone.json b/CanadaMes-ui/src/configuration/ServoManualone.json
index b557b5f..44ade69 100644
--- a/CanadaMes-ui/src/configuration/ServoManualone.json
+++ b/CanadaMes-ui/src/configuration/ServoManualone.json
@@ -346,17 +346,7 @@
           }
           
     ]
-    , [
-      {
-          "button": {
-            "name": "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨",
-            "value":0,
-            "address":"DB10.0",
-            "type":"66"
-          }
-        }
-        
-  ]
+
      
     
   ]
diff --git a/CanadaMes-ui/src/configuration/parameter2.json b/CanadaMes-ui/src/configuration/parameter2.json
index 7d01342..a477253 100644
--- a/CanadaMes-ui/src/configuration/parameter2.json
+++ b/CanadaMes-ui/src/configuration/parameter2.json
@@ -320,4 +320,15 @@
       "value": 0
     }
   ]
+  , [
+    {
+        "button": {
+          "name": "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨",
+          "value":0,
+          "address":"DB10.0",
+          "type":"66"
+        }
+      }
+      
+]
 ]
\ No newline at end of file
diff --git a/CanadaMes-ui/src/img/xmjc.png b/CanadaMes-ui/src/img/xmjc.png
index 5935f14..dee5f48 100644
--- a/CanadaMes-ui/src/img/xmjc.png
+++ b/CanadaMes-ui/src/img/xmjc.png
Binary files differ
diff --git a/CanadaMes-ui/src/lang/locales/en-US.json b/CanadaMes-ui/src/lang/locales/en-US.json
index 3d93c64..1cd1b3a 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -321,7 +321,11 @@
   "Top":"Top",
   "Up":"Up",
   "Down":"Down",
+  "Unable to find the placement method of the aluminum frame":"Unable to find the placement method of the aluminum frame",
+  "Unable to find whether the aluminum frame is flipped or not":"Unable to find whether the aluminum frame is flipped or not",
   "You do not have this permission":"You do not have this permission",
+  "This glass is already in the Queue":"This glass is already in the Queue",
+  "complete":"complete",
     "ServoManualone": {
       "A01 鎵�鍦ㄦ牸瀛�": "A01 Current Grid",
       "鏁伴噺": "Quantity",
@@ -344,8 +348,8 @@
       "A02鍗婅嚜鍔�": "A02 Semi-Auto",
       "A02鍗婅嚜鍔ㄥ惎鍔�": "A02 Semi-Auto Start",
       "B01 鎵�鍦ㄦ牸瀛�": "B01 Current Grid",
-      "B02 鎵�鍦ㄦ牸瀛�": "B02 Current Grid",
-      "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨": "Abort/ResumeTasks"
+      "B02 鎵�鍦ㄦ牸瀛�": "B02 Current Grid"
+    
     },
     "langParameter1": {
 
@@ -382,7 +386,8 @@
           "A01褰撳墠鏍煎瓙": "A01 Current Grid",
           "A02鎵�鍦ㄦ牸瀛�": "A02 Current Grid",
           "B01鎵�鍦ㄦ牸瀛�": "B01 Current Grid",
-          "B02鎵�鍦ㄦ牸瀛�": "B02 Current Grid"
+          "B02鎵�鍦ㄦ牸瀛�": "B02 Current Grid",
+          "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨": "Abort/ResumeTasks"
           },
           "langPositioning1": {
             "鏍煎瓙闂磋窛": "GridSpacing",
@@ -507,12 +512,12 @@
                 "A02琛岃蛋鐐瑰姩": "A02 SERVE TRAVEL",
                 "B01琛岃蛋鐐瑰姩": "B01 SERVE TRAVEL",
                 "B02琛岃蛋鐐瑰姩": "B02 SERVE TRAVEL",
-                "B02缈昏浆姘旂几": "B02 YV TURN",
+                "B02缈昏浆姘旂几": "B02 Solenoid TURN",
                 "B02鍗囬檷姘旂几": "B02 Solenoid UP DOWN",
-                "B02鐢电闃�": "B02 Solenoid Gassing",
+                "B02鍚规皵": "B02 Solenoid Gassing",
                 "B01缈昏浆姘旂几": "B01 Solenoid TURN",
                 "B01鍗囬檷姘旂几": "B01 Solenoid UP DOWN",
-                "B01鐢电闃�": "B01 Solenoid Gassing",
+                "B01鍚规皵": "B01 Solenoid Gassing",
                 "A01杈撻�佸弽鍚�": "A01 VFD conveyor reverse",
                 "A02杈撻�佸弽鍚�": "A02 VFD conveyor reverse",
                 "A01娉ㄧ數娉�": "A01 oil pump",
diff --git a/CanadaMes-ui/src/lang/locales/zh-CN.json b/CanadaMes-ui/src/lang/locales/zh-CN.json
index 62696fd..6d3fc03 100644
--- a/CanadaMes-ui/src/lang/locales/zh-CN.json
+++ b/CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -314,6 +314,10 @@
   "Up":"涓婄Щ",
   "Down":"涓嬬Щ",
   "You do not have this permission":"You do not have this permission",
+  "Unable to find the placement method of the aluminum frame":"鏌ヨ涓嶅埌閾濇鎽嗘斁鏂瑰紡",
+  "Unable to find whether the aluminum frame is flipped or not":"鏌ヨ涓嶅埌閾濇鏄惁缈昏浆",
+  "This glass is already in the Queue":"姝ょ幓鐠冨凡鍦ㄥ嚭鐗囬槦鍒椾腑",
+  "complete":"瀹屾垚",
   "langparameter": {
     "conveyor Velocity(Auto FAST)": "D01-D06 鐨甫杈撻�佽嚜鍔ㄥ揩閫�",
     "conveyor Velocity(Auto SLOW)": "D01-D06 鐨甫杈撻�佽嚜鍔ㄦ參閫�",
diff --git a/CanadaMes-ui/src/views/Electrical/Action.vue b/CanadaMes-ui/src/views/Electrical/Action.vue
index a037906..4f9a45d 100644
--- a/CanadaMes-ui/src/views/Electrical/Action.vue
+++ b/CanadaMes-ui/src/views/Electrical/Action.vue
@@ -12,7 +12,7 @@
       }}</router-link> -->
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
-       <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+       <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
       }}</router-link>
     </el-breadcrumb>
     
diff --git a/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue b/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue
index 92aba7b..e5a3153 100644
--- a/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue
+++ b/CanadaMes-ui/src/views/Electrical/AutomaticParameterSetting.vue
@@ -12,37 +12,41 @@
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
       <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ServoManual')
+        $t('Parameter')
       }}</router-link>
     </el-breadcrumb>
 
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-
-      <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Servomanualone')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-      }}</router-link>
-     <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
-        }}</router-link>
-      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning1')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning2')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
+      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
       }}</router-link>
       <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
         $t('ManualJog')
       }}</router-link>
+      
+       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition')
+      }}</router-link>
+
+<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Servomanualone')
+      }}</router-link>
+      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+      }}</router-link>
+     
+      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Address parameter settings')
+      }}</router-link>
+      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Positioning2')
+      }}</router-link>
+     
+      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition2')
+      }}</router-link>
+      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Speed parameter settings')
+      }}</router-link>
+      
     </el-breadcrumb>
 
     <el-row :gutter="20">
diff --git a/CanadaMes-ui/src/views/Electrical/ManualJog.vue b/CanadaMes-ui/src/views/Electrical/ManualJog.vue
index f2e3d13..8ec18ea 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualJog.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualJog.vue
@@ -12,37 +12,41 @@
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
       <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ServoManual')
+        $t('Parameter')
       }}</router-link>
     </el-breadcrumb>
 
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-
-      <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Servomanualone')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
-        }}</router-link> 
-      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning1')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning2')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
+      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
       }}</router-link>
       <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
         $t('ManualJog')
       }}</router-link>
+      
+       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition')
+      }}</router-link>
+
+<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Servomanualone')
+      }}</router-link>
+      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+      }}</router-link>
+     
+      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Address parameter settings')
+      }}</router-link>
+      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Positioning2')
+      }}</router-link>
+     
+      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition2')
+      }}</router-link>
+      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Speed parameter settings')
+      }}</router-link>
+      
     </el-breadcrumb>
 
     <el-row :gutter="1">
diff --git a/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue b/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
index a411b5e..e9b2d80 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualonePosition.vue
@@ -12,37 +12,40 @@
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
       <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ServoManual')
+        $t('Parameter')
       }}</router-link>
     </el-breadcrumb>
-
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-
-      <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Servomanualone')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning1')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning2')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
+      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
       }}</router-link>
       <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
         $t('ManualJog')
       }}</router-link>
+      
+       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition')
+      }}</router-link>
+
+<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Servomanualone')
+      }}</router-link>
+      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+      }}</router-link>
+     
+      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Address parameter settings')
+      }}</router-link>
+      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Positioning2')
+      }}</router-link>
+     
+      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition2')
+      }}</router-link>
+      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Speed parameter settings')
+      }}</router-link>
+      
     </el-breadcrumb>
 
     <el-row :gutter="10">
diff --git a/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue b/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
index 80affab..96cd5e3 100644
--- a/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
+++ b/CanadaMes-ui/src/views/Electrical/ManualonePosition2.vue
@@ -12,37 +12,41 @@
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
       <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ServoManual')
+        $t('Parameter')
       }}</router-link>
     </el-breadcrumb>
 
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-
-      <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Servomanualone')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-      }}</router-link>
-     <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
-        }}</router-link> 
-      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning1')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning2')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
+      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
       }}</router-link>
       <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
         $t('ManualJog')
       }}</router-link>
+      
+       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition')
+      }}</router-link>
+
+<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Servomanualone')
+      }}</router-link>
+      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+      }}</router-link>
+     
+      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Address parameter settings')
+      }}</router-link>
+      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Positioning2')
+      }}</router-link>
+     
+      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition2')
+      }}</router-link>
+      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Speed parameter settings')
+      }}</router-link>
+      
     </el-breadcrumb>
 
     <el-row :gutter="20">
diff --git a/CanadaMes-ui/src/views/Electrical/Parameter1.vue b/CanadaMes-ui/src/views/Electrical/Parameter1.vue
index 7401d83..4477dbc 100644
--- a/CanadaMes-ui/src/views/Electrical/Parameter1.vue
+++ b/CanadaMes-ui/src/views/Electrical/Parameter1.vue
@@ -12,36 +12,41 @@
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
       <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ServoManual')
+        $t('Parameter')
       }}</router-link>
     </el-breadcrumb>
 
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-      <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Servomanualone')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning1')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning2')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
+      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
       }}</router-link>
       <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
         $t('ManualJog')
       }}</router-link>
+      
+       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition')
+      }}</router-link>
+
+<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Servomanualone')
+      }}</router-link>
+      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+      }}</router-link>
+     
+      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Address parameter settings')
+      }}</router-link>
+      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Positioning2')
+      }}</router-link>
+     
+      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition2')
+      }}</router-link>
+      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Speed parameter settings')
+      }}</router-link>
+      
     </el-breadcrumb>
 
     <el-row :gutter="18" class="card">
diff --git a/CanadaMes-ui/src/views/Electrical/Parameter2.vue b/CanadaMes-ui/src/views/Electrical/Parameter2.vue
index 6dde045..ad9df4b 100644
--- a/CanadaMes-ui/src/views/Electrical/Parameter2.vue
+++ b/CanadaMes-ui/src/views/Electrical/Parameter2.vue
@@ -11,33 +11,41 @@
         }}</router-link> -->
         <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
         }}</router-link>
-         <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+         <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
         }}</router-link>
       </el-breadcrumb>
   
       <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-        <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" @click="closeSocket()" active-class="blue-button">{{ $t('Servomanualone')
-        }}</router-link>
-          <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-          }}</router-link>
-         <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
-          }}</router-link> 
-            <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{ $t('Positioning1')
-          }}</router-link>
-            <router-link to="/Electrical/Positioning2" tag="el-button" type="text"  active-class="blue-button">{{ $t('Positioning2')
-          }}</router-link>
-           <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
+      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
       }}</router-link>
       <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
         $t('ManualJog')
       }}</router-link>
+      
+       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition')
+      }}</router-link>
+
+<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Servomanualone')
+      }}</router-link>
+      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+      }}</router-link>
+     
+      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Address parameter settings')
+      }}</router-link>
+      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Positioning2')
+      }}</router-link>
+     
+      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition2')
+      }}</router-link>
+      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Speed parameter settings')
+      }}</router-link>
+      
     </el-breadcrumb>
   
     <el-row :gutter="40">
@@ -86,7 +94,7 @@
   <script>
   import LanguageMixin from '../../lang/LanguageMixin'
   import data from '../../configuration/parameter2'
-  import { throttle } from 'lodash';
+  // import { throttle } from 'lodash';
   let socket;
 
   // window.onload=function(){
@@ -167,7 +175,7 @@
 
   // 灏嗗緱鍒扮殑鍊兼坊鍔犲埌 data 鏁扮粍涓�
   data2.push(resetButtonValues.flat());
- 
+  data2.push([]);
   // 鍦� data2 鏁扮粍鍓嶉潰娣诲姞涓や釜绌烘暟缁�
  
 
@@ -181,6 +189,35 @@
  
  
 }
+
+if (currentButtonName === 'Abort/ResumeTasks' || currentButtonName === '鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨') {
+  const data3 = [];
+  const resetButtonValues3 = [this.jsonData[13][0].button.value];
+ 
+  // 灏嗗緱鍒扮殑鍊兼坊鍔犲埌 data 鏁扮粍涓�
+  data3.push(resetButtonValues3.flat());
+  data3.unshift([]);
+  // 鍦� data3 鏁扮粍鍓嶉潰娣诲姞涓や釜绌烘暟缁�
+  
+
+
+  // 鍒涘缓 jsonObject3 瀵硅薄锛屽苟娣诲姞 data3 灞炴��
+  const jsonObject3 = { data: data3 };
+
+  // 鎻愪氦鏁版嵁鍒板悗绔�
+  const jsonString3 = JSON.stringify(jsonObject3);
+  console.log('鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨:', jsonString3);
+  socket?.send(jsonString3);
+  // setTimeout(()=>
+  //   window.location.reload(),2000
+  // )
+}
+
+
+
+
+
+
 },
     initWebSocket () {
  
@@ -221,12 +258,16 @@
 
 
 
-  const handleMouseMove = throttle(function(event) {
-  const inputBox = document.querySelectorAll('.action-button');
-  const target = event.target;
+  // const handleMouseMove = throttle(function(event) {
+  // const inputBox = document.querySelectorAll('.id');
+  // const target = event.target;
 
-  if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
-//娓呴櫎id
+  // if (parms && inputBox && Array.from(inputBox).every(box => !box.contains(target))) {
+//鎬ュ仠鎸夐挳
+    jsonData2[13][0].button.value = obj.jiting[0][0];
+
+
+    //娓呴櫎id
 
       for (let i = 0; i < jsonData2.length; i++) {
   let arr = jsonData2[i];
@@ -345,11 +386,11 @@
 
   }
 //  console.log(jsonData2);
-}, 50);
+// }, 50);
         
-document.addEventListener('mouseover', handleMouseMove);
+// document.addEventListener('mouseover', handleMouseMove);
   
-};
+// };
 
 
 
diff --git a/CanadaMes-ui/src/views/Electrical/Positioning1.vue b/CanadaMes-ui/src/views/Electrical/Positioning1.vue
index 0911f6f..2f99457 100644
--- a/CanadaMes-ui/src/views/Electrical/Positioning1.vue
+++ b/CanadaMes-ui/src/views/Electrical/Positioning1.vue
@@ -12,36 +12,41 @@
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
       <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ServoManual')
+        $t('Parameter')
       }}</router-link>
     </el-breadcrumb>
 
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-      <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Servomanualone')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning1')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning2')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
+      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
       }}</router-link>
       <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
         $t('ManualJog')
       }}</router-link>
+      
+       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition')
+      }}</router-link>
+
+<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Servomanualone')
+      }}</router-link>
+      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+      }}</router-link>
+     
+      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Address parameter settings')
+      }}</router-link>
+      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Positioning2')
+      }}</router-link>
+     
+      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition2')
+      }}</router-link>
+      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Speed parameter settings')
+      }}</router-link>
+      
     </el-breadcrumb>
 
     <el-row :gutter="18" class='card'>
diff --git a/CanadaMes-ui/src/views/Electrical/Positioning2.vue b/CanadaMes-ui/src/views/Electrical/Positioning2.vue
index 0e6ca75..d460403 100644
--- a/CanadaMes-ui/src/views/Electrical/Positioning2.vue
+++ b/CanadaMes-ui/src/views/Electrical/Positioning2.vue
@@ -12,36 +12,41 @@
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
       <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ServoManual')
+        $t('Parameter')
       }}</router-link>
     </el-breadcrumb>
 
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-      <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Servomanualone')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning1')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning2')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
+      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
       }}</router-link>
       <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
         $t('ManualJog')
       }}</router-link>
+      
+       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition')
+      }}</router-link>
+
+<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Servomanualone')
+      }}</router-link>
+      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+      }}</router-link>
+     
+      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Address parameter settings')
+      }}</router-link>
+      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Positioning2')
+      }}</router-link>
+     
+      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition2')
+      }}</router-link>
+      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Speed parameter settings')
+      }}</router-link>
+      
     </el-breadcrumb>
 
    <el-row :gutter="18" class='card'>
diff --git a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
index 88756d3..9323ec7 100644
--- a/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
+++ b/CanadaMes-ui/src/views/Electrical/ServoManualone.vue
@@ -11,34 +11,41 @@
         }}</router-link> -->
         <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
         }}</router-link>
-         <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+         <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
         }}</router-link>
       </el-breadcrumb>
 
       <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-   
-        <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{ $t('Servomanualone')
-      }}</router-link>
-        <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-        }}</router-link>
-           <router-link to="/Electrical/Parameter2" tag="el-button" type="text"  @click="closeSocket()" active-class="blue-button">{{ $t('Parameter2')
-        }}</router-link> 
-          <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{ $t('Positioning1')
-          }}</router-link>
-            <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{ $t('Positioning2')
-          }}</router-link>
-           <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
+      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
       }}</router-link>
       <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
         $t('ManualJog')
       }}</router-link>
+      
+       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition')
+      }}</router-link>
+
+<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Servomanualone')
+      }}</router-link>
+      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+      }}</router-link>
+     
+      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Address parameter settings')
+      }}</router-link>
+      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Positioning2')
+      }}</router-link>
+     
+      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition2')
+      }}</router-link>
+      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Speed parameter settings')
+      }}</router-link>
+      
     </el-breadcrumb>
 
     <el-row :gutter="26">
@@ -56,8 +63,8 @@
       </el-row>
       <div class="button-row" style="display: flex; justify-content: space-between;">
         <div v-for="(item, itemIndex) in dataGroup" :key="itemIndex">
-          <el-button v-if="item.button && language === 'en-US' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === 'Fault' && item.button.value === 1,'error-button2': item.button.name === 'NotZero' && item.button.value === 0,'fuwei': item.button.name === 'Reset' && item.button.value === 1,'huiling': item.button.name === 'Home' && item.button.value === 1,'qidong': item.button.name === 'A01 Semi-Auto' && item.button.value === 1,'qidong2': item.button.name === 'A02 Semi-Auto' && item.button.value === 1,'qidong3': item.button.name === 'A01 Semi-Auto Start' && item.button.value === 1,'qidong4': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1,'qidong5': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
-          <el-button v-if="item.button && language === 'zh-CN' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === '鏁呴殰' && item.button.value === 1,'error-button2': item.button.name === '鏈洖闆�' && item.button.value === 0,'fuwei': item.button.name === '澶嶄綅' && item.button.value === 1,'huiling': item.button.name === '鍥為浂' && item.button.value === 1,'qidong': item.button.name === 'A01鍗婅嚜鍔�' && item.button.value === 1,'qidong2': item.button.name === 'A02鍗婅嚜鍔�' && item.button.value === 1,'qidong3': item.button.name === 'A01鍗婅嚜鍔ㄥ惎鍔�' && item.button.value === 1,'qidong4': item.button.name === 'A02鍗婅嚜鍔ㄥ惎鍔�' && item.button.value === 1,'qidong5': item.button.name === 'A02鍗婅嚜鍔�' && item.button.value === 1  }" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
+          <el-button v-if="item.button && language === 'en-US' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === 'Fault' && item.button.value === 1,'error-button2': item.button.name === 'NotZero' && item.button.value === 0,'fuwei': item.button.name === 'Reset' && item.button.value === 1,'huiling': item.button.name === 'Home' && item.button.value === 1,'qidong': item.button.name === 'A01 Semi-Auto' && item.button.value === 1,'qidong2': item.button.name === 'A02 Semi-Auto' && item.button.value === 1,'qidong3': item.button.name === 'A01 Semi-Auto Start' && item.button.value === 1,'qidong4': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1,'qidong5': item.button.name === 'A02 Semi-Auto Start' && item.button.value === 1,'jiting': item.button.name === 'Abort/ResumeTasks' && item.button.value === 1}" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
+          <el-button v-if="item.button && language === 'zh-CN' " :name="item.button.name" v-model="item.button.value" :class="{'action-button': true, 'error-button': item.button.name === '鏁呴殰' && item.button.value === 1,'error-button2': item.button.name === '鏈洖闆�' && item.button.value === 0,'fuwei': item.button.name === '澶嶄綅' && item.button.value === 1,'huiling': item.button.name === '鍥為浂' && item.button.value === 1,'qidong': item.button.name === 'A01鍗婅嚜鍔�' && item.button.value === 1,'qidong2': item.button.name === 'A02鍗婅嚜鍔�' && item.button.value === 1,'qidong3': item.button.name === 'A01鍗婅嚜鍔ㄥ惎鍔�' && item.button.value === 1,'qidong4': item.button.name === 'A02鍗婅嚜鍔ㄥ惎鍔�' && item.button.value === 1,'qidong5': item.button.name === 'A02鍗婅嚜鍔�' && item.button.value === 1,'jiting': item.button.name === '鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨' && item.button.value === 1  }" @click="updateButtonValue(dataGroup, itemIndex); submitDataToBackend(item.button.name);">{{ item.button.name }}</el-button>
         </div>
       </div>
     </el-card>
@@ -260,6 +267,33 @@
   // )
 }
 
+// if (currentButtonName === 'Abort/ResumeTasks' || currentButtonName === '鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨') {
+//   const data3 = [];
+//   const resetButtonValues3 = this.jsonData.map(item => {
+//     const buttonItem3 = item.find(subItem => subItem.button && ['Abort/resumeTasks', '鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨'].includes(subItem.button.name));
+
+//     return buttonItem3 ? buttonItem3.button.value : null;
+//   }).filter(value => value !== null);
+
+//   // 灏嗗緱鍒扮殑鍊兼坊鍔犲埌 data 鏁扮粍涓�
+//   data3.push(resetButtonValues3.flat());
+
+//   // 鍦� data3 鏁扮粍鍓嶉潰娣诲姞涓や釜绌烘暟缁�
+  
+//   data3.push([], [], [],[], [], [], [],[]);
+
+//   // 鍒涘缓 jsonObject3 瀵硅薄锛屽苟娣诲姞 data3 灞炴��
+//   const jsonObject3 = { data: data3 };
+
+//   // 鎻愪氦鏁版嵁鍒板悗绔�
+//   const jsonString3 = JSON.stringify(jsonObject3);
+//   console.log('鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨:', jsonString3);
+//   socket?.send(jsonString3);
+//   // setTimeout(()=>
+//   //   window.location.reload(),2000
+//   // )
+// }
+
 
 //A01鍗婅嚜鍔ㄦ彁浜�
 
@@ -434,7 +468,7 @@
   }
 
   let obj = JSON.parse(msg.data);
-  // console.log(obj)
+   console.log(obj)
 const weihuiling=obj.weihuiling;
   const jsonData2 = this.jsonData;
 
@@ -515,22 +549,27 @@
 
 //鏈洖闆舵洿鏂�
 
-for (let i = 3; i < jsonData2.length; i++) {
-  let arr2 = jsonData2[i];
-  for (let j = 3; j < arr2.length; j++) {
-    let obj3 = arr2[j];
-    if(obj3.button){
-      if (obj3.button && (obj3.button.name === "鏈洖闆�" || obj3.button.name === "NotZero" )) {
-      obj3.button.value = weihuiling[0][i];
-      //  console.log(obj3.button.value)
-    }
+jsonData2[2][3].button.value = weihuiling[0][0]; 
+jsonData2[3][3].button.value = weihuiling[0][1]; 
+jsonData2[4][4].button.value = weihuiling[0][2];  
+jsonData2[5][4].button.value = weihuiling[0][3];
 
-    }
+// for (let i = 3; i < jsonData2.length; i++) {
+//   let arr2 = jsonData2[i];
+//   for (let j = 3; j < arr2.length; j++) {
+//     let obj3 = arr2[j];
+//     if(obj3.button){
+//       if (obj3.button && (obj3.button.name === "鏈洖闆�" || obj3.button.name === "NotZero" )) {
+//       obj3.button.value = weihuiling[0][i];
+//       //  console.log(obj3.button.value)
+//     }
+
+//     }
    
-  }
+//   }
 
      
-}
+// }
 // console.log(jsonData2)
 //杩涚墖id
 jsonData2.forEach((item) => {
@@ -548,25 +587,12 @@
     }
   });
 });
+
+
 //鎬ュ仠
 
 
-for (let i = 0; i < jsonData2.length; i++) {
-  let arr2 = jsonData2[i];
-  for (let j = 0; j < arr2.length; j++) {
-    let obj3 = arr2[j];
-    if(obj3.button){
-      if (obj3.button && (obj3.button.name === "鎬ュ仠鍚庝腑姝�/缁х画閫夋嫨" || obj3.button.name === "Abort/ResumeTasks" )) {
-      obj3.button.value = obj.resumeTasks[0][i];
-     console.log(obj3.button.value)
-    }
 
-    }
-   
-  }
-
-     
-}
 
 
 
@@ -687,4 +713,7 @@
 .huiling {
   background-color: green;
 }
+.jiting{
+  background-color: green;
+}
 </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/Electrical/Servomanual.vue b/CanadaMes-ui/src/views/Electrical/Servomanual.vue
index e3b1e82..e73f29f 100644
--- a/CanadaMes-ui/src/views/Electrical/Servomanual.vue
+++ b/CanadaMes-ui/src/views/Electrical/Servomanual.vue
@@ -12,38 +12,42 @@
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
       <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ServoManual')
+        $t('Parameter')
       }}</router-link>
 
     </el-breadcrumb>
 
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-
-      <router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Servomanualone')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
-      }}</router-link>
-      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter2')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning1')
-      }}</router-link>
-      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('Positioning2')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition')
-      }}</router-link>
-      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
-        $t('ManualonePosition2')
-      }}</router-link>
-      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
-        $t('AutomaticParameterSetting')
+      <router-link to="/Electrical/Parameter2" tag="el-button" type="text" active-class="blue-button">{{ $t('Automatic State')
       }}</router-link>
       <router-link to="/Electrical/ManualJog" tag="el-button" type="text" active-class="blue-button">{{
         $t('ManualJog')
       }}</router-link>
+      
+       <router-link to="/Electrical/ManualonePosition" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition')
+      }}</router-link>
+
+<router-link to="/Electrical/Servomanualone" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Servomanualone')
+      }}</router-link>
+      <router-link to="/Electrical/Parameter1" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter1')
+      }}</router-link>
+     
+      <router-link to="/Electrical/Positioning1" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Address parameter settings')
+      }}</router-link>
+      <router-link to="/Electrical/Positioning2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Positioning2')
+      }}</router-link>
+     
+      <router-link to="/Electrical/ManualonePosition2" tag="el-button" type="text" active-class="blue-button">{{
+        $t('ManualonePosition2')
+      }}</router-link>
+      <router-link to="/Electrical/AutomaticParameterSetting" tag="el-button" type="text" active-class="blue-button">{{
+        $t('Speed parameter settings')
+      }}</router-link>
+      
     </el-breadcrumb>
 
 
diff --git a/CanadaMes-ui/src/views/Electrical/Sign.vue b/CanadaMes-ui/src/views/Electrical/Sign.vue
index 21c22be..fdccfad 100644
--- a/CanadaMes-ui/src/views/Electrical/Sign.vue
+++ b/CanadaMes-ui/src/views/Electrical/Sign.vue
@@ -13,7 +13,7 @@
       }}</router-link> -->
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
- <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+ <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
         }}</router-link>
 
     </el-breadcrumb>
diff --git a/CanadaMes-ui/src/views/Electrical/State.vue b/CanadaMes-ui/src/views/Electrical/State.vue
index 1e25515..aa1079f 100644
--- a/CanadaMes-ui/src/views/Electrical/State.vue
+++ b/CanadaMes-ui/src/views/Electrical/State.vue
@@ -13,7 +13,7 @@
       }}</router-link> -->
       <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign')
       }}</router-link>
- <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+ <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
         }}</router-link>
     </el-breadcrumb>
     <div>{{ $t('State') }}</div>
diff --git a/CanadaMes-ui/src/views/Electrical/alarm.vue b/CanadaMes-ui/src/views/Electrical/alarm.vue
index 4800d63..4ded8cc 100644
--- a/CanadaMes-ui/src/views/Electrical/alarm.vue
+++ b/CanadaMes-ui/src/views/Electrical/alarm.vue
@@ -8,7 +8,7 @@
       <router-link to="/Electrical/Action" tag="el-button" type="text" active-class="blue-button">{{ $t('Action') }}</router-link>
       <!-- <router-link to="/Electrical/Parameter" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter') }}</router-link> -->
     <router-link to="/Electrical/Sign" tag="el-button" type="text" active-class="blue-button">{{ $t('Sign') }}</router-link>
-    <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Servo Manual')
+    <router-link to="/Electrical/Servomanual" tag="el-button" type="text" active-class="blue-button">{{ $t('Parameter')
         }}</router-link>
     </el-breadcrumb>
     <div>{{ $t('Alarm') }}</div>
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index 68e98c2..2d65daf 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -104,7 +104,7 @@
     position: absolute;
     background-image: url('../../img/dipan.png');
     background-size: 70px 85px;
-    left: 654px;
+    left: 501px;
     top: 333px;
     /* background-size: 85px 100px;
     left: 912px;
@@ -132,7 +132,7 @@
     position: absolute;
     background-image: url('../../img/taimian.png');
     background-size: 120px 30px;
-    left: 630px;
+    left: 477px;
     top: 420px;
     /* background-size: 160px 40px;
     left: 875px;
@@ -238,9 +238,9 @@
             </div>
             <div>
                 <el-table :data="this.tasklist1" border style="width: 100%">
+                    <el-table-column :width="180" prop="glassId" :label="$t('Outfeed glass barcode')"></el-table-column>
                     <el-table-column :width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
                     <el-table-column :width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
-                    <el-table-column :width="180" prop="glassId" :label="$t('Outfeed glass barcode')"></el-table-column>
                     <el-table-column :width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
                     <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
                     <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
@@ -258,9 +258,9 @@
                     </el-table-column>
                 </el-table>
                 <el-table :data="this.tasklist2" border style="width: 100%">
+                    <el-table-column :width="180" prop="glassId" :label="$t('Infeed glass barcode')"></el-table-column>
                     <el-table-column :width="130" prop="cage" :label="$t('Cage No')"></el-table-column>
                     <el-table-column :width="130" prop="cell" :label="$t('Slot No')"></el-table-column>
-                    <el-table-column :width="180" prop="glassId" :label="$t('Infeed glass barcode')"></el-table-column>
                     <el-table-column :width="130" prop="orderId" :label="$t('Order No')"></el-table-column>
                     <el-table-column prop="orderId" :label="$t('List No')"></el-table-column>
                     <el-table-column prop="orderId" :label="$t('Box No')"></el-table-column>
@@ -628,7 +628,11 @@
         </el-dialog>
 
         <el-dialog :visible.sync="dialogFormVisible6" :title="$t('Outing Queue')" top="5vh">
-            <el-button type="primary" @click="isAllowQueueState()">{{ this.isAllowQueue == true ? $t('Start') : $t('Stop')
+            <el-button type="primary" @click="isAllowQueueState()" :disabled="!this.isAllowReordering">{{ this.isAllowQueue
+                == true ? $t('Start') : $t('Stop')
+            }}</el-button>
+            <el-button type="primary" @click="isAllowReorderingState()" :disabled="this.isAllowQueue">{{
+                this.isAllowReordering == true ? $t('Not Allow') : $t('Allow')
             }}</el-button>
             <el-table :data="this.OutSlice" :height="700" :span-method="objectSpanMethod" border
                 style="width: 100%;overflow: auto;">
@@ -640,27 +644,34 @@
                 <el-table-column prop="storageCage.glassheightmm" :label="$t('Width')"></el-table-column>
                 <el-table-column prop="state" :label="$t('State')">
                     <template slot-scope='scope'>
-                        {{ scope.row.state == 0 ? "Waiting" : "Outing" }}
+                        {{ scope.row.state == 0 ? "Waiting" : scope.row.state == 1 ?"Outing":"Completed" }}
                     </template>
                 </el-table-column>
                 <el-table-column prop="sequence" :label="$t('Sequence')"></el-table-column>
                 <el-table-column prop="position" :label="$t('Position')"></el-table-column>
                 <el-table-column prop="barcode" :label="$t('Frame No')"></el-table-column>
+
+                <el-table-column prop="barcode" :label="$t('Complete')">
+                    <template slot-scope='scope'>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="!isAllowQueue"
+                            @click="CompleteQueue(scope.row.id,scope.row.barcode)">{{ $t('Complete') }}</el-button>
+                    </template>
+                </el-table-column>
                 <el-table-column :width="280" :label="$t('Operate')">
                     <template slot-scope='scope'>
                         <el-button type="text" size="small" @click="getTopMove(scope.row, scope.$index)"
                             style="font-size: 15px;"
-                            :disabled="(scope.$index == 0 || isAllowQueue == true || scope.row.state == 1)">
+                            :disabled="(scope.$index == 0 || isAllowReordering == true || scope.row.state == 1)">
                             {{ $t('Top') }}
                         </el-button>
                         <el-button type="text" size="small" @click="getUpMove(scope.row, scope.$index)"
                             style="font-size: 15px;"
-                            :disabled="(scope.$index == 0 || isAllowQueue == true || scope.row.state == 1)">
+                            :disabled="(scope.$index == 0 || isAllowReordering == true || scope.row.state == 1)">
                             {{ $t('Up') }}
                         </el-button>
                         <el-button type="text" size="small" @click="getDownMove(scope.row, scope.$index)"
                             style="font-size: 15px;"
-                            :disabled="(OutSlice.length - 1 == scope.$index || isAllowQueue == true || scope.row.state == 1)">
+                            :disabled="(OutSlice.length - 1 == scope.$index || isAllowReordering == true || scope.row.state == 1)">
                             {{ $t('Down') }}
                         </el-button>
                         <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" :disabled="isAllowQueue"
@@ -714,7 +725,7 @@
 import {
     home, home2, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo, SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist,
     SelectPassword, SelectGlassByGlassID, Disabled, Inglassid, SelectGlass, InsertQueueGlassId, UpdateQueueState, DeleteQueueGlass, SelectGlassNo,
-    SelectAluminumFrameInfoById, DeleteProductionQueueGlass, AddOutSliceS, isAllowQueues, isConfirmStates, SelectPermissionByUserName, currentUsername
+    SelectAluminumFrameInfoById, DeleteProductionQueueGlass, AddOutSliceS, isAllowQueues, isConfirmStates, SelectPermissionByUserName, currentUsername, CompleteQueue
 } from "../../api/home";
 
 
@@ -785,7 +796,6 @@
             currentPage: 1,  //榛樿鍒濆椤�
             pagesize: 15,    //姣忛〉榛樿鏄剧ず鐨勬暟鎹�
             pageCount: 0,
-
             currentPages: 1,  //榛樿鍒濆椤�
             pagesizes: 21,    //姣忛〉榛樿鏄剧ず鐨勬暟鎹�
             pageCounts: 0,
@@ -793,6 +803,7 @@
             AluminumFrame: [],
             framebarcode: "",
             isAllowQueue: true,
+            isAllowReordering: true,
             FrameNoFlag: "",
             isConfirm: true,
             ManuallyInfeedGlass: true,
@@ -847,7 +858,7 @@
                     //鏄惁鍏佽鍑虹墖
                     this.isAllowQueue = obj.isAllowQueue[0];
                     //鍑虹墖闃熷垪
-                    if (this.isAllowQueue == true) {
+                    if (this.isAllowReordering == true) {
                         this.OutSlice = obj.listoutslice[0];
                     }
                     //鑾峰彇涓婄墖浣嶇幓鐠冧俊鎭�
@@ -877,9 +888,9 @@
                         this.form5 = obj.form3[0];
                         this.showform3();
                         this.Sizerange(this.form5, 3);
-                        this.glassid1="";
+                        this.glassid1 = "";
                     } else {
-                        if(this.glassid1==""){
+                        if (this.glassid1 == "") {
                             this.DeleteBarcodeGlass();
                         }
                     }
@@ -1234,8 +1245,14 @@
                 if (this.password == value) {
                     if (state == 1) {
                         OutByGlassID(glassid).then(res => {
-                            if (res.data.message3 == 200) {
+                            if (res.data.message2 == 200) {
                                 this.$message.success(this.$t('Operation successful'));
+                            }
+                            else if (res.data.message2 == 300) {
+                                this.$message.error(this.$t('Unable to find the placement method of the aluminum frame'));
+                            }
+                            else if (res.data.message2 == 400) {
+                                this.$message.error(this.$t('Unable to find whether the aluminum frame is flipped or not'));
                             }
                             else if (res.data.message2 == 500) {
                                 this.$message.error(this.$t('This glass is already in the Queue'));
@@ -1348,7 +1365,7 @@
         //鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
         InsertQueueGlass(parameter) {
             if (parameter == 1 && this.form5.glassId != "") {
-                if (this.form5.glassId != this.form2.glassId) {
+                if (this.form5.glassId != this.form2.glassId && this.form5.glassId != this.form3.glassId) {
                     InsertQueueGlassId(1, this.form5).then(res => {
                         if (res.data.message == 200) {
                             this.form5 = {};
@@ -1361,7 +1378,7 @@
                     this.$message.error(this.$t('The glass ID already exists in the loading queue'));
                 }
             } else if (parameter == 2 && this.form4.glassId != "") {
-                if (this.form4.glassId != this.form3.glassId) {
+                if (this.form4.glassId != this.form3.glassId && this.form4.glassId != this.form2.glassId) {
                     InsertQueueGlassId(2, this.form4).then(res => {
                         if (res.data.message == 200) {
                             this.form4 = {};
@@ -1382,14 +1399,14 @@
             if (parameter == 1) {
                 DeleteQueueGlass(1).then(res => {
                     if (res.data.message == 200) {
-                        this.form2 = {};
+                        this.form3 = {};
                         this.$message.success(this.$t('Operation successful'));
                     }
                 });
             } else {
                 DeleteQueueGlass(2).then(res => {
                     if (res.data.message == 200) {
-                        this.form3 = {};
+                        this.form2 = {};
                         this.$message.success(this.$t('Operation successful'));
                     }
                 });
@@ -1545,6 +1562,10 @@
                 }
             })
         },
+        //
+        isAllowReorderingState() {
+            this.isAllowReordering = !this.isAllowReordering;
+        },
         //鍒囨崲涓婄墖鏄惁闇�瑕佺‘璁ょ幓鐠冧俊鎭�
         isConfirmState() {
             isConfirmStates(!this.isConfirm).then(res => {
@@ -1568,7 +1589,7 @@
             if (rowIndex != 0) {
                 barcode2 = arrOutSlice[rowIndex - 1].barcode;
             }
-            if (columnIndex === 10) {
+            if (columnIndex === 11) {
                 if (barcode != barcode2) {
                     // this.FrameNoFlag = barcode;
                     for (let i = rowIndex; i < this.OutSlice.length; i++) {
@@ -1628,6 +1649,14 @@
         //娓呯┖寰呯‘璁ょ幓鐠冧俊鎭�
         DeleteBarcodeGlass() {
             this.form5 = {};
+        },
+        //鎵嬪姩瀹屾垚鍑虹墖浠诲姟
+        CompleteQueue(id,frameid) {
+            CompleteQueue(id,frameid).then(res => {
+                if (res.data.message == 200) {
+                    this.$message.success(this.$t('Operation successful'));
+                }
+            });
         }
     }
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
index 6ad1391..93b5f3b 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcHold.java
@@ -31,20 +31,6 @@
        spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
       spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
       jdbcConnections = WebSocketServer.applicationContext.getBean(JdbcConnections.class);
-//      List<String> adddresslist = new ArrayList<>();
-//      adddresslist.add("DB105.0");// 杩涚墖杞﹁捣濮嬩綅缃�
-//      adddresslist.add("DB105.2");// 杩涚墖杞︾洰鏍囦綅缃�
-//      adddresslist.add("DB105.4");// 杩涚墖鐜荤拑瀹�
-//      adddresslist.add("DB105.8");//杩涚墖绗煎唴宸叉湁鐜荤拑鏁�
-//      adddresslist.add("DB105.16");// 杩涚墖杞﹀惎鍔� 1涓哄惎鍔�
-//      List<Short> datas = new ArrayList<>();
-//      datas.add((short) 1000);//璧峰浣嶇疆
-//      datas.add((short) 5);//鐩爣浣嶇疆
-//      datas.add((short) 610);//杩涚墖鐜荤拑瀹�
-//      datas.add((short) 1); //鐜荤拑鏁�
-//      spianService.outmesid("123321","DB105.20");
-//      datas.add((short) 1);//浠诲姟鍚姩
-//      S7control.getinstance().WriteWord(adddresslist, datas);
       // 鏍规嵁鐜荤拑id鑾峰彇璁㈠崟鍙�,鍗曠嫭鏁版嵁婧�
       // try {
       // north_glass_buffer1 glass = jdbcConnections.selectGlass(112);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
index b12538f..5e72d6c 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcManualonePosition.java
@@ -252,6 +252,7 @@
                 }
                 // 鍐欏叆鏂扮殑浣嶅�煎垪琛�
                 S7control.getinstance().WriteBit(A01start, a01startval);
+                System.out.println("a01startval " + a01startval + " written to PLC at address " + A01start);
               }
 
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
index 81ad490..6a4a0e7 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcParameter2.java
@@ -122,6 +122,17 @@
       List<String> addressList3 = new ArrayList<>();
       addressList3.add("DB103.256");
       addressList3.add("DB103.270");
+
+
+
+
+      List<String> niuanaddressList3 = new ArrayList<>();
+
+      niuanaddressList3.add("DB101.10.4");
+      List<Boolean> anniuread = S7control.getinstance().readBits(niuanaddressList3);
+
+
+
       List<String> data3 = S7control.getinstance().readStrings(addressList3);
 // A01 A02 B01 B02
       List<String> addresses4 = new ArrayList<>();
@@ -161,11 +172,18 @@
         params[i] = value ? (short) 1 : (short) 0;
       }
 
+      short[] anniuparams = new short[anniuread.size()];
+      for (int i = 0; i < anniuread.size(); i++) {
+        boolean value = anniuread.get(i);
+        anniuparams[i] = value ? (short) 1 : (short) 0;
+      }
+
       jsonObject.append("params", params);
       jsonObject.append("params", paramlist);
       jsonObject.append("params", data);
       jsonObject.append("params", data3);
       jsonObject.append("params", data4);
+      jsonObject.append("jiting", anniuparams);
 
 
       WebSocketServer sendwServer = WebSocketServer.sessionMap.get("Parameter2");
@@ -195,31 +213,57 @@
         if (!messages.isEmpty()) {
           // 灏嗘渶鍚庝竴涓秷鎭浆鎹负鏁存暟绫诲瀷鐨勫垪琛�
           String lastMessage = messages.get(messages.size() - 1);
-          System.out.println("messages锛�" + messages);
-          String[] parts = lastMessage.split(",");
-          List<Integer> messageValues = new ArrayList<>();
-          for (String part : parts) {
-            try {
-              // 浣跨敤姝e垯琛ㄨ揪寮忔竻闄ら潪鏁板瓧瀛楃
-              String cleanedPart = part.replaceAll("[^0-9-]", "");
-              Integer value = Integer.parseInt(cleanedPart.trim());
-              messageValues.add(value);
-            } catch (NumberFormatException e) {
-              // 濡傛灉鏃犳硶瑙f瀽涓烘暣鏁扮被鍨嬶紝鍒欏拷鐣ヨ閮ㄥ垎
-//              e.printStackTrace();
+//        System.out.println("lastMessage锛�" + lastMessage);
+          JSONArray messageArray = new JSONArray(lastMessage);
+
+          if (messageArray.getJSONArray(0).size() > 0) {
+            JSONArray jsonArray3 = messageArray.getJSONArray(0);
+            List<Boolean> sValue3 = new ArrayList<>();
+            for (int i = 0; i < jsonArray3.size(); i++) {
+              Object value = jsonArray3.get(i);
+              if (value != null && !value.toString().equals("null")) {
+                try {
+                  String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+                  boolean val = "1".equals(cleanedValue.trim());
+                  sValue3.add(val);
+                  System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+                } catch (NumberFormatException e) {
+                  // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+                  System.err.println("Could not parse value: " + value);
+                }
+              }
+            }
+            if (!sValue3.isEmpty()) {
+              S7control.getinstance().WriteBit(addressList, sValue3);
+              System.out.println("Values " + sValue3 + " written to PLC at address " + sValue3);
+            }
+          }
+          // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
+          if (messageArray.getJSONArray(1).size() > 0) {
+            JSONArray jsonArray3 = messageArray.getJSONArray(1);
+            List<Boolean> sValue3 = new ArrayList<>();
+            for (int i = 0; i < jsonArray3.size(); i++) {
+              Object value = jsonArray3.get(i);
+              if (value != null && !value.toString().equals("null")) {
+                try {
+                  String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+                  boolean val = "1".equals(cleanedValue.trim());
+                  sValue3.add(val);
+                  System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+                } catch (NumberFormatException e) {
+                  // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+                  System.err.println("Could not parse value: " + value);
+                }
+              }
+            }
+            if (!sValue3.isEmpty()) {
+              S7control.getinstance().WriteBit(niuanaddressList3, sValue3);
+
+              System.out.println("Values " + sValue3 + " written to PLC at address " + sValue3);
             }
           }
 
-          // 灏嗘秷鎭�艰浆鎹负甯冨皵鍒楄〃
-          List<Boolean> messageBooleans = new ArrayList<>();
-          for (Integer value : messageValues) {
-            messageBooleans.add(value == 1 ? true : false);
-          }
 
-          // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
-    S7control.getinstance().WriteBit(addressList, messageBooleans);
-          System.out.println("messageValues锛�" + messageBooleans);
-          System.out.println("addressList锛�" + addressList);
           // 娓呯┖娑堟伅鍒楄〃
           webSocketServer.clearMessages();
         }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
index 4366a77..3ee0b87 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/PlcServoManualone.java
@@ -154,6 +154,12 @@
         params2[i] = value ? (short) 1 : (short) 0;
       }
 
+//鎬ュ仠涓鎸夐挳
+      short[] resumeTask = new short[resumeTasks.size()];
+      for (int i = 0; i < resumeTasks.size(); i++) {
+        boolean value = resumeTasks.get(i);
+        resumeTask[i] = value ? (short) 1 : (short) 0;
+      }
 
       List<Boolean> Reset1 = S7control.getinstance().readBits(Reset);
     //  System.out.println(Reset1);
@@ -225,7 +231,7 @@
       jsonObject.append("qupianid", queueid2);
       jsonObject.append("fuwei", rReset);
       jsonObject.append("qidong", combinedBinaryShortArray);
-      jsonObject.append("resumeTasks", resumeTasks);
+      jsonObject.append("resumeTasks", resumeTask);
 
 
 
@@ -441,29 +447,29 @@
             }
           }
 
-          if (messageArray.getJSONArray(8).size() > 0) {
-            JSONArray jsonArray5 = messageArray.getJSONArray(8);
-            List<Boolean> sValueb5 = new ArrayList<>();
-            for (int i = 0; i < jsonArray5.size(); i++) {
-              Object value = jsonArray5.get(i);
-              if (value != null && !value.toString().equals("null")) {
-                try {
-                  String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
-                  boolean val = "1".equals(cleanedValue.trim());
-                  sValueb5.add(val);
-                  System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
-                } catch (NumberFormatException e) {
-                  // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
-                  System.err.println("Could not parse value: " + value);
-                }
-              }
-            }
-            if (!sValueb5.isEmpty()) {
-
-              S7control.getinstance().WriteBit(abortresumeTasks, sValueb5);
-              System.out.println("Values " + sValueb5 + " written to PLC at address " + A02Bstart);
-            }
-          }
+//          if (messageArray.getJSONArray(8).size() > 0  ) {
+//            JSONArray jsonArray5 = messageArray.getJSONArray(8);
+//            List<Boolean> sValueb5 = new ArrayList<>();
+//            for (int i = 0; i < jsonArray5.size(); i++) {
+//              Object value = jsonArray5.get(i);
+//              if (value != null && !value.toString().equals("null")) {
+//                try {
+//                  String cleanedValue = value.toString().replaceAll("[^0-9-]", "");
+//                  boolean val = "1".equals(cleanedValue.trim());
+//                  sValueb5.add(val);
+//                  System.out.println("messageValue: " + Arrays.asList(val) + " added to the list");
+//                } catch (NumberFormatException e) {
+//                  // 濡傛灉鏃犳硶瑙f瀽涓� boolean 绫诲瀷锛屽垯蹇界暐璇ラ儴鍒�
+//                  System.err.println("Could not parse value: " + value);
+//                }
+//              }
+//            }
+//            if (!sValueb5.isEmpty()) {
+//
+//              S7control.getinstance().WriteBit(abortresumeTasks, sValueb5);
+//              System.out.println("Values " + sValueb5 + " written to PLC at address " + A02Bstart);
+//            }
+//          }
 
 
           // 娓呯┖娑堟伅鍒楄〃
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
index de38cb9..136c668 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java
@@ -14,6 +14,7 @@
 import com.example.springboot.mapper.SpianMapper;
 import com.example.springboot.service.JdbcConnections;
 import com.example.springboot.service.North_Glass_Buffer1Service;
+import com.example.springboot.service.OutSliceServive;
 import com.example.springboot.service.SpianService;
 
 
@@ -21,6 +22,7 @@
 
     @Autowired
     private HomeMapper homeMapper;
+    private OutSliceServive outSliceServive;
     private SpianMapper spianMapper;
     private SpianService spianService;
     private North_Glass_Buffer1Service north_Glass_Buffer1Service;
@@ -47,6 +49,7 @@
             homeMapper = WebSocketServer.applicationContext.getBean(HomeMapper.class);
             spianMapper = WebSocketServer.applicationContext.getBean(SpianMapper.class);
             spianService = WebSocketServer.applicationContext.getBean(SpianService.class);
+            outSliceServive = WebSocketServer.applicationContext.getBean(OutSliceServive.class);
             north_Glass_Buffer1Service = WebSocketServer.applicationContext.getBean(North_Glass_Buffer1Service.class);
             // 绗煎瓙浣跨敤鎯呭喌
             List<StorageCage> tableData = homeMapper.selectAll();
@@ -69,24 +72,24 @@
             List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
             jsonObject.append("alarmmg", alarmmg);
             // 璇诲幓Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃甒
-            // List<String> addressList = new ArrayList<String>();
-            // addressList.add("DB106.12");
-            // addressList.add("DB106.0");
-            // List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
-            // if (paramlist != null) {
-            // jsonObject.append("params", paramlist);
-            // }
-            // // 鑾峰彇杩涚墖杞︾姸鎬�
-            // List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8",
-            // 1);// 鑾峰彇杩涚墖杞︾姸鎬�
-            // boolean exist1 = datas1ListState.contains((short) 0);
-            // jsonObject.append("zhuangtai", exist1);
-            // //鑾峰彇杩涚墖鐜荤拑淇℃伅
-            // List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1);
-            // if (inglassInfo != null) {
-            // if (inglassInfo.size() > 0)
-            // jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
-            // }
+             List<String> addressList = new ArrayList<String>();
+             addressList.add("DB106.12");
+             addressList.add("DB106.0");
+             List<Short> paramlist = S7control.getinstance().ReadWord(addressList);
+             if (paramlist != null) {
+             jsonObject.append("params", paramlist);
+             }
+             // 鑾峰彇杩涚墖杞︾姸鎬�
+             List<Short> datas1ListState = S7control.getinstance().ReadWord("DB106.8",
+             1);// 鑾峰彇杩涚墖杞︾姸鎬�
+             boolean exist1 = datas1ListState.contains((short) 0);
+             jsonObject.append("zhuangtai", exist1);
+             //鑾峰彇杩涚墖鐜荤拑淇℃伅
+             List<Short> inglassInfo = S7control.getinstance().ReadWord("DB106.24", 1);
+             if (inglassInfo != null) {
+             if (inglassInfo.size() > 0)
+             jsonObject.append("loadglassheight", inglassInfo.get(0) * 70);
+             }
             
             // 浼� 鑾峰彇杩涙槸鍚︽湁寰呯‘璁ょ殑鐜荤拑id
             String queid = spianMapper.Selectqueueid();
@@ -103,10 +106,11 @@
                 jsonObject.append("form3", form3);
             }
             // 鑾峰彇鍑虹墖闃熷垪淇℃伅
-            List<Out_slice> listoutslice = homeMapper.SelectProductionqueue();
-            for (Out_slice out_slice : listoutslice) {
-                out_slice.setstorageCage(homeMapper.SelectStorageGlassById(out_slice.getGlassId()));
-            }
+            List<Out_slice> listoutslice=outSliceServive.SelectProductionqueue();
+            // List<Out_slice> listoutslice = homeMapper.SelectProductionqueue();
+            // for (Out_slice out_slice : listoutslice) {
+            //     out_slice.setstorageCage(homeMapper.SelectStorageGlassById(out_slice.getGlassId()));
+            // }
             jsonObject.append("listoutslice", listoutslice);
             //鑾峰彇褰撳墠鍑虹墖闃熷垪鐘舵��
             jsonObject.append("isAllowQueue",Plchome.isAllowQueue);
diff --git a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
index c787b6c..4ed105e 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/config/AppRunnerConfig.java
@@ -17,15 +17,15 @@
     //
     System.out.println("鍚姩瀹屾垚");
 
-     new PlcHold().start();
+//    new PlcHold().start();
+//
     //
-    //
-    
-    new Plchome().start();
-    
+     new PlcPositioning2().start();
+   new Plchome().start();
+//    //
     //  new PlcParameter().start();
     //  //
-    //  // new Plcalarm().start();
+    //  new Plcalarm().start();
     //  //
     //  new Plcsign().start();
     //  //
@@ -33,7 +33,7 @@
     //  new Plcstate().start();
     //  new PlcPositioning1().start();
     //  new PlcPositioning2().start();
-    //  new PlcParameter2().start();
+    // new PlcParameter2().start();
     //  new PlcParameter1().start();
     //  new PLCAutomaticParameterSetting().start();
 
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
index 1f3445c..b85fc8a 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java
@@ -191,12 +191,22 @@
     if (result == null) {
       north_glass_buffer1 north_glass_buffer1 = jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(glassid, "", "");
       String flip = jdbcConnections.SelectFlipByFrameBarcode(north_glass_buffer1.getFrameBarcode());
-      String position = jdbcConnections.SelectPositionByFrameBarcode(north_glass_buffer1.getFrameBarcode());
-      int sequence = homeMapper.SelectMaxSquence();
-      homeMapper.AddOutSliceS(glassid, flip, north_glass_buffer1.getFrameBarcode(),
-          north_glass_buffer1.getglasslengthmm().toString(), north_glass_buffer1.getglassheightmm().toString(),
-          sequence, position);
-      map.put("message2", "200");
+      if (flip != null) {
+        String position = jdbcConnections.SelectPositionByFrameBarcode(north_glass_buffer1.getFrameBarcode());
+        if (position != null) {
+          int sequence = homeMapper.SelectMaxSquence();
+          homeMapper.AddOutSliceS(glassid, flip, north_glass_buffer1.getFrameBarcode(),
+              north_glass_buffer1.getglasslengthmm().toString(), north_glass_buffer1.getglassheightmm().toString(),
+              sequence, position);
+          map.put("message2", "200");
+        } else {
+          map.put("message2", "300");
+        }
+
+      } else {
+        map.put("message2", "400");
+      }
+
     } else {
       map.put("message2", "500");
     }
@@ -251,6 +261,7 @@
     } else {
       homeMapper.Inglassid(queue, cage, cell, tier);
       spianMapper.UpdataAddCage1(queue.getglasswidth(), cage, cell);
+      map.put("message", "200");
     }
     return Result.success(map);
   }
@@ -273,8 +284,10 @@
       map.put("message", "300");
     } else {
       homeMapper.InsertQueueGlassId(queue, id);
-      // 璋冪敤浼嶅瓨鍌ㄨ繃绋�
-      spianService.selectAll(queue.getglassId());
+      if (id == 1) {
+        // 璋冪敤浼嶅瓨鍌ㄨ繃绋�
+        spianService.selectAll(queue.getglassId());
+      }
       map.put("message", "200");
     }
     return Result.success(map);
@@ -318,22 +331,6 @@
     return Result.success(map);
   }
 
-  // 鏌ヨ鍑虹墖闃熷垪鏁版嵁
-  @PostMapping("/SelectProductionqueue")
-  public Result SelectProductionqueue() throws SQLException {
-    List<Out_slice> listoutslice = homeMapper.SelectProductionqueue();
-    for (Out_slice out_slice : listoutslice) {
-      out_slice
-          .setnorth_glass_buffer1s(jdbcConnections.SelectGlassByGlassIdOrderIdFrameId(out_slice.getGlassId(), "", ""));
-      out_slice.setstorageCage(homeMapper.SelectStorageGlassById(out_slice.getGlassId()));
-    }
-    Map<String, Object> maps = new HashMap<>();
-    maps.put("listoutslice", listoutslice);
-    // Plchome.isAllowQueue=false;
-    return Result.success(maps);
-
-  }
-
   // 鏍规嵁鐜荤拑id鍒犻櫎鍑虹墖闃熷垪鐜荤拑
   @PostMapping("/DeleteProductionQueueGlass")
   public Result DeleteProductionQueueGlass(String FrameNo) {
@@ -374,4 +371,12 @@
     map.put("message", "200");
     return Result.success(map);
   }
+
+  //鎵嬪姩瀹屾垚浠诲姟
+  @PostMapping("/CompleteQueue")
+  public Result CompleteQueue(String id,String frameid) {
+    return outSliceServive.CompleteQueue(id,frameid);
+    
+  }
+  
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
index 3dfec02..84d1fe4 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java
@@ -115,15 +115,15 @@
   Queue GetQueueInfo(int id);
 
   //鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
-  @Select("update queue set glassid=#{queue.glassId},orderid=#{queue.orderId},listId=#{queue.listId},boxId=#{queue.boxId},glasswidth=#{queue.glasswidth},glassheight=#{queue.glassheight},glasswidthmm=#{queue.glasswidthmm},glassheightmm=#{queue.glassheightmm},state=1 where id=#{id}")
+  @Update("update queue set glassid=#{queue.glassId},orderid=#{queue.orderId},listId=#{queue.listId},boxId=#{queue.boxId},glasswidth=#{queue.glasswidth},glassheight=#{queue.glassheight},glasswidthmm=#{queue.glasswidthmm},glassheightmm=#{queue.glassheightmm},state=1 where id=#{id}")
   void InsertQueueGlassId(Queue queue,Short id);
 
   //纭鎵爜浣嶇幓鐠冧俊鎭�
-  @Select("update queue set state=1 where id=1")
+  @Update("update queue set state=1 where id=1")
   void UpdateQueueState();
 
   //鎵嬪姩娣诲姞鎵爜浣嶇幓鐠�
-  @Select("update queue set glassid=null,orderid=null,listid=null,boxid=null,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,state=0 where id=#{id}")
+  @Update("update queue set glassid=null,orderid=null,listid=null,boxid=null,glasswidth=null,glassheight=null,glasswidthmm=null,glassheightmm=null,state=0 where id=#{id}")
   void DeleteQueueGlass(String id);
 
   //鏌ヨ姝よ鍗曞湪鐞嗙墖绗奸噷鐨勭幓鐠冩暟
@@ -144,7 +144,7 @@
 
 
   //鏍规嵁鐜荤拑id鍒犻櫎鍑虹墖闃熷垪鐜荤拑
-  @Select("update out_slice set state=3 where barcode=#{FrameNo} and (state=0 or state=1 or state=2)")
+  @Update("update out_slice set state=4 where barcode=#{FrameNo} and (state=0 or state=1 or state=2)")
   void DeleteProductionQueueGlass(String id);
 
   //鏍规嵁閾濇id鏌ヨ瀵瑰簲鐜荤拑淇℃伅
@@ -157,18 +157,29 @@
   Out_slice SelectQueueByglassid(String getbarcode);
 
   //娣诲姞鍑虹墖闃熷垪
-  @Select("INSERT INTO out_slice( `glassId`, `barcode`, `glasswidth`, `glassheight`, `state`, `flip`, `sequence`, `time` ,`position`) VALUES ( #{glassid}, #{FrameNo}, #{glasslengthMm}, #{glassheightMm}, 0, #{flip}, #{sequence}, now(), #{position});")
+  @Insert("INSERT INTO out_slice( `glassId`, `barcode`, `glasswidth`, `glassheight`, `state`, `flip`, `sequence`, `time` ,`position`) VALUES ( #{glassid}, #{FrameNo}, #{glasslengthMm}, #{glassheightMm}, 0, #{flip}, #{sequence}, now(), #{position});")
   void AddOutSliceS(String glassid, String flip, String FrameNo, String glasslengthMm, String glassheightMm, int sequence, String position);
 
   //鍑虹墖闃熷垪璋冨簭
-  @Select("update out_slice set sequence=#{sequence} where glassid=#{glassId}")
+  @Update("update out_slice set sequence=#{sequence} where glassid=#{glassId}")
   void UpdateOutSliceSequence(String glassId,int sequence);
 
   //鏌ヨ鍑虹墖闃熷垪鏈�澶ч『搴�
   @Select("select ifnull(max(sequence),0)+1 from out_slice ")
   Short SelectMaxSquence();
-
+  //鏌ヨ鐢ㄦ埛鏉冮檺
   @Select("select rp.* from role_permission rp inner join role r on rp.role_id=r.id and r.name=#{token} and (permission_id=32 or permission_id=33 or permission_id=34 or permission_id=35)")
   List<RolePermission> SelectPermissionByUserName(String token);
+  //瀹屾垚鍑虹墖浠诲姟
+  @Update("update out_slice set state=2 where id=#{id}")
+  void CompleteQueue(String id);
+
+  //鏌ヨ閾濇id瀵瑰簲鐜荤拑瀹屾垚鏁伴噺
+  @Select("select count(*) from out_slice where barcode=#{frameid} and state<2")
+  Short SelectCountByFrameNo(String frameid);
+
+  //閾濇id瀵瑰簲鐜荤拑鏀瑰畬鍏ㄩ儴瀹屾垚鐘舵��
+  @Update("update out_slice set state=3 where barcode=#{frameid} and state=2")
+  void CompleteQueueByFrameNo(String frameid);
 
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
index ffb3918..42a458d 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/SpianMapper.java
@@ -54,7 +54,7 @@
      int selectGlassState(int  cage,int cell);
 
      //鍒ゆ柇璇ヨ皟鎷ㄧ殑绗煎瓙
-     @Select("select glass_id,cage,cell,max(state)as shu,ROUND(id/2)as prcid,id from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage) limit 1;")
+     @Select("select glass_id,cage,cell,max(state)as shu,ROUND(id/2)as prcid,id from storage_cage where width>=#{width} and cage>#{cage1} and cage<#{cage2} GROUP BY cage,cell HAVING shu=0 order by abs(#{cage} - cage),cell desc  limit 1;")
      StorageCage selectGlassCage(int cage,double width,int cage1,int cage2);
 
     //鍒犻櫎绗煎瓙淇℃伅(鍑虹墖)
diff --git a/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java b/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
index ed546f4..e29eb16 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/service/OutSliceServive.java
@@ -1,11 +1,15 @@
 package com.example.springboot.service;
 
 import java.sql.SQLException;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.example.springboot.common.Result;
+import com.example.springboot.entity.Out_slice;
 import com.example.springboot.mapper.HomeMapper;
 
 @Service
@@ -19,7 +23,7 @@
 
   public void AddOutSliceS(String[][] AluminumFrames) throws SQLException {
     int sequence = homeMapper.SelectMaxSquence();
-    
+
     // 娣诲姞鍒版暟鎹簱
     for (String[] item : AluminumFrames) {
       if (item[1] == "true") {
@@ -30,6 +34,24 @@
     }
   }
 
-  
+  // 鏌ヨ鍑虹墖闃熷垪
+  public List<Out_slice> SelectProductionqueue() {
+    List<Out_slice> listoutslice = homeMapper.SelectProductionqueue();
+    for (Out_slice out_slice : listoutslice) {
+      out_slice.setstorageCage(homeMapper.SelectStorageGlassById(out_slice.getGlassId()));
+    }
+    return listoutslice;
+  }
+
+public Result CompleteQueue(String id, String frameid) {
+  homeMapper.CompleteQueue(id);
+  Short num=homeMapper.SelectCountByFrameNo(frameid);
+  if(num==0){
+    homeMapper.CompleteQueueByFrameNo(frameid);
+  }
+  Map<String, Object> map = new HashMap<>();
+  map.put("message", "200");
+  return Result.success(map);
+}
 
 }
diff --git a/springboot-vue3/src/main/resources/Alarm.json b/springboot-vue3/src/main/resources/Alarm.json
new file mode 100644
index 0000000..89bf615
--- /dev/null
+++ b/springboot-vue3/src/main/resources/Alarm.json
@@ -0,0 +1,507 @@
+{
+  "content": [
+    {
+      "name": "D01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 VFD error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 servo turn error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 servo turn error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 servo travel error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 IN DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 IN pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 OUT DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 OUT pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 IN DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 IN pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 OUT DEC error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 OUT pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 Scan glass exceeding limit",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "emergency stop alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "More glass than known",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "less glass than known",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D03 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D04 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D05 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "D06 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02 conveyor timeout alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor Left safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01 conveyor right safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor Left safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02 conveyor right safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "1# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "2# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "3# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "4# buffer safety alarm",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A01.SR right in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "A02.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR left dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR right dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B01.SR right in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR left in pos error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR left dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    },
+    {
+      "name": "B02.SR right dec error",
+      "value": "1",
+      "state": "1",
+      "type": "3",
+      "page": "1"
+    }
+  ],
+  "address": [
+    {
+      "name": "DB104.0.0",
+      "count": 71
+    }
+  ]
+}
\ No newline at end of file
diff --git a/springboot-vue3/src/main/resources/config.properties b/springboot-vue3/src/main/resources/config.properties
new file mode 100644
index 0000000..724a48a
--- /dev/null
+++ b/springboot-vue3/src/main/resources/config.properties
@@ -0,0 +1,57 @@
+#PlcServoManualone 鍦板潃 ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
+# A01缁勫悎涓湴鍧�琛ㄩ泦鍚�
+A01.addresses=DB103.32,DB100.144,DB100.184,DB100.186,DB100.180,DB100.182
+# A02缁勫悎涓湴鍧�琛ㄩ泦鍚�
+A02.addresses=DB103.26,DB100.188,DB100.190,DB100.146
+# A01缈昏浆鍦板潃
+A01.flipAddress=DB103.42
+# A02缈昏浆鍦板潃
+A02.flipAddress=DB103.46
+# B01缁勫悎涓湴鍧�
+B01.address=DB103.27
+# B02缁勫悎鍦板潃
+B02.address=DB103.29
+# 鎵�鏈夋晠闅滄寜閽湴鍧�
+faultButtonAddresses=DB104.1.4,DB104.1.5,DB104.1.2,DB104.1.3,DB104.1.6,DB104.1.7
+# 澶嶄綅鎸夐挳鍦板潃
+resetButtonAddresses=DB101.4.0,DB101.4.3,DB101.3.6,DB101.4.1,DB101.4.4,DB101.4.6
+# 鎵�鏈夋湭鍥為浂鎸夐挳鍦板潃
+notHomedButtonAddresses=DB104.9.0,DB104.9.1,DB104.9.4,DB104.9.5
+# 杩涚墖id鍦板潃
+
+inputGlassIdAddress=DB100.148
+# 瀛樼墖id鍦板潃
+outputGlassIdAddress=DB100.162
+#鍥為浂鎸夐挳鍦板潃
+HomedButtonAddresses=DB101.3.7,DB101.4.2,DB101.4.5,DB101.4.7
+#A02start
+A02start=DB101.5.1
+#A01start
+A01start=DB101.5.0
+#A02start
+A02Bstart=DB101.11.1
+#A01start
+A01Bstart=DB101.11.0
+#abort/resumeTasks
+abortresumeTasks=DB101.10.4
+#------------------------------------------------------------
+
+
+#A02start
+mlp.A02start=DB101.2.3
+#A01start
+mlp.A01start=DB101.2.2
+#A02start
+mlp.B02start=DB101.2.5
+#A01start
+mlp.B01start=DB101.2.4
+
+#--------------------------
+#A02start
+mlp2.A02start=DB101.2.1
+#A01start
+mlp2.A01start=DB101.2.0
+
+
+
+#PLCManualJog--------------------------
\ No newline at end of file

--
Gitblit v1.8.0