From 477b4071ccf45b6d15280d37a4a002307aa2271c Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期四, 07 九月 2023 17:11:09 +0800
Subject: [PATCH] Merge branch 'master' of ssh://10.153.19.150:29418/CanadaMes

---
 CanadaMes-ui/src/views/home/index.vue                                               |  190 ++++++-
 CanadaMes-ui/src/views/Electrical/Sign.vue                                          |    2 
 CanadaMes-ui/src/views/Electrical/State.vue                                         |    2 
 CanadaMes-ui/src/views/Electrical/Parameter.vue                                     |  274 +++++-----
 springboot-vue3/src/main/java/com/example/springboot/component/Plchome.java         |    5 
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java         |   18 
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java |   19 
 CanadaMes-ui/src/lang/locales/zh-CN.json                                            |  260 ++++++----
 CanadaMes-ui/src/views/Electrical/alarm.vue                                         |   29 
 CanadaMes-ui/src/api/home.js                                                        |   12 
 CanadaMes-ui/src/views/Electrical/Action.vue                                        |  123 ++--
 CanadaMes-ui/src/lang/locales/en-US.json                                            |  296 +++++++-----
 springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java       |  158 +++---
 13 files changed, 823 insertions(+), 565 deletions(-)

diff --git a/CanadaMes-ui/src/api/home.js b/CanadaMes-ui/src/api/home.js
index 7d62fb2..0f4e344 100644
--- a/CanadaMes-ui/src/api/home.js
+++ b/CanadaMes-ui/src/api/home.js
@@ -43,9 +43,17 @@
     })
 }
 
-export function UpdateTask(types,shelf_rack) {
+export function UpdateTask(types,shelfrack) {
     return request({
-        url: '/home/UpdateTask?types=' + types + '&shelf_rack'+shelf_rack,
+        url: '/home/UpdateTask?types=' + types + '&shelfrack='+shelfrack,
+        method: 'get',
+        data :""
+    })
+}
+
+export function SelectAlarmmgInfo() {
+    return request({
+        url: '/home/SelectAlarmmgInfo',
         method: 'get',
         data :""
     })
diff --git a/CanadaMes-ui/src/lang/locales/en-US.json b/CanadaMes-ui/src/lang/locales/en-US.json
index c91ba66..20e6f97 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -1,125 +1,173 @@
 {
-    "systemTitle": "Login System",
-    "usernamePlaceholder": "Please enter username",
-    "passwordPlaceholder": "Please enter password",
-    "loginButton": "Login",
-    "registerButton": "Register",
-    "resetButton": "Reset",
-    "usernameRequired": "Please enter username",
-    "usernameLength": "Username must be between 5 and 15 characters",
-    "passwordRequired": "Please enter password",
-    "passwordLength": "Password must be between 5 and 15 characters",
-    "loginSuccess": "Login successful",
-    "langBtnCN": "Chinese",
-    "langBtnEN": "English",
-    "langHome": "Home",
-    "langUserManagement": "User Management",
-    "langUserList": "User List",
-    "langUsernamePlaceholder": "Please enter username",
-    "langEmailPlaceholder": "Please enter email",
-    "langSearch": "Search",
-    "langAddUser": "Add User",
-    "langUsername": "Username",
-    "langEmail": "Email",
-    "langCreateTime": "Create Time",
-    "langDisabled": "Disabled",
-    "langAction": "Action",
-    "langEdit": "Edit",
-    "langDelete": "Delete",
-    "langAddUserTitle": "Add User",
-    "langPassword": "Password",
-    "langState": "State",
-    "langSelect": "Please select",
-    "langCancel": "Cancel",
-    "langConfirm": "Confirm",
-    "langEditUserTitle": "Edit User",
-    "northglassMESsystem":"NorthGlassMesSystem",
-    "exit":"exit",
-    "changePassword":"changePassword",
-    "resetPassword": "resetPassword",
-    "home":"Home",
-    "role":"role",
-    "langRoleManagement": "Role Management",
-    "langRoleList": "Role List",
-    "langEnterRoleName": "Please enter role name",
-    "langAddRole": "Add Role",
-    "langName": "Name",
-    "langIsValid": "Is Valid",
-    "langOperation": "Operation",
-    "langPleaseSelect": "Please select",
-    "langValid": "Valid",
-    "langInvalid": "Invalid",
-    "langAddRoleSuccess": "Add role successfully",
-    "langEnterName": "Please enter name",
-    "langLengthBetween": "Length should be between",
-    "langAnd": "and",
-    "langCharacters": "characters",
-    "langEnterState": "Please enter state",
-    "langUpdateState": "Update state successfully",
-    "langEditRole": "Edit Role",
-    "langEditRoleSuccess": "Edit role successfully",
-    "langDeleteRoleConfirm": "Are you sure you want to delete this role?",
-    "langPrompt": "Prompt",
-    "langDeleteRoleSuccess": "Delete role successfully",
-    "langCancelDelete": "Cancelled deleting",
-    "langRoleName":"langRoleName",
-    "updateSuccessMessage":"updateSuccessMessage",
-    "paginationTotal": "Total {total}",
-    "paginationSizes": "Items per page",
-    "paginationPrev": "Previous",
-    "paginationPager": "{currentPage}/{pageCount}",
-    "paginationNext": "Next",
-    "paginationJumper": "Jump to",
-    "breadcrumb": {
-      "home": "Home",
-      "permissionManagement": "Permission Management",
-      "permissionList": "Permission List"
-    },
-    "search": {
-      "placeholder": "Enter keywords"
-    },
-    "button": {
-      "addPermission": "Add Permission",
-      "cancel": "Cancel",
-      "confirm": "Confirm"
-    },
-    "table": {
-      "role": "Role",
-      "permissionDescription": "Permission Description",
-      "permissionValue": "Permission Value",
-      "createTime": "Create Time",
-      "isActive": "Is Active",
-      "operation": "Operation"
-    },
-    "tooltip": {
-      "edit": "Edit",
-      "delete": "Delete"
-    },
-    "dialog": {
-      "addPermission": "Add Permission",
-      "editPermission": "Edit Permission"
-    },
-    "form": {
-      "role": "Role",
-      "select": "Please Select",
-      "permission": "Permission",
-      "isActive": "Is Active"
-    },
-    "鎿嶄綔": "Operation",
-    "鏈夋晥": "Valid",
-    "鏃犳晥": "Invalid",
-    "璇疯緭鍏ュ悕绉�": "Please enter a name",
-    "闀垮害鍦� 2 鍒� 15 涓瓧绗�": "Length between 2 and 15 characters",
-    "璇疯緭鍏ョ姸鎬�": "Please enter the status",
-    "娣诲姞瑙掕壊": "Add Role",
-    "淇敼瑙掕壊": "Edit Role",
-    "鍒犻櫎瑙掕壊": "Delete Role",
-    "姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鑹�, 鏄惁缁х画?": "This operation will permanently delete the role. Continue?",
-    "鎻愮ず": "Reminder",
-    "纭畾": "Confirm",
-    "鍙栨秷": "Cancel",
-    "娣诲姞瑙掕壊鎴愬姛": "Successfully added role",
-    "鏇存柊鐘舵�佹垚鍔�": "Successfully updated status",
-    "淇敼瑙掕壊鎴愬姛": "Successfully modified role",
-    "鍒犻櫎瑙掕壊鎴愬姛": "Successfully deleted role"
-  }
\ No newline at end of file
+  "systemTitle": "Login System",
+  "usernamePlaceholder": "Please enter username",
+  "passwordPlaceholder": "Please enter password",
+  "loginButton": "Login",
+  "registerButton": "Register",
+  "resetButton": "Reset",
+  "usernameRequired": "Please enter username",
+  "usernameLength": "Username must be between 5 and 15 characters",
+  "passwordRequired": "Please enter password",
+  "passwordLength": "Password must be between 5 and 15 characters",
+  "loginSuccess": "Login successful",
+  "langBtnCN": "Chinese",
+  "langBtnEN": "English",
+  "langHome": "Home",
+  "langUserManagement": "User Management",
+  "langUserList": "User List",
+  "langUsernamePlaceholder": "Please enter username",
+  "langEmailPlaceholder": "Please enter email",
+  "langSearch": "Search",
+  "langAddUser": "Add User",
+  "langUsername": "Username",
+  "langEmail": "Email",
+  "langCreateTime": "Create Time",
+  "langDisabled": "Disabled",
+  "langAction": "Action",
+  "langEdit": "Edit",
+  "langDelete": "Delete",
+  "langAddUserTitle": "Add User",
+  "langPassword": "Password",
+  "langState": "State",
+  "langSelect": "Please select",
+  "langCancel": "Cancel",
+  "langConfirm": "Confirm",
+  "langEditUserTitle": "Edit User",
+  "northglassMESsystem": "NorthGlassMesSystem",
+  "exit": "exit",
+  "changePassword": "changePassword",
+  "resetPassword": "resetPassword",
+  "home": "Home",
+  "role": "role",
+  "langRoleManagement": "Role Management",
+  "langRoleList": "Role List",
+  "langEnterRoleName": "Please enter role name",
+  "langAddRole": "Add Role",
+  "langName": "Name",
+  "langIsValid": "Is Valid",
+  "langOperation": "Operation",
+  "langPleaseSelect": "Please select",
+  "langValid": "Valid",
+  "langInvalid": "Invalid",
+  "langAddRoleSuccess": "Add role successfully",
+  "langEnterName": "Please enter name",
+  "langLengthBetween": "Length should be between",
+  "langAnd": "and",
+  "langCharacters": "characters",
+  "langEnterState": "Please enter state",
+  "langUpdateState": "Update state successfully",
+  "langEditRole": "Edit Role",
+  "langEditRoleSuccess": "Edit role successfully",
+  "langDeleteRoleConfirm": "Are you sure you want to delete this role?",
+  "langPrompt": "Prompt",
+  "langDeleteRoleSuccess": "Delete role successfully",
+  "langCancelDelete": "Cancelled deleting",
+  "langRoleName": "langRoleName",
+  "updateSuccessMessage": "updateSuccessMessage",
+  "paginationTotal": "Total {total}",
+  "paginationSizes": "Items per page",
+  "paginationPrev": "Previous",
+  "paginationPager": "{currentPage}/{pageCount}",
+  "paginationNext": "Next",
+  "paginationJumper": "Jump to",
+  "breadcrumb": {
+    "home": "Home",
+    "permissionManagement": "Permission Management",
+    "permissionList": "Permission List"
+  },
+  "search": {
+    "placeholder": "Enter keywords"
+  },
+  "button": {
+    "addPermission": "Add Permission",
+    "cancel": "Cancel",
+    "confirm": "Confirm"
+  },
+  "table": {
+    "role": "Role",
+    "permissionDescription": "Permission Description",
+    "permissionValue": "Permission Value",
+    "createTime": "Create Time",
+    "isActive": "Is Active",
+    "operation": "Operation"
+  },
+  "tooltip": {
+    "edit": "Edit",
+    "delete": "Delete"
+  },
+  "dialog": {
+    "addPermission": "Add Permission",
+    "editPermission": "Edit Permission"
+  },
+  "form": {
+    "role": "Role",
+    "select": "Please Select",
+    "permission": "Permission",
+    "isActive": "Is Active"
+  },
+  "鎿嶄綔": "Operation",
+  "鏈夋晥": "Valid",
+  "鏃犳晥": "Invalid",
+  "璇疯緭鍏ュ悕绉�": "Please enter a name",
+  "闀垮害鍦� 2 鍒� 15 涓瓧绗�": "Length between 2 and 15 characters",
+  "璇疯緭鍏ョ姸鎬�": "Please enter the status",
+  "娣诲姞瑙掕壊": "Add Role",
+  "淇敼瑙掕壊": "Edit Role",
+  "鍒犻櫎瑙掕壊": "Delete Role",
+  "姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鑹�, 鏄惁缁х画?": "This operation will permanently delete the role. Continue?",
+  "鎻愮ず": "Reminder",
+  "纭畾": "Confirm",
+  "鍙栨秷": "Cancel",
+  "娣诲姞瑙掕壊鎴愬姛": "Successfully added role",
+  "鏇存柊鐘舵�佹垚鍔�": "Successfully updated status",
+  "淇敼瑙掕壊鎴愬姛": "Successfully modified role",
+  "鍒犻櫎瑙掕壊鎴愬姛": "Successfully deleted role",
+  "translation": {
+    "D01 VFD error": "D01 VFD error",
+    "D02 VFD error": "D02 VFD error",
+    "D03 VFD error": "D03 VFD erro",
+    "D04 VFD error": "D04 VFD error",
+    "D05 VFD error": "D05 VFD error",
+    "D06 VFD error": "D06 VFD error",
+    "B01 VFD error": "B01 VFD error",
+    "B02 VFD error": "B02 VFD error",
+    "A01 VFD error": "A01 VFD error",
+    "A02 VFD error": "A02 VFD error",
+    "A01 servo turn error": "A01 servo turn error",
+    "A02 servo turn error": "A02 servo turn error",
+    "A01 servo travel error": "A01 servo travel error",
+    "A02 servo travel error": "A02 servo travel error",
+    "B01 servo travel error": "B01 servo travel error",
+    "B02 servo travel error": "B02 servo travel error",
+    "D01 DEC error": "D01 DEC error",
+    "D01 pos error": "D01 pos error",
+    "D02 DEC error": "D02 DEC error",
+    "D02 pos error": "D02 pos error",
+    "D03 DEC error": "D03 DEC error",
+    "D03 pos error": "D03 pos error",
+    "D04 DEC error": "D04 DEC error",
+    "D04 pos error": "D04 pos error",
+    "D05 DEC error": "D05 DEC error",
+    "D05 pos error": "D05 pos error",
+    "D06 DEC error": "D06 DEC error",
+    "D06 pos error": "D06 pos error",
+    "A01 DEC error": "A01 DEC error",
+    "A01 pos error": "A01 pos error",
+    "A02 DEC error": "A02 DEC error",
+    "A02 pos error": "A02 pos error",
+    "B01 IN DEC error": "B01 IN DEC error",
+    "B01 IN pos error": "B01 IN pos error",
+    "B01 OUT DEC error": "B01 OUT DEC error",
+    "B01 OUT pos error": "B01 OUT pos error",
+    "B02 IN DEC error": "B02 IN DEC error",
+    "B02 IN pos error": "B02 IN pos error",
+    "B02 OUT DEC error": "B02 OUT DEC error",
+    "B02 OUT pos error": "B02 OUT pos error"
+  },
+  "Parameter": "Parameter",
+  "Action": "Action",
+  "Sign": "Sign",
+  "State": "State",
+  "Alarm": "Alarm",
+  "Distribute": "Distribute"
+}
\ No newline at end of file
diff --git a/CanadaMes-ui/src/lang/locales/zh-CN.json b/CanadaMes-ui/src/lang/locales/zh-CN.json
index 7d56999..ee14dae 100644
--- a/CanadaMes-ui/src/lang/locales/zh-CN.json
+++ b/CanadaMes-ui/src/lang/locales/zh-CN.json
@@ -1,17 +1,16 @@
-
-  {
-    "systemTitle": "鐧诲綍绯荤粺",
-    "usernamePlaceholder": "璇疯緭鍏ョ敤鎴峰悕",
-    "passwordPlaceholder": "璇疯緭鍏ュ瘑鐮�",
-    "loginButton": "鐧诲綍",
-    "registerButton": "娉ㄥ唽",
-    "resetButton": "閲嶇疆",
-    "usernameRequired": "璇疯緭鍏ョ敤鎴峰悕",
-    "usernameLength": "鐢ㄦ埛鍚嶉暱搴﹀湪5-15涓瓧绗︿箣闂�",
-    "passwordRequired": "璇疯緭鍏ュ瘑鐮�",
-    "passwordLength": "瀵嗙爜闀垮害鍦�5-15涓瓧绗︿箣闂�",
-    "loginSuccess": "鐧诲綍鎴愬姛",
-    "langBtnCN": "涓枃",
+{
+  "systemTitle": "鐧诲綍绯荤粺",
+  "usernamePlaceholder": "璇疯緭鍏ョ敤鎴峰悕",
+  "passwordPlaceholder": "璇疯緭鍏ュ瘑鐮�",
+  "loginButton": "鐧诲綍",
+  "registerButton": "娉ㄥ唽",
+  "resetButton": "閲嶇疆",
+  "usernameRequired": "璇疯緭鍏ョ敤鎴峰悕",
+  "usernameLength": "鐢ㄦ埛鍚嶉暱搴﹀湪5-15涓瓧绗︿箣闂�",
+  "passwordRequired": "璇疯緭鍏ュ瘑鐮�",
+  "passwordLength": "瀵嗙爜闀垮害鍦�5-15涓瓧绗︿箣闂�",
+  "loginSuccess": "鐧诲綍鎴愬姛",
+  "langBtnCN": "涓枃",
   "langBtnEN": "English",
   "langHome": "棣栭〉",
   "langUserManagement": "鐢ㄦ埛绠$悊",
@@ -31,99 +30,144 @@
   "langPassword": "瀵嗙爜",
   "langState": "鐘舵��",
   "langSelect": "璇烽�夋嫨",
-
-
   "langEditUserTitle": "淇敼鐢ㄦ埛",
-  "northglassMESsystem":"鍖楃幓MES绯荤粺",
-  "exit":"閫�鍑�",
-  "changePassword":"淇敼瀵嗙爜",
+  "northglassMESsystem": "鍖楃幓MES绯荤粺",
+  "exit": "閫�鍑�",
+  "changePassword": "淇敼瀵嗙爜",
   "resetPassword": "閲嶇疆瀵嗙爜",
-  "home":"涓婚〉",
-  "role":"瑙掕壊",
-    "langRoleManagement": "瑙掕壊绠$悊",
-    "langRoleList": "瑙掕壊鍒楄〃",
-    "langEnterRoleName": "璇疯緭鍏ヨ鑹插悕绉�",
-    "langAddRole": "娣诲姞瑙掕壊",
-    "langName": "鍚嶇О",
-    "langIsValid": "鏄惁鏈夋晥",
-    "langOperation": "鎿嶄綔",
-    "langPleaseSelect": "璇烽�夋嫨",
-    "langValid": "鏈夋晥",
-    "langInvalid": "鏃犳晥",
-    "langConfirm": "纭畾",
-    "langCancel": "鍙栨秷",
-    "langAddRoleSuccess": "娣诲姞瑙掕壊鎴愬姛",
-    "langEnterName": "璇疯緭鍏ュ悕绉�",
-    "langLengthBetween": "闀垮害鍦�",
-    "langAnd": "鍜�",
-    "langCharacters": "涓瓧绗︿箣闂�",
-    "langEnterState": "璇疯緭鍏ョ姸鎬�",
-    "langUpdateState": "鐘舵�佹洿鏂版垚鍔�",
-    "langEditRole": "缂栬緫瑙掕壊",
-    "langEditRoleSuccess": "缂栬緫瑙掕壊鎴愬姛",
-    "langDeleteRoleConfirm": "纭畾瑕佸垹闄よ瑙掕壊鍚楋紵",
-    "langPrompt": "鎻愮ず",
-    "langDeleteRoleSuccess": "鍒犻櫎瑙掕壊鎴愬姛",
-    "langCancelDelete": "宸插彇娑堝垹闄�",
-    "langRoleName":"瑙掕壊鍚嶇О",
-    "updateSuccessMessage":"鏇存柊鎴愬姛",
-    "paginationTotal": "鍏� {total} 鏉�",
-    "paginationSizes": "姣忛〉鏄剧ず",
-    "paginationPrev": "涓婁竴椤�",
-    "paginationPager": "{currentPage}/{pageCount}",
-    "paginationNext": "涓嬩竴椤�",
-    "paginationJumper": "璺宠嚦",
-    "breadcrumb": {
-      "home": "棣栭〉",
-      "permissionManagement": "鏉冮檺绠$悊",
-      "permissionList": "鏉冮檺鍒楄〃"
-    },
-    "search": {
-      "placeholder": "璇疯緭鍏ュ叧閿瓧"
-    },
-    "button": {
-      "addPermission": "娣诲姞鏉冮檺",
-      "cancel": "鍙栨秷",
-      "confirm": "纭"
-    },
-    "table": {
-      "role": "瑙掕壊",
-      "permissionDescription": "鏉冮檺鎻忚堪",
-      "permissionValue": "鏉冮檺鍊�",
-      "createTime": "鍒涘缓鏃堕棿",
-      "isActive": "鏄惁婵�娲�",
-      "operation": "鎿嶄綔"
-    },
-    "tooltip": {
-      "edit": "淇敼",
-      "delete": "鍒犻櫎"
-    },
-    "dialog": {
-      "addPermission": "娣诲姞鏉冮檺",
-      "editPermission": "缂栬緫鏉冮檺"
-    },
-    "form": {
-      "role": "瑙掕壊",
-      "select": "璇烽�夋嫨",
-      "permission": "鏉冮檺",
-      "isActive": "鏄惁婵�娲�"
-    },
-    "鎿嶄綔": "鎿嶄綔",
-    "鏈夋晥": "鏈夋晥",
-    "鏃犳晥": "鏃犳晥",
-    "璇疯緭鍏ュ悕绉�": "璇疯緭鍏ュ悕绉�",
-    "闀垮害鍦� 2 鍒� 15 涓瓧绗�": "闀垮害鍦� 2 鍒� 15 涓瓧绗�",
-    "璇疯緭鍏ョ姸鎬�": "璇疯緭鍏ョ姸鎬�",
-    "娣诲姞瑙掕壊": "娣诲姞瑙掕壊",
-    "淇敼瑙掕壊": "淇敼瑙掕壊",
-    "鍒犻櫎瑙掕壊": "鍒犻櫎瑙掕壊",
-    "姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鑹�, 鏄惁缁х画?": "姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鑹�, 鏄惁缁х画?",
-    "鎻愮ず": "鎻愮ず",
-    "纭畾": "纭畾",
-    "鍙栨秷": "鍙栨秷",
-    "娣诲姞瑙掕壊鎴愬姛": "娣诲姞瑙掕壊鎴愬姛",
-    "鏇存柊鐘舵�佹垚鍔�": "鏇存柊鐘舵�佹垚鍔�",
-    "淇敼瑙掕壊鎴愬姛": "淇敼瑙掕壊鎴愬姛",
-    "鍒犻櫎瑙掕壊鎴愬姛": "鍒犻櫎瑙掕壊鎴愬姛"
-  }
-  
\ No newline at end of file
+  "home": "涓婚〉",
+  "role": "瑙掕壊",
+  "langRoleManagement": "瑙掕壊绠$悊",
+  "langRoleList": "瑙掕壊鍒楄〃",
+  "langEnterRoleName": "璇疯緭鍏ヨ鑹插悕绉�",
+  "langAddRole": "娣诲姞瑙掕壊",
+  "langName": "鍚嶇О",
+  "langIsValid": "鏄惁鏈夋晥",
+  "langOperation": "鎿嶄綔",
+  "langPleaseSelect": "璇烽�夋嫨",
+  "langValid": "鏈夋晥",
+  "langInvalid": "鏃犳晥",
+  "langConfirm": "纭畾",
+  "langCancel": "鍙栨秷",
+  "langAddRoleSuccess": "娣诲姞瑙掕壊鎴愬姛",
+  "langEnterName": "璇疯緭鍏ュ悕绉�",
+  "langLengthBetween": "闀垮害鍦�",
+  "langAnd": "鍜�",
+  "langCharacters": "涓瓧绗︿箣闂�",
+  "langEnterState": "璇疯緭鍏ョ姸鎬�",
+  "langUpdateState": "鐘舵�佹洿鏂版垚鍔�",
+  "langEditRole": "缂栬緫瑙掕壊",
+  "langEditRoleSuccess": "缂栬緫瑙掕壊鎴愬姛",
+  "langDeleteRoleConfirm": "纭畾瑕佸垹闄よ瑙掕壊鍚楋紵",
+  "langPrompt": "鎻愮ず",
+  "langDeleteRoleSuccess": "鍒犻櫎瑙掕壊鎴愬姛",
+  "langCancelDelete": "宸插彇娑堝垹闄�",
+  "langRoleName": "瑙掕壊鍚嶇О",
+  "updateSuccessMessage": "鏇存柊鎴愬姛",
+  "paginationTotal": "鍏� {total} 鏉�",
+  "paginationSizes": "姣忛〉鏄剧ず",
+  "paginationPrev": "涓婁竴椤�",
+  "paginationPager": "{currentPage}/{pageCount}",
+  "paginationNext": "涓嬩竴椤�",
+  "paginationJumper": "璺宠嚦",
+  "breadcrumb": {
+    "home": "棣栭〉",
+    "permissionManagement": "鏉冮檺绠$悊",
+    "permissionList": "鏉冮檺鍒楄〃"
+  },
+  "search": {
+    "placeholder": "璇疯緭鍏ュ叧閿瓧"
+  },
+  "button": {
+    "addPermission": "娣诲姞鏉冮檺",
+    "cancel": "鍙栨秷",
+    "confirm": "纭"
+  },
+  "table": {
+    "role": "瑙掕壊",
+    "permissionDescription": "鏉冮檺鎻忚堪",
+    "permissionValue": "鏉冮檺鍊�",
+    "createTime": "鍒涘缓鏃堕棿",
+    "isActive": "鏄惁婵�娲�",
+    "operation": "鎿嶄綔"
+  },
+  "tooltip": {
+    "edit": "淇敼",
+    "delete": "鍒犻櫎"
+  },
+  "dialog": {
+    "addPermission": "娣诲姞鏉冮檺",
+    "editPermission": "缂栬緫鏉冮檺"
+  },
+  "form": {
+    "role": "瑙掕壊",
+    "select": "璇烽�夋嫨",
+    "permission": "鏉冮檺",
+    "isActive": "鏄惁婵�娲�"
+  },
+  "鎿嶄綔": "鎿嶄綔",
+  "鏈夋晥": "鏈夋晥",
+  "鏃犳晥": "鏃犳晥",
+  "璇疯緭鍏ュ悕绉�": "璇疯緭鍏ュ悕绉�",
+  "闀垮害鍦� 2 鍒� 15 涓瓧绗�": "闀垮害鍦� 2 鍒� 15 涓瓧绗�",
+  "璇疯緭鍏ョ姸鎬�": "璇疯緭鍏ョ姸鎬�",
+  "娣诲姞瑙掕壊": "娣诲姞瑙掕壊",
+  "淇敼瑙掕壊": "淇敼瑙掕壊",
+  "鍒犻櫎瑙掕壊": "鍒犻櫎瑙掕壊",
+  "姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鑹�, 鏄惁缁х画?": "姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ヨ鑹�, 鏄惁缁х画?",
+  "鎻愮ず": "鎻愮ず",
+  "纭畾": "纭畾",
+  "鍙栨秷": "鍙栨秷",
+  "娣诲姞瑙掕壊鎴愬姛": "娣诲姞瑙掕壊鎴愬姛",
+  "鏇存柊鐘舵�佹垚鍔�": "鏇存柊鐘舵�佹垚鍔�",
+  "淇敼瑙掕壊鎴愬姛": "淇敼瑙掕壊鎴愬姛",
+  "鍒犻櫎瑙掕壊鎴愬姛": "鍒犻櫎瑙掕壊鎴愬姛",
+  "translation": {
+    "D01 VFD error": "D01 VFD 閿欒",
+    "D02 VFD error": "D02 VFD 閿欒",
+    "D03 VFD error": "D03 VFD 閿欒",
+    "D04 VFD error": "D04 VFD 閿欒",
+    "D05 VFD error": "D05 VFD 閿欒",
+    "D06 VFD error": "D06 VFD 閿欒",
+    "B01 VFD error": "B01 VFD 閿欒",
+    "B02 VFD error": "B02 VFD 閿欒",
+    "A01 VFD error": "A01 VFD 閿欒",
+    "A02 VFD error": "A02 VFD 閿欒",
+    "A01 servo turn error": "A01 servo turn 閿欒",
+    "A02 servo turn error": "A02 servo turn 閿欒",
+    "A01 servo travel error": "A01 servo travel 閿欒",
+    "A02 servo travel error": "A02 servo travel 閿欒",
+    "B01 servo travel error": "B01 servo travel 閿欒",
+    "B02 servo travel error": "B02 servo travel 閿欒",
+    "D01 DEC error": "D01 DEC 閿欒",
+    "D01 pos error": "D01 pos 閿欒",
+    "D02 DEC error": "D02 DEC 閿欒",
+    "D02 pos error": "D02 pos 閿欒",
+    "D03 DEC error": "D03 DEC 閿欒",
+    "D03 pos error": "D03 pos 閿欒",
+    "D04 DEC error": "D04 DEC 閿欒",
+    "D04 pos error": "D04 pos 閿欒",
+    "D05 DEC error": "D05 DEC 閿欒",
+    "D05 pos error": "D05 pos 閿欒",
+    "D06 DEC error": "D06 DEC 閿欒",
+    "D06 pos error": "D06 pos 閿欒",
+    "A01 DEC error": "A01 DEC 閿欒",
+    "A01 pos error": "A01 pos 閿欒",
+    "A02 DEC error": "A02 DEC 閿欒",
+    "A02 pos error": "A02 pos 閿欒",
+    "B01 IN DEC error": "B01 IN DEC 閿欒",
+    "B01 IN pos error": "B01 IN pos 閿欒",
+    "B01 OUT DEC error": "B01 OUT DEC 閿欒",
+    "B01 OUT pos error": "B01 OUT pos 閿欒",
+    "B02 IN DEC error": "B02 IN DEC 閿欒",
+    "B02 IN pos error": "B02 IN pos 閿欒",
+    "B02 OUT DEC error": "B02 OUT DEC 閿欒",
+    "B02 OUT pos error": "B02 OUT pos 閿欒"
+  },
+  "Parameter": "鍙傛暟涓嬪彂",
+  "Action": "寮�鍏虫帶鍒�",
+  "Sign": "IO鐘舵��",
+  "State": "State",
+  "Alarm": "鎶ヨ淇℃伅",
+  "Distribute": "涓嬪彂"
+}
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/Electrical/Action.vue b/CanadaMes-ui/src/views/Electrical/Action.vue
index e546681..bf97da3 100644
--- a/CanadaMes-ui/src/views/Electrical/Action.vue
+++ b/CanadaMes-ui/src/views/Electrical/Action.vue
@@ -3,7 +3,7 @@
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
       <router-link to="/home" tag="el-button" type="text">{{ $t('langHome') }}</router-link>
-      <el-button type="text">璁惧绠$悊</el-button>
+      <el-button type="text">Electrical</el-button>
       <router-link to="/Electrical/Parameter" tag="el-button" type="text">Parameter</router-link>
       <router-link to="/Electrical/Action" tag="el-button" type="text">Action</router-link>
       <router-link to="/Electrical/Sign" tag="el-button" type="text">Sign</router-link>
@@ -19,8 +19,8 @@
 
       <div class="kuai_div" v-for="(item, index) in record.xyData" :key="index">
         <el-input v-model="item.name" style="width: 240px;" class="in_mc" readonly></el-input>
-        <el-switch v-model="item.value" active-value="1" inactive-value="0"  @change="send()"></el-switch>
-    </div>
+        <el-switch v-model="item.value" active-value="1" inactive-value="0" @change="send()"></el-switch>
+      </div>
     </el-form>
 
 
@@ -28,10 +28,11 @@
 </template>
 
 <script >
-
+import LanguageMixin from '../../lang/LanguageMixin'
 let socket;
 export default {
   name: "action",
+  mixins: [LanguageMixin],
   data () {
     return {
       record: {
@@ -65,34 +66,34 @@
           'B02 YV UP DOWN',
         ],
         xyData: [
-  { name: 'D01 VFD conveyor', value: "0" },
-  { name: 'D02 VFD conveyor', value: "0" },
-  { name: 'D03 VFD conveyor', value: "1" },
-  { name: 'D04 VFD conveyor', value: "0" },
-  { name: 'D05 VFD conveyor', value: "0" },
-  { name: 'D06 VFD conveyor', value: "0" },
-  { name: 'A01 VFD conveyor', value: "0" },
-  { name: 'A02 VFD conveyor', value: "0" },
-  { name: 'B01 VFD conveyor', value: "0" },
-  { name: 'B02 VFD conveyor', value: "0" },
-  { name: 'A01 SERVE TURN JOG+', value: "0" },
-  { name: 'A02 SERVE TURN JOG-', value: "0" },
-  { name: 'A01 SERVE TRAVEL JOG+', value: "0" },
-  { name: 'A02 SERVE TRAVEL JOG-', value: "0" },
-  { name: 'B01 SERVE TRAVEL JOG+', value: "0" },
-  { name: 'B02 SERVE TRAVEL JOG-', value: "0" },
-  { name: 'A01 SERVE TURN POS', value: "0" },
-  { name: 'A02 SERVE TURN POS', value: "0" },
-  { name: 'A01 SERVE TRAVEL POS', value: "0" },
-  { name: 'A02 SERVE TRAVEL POS', value: "0" },
-  { name: 'B01 SERVE TRAVEL POS', value: "0" },
-  { name: 'B02 SERVE TRAVEL POS', value: "0" },
-  { name: 'B01 YV TURN', value: "0" },
-  { name: 'B01 YV UP DOWN', value: "0" },
-  { name: 'B02 YV TURN', value: "0" },
-  { name: 'B02 YV UP DOWN', value: "0" },
-]
-,
+          { name: 'D01 VFD conveyor', value: "0" },
+          { name: 'D02 VFD conveyor', value: "0" },
+          { name: 'D03 VFD conveyor', value: "1" },
+          { name: 'D04 VFD conveyor', value: "0" },
+          { name: 'D05 VFD conveyor', value: "0" },
+          { name: 'D06 VFD conveyor', value: "0" },
+          { name: 'A01 VFD conveyor', value: "0" },
+          { name: 'A02 VFD conveyor', value: "0" },
+          { name: 'B01 VFD conveyor', value: "0" },
+          { name: 'B02 VFD conveyor', value: "0" },
+          { name: 'A01 SERVE TURN JOG+', value: "0" },
+          { name: 'A02 SERVE TURN JOG-', value: "0" },
+          { name: 'A01 SERVE TRAVEL JOG+', value: "0" },
+          { name: 'A02 SERVE TRAVEL JOG-', value: "0" },
+          { name: 'B01 SERVE TRAVEL JOG+', value: "0" },
+          { name: 'B02 SERVE TRAVEL JOG-', value: "0" },
+          { name: 'A01 SERVE TURN POS', value: "0" },
+          { name: 'A02 SERVE TURN POS', value: "0" },
+          { name: 'A01 SERVE TRAVEL POS', value: "0" },
+          { name: 'A02 SERVE TRAVEL POS', value: "0" },
+          { name: 'B01 SERVE TRAVEL POS', value: "0" },
+          { name: 'B02 SERVE TRAVEL POS', value: "0" },
+          { name: 'B01 YV TURN', value: "0" },
+          { name: 'B01 YV UP DOWN', value: "0" },
+          { name: 'B02 YV TURN', value: "0" },
+          { name: 'B02 YV UP DOWN', value: "0" },
+        ]
+        ,
       },
 
 
@@ -131,24 +132,24 @@
         };
         //  娴忚鍣ㄧ鏀舵秷鎭紝鑾峰緱浠庢湇鍔$鍙戦�佽繃鏉ョ殑鏂囨湰娑堟伅
         socket.onmessage = (msg) => {
-  if (!msg.data) {
-    return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
-  }
+          if (!msg.data) {
+            return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
+          }
 
-  let obj = JSON.parse(msg.data);
-  this.record.params[0] = obj.params[0];
+          let obj = JSON.parse(msg.data);
+          this.record.params[0] = obj.params[0];
 
-  for (let a = 0; a <= this.record.params[0].length - 1; a++) {
-    if (!this.record.xyData[a]) {
-      this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a].toString() };
-    } else {
-      this.record.xyData[a].value = this.record.params[0][a].toString();
-    }
-  }
+          for (let a = 0; a <= this.record.params[0].length - 1; a++) {
+            if (!this.record.xyData[a]) {
+              this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a].toString() };
+            } else {
+              this.record.xyData[a].value = this.record.params[0][a].toString();
+            }
+          }
 
-  console.log(this.record.xyData);
-  this.$forceUpdate();
-};
+          console.log(this.record.xyData);
+          this.$forceUpdate();
+        };
 
         //鍏抽棴浜嬩欢
         socket.onclose = function () {
@@ -161,11 +162,11 @@
       }
 
     },
-    send() {
-  this.messagepack.data = this.record.xyData.map(item => parseInt(item.value)); // 杞崲涓烘暣鏁版暟缁�
-  console.log(this.messagepack);
-  socket?.send(JSON.stringify(this.messagepack));
-}
+    send () {
+      this.messagepack.data = this.record.xyData.map(item => parseInt(item.value)); // 杞崲涓烘暣鏁版暟缁�
+      console.log(this.messagepack);
+      socket?.send(JSON.stringify(this.messagepack));
+    }
 
   }
 
@@ -188,18 +189,18 @@
   border: none;
 
 
-  
+
 
 
 }
-.el-input__inner {
-    border: 1 solid black;
-  }
 
-.in_mc {
- 
-}
 .el-input__inner {
-    border: none;
-  }
+  border: 1 solid black;
+}
+
+.in_mc {}
+
+.el-input__inner {
+  border: none;
+}
 </style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/Electrical/Parameter.vue b/CanadaMes-ui/src/views/Electrical/Parameter.vue
index 85fce27..ed3cb31 100644
--- a/CanadaMes-ui/src/views/Electrical/Parameter.vue
+++ b/CanadaMes-ui/src/views/Electrical/Parameter.vue
@@ -1,155 +1,159 @@
 <template>
   <div class="app">
-  <!--闈㈠寘灞戝鑸尯鍩�-->
-  <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
-  <router-link to="/home" tag="el-button" type="text">{{ $t('langHome') }}</router-link>
-  <el-button type="text">璁惧绠$悊</el-button>
-  <router-link to="/Electrical/Parameter" tag="el-button" type="text">Parameter</router-link>
-  <router-link to="/Electrical/Action" tag="el-button" type="text">Action</router-link>
-  <router-link to="/Electrical/Sign" tag="el-button" type="text">Sign</router-link>
-  <router-link to="/Electrical/State" tag="el-button" type="text">State</router-link>
-  <router-link to="/Electrical/alarm" tag="el-button" type="text">Alarm</router-link>
-  </el-breadcrumb>
-  <div>Parameter</div>
-  
-  <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="messagepack.data">
-    <div id="btn_div">
-      <el-button type="primary" @click="send()">涓嬪彂鍙傛暟</el-button>
-    </div>
-    <div class="kuai_div" v-for="(item, index) in record.xyData" :key="index">
-      <el-input style="width: 280px;" class="in_mc" v-model="item.name" readonly></el-input>
-      <el-input v-model.number="item.value" style="width: 80px;" @input="handleChange(index, $event.target.value)"></el-input>
-    </div>
-  </el-form>
+    <!--闈㈠寘灞戝鑸尯鍩�-->
+    <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
+      <router-link to="/home" tag="el-button" type="text">{{ $t('langHome') }}</router-link>
+      <el-button type="text">{{ $t('Distribute') }}</el-button>
+      <router-link to="/Electrical/Parameter" tag="el-button" type="text">Parameter</router-link>
+      <router-link to="/Electrical/Action" tag="el-button" type="text">Action</router-link>
+      <router-link to="/Electrical/Sign" tag="el-button" type="text">Sign</router-link>
+      <router-link to="/Electrical/State" tag="el-button" type="text">State</router-link>
+      <router-link to="/Electrical/alarm" tag="el-button" type="text">Alarm</router-link>
+    </el-breadcrumb>
+    <div>Parameter</div>
+
+    <el-form label-width="100px" style="display: flex;flex-wrap: wrap;" :model="messagepack.data">
+      <div id="btn_div">
+        <el-button type="primary" @click="send()">{{ $t('Distribute') }}</el-button>
+      </div>
+      <div class="kuai_div" v-for="(item, index) in record.xyData" :key="index">
+        <el-input style="width: 280px;" class="in_mc" v-model="item.name" readonly></el-input>
+        <el-input v-model.number="item.value" style="width: 80px;"
+          @input="handleChange(index, $event.target.value)"></el-input>
+      </div>
+    </el-form>
   </div>
-  </template>
+</template>
   
-  <script>
-  let socket;
-  
-  export default {
+<script>
+
+import LanguageMixin from '../../lang/LanguageMixin'
+let socket;
+
+export default {
   name: "Parameter",
-  data() {
-  return {
-  record: {
-  params: [100, 200, 10, 10, 10, 10],
-  xyData: [
-  { name: "conveyor Velocity(Auto FAST)", value: 0 },
-  { name: "conveyor Velocity(Auto SLOW)", value: 0 },
-  { name: "conveyor Velocity(Manual)", value: 0 },
-  { name: "A01 A02 TURN JOG Velocity", value: 0 },
-  { name: "A01 A02 TRAVEL JOG Velocity", value: 0 },
-  { name: "B01 B02 TRAVEL JOG Velocity", value: 0 },
-  { name: "A01 A02 TURN POS Velocity AUTO", value: 0 },
-  { name: "A01 A02 TURN POS Velocity manual", value: 0 },
-  { name: "A01 A02 TRAVEL POS Velocity AUTO", value: 0 },
-  { name: "A01 A02 TRAVEL POS Velocity manual", value: 0 },
-  { name: "B01 B02 TRAVEL POS Velocity AUTO", value: 0 },
-  { name: "B01 B02 TRAVEL POS Velocity manual", value: 0 }
-  ],
-  canshu: []
+  mixins: [LanguageMixin],
+  data () {
+    return {
+      record: {
+        params: [100, 200, 10, 10, 10, 10],
+        xyData: [
+          { name: "conveyor Velocity(Auto FAST)", value: 0 },
+          { name: "conveyor Velocity(Auto SLOW)", value: 0 },
+          { name: "conveyor Velocity(Manual)", value: 0 },
+          { name: "A01 A02 TURN JOG Velocity", value: 0 },
+          { name: "A01 A02 TRAVEL JOG Velocity", value: 0 },
+          { name: "B01 B02 TRAVEL JOG Velocity", value: 0 },
+          { name: "A01 A02 TURN POS Velocity AUTO", value: 0 },
+          { name: "A01 A02 TURN POS Velocity manual", value: 0 },
+          { name: "A01 A02 TRAVEL POS Velocity AUTO", value: 0 },
+          { name: "A01 A02 TRAVEL POS Velocity manual", value: 0 },
+          { name: "B01 B02 TRAVEL POS Velocity AUTO", value: 0 },
+          { name: "B01 B02 TRAVEL POS Velocity manual", value: 0 }
+        ],
+        canshu: []
+      },
+      messagepack: {
+        data: { taskname: "" }
+      },
+      queryInfo: {
+        data: "1",
+        pageSize: 10
+      }
+    };
   },
-  messagepack: {
-  data: { taskname: "" }
-  },
-  queryInfo: {
-  data: "1",
-  pageSize: 10
-  }
-  };
-  },
-  created() {
-  this.initWebSocket();
+  created () {
+    this.initWebSocket();
   },
   methods: {
-  initWebSocket() {
-  let viewname = "Parameter";
-  
-    if (typeof WebSocket === "undefined") {
-      console.log("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔WebSocket");
-    } else {
-      let socketUrl = "ws://" + "localhost:8888" + "/springboot-vue3/api/talk/" + viewname;
-  
-      if (socket != null) {
-        socket.close();
-        socket = null;
-      }
-  
-      // 寮�鍚竴涓獁ebsocket鏈嶅姟
-      socket = new WebSocket(socketUrl);
-  
-      // 鎵撳紑浜嬩欢
-      socket.onopen = function () {
-        console.log("websocket宸叉墦寮�");
-      };
-  
-      // 鏀跺埌娑堟伅
-      socket.onmessage = (msg) => {
-        if (!msg.data) {
-          return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
+    initWebSocket () {
+      let viewname = "Parameter";
+
+      if (typeof WebSocket === "undefined") {
+        console.log("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔WebSocket");
+      } else {
+        let socketUrl = "ws://" + "localhost:8888" + "/springboot-vue3/api/talk/" + viewname;
+
+        if (socket != null) {
+          socket.close();
+          socket = null;
         }
-  
-        let obj = JSON.parse(msg.data);
-        this.record.params[0] = obj.params[0];
-  
-        for (let a = 0; a <= this.record.params[0].length - 1; a++) {
-          if (!this.record.xyData[a]) {
-            this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
-          } else {
-            this.record.xyData[a].value = this.record.params[0][a];
+
+        // 寮�鍚竴涓獁ebsocket鏈嶅姟
+        socket = new WebSocket(socketUrl);
+
+        // 鎵撳紑浜嬩欢
+        socket.onopen = function () {
+          console.log("websocket宸叉墦寮�");
+        };
+
+        // 鏀跺埌娑堟伅
+        socket.onmessage = (msg) => {
+          if (!msg.data) {
+            return; // 濡傛灉鏀跺埌绌烘暟鎹紝鍒欑洿鎺ヨ繑鍥烇紝涓嶆墽琛屽悗缁�昏緫
           }
-        }
-  
-        console.log(this.record.xyData);
-        this.$forceUpdate();
-      };
-  
-      // 鍏抽棴浜嬩欢
-      socket.onclose = function () {
-        console.log("websocket宸插叧闂�");
-      };
-  
-      // 鍙戠敓閿欒浜嬩欢
-      socket.onerror = function () {
-        console.log("websocket鍙戠敓浜嗛敊璇�");
-      };
+
+          let obj = JSON.parse(msg.data);
+          this.record.params[0] = obj.params[0];
+
+          for (let a = 0; a <= this.record.params[0].length - 1; a++) {
+            if (!this.record.xyData[a]) {
+              this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
+            } else {
+              this.record.xyData[a].value = this.record.params[0][a];
+            }
+          }
+
+          console.log(this.record.xyData);
+          this.$forceUpdate();
+        };
+
+        // 鍏抽棴浜嬩欢
+        socket.onclose = function () {
+          console.log("websocket宸插叧闂�");
+        };
+
+        // 鍙戠敓閿欒浜嬩欢
+        socket.onerror = function () {
+          console.log("websocket鍙戠敓浜嗛敊璇�");
+        };
+      }
+    },
+    send () {
+      this.messagepack.data = this.record.xyData.map((item) => parseInt(item.value)); // 杞崲涓烘暣鏁版暟缁�
+      console.log(this.messagepack);
+      socket?.send(JSON.stringify(this.messagepack));
+    },
+    handleChange (index, value) {
+      this.record.xyData[index].value = value;
     }
-  },
-  send() {
-    this.messagepack.data = this.record.xyData.map((item) => parseInt(item.value)); // 杞崲涓烘暣鏁版暟缁�
-    console.log(this.messagepack);
-    socket?.send(JSON.stringify(this.messagepack));
-  },
-  handleChange(index, value) {
-    this.record.xyData[index].value = value;
   }
-  }
-  };
-  </script>
+};
+</script>
   
-  <style>
-  .kuai_div {
+<style>
+.kuai_div {
   width: 30%;
   margin-bottom: 15px;
-  }
-  
-  .el-input {
+}
+
+.el-input {
   border: none;
-  }
-  
-  .el-input__inner {
+}
+
+.el-input__inner {
   border: 1px solid black;
-  }
-  
-  .in_mc .el-input__inner {
+}
+
+.in_mc .el-input__inner {
   border: none;
-  }
-  
-  #btn_div {
+}
+
+#btn_div {
   width: 100%;
-  }
-  
-  #btn_div .el-button {
+}
+
+#btn_div .el-button {
   float: right;
-  }
-  </style>
\ No newline at end of file
+}
+</style>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/Electrical/Sign.vue b/CanadaMes-ui/src/views/Electrical/Sign.vue
index 454bd45..c96d683 100644
--- a/CanadaMes-ui/src/views/Electrical/Sign.vue
+++ b/CanadaMes-ui/src/views/Electrical/Sign.vue
@@ -3,7 +3,7 @@
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
       <router-link to="/home" tag="el-button" type="text">{{ $t('langHome') }}</router-link>
-      <el-button type="text">璁惧绠$悊</el-button>
+      <el-button type="text">Electrical</el-button>
       <router-link to="/Electrical/Parameter" tag="el-button" type="text">Parameter</router-link>
       <router-link to="/Electrical/Action" tag="el-button" type="text">Action</router-link>
       <router-link to="/Electrical/Sign" tag="el-button" type="text">Sign</router-link>
diff --git a/CanadaMes-ui/src/views/Electrical/State.vue b/CanadaMes-ui/src/views/Electrical/State.vue
index 403650a..bd0b977 100644
--- a/CanadaMes-ui/src/views/Electrical/State.vue
+++ b/CanadaMes-ui/src/views/Electrical/State.vue
@@ -3,7 +3,7 @@
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
       <router-link to="/home" tag="el-button" type="text">{{ $t('langHome') }}</router-link>
-      <el-button type="text">璁惧绠$悊</el-button>
+      <el-button type="text">Electrical</el-button>
       <router-link to="/Electrical/Parameter" tag="el-button" type="text">Parameter</router-link>
       <router-link to="/Electrical/Action" tag="el-button" type="text">Action</router-link>
       <router-link to="/Electrical/Sign" tag="el-button" type="text">Sign</router-link>
diff --git a/CanadaMes-ui/src/views/Electrical/alarm.vue b/CanadaMes-ui/src/views/Electrical/alarm.vue
index db22d18..f3dd37c 100644
--- a/CanadaMes-ui/src/views/Electrical/alarm.vue
+++ b/CanadaMes-ui/src/views/Electrical/alarm.vue
@@ -3,7 +3,7 @@
     <!--闈㈠寘灞戝鑸尯鍩�-->
     <el-breadcrumb separator-class="el-icon-arrow-right" class="el-breadcrumb">
       <router-link to="/home" tag="el-button" type="text">{{ $t('langHome') }}</router-link>
-      <el-button type="text">璁惧绠$悊</el-button>
+      <el-button type="text">Electrical</el-button>
       <router-link to="/Electrical/Parameter" tag="el-button" type="text">Parameter</router-link>
       <router-link to="/Electrical/Action" tag="el-button" type="text">Action</router-link>
       <router-link to="/Electrical/Sign" tag="el-button" type="text">Sign</router-link>
@@ -18,7 +18,7 @@
         </div>
       </el-form> -->
 
-    <el-table :data="tableData" style="width: 100%;" height="590">
+    <el-table :data="localizedRoles" style="width: 100%;" height="590">
       <el-table-column prop="id" label="id" width="80">
       </el-table-column>
       <el-table-column prop="content" label="content">
@@ -33,9 +33,11 @@
 
 <script >
 import { setAll } from "../../api/alarm";
+import LanguageMixin from '../../lang/LanguageMixin'
 let socket;
 export default {
   name: "alarm",
+  mixins: [LanguageMixin],
   data () {
     return {
       record: {
@@ -44,8 +46,8 @@
         // xyData: [],
 
       },
-      tableData: [],
-
+      roles: [],
+      localizedRoles: [],
       messagepack: {
         data: { taskname: "" }
       },
@@ -59,15 +61,28 @@
   created () {
     this.init();
     this.load();
+
   },
   methods: {
     load () {
       setAll().then(res => {
-        this.tableData = res.data.list;
-        //console.log(this.tableData);
-
+        this.roles = res.data.list;
+        const language = this.$i18n.locale;
+        if (language === 'zh-CN') {
+          this.replaceChineseWithEnglish();
+        } else {
+          this.localizedRoles = [...this.roles];
+        }
+        console.log(this.localizedRoles);
       });
     },
+    replaceChineseWithEnglish () {
+      const translation = this.$t('translation');
+      this.localizedRoles = this.roles.map(role => ({
+        ...role,
+        content: translation[role.content] || role.content
+      }));
+    },
     init () {
       let viewname = "alarm";
 
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index f5ca385..7900d17 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -73,7 +73,7 @@
 
 
 .blocks {
-    min-height: 50vh;
+    min-height: 49vh;
     max-width: 100vw;
     background-image: url('../../img/xmjc.png');
     margin: 0 auto;
@@ -110,36 +110,74 @@
 .el-table__empty-text {
     line-height: 41px;
 }
+
+.box {
+    width: 90%;
+    margin-left: 5%;
+    height: 35px;
+    color: red;
+    font-size: 12px;
+    overflow: hidden;
+}
+
+.text {
+    width: auto;
+    line-height: 35px;
+    white-space: nowrap;
+    animation: textScroll 20s linear infinite;
+    margin: 0 auto;
+}
+
+@keyframes textScroll {
+    0% {
+        transform: translateX(100%);
+    }
+
+    100% {
+        transform: translateX(-150%);
+    }
+}
 </style>
 <template>
     <el-container>
         <!-- <el-header style="padding: 10px;"></el-header> -->
         <el-main>
+            <div class="box">
+                <div class="text">
+                    Alarm:
+                    <label v-for="item in this.alarm" :key="item['id']">
+                        {{ item['content'] }}
+                    </label>
+                </div>
+            </div>
+
             <div style="display:flex;justify-content: space-around;width: 95%;margin: 0 auto;">
                 <el-input style="width:15%;" placeholder="Enter the glass lD" v-model="glassid"></el-input>
                 <el-button type="primary" @click="showform()">Manually feed the glass</el-button>
                 <el-input style="width:15%;" placeholder="Enter the order number" v-model="order"></el-input>
-                <el-button type="warning" @click="getOrder()">Exit the glass by order number</el-button>
+                <el-button type="warning" @click="showform1();">Exit the glass by order number</el-button>
             </div>
             <div>
-                <el-table :data="this.tasklist1" border style="width: 100%" >
+                <el-table :data="this.tasklist1" border style="width: 100%">
                     <el-table-column prop="glassId" label="Coming out glass ID"></el-table-column>
-                    <el-table-column :width="250" prop="cage" label="The Grille number being used"></el-table-column>
+                    <el-table-column :width="250" prop="cell" label="The Grille number being used"></el-table-column>
                     <el-table-column prop="orderId" label="Order Nmuber"></el-table-column>
                     <el-table-column prop="lengthwidth" label="Length and width"></el-table-column>
                     <el-table-column prop="coating" label="coating"></el-table-column>
                     <el-table-column label="Operate">
-                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;">end task</el-button>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" @click="endtask(0)">end
+                            task</el-button>
                     </el-table-column>
                 </el-table>
                 <el-table :data="this.tasklist2" border style="width: 100%">
                     <el-table-column prop="glassId" label="Incoming glass ID"></el-table-column>
-                    <el-table-column :width="250" prop="cage" label="The Grille number being used"></el-table-column>
+                    <el-table-column :width="250" prop="cell" label="The Grille number being used"></el-table-column>
                     <el-table-column prop="orderId" label="Order Nmuber"></el-table-column>
                     <el-table-column prop="lengthwidth" label="Length and width"></el-table-column>
                     <el-table-column prop="coating" label="coating"></el-table-column>
                     <el-table-column label="Operate">
-                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;">end task</el-button>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;" @click="endtask(1)">end
+                            task</el-button>
                     </el-table-column>
                 </el-table>
             </div>
@@ -180,7 +218,7 @@
         </el-footer>
         <el-dialog :visible.sync="dialogFormVisible" title="Please confirm the information">
             <el-form :model="form" label-width="100px" style="padding-right: 30px">
-                <el-form-item label="Order">
+                <el-form-item label="order">
                     <el-input v-model="form.orderno" autocomplete="off" />
                 </el-form-item>
                 <el-form-item label="length">
@@ -200,12 +238,28 @@
                 </span>
             </template>
         </el-dialog>
+        <el-dialog :visible.sync="dialogFormVisible1" title="Ordering Information">
+            <el-form :model="form1" label-width="100px" style="padding-right: 30px">
+                <el-form-item label="order">
+                    <el-input v-model="form1.order" autocomplete="off" />
+                </el-form-item>
+                <el-form-item label="number">
+                    <el-input v-model="form1.number" autocomplete="off" />
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="cancal1()">cancal</el-button>
+                    <el-button @click="getOrder();" type="primary">confirm</el-button>
+                </span>
+            </template>
+        </el-dialog>
     </el-container>
 </template>
   
 <script>
 
-import { home, home2, loadtask, InsertOrder, Addglassid } from "../../api/home";
+import { home, home2, loadtask, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo } from "../../api/home";
 
 let socket;
 export default {
@@ -213,12 +267,18 @@
     data() {
         return {
             dialogFormVisible: false,
+            dialogFormVisible1: false,
             form: {
                 orderno: "NG2210210",
                 length: 800,
                 width: 1000,
                 coating: "red",
             },
+            form1: {
+                order: "NG2210210",
+                number: 800,
+            },
+            alarm: [],
             tableData: [],
             cagelist1: [],
             cagelist2: [],
@@ -232,7 +292,9 @@
             glassid: "",
             url: "../../img/bigcar01.png",
             car1: 116,
-            car2: 187
+            car2: 187,
+            incell: "",
+            outcell: ""
         };
     },
     created() {
@@ -268,14 +330,20 @@
 
                     this.car1 = 116 + 18.88 * obj.params[0][0];
                     this.car2 = 187 + 18.8 * obj.params[0][1];
-                    this.tableData=obj.tableData[0];
-                    this.cagelist1=obj.cagelist1[0];
-                    this.cagelist2=obj.cagelist2[0];
-                    this.cagelist3=obj.cagelist3[0];
-                    this.cagelist4=obj.cagelist4[0];
-                    this.tasklist1=obj.tasklist1[0];
-                    this.tasklist2=obj.tasklist2[0];
-                
+                    this.tableData = obj.tableData[0];
+                    this.cagelist1 = obj.cagelist1[0];
+                    this.cagelist2 = obj.cagelist2[0];
+                    this.cagelist3 = obj.cagelist3[0];
+                    this.cagelist4 = obj.cagelist4[0];
+                    this.tasklist1 = obj.tasklist1[0];
+                    this.tasklist2 = obj.tasklist2[0];
+                    if (this.tasklist1.length > 0) {
+                        this.incell = this.tasklist1[0]['cell'];
+                    }
+                    if (this.tasklist1.length > 0) {
+                        this.outcell = this.tasklist2[0]['cell'];
+                    }
+                    this.alarm = obj.alarmmg[0];
                     // for (let a = 0; a <= this.record.params.length - 1; a++) {
                     //     // this.record.xyData[a] = [this.record.canshu[a], this.record.params[0][a]];
                     //     // this.record.xyData[a] = { name: this.record.canshu[a], value: this.record.params[0][a] };
@@ -311,14 +379,23 @@
             });
             loadtask(this.task1).then(res => {
                 this.tasklist1 = res.data.list;
-                console.log(this.tasklist1);
+                if (res.data.list.length > 0) {
+                    this.incell = this.tasklist1[0]['cell'];
+                }
             });
             loadtask(this.task2).then(res => {
                 this.tasklist2 = res.data.list;
+                if (res.data.list.length > 0) {
+                    this.outcell = this.tasklist2[0]['cell'];
+                }
+
             });
             loadtask(this.task2).then(res => {
                 this.tasklist2 = res.data.list;
-                
+
+            });
+            SelectAlarmmgInfo().then(res => {
+                this.alarm = res.data.alarmmg;
             });
         },
         //鏍规嵁鏍煎瓙鐘舵�佷慨鏀归鑹�
@@ -337,7 +414,7 @@
         },
         //鎸夎鍗曞嚭鐗�
         getOrder() {
-            if (this.order != "") {
+            if (this.form1.order != "") {
                 InsertOrder(this.order).then(res => {
                     if (res.data.message == 200) {
                         this.$message.success("Operation successful");
@@ -349,23 +426,9 @@
             }
 
         },
-        showform() {
-            this.form =
-            {
-                orderno: "NG2210210",
-                length: 800,
-                width: 1000,
-                coating: "red",
-            };
-            this.dialogFormVisible = true;
-        },
-        cancal() {
-            this.dialogFormVisible = false;
-            this.form = {};
-        },
         //鎵嬪姩涓婄墖
         sbumitglassid() {
-            if (this.glassid != "") {
+            if (this.form.order != "") {
                 Addglassid(this.glassid).then(res => {
                     if (res.data.message2 == 200) {
                         this.$message.success("Operation successful");
@@ -376,12 +439,59 @@
                 });
             }
         },
-        endtask(type,shelfrack) {
-            alert(type);
-            alert(shelfrack);
+        showform() {
+            if (this.glassid != "") {
+                this.form =
+                {
+                    orderno: "NG2210210",
+                    length: 800,
+                    width: 1000,
+                    coating: "red",
+                };
+                this.dialogFormVisible = true;
+            }
+        },
+        showform1() {
+            if (this.order != "") {
+                this.form1 =
+                {
+                    order: "NG2210210",
+                    number: 800,
+                };
+                this.dialogFormVisible1 = true;
+            }
+
+
+        },
+        cancal() {
+            this.dialogFormVisible = false;
+            this.form = {};
+        },
+        cancal1() {
+            this.dialogFormVisible1 = false;
+            this.form1 = {};
+        },
+        endtask(type) {
+            if (type == 0) {
+                UpdateTask(type, this.incell).then(res => {
+                    if (res.data.message3 == 200) {
+                        this.$message.success("Operation successful");
+                    }
+                });
+            } else {
+                UpdateTask(type, this.outcell).then(res => {
+                    if (res.data.message3 == 200) {
+                        this.$message.success("Operation successful");
+                    }
+                });
+            }
+
+
         }
+
     }
-};
+}
+
 
 
 </script>
\ No newline at end of file
diff --git a/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java b/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
index 4fc251a..c6e197c 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/component/Plcaction.java
@@ -6,96 +6,94 @@
 import java.util.List;
 
 public class Plcaction extends Thread {
-    private static final long SEND_INTERVAL = 2000; // 鍙戦�佹秷鎭殑鏃堕棿闂撮殧
-    private static final long WRITE_INTERVAL = 100; // 鍐欏叆PLC鐨勬椂闂撮棿闅�
+  private static final long SEND_INTERVAL = 2000; // 鍙戦�佹秷鎭殑鏃堕棿闂撮殧
+  private static final long WRITE_INTERVAL = 100; // 鍐欏叆PLC鐨勬椂闂撮棿闅�
 
-    @Override
-    public void run() {
-        try {
-            // 鍙戦�佷竴娆℃秷鎭�
-            sendMessages();
+  @Override
+  public void run() {
+    try {
+      // 鍙戦�佷竴娆℃秷鎭�
+      sendMessages();
 
-            // 寤惰繜涓�娈垫椂闂�
-            Thread.sleep(SEND_INTERVAL);
+      // 寤惰繜涓�娈垫椂闂�
+      Thread.sleep(SEND_INTERVAL);
 
-            while (true) {
-                // 鍐欏叆PLC
-                writeToPlc();
-                Thread.sleep(WRITE_INTERVAL);
+      while (true) {
+        // 鍐欏叆PLC
+        writeToPlc();
+        Thread.sleep(WRITE_INTERVAL);
 
-                // 鍙戦�佹秷鎭�
-                sendMessages();
-                Thread.sleep(SEND_INTERVAL);
-            }
+        // 鍙戦�佹秷鎭�
+        sendMessages();
+        Thread.sleep(SEND_INTERVAL);
+      }
 
-        } catch (InterruptedException e) {
+    } catch (InterruptedException e) {
+      e.printStackTrace();
+    }
+  }
+
+  private void sendMessages() {
+    WebSocketServer sendwServer = WebSocketServer.sessionMap.get("action");
+    if (sendwServer != null) {
+
+      List<Boolean> paramlist = S7control.getinstance().ReadBits("DB100.DBW", 12);
+      // new short[]{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0,
+      // 1, 0}
+      JSONObject jsonObject = new JSONObject();
+      jsonObject.append("params",
+          new short[] { 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0 });
+
+      sendwServer.sendMessage(jsonObject.toString());
+    }
+
+  }
+
+  private void writeToPlc() {
+    WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("action");
+    if (webSocketServer != null) {
+      List<String> messages = webSocketServer.getMessages();
+
+      String addressList = "DB100.DBW0";
+
+      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();
-        }
-    }
-
-
-    private void sendMessages() {
-        WebSocketServer sendwServer = WebSocketServer.sessionMap.get("action");
-        if (sendwServer != null) {
-
-            List<Boolean> paramlist = S7control.getinstance().ReadBits("DB100.DBW", 12);
-            //        new short[]{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0}
-            JSONObject jsonObject = new JSONObject();
-            jsonObject.append("params", new short[]{1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0});
-
-            sendwServer.sendMessage(jsonObject.toString());
+          }
         }
 
-
-
-
-    }
-
-    private void writeToPlc() {
-        WebSocketServer webSocketServer = WebSocketServer.sessionMap.get("action");
-        if (webSocketServer != null) {
-            List<String> messages = webSocketServer.getMessages();
-
-            String addressList = "DB100.DBW0";
-
-            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();
-                    }
-                }
-
-                // 灏嗘秷鎭�艰浆鎹负甯冨皵鍒楄〃
-                List<Boolean> messageBooleans = new ArrayList<>();
-                for (Integer value : messageValues) {
-                    messageBooleans.add(value == 0 ? true : false);
-                }
-
-                // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
-                S7control.getinstance().WriteBit(addressList, messageBooleans);
-                System.out.println("messageValues锛�" + messageBooleans);
-                System.out.println("addressList锛�" + addressList);
-
-                // 娓呯┖娑堟伅鍒楄〃
-                webSocketServer.clearMessages();
-            }
+        // 灏嗘秷鎭�艰浆鎹负甯冨皵鍒楄〃
+        List<Boolean> messageBooleans = new ArrayList<>();
+        for (Integer value : messageValues) {
+          messageBooleans.add(value == 0 ? true : false);
         }
-    }
 
-    private List<Boolean> paramList() {
-        // 鑾峰彇鍙傛暟鍒楄〃鐨勯�昏緫
+        // 灏嗗竷灏斿垪琛ㄥ啓鍏� PLC
+        S7control.getinstance().WriteBit(addressList, messageBooleans);
+        System.out.println("messageValues锛�" + messageBooleans);
+        System.out.println("addressList锛�" + addressList);
 
-        return new ArrayList<>(); // 鍋囪杩斿洖绌哄垪琛�
+        // 娓呯┖娑堟伅鍒楄〃
+        webSocketServer.clearMessages();
+      }
     }
+  }
+
+  private List<Boolean> paramList() {
+    // 鑾峰彇鍙傛暟鍒楄〃鐨勯�昏緫
+
+    return new ArrayList<>(); // 鍋囪杩斿洖绌哄垪琛�
+  }
 }
\ No newline at end of file
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 6450dc5..c6ce249 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
@@ -7,6 +7,7 @@
 import org.springframework.context.ConfigurableApplicationContext;
 
 import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.alarmmg;
 import com.example.springboot.mapper.HomeMapper;
 
 public class Plchome extends Thread {
@@ -42,7 +43,9 @@
             List<StorageCage> tasklist2=homeMapper.selectinout(3);
             jsonObject.append("tasklist1", tasklist1);
             jsonObject.append("tasklist2", tasklist2);
-
+            //鏌ヨ鎶ヨ淇℃伅
+            List<alarmmg> alarmmg=homeMapper.SelectAlarmmgInfo();
+            jsonObject.append("alarmmg", alarmmg);
             //璇诲幓Plc杩涚墖杞︿笌鍑虹墖杞︿綅缃�
             // List<String> addressList = new ArrayList<>();
             // addressList.add("DB100.DBW0");
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 f21eb5f..4216a59 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
@@ -10,6 +10,7 @@
 import com.example.springboot.service.HomeService;
 import com.example.springboot.common.Result;
 import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.alarmmg;
 
 import org.springframework.web.bind.annotation.*;
 
@@ -81,12 +82,24 @@
     }
 
     @GetMapping("/UpdateTask")
-    public Result UpdateTask(Integer types,Integer shelf_rack){
+    public Result UpdateTask(Integer types,Integer shelfrack){
         Map<String, Object> map = new HashMap<>();
-        homeMapper.UpdateTask(types,shelf_rack);
-        map.put("message2","200");
+        homeMapper.UpdateTask(types,shelfrack);
+        if(types==0){
+            homeMapper.UpdateCageTask1(shelfrack);
+        }else{
+            homeMapper.UpdateCageTask2(shelfrack);
+        }
+        map.put("message3","200");
         return Result.success(map);
     }
 
+    @GetMapping("/SelectAlarmmgInfo")    
+    public Result SelectAlarmmgInfo(){
+        List<alarmmg> alarmmg=homeMapper.SelectAlarmmgInfo();
+        Map<String, Object> map = new HashMap<>();
+        map.put("alarmmg",alarmmg);
+        return Result.success(map);
+    }
     
 }
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 fd4f6b4..c0ea329 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
@@ -3,11 +3,13 @@
 import org.apache.ibatis.annotations.*;
 
 import com.example.springboot.entity.StorageCage;
+import com.example.springboot.entity.alarmmg;
 
 import java.util.List;
 
 @Mapper
 public interface HomeMapper {
+  //鏌ヨ姣忎釜绗煎瓙鐨勪娇鐢ㄦ儏鍐�
   @Select("SELECT cage,round(round(sum(state)/42,2)*100) as cell,42-sum(state) as state FROM storage_cage group by cage")
   List<StorageCage> selectAll();
 
@@ -48,6 +50,18 @@
   short SelectOutTask();
 
   // 鎵嬪姩瀹屾垚浠诲姟
-  @Select("update storage_task set state=1 where shelf_rack=#{shelf_rack} and task_type=#{task_type} and task_state=0")
-  short UpdateTask(@Param("task_type") Integer task_type, @Param("shelf_rack") Integer shelf_rack);
+  @Update("update storage_task set task_state=1 where shelf_rack=#{shelf_rack} and task_type=#{task_type} and task_state=0")
+  void UpdateTask(@Param("task_type") Integer task_type, @Param("shelf_rack") Integer shelf_rack);
+
+  // 鎵嬪姩瀹屾垚杩涚墖浠诲姟淇敼绗煎瓙鏁版嵁
+  @Update("update storage_cage set state=1 where cell=#{cell} and state=2")
+  void UpdateCageTask1(@Param("cell") Integer cell);
+
+  // 鎵嬪姩瀹屾垚鍑虹墖浠诲姟淇敼绗煎瓙鏁版嵁
+  @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null,coating=null where cell=#{cell} and state=2")
+  void UpdateCageTask2(@Param("cell") Integer cell);
+
+  //鑾峰彇鎶ヨ淇℃伅
+  @Select("select * from alarmmg where endTime is null")
+  List<alarmmg> SelectAlarmmgInfo();
 }

--
Gitblit v1.8.0