From 254899911b6ca9b2e6085060902990cff8c84ef0 Mon Sep 17 00:00:00 2001
From: clll <1320612696@qq.com>
Date: 星期五, 27 十月 2023 16:33:19 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10101/r/CanadaMes

---
 CanadaMes-ui/src/api/rolePermission.js                                                        |   20 
 CanadaMes-ui/src/views/role/index.vue                                                         |  136 +++
 CanadaMes-ui/vue.config.js                                                                    |    2 
 CanadaMes-ui/src/views/home/index.vue                                                         | 1345 ++++++++++++++++++++++---------------------
 CanadaMes-ui/src/views/user/index.vue                                                         |    2 
 springboot-vue3/src/main/java/com/example/springboot/mapper/HomeMapper.java                   |   12 
 CanadaMes-ui/src/layout/index.vue                                                             |    4 
 springboot-vue3/src/main/java/com/example/springboot/controller/HomeController.java           |   39 
 springboot-vue3/src/main/java/com/example/springboot/entity/Role.java                         |    3 
 springboot-vue3/pom.xml                                                                       |   12 
 CanadaMes-ui/src/api/home.js                                                                  |    8 
 springboot-vue3/src/main/java/com/example/springboot/controller/RoleController.java           |    3 
 springboot-vue3/src/main/java/com/example/springboot/mapper/RolePermissionMapper.java         |   21 
 CanadaMes-ui/src/img/xmjc.png                                                                 |    0 
 springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java |  187 ++++-
 springboot-vue3/src/main/resources/application.properties                                     |    4 
 CanadaMes-ui/src/lang/locales/en-US.json                                                      |    8 
 springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java               |    5 
 CanadaMes-ui/src/api/role.js                                                                  |    8 
 19 files changed, 1,058 insertions(+), 761 deletions(-)

diff --git a/CanadaMes-ui/src/api/home.js b/CanadaMes-ui/src/api/home.js
index ac639c6..5f8aaad 100644
--- a/CanadaMes-ui/src/api/home.js
+++ b/CanadaMes-ui/src/api/home.js
@@ -123,3 +123,11 @@
         data
     })
 }
+
+export function SelectGlass(orderid) {
+    return request({
+        url: '/home/SelectGlass?orderid=' + orderid,
+        method: 'post',
+        data:""
+    })
+}
diff --git a/CanadaMes-ui/src/api/role.js b/CanadaMes-ui/src/api/role.js
index 55da730..14527eb 100644
--- a/CanadaMes-ui/src/api/role.js
+++ b/CanadaMes-ui/src/api/role.js
@@ -13,7 +13,13 @@
     })
 }
 
-
+export function saveOrUpdate2(data) {
+    return request({
+        url: '/api/role/saveOrUpdate2',
+        method: 'post',
+        data
+    })
+}
 
 /**
  * 鏍规嵁id鍒犻櫎瑙掕壊
diff --git a/CanadaMes-ui/src/api/rolePermission.js b/CanadaMes-ui/src/api/rolePermission.js
index bf909d7..3a3e370 100644
--- a/CanadaMes-ui/src/api/rolePermission.js
+++ b/CanadaMes-ui/src/api/rolePermission.js
@@ -1,3 +1,7 @@
+
+
+
+
 import request from "../utils/request";
 
 /**
@@ -51,3 +55,19 @@
         params: data
     })
 }
+
+export function getById2(data) {
+    return request({
+        url: '/api/rolePermission/getByRoleId',
+        method: 'get',
+        params: data
+    })
+}
+
+export function saveOrUpdate2(data) {
+    return request({
+        url: '/api/rolePermission/savePermissions',
+        method: 'post',
+        data
+    })
+}
\ No newline at end of file
diff --git a/CanadaMes-ui/src/img/xmjc.png b/CanadaMes-ui/src/img/xmjc.png
index 3a682f5..5935f14 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 60e56b0..994ccc2 100644
--- a/CanadaMes-ui/src/lang/locales/en-US.json
+++ b/CanadaMes-ui/src/lang/locales/en-US.json
@@ -240,7 +240,7 @@
   "width":"width",
   "Operate":"Operate",
   "end task":"end task",
-  "cancal":"cancal",
+  "cancel":"cancel",
   "confirm":"confirm",
   "number":"number",
   "Outfeed Barcodid":"Outfeed Barcodid",
@@ -288,6 +288,10 @@
   "Disable":"Disable",
   "Usage":"Usage",
   "Space (Pieces)":"Space (Pieces)",
-  "This glass is already in the cage":"This glass is already in the cage"
+  "This glass is already in the cage":"This glass is already in the cage",
+  "Enter the Order lD":"Enter the Order lD",
+  "OrderInfo":"OrderInfo",
+  "Query":"Query",
+  "permission update":"permission update"
 
 }
\ No newline at end of file
diff --git a/CanadaMes-ui/src/layout/index.vue b/CanadaMes-ui/src/layout/index.vue
index fa2c7b6..c235d51 100644
--- a/CanadaMes-ui/src/layout/index.vue
+++ b/CanadaMes-ui/src/layout/index.vue
@@ -157,9 +157,7 @@
     goToHome() {
       this.$router.push('/home');
     },
-    youhua() {
-      this.$router.push('/device/talk');
-    },
+  
     ...mapMutations('tags', ['addTag', 'removeTag', 'switchTag']),
     addTag(router) {
   let submenuItem;
diff --git a/CanadaMes-ui/src/views/home/index.vue b/CanadaMes-ui/src/views/home/index.vue
index 0c25867..ec6e292 100644
--- a/CanadaMes-ui/src/views/home/index.vue
+++ b/CanadaMes-ui/src/views/home/index.vue
@@ -1,276 +1,282 @@
 <style>
 * {
-  margin: 0;
-  padding: 0;
+    margin: 0;
+    padding: 0;
 }
 
 .occupy {
-  height: 100%;
-  width: 10%;
-  background-color: white;
-  margin: 0px 8px 0px 8px;
-  border: 1px #EBEEF5 solid;
-  text-align: center;
-  padding: 5px;
+    height: 100%;
+    width: 10%;
+    background-color: white;
+    margin: 0px 8px 0px 8px;
+    border: 1px #EBEEF5 solid;
+    text-align: center;
+    padding: 5px;
 }
 
 .el-col {
-  margin-top: 4px;
+    margin-top: 4px;
 }
 
 .biao {
-  font-size: 12px;
+    font-size: 12px;
 }
 
 .zhi {
-  font-size: 18px;
-  font-weight: bold;
+    font-size: 18px;
+    font-weight: bold;
 }
 
 .el-main {
-  padding: 3px;
-  min-height: 40vh;
+    padding: 3px;
+    min-height: 40vh;
 }
 
 .el-footer {
-  max-height: 60vh;
-  padding: 0px;
-  margin: 0px;
+    max-height: 60vh;
+    padding: 0px;
+    margin: 0px;
 }
 
 .green {
-  background-color: green;
+    background-color: green;
 }
 
 .blue {
-  background-color: blue;
+    background-color: blue;
 }
 
 .red {
-  background-color: red;
+    background-color: red;
 }
 
 .yellow {
-  background-color: yellow;
+    background-color: yellow;
 }
 
 .black {
-  background-color: black;
+    background-color: black;
 }
 
 .gezi {
-  height: 35px;
+    height: 35px;
 
-  position: absolute;
-  width: 3.08px;
-  /* width: 4.22px; */
+    position: absolute;
+    width: 3.08px;
+    /* width: 4.22px; */
 }
-
-
 
 .blocks {
 
 
-  background-image: url('../../img/xmjclzh.png');
-  margin: 0 auto;
-  background-repeat: no-repeat;
-  background-attachment: local;
-  width: 1660px;
-  min-height: 55vh;
-  max-width: 94vw;
-  background-size: 1200px 510px;
-  /* max-width: 100vw;
+    background-image: url('../../img/xmjc.png');
+    margin: 0 auto;
+    background-repeat: no-repeat;
+    background-attachment: local;
+    width: 1660px;
+    min-height: 55vh;
+    max-width: 94vw;
+    background-size: 1200px 510px;
+    /* max-width: 100vw;
     background-size: 1660px 560px; */
 
 
 }
 
 .blocks-img {
-  height: 100px;
-  max-width: 100vw;
-  background-repeat: no-repeat;
-  background-attachment: local;
-  width: 32px;
-  position: absolute;
-  background-image: url('../../img/bigcar01.png');
-  background-size: 40px 87px;
-  /* background-size: 46px 94px; */
+    height: 100px;
+    max-width: 100vw;
+    background-repeat: no-repeat;
+    background-attachment: local;
+    width: 32px;
+    position: absolute;
+    background-image: url('../../img/bigcar01.png');
+    background-size: 40px 87px;
+    /* background-size: 46px 94px; */
 }
 
 .blocks-img2 {
-  height: 100px;
-  max-width: 100vw;
-  background-repeat: no-repeat;
-  background-attachment: local;
-  width: 100px;
-  position: absolute;
-  background-image: url('../../img/dipan.png');
-  background-size: 70px 85px;
-  left: 654px;
-  top: 333px;
-  /* background-size: 85px 100px;
+    height: 100px;
+    max-width: 100vw;
+    background-repeat: no-repeat;
+    background-attachment: local;
+    width: 100px;
+    position: absolute;
+    background-image: url('../../img/dipan.png');
+    background-size: 70px 85px;
+    left: 654px;
+    top: 333px;
+    /* background-size: 85px 100px;
     left: 912px;
     top: 366px; */
 }
 
+.orderbutton {
+    position: absolute;
+    left: 1070px;
+    top: 70px;
+}
+
 .blocks-img3 {
-  height: 90px;
-  max-width: 100vw;
-  background-repeat: no-repeat;
-  background-attachment: local;
-  width: 160px;
-  position: absolute;
-  background-image: url('../../img/taimian.png');
-  background-size: 120px 30px;
-  left: 630px;
-  top: 420px;
-  /* background-size: 160px 40px;
+    height: 90px;
+    max-width: 100vw;
+    background-repeat: no-repeat;
+    background-attachment: local;
+    width: 160px;
+    position: absolute;
+    background-image: url('../../img/taimian.png');
+    background-size: 120px 30px;
+    left: 630px;
+    top: 420px;
+    /* background-size: 160px 40px;
     left: 875px;
     top: 455px;  */
 }
 
 .el-table td,
 .el-table th {
-  padding: 5px 0;
+    padding: 5px 0;
 }
 
 .el-table__empty-block {
-  min-height: 41px;
+    min-height: 41px;
 }
 
 .el-table__empty-text {
-  line-height: 41px;
+    line-height: 41px;
 }
 
 .box {
-  width: 90%;
-  margin-left: 5%;
-  color: red;
-  font-size: 12px;
-  overflow: hidden;
-  height: 20px;
-  /* height: 35px; */
+    width: 90%;
+    margin-left: 5%;
+    color: red;
+    font-size: 12px;
+    overflow: hidden;
+    height: 20px;
+    /* height: 35px; */
 }
 
 .text {
-  width: auto;
+    width: auto;
 
-  white-space: nowrap;
-  animation: textScroll 20s linear infinite;
-  margin: 0 auto;
-  line-height: 20px;
-  /* line-height: 35px; */
+    white-space: nowrap;
+    animation: textScroll 20s linear infinite;
+    margin: 0 auto;
+    line-height: 20px;
+    /* line-height: 35px; */
 }
 
 @keyframes textScroll {
-  0% {
-    transform: translateX(100%);
-  }
+    0% {
+        transform: translateX(100%);
+    }
 
-  100% {
-    transform: translateX(-150%);
-  }
+    100% {
+        transform: translateX(-150%);
+    }
 }
 
 .el-dialog {
-  width: 90%;
+    width: 90%;
 }
 </style>
 <template>
-  <el-container>
-    <!-- <el-header style="padding: 10px;"></el-header> -->
-    <el-main>
-      <div class="box" @click="dialogFormVisible2 = true">
-        <div class="text">
-          <!-- Alarm: -->
-          {{ this.text }}
-          <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="$t('Enter the glass lD')" v-model="glassid"></el-input>
-        <el-button type="primary" @click="showform(1)">{{ $t('Infeed barcodid') }}</el-button>
-        <el-input style="width:15%;" :placeholder="$t('Enter the order number')" v-model="order"></el-input>
-        <el-button type="warning" @click="showform1();">{{ $t('Exit the glass by order number') }}</el-button>
-      </div>
-      <div>
-        <el-table :data="this.tasklist1" border style="width: 100%">
-          <el-table-column :width="130" prop="cage" :label="$t('The Cage number being used')"></el-table-column>
-          <el-table-column :width="130" prop="cell" :label="$t('The Slot number being used')"></el-table-column>
-          <el-table-column :width="150" prop="glassId" :label="$t('Outfeed Barcodid')"></el-table-column>
-          <el-table-column :width="130" prop="orderId" :label="$t('Order Nmuber')"></el-table-column>
-          <el-table-column prop="list" :label="$t('List Number')"></el-table-column>
-          <el-table-column prop="box" :label="$t('Box Number')"></el-table-column>
-          <el-table-column prop="lengthWidth" :label="$t('Length and Width')"></el-table-column>
-          <el-table-column :label="$t('Operate')">
-            <template slot-scope='scope'>
-              <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                @click="endtask(1, scope.row.glassId, scope.row.cell)">{{ $t('end task') }}</el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-        <el-table :data="this.tasklist2" border style="width: 100%">
-          <el-table-column :width="130" prop="cage" :label="$t('The Cage number being used')"></el-table-column>
-          <el-table-column :width="130" prop="cell" :label="$t('The Slot number being used')"></el-table-column>
-          <el-table-column :width="150" prop="glassId" :label="$t('Infeed Barcodid')"></el-table-column>
-          <el-table-column :width="130" prop="orderId" :label="$t('Order Nmuber')"></el-table-column>
-          <el-table-column prop="list" :label="$t('List Number')"></el-table-column>
-          <el-table-column prop="box" :label="$t('Box Number')"></el-table-column>
-          <el-table-column prop="lengthWidth" :label="$t('Length and Width')"></el-table-column>
-          <el-table-column :label="$t('Operate')">
-            <template slot-scope='scope'>
-              <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-                @click="endtask(0, scope.row.glassId, scope.row.cell)">{{ $t('end task') }}</el-button>
-            </template>
-          </el-table-column>
-        </el-table>
-      </div>
-      <div style="padding: 10px;display: flex;height:85px;">
-        <div v-for="item in tableData" :key="item['cageno']" class="occupy">
-          <el-col style="text-align:left;font-weight: bold;">#{{ item['cage'] }}</el-col>
-          <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
-            <span class="biao">{{ $t('Usage') }}</span><span class="zhi">{{ item['cell'] }}%</span>
-          </el-col>
-          <hr style="width:80%;margin: 0 auto;" />
-          <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
-            <span class="biao">{{ $t('Space (Pieces)') }}</span><span class="zhi">{{ item['state'] }}</span>
-          </el-col>
-        </div>
-      </div>
-    </el-main>
-    <el-footer>
-      <div class="blocks" style="position: relative;">
-        <div style="display:flex;position: absolute;float:left;z-index: 999;top:102px;left:237px;">
-          <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist1" :key="item['date']"
-            :style="{ height: 35 * item['glassWidth'] + 'px', left: 3.07 * index + Math.abs(item['cage'] - 10) * 6.8 + 'px' }"
-            @click="showcageinfo(item['cage'])"></div>
-        </div>
-        <div style="display:flex;position: absolute;float:left;z-index: 999;top:102px;left:640px;">
-          <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist2" :key="item['date']"
-            :style="{ height: 35 * item['glassWidth'] + 'px', left: 3.07 * index + Math.abs(item['cage'] - 5) * 6.8 + 'px' }"
-            @click="showcageinfo(item['cage'])"></div>
-        </div>
-        <div style="display:flex;position: absolute;float:left;z-index: 999;top:139px;left:237px;">
-          <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist3" :key="item['date']"
-            :style="{ height: 35 * item['glassWidth'] + 'px', top: item['width'] * 35 - 35 + 'px', left: 3.07 * index + Math.abs(item['cage'] - 10) * 6.8 + 'px' }"
-            @click="showcageinfo(item['cage'])">
-          </div>
-        </div>
-        <div style="display:flex;position: absolute;float:left;z-index: 999;top:139px;left:640px;">
-          <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist4" :key="item['date']"
-            :style="{ height: 35 * item['glassWidth'] + 'px', top: item['width'] * 35 - 35 + 'px', left: 3.07 * index + Math.abs(item['cage'] - 5) * 6.8 + 'px' }"
-            @click="showcageinfo(item['cage'])"></div>
-        </div>
-        <div class="blue gezi"
-          :style="{ display: 'flex', position: 'absolute', float: 'left', top: 105 + 'px', left: 1050 + 'px', height: loadglassheight + 'px', width: 5 + 'px' }">
-        </div>
-        <div class="blocks-img" :style="{ left: car1 + 'px', top: '16px' }"></div>
-        <div class="blocks-img" :style="{ left: car2 + 'px', top: '175px' }"></div>
-        <div class="blocks-img2"></div>
-        <div class="blocks-img3"></div>
-        <!-- <div style="display:flex;position: absolute;float:left;z-index: 999;top:112px;left:328px;">
+    <el-container>
+        <!-- <el-header style="padding: 10px;"></el-header> -->
+        <el-main>
+            <div class="box" @click="dialogFormVisible2 = true">
+                <div class="text">
+                    <!-- Alarm: -->
+                    {{ this.text }}
+                    <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="$t('Enter the glass lD')" v-model="glassid"></el-input>
+                <el-button type="primary" @click="showform(1)">{{ $t('Infeed barcodid') }}</el-button>
+                <el-input style="width:15%;" :placeholder="$t('Enter the order number')" v-model="order"></el-input>
+                <el-button type="warning" @click="showform1();">{{ $t('Exit the glass by order number') }}</el-button>
+            </div>
+            <div>
+                <el-table :data="this.tasklist1" border style="width: 100%">
+                    <el-table-column :width="130" prop="cage" :label="$t('The Cage number being used')"></el-table-column>
+                    <el-table-column :width="130" prop="cell" :label="$t('The Slot number being used')"></el-table-column>
+                    <el-table-column :width="150" prop="glassId" :label="$t('Outfeed Barcodid')"></el-table-column>
+                    <el-table-column :width="130" prop="orderId" :label="$t('Order Nmuber')"></el-table-column>
+                    <el-table-column prop="list" :label="$t('List Number')"></el-table-column>
+                    <el-table-column prop="box" :label="$t('Box Number')"></el-table-column>
+                    <el-table-column prop="lengthWidth" :label="$t('Length and Width')"></el-table-column>
+                    <el-table-column :label="$t('Operate')">
+                        <template slot-scope='scope'>
+                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                                @click="endtask(1, scope.row.glassId, scope.row.cell)">{{ $t('end task') }}</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+                <el-table :data="this.tasklist2" border style="width: 100%">
+                    <el-table-column :width="130" prop="cage" :label="$t('The Cage number being used')"></el-table-column>
+                    <el-table-column :width="130" prop="cell" :label="$t('The Slot number being used')"></el-table-column>
+                    <el-table-column :width="150" prop="glassId" :label="$t('Infeed Barcodid')"></el-table-column>
+                    <el-table-column :width="130" prop="orderId" :label="$t('Order Nmuber')"></el-table-column>
+                    <el-table-column prop="list" :label="$t('List Number')"></el-table-column>
+                    <el-table-column prop="box" :label="$t('Box Number')"></el-table-column>
+                    <el-table-column prop="lengthWidth" :label="$t('Length and Width')"></el-table-column>
+                    <el-table-column :label="$t('Operate')">
+                        <template slot-scope='scope'>
+                            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                                @click="endtask(0, scope.row.glassId, scope.row.cell)">{{ $t('end task') }}</el-button>
+                        </template>
+                    </el-table-column>
+                </el-table>
+            </div>
+            <div style="padding: 10px;display: flex;height:85px;">
+                <div v-for="item in tableData" :key="item['cageno']" class="occupy">
+                    <el-col style="text-align:left;font-weight: bold;">#{{ item['cage'] }}</el-col>
+                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+                        <span class="biao">{{ $t('Usage') }}</span><span class="zhi">{{ item['cell'] }}%</span>
+                    </el-col>
+                    <hr style="width:80%;margin: 0 auto;" />
+                    <el-col style="text-align:left;display:flex;justify-content: space-between;align-items: center;">
+                        <span class="biao">{{ $t('Space (Pieces)') }}</span><span class="zhi">{{ item['state'] }}</span>
+                    </el-col>
+                </div>
+            </div>
+        </el-main>
+        <el-footer>
+            <div class="blocks" style="position: relative;">
+                <div style="display:flex;position: absolute;float:left;z-index: 999;top:102px;left:237px;">
+                    <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist1" :key="item['date']"
+                        :style="{ height: 35 * item['glassWidth'] + 'px', left: 3.07 * index + Math.abs(item['cage'] - 10) * 6.8 + 'px' }"
+                        @click="showcageinfo(item['cage'])"></div>
+                </div>
+                <div style="display:flex;position: absolute;float:left;z-index: 999;top:102px;left:640px;">
+                    <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist2" :key="item['date']"
+                        :style="{ height: 35 * item['glassWidth'] + 'px', left: 3.07 * index + Math.abs(item['cage'] - 5) * 6.8 + 'px' }"
+                        @click="showcageinfo(item['cage'])"></div>
+                </div>
+                <div style="display:flex;position: absolute;float:left;z-index: 999;top:139px;left:237px;">
+                    <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist3" :key="item['date']"
+                        :style="{ height: 35 * item['glassWidth'] + 'px', top: item['width'] * 35 - 35 + 'px', left: 3.07 * index + Math.abs(item['cage'] - 10) * 6.8 + 'px' }"
+                        @click="showcageinfo(item['cage'])">
+                    </div>
+                </div>
+                <div style="display:flex;position: absolute;float:left;z-index: 999;top:139px;left:640px;">
+                    <div :class="getStatusClass(item.state)" v-for="(item, index) in cagelist4" :key="item['date']"
+                        :style="{ height: 35 * item['glassWidth'] + 'px', top: item['width'] * 35 - 35 + 'px', left: 3.07 * index + Math.abs(item['cage'] - 5) * 6.8 + 'px' }"
+                        @click="showcageinfo(item['cage'])"></div>
+                </div>
+                <div class="blue gezi"
+                    :style="{ display: 'flex', position: 'absolute', float: 'left', top: 105 + 'px', left: 1050 + 'px', height: loadglassheight + 'px', width: 5 + 'px' }">
+                </div>
+                <div class="blocks-img" :style="{ left: car1 + 'px', top: '16px' }"></div>
+                <div class="blocks-img" :style="{ left: car2 + 'px', top: '175px' }"></div>
+                <div class="blocks-img2"></div>
+                <div class="blocks-img3"></div>
+                <el-button class="orderbutton" type="primary" @click="showform2()">{{ $t('OrderInfo') }}</el-button>
+
+                <!-- <div style="display:flex;position: absolute;float:left;z-index: 999;top:112px;left:328px;">
                     <div :class="getStatusClass(item.state)" v-for="(item,index) in cagelist1" :key="item['date']"
                         :style="{ height: 35 * item['glassWidth'] + 'px',left:4.22*index+'px' }"
                         @click="showcageinfo(item['cage'])"></div>
@@ -294,499 +300,528 @@
                 <div class="blocks-img" :style="{ left: car2 + 'px', top: '194px' }"></div>
                 <div class="blocks-img2" :style="{ left: '912px', top: '366px' }"></div>
                 <div class="blocks-img3" :style="{ left: '875px', top: '455px' }"></div> -->
+            </div>
+        </el-footer>
+        <el-dialog :visible.sync="dialogFormVisible" :title="$t('Please confirm the glass information')">
+            <el-form :model="form" label-width="100px" style="padding-right: 30px">
 
-      </div>
-    </el-footer>
-    <el-dialog :visible.sync="dialogFormVisible" :title="$t('Please confirm the glass information')">
-      <el-form :model="form" label-width="100px" style="padding-right: 30px">
+                <el-form-item :label="$t('Barcodid')">
+                    <el-input style="width:15%;" :placeholder="$t('Enter the glass lD')" v-model="glassid"></el-input>
+                    <el-button type="primary" @click="showform(3)">{{ $t('Query') }}</el-button>
+                </el-form-item>
+                <el-form-item :label="$t('order')">
+                    <el-input v-model="form.orderId" readonly autocomplete="off" />
+                </el-form-item>
+                <el-form-item :label="$t('length')">
+                    <el-input v-model="form.height" readonly autocomplete="off" />
+                </el-form-item>
+                <el-form-item :label="$t('width')">
+                    <el-input v-model="form.width" readonly autocomplete="off" />
+                </el-form-item>
+                <el-form-item :label="$t('Barcodid')">
+                    <el-input v-model="form.glassId" readonly autocomplete="off" />
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="sbumitglassid()" :style="{ display: confirm1 == true ? '' : 'none' }"
+                        type="primary">{{
+                            $t('confirm') }}</el-button>
+                    <el-button @click="FeedInglassid()" :style="{ display: confirm2 == true ? '' : 'none' }"
+                        type="primary">{{
+                            $t('confirm') }}</el-button>
+                    <el-button @click="cancel()">{{ $t('cancel') }}</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <el-dialog :visible.sync="dialogFormVisible1" :title="$t('Please confirm the Ordering Information')">
+            <el-form :model="form1" label-width="100px" style="padding-right: 30px">
+                <el-form-item :label="$t('order')">
+                    <el-input v-model="form1.order" autocomplete="off" />
+                </el-form-item>
+                <el-form-item :label="$t('number')">
+                    <el-input v-model="form1.number" autocomplete="off" />
+                </el-form-item>
+            </el-form>
+            <template #footer>
+                <span class="dialog-footer">
+                    <el-button @click="getOrder();" type="primary">{{ $t('confirm') }}</el-button>
+                    <el-button @click="cancel1()">{{ $t('cancel') }}</el-button>
+                </span>
+            </template>
+        </el-dialog>
+        <el-dialog :visible.sync="dialogFormVisible2" :title="$t('Alarm Information')">
+            <el-table :data="this.alarm" border style="width: 100%;">
+                <el-table-column prop="id" :label="$t('id')"></el-table-column>
+                <el-table-column prop="content" :label="$t('content')"></el-table-column>
+                <el-table-column prop="timeons" :label="$t('timeon')"></el-table-column>
+                <el-table-column prop="endTime" :label="$t('endTime')"></el-table-column>
+            </el-table>
+        </el-dialog>
+        <el-dialog :visible.sync="dialogFormVisible3" :title="$t('Cage Details')" top="5vh">
+            <el-table :data="this.cageinfo" :height="700" border style="width: 100%;overflow: auto;">
+                <el-table-column :width="90" prop="cage" :label="$t('The Cage number')"></el-table-column>
+                <el-table-column :width="90" prop="cell" :label="$t('The Slot Number')"></el-table-column>
+                <el-table-column :width="55" prop="tier" :label="$t('The Side')"></el-table-column>
+                <el-table-column :width="100" prop="glassId" :label="$t('Barcodid')"></el-table-column>
+                <el-table-column :width="100" prop="orderId" :label="$t('Order Number')"></el-table-column>
+                <el-table-column :width="100" prop="list" :label="$t('List Number')"></el-table-column>
+                <el-table-column :width="100" prop="box" :label="$t('Box Number')"></el-table-column>
+                <el-table-column :width="170" prop="lengthWidth" :label="$t('Length and Width')"></el-table-column>
+                <el-table-column :width="280" :label="$t('Operate')">
+                    <template slot-scope='scope'>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            @click="deleteglass(scope.row.glassId, scope.row.state)">{{ $t('delete') }}</el-button>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            @click="outglass(scope.row.glassId, scope.row.state)">{{ $t('out') }}</el-button>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            @click="UpdateDisabled(scope.row.cage, scope.row.cell, scope.row.disabled == 0 ? 1 : 0)">
+                            {{ scope.row.disabled == 0 ? $t('Enable') : $t('Disable') }}</el-button>
+                        <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
+                            @click="insertglass(scope.row.cage, scope.row.cell, scope.row.tier)">{{ $t('increase')
+                            }}</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+        </el-dialog>
+        <el-dialog :visible.sync="dialogFormVisible4" :title="$t('OrderInfo')" top="5vh">
+            <el-input style="width:15%;" :placeholder="$t('Enter the Order lD')" v-model="orderid"></el-input>
+            <el-button type="primary" @click="selectglassinfo()">{{ $t('Query') }}</el-button>
+            <el-table :data="this.GlassInfo" :height="700" border style="width: 100%;overflow: auto;">
 
-        <el-form-item :label="$t('Barcodid')">
-          <el-input style="width:15%;" :placeholder="$t('Enter the glass lD')" v-model="glassid"></el-input>
-          <el-button type="primary" @click="showform(3)">query</el-button>
-        </el-form-item>
-        <el-form-item :label="$t('order')">
-          <el-input v-model="form.orderId" readonly autocomplete="off" />
-        </el-form-item>
-        <el-form-item :label="$t('length')">
-          <el-input v-model="form.height" readonly autocomplete="off" />
-        </el-form-item>
-        <el-form-item :label="$t('width')">
-          <el-input v-model="form.width" readonly autocomplete="off" />
-        </el-form-item>
-        <el-form-item :label="$t('Barcodid')">
-          <el-input v-model="form.glassId" readonly autocomplete="off" />
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-          <el-button @click="sbumitglassid()" :style="{ display: confirm1 == true ? '' : 'none' }" type="primary">{{
-            $t('confirm') }}</el-button>
-          <el-button @click="FeedInglassid()" :style="{ display: confirm2 == true ? '' : 'none' }" type="primary">{{
-            $t('confirm') }}</el-button>
-          <el-button @click="cancal()">{{ $t('cancal') }}</el-button>
-        </span>
-      </template>
-    </el-dialog>
-    <el-dialog :visible.sync="dialogFormVisible1" :title="$t('Please confirm the Ordering Information')">
-      <el-form :model="form1" label-width="100px" style="padding-right: 30px">
-        <el-form-item :label="$t('order')">
-          <el-input v-model="form1.order" autocomplete="off" />
-        </el-form-item>
-        <el-form-item :label="$t('number')">
-          <el-input v-model="form1.number" autocomplete="off" />
-        </el-form-item>
-      </el-form>
-      <template #footer>
-        <span class="dialog-footer">
-          <el-button @click="getOrder();" type="primary">{{ $t('confirm') }}</el-button>
-          <el-button @click="cancal1()">{{ $t('cancal') }}</el-button>
-        </span>
-      </template>
-    </el-dialog>
-    <el-dialog :visible.sync="dialogFormVisible2" :title="$t('Alarm Information')">
-      <el-table :data="this.alarm" border style="width: 100%;">
-        <el-table-column prop="id" :label="$t('id')"></el-table-column>
-        <el-table-column prop="content" :label="$t('content')"></el-table-column>
-        <el-table-column prop="timeons" :label="$t('timeon')"></el-table-column>
-        <el-table-column prop="endTime" :label="$t('endTime')"></el-table-column>
-      </el-table>
-    </el-dialog>
-    <el-dialog :visible.sync="dialogFormVisible3" :title="$t('Cage Details')" top="5vh">
-      <el-table :data="this.cageinfo" :height="700" border style="width: 100%;overflow: auto;">
-        <el-table-column :width="90" prop="cage" :label="$t('The Cage number')"></el-table-column>
-        <el-table-column :width="90" prop="cell" :label="$t('The Slot Number')"></el-table-column>
-        <el-table-column :width="55" prop="tier" :label="$t('The Side')"></el-table-column>
-        <el-table-column :width="100" prop="glassId" :label="$t('Barcodid')"></el-table-column>
-        <el-table-column :width="100" prop="orderId" :label="$t('Order Number')"></el-table-column>
-        <el-table-column :width="100" prop="list" :label="$t('List Number')"></el-table-column>
-        <el-table-column :width="100" prop="box" :label="$t('Box Number')"></el-table-column>
-        <el-table-column :width="170" prop="lengthWidth" :label="$t('Length and Width')"></el-table-column>
-        <el-table-column :width="280" :label="$t('Operate')">
-          <template slot-scope='scope'>
-            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-              @click="deleteglass(scope.row.glassId, scope.row.state)">{{ $t('delete') }}</el-button>
-            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-              @click="outglass(scope.row.glassId, scope.row.state)">{{ $t('out') }}</el-button>
-            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-              @click="UpdateDisabled(scope.row.cage, scope.row.cell, scope.row.disabled == 0 ? 1 : 0)">
-              {{ scope.row.disabled == 0 ? $t('Enable') : $t('Disable') }}</el-button>
-            <el-button type="primary" style="padding: 4px 10px;font-size: 12px;"
-              @click="insertglass(scope.row.cage, scope.row.cell, scope.row.tier)">{{ $t('increase')
-              }}</el-button>
-          </template>
-        </el-table-column>
-      </el-table>
-    </el-dialog>
-  </el-container>
+                <el-table-column prop="glassId" :label="$t('Barcodid')"></el-table-column>
+                <el-table-column prop="orderId" :label="$t('Order Number')"></el-table-column>
+                <el-table-column prop="width" :label="$t('length')"></el-table-column>
+                <el-table-column prop="height" :label="$t('width')"></el-table-column>
+            </el-table>
+        </el-dialog>
+    </el-container>
 </template>
 <script>
 //:disabled="scope.row.glassId > 0 || scope.row.disabled == 1 ? true : false"
 import {
-  home, home2, loadtask, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo,
-  SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist, SelectPassword, SelectGlassByGlassID, Disabled, Inglassid
+    home, home2, loadtask, InsertOrder, Addglassid, UpdateTask, SelectAlarmmgInfo,
+    SelectCageInfo, DeleteByGlassID, OutByGlassID, Loadcarlist, SelectPassword, SelectGlassByGlassID, Disabled, Inglassid, SelectGlass
 } from "../../api/home";
 
 
 import LanguageMixin from '../../lang/LanguageMixin'
 let socket;
 export default {
-  name: "Home",
-  data () {
-    return {
-      confirm1: false,
-      confirm2: false,
-      insertcage: 0,
-      insertcell: 0,
-      inserttier: 0,
-      name: 'Confirm',
-      mixins: [LanguageMixin],
-      dialogFormVisible: false,
-      dialogFormVisible1: false,
-      dialogFormVisible2: false,
-      dialogFormVisible3: false,
-      form: {
-        orderId: "",
-        glassId: "",
-        height: "",
-        width: ""
-      },
-      form1: {
-        order: "NG2210210",
-        number: 800,
-      },
-      alarm: [],
-      tableData: [],
-      cagelist1: [],
-      cagelist2: [],
-      cagelist3: [],
-      cagelist4: [],
-      task1: 3,
-      task2: 2,
-      tasklist1: [],
-      tasklist2: [],
-      order: "",
-      glassid: "",
-      url: "../../img/bigcar01.png",
-      car1: 145,
-      car2: 210,
-      // car1: 210,
-      // car2: 300,
-      cageinfo: [],
-      cage: 0,
-      carlist: [],
-      loadglassheight: 0,
-      password: 1,
-      text: "",
-      zhuangtai: ""
-    };
-  },
-  created () {
-    this.load();
-    this.init();
-  },
-  methods: {
-    init () {
-      let viewname = "Home";
-
-      if (typeof (WebSocket) == "undefined") {
-        console.log("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔WebSocket");
-      } else {
-        //console.log("鎮ㄧ殑娴忚鍣ㄦ敮鎸乄ebSocket");
-        let socketUrl = "ws://" + "localhost:8888" + "/springboot-vue3/api/talk/" + viewname;
-        if (socket != null) {
-          socket.close();
-          socket = null;
-        }
-        // 寮�鍚竴涓獁ebsocket鏈嶅姟
-        socket = new WebSocket(socketUrl);
-        //鎵撳紑浜嬩欢
-        socket.onopen = function () {
-          console.log("websocket宸叉墦寮�");
+    name: "Home",
+    data() {
+        return {
+            confirm1: false,
+            confirm2: false,
+            insertcage: 0,
+            insertcell: 0,
+            inserttier: 0,
+            name: 'Confirm',
+            mixins: [LanguageMixin],
+            dialogFormVisible: false,
+            dialogFormVisible1: false,
+            dialogFormVisible2: false,
+            dialogFormVisible3: false,
+            dialogFormVisible4: false,
+            form: {
+                orderId: "",
+                glassId: "",
+                height: "",
+                width: ""
+            },
+            form1: {
+                order: "NG2210210",
+                number: 800,
+            },
+            alarm: [],
+            tableData: [],
+            cagelist1: [],
+            cagelist2: [],
+            cagelist3: [],
+            cagelist4: [],
+            task1: 3,
+            task2: 2,
+            tasklist1: [],
+            tasklist2: [],
+            order: "",
+            glassid: "",
+            url: "../../img/bigcar01.png",
+            car1: 145,
+            car2: 210,
+            // car1: 210,
+            // car2: 300,
+            cageinfo: [],
+            cage: 0,
+            carlist: [],
+            loadglassheight: 0,
+            password: 1,
+            text: "",
+            zhuangtai: "",
+            orderid: "",
+            GlassInfo: []
         };
-        //  娴忚鍣ㄧ鏀舵秷鎭紝鑾峰緱浠庢湇鍔$鍙戦�佽繃鏉ョ殑鏂囨湰娑堟伅
-        socket.onmessage = function (msg) {
+    },
+    created() {
+        this.load();
+        this.init();
+    },
+    methods: {
+        init() {
+            let viewname = "Home";
 
-          //console.log("鏀跺埌鏁版嵁====" + msg.data);
-          let obj = JSON.parse(msg.data);
-          if (obj.params != null) {
-            this.car1 = 145 + 8.15 * Math.abs(obj.params[0][0] - this.carlist[0]['start']) / Math.abs(this.carlist[0]['end'] - this.carlist[0]['start']) * 100;
-            this.car2 = 210 + 8.15 * Math.abs(obj.params[0][1] - this.carlist[1]['start']) / Math.abs(this.carlist[1]['end'] - this.carlist[1]['start']) * 100;
-            // this.car1 = 210 + 11.25 * (obj.params[0][1]-this.carlist[1]['start'])/(this.carlist[1]['end']-this.carlist[1]['start'])*100;
-            // this.car2 = 300 + 11.25 * (obj.params[0][1]-this.carlist[1]['start'])/(this.carlist[1]['end']-this.carlist[1]['start'])*100;
-          }
-          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.alarm = obj.alarmmg[0];
-          this.loadglassheight = obj.loadglassheight;
-          this.zhuangtai = obj.zhuangtai[0];
-          //if (obj.dbconnected == "false") {
-          this.text = this.$t('DataBase Connection failed');
-          // }
-          SelectCageInfo(this.cage).then(res => {
-            this.cageinfo = res.data.cageinfo;
-          });
+            if (typeof (WebSocket) == "undefined") {
+                console.log("鎮ㄧ殑娴忚鍣ㄤ笉鏀寔WebSocket");
+            } else {
+                //console.log("鎮ㄧ殑娴忚鍣ㄦ敮鎸乄ebSocket");
+                let socketUrl = "ws://" + "localhost:8888" + "/springboot-vue3/api/talk/" + viewname;
+                if (socket != null) {
+                    socket.close();
+                    socket = null;
+                }
+                // 寮�鍚竴涓獁ebsocket鏈嶅姟
+                socket = new WebSocket(socketUrl);
+                //鎵撳紑浜嬩欢
+                socket.onopen = function () {
+                    console.log("websocket宸叉墦寮�");
+                };
+                //  娴忚鍣ㄧ鏀舵秷鎭紝鑾峰緱浠庢湇鍔$鍙戦�佽繃鏉ョ殑鏂囨湰娑堟伅
+                socket.onmessage = function (msg) {
 
-          this.$forceUpdate();
+                    //console.log("鏀跺埌鏁版嵁====" + msg.data);
+                    let obj = JSON.parse(msg.data);
+                    if (obj.params != null) {
+                        this.car1 = 145 + 8.15 * Math.abs(obj.params[0][0] - this.carlist[0]['start']) / Math.abs(this.carlist[0]['end'] - this.carlist[0]['start']) * 100;
+                        this.car2 = 210 + 8.15 * Math.abs(obj.params[0][1] - this.carlist[1]['start']) / Math.abs(this.carlist[1]['end'] - this.carlist[1]['start']) * 100;
+                        // this.car1 = 210 + 11.25 * (obj.params[0][1]-this.carlist[1]['start'])/(this.carlist[1]['end']-this.carlist[1]['start'])*100;
+                        // this.car2 = 300 + 11.25 * (obj.params[0][1]-this.carlist[1]['start'])/(this.carlist[1]['end']-this.carlist[1]['start'])*100;
+                    }
+                    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.alarm = obj.alarmmg[0];
+                    this.loadglassheight = obj.loadglassheight;
+                    this.zhuangtai = obj.zhuangtai[0];
+                    //if (obj.dbconnected == "false") {
+                    this.text = this.$t('DataBase Connection failed');
+                    // }
+                    SelectCageInfo(this.cage).then(res => {
+                        this.cageinfo = res.data.cageinfo;
+                    });
+                    SelectGlass(this.orderid).then(res => {
+                        this.GlassInfo = res.data.glass;
+                    });
 
-        }.bind(this);
-        //鍏抽棴浜嬩欢
-        socket.onclose = function () {
-          console.log("websocket宸插叧闂�");
-        };
-        //鍙戠敓浜嗛敊璇簨浠�
-        socket.onerror = function () {
-          console.log("websocket鍙戠敓浜嗛敊璇�");
-        }
-      }
-    },
-    load () {
-      home().then(res => {
-        this.tableData = res.data.list;
-      });
-      home2().then(res => {
-        this.cagelist1 = res.data.list1;
-        this.cagelist2 = res.data.list2;
-        this.cagelist3 = res.data.list3;
-        this.cagelist4 = res.data.list4;
-      });
-      loadtask(this.task1).then(res => {
-        this.tasklist1 = res.data.list;
-        if (res.data.list.length > 0) {
-          this.incell = this.tasklist1[0]['cell'];
-        }
-      });
-      loadtask(this.task2).then(res => {
-        this.tasklist2 = res.data.list;
-        if (res.data.list.length > 0) {
-          this.outcell = this.tasklist2[0]['cell'];
-        }
-      });
-      loadtask(this.task2).then(res => {
-        this.tasklist2 = res.data.list;
-      });
-      SelectAlarmmgInfo().then(res => {
-        this.alarm = res.data.alarmmg;
-      });
-      Loadcarlist().then(res => {
-        this.carlist = res.data.carlist;
-      });
-      SelectPassword().then(res => {
-        this.password = res.data.password;
-      });
-    },
-    //鏍规嵁鏍煎瓙鐘舵�佷慨鏀归鑹�
-    getStatusClass (state) {
-      if (state == 0) {
-        return "gezi";
-      } else if (state == 1) {
-        return "blue gezi";
-      } else if (state == 2) {
-        return "yellow gezi";
-      } else if (state == 3) {
-        return "red gezi";
-      } else {
-        return "black gezi";
-      }
-    },
-    //鎸夎鍗曞嚭鐗�
-    getOrder () {
-      if (this.form1.order != "") {
-        InsertOrder(this.order).then(res => {
-          if (res.data.message == 200) {
-            this.dialogFormVisible1 = false;
-            this.$message.success(this.$t('Operation successful'));
+                    this.$forceUpdate();
 
-          } else {
-            this.$message.error(this.$t('There is no glass for this order'));
-          }
-          this.load();
-        });
-      }
-
-    },
-    //鎵嬪姩涓婄墖
-    sbumitglassid () {
-      if (this.form.order != "") {
-        if (this.form.height < 380 || this.form.width < 390 || this.form.height > 1810 || this.form.width > 2760) {
-          this.$message.error(this.$t('The glass size is not within the range'));
-        } else {
-          if (this.zhuangtai == true) {
-            Addglassid(this.glassid).then(res => {
-              if (res.data.message2 == 200) {
-                this.$message.success(this.$t('Operation successful'));
-                this.cancal();
-              } else if (res.data.message2 == 500) {
-                this.$message.error(this.$t('There are currently tasks'));
-              }
-              else if (res.data.message2 == 300) {
-                this.$message.error(this.$t('There is no such glass'));
-              }
-              else if (res.data.message2 == 400) {
-                this.$message.error(this.$t('There is no such grid'));
-              }
-            });
-          } else {
-            this.$message.error(this.$t('There are currently tasks'));
-          }
-        }
-      }
-    },
-    showform (buttons) {
-      if (buttons == 1) {
-        this.confirm1 = true;
-        this.confirm2 = false;
-      } else if (buttons == 2) {
-        this.confirm1 = false;
-        this.confirm2 = true;
-      }
-      SelectGlassByGlassID(this.glassid).then(res => {
-        if (res.data.form != null) {
-          this.form = res.data.form;
-          this.dialogFormVisible = true;
-          this.$message.success('query was successful');
-        } else {
-          this.dialogFormVisible = true;
-          this.$message.error(this.$t('There is no such glass'));
-        }
-      });
-    },
-    showform1 () {
-      if (this.order != "") {
-        this.form1 =
-        {
-          order: "NG2210210",
-          number: 800,
-        };
-        this.dialogFormVisible1 = true;
-      }
-
-
-    },
-    cancal () {
-      this.dialogFormVisible = false;
-      this.form = {
-        orderId: "",
-        glassId: "",
-        height: "",
-        width: ""
-      };
-    },
-    cancal1 () {
-      this.dialogFormVisible1 = false;
-      this.form1 = {};
-    },
-    endtask (type, glassid, cell) {
-      this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
-        inputType: 'password',
-        inputPlaceholder: this.$t('Please enter the password'),
-        confirmButtonText: this.$t('Yes'),
-        cancelButtonText: this.$t('No'),
-        type: 'warning'
-      }).then(({ value }) => {
-        if (this.password == value) {
-          UpdateTask(type, glassid, cell).then(res => {
-            if (res.data.message3 == 200) {
-              this.$message.success(this.$t('Operation successful'));
+                }.bind(this);
+                //鍏抽棴浜嬩欢
+                socket.onclose = function () {
+                    console.log("websocket宸插叧闂�");
+                };
+                //鍙戠敓浜嗛敊璇簨浠�
+                socket.onerror = function () {
+                    console.log("websocket鍙戠敓浜嗛敊璇�");
+                }
             }
-          });
-        } else {
-          this.$message.error(this.$t('Password error'));//瀵嗙爜閿欒
-        }
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: this.$t('Operation canceled')
-        });
-      });
-    },
-    showcageinfo (cage) {
-      this.cage = cage;
-      SelectCageInfo(cage).then(res => {
-        this.cageinfo = res.data.cageinfo;
-        this.dialogFormVisible3 = true;
-      });
-    },
-    deleteglass (glassid, state) {
-      this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
-        inputType: 'password',
-        inputPlaceholder: this.$t('Please enter the password'),
-        confirmButtonText: this.$t('Yes'),
-        cancelButtonText: this.$t('No'),
-        type: 'warning'
-      }).then(({ value }) => {
-        if (this.password == value) {
-          if (state == 1) {
-            DeleteByGlassID(glassid).then(res => {
-              if (res.data.message3 == 200) {
-                this.$message.success(this.$t('Operation successful'));
-              }
+        },
+        load() {
+            //鍔犺浇绗煎瓙浣跨敤鎯呭喌鏁版嵁
+            home().then(res => {
+                this.tableData = res.data.list;
             });
-          } else {
-            this.$message.error(this.$t('No delete allowed'));
-          }
-        } else {
-          this.$message.error(this.$t('Password error'));//瀵嗙爜閿欒
-        }
+            //鍔犺浇鐞嗙墖绗肩幓鐠冩暟鎹�
+            home2().then(res => {
+                this.cagelist1 = res.data.list1;
+                this.cagelist2 = res.data.list2;
+                this.cagelist3 = res.data.list3;
+                this.cagelist4 = res.data.list4;
+            });
+            //鍔犺浇杩涚墖浠诲姟鏁版嵁
+            loadtask(this.task1).then(res => {
+                this.tasklist1 = res.data.list;
+            });
+            //鍔犺浇杩涘嚭鐗囦换鍔℃暟鎹�
+            loadtask(this.task2).then(res => {
+                this.tasklist2 = res.data.list;
+            });
+            //鍔犺浇鎶ヨ淇℃伅
+            SelectAlarmmgInfo().then(res => {
+                this.alarm = res.data.alarmmg;
+            });
+            //鍔犺浇灏忚溅浣嶇疆淇℃伅
+            Loadcarlist().then(res => {
+                this.carlist = res.data.carlist;
+            });
+            //鍔犺浇纭瀵嗙爜
+            SelectPassword().then(res => {
+                this.password = res.data.password;
+            });
+        },
+        //鏍规嵁鏍煎瓙鐘舵�佷慨鏀归鑹�
+        getStatusClass(state) {
+            if (state == 0) {
+                return "gezi";
+            } else if (state == 1) {
+                return "blue gezi";
+            } else if (state == 2) {
+                return "yellow gezi";
+            } else if (state == 3) {
+                return "red gezi";
+            } else {
+                return "black gezi";
+            }
+        },
+        //鎸夎鍗曞嚭鐗�
+        getOrder() {
+            if (this.form1.order != "") {
+                InsertOrder(this.order).then(res => {
+                    if (res.data.message == 200) {
+                        this.dialogFormVisible1 = false;
+                        this.$message.success(this.$t('Operation successful'));
 
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: this.$t('Operation canceled')
-        });
-      });
-    },
-    outglass (glassid, state) {
-      this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
-        inputType: 'password',
-        inputPlaceholder: this.$t('Please enter the password'),
-        confirmButtonText: this.$t('Yes'),
-        cancelButtonText: this.$t('No'),
-        type: 'warning'
-      }).then(({ value }) => {
-        if (this.password == value) {
-          if (state == 1) {
-            OutByGlassID(glassid).then(res => {
-              if (res.data.message3 == 200) {
-                this.$message.success(this.$t('Operation successful'));
-              }
-              else if (res.data.message2 == 300) {
-                this.$message.error(this.$t('There is no such grid'));
-              }
-              else if (res.data.message2 == 500) {
-                this.$message.error(this.$t('This glass is already in the cage'));
-              }
+                    } else {
+                        this.$message.error(this.$t('There is no glass for this order'));
+                    }
+                    this.load();
+                });
+            }
+
+        },
+        //鎵嬪姩涓婄墖
+        sbumitglassid() {
+            if (this.form.order != "") {
+                if (this.form.height < 380 || this.form.width < 390 || this.form.height > 1810 || this.form.width > 2760) {
+                    this.$message.error(this.$t('The glass size is not within the range'));
+                } else {
+                    if (this.zhuangtai == true) {
+                        Addglassid(this.glassid).then(res => {
+                            if (res.data.message2 == 200) {
+                                this.$message.success(this.$t('Operation successful'));
+                                this.cancel();
+                            } else if (res.data.message2 == 500) {
+                                this.$message.error(this.$t('There are currently tasks'));
+                            }
+                            else if (res.data.message2 == 300) {
+                                this.$message.error(this.$t('There is no such glass'));
+                            }
+                            else if (res.data.message2 == 400) {
+                                this.$message.error(this.$t('There is no such grid'));
+                            }
+                        });
+                    } else {
+                        this.$message.error(this.$t('There are currently tasks'));
+                    }
+                }
+            }
+        },
+        //鏄剧ず纭鐜荤拑淇℃伅涔熸病
+        showform(buttons) {
+            if (buttons == 1) {
+                this.confirm1 = true;
+                this.confirm2 = false;
+            } else if (buttons == 2) {
+                this.confirm1 = false;
+                this.confirm2 = true;
+            }
+            //鏍规嵁杈撳叆鐨勭幓鐠僫d鑾峰彇鐜荤拑淇℃伅
+            SelectGlassByGlassID(this.glassid).then(res => {
+                if (res.data.form != null) {
+                    this.form = res.data.form;
+                    this.dialogFormVisible = true;
+                    this.$message.success('query was successful');
+                } else {
+                    this.dialogFormVisible = true;
+                    this.$message.error(this.$t('There is no such glass'));
+                }
             });
-          } else {
-            this.$message.error(this.$t('No out allowed'));
-          }
-        } else {
-          this.$message.error(this.$t('Password error'));//瀵嗙爜閿欒
-        }
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: this.$t('Operation canceled')
-        });
-      });
-    },
-    insertglass (cage, cell, tier) {
-      this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
-        inputType: 'password',
-        inputPlaceholder: this.$t('Please enter the password'),
-        confirmButtonText: this.$t('Yes'),
-        cancelButtonText: this.$t('No'),
-        type: 'warning'
-      }).then(({ value }) => {
-        if (this.password == value) {
-          // OutByGlassID(glassid).then(res => {
-          //     if (res.data.message3 == 200) {
-          //         this.$message.success(this.$t('Operation successful'));
-          //     }
-          //     else if (res.data.message2 == 300) {
-          //         this.$message.error(this.$t('There is no such grid'));
-          //     }
-          // });
-          this.insertcage = cage;
-          this.insertcell = cell;
-          this.inserttier = tier;
-          this.showform(2);
-        } else {
-          this.$message.error(this.$t('Password error'));//瀵嗙爜閿欒
-        }
-      }).catch(() => {
-        this.$message({
-          type: 'info',
-          message: this.$t('Operation canceled')
-        });
-      });
-    },
-    FeedInglassid () {
-      Inglassid(this.insertcage, this.insertcell, this.inserttier, this.form).then(res => {
-        if (this.form.glassId != "") {
-          if (res.data.message == 200) {
-            this.$message.success(this.$t('Operation successful'));
+        },
+        //鏄剧ず璁㈠崟淇℃伅椤甸潰
+        showform1() {
+            if (this.order != "") {
+                this.form1 =
+                {
+                    order: "NG2210210",
+                    number: 800,
+                };
+                this.dialogFormVisible1 = true;
+            }
+        },
+        selectglassinfo() {
+            SelectGlass(this.orderid).then(res => {
+                this.GlassInfo = res.data.glass;
+            });
+        },
+        showform2() {
+            SelectGlass(this.orderid).then(res => {
+                this.GlassInfo = res.data.glass;
+            });
+            this.dialogFormVisible4 = true;
+        },
+        //鍙栨秷鎿嶄綔鏃跺叧闂〉闈�
+        cancel() {
             this.dialogFormVisible = false;
-          } else {
-            this.$message.error(this.$t('This glass is already in the cage'));
-          }
-        } else {
-          this.$message.error(this.$t('There is no such glass'));
-        }
+            this.form = {
+                orderId: "",
+                glassId: "",
+                height: "",
+                width: ""
+            };
+        },
+        //鍙栨秷鎿嶄綔鏃跺叧闂〉闈�
+        cancel1() {
+            this.dialogFormVisible1 = false;
+            this.form1 = {};
+        },
+        //缁撴潫杩�/鍑虹墖浠诲姟
+        endtask(type, glassid, cell) {
+            this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
+                inputType: 'password',
+                inputPlaceholder: this.$t('Please enter the password'),
+                confirmButtonText: this.$t('Yes'),
+                cancelButtonText: this.$t('No'),
+                type: 'warning'
+            }).then(({ value }) => {
+                if (this.password == value) {
+                    UpdateTask(type, glassid, cell).then(res => {
+                        if (res.data.message3 == 200) {
+                            this.$message.success(this.$t('Operation successful'));
+                        }
+                    });
+                } else {
+                    this.$message.error(this.$t('Password error'));//瀵嗙爜閿欒
+                }
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: this.$t('Operation canceled')
+                });
+            });
+        },
+        //鏄剧ず鐞嗙墖绗艰鎯呬俊鎭�
+        showcageinfo(cage) {
+            this.cage = cage;
+            SelectCageInfo(cage).then(res => {
+                this.cageinfo = res.data.cageinfo;
+                this.dialogFormVisible3 = true;
+            });
+        },
+        //鍒犻櫎鐞嗙墖绗肩幓鐠�
+        deleteglass(glassid, state) {
+            this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
+                inputType: 'password',
+                inputPlaceholder: this.$t('Please enter the password'),
+                confirmButtonText: this.$t('Yes'),
+                cancelButtonText: this.$t('No'),
+                type: 'warning'
+            }).then(({ value }) => {
+                if (this.password == value) {
+                    if (state == 1) {
+                        DeleteByGlassID(glassid).then(res => {
+                            if (res.data.message3 == 200) {
+                                this.$message.success(this.$t('Operation successful'));
+                            }
+                        });
+                    } else {
+                        this.$message.error(this.$t('No delete allowed'));
+                    }
+                } else {
+                    this.$message.error(this.$t('Password error'));//瀵嗙爜閿欒
+                }
 
-      });
-    },
-    UpdateDisabled (cage, cell, disabled) {
-      Disabled(cage, cell, disabled).then(res => {
-        if (res.data.message == 200) {
-          this.$message.success(this.$t('Operation successful'));
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: this.$t('Operation canceled')
+                });
+            });
+        },
+        //鎵嬪姩鍑虹墖
+        outglass(glassid, state) {
+            this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
+                inputType: 'password',
+                inputPlaceholder: this.$t('Please enter the password'),
+                confirmButtonText: this.$t('Yes'),
+                cancelButtonText: this.$t('No'),
+                type: 'warning'
+            }).then(({ value }) => {
+                if (this.password == value) {
+                    if (state == 1) {
+                        OutByGlassID(glassid).then(res => {
+                            if (res.data.message3 == 200) {
+                                this.$message.success(this.$t('Operation successful'));
+                            }
+                            else if (res.data.message2 == 300) {
+                                this.$message.error(this.$t('There is no such grid'));
+                            }
+                            else if (res.data.message2 == 500) {
+                                this.$message.error(this.$t('This glass is already in the cage'));
+                            }
+                        });
+                    } else {
+                        this.$message.error(this.$t('No out allowed'));
+                    }
+                } else {
+                    this.$message.error(this.$t('Password error'));//瀵嗙爜閿欒
+                }
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: this.$t('Operation canceled')
+                });
+            });
+        },
+        //鎵嬪姩寰�鐞嗙墖绗兼坊鍔犵幓鐠�
+        insertglass(cage, cell, tier) {
+            this.$prompt(this.$t('Are you sure to perform this operation ?'), this.$t('prompt'), {
+                inputType: 'password',
+                inputPlaceholder: this.$t('Please enter the password'),
+                confirmButtonText: this.$t('Yes'),
+                cancelButtonText: this.$t('No'),
+                type: 'warning'
+            }).then(({ value }) => {
+                if (this.password == value) {
+                    this.insertcage = cage;
+                    this.insertcell = cell;
+                    this.inserttier = tier;
+                    this.showform(2);
+                } else {
+                    this.$message.error(this.$t('Password error'));//瀵嗙爜閿欒
+                }
+            }).catch(() => {
+                this.$message({
+                    type: 'info',
+                    message: this.$t('Operation canceled')
+                });
+            });
+        },
+        //鎵嬪姩涓婄墖
+        FeedInglassid() {
+            Inglassid(this.insertcage, this.insertcell, this.inserttier, this.form).then(res => {
+                if (this.form.glassId != "") {
+                    if (res.data.message == 200) {
+                        this.$message.success(this.$t('Operation successful'));
+                        this.dialogFormVisible = false;
+                    } else {
+                        this.$message.error(this.$t('This glass is already in the cage'));
+                    }
+                } else {
+                    this.$message.error(this.$t('There is no such glass'));
+                }
+
+            });
+        },
+        //鍚敤//鐞嗙墖绗肩鐢�
+        UpdateDisabled(cage, cell, disabled) {
+            Disabled(cage, cell, disabled).then(res => {
+                if (res.data.message == 200) {
+                    this.$message.success(this.$t('Operation successful'));
+                }
+            });
         }
-      });
     }
-  }
 }
 </script>
\ No newline at end of file
diff --git a/CanadaMes-ui/src/views/role/index.vue b/CanadaMes-ui/src/views/role/index.vue
index c663906..22d50ae 100644
--- a/CanadaMes-ui/src/views/role/index.vue
+++ b/CanadaMes-ui/src/views/role/index.vue
@@ -39,6 +39,11 @@
   <!-- 淇敼 -->
   <el-tooltip effect="dark" :content="$t('langEdit')" placement="top" :enterable="false">
     <el-button type="primary" icon="el-icon-edit" size="mini" @click="showEditDialog(scope.row)"></el-button>
+ 
+  </el-tooltip>
+  <el-tooltip effect="dark" :content="$t('permission update')" placement="top" :enterable="false">
+    
+    <el-button type="primary"  size="mini" @click="showPermissionDialog(scope.row)">{{$t('permission update')}}</el-button>
   </el-tooltip>
   <!-- 鍒犻櫎 -->
   <el-tooltip effect="dark" :content="$t('langDelete')" placement="top" :enterable="false">
@@ -85,36 +90,58 @@
   </span>
     </el-dialog>
     <!--淇敼瑙掕壊鐨勫璇濇-->
-    <el-dialog
-        :title="$t('langEditRole')"
-        :visible.sync="editDialogVisible"
-        width="50%">
-      <!--鍐呭涓讳綋鍖哄煙-->
-      <el-form :model="editRoleForm" :rules="addRoleRules" ref="addRoleRef" label-width="130px">
-        <el-form-item :label="$t('langRoleName')" prop="name">
-          <el-input v-model="editRoleForm.name"></el-input>
-        </el-form-item>
-        <el-form-item :label="$t('langState')" prop="state">
-          <el-select v-model="editRoleForm.state" placeholder="$t('langPleaseSelect')">
-            <el-option v-for="(item,index) in options"
-                       :key="index"
-                       :value="item.value"
-                       :label="item.label">
-            </el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
-      <span slot="footer" class="dialog-footer">
+    <el-dialog :title="$t('langEditRole')" :visible.sync="editDialogVisible" width="50%">
+  <!-- 鍐呭涓讳綋鍖哄煙 -->
+  <el-form :model="editRoleForm" :rules="addRoleRules" ref="addRoleRef" label-width="130px">
+    <el-form-item :label="$t('langRoleName')" prop="name">
+      <el-input v-model="editRoleForm.name"></el-input>
+    </el-form-item>
+    <el-form-item :label="$t('langState')" prop="state">
+      <el-select v-model="editRoleForm.state" placeholder="$t('langPleaseSelect')">
+        <el-option v-for="(item, index) in options" :key="index" :value="item.value" :label="item.label"></el-option>
+      </el-select>
+    </el-form-item>
+    
+  </el-form>
+  <span slot="footer" class="dialog-footer">
     <el-button @click="editDialogVisible = false">{{$t('langCancel')}}</el-button>
     <el-button type="primary" @click="editRoleInfo">{{$t('langConfirm')}}</el-button>
   </span>
-    </el-dialog>
+</el-dialog>
+
+
+<el-dialog :title="$t('langEditPermissions')" :visible.sync="permissionDialogVisible">
+  <el-form label-width="130px">
+    <el-form-item :label="$t('langPermissions')" prop="permissionList">
+      <el-checkbox-group v-model="selectedPermissions">
+        <el-checkbox
+          v-for="(permission, index) in permissionList"
+          :key="index"
+          :label="permission.name"
+          :checked="permission.state === 1"
+          @change="updatePermissionState(permission.name, $event)"
+        >{{ permission.name }}</el-checkbox>
+      </el-checkbox-group>
+    </el-form-item>
+  </el-form>
+  <span slot="footer" class="dialog-footer">
+    <el-button @click="cancelEditPermissions">{{$t('langCancel')}}</el-button>
+    <el-button type="primary" @click="savePermissions">{{$t('langConfirm')}}</el-button>
+  </span>
+</el-dialog>
+
+
+
+
   </div>
 </template>
 
 <script>
 import {getById, removeById, saveOrUpdate, selectPage} from "../../api/role";
-import LanguageMixin from '../../lang/LanguageMixin'
+import {getById2} from "../../api/rolePermission";
+import {saveOrUpdate2} from "../../api/rolePermission";
+
+import LanguageMixin from '../../lang/LanguageMixin';
 export default {
   name: "Role",
   mixins: [LanguageMixin],
@@ -133,13 +160,21 @@
       addDialogVisible: false,
       // 鎺у埗淇敼瑙掕壊瀵硅瘽妗嗙殑鏄剧ず涓庨殣钘�
       editDialogVisible: false,
+     
       // 娣诲姞鐨勮鑹插璞�
       addRoleForm: {
         state: 1
       },
    
       // 淇敼鐨勮鑹插璞�
-      editRoleForm: {},
+      editRoleForm: {
+        
+      },
+     
+      permissionList: [],
+    permissionDialogVisible: false,
+    selectedPermissions: [] ,// 娣诲姞selectedPermissions鏁扮粍鍙橀噺
+
       // 娣诲姞瑙掕壊鐨勯獙璇佽鍒�
       addRoleRules: {
         name: [
@@ -179,7 +214,7 @@
     stateChange(info) {
       saveOrUpdate(info).then(() => {
         const 鏇存柊鐘舵�佹垚鍔� = this.$t('鏇存柊鐘舵�佹垚鍔�');
-        this.$message.success(鏇存柊鐘舵�佹垚鍔�)
+        this.$message.success(鏇存柊鐘舵�佹垚鍔�);
 
       });
     },
@@ -206,9 +241,60 @@
     showEditDialog(role) {
       getById({id: role.id}).then(res => {
         this.editRoleForm = res.data;
-        this.editDialogVisible = true;
+     
+  
+       
+      });
+
+     
+      this.editDialogVisible = true;
+    },
+
+
+    showPermissionDialog(role) {
+      this.selectedPermissions=[];
+      this.permissionList=[];
+    
+      getById2({ roleId: role.id }).then((res) => {
+        this.permissionList = res.data.permissionList;
+      
+
+        this.selectedPermissions = this.permissionList.map(({ name, state }) => ({
+          name,
+          state: state === 1,
+        }));
+        console.log(this.selectedPermissions);
+        this.permissionDialogVisible = true;
       });
     },
+// 鍙栨秷缂栬緫鏉冮檺寮瑰嚭妗�
+cancelEditPermissions() {
+  this.permissionDialogVisible = false;
+},
+// 淇濆瓨鏉冮檺淇敼
+updatePermissionState(name, isChecked) {
+    const permission = this.permissionList.find(p => p.name === name);
+    if (permission) {
+      permission.state = isChecked ? 1 : 0;
+    }
+  },
+
+  
+
+  savePermissions() {
+  const permissions = this.permissionList.map(({ roleId, name, state, permission_id }) => ({
+    roleId,
+    name,
+    state,
+    permission_id
+  }));
+  
+  saveOrUpdate2({ permissions }).then(() => {
+    // 鎴愬姛鏇存柊鏉冮檺鍚庢墽琛岀殑鎿嶄綔
+    const 鏇存柊鐘舵�佹垚鍔� = this.$t('鏇存柊鐘舵�佹垚鍔�');
+        this.$message.success(鏇存柊鐘舵�佹垚鍔�);
+  });
+},
     // 灞曠ず娣诲姞瑙掕壊鐨勫璇濇
     showAddDialog() {
       this.addDialogVisible = true;
diff --git a/CanadaMes-ui/src/views/user/index.vue b/CanadaMes-ui/src/views/user/index.vue
index 8a7799c..ba3de75 100644
--- a/CanadaMes-ui/src/views/user/index.vue
+++ b/CanadaMes-ui/src/views/user/index.vue
@@ -123,7 +123,7 @@
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item :label="$t('ElectricalPassword')" prop="dianqimima">
+        <el-form-item :label="$t('ElectricalPassword')" prop="dianqimima"  v-if="editUserForm.username === 'admin'">
         <el-input   v-model="editUserForm.dianqimima"></el-input>
       </el-form-item>
       </el-form>
diff --git a/CanadaMes-ui/vue.config.js b/CanadaMes-ui/vue.config.js
index 0e16427..c01b0d3 100644
--- a/CanadaMes-ui/vue.config.js
+++ b/CanadaMes-ui/vue.config.js
@@ -8,7 +8,7 @@
     devServer: {
         proxy: {
             '/api': {
-                target: `http://127.0.0.1:8888/springboot-vue3`,
+                target: `http://localhost:8888/springboot-vue3`,
                 changeOrigin: true,
                 pathRewrite: {
                     '^/api': ''
diff --git a/springboot-vue3/pom.xml b/springboot-vue3/pom.xml
index f54609a..e9a0bb3 100644
--- a/springboot-vue3/pom.xml
+++ b/springboot-vue3/pom.xml
@@ -157,7 +157,19 @@
                 <artifactId>spring-boot-maven-plugin</artifactId>
                 <version>${spring-boot.version}</version>
             </plugin>
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>dockerfile-maven-plugin</artifactId>
+                <version>1.3.6</version>
+                <configuration>
+                    <repository>docker/${project.artifactId}</repository>
+                    <buildArgs>
+                        <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
+                    </buildArgs>
+                </configuration>
+            </plugin>
         </plugins>
+
     </build>
 
     <repositories>
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 32f0c4a..09563f5 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
@@ -33,7 +33,8 @@
 
     @Autowired
     SpianMapper spianMapper;
-
+    
+    //鏌ヨ鐞嗙墖绗间娇鐢ㄦ儏鍐�
     @GetMapping("/load")
     public Result selectAll() {
         List<StorageCage> storageCagelist = homeMapper.selectAll();
@@ -41,7 +42,7 @@
         map.put("list", storageCagelist);
         return Result.success(map);
     }
-
+    //鏌ヨ鐞嗙墖绗肩幓鐠冩儏鍐�
     @GetMapping("/loads")
     public Result selectRack() {
         List<StorageCage> storageCagelist1 = homeMapper.selectRack1();
@@ -55,7 +56,7 @@
         map.put("list4", storageCagelist4);
         return Result.success(map);
     }
-
+    //鏌ヨ杩�/鍑虹墖浠诲姟
     @GetMapping("/loadinout")
     public Result selectinout(Integer types) {
         List<StorageCage> storageCageinout = homeMapper.selectinout(types);
@@ -63,7 +64,7 @@
         map.put("list", storageCageinout);
         return Result.success(map);
     }
-
+    //鎸夎鍗曞嚭鐗�
     @GetMapping("/InsertOrder")
     public Result InsertOrder(String orderid) {
         short result = homeMapper.SelectOrder(orderid);
@@ -77,7 +78,7 @@
         }
         return Result.success(map);
     }
-
+    //鏍规嵁鐜荤拑id鎵嬪姩涓婄墖
     @GetMapping("/Addglassid")
     public Result Addglassid(String glassid) {
         Map<String, Object> map = new HashMap<>();
@@ -97,7 +98,7 @@
         }
         return Result.success(map);
     }
-
+    //鎵嬪姩瀹屾垚杩�/鍑虹墖浠诲姟
     @GetMapping("/UpdateTask")
     public Result UpdateTask(Integer types, Integer shelfrack, String glassid) {
         Map<String, Object> map = new HashMap<>();
@@ -116,7 +117,7 @@
         map.put("message3", "200");
         return Result.success(map);
     }
-
+    //鏌ヨ鎶ヨ淇℃伅
     @GetMapping("/SelectAlarmmgInfo")
     public Result SelectAlarmmgInfo() {
         List<alarmmg> alarmmg = homeMapper.SelectAlarmmgInfo();
@@ -124,7 +125,7 @@
         map.put("alarmmg", alarmmg);
         return Result.success(map);
     }
-
+    //鏌ヨ鐞嗙墖绗艰鎯�
     @GetMapping("/SelectCageInfo")
     public Result SelectCageInfo(short cage) {
         List<StorageCage> cageinfo = homeMapper.SelectCageInfo(cage);
@@ -132,7 +133,7 @@
         map.put("cageinfo", cageinfo);
         return Result.success(map);
     }
-
+    //鎵嬪姩鍒犻櫎鐞嗙墖绗肩幓鐠�
     @GetMapping("/DeleteByGlassID")
     public Result DeleteByGlassID(String glassid) {
         StorageCage glassinfor = homeMapper.SelectGlassInfo(glassid);
@@ -142,7 +143,7 @@
         map.put("message3", "200");
         return Result.success(map);
     }
-
+    //鏍规嵁鐜荤拑id鎵嬪姩鍑虹墖
     @GetMapping("/OutByGlassID")
     public Result OutByGlassID(String glassid) {
         Map<String, Object> map = new HashMap<>();
@@ -161,7 +162,7 @@
 
         return Result.success(map);
     }
-
+    //鍔犺浇灏忚溅浣嶇疆
     @GetMapping("/Loadcarlist")
     public Result Loadcarlist() {
         List<CarPosition> carlist = homeMapper.Loadcarlist();
@@ -169,7 +170,7 @@
         map.put("carlist", carlist);
         return Result.success(map);
     }
-
+    //鏌ヨ纭瀵嗙爜
     @GetMapping("/SelectPassword")
     public Result SelectPassword() {
         String pwdct = homeMapper.SelectPassword();
@@ -177,7 +178,7 @@
         map.put("password", pwdct);
         return Result.success(map);
     }
-
+    //鏍规嵁鐜荤拑id鏌ヨ鐜荤拑淇℃伅
     @GetMapping("/SelectGlassByGlassID")
     public Result SelectGlassByGlassID(String glassid) {
         Glass Glass = homeMapper.SelectGlassByGlassID(glassid);
@@ -185,7 +186,7 @@
         map.put("form", Glass);
         return Result.success(map);
     }
-
+    //鍚敤/绂佺敤鐞嗙墖绗兼牸瀛�
     @GetMapping("/Disabled")
     public Result Disabled(short cage, short cell, short disabled) {
         homeMapper.Disabled(cage, cell, disabled);
@@ -193,7 +194,7 @@
         map.put("message", "200");
         return Result.success(map);
     }
-
+    //鎵嬪姩寰�鐞嗙墖绗兼坊鍔犵幓鐠�
     @PostMapping("/Inglassid")
     public Result Inglassid(short cage, short cell, short tier, @RequestBody Glass glass) {
         Map<String, Object> map = new HashMap<>();
@@ -207,4 +208,12 @@
         return Result.success(map);
     }
 
+    //鏌ヨ鐜荤拑淇℃伅
+    @PostMapping("/SelectGlass")
+    public Result SelectGlass(String orderid) {
+        Map<String, Object> map = new HashMap<>();
+        List<Glass> glass=homeMapper.SelectGlass(orderid);
+        map.put("glass", glass);
+        return Result.success(map);
+    }
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/RoleController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/RoleController.java
index f909175..f108103 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/RoleController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/RoleController.java
@@ -37,6 +37,7 @@
         return Result.success();
     }
 
+
     @ApiOperation(value = "鏍规嵁id鍒犻櫎瑙掕壊")
     @PostMapping("/removeById")
     @RequiresRoles({"admin"})
@@ -54,6 +55,8 @@
         return Result.success(roleService.getById(role.getId()));
     }
 
+
+
     @ApiOperation(value = "鍒嗛〉鏌ヨ瑙掕壊")
     @GetMapping("/selectPage")
     @RequiresRoles({"admin"})
diff --git a/springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java b/springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java
index 58f1785..32044f9 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/controller/RolePermissionController.java
@@ -1,10 +1,9 @@
 package com.example.springboot.controller;
 
-import com.example.springboot.entity.Permission;
-import com.example.springboot.entity.Role;
-import com.example.springboot.entity.RolePermission;
+import com.example.springboot.entity.*;
 import com.example.springboot.entity.vo.Result;
 import com.example.springboot.entity.vo.RolePermissionVo;
+import com.example.springboot.mapper.RolePermissionMapper;
 import com.example.springboot.service.PermissionService;
 import com.example.springboot.service.RolePermissionService;
 import com.example.springboot.service.RoleService;
@@ -14,11 +13,13 @@
 import org.apache.shiro.authz.annotation.RequiresPermissions;
 import org.apache.shiro.authz.annotation.RequiresRoles;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 @RestController
 @Slf4j
@@ -32,50 +33,136 @@
     @Autowired
     private PermissionService permissionService;
 
-    @ApiOperation(value = "娣诲姞鎴栬�呮洿鏂拌鑹插拰鏉冮檺鍏崇郴")
-    @PostMapping("/saveOrUpdate")
-    @RequiresPermissions({"rolePermission:add"})
-    @RequiresRoles({"admin"})
-    public Result saveOrUpdate(@RequestBody RolePermission rolePermission) {
-        Integer count = rolePermissionService.lambdaQuery()
-                .eq(RolePermission::getRoleId, rolePermission.getRoleId())
-                .eq(RolePermission::getPermissionId, rolePermission.getPermissionId())
-                .ne(rolePermission.getId() != null, RolePermission::getId, rolePermission.getId())
-                .count();
-        if (count > 0) return Result.fail("鎺堟潈宸插瓨鍦�");
-        rolePermissionService.saveOrUpdate(rolePermission);
-        return Result.success();
-    }
 
-    @ApiOperation(value = "鏍规嵁id鍒犻櫎瑙掕壊鍜屾潈闄愬叧绯�")
-    @PostMapping("/removeById")
-    @RequiresPermissions({"rolePermission:delete"})
-    @RequiresRoles({"admin"})
-    public Result removeById(@RequestBody RolePermissionVo rolePermissionVO) {
-        rolePermissionService.removeById(rolePermissionVO.getId());
-        return Result.success();
-    }
 
-    @ApiOperation(value = "鍒嗛〉鏌ヨ瑙掕壊鍜屾潈闄愬叧绯�")
-    @GetMapping("/selectPage")
-    @RequiresRoles({"admin"})
-    @RequiresPermissions({"rolePermission:select"})
-    public Result selectPage(RolePermissionVo rolePermissionVO) {
-        return Result.success(rolePermissionService.selectPage(rolePermissionVO));
-    }
-
-    @ApiOperation(value = "鏍规嵁id鏌ヨ瑙掕壊鍜屾潈闄愬叧绯�")
-    @GetMapping("/getById")
-    @RequiresRoles({"admin"})
-    @RequiresPermissions({"rolePermission:select"})
-    public Result getById(RolePermissionVo rolePermissionVO) {
-        RolePermission rolePermission = rolePermissionService.getById(rolePermissionVO.getId());
-        if (rolePermission != null) {
-            Role role = roleService.getById(rolePermission.getRoleId());
-            Permission permission = permissionService.getById(rolePermission.getPermissionId());
-            rolePermission.setRole(role);
-            rolePermission.setPermission(permission);
+        @ApiOperation(value = "娣诲姞鎴栬�呮洿鏂拌鑹插拰鏉冮檺鍏崇郴")
+        @PostMapping("/saveOrUpdate")
+        @RequiresPermissions({"rolePermission:add"})
+        @RequiresRoles({"admin"})
+        public Result saveOrUpdate(@RequestBody RolePermission rolePermission) {
+            Integer count = rolePermissionService.lambdaQuery()
+                    .eq(RolePermission::getRoleId, rolePermission.getRoleId())
+                    .eq(RolePermission::getPermissionId, rolePermission.getPermissionId())
+                    .ne(rolePermission.getId() != null, RolePermission::getId, rolePermission.getId())
+                    .count();
+            if (count > 0) return Result.fail("鎺堟潈宸插瓨鍦�");
+            rolePermissionService.saveOrUpdate(rolePermission);
+            return Result.success();
         }
-        return Result.success(rolePermission);
+
+        @ApiOperation(value = "鏍规嵁id鍒犻櫎瑙掕壊鍜屾潈闄愬叧绯�")
+        @PostMapping("/removeById")
+        @RequiresPermissions({"rolePermission:delete"})
+        @RequiresRoles({"admin"})
+        public Result removeById(@RequestBody RolePermissionVo rolePermissionVO) {
+            rolePermissionService.removeById(rolePermissionVO.getId());
+            return Result.success();
+        }
+
+        @ApiOperation(value = "鍒嗛〉鏌ヨ瑙掕壊鍜屾潈闄愬叧绯�")
+        @GetMapping("/selectPage")
+        @RequiresRoles({"admin"})
+        @RequiresPermissions({"rolePermission:select"})
+        public Result selectPage(RolePermissionVo rolePermissionVO) {
+            return Result.success(rolePermissionService.selectPage(rolePermissionVO));
+        }
+
+        @ApiOperation(value = "鏍规嵁id鏌ヨ瑙掕壊鍜屾潈闄愬叧绯�")
+        @GetMapping("/getById")
+        @RequiresRoles({"admin"})
+        @RequiresPermissions({"rolePermission:select"})
+        public Result getById(RolePermissionVo rolePermissionVO) {
+            RolePermission rolePermission = rolePermissionService.getById(rolePermissionVO.getId());
+            if (rolePermission != null) {
+                Role role = roleService.getById(rolePermission.getRoleId());
+                Permission permission = permissionService.getById(rolePermission.getPermissionId());
+                rolePermission.setRole(role);
+                rolePermission.setPermission(permission);
+            }
+            return Result.success(rolePermission);
+
+
+
+
+
+        }
+    @Autowired
+    private JdbcTemplate jdbcTemplate;
+
+    @Autowired RolePermissionMapper RolePermissionMapper;
+    ;
+
+
+    @GetMapping("/getByRoleId")
+    public com.example.springboot.common.Result selectquanxian(@RequestParam("roleId") int roleId) {
+        List<Map<String, Object>> resultSet = RolePermissionMapper.selectquanxian(roleId);
+
+        List<Map<String, Object>> permissions = new ArrayList<>();
+        for (Map<String, Object> result : resultSet) {
+
+            Long role_id2 = (Long) result.get("role_id");
+            int state = (int) result.get("state");
+            Long permission_id = (Long) result.get("permission_id"); // 娉ㄦ剰杩欓噷鐨勭被鍨嬫槸Long
+            String permissionName = (String) result.get("name");
+
+            Map<String, Object> permission = new HashMap<>();
+            permission.put("roleId", role_id2.intValue());
+            permission.put("name", permissionName);
+            permission.put("permission_id", permission_id.intValue()); // 灏哃ong绫诲瀷杞崲涓篿nt绫诲瀷
+            permission.put("state", state);
+            permissions.add(permission);
+        }
+
+        Map<String, Object> map = new HashMap<>();
+        map.put("permissionList", permissions);
+        return com.example.springboot.common.Result.success(map);
     }
+
+
+    @PostMapping("/savePermissions")
+    public Result savePermissions(@RequestBody Map<String, Object> requestBody) {
+        try {
+            // 鑾峰彇鏉冮檺鏁版嵁鍒楄〃
+            List<Map<String, Object>> permissions = (List<Map<String, Object>>) requestBody.get("permissions");
+            // 閬嶅巻鎺ユ敹鍒扮殑鏉冮檺鏁版嵁
+            for (Map<String, Object> permission : permissions) {
+                // 鑾峰彇鏉冮檺椤圭殑roleId銆乶ame銆乻tate鍜宲ermission_id
+                int roleId = (int) permission.get("roleId");
+                String name = (String) permission.get("name");
+                int state = (int) permission.get("state");
+                int permissionId = (int) permission.get("permission_id");
+
+                // 鏍规嵁roleId鍜宲ermissionId鏌ヨ鏄惁宸插瓨鍦ㄨ鏉冮檺璁板綍
+                boolean exists = RolePermissionMapper.checkExists(roleId, permissionId);
+
+                if (exists) {
+                    // 濡傛灉宸插瓨鍦ㄨ鏉冮檺璁板綍锛屽垯鏇存柊鐘舵��
+                    RolePermissionMapper.updateState(roleId, permissionId, state);
+                } else {
+                    // 濡傛灉涓嶅瓨鍦ㄨ鏉冮檺璁板綍锛屽垯鏂板涓�鏉℃潈闄愯褰�
+                    RolePermissionMapper.insert(roleId, permissionId, state);
+                }
+            }
+
+            return Result.success(); // 鎴愬姛淇濆瓨鏉冮檺鍚庤繑鍥炵粨鏋�
+        } catch (Exception e) {
+            e.printStackTrace();
+            return Result.fail("淇濆瓨鏉冮檺澶辫触"); // 淇濆瓨鏉冮檺澶辫触鏃惰繑鍥為敊璇俊鎭�
+        }
+    }
+
+
+
+
+
+
+
 }
+
+
+
+
+
+
+
+
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/Role.java b/springboot-vue3/src/main/java/com/example/springboot/entity/Role.java
index 8a236d1..b428d4c 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/Role.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/Role.java
@@ -30,4 +30,5 @@
 
     @TableField(exist = false)
     private List<Permission> permissions;
-}
\ No newline at end of file
+}
+
diff --git a/springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java b/springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java
index 5ad4863..a55723f 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/entity/RolePermission.java
@@ -22,8 +22,13 @@
     @ApiModelProperty("鐘舵��")
     private Integer state;
 
+
+
+
     @TableField(exist = false)
     private Role role;
     @TableField(exist = false)
     private Permission permission;
+
+
 }
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 f3bd4c0..ddec941 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
@@ -68,7 +68,7 @@
   List<alarmmg> SelectAlarmmgInfo();
 
   //鑾峰彇鐞嗙墖绗煎唴鐜荤拑淇℃伅
-  @Select("select *,concat(glasswidth,' x ',glassheight) as lengthwidth from storage_cage  ")
+  @Select("select *,concat(round(a.glasswidth*b.Conversionrate,2),' x ',round(a.glassheight*b.Conversionrate,2)) as lengthwidth from storage_cage  as a,glass as b  ")
   List<StorageCage> SelectCageInfo(short cage);
 
   @Update("update storage_cage set state=0,glass_id=null,order_id=null,glasswidth=null,glassheight=null where glass_id=#{glassid}")
@@ -87,7 +87,12 @@
   StorageCage SelectGlassInfo(String glassid);
 
   //鏌ヨ鐜荤拑淇℃伅
-  @Select("select * from glass where glassid=#{glassid}")
+//  @Select("select * from glass where glassid=#{glassid}")
+  @Select("SELECT id,glassid,orderid,\n" +
+          "       ROUND(width * Conversionrate, 2) AS width,\n" +
+          "       ROUND(height * Conversionrate, 2) AS height\n" +
+          "FROM glass\n" +
+          "where glassid=#{glassid};")
   Glass SelectGlassByGlassID(String glassid);
 
   //鍚敤/绂佺敤鐞嗙墖绗兼牸瀛�
@@ -102,4 +107,7 @@
   @Select("select count(*) from storage_cage where glass_id=#{glassId}")
   short SelectStorageByGlassId(String glassId);
 
+  @Select("select * from glass where orderid=#{orderid}")
+  List<Glass> SelectGlass(String orderid);
+  
 }
diff --git a/springboot-vue3/src/main/java/com/example/springboot/mapper/RolePermissionMapper.java b/springboot-vue3/src/main/java/com/example/springboot/mapper/RolePermissionMapper.java
index bc8ab86..2c00982 100644
--- a/springboot-vue3/src/main/java/com/example/springboot/mapper/RolePermissionMapper.java
+++ b/springboot-vue3/src/main/java/com/example/springboot/mapper/RolePermissionMapper.java
@@ -2,10 +2,29 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.example.springboot.entity.RolePermission;
-import org.apache.ibatis.annotations.Mapper;
+
+
+import org.apache.ibatis.annotations.*;
 import org.springframework.stereotype.Repository;
+
+import java.util.List;
+import java.util.Map;
 
 @Mapper
 @Repository
 public interface RolePermissionMapper extends BaseMapper<RolePermission> {
+
+    @Select("SELECT rp.state,rp.permission_id,rp.role_id, p.* FROM role_permission AS rp JOIN permission AS p ON rp.permission_id = p.id WHERE rp.role_id = #{roleId}")
+    List<Map<String, Object>> selectquanxian(@Param("roleId") int roleId);
+
+    @Select("SELECT COUNT(*) FROM role_permission WHERE role_id = #{roleId} AND permission_id = #{permissionId}")
+    boolean checkExists(@Param("roleId") int roleId, @Param("permissionId") int permissionId);
+
+
+    @Update("UPDATE role_permission SET state = #{state} WHERE role_id = #{roleId} AND permission_id = #{permissionId}")
+    void updateState(@Param("roleId") int roleId, @Param("permissionId") int permissionId, @Param("state") int state);
+
+    @Insert("INSERT INTO role_permission (role_id, permission_id, state) VALUES (#{roleId}, #{permissionId}, #{state})")
+    void insert(@Param("roleId") int roleId, @Param("permissionId") int permissionId, @Param("state") int state);
+
 }
diff --git a/springboot-vue3/src/main/resources/application.properties b/springboot-vue3/src/main/resources/application.properties
index 92e61eb..9ac74e3 100644
--- a/springboot-vue3/src/main/resources/application.properties
+++ b/springboot-vue3/src/main/resources/application.properties
@@ -23,7 +23,3 @@
 spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
 spring.jackson.time-zone=GMT+8
 
-spring.mvc.cors.enabled=true
-spring.mvc.cors.allowed-origins=http://localhost:8080
-spring.mvc.cors.allowed-methods=GET,POST
-spring.mvc.cors.allowed-headers=*
\ No newline at end of file

--
Gitblit v1.8.0