From 97fba4a0e38c0b8455d43d2935aa996676407361 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期一, 08 十二月 2025 16:40:36 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/northglass-erp/src/router/index.js                                    |   17 +
 north-glass-erp/northglass-erp/src/stores/sd/companySet/温州巨星.js                       |    2 
 north-glass-erp/northglass-erp/src/lang/en.js                                         |    3 
 north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml                 |    1 
 north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js                       |    9 
 north-glass-erp/northglass-erp/src/views/system/userLog/UserLog.vue                   |   61 ++++
 north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue               |  117 +++++++
 north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java   |    4 
 north-glass-erp/northglass-erp/src/lang/zh.js                                         |    3 
 north-glass-erp/src/main/java/com/example/erp/controller/AppController.java           |    4 
 north-glass-erp/northglass-erp/src/stores/sd/companySet/上海北玻.js                       |    2 
 north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml                       |   17 
 north-glass-erp/northglass-erp/src/lang/ar.js                                         |    3 
 north-glass-erp/northglass-erp/src/stores/sd/companySet/新疆恒鑫.js                       |    2 
 north-glass-erp/northglass-erp/src/assets/main.css                                    |    4 
 north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue              |  123 ++++++-
 north-glass-erp/northglass-erp/src/stores/sd/companySet/常州吉利.js                       |    2 
 north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java                    |    3 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java           |    5 
 north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java       |   18 +
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java            |   31 +
 north-glass-erp/northglass-erp/src/views/system/userLog/UserListLog.vue               |  235 +++++++++++++++
 north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java         |    3 
 north-glass-erp/northglass-erp/src/stores/sd/companySet/金华天成.js                       |    4 
 north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue               |   88 ++++-
 north-glass-erp/src/main/resources/mapper/userInfo/User.xml                           |    5 
 north-glass-erp/src/main/java/com/example/erp/dto/sd/DeliverySearchDTO.java           |   74 ++++
 north-glass-erp/northglass-erp/src/stores/sd/companySet/洛阳北玻.js                       |    2 
 north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java |    6 
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue                     |    4 
 north-glass-erp/northglass-erp/src/lang/ru.js                                         |    3 
 north-glass-erp/northglass-erp/src/layout/MainErpView.vue                             |   15 
 north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet4.vue                |    4 
 north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java         |   12 
 north-glass-erp/northglass-erp/src/views/LoginView.vue                                |    6 
 north-glass-erp/northglass-erp/src/lang/kr.js                                         |    3 
 north-glass-erp/northglass-erp/src/stores/sd/companySet/天津北玻.js                       |    2 
 37 files changed, 802 insertions(+), 95 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/assets/main.css b/north-glass-erp/northglass-erp/src/assets/main.css
index b332278..8b2c754 100644
--- a/north-glass-erp/northglass-erp/src/assets/main.css
+++ b/north-glass-erp/northglass-erp/src/assets/main.css
@@ -7,8 +7,8 @@
   font-weight: normal;
   height: 100%;
   width: 100%;
-  /*min-width: 1536px;
-  min-height: 730px;*/
+  min-width: 1536px;
+  min-height: 730px;
 
 }
 @media (max-width: 500px) {
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet4.vue b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet4.vue
index d0386ff..6100c64 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet4.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet4.vue
@@ -156,9 +156,9 @@
       </tr>
 
       <tr class="title-s">
-        <th colspan="2" style="width: 30%;text-align: left;"><span>{{data.order.orderType}}&nbsp;鎬婚噸閲�:{{ grossNum.weight }}</span></th>
+        <th colspan="2" style="width: 30%;text-align: left;"><span>鎬婚噸閲�:{{ grossNum.weight }}</span></th>
         <th colspan="5" style="width: 40%;">
-          <h3 >鐢熶骇浠诲姟鍗�(鎴愬搧)</h3>
+          <h3 >鐢熶骇浠诲姟鍗�({{data.order.orderType}})</h3>
         </th>
         <th colspan="2" style="width: 30%;">璁㈠崟缂栧彿锛�<span>{{ data.order.orderId }}</span>
           <span v-if="company.companyName==='甯稿窞甯傚悏鍒╃幓鐠冩湁闄愬叕鍙�'&& data.order.batch!==''">(鍘焮{ data.order.batch }})</span>
diff --git a/north-glass-erp/northglass-erp/src/lang/ar.js b/north-glass-erp/northglass-erp/src/lang/ar.js
index 4b0bb9d..9fec150 100644
--- a/north-glass-erp/northglass-erp/src/lang/ar.js
+++ b/north-glass-erp/northglass-erp/src/lang/ar.js
@@ -1333,7 +1333,8 @@
         userPassWord :'鬲睾賷賷乇 賰賱賲丞 丕賱賲乇賵乇',
         glassPrice:'鐜荤拑浠锋牸',
         glassOptimize:'鐜荤拑浼樺寲',
-        finishedGlassShelf:'鎴愬搧鏂欐灦'
+        finishedGlassShelf:'鎴愬搧鏂欐灦',
+        userLog:'鐧诲綍鏃ュ織'
     },
 
     glassPrice:{
diff --git a/north-glass-erp/northglass-erp/src/lang/en.js b/north-glass-erp/northglass-erp/src/lang/en.js
index ebadad0..29f9e6e 100644
--- a/north-glass-erp/northglass-erp/src/lang/en.js
+++ b/north-glass-erp/northglass-erp/src/lang/en.js
@@ -1333,7 +1333,8 @@
         userPassWord :'User Pass Word',
         glassPrice:'Glass Price',
         glassOptimize:'鐜荤拑浼樺寲',
-        finishedGlassShelf:'鎴愬搧鏂欐灦'
+        finishedGlassShelf:'鎴愬搧鏂欐灦',
+        userLog:'鐧诲綍鏃ュ織'
     },
 
     glassPrice:{
diff --git a/north-glass-erp/northglass-erp/src/lang/kr.js b/north-glass-erp/northglass-erp/src/lang/kr.js
index 0ed24cd..c808376 100644
--- a/north-glass-erp/northglass-erp/src/lang/kr.js
+++ b/north-glass-erp/northglass-erp/src/lang/kr.js
@@ -1334,7 +1334,8 @@
         userPassWord :'牍勲皜氩堩樃 氤�瓴�',
         glassPrice:'鞙犽Μ 臧�瓴�',
         glassOptimize:'鞙犽Μ 斓滌爜頇�',
-        finishedGlassShelf:'鎴愬搧鏂欐灦'
+        finishedGlassShelf:'鎴愬搧鏂欐灦',
+        userLog:'鐧诲綍鏃ュ織'
     },
 
     glassPrice:{
diff --git a/north-glass-erp/northglass-erp/src/lang/ru.js b/north-glass-erp/northglass-erp/src/lang/ru.js
index 94afeba..0acd315 100644
--- a/north-glass-erp/northglass-erp/src/lang/ru.js
+++ b/north-glass-erp/northglass-erp/src/lang/ru.js
@@ -1334,7 +1334,8 @@
         userPassWord :'袠蟹屑械薪懈褌褜 锌邪褉芯谢褜',
         glassPrice:'笑械薪邪 褋褌械泻谢邪.',
         glassOptimize:'鐜荤拑浼樺寲',
-        finishedGlassShelf:'鎴愬搧鏂欐灦'
+        finishedGlassShelf:'鎴愬搧鏂欐灦',
+        userLog:'鐧诲綍鏃ュ織'
     },
 
     glassPrice:{
diff --git a/north-glass-erp/northglass-erp/src/lang/zh.js b/north-glass-erp/northglass-erp/src/lang/zh.js
index 6ea842b..06112dd 100644
--- a/north-glass-erp/northglass-erp/src/lang/zh.js
+++ b/north-glass-erp/northglass-erp/src/lang/zh.js
@@ -1335,7 +1335,8 @@
         userPassWord :'淇敼瀵嗙爜',
         glassPrice:'鐜荤拑浠锋牸',
         glassOptimize:'鐜荤拑浼樺寲',
-        finishedGlassShelf:'鎴愬搧鏂欐灦'
+        finishedGlassShelf:'鎴愬搧鏂欐灦',
+        userLog:'鐧诲綍鏃ュ織'
     },
 
     glassPrice:{
diff --git a/north-glass-erp/northglass-erp/src/layout/MainErpView.vue b/north-glass-erp/northglass-erp/src/layout/MainErpView.vue
index 93b13a6..17f9e23 100644
--- a/north-glass-erp/northglass-erp/src/layout/MainErpView.vue
+++ b/north-glass-erp/northglass-erp/src/layout/MainErpView.vue
@@ -122,17 +122,14 @@
 </script>
 
 <template>
-  <div>
+  <div style="height:100%;width:100%">
     <el-container id="el-container1">
       <el-header >
         <div style="height: 100%;width: 100%;display: flex">
           <img src="../assets/northGlass.ico" alt="" style="max-width: 100%;max-height: 100%">
-          <h3 style="margin: 1rem  ;font-weight: bold;width: 70vw;"> {{$t('main.titleFirst') + user + $t('main.titleLast')}}</h3>
-          <span style="height: 70%;width: 78vw;margin-top: 1.5rem;" >
-
-<!--            <el-button   class="sys-quit" @click="quit"  type="info" round>-->
+          <h3 style="margin: 1rem  ;font-weight: bold;width: 95%;"> {{$t('main.titleFirst') + user + $t('main.titleLast')}}</h3>
+          <span style="height: 70%;width: 10%;margin-top: 1.5rem;" >
               <el-icon @click="quit"  style="float: right;margin-right: 1rem" size="large" ><SwitchButton  size=""/></el-icon>
-<!--            </el-button>-->
           </span>
         </div>
       </el-header>
@@ -219,12 +216,12 @@
 <style scoped>
 
 #el-container1{
-  height: 100vh;
-  width: 100vw;
+  height: 100%;
+  width: 100%;
 }
 #el-container2{
   height:calc(100% - 60px);
-  width: 100vw;
+  width: 100%;
 }
 
 *{
diff --git a/north-glass-erp/northglass-erp/src/router/index.js b/north-glass-erp/northglass-erp/src/router/index.js
index a13144c..4ba8821 100644
--- a/north-glass-erp/northglass-erp/src/router/index.js
+++ b/north-glass-erp/northglass-erp/src/router/index.js
@@ -83,6 +83,23 @@
             }
           ]
         },
+        {
+          path:'userLog',
+          name: 'userLog',
+          component: () => import('../views/system/userLog/UserLog.vue'),
+          children:[
+            {
+              path: 'userListLog',
+              name: 'userListLog',
+              component: () => import('../views/system/userLog/UserListLog.vue'),
+            },
+            {
+              name:'userLog',
+              path: '',
+              redirect:'/main/userLog/userListLog'
+            }
+          ]
+        },
 
         {
           path:'glassPrice',
diff --git "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\344\270\212\346\265\267\345\214\227\347\216\273.js" "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\344\270\212\346\265\267\345\214\227\347\216\273.js"
index 38f0a79..bfb77bd 100644
--- "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\344\270\212\346\265\267\345\214\227\347\216\273.js"
+++ "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\344\270\212\346\265\267\345\214\227\347\216\273.js"
@@ -23,6 +23,8 @@
             msg:'basicData.msg.range99999Dec2'
         },
         orderIdType:'day',//鍚庣鐢熸垚璁㈠崟鍙风被鍨嬶紝day:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚,year:姣忓勾鐢熸垚
+        orderIdTypeLetter:'NG',//璁㈠崟鍙峰墠闈㈠瓧姣�
+        orderIdTypeMantissa:2,//璁㈠崟鍙峰熬鏁颁繚鐣欎綅鏁�  orderIdTypeLetter闀垮害+orderIdTypeMantissa =4
         deliveryIdType:'day',
         deliveryDate:15,//璁㈠崟鍒涘缓閫佽揣鏃ユ湡 澶╂触7澶╋紝甯稿窞7澶╋紝涔変箤15澶╋紝鏂扮枂15澶�
         columnName:'鍥惧彿',
diff --git "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\345\244\251\346\264\245\345\214\227\347\216\273.js" "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\345\244\251\346\264\245\345\214\227\347\216\273.js"
index 607506d..aac7b2c 100644
--- "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\345\244\251\346\264\245\345\214\227\347\216\273.js"
+++ "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\345\244\251\346\264\245\345\214\227\347\216\273.js"
@@ -23,6 +23,8 @@
             msg:'basicData.msg.range99999Dec2'
         },
         orderIdType:'year',//鍚庣鐢熸垚璁㈠崟鍙风被鍨嬶紝day:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚,year:姣忓勾鐢熸垚
+        orderIdTypeLetter:'NG',//璁㈠崟鍙峰墠闈㈠瓧姣�
+        orderIdTypeMantissa:2,//璁㈠崟鍙峰熬鏁颁繚鐣欎綅鏁�  orderIdTypeLetter闀垮害+orderIdTypeMantissa =4
         deliveryIdType:'day',//鍚庣鐢熸垚鍙戣揣鍗曞彿绫诲瀷锛宒ay:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚
         deliveryDate:7,//璁㈠崟鍒涘缓閫佽揣鏃ユ湡 澶╂触7澶╋紝甯稿窞7澶╋紝涔変箤15澶╋紝鏂扮枂15澶�
         columnName:'鍥惧彿',//鎵撳嵃鐢熶骇鍗曟椂闇�瑕佹樉绀虹殑鍒楀悕锛屾病鏈変负绌�
diff --git "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\345\270\270\345\267\236\345\220\211\345\210\251.js" "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\345\270\270\345\267\236\345\220\211\345\210\251.js"
index 84e435a..9cb5376 100644
--- "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\345\270\270\345\267\236\345\220\211\345\210\251.js"
+++ "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\345\270\270\345\267\236\345\220\211\345\210\251.js"
@@ -23,6 +23,8 @@
             msg:'basicData.msg.range9999Dec'
         },
         orderIdType:'month',//鍚庣鐢熸垚璁㈠崟鍙风被鍨嬶紝day:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚
+        orderIdTypeLetter:'NG',//璁㈠崟鍙峰墠闈㈠瓧姣�
+        orderIdTypeMantissa:2,//璁㈠崟鍙峰熬鏁颁繚鐣欎綅鏁�  orderIdTypeLetter闀垮害+orderIdTypeMantissa =4
         deliveryIdType:'month',//鍚庣鐢熸垚鍙戣揣鍗曞彿绫诲瀷锛宒ay:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚
         deliveryDate:7,//璁㈠崟鍒涘缓閫佽揣鏃ユ湡 澶╂触7澶╋紝甯稿窞7澶╋紝涔変箤15澶╋紝鏂扮枂15澶�
         columnName:'寮傚舰鍙傛暟',//鎵撳嵃鐢熶骇鍗曟椂闇�瑕佹樉绀虹殑鍒楀悕锛屾病鏈変负绌�
diff --git "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\226\260\347\226\206\346\201\222\351\221\253.js" "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\226\260\347\226\206\346\201\222\351\221\253.js"
index e686a1e..d91432e 100644
--- "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\226\260\347\226\206\346\201\222\351\221\253.js"
+++ "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\226\260\347\226\206\346\201\222\351\221\253.js"
@@ -23,6 +23,8 @@
             msg:'basicData.msg.range99999Dec2'
         },
         orderIdType:'year',//鍚庣鐢熸垚璁㈠崟鍙风被鍨嬶紝day:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚,year:鎸夊勾鐢熸垚
+        orderIdTypeLetter:'NG',//璁㈠崟鍙峰墠闈㈠瓧姣�
+        orderIdTypeMantissa:2,//璁㈠崟鍙峰熬鏁颁繚鐣欎綅鏁�  orderIdTypeLetter闀垮害+orderIdTypeMantissa =4
         deliveryIdType:'day',//鍚庣鐢熸垚鍙戣揣鍗曞彿绫诲瀷锛宒ay:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚
         deliveryDate:15,//璁㈠崟鍒涘缓閫佽揣鏃ユ湡 澶╂触7澶╋紝甯稿窞7澶╋紝涔変箤15澶╋紝鏂扮枂15澶�
         columnName:'鍥惧彿',//鎵撳嵃鐢熶骇鍗曟椂闇�瑕佹樉绀虹殑鍒楀悕锛屾病鏈変负绌�
diff --git "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\264\233\351\230\263\345\214\227\347\216\273.js" "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\264\233\351\230\263\345\214\227\347\216\273.js"
index a803204..4d43dde 100644
--- "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\264\233\351\230\263\345\214\227\347\216\273.js"
+++ "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\264\233\351\230\263\345\214\227\347\216\273.js"
@@ -23,6 +23,8 @@
             msg:'basicData.msg.range99999Dec2'
         },
         orderIdType:'day',//鍚庣鐢熸垚璁㈠崟鍙风被鍨嬶紝day:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚,year:姣忓勾鐢熸垚
+        orderIdTypeLetter:'NG',//璁㈠崟鍙峰墠闈㈠瓧姣�
+        orderIdTypeMantissa:2,//璁㈠崟鍙峰熬鏁颁繚鐣欎綅鏁�  orderIdTypeLetter闀垮害+orderIdTypeMantissa =4
         deliveryIdType:'day',
         deliveryDate:15,//璁㈠崟鍒涘缓閫佽揣鏃ユ湡 澶╂触7澶╋紝甯稿窞7澶╋紝涔変箤15澶╋紝鏂扮枂15澶�
         columnName:'鍥惧彿',
diff --git "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\270\251\345\267\236\345\267\250\346\230\237.js" "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\270\251\345\267\236\345\267\250\346\230\237.js"
index 64f34e4..44e1fbb 100644
--- "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\270\251\345\267\236\345\267\250\346\230\237.js"
+++ "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\346\270\251\345\267\236\345\267\250\346\230\237.js"
@@ -23,6 +23,8 @@
             msg:'basicData.msg.range99999Dec2'
         },
         orderIdType:'day',//鍚庣鐢熸垚璁㈠崟鍙风被鍨嬶紝day:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚,year:姣忓勾鐢熸垚
+        orderIdTypeLetter:'NG',//璁㈠崟鍙峰墠闈㈠瓧姣�
+        orderIdTypeMantissa:2,//璁㈠崟鍙峰熬鏁颁繚鐣欎綅鏁�  orderIdTypeLetter闀垮害+orderIdTypeMantissa =4
         deliveryIdType:'day',//鍚庣鐢熸垚鍙戣揣鍗曞彿绫诲瀷锛宒ay:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚
         deliveryDate:15,//璁㈠崟鍒涘缓閫佽揣鏃ユ湡 澶╂触7澶╋紝甯稿窞7澶╋紝涔変箤15澶╋紝鏂扮枂15澶�
         columnName:'鍥惧彿',//鎵撳嵃鐢熶骇鍗曟椂闇�瑕佹樉绀虹殑鍒楀悕锛屾病鏈変负绌�
diff --git "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\351\207\221\345\215\216\345\244\251\346\210\220.js" "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\351\207\221\345\215\216\345\244\251\346\210\220.js"
index f62b7c0..3aa51c4 100644
--- "a/north-glass-erp/northglass-erp/src/stores/sd/companySet/\351\207\221\345\215\216\345\244\251\346\210\220.js"
+++ "b/north-glass-erp/northglass-erp/src/stores/sd/companySet/\351\207\221\345\215\216\345\244\251\346\210\220.js"
@@ -22,7 +22,9 @@
             //regexp:/^(0|[1-9][0-9]{0,3}([.][0-9]{1,2})?)$/,//姝e垯0.00-9999.99
             msg:'basicData.msg.range99999Dec2'
         },
-        orderIdType:'year',//鍚庣鐢熸垚璁㈠崟鍙风被鍨嬶紝day:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚,year:姣忓勾鐢熸垚
+        orderIdType:'day',//鍚庣鐢熸垚璁㈠崟鍙风被鍨嬶紝day:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚,year:姣忓勾鐢熸垚
+        orderIdTypeLetter:'R',//璁㈠崟鍙峰墠闈㈠瓧姣�
+        orderIdTypeMantissa:3,//璁㈠崟鍙峰熬鏁颁繚鐣欎綅鏁�  orderIdTypeLetter闀垮害+orderIdTypeMantissa =4
         deliveryIdType:'day',//鍚庣鐢熸垚鍙戣揣鍗曞彿绫诲瀷锛宒ay:姣忓ぉ鐢熸垚锛宮onth:姣忔湀鐢熸垚
         deliveryDate:15,//璁㈠崟鍒涘缓閫佽揣鏃ユ湡 澶╂触7澶╋紝甯稿窞7澶╋紝涔変箤15澶╋紝鏂扮枂15澶�
         columnName:'鍥惧彿',//鎵撳嵃鐢熶骇鍗曟椂闇�瑕佹樉绀虹殑鍒楀悕锛屾病鏈変负绌�
diff --git a/north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js b/north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js
index e2e4676..09ee61f 100644
--- a/north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js
+++ b/north-glass-erp/northglass-erp/src/stores/sd/order/orderInfo.js
@@ -52,6 +52,11 @@
             }
 
         },
+        searchDeliverFilter:{
+            list:ref([]),
+            data:{}
+
+        },
         projectNo:ref(),
         optimizeData:{
             optimalResults:'',
@@ -117,6 +122,10 @@
                     }
                 }
             }
+            this.searchDeliverFilter={
+                list:[],
+                data:{}
+            }
             this.projectNo=null
             this.optimizeData={
                 optimalResults:null,
diff --git a/north-glass-erp/northglass-erp/src/views/LoginView.vue b/north-glass-erp/northglass-erp/src/views/LoginView.vue
index d84322a..1779d37 100644
--- a/north-glass-erp/northglass-erp/src/views/LoginView.vue
+++ b/north-glass-erp/northglass-erp/src/views/LoginView.vue
@@ -192,11 +192,13 @@
 </template>
 
 <style scoped>
+
 .mainDiv1{
 //background-color: #1890FF;
   //overflow: hidden;
-  width: 100%;
-  height: 100%;
+  width: 100vw;
+  height: 100vh;
+
   display: grid;
   place-items: center; /* 鍚屾椂姘村钩鍜屽瀭鐩村眳涓� */
 }
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
index 10c0027..a17d092 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue
@@ -19,6 +19,8 @@
 import {multiply} from "@/utils/decimal";
 import MaterialAddition from "@/views/mm/ingredientStock/MaterialAddition.vue";
 import {copyTableCellValue} from "@/hook/copyTableCellValue";
+import SelectOrderList from "@/views/sd/delivery/SelectOrderList.vue";
+import { ElDialog } from "element-plus";
 
 //璇█鑾峰彇
 const { t } = useI18n()
@@ -35,6 +37,19 @@
 let otherMoneyVisible = ref(false)
 let otherMoney = ref(null)
 
+const dialogSelectOrderVisible = ref(false); // 鎺у埗寮圭獥鏄剧ず
+const currentOrderIds = ref([]); // 宸叉湁鐨勮鍗旾D锛岀敤浜庢帓闄�
+
+
+// 鍒濆鍖栧凡閫夎鍗旾D锛堝湪onMounted涓皟鐢級
+const initCurrentOrderIds = () => {
+  if (produceList && produceList.length > 0) {
+    const orderIds = produceList.map(item => item.orderId);
+    currentOrderIds.value = [...new Set(orderIds)];
+  }else {
+    currentOrderIds.value = [];
+  }
+};
 
 const hasDecimal=(value)=>{
   const regex=/\./ // 瀹氫箟姝e垯琛ㄨ揪寮忥紝鏌ユ壘灏忔暟鐐�
@@ -209,6 +224,7 @@
         //绂佺敤鎸夐挳
         gridOptions.toolbarConfig.buttons[2].disabled  = true
         gridOptions.toolbarConfig.buttons[3].disabled = true
+        //gridOptions.toolbarConfig.buttons[4].disabled = false
         //鏄剧ず澶嶉�夋
         xGrid.value.showColumn("select")
         gridOptions.loading=false
@@ -245,6 +261,7 @@
         if(titleUploadData.value.deliveryState!==0){
           gridOptions.toolbarConfig.buttons[2].disabled = true
           gridOptions.toolbarConfig.buttons[1].disabled = true
+          //gridOptions.toolbarConfig.buttons[4].disabled = true
         }
         if(titleUploadData.value.deliveryState===0){
           gridOptions.toolbarConfig.buttons[3].disabled = true
@@ -370,6 +387,7 @@
       {'code': 'addToExamine', 'name': t('reportingWorks.saveAndReview'),status: 'primary',icon: 'vxe-icon-save'},
       {'code': 'toExamine', 'name': t('basicData.review'),status: 'primary'},
       {'code': 'CounterExamination', 'name': t('basicData.cancelReview'),status: 'primary'},
+      //{'code': 'addOtherOrders','name': t('璁㈠崟娣诲姞'),'status': 'primary'}
       //{'code': 'glassShelf', 'name': t('finishedGlassShelf.finishedGlassShelfEmit'),status: 'primary'}
     ],
     /*import: false,
@@ -616,6 +634,13 @@
           })
           break
         }
+        case 'addOtherOrders': {
+          // 鏄剧ず寮圭獥鍓嶆洿鏂板凡閫夎鍗旾D
+          initCurrentOrderIds();
+          // 鏄剧ず寮圭獥
+          dialogSelectOrderVisible.value = true;
+          break;
+        }
       }
     }
   },
@@ -826,7 +851,83 @@
 };
 
 
+// 澶勭悊浠嶴electOrderList閫変腑鐨勮鍗�
+const handleSelectedOrders = async (selectedOrders) => {
+  if (!selectedOrders || selectedOrders.length === 0) return;
 
+  // 鍏抽棴寮圭獥
+  dialogSelectOrderVisible.value = false;
+
+  // 楠岃瘉閫変腑鐨勮鍗曟槸鍚︾鍚堟潯浠�
+  const { customerId, project } = titleUploadData.value;
+  const invalidOrders = selectedOrders.filter(order =>
+      order.customerId !== parseInt(customerId) || order.project !== project
+  );
+
+  if (invalidOrders.length > 0) {
+    ElMessage.warning(t('delivery.onlySameCustomerProject'));
+    return;
+  }
+
+  try {
+    // 鏄剧ず鍔犺浇鐘舵��
+    gridOptions.loading = true;
+
+    // 鎵归噺鏌ヨ璁㈠崟鏄庣粏锛堟寜璁㈠崟ID锛�
+    const orderIds = selectedOrders.map(order => order.orderId).join('|');
+    filterData.value.orderId=orderIds
+    request.post("/delivery/getSelectShippingOrderDetails/1/100",filterData.value).then((res) => {
+      if (res.code == 200) {
+        // 澶勭悊杩斿洖鐨勬槑缁嗘暟鎹�
+        const orderDetails = res.data.data || [];
+        //鍚堝苟鏁版嵁
+        mergeData(orderDetails);
+      } else {
+        ElMessage.warning(res.msg || t('basicData.msg.data鑾峰彇澶辫触'));
+      }
+    })
+  } catch (error) {
+    ElMessage.error(t('basicData.msg.ServerConnectionError'));
+    console.error('鏌ヨ璁㈠崟鏄庣粏澶辫触:', error);
+  } finally {
+    // 鍏抽棴鍔犺浇鐘舵��
+    gridOptions.loading = false;
+  }
+};
+
+// 鍚堝苟鏁版嵁锛氬垽鏂璷rderId銆乷rderNumber銆乥oxNo鏄惁鐩稿悓锛岀浉鍚屽垯绱姞鏁伴噺锛屼笉鍚屽垯鏂板
+const mergeData = (newDataList) => {
+  // 澶嶅埗鐜版湁鏁版嵁锛堥伩鍏嶇洿鎺ヤ慨鏀瑰搷搴斿紡婧愭暟鎹級
+  const currentList = [...produceList];
+
+  newDataList.forEach(newItem => {
+    // 鎻愬彇鏂版暟鎹殑鍏抽敭姣斿瀛楁
+    const newOrderId = newItem.orderId;
+    const newOrderNumber = newItem.orderNumber;
+    const newBoxNo = newItem.finishedGoodsInventory?.boxNo || ''; // 澶勭悊鍙兘鐨剈ndefined
+
+    // 鍦ㄧ幇鏈夋暟鎹腑鏌ユ壘鍖归厤椤癸紙涓変釜瀛楁瀹屽叏鐩稿悓锛�
+    const matchedItem = currentList.find(item =>
+        item.orderId === newOrderId &&
+        item.orderNumber === newOrderNumber &&
+        (item.finishedGoodsInventory?.boxNo || '') === newBoxNo
+    );
+
+    if (matchedItem) {
+      // 鎵惧埌鍖归厤椤癸細绱姞鏁伴噺锛堢‘淇濇槸鏁板�肩被鍨嬶級
+      matchedItem.deliveryDetail.quantity = (Number(matchedItem.deliveryDetail.quantity) || 0) +
+          (Number(newItem.deliveryDetail.quantity) || 0);
+    } else {
+      // 鏈壘鍒板尮閰嶉」锛氭柊澧炰竴鏉℃暟鎹�
+      currentList.push(newItem);
+    }
+  });
+
+  // 鏇存柊鍝嶅簲寮忔暟鎹�
+  produceList = currentList;
+  // 鍒锋柊琛ㄦ牸
+  xGrid.value.reloadData(produceList);
+};
 
 </script>
 
@@ -997,6 +1098,22 @@
           @handle-result="handleChildResult2"
       />
     </el-dialog>
+
+    <el-dialog
+        v-model="dialogSelectOrderVisible"
+        :title="t('璁㈠崟娣诲姞')"
+        style="width: 70%;height:75% "
+        destroy-on-close
+        :close-on-click-modal="false"
+        :close-on-press-escape="false">
+      <SelectOrderList
+          style="width: 100%;height: 600px"
+          :customer-id="titleUploadData.customerId"
+          :project="titleUploadData.project"
+          :exclude-order-ids="currentOrderIds"
+          @select-orders="handleSelectedOrders"
+      />
+    </el-dialog>
   </div>
 
 </template>
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
index e065b91..d4ca703 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue
@@ -1,6 +1,6 @@
 <script setup>
 import {Search} from "@element-plus/icons-vue";
-import {reactive, ref} from "vue";
+import {onMounted, reactive, ref} from "vue";
 import {useRouter} from "vue-router"
 import request from "@/utils/request"
 import deepClone from "@/utils/deepClone"
@@ -92,6 +92,10 @@
 
 //绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹�
 let filterData = ref({})
+let sortData = ref({
+  field:'id',
+  order:null
+})
 
 let selectDate = ref(["",""])
 
@@ -103,29 +107,44 @@
   pageSize : 100
 })
 
-//绗竴娆¤皟鐢�
-request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,filterData.value).then((res) => {
-
-  if(res.code==200){
-    total.dataTotal = res.data.total.total*1
-    total.pageTotal= res.data.total.pageTotal
-
-    orderInfo.selectDeliveryDate = res.data.selectDate
-    pageNum.value=1
-    produceList = deepClone(res.data.data)
-    if(company.companyName=='娲涢槼鍖楁柟鐜荤拑鎶�鏈偂浠芥湁闄愬叕鍙�'){
-      xGrid.value.menuConfig.body.options[0][2].visible=true
-      xGrid.value.menuConfig.body.options[0][3].visible=true
-      xGrid.value.menuConfig.body.options[0][4].visible=true
-      xGrid.value.menuConfig.body.options[0][5].visible=true
-    }
-    xGrid.value.loadData(produceList)
-    gridOptions.loading=false
-  }else{
-    ElMessage.warning(res.msg)
-    router.push("/login")
-  }
+onMounted(async () => {
+  filterData.value = orderInfo.searchDeliverFilter.data
+  await getDeliveryList()
+  orderInfo.searchDeliverFilter.list.forEach(item =>{
+    xGrid.value.getColumnByField(item.field).filters = item.column.filters
+  })
 })
+
+const getDeliveryList = async () => {
+  //鍔犺浇璇锋眰
+  const config = {
+    filter: filterData.value,
+    sort: sortData.value
+  }
+  await request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,config).then((res) => {
+
+    if(res.code==200){
+      total.dataTotal = res.data.total.total*1
+      total.pageTotal= res.data.total.pageTotal
+
+      orderInfo.selectDeliveryDate = res.data.selectDate
+      pageNum.value=1
+      produceList = deepClone(res.data.data)
+      if(company.companyName=='娲涢槼鍖楁柟鐜荤拑鎶�鏈偂浠芥湁闄愬叕鍙�'){
+        xGrid.value.menuConfig.body.options[0][2].visible=true
+        xGrid.value.menuConfig.body.options[0][3].visible=true
+        xGrid.value.menuConfig.body.options[0][4].visible=true
+        xGrid.value.menuConfig.body.options[0][5].visible=true
+      }
+      xGrid.value.loadData(produceList)
+      gridOptions.loading=false
+    }else{
+      ElMessage.warning(res.msg)
+      router.push("/login")
+    }
+  })
+}
+
 
 
 //瀹氫箟褰撳墠椤垫暟
@@ -150,7 +169,12 @@
   }else{
     filterData.value[column.property] = value
   }
-  request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,filterData.value).then((res) => {
+
+  const config = {
+    filter: filterData.value,
+    sort: sortData.value
+  }
+  request.post(`/delivery/getSelectShippingOrder/1/${total.pageSize}/${orderInfo.selectDeliveryDate}`,config).then((res) => {
 
     if(res.code==200){
       total.dataTotal = res.data.total.total*1
@@ -162,6 +186,9 @@
         xGrid.value.menuConfig.body.options[0][2].visible=true
         xGrid.value.menuConfig.body.options[0][3].visible=true
       }
+
+      orderInfo.searchDeliverFilter.list = xGrid.value.getCheckedFilters()
+      orderInfo.searchDeliverFilter.data = filterData.value
       gridOptions.loading=false
     }else{
       ElMessage.warning(res.msg)
@@ -172,7 +199,11 @@
 
 
 const selectOrderList = ()=>{
-  request.post(`/delivery/getSelectShippingOrder/${pageNum.value}/${total.pageSize}/${orderInfo.selectDeliveryDate}`,filterData.value).then((res) => {
+  const config = {
+    filter: filterData.value,
+    sort: sortData.value
+  }
+  request.post(`/delivery/getSelectShippingOrder/${pageNum.value}/${total.pageSize}/${orderInfo.selectDeliveryDate}`,config).then((res) => {
 
     if(res.code==200){
       if (res.data.total!=null){
@@ -494,6 +525,10 @@
   },
   cellClick({ row }){
     rowClickIndex.value = row
+  },
+  sortChange ({ field, order }) {
+    sortData.value = {field,order}
+    selectOrderList()
   }
 }
 
@@ -517,6 +552,9 @@
   filterConfig: {   //绛涢�夐厤缃」
     remote: true
   },
+  sortConfig: {   //鎺掑簭閰嶇疆椤�
+    remote: true//鏄惁鏈嶅姟绔帓搴�
+  },
   customConfig: {
     storage: true
   },
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
index f4356c9..79df0df 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue
@@ -1,7 +1,7 @@
 <script setup>
 import {Search} from "@element-plus/icons-vue"
 import {useRouter} from "vue-router"
-import {reactive, ref} from "vue";
+import {onMounted, reactive, ref} from "vue";
 import request from "@/utils/request"
 import deepClone from "@/utils/deepClone"
 import VXETable from "vxe-table";
@@ -18,6 +18,15 @@
 const username = userStore.user.userName
 const userid = userStore.user.userId
 let produceList = ref([])
+
+
+const props = defineProps({
+  customerId: null,
+  project: null,
+  excludeOrderIds: null
+})
+
+const emit = defineEmits(['selectOrders'])
 
 const getTableRow = (row,type) =>{
   switch (type) {
@@ -52,11 +61,6 @@
 //绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹�
 let filterData = ref({
 
-  finishedGoodsInventory:{
-    quantityAvailable:'',
-
-  },
-
 })
 let selectDate = ref(["",""])
 
@@ -68,23 +72,45 @@
 })
 
 
-//绗竴娆¤皟鐢�
-request.post(`/delivery/getSelectOrderInventory/1/${total.pageSize}/${orderInfo.selectOrderListDate}`,filterData.value).then((res) => {
 
-  if(res.code==200){
-    total.dataTotal = res.data.total.total*1
-    total.pageTotal= res.data.total.pageTotal
-    orderInfo.selectOrderListDate = res.data.selectDate
-    pageNum.value=1
-    produceList = deepClone(res.data.data)
-    xGrid.value.loadData(produceList)
-    gridOptions.loading=false
-  }else{
-    ElMessage.warning(res.msg)
-    router.push("/login")
+// 绗竴娆¤皟鐢紝淇敼涓哄甫绛涢�夋潯浠�
+const fetchOrders = async () => {
+
+  await request.post(`/delivery/getSelectOrderInventory/${pageNum.value}/${total.pageSize}/${orderInfo.selectOrderListDate}`, filterData.value).then((res) => {
+    if(res.code==200){
+      total.dataTotal = res.data.total.total*1
+      total.pageTotal= res.data.total.pageTotal
+      orderInfo.selectOrderListDate = res.data.selectDate
+      produceList = deepClone(res.data.data)
+      xGrid.value.loadData(produceList)
+      gridOptions.loading=false
+    }else{
+      ElMessage.warning(res.msg)
+      router.push("/login")
+    }
+  })
+}
+
+
+onMounted(async () => {
+  if (props.customerId !== undefined) {
+    filterData.value.customerId = props.customerId
+    filterData.value.project = props.project
+    filterData.value.excludeOrderIds = props.excludeOrderIds
+    gridOptions.toolbarConfig.buttons[0].visible = false
+
+    await fetchOrders()
+  } else {
+    gridOptions.toolbarConfig.buttons[1].visible = false
+    filterData.value = orderInfo.searchOrderFilter.data
+    await fetchOrders()
+    orderInfo.searchOrderFilter.list.forEach(item => {
+      xGrid.value.getColumnByField(item.field).filters = item.column.filters
+    })
   }
-})
 
+
+})
 
 const changeFilterEvent = (event, option, $panel,) => {
   // 鎵嬪姩瑙﹀彂绛涢��
@@ -104,6 +130,16 @@
   }else{
     filterData.value[column.property] = value
   }
+
+  if(props.customerId!==undefined){
+    filterData.value.customerId = props.customerId
+    filterData.value.project = props.project
+    filterData.value.excludeOrderIds = props.excludeOrderIds
+    gridOptions.toolbarConfig.buttons[0].visible  = false
+  }else{
+    gridOptions.toolbarConfig.buttons[1].visible  = false
+  }
+
   request.post(`/delivery/getSelectOrderInventory/1/${total.pageSize}/${orderInfo.selectOrderListDate}`,filterData.value).then((res) => {
 
     if(res.code==200){
@@ -113,6 +149,13 @@
       pageNum.value=1
       produceList = deepClone(res.data.data)
       xGrid.value.loadData(produceList)
+
+      //涓嶆槸寮圭獥鐣岄潰
+      if(props.customerId===undefined){
+        orderInfo.searchOrderFilter.list = xGrid.value.getCheckedFilters()
+        orderInfo.searchOrderFilter.data = filterData.value
+      }
+
       gridOptions.loading=false
     }else{
       ElMessage.warning(res.msg)
@@ -142,7 +185,7 @@
 
 const changeDate =  ()=>{
   pageNum.value=1
-  selectOrderList()
+  fetchOrders()
 }
 
 //椤佃剼璺宠浆
@@ -150,7 +193,7 @@
   total.pageTotal = pageSize
   pageNum.value=currentPage
 
-  selectOrderList()
+  fetchOrders()
 }
 
 
@@ -201,7 +244,7 @@
     {field: 'customerId',width:120,  title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'customerName',width:120,  title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'quantity',width:120,  title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'finishedGoodsInventory.quantityAvailable',width:120,  title: t('delivery.availableStock'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'finishedGoodsInventory.quantityAvailable',width:120,  title: t('delivery.availableStock'), sortable: true},
     {field: 'project',width:120,  title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'batch',width:120,  title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'money',width:120,   title: t('order.money'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
@@ -215,7 +258,8 @@
   ],//琛ㄥご鎸夐挳
   toolbarConfig: {
     buttons: [
-      {'code': 'add', 'name': t('delivery.delivery'),status: 'primary',icon: 'vxe-icon-add'}
+      {'code': 'add', 'name': t('delivery.delivery'),status: 'primary',icon: 'vxe-icon-add'},
+      {'code': 'update', 'name': t('delivery.delivery'),status: 'primary',icon: 'vxe-icon-add'}
     ],
     /*import: false,
    export: true,
@@ -282,6 +326,37 @@
           router.push({path: '/main/delivery/createDelivery', query: { orderId: order_id }})
           break
         }
+        case 'update': {
+          const selectRecords = $grid.getCheckboxRecords()
+          if (selectRecords.length === 0) {
+            ElMessage.warning(t('productStock.unselectedData'))
+            return
+          }
+
+          // 楠岃瘉鎵�閫夎鍗曟槸鍚︾鍚堟潯浠讹紙铏界劧宸茬瓫閫夛紝浣嗕簩娆¢獙璇佹洿瀹夊叏锛�
+          const customerIdArray = selectRecords.map(item => item.customerId)
+          const projectArray = selectRecords.map(item => item.project?.trim() || '')
+
+          if(!isAllEqual(customerIdArray)){
+            ElMessage.warning(t('delivery.pleaseSelectTheSameCustomerOrder'))
+            return
+          }
+          if(!isAllEqual(projectArray)){
+            ElMessage.warning(t('delivery.pleaseSelectTheSameCustomerProject'))
+            return
+          }
+
+          const simpleOrders = selectRecords.map(order => ({
+            orderId: order.orderId,
+            customerId: order.customerId,
+            project: order.project,
+            // 鍙ˉ鍏呭叾浠栭渶瑕佺殑涓昏鍗曞瓧娈�
+          }));
+
+          // 閫氳繃浜嬩欢杩斿洖缁欑埗缁勪欢
+          emit('select-orders', simpleOrders);
+          break
+        }
       }
     }
   }
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
index a579d0d..0b6cb66 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue
@@ -401,7 +401,9 @@
               creator:userStore.user.userName,
               creatorId:userStore.user.userId,
               newOrderId:newOrderId.value,
-              position:company.position
+              position:company.position,
+              orderIdTypeLetter:company.orderIdTypeLetter,
+              orderIdTypeMantissa:company.orderIdTypeMantissa
             }
             const grossAreaList = $grid.getTableData().fullData.filter(
                 item=>item.grossArea === 0
diff --git a/north-glass-erp/northglass-erp/src/views/system/userLog/UserListLog.vue b/north-glass-erp/northglass-erp/src/views/system/userLog/UserListLog.vue
new file mode 100644
index 0000000..eb3180c
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/system/userLog/UserListLog.vue
@@ -0,0 +1,235 @@
+<script setup>
+import {onBeforeMount, onMounted, reactive, ref} from "vue"
+import {changeFilterEvent,filterChanged} from "@/hook"
+import request from "@/utils/request"
+import {useRouter,useRoute} from "vue-router"
+import {useI18n} from "vue-i18n"
+import {ElMessage, ElMessageBox} from "element-plus"
+import deepClone from "@/utils/deepClone";
+const { t } = useI18n()
+const router = useRouter()
+const route = useRoute()
+const dialogVisible = ref(false)
+const dialogVisibleProcess = ref(false)
+let roleList = ref([])
+//宸ュ簭
+const processValue = ref()
+let userRole= ref({
+  userId:'',
+  roles:[]
+})
+let processRow = ref({
+  process: null,
+  userId:null
+})
+let produceList = ref([])
+const xGrid = ref()
+const gridOptions = reactive({
+  border:  "full",//琛ㄦ牸鍔犺竟妗�
+  keepSource: true,//淇濇寔婧愭暟鎹�
+  align: 'center',//鏂囧瓧灞呬腑
+  stripe:true,//鏂戦┈绾�
+  rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  id: 'userList',
+  showFooter: false,//鏄剧ず鑴�
+  printConfig: {},
+  importConfig: {},
+  exportConfig: {},
+  scrollY:{ enabled: true },//寮�鍚櫄鎷熸粴鍔�
+  showOverflow:true,
+  columnConfig: {
+    resizable: true,
+    useKey: true
+  },
+  filterConfig: {   //绛涢�夐厤缃」
+  },
+  customConfig: {
+    storage: true
+  },
+  editConfig: {
+    trigger: 'click',
+    mode: 'row',
+    showStatus: true
+  },
+
+  //琛ㄥご鍙傛暟
+  columns:[
+    {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left"},
+    {field: 'operator_id',width:120,  title: t('鐧诲綍鍚�'), sortable: true, filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'operator',width:120,  title: t('鐢ㄦ埛鍚�'), sortable: true, filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'format_create_time',width:160,  title: t('鐧诲綍鏃堕棿'),sortable: true},
+  ],
+
+  //琛ㄥご鎸夐挳
+  toolbarConfig: {
+    buttons: [
+
+    ],
+    zoom: true,
+    custom: true
+  },
+})
+
+onMounted(()=>{
+  request.post('/user/getUserLog').then(res=>{
+    if(res.code==200){
+      produceList = deepClone(res.data.data)
+      xGrid.value.loadData(produceList)
+      gridOptions.loading=false
+    }else{
+      ElMessage.warning(res.msg)
+      router.push("/login")
+    }
+  })
+
+})
+
+const getTableRow =  (row,type) => {
+  switch (type) {
+    case 'edit': {
+      userRole.value.roles = []
+      dialogVisible.value = true
+      row.userRoleList.forEach(item=>{
+        userRole.value.roles.push(item.roleId)
+      })
+      userRole.value.userId = row.id
+      break
+    }
+    case 'delete': {
+      request.post(`/userInfo/userDelete/${row.id}`).then((res) => {
+        if(res.code==200 && res.data ===true){
+          ElMessage.success(t('searchOrder.msgDeleteSuccess'))
+          router.push({path:'/main/user/userList',query:{random:Math.random()}})
+        }else{
+          ElMessage.warning(t('searchOrder.msgDeleteFail'))
+        }
+      })
+      break
+    }
+    case 'editProcess': {
+      dialogVisibleProcess.value = true
+      processRow.value.userId = row.id
+      break
+    }
+
+  }
+}
+
+const handleClose = (done) => {
+  userRole.value.roles = []
+  done()
+}
+
+
+
+
+
+
+
+
+
+</script>
+
+<template>
+  <div  style="width: 100%;height: 100%">
+    <div class="main-table">
+      <vxe-grid
+          height="100%"
+          class="mytable-scrollbar"
+          ref="xGrid"
+          v-bind="gridOptions"
+      >
+        <template #filter="{ column, $panel }">
+          <div>
+            <div v-for="(option, index) in column.filters" :key="index">
+              <input
+                  type="type"
+                  v-model="option.data"
+                  @keyup.enter.native="$panel.confirmFilter()"
+                  @input="changeFilterEvent($event, option, $panel)"/>
+            </div>
+          </div>
+        </template>
+
+        <template #button_slot="{ row }">
+          <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{ $t('user.setUpRoles') }}</el-button>
+          <el-button @click="getTableRow(row,'editProcess')" link type="primary" size="small">{{ $t('user.setProcess') }}</el-button>
+          <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
+            <template #reference>
+              <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
+            </template>
+          </el-popconfirm>
+        </template>
+
+        <template #num1_filter="{ column, $panel }">
+          <div>
+            <div v-for="(option, index) in column.filters" :key="index">
+              <input type="type" v-model="option.data" @keyup.enter.native="$panel.confirmFilter()" @input="changeFilterEvent($event, option, $panel)"/>
+            </div>
+          </div>
+        </template>
+      </vxe-grid>
+    </div>
+
+    <el-dialog
+        v-model="dialogVisible"
+        :title="$t('user.roleSelection')"
+        width="30%"
+        :before-close="handleClose"
+    >
+      <span>
+        <el-radio v-for="(item) in roleList"
+                     :label="item.id"
+                     v-model="userRole.roles" >
+          {{item.role}}
+        </el-radio>
+      </span>
+      <template #footer>
+      <span class="dialog-footer">
+        <el-button @click="dialogVisible = false">{{ $t('basicData.cancelButtonText') }}</el-button>
+        <el-button type="primary" @click="roleUpdate">
+          {{ $t('basicData.confirmButtonText') }}
+        </el-button>
+      </span>
+      </template>
+    </el-dialog>
+    <el-dialog
+        v-model="dialogVisibleProcess"
+        :title="$t('user.roleSelection')"
+        width="30%"
+        :before-close="handleClose"
+    >
+      <el-select v-model="processValue" clearable :placeholder="$t('reportingWorks.selectProcess')" default-value="default_city" style="width: 120px">
+        <el-option
+            v-for="item in processRow['process']"
+            :key="item.id"
+            :label="item.basic_name"
+            :value="item.basic_name"
+        />
+      </el-select>
+      <template #footer>
+      <span class="dialog-footer">
+        <el-button @click="dialogVisibleProcess = false">{{ $t('basicData.cancelButtonText') }}</el-button>
+        <el-button type="primary" @click="updateProcess">
+          {{ $t('basicData.confirmButtonText') }}
+        </el-button>
+      </span>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<style scoped>
+.dialog-footer button:first-child {
+  margin-right: 10px;
+}
+.head{
+  width: 100%;
+  height: 35px;
+}
+
+.main-table{
+  width: 100%;
+  height: calc(100% - 0px);
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/system/userLog/UserLog.vue b/north-glass-erp/northglass-erp/src/views/system/userLog/UserLog.vue
new file mode 100644
index 0000000..55f1e9d
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/system/userLog/UserLog.vue
@@ -0,0 +1,61 @@
+<script setup>
+import {ArrowLeftBold, ArrowRight, Search} from "@element-plus/icons-vue"
+import {useRouter,useRoute,onBeforeRouteUpdate} from "vue-router"
+import {useI18n} from "vue-i18n"
+const { t } = useI18n()
+const router = useRouter()
+const route = useRoute()
+let indexFlag=$ref(1)
+function changeRouter(index){
+  indexFlag=index
+}
+
+
+
+
+</script>
+
+<template>
+  <div id="main-div">
+    <div id="div-title">
+      <el-breadcrumb :separator-icon="ArrowRight">
+        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/userLog/userListLog' }">{{$t('鏃ュ織棣栭〉')}}</el-breadcrumb-item>
+        <el-breadcrumb-item v-show="false" />
+      </el-breadcrumb>
+    </div>
+
+    <div id="main-body">
+      <router-view :key="route.fullPath" />
+    </div>
+  </div>
+</template>
+
+<style scoped>
+#main-div{
+  width: 99%;
+  height: 100%;
+}
+#div-title{
+  height: 2%;
+  width: 100%;
+}
+#searchButton{
+  margin-top: -5px;
+  margin-left: 1rem;
+}
+#searchButton1{
+//margin-left: 10rem;
+}
+/*main-body鏍峰紡*/
+#main-body{
+  width: 100%;
+  height: 95%;
+  margin-top: 1%;
+}
+#select{
+  margin-left:0.5rem;
+}
+:deep(.indexTag .el-breadcrumb__inner){
+  color: #5CADFE !important;
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/AppController.java b/north-glass-erp/src/main/java/com/example/erp/controller/AppController.java
index cb889b9..38f1f81 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/AppController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/AppController.java
@@ -67,12 +67,14 @@
 
     @ApiOperation("鍙叆搴撶殑鎴愬搧鏌ヨ鎺ュ彛")
     @PostMapping("/getSelectWarehousingList")
+    @SaCheckPermission("createProductStock.search")
     public Result getSelectWarehousingList(@RequestBody Map<String,String> map){
         return Result.success(finishedGoodsInventoryService.getSelectWarehousingApp(map.get("processId")));
     }
 
     @ApiOperation("鎴愬搧鍏ュ簱鎺ュ彛")
     @PostMapping("/addSelectWarehousing")
+    @SaCheckPermission("createProductStock.add")
     public Result addSelectWarehousing( @RequestBody Map<String,Object> object){
         return Result.success(finishedGoodsInventoryService.addSelectWarehousing(object));
 
@@ -80,12 +82,14 @@
 
     @ApiOperation("鍙彂璐х殑鎴愬搧鏌ヨ鎺ュ彛")
     @PostMapping("/getSelectDeliveryDetailList")
+    @SaCheckPermission("finishedProductOut.search")
     public Result getSelectDeliveryDetailList(){
         return Result.success(finishedGoodsInventoryService.getSelectDeliveryDetailApp());
     }
 
     @ApiOperation("鎴愬搧鍑哄簱鎺ュ彛")
     @PostMapping("/addDeliveryDetail")
+    @SaCheckPermission("finishedProductOut.add")
     public Result addDeliveryDetail( @RequestBody Map<String,Object>  object){
         return Result.success(finishedGoodsInventoryService.addDeliveryDetail(object));
     }
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java b/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
index 55a04c9..63f3dd4 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/sd/DeliveryController.java
@@ -39,8 +39,8 @@
     @ApiOperation("鍙戣揣璁㈠崟鏌ヨ鎺ュ彛")
     @SaCheckPermission("selectDelivery.search")
     @PostMapping("/getSelectShippingOrder/{pageNum}/{pageSize}/{selectDate}")
-    public Result getSelectShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody Delivery delivery) throws JsonProcessingException {
-        return Result.success(deliveryService.getSelectShippingOrder(pageNum,pageSize,selectDate,delivery));
+    public Result getSelectShippingOrder(@PathVariable Integer pageNum, @PathVariable Integer pageSize,@PathVariable List<String> selectDate, @RequestBody Map<String,Object> config) throws JsonProcessingException {
+        return Result.success(deliveryService.getSelectShippingOrder(pageNum,pageSize,selectDate,config));
     }
 
     /*鍙戣揣鎶ヨ〃鏌ヨ*/
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java b/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java
index 2f57860..5269f53 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/userInfo/UserController.java
@@ -68,4 +68,10 @@
         return Result.success( userService.updateUserName(object));
     }
 
+    @ApiOperation("鐢ㄦ埛鐧诲綍璁板綍")
+    @PostMapping("/getUserLog")
+    public Result getUserLog(){
+        return Result.success( userService.getUserLog());
+    }
+
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/dto/sd/DeliverySearchDTO.java b/north-glass-erp/src/main/java/com/example/erp/dto/sd/DeliverySearchDTO.java
new file mode 100644
index 0000000..22de8e2
--- /dev/null
+++ b/north-glass-erp/src/main/java/com/example/erp/dto/sd/DeliverySearchDTO.java
@@ -0,0 +1,74 @@
+package com.example.erp.dto.sd;
+
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.example.erp.entity.sd.Order;
+import lombok.Data;
+
+import java.time.LocalDate;
+
+
+@Data
+public class DeliverySearchDTO {
+    @ExcelProperty("缂栧彿")
+    private Long id;
+    @ExcelProperty("鍙戣揣鐘舵��")
+    private Integer deliveryState;
+    @ExcelProperty("鍑哄簱鐘舵��")
+    private Integer stockState;
+    @ExcelProperty("浠樻鏉′欢")
+    private String paymentTerms;
+    @ExcelProperty("鍙戣揣鍗曞彿")
+    private String deliveryId;
+    @ExcelProperty("璁㈠崟缂栧彿")
+    private String orderId;
+    @ExcelProperty("椤圭洰鍚嶇О")
+    private String project;
+    @ExcelProperty("瀹㈡埛缂栧彿")
+    private String customerId;
+    @ExcelProperty("瀹㈡埛鍚嶇О")
+    private String customerName;
+    @ExcelProperty("鍙戣揣鏃ユ湡")
+    private LocalDate deliveryDate;
+    @ExcelProperty("鏀粯鏂瑰紡")
+    private String payMethod;
+    @ExcelProperty("鏀粯鏃ユ湡")
+    private LocalDate payDate;
+    @ExcelProperty("閿�鍞汉id")
+    private String salesmanId;
+    @ExcelProperty("閿�鍞汉")
+    private String salesman;
+    @ExcelProperty("鍒涘缓浜篿d")
+    private String creatorId;
+    @ExcelProperty("鍒涘缓浜�")
+    private String creator;
+    @ExcelProperty("鑱旂郴浜�")
+    private String contacts;
+    @ExcelProperty("鑱旂郴鐢佃瘽")
+    private String contactNumber;
+    @ExcelProperty("閫佽揣鍦板潃")
+    private String deliveryAddress;
+    @ExcelProperty("闈㈢Н")
+    private Double area;
+    @ExcelProperty("鏁伴噺")
+    private Integer quantity;
+    @ExcelProperty("鎬婚噾棰�")
+    private Double money;
+    @ExcelProperty("鍏朵粬閲戦")
+    private Double otherMoney;
+    @ExcelProperty("杩愯垂閲戦")
+    private Double freight;
+    @ExcelProperty("杩愯垂鏁伴噺")
+    private Integer freightQuantity;
+    @ExcelProperty("杩愯垂鍗曚环")
+    private Double freightPrice;
+    @ExcelProperty("鎵撳嵃娆℃暟")
+    private Integer printingNumber;
+    @ExcelProperty("澶囨敞")
+    private String remarks;
+    @ExcelProperty("鍒涘缓鏃堕棿")
+    private LocalDate createTime;
+    @ExcelProperty("淇敼鏃堕棿")
+    private LocalDate updateTime;
+
+    private Order order;
+}
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java b/north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java
index da7be5d..abf8760 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java
@@ -9,6 +9,7 @@
 import lombok.Data;
 
 import java.time.LocalDate;
+import java.util.List;
 
 @Data
 @TableName("sd.`order`")
@@ -105,6 +106,8 @@
     private Integer goodsQuantity;
     @TableField(select = false,exist = false)
     private String timeOut;
+    @TableField(select = false,exist = false)
+    private List<String> excludeOrderIds;
 
     @TableField(value = "customer_id")
     private Customer  customer;
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java
index b063e68..a7a7a6d 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/DeliveryMapper.java
@@ -1,5 +1,6 @@
 package com.example.erp.mapper.sd;
 
+import com.example.erp.dto.sd.DeliverySearchDTO;
 import com.example.erp.entity.pp.FlowCard;
 import com.example.erp.entity.sd.Delivery;
 import com.example.erp.entity.sd.DeliveryDetail;
@@ -17,7 +18,7 @@
 
     List<Delivery> getSelectShippingOrder(@Param("offset") Integer offset,
                                                       @Param("pageSize") Integer pageSize,String startDate, String endDate,
-                                                      @Param("delivery") Delivery delivery);
+                                                      @Param("delivery") DeliverySearchDTO delivery,String field, String orderBy);
 
    Delivery getSelectShippingOrderDetailDelivery(@Param("offset") Integer offset,
                                                              @Param("pageSize") Integer pageSize,
@@ -30,7 +31,7 @@
     Order getSelectShippingOrderDetailDeliverys(@Param("offset") Integer offset,
                                                  @Param("pageSize") Integer pageSize,
                                                  @Param("orderDetail") OrderDetail orderDetail);
-    Map<String,Integer> getSelectShippingOrderPageTotal(Integer offset, Integer pageSize, String startDate, String endDate, Delivery delivery);
+    Map<String,Integer> getSelectShippingOrderPageTotal(Integer offset, Integer pageSize, String startDate, String endDate, DeliverySearchDTO delivery);
 
     List<Order> getSelectOrderInventory(@Param("offset") Integer offset,
                                         @Param("pageSize") Integer pageSize,String startDate, String endDate,
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java
index ac9a6a0..fc5fc75 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/userInfo/UserMapper.java
@@ -8,6 +8,7 @@
 import org.apache.ibatis.annotations.Select;
 
 import java.util.List;
+import java.util.Map;
 
 @Mapper
 
@@ -41,4 +42,6 @@
     List<User> findByAddress(String userName);
 
     String selectOptimizeParmsById(@Param("username") String username);
+
+    List<Map<String, Object>> getUserLog();
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
index f659512..8eb787d 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/DeliveryService.java
@@ -10,6 +10,8 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.example.erp.dto.sd.DeliveryDetailDTO;
 import com.example.erp.dto.sd.DeliveryDetailProductDTO;
+import com.example.erp.dto.sd.DeliverySearchDTO;
+import com.example.erp.dto.sd.OrderSearchDTO;
 import com.example.erp.entity.mm.FinishedOperateLog;
 import com.example.erp.entity.sd.*;
 import com.example.erp.entity.userInfo.Log;
@@ -60,7 +62,7 @@
     FinishedGoodsInventoryService finishedGoodsInventoryService;
 
 
-    public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Delivery delivery) throws JsonProcessingException {
+    public Map<String, Object> getSelectShippingOrder(Integer pageNum, Integer pageSize,List<String> selectDate, Map<String,Object> config) throws JsonProcessingException {
         Integer offset = (pageNum - 1) * pageSize;
         String endDate = LocalDate.now().toString();
         String startDate = LocalDate.now().minusDays(15).toString();
@@ -72,8 +74,14 @@
                 endDate = selectDate.get(1);
             }
         }
+        JSONObject orderJson = new JSONObject(config);
+        DeliverySearchDTO delivery = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("filter")), DeliverySearchDTO.class);
+        Map<String,String> sortDate = (Map<String, String>) config.get("sort");
+        String field = sortDate.get("field").replaceAll("(?<!^)([A-Z])", "_$1").toLowerCase();
+        String orderBy = sortDate.get("order");
+
         Map<String, Object> map = new HashMap<>();
-        map.put("data", deliveryMapper.getSelectShippingOrder(offset, pageSize,startDate,endDate, delivery));
+        map.put("data", deliveryMapper.getSelectShippingOrder(offset, pageSize,startDate,endDate, delivery,field, orderBy));
         map.put("total", deliveryMapper.getSelectShippingOrderPageTotal(offset, pageSize,startDate,endDate, delivery));
         List<String> list = new ArrayList<>();
         list.add(startDate);
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
index 1ce87df..9e6e1ee 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java
@@ -29,7 +29,6 @@
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
-import java.sql.SQLOutput;
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.time.LocalDate;
@@ -67,6 +66,8 @@
     public boolean saveOrder(Map<String,Object> orderMap) throws Exception {
         JSONObject orderJson = new JSONObject(orderMap);
         String orderIdType = orderJson.getString("orderIdType");
+        String orderIdTypeLetter = orderJson.getString("orderIdTypeLetter");
+        Integer orderIdTypeMantissa = orderJson.getInteger("orderIdTypeMantissa");
         Order order = JSONObject.parseObject(JSONObject.toJSONString(orderJson.get("title")), Order.class);
         List<OrderDetail> OrderDetails = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("detail")), OrderDetail.class);
         List<OrderOtherMoney> orderOtherMoneyList = JSONArray.parseArray(JSONObject.toJSONString(orderJson.get("otherMoney")), OrderOtherMoney.class);
@@ -85,7 +86,12 @@
             log.setContent(orderMap.toString());
 
             if(order.getOrderId() == null || order.getOrderId().isEmpty()){
-                insertOrder(order,OrderDetails,orderOtherMoneyList,orderIdType, (Map<String, String>) orderMap.get("position"));
+                insertOrder(order,
+                        OrderDetails,orderOtherMoneyList,orderIdType,
+                        (Map<String, String>) orderMap.get("position"),
+                        orderIdTypeLetter,
+                        orderIdTypeMantissa
+                );
                 log.setFunction("saveOrder鍒涘缓:"+order.getOrderId());
             }else {
                 updateOrder(order,OrderDetails,orderOtherMoneyList,(Map<String, String>) orderMap.get("position"));
@@ -165,9 +171,9 @@
         return map;
     }
     //鐢熸垚璁㈠崟鏁版嵁
-    public void insertOrder(Order order, List<OrderDetail> OrderDetails, List<OrderOtherMoney> orderOtherMoneyList, String orderIdType, Map<String,String> position) {
+    public void insertOrder(Order order, List<OrderDetail> OrderDetails, List<OrderOtherMoney> orderOtherMoneyList, String orderIdType, Map<String,String> position, String orderIdTypeLetter, Integer orderIdTypeMantissa) {
         //鏍规嵁浼犲叆鐨勫綋鍓嶆湀浠芥垨鑰呭綋澶╃敓鎴愯鍗昳d
-        String orderId =  getOrderId(orderIdType);
+        String orderId =  getOrderId(orderIdType,orderIdTypeLetter,orderIdTypeMantissa);
         //寰�涓昏〃鎻掓暟鎹�
         order.setOrderId(orderId);
         order.setCreateOrder(2);
@@ -175,32 +181,34 @@
         insertOtherDetail(orderId,OrderDetails,orderOtherMoneyList,position);
     }
 
-    private String getOrderId(String dateType){
+    private String getOrderId(String dateType, String orderIdTypeLetter, Integer orderIdTypeMantissa){
         String orderId = null;
+        Integer orderIdTypeLetterLen = orderIdTypeLetter.length();
+        Integer count = orderIdTypeLetterLen+orderIdTypeMantissa;
         if(dateType==null || dateType.equals("day")){
             Integer maxOrderId = orderMapper.selectMaxOrderId();
             //鏌ヨ璁㈠崟id锛屽苟涓旇嚜澧�
-            String formattedNumber = String.format("%02d", maxOrderId+1);
+            String formattedNumber = String.format("%0"+orderIdTypeMantissa+"d", maxOrderId+1);
             //鏍煎紡鍖栧綋鍓嶆棩鏈�
             Date currentDate = new Date();
             SimpleDateFormat dateFormat = new SimpleDateFormat("yyMMdd");
             String formattedDate = dateFormat.format(currentDate);
-            orderId =  "NG"+formattedDate+formattedNumber;
+            orderId =  orderIdTypeLetter+formattedDate+formattedNumber;
         }else if(dateType.equals("month")){
             Integer maxOrderId = orderMapper.selectMaxOrderIdByMonth();
-            String formattedNumber = String.format("%04d", maxOrderId+1);
+            String formattedNumber = String.format("%0"+(orderIdTypeMantissa+2)+"d", maxOrderId+1);
             Date currentDate = new Date();
             SimpleDateFormat dateFormat = new SimpleDateFormat("yyMM");
             String formattedDate = dateFormat.format(currentDate);
-            orderId =  "NG"+formattedDate+formattedNumber;
+            orderId =  orderIdTypeLetter+formattedDate+formattedNumber;
 
         }else if(dateType.equals("year")){
             Integer maxOrderId = orderMapper.selectMaxOrderIdByYear();
-            String formattedNumber = String.format("%06d", maxOrderId+1);
+            String formattedNumber = String.format("%"+(orderIdTypeMantissa+4)+"d", maxOrderId+1);
             Date currentDate = new Date();
             SimpleDateFormat dateFormat = new SimpleDateFormat("yy");
             String formattedDate = dateFormat.format(currentDate);
-            orderId =  "NG"+formattedDate+formattedNumber;
+            orderId =  orderIdTypeLetter+formattedDate+formattedNumber;
         }
         return orderId;
     }
@@ -1045,6 +1053,7 @@
         List<Order> list = orderMapper.selectList(new LambdaQueryWrapper<Order>()
                 .apply("create_order > 0")
                 .apply("date(create_time) between {0} and {1}",startDate, endDate)
+                .orderByDesc(Order::getOrderId)
         );
         Integer quantity = 0;
         Double area = 0.00;
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java b/north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java
index 3b0510c..64ca017 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/userInfo/UserService.java
@@ -5,11 +5,13 @@
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.example.erp.controller.dto.UserDTO;
+import com.example.erp.entity.userInfo.Log;
 import com.example.erp.entity.userInfo.Role;
 import com.example.erp.entity.userInfo.User;
 import com.example.erp.mapper.pp.ProductionSchedulingMapper;
 import com.example.erp.mapper.userInfo.*;
 import com.example.erp.tools.TokenTools;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
@@ -27,6 +29,9 @@
 
    private final PermissionRoleMapper permissionRoleMapper;
     private final ProductionSchedulingMapper productionSchedulingMapper;
+
+    @Autowired
+    LogService logService;
 
     public UserService(UserMapper userMapper, RoleMapper roleMapper, PermissionRoleMapper permissionRoleMapper, UserRoleMapper userRoleMapper, ProductionSchedulingMapper productionSchedulingMapper) {
         this.userMapper = userMapper;
@@ -142,6 +147,13 @@
             userDTO.setToken(StpUtil.getTokenValue());
             Boolean userIsAdmin= userRoleMapper.getUserIsAdmin(user.getId());
             userDTO.setPermissions(permissionRoleMapper.getUserEditPermission(user.getId(),userIsAdmin));
+
+            Log log = new Log();
+            log.setOperator(user.getUserName());
+            log.setOperatorId(userDTO.getUserId());
+            log.setContent(userDTO.toString());
+            log.setFunction("鐢ㄦ埛鐧诲綍");
+            logService.saveLog(log);
             return userDTO;
         }else{
             return null;
@@ -208,6 +220,12 @@
         return map;
     }
 
+    public Object getUserLog() {
+        Map<String, Object> map = new HashMap<>();
+        map.put("data", userMapper.getUserLog());
+        return map;
+    }
+
 
 //鏌ヨ鐢ㄦ埛浼樺寲鍙傛暟
 public String getOptimizeParms(String username) {
diff --git a/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
index 98993d9..e921024 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/DeliveryDetailMapper.xml
@@ -486,6 +486,7 @@
                 and od.perimeter regexp #{orderDetail.perimeter}
             </if>
         </where>
+        order by od.order_id,od.order_number
     </select>
 
     <select id="getSelectShippingOrderDetailsPageTotal">
diff --git a/north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml
index 337f2c0..57931dc 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/DeliveryMapper.xml
@@ -179,9 +179,6 @@
             <if test="order.createTime != null and order.createTime != ''">
                 and o.create_time REGEXP #{order.createTime}
             </if>
-            <if test="order.finishedGoodsInventory.quantityAvailable != null and order.finishedGoodsInventory.quantityAvailable != ''">
-                and fgi.quantity_available REGEXP #{order.finishedGoodsInventory.quantityAvailable}
-            </if>
         </where>
         group by o.order_id order by o.id desc
         limit #{offset},#{pageSize};
@@ -236,9 +233,6 @@
             </if>
             <if test="order.createTime != null and order.createTime != ''">
                 and o.create_time REGEXP #{order.createTime}
-            </if>
-            <if test="order.finishedGoodsInventory.quantityAvailable != null and order.finishedGoodsInventory.quantityAvailable != ''">
-                and fgi.quantity_available REGEXP #{order.finishedGoodsInventory.quantityAvailable}
             </if>
         </where>
         group by o.order_id limit #{offset},#{pageSize}) as zu;
@@ -350,7 +344,16 @@
 
             </where>
         group by d.delivery_id
-        order by d.id desc
+        order by
+        <if test="orderBy == null ">
+            d.id desc
+        </if>
+        <if test="orderBy == 'desc'">
+            d.${field} desc
+        </if>
+        <if test="orderBy == 'asc'">
+            d.${field}
+        </if>
         limit #{offset},#{pageSize};
     </select>
 
diff --git a/north-glass-erp/src/main/resources/mapper/userInfo/User.xml b/north-glass-erp/src/main/resources/mapper/userInfo/User.xml
index 6629db6..c10d566 100644
--- a/north-glass-erp/src/main/resources/mapper/userInfo/User.xml
+++ b/north-glass-erp/src/main/resources/mapper/userInfo/User.xml
@@ -110,5 +110,10 @@
             SELECT optimize_parms FROM erp_user_info.user WHERE user_name = #{username}
         </select>
 
+    <select id="getUserLog" >
+        SELECT operator_id,operator,DATE_FORMAT(create_time, '%Y-%m-%d %H:%i:%s') AS format_create_time
+        FROM erp_log.log
+        WHERE create_time >= DATE_SUB(NOW(), INTERVAL 1 MONTH) and `function`='鐢ㄦ埛鐧诲綍' order by create_time desc limit 0,100
+    </select>
 
 </mapper>
\ No newline at end of file

--
Gitblit v1.8.0