From d56944a1e0776da3f270353a902d5954e3373cee Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期三, 19 六月 2024 09:46:16 +0800
Subject: [PATCH] Merge branch 'master' of http://bore.pub:10439/r/ERP_override

---
 north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue                          |   98 +++-
 north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml                         |   22 +
 north-glass-erp/src/main/resources/mapper/sd/ProductMapper.xml                             |   14 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/MaterialOutbound.vue       |    2 
 north-glass-erp/northglass-erp/src/main.js                                                 |    2 
 north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml                               |    5 
 north-glass-erp/northglass-erp/src/lang/zh.js                                              |   19 
 north-glass-erp/northglass-erp/src/stores/sd/companyInfo.js                                |   14 
 north-glass-erp/northglass-erp/src/components/BasicTable.vue                               |   12 
 north-glass-erp/northglass-erp/src/components/sd/order/OrderCraftDetail.vue                |    2 
 north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue                   |    2 
 north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java                   |    4 
 north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java           |   22 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java                   |    4 
 north-glass-erp/northglass-erp/src/components/sd/order/OrderSizeCheck.vue                  |   14 
 north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue                    |   22 
 north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue                  |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ReworkRecord.vue              |    2 
 north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue                     |   16 
 north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue                |    4 
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue                          |   20 
 north-glass-erp/northglass-erp/src/components/sd/product/BasicTable.vue                    |   13 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorageCreate.vue  |    2 
 north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderDetailMapper.java             |    6 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/StorageRecord.vue             |    2 
 north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue                     |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue           |    2 
 north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet1.vue                     |  290 ++++++++++++++
 north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue                    |    6 
 north-glass-erp/northglass-erp/src/components/sd/order/OrderDetail.vue                     |    4 
 north-glass-erp/northglass-erp/src/components/pp/TagStyle.vue                              |   32 
 north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue                           |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue           |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue |    4 
 north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet2.vue                     |  299 ++++++++++++++
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue     |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue             |    2 
 north-glass-erp/northglass-erp/package-lock.json                                           |   17 
 north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue                        |    2 
 north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue                    |    4 
 north-glass-erp/northglass-erp/config.js                                                   |    2 
 north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue                 |   38 
 north-glass-erp/src/main/java/com/example/erp/service/sd/OrderService.java                 |   77 +++
 north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorage.vue        |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue        |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue        |    2 
 north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue                    |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue            |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue     |    2 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue          |    2 
 north-glass-erp/northglass-erp/package.json                                                |    1 
 north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateOutBound.vue         |    4 
 north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue                    |    2 
 north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue               |    2 
 north-glass-erp/northglass-erp/src/components/sd/product/GlassType.vue                     |    4 
 north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue        |    2 
 56 files changed, 987 insertions(+), 154 deletions(-)

diff --git a/north-glass-erp/northglass-erp/config.js b/north-glass-erp/northglass-erp/config.js
index 02bde44..c7a5b3d 100644
--- a/north-glass-erp/northglass-erp/config.js
+++ b/north-glass-erp/northglass-erp/config.js
@@ -1,4 +1,4 @@
 export default {
-  serverUrl:"localhost:8086"
+  serverUrl:"localhost:8086",
   //serverUrl:"192.168.1.199:8086"
 }
diff --git a/north-glass-erp/northglass-erp/package-lock.json b/north-glass-erp/northglass-erp/package-lock.json
index 0e3380f..6dfc7aa 100644
--- a/north-glass-erp/northglass-erp/package-lock.json
+++ b/north-glass-erp/northglass-erp/package-lock.json
@@ -21,6 +21,7 @@
         "vue-draggable-plus": "^0.5.0",
         "vue-i18n": "^9.10.1",
         "vue-router": "^4.2.4",
+        "vue3-print-nb": "^0.1.4",
         "vxe-table": "^4.5.15",
         "xe-utils": "^3.5.14",
         "xlsx": "^0.18.5"
@@ -1824,6 +1825,14 @@
         "vue": "^3.2.0"
       }
     },
+    "node_modules/vue3-print-nb": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz",
+      "integrity": "sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==",
+      "dependencies": {
+        "vue": "^3.0.5"
+      }
+    },
     "node_modules/vxe-table": {
       "version": "4.5.15",
       "resolved": "https://registry.npmjs.org/vxe-table/-/vxe-table-4.5.15.tgz",
@@ -3078,6 +3087,14 @@
         "@vue/devtools-api": "^6.5.0"
       }
     },
+    "vue3-print-nb": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmmirror.com/vue3-print-nb/-/vue3-print-nb-0.1.4.tgz",
+      "integrity": "sha512-LExI7viEzplR6ZKQ2b+V4U0cwGYbVD4fut/XHvk3UPGlT5CcvIGs6VlwGp107aKgk6P8Pgx4rco3Rehv2lti3A==",
+      "requires": {
+        "vue": "^3.0.5"
+      }
+    },
     "vxe-table": {
       "version": "4.5.15",
       "resolved": "https://registry.npmjs.org/vxe-table/-/vxe-table-4.5.15.tgz",
diff --git a/north-glass-erp/northglass-erp/package.json b/north-glass-erp/northglass-erp/package.json
index 91869c3..95045cb 100644
--- a/north-glass-erp/northglass-erp/package.json
+++ b/north-glass-erp/northglass-erp/package.json
@@ -21,6 +21,7 @@
     "vue-draggable-plus": "^0.5.0",
     "vue-i18n": "^9.10.1",
     "vue-router": "^4.2.4",
+    "vue3-print-nb": "^0.1.4",
     "vxe-table": "^4.5.15",
     "xe-utils": "^3.5.14",
     "xlsx": "^0.18.5"
diff --git a/north-glass-erp/northglass-erp/src/components/BasicTable.vue b/north-glass-erp/northglass-erp/src/components/BasicTable.vue
index 7ceaba3..76d5f79 100644
--- a/north-glass-erp/northglass-erp/src/components/BasicTable.vue
+++ b/north-glass-erp/northglass-erp/src/components/BasicTable.vue
@@ -47,7 +47,7 @@
       options: [
         [
 
-          { code: 'exportExcelChecked', name: '瀵煎嚭閫変腑', prefixIcon: 'vxe-icon-download', visible: true }
+          { code: 'exportExcelChecked', name: t('components.exportSelected'), prefixIcon: 'vxe-icon-download', visible: true }
         ]
       ]
     }
@@ -72,7 +72,7 @@
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
-          return '鍚堣:'
+          return t('basicData.total')
         }
         if (props.childrenData.footList.includes(column.field)) {
           return sumNum(data, column.field)
@@ -191,8 +191,8 @@
     <el-date-picker
         v-model="basicProp.selectDate"
         type="daterange"
-        start-placeholder="寮�濮嬫椂闂�"
-        end-placeholder="缁撴潫鏃堕棿"
+        :start-placeholder="$t('basicData.startDate')"
+        :end-placeholder="$t('basicData.endDate')"
         format="YYYY-MM-DD"
         value-format="YYYY-MM-DD"
     />
@@ -201,7 +201,7 @@
         id="searchButton"
         type="primary"
         style="margin-top: -5px"
-        :icon="Search">鏌ヨ</el-button>
+        :icon="Search">{{$t('basicData.search')}}</el-button>
     <div class="order-detail">
       <vxe-grid
           @filter-change="filterChanged"
@@ -234,7 +234,7 @@
                       @click="exportExcel(props.childrenData.exportUrl,
                                           props.childrenData.exportName,
                                           basicProp.selectDate)">
-            瀵煎嚭</vxe-button>
+            {{$t('basicData.export')}}</vxe-button>
         </template>
 
         <template #pager>
diff --git a/north-glass-erp/northglass-erp/src/components/pp/TagStyle.vue b/north-glass-erp/northglass-erp/src/components/pp/TagStyle.vue
index 331b65a..f63d8fe 100644
--- a/north-glass-erp/northglass-erp/src/components/pp/TagStyle.vue
+++ b/north-glass-erp/northglass-erp/src/components/pp/TagStyle.vue
@@ -61,11 +61,11 @@
 })
 
 const saveTag = () => {
-  ElMessageBox.prompt( '鏂板鏍囩鍚�:', {
-    confirmButtonText: '淇濆瓨',
-    cancelButtonText: '鍙栨秷',
+  ElMessageBox.prompt( t('components.addNewSignature')+':', {
+    confirmButtonText: t('basicData.save'),
+    cancelButtonText: t('basicData.cancelButtonText'),
     inputPattern:/^.{1,20}$/,
-    inputErrorMessage: '璇疯緭鍏�20涓瓧绗︿互鍐呯殑涓斾笉涓虹┖鐨勫瓧绗�',
+    inputErrorMessage: t('components.message'),
     inputValue:tag.value.name
   }).then(({ value }) => {
       tag.value.name = value
@@ -73,7 +73,7 @@
       tag.value.size = JSON.stringify(size.value)
       request.post('tagStyle/saveTag',tag.value).then(res => {
         if(res.code === '200' && res.data===true){
-          ElMessage.success("淇濆瓨鎴愬姛")
+          ElMessage.success(t('basicData.msg.saveSuccess'))
           getTags()
         }
       })
@@ -130,7 +130,7 @@
 const deleteTag = () => {
   request.post(`tagStyle/deleteTag/${tag.value.id}`).then(res => {
     if(res.code === '200' && res.data===true){
-      ElMessage.success("鍒犻櫎鎴愬姛")
+      ElMessage.success(t('basicData.msg.deleteSuccess'))
       getTags()
       close()
     }
@@ -159,7 +159,7 @@
     <el-container style="width: 100%;height: 100%;">
       <el-aside  width="200px">
         <el-collapse v-model="activeName" accordion>
-          <el-collapse-item title="鏍囩鍒楄〃" name="1">
+          <el-collapse-item :title="$t('components.orderHeader')" name="1">
             <div v-for="(tag,index) in tags"
                  :class="{'tag-active':index===clickIndex}"
                  @dblclick="searchTag(tag,index)">
@@ -176,8 +176,8 @@
                 v-model="tag.type"
                 @change="changeType"
                 placeholder="" >
-              <el-option label="鎴愬搧" :value="1"/>
-              <el-option label="鍗婃垚鍝�" :value="2"/>
+              <el-option :label="$t('components.finishedProduct')" :value="1"/>
+              <el-option :label="$t('components.semiFinishedProducts')" :value="2"/>
             </el-select>
             <el-select placeholder="璁㈠崟琛ㄥご">
               <el-option @click="addList(keys,item)"
@@ -230,22 +230,22 @@
         <el-footer style="padding-top: 0.5rem">
           <el-popconfirm
               width="220"
-              confirm-button-text="纭畾"
-              cancel-button-text="鍙栨秷"
+              :confirm-button-text="$t('basicData.confirmButtonText')"
+              :cancel-button-text="$t('basicData.cancelButtonText')"
               :icon="InfoFilled"
               icon-color="#626AEF"
-              title="纭畾鍒犻櫎?"
+              :title="$t('searchOrder.deleteConfirm')"
               @confirm="deleteTag"
               v-if="tag.id!==null"
           >
             <template #reference>
-              <el-button type="primary"  style="float: left"  >鍒犻櫎</el-button>
+              <el-button type="primary"  style="float: left"  >{{ $t('basicData.delete') }}</el-button>
             </template>
           </el-popconfirm>
 
-          <el-button type="primary" @click="clearList">娓呯┖</el-button>
-          <el-button v-if="tag.id===null" type="primary" @click="saveTag" >鏂板</el-button>
-          <el-button v-else type="primary" @click="saveTag" >淇敼</el-button>
+          <el-button type="primary" @click="clearList">{{ $t('basicData.empty') }}</el-button>
+          <el-button v-if="tag.id===null" type="primary" @click="saveTag" >{{ $t('basicData.insert') }}</el-button>
+          <el-button v-else type="primary" @click="saveTag" >{{ $t('basicData.update') }}</el-button>
         </el-footer>
       </el-container>
     </el-container>
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/OrderCraftDetail.vue b/north-glass-erp/northglass-erp/src/components/sd/order/OrderCraftDetail.vue
index e6b3b98..1e06987 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/OrderCraftDetail.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/OrderCraftDetail.vue
@@ -91,7 +91,7 @@
       </template>
 
       <template #default_shape="{ row }">
-        <span>{{ row.shape==='1'?'鏅舰':row.shape==='2'?'寮傚舰':null }}</span>
+        <span>{{ row.shape==='1'?$t('order.universalShape'):row.shape==='2'?$t('order.alien'):null }}</span>
       </template>
 
     </vxe-grid>
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/OrderDetail.vue b/north-glass-erp/northglass-erp/src/components/sd/order/OrderDetail.vue
index 23a7d0a..f6bb491 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/OrderDetail.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/OrderDetail.vue
@@ -46,7 +46,7 @@
     {field: 'computeArea',width:180,  title: t('order.computeArea'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
     {field: 'computeGrossArea',width:200,  title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
     {field: 'processingNote',width:200,  title: t('order.processingNote'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
-    {field: 'remarks',width:140,  title: t('basicData.remarks'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
+    {field: 'remarks',width:140,  title: t('order.floorNumber'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
     {field: 'shape',width:120,
       title: t('order.shape'),
       editRender: { name: 'input'},
@@ -93,7 +93,7 @@
       </template>
 
       <template #default_shape="{ row }">
-        <span>{{ row.shape==='1'?'鏅舰':row.shape==='2'?'寮傚舰':null }}</span>
+        <span>{{ row.shape==='1'?$t('order.universalShape'):row.shape==='2'?$t('order.alien'):null }}</span>
       </template>
 
     </vxe-grid>
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue b/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue
index 622e4a3..5d00ac4 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/OrderOtherMoney.vue
@@ -38,10 +38,10 @@
   },//琛ㄥご鍙傛暟
   columns:[
     // {field: 'buildingNumber',width:120,  title: '妤煎彿',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
-    {field: 'alias', title:'鍏朵粬鍔犲伐',minWith:'130'},
-    {field: 'price',  title:'鍗曚环',editRender: { name: 'input'}},
-    {field: 'quantity',  title:'鏁伴噺' },
-    {field: 'money', slots:{default:'default'},  title:'閲戦'}
+    {field: 'alias', title:t('components.otherProcessing'),minWith:'130'},
+    {field: 'price',  title:t('order.price'),editRender: { name: 'input'}},
+    {field: 'quantity',  title:t('order.quantity')},
+    {field: 'money', slots:{default:'default'},  title:t('delivery.money')}
   ],
   //琛ㄥ崟楠岃瘉
   editRules: {
@@ -69,8 +69,8 @@
   },
   toolbarConfig: {
     buttons: [
-      {'code': 'add', 'name': '鏂板',status: 'primary'},
-      {'code': 'delete', 'name': '鍒犻櫎',status: 'primary'}
+      {'code': 'add', 'name': t('basicData.insert'),status: 'primary'},
+      {'code': 'delete', 'name': t('basicData.delete'),status: 'primary'}
     ],
 
 
@@ -116,7 +116,7 @@
         }
         case 'delete': {
           if(rowClickIndex.value === null){
-            ElMessage.warning('璇峰厛鍗曞嚮閫夋嫨琛�')
+            ElMessage.warning(t('components.pleaseClickToSelectARowFirst'))
             return
           }
           deleteColum(rowClickIndex.value.id)
@@ -160,7 +160,7 @@
 const validate = async () => {
   const errMap = await xGrid.value.validate(true)
   if (errMap) {
-    ElMessage.error(`鏍¢獙涓嶉�氳繃锛乣)
+    ElMessage.error(t('basicData.msg.checkoutLose'))
     return false
   }
   return true
@@ -171,22 +171,22 @@
 
 
 const addColumn = () => {
-  ElMessageBox.prompt( '鏂板鍒楀悕:', {
-    confirmButtonText: '鏂板',
-    cancelButtonText: '鍙栨秷',
+  ElMessageBox.prompt( t('components.addColumnNames')+':', {
+    confirmButtonText: t('basicData.insert'),
+    cancelButtonText: t('basicData.cancelButtonText'),
     inputPattern:/^.{1,20}$/,
-    inputErrorMessage: '璇疯緭鍏�20涓瓧绗︿互鍐呯殑涓斾笉涓虹┖鐨勫瓧绗�',
+    inputErrorMessage: t('components.message'),
   })
     .then(({ value }) => {
       request.post('/basicOtherMoney/save',{alias:value}).then(res=>{
         if (res.code==='200' && res.data!==false){
-          ElMessage.success('鏂板鎴愬姛')
+          ElMessage.success(t('basicData.msg.saveSuccess'))
           setTimeout(()=>{
             window.location.reload()
           },1500)
 
         }else{
-          ElMessage.error('鏂板澶辫触,涓嶈兘閲嶅娣诲姞鎴栬秴杩�100鏉″垪')
+          ElMessage.error(t('basicData.msg.saveFail'))
         }
       })
     })
@@ -195,23 +195,23 @@
 
 const deleteColum = (id) => {
   ElMessageBox.confirm(
-      '纭鍒犻櫎姝ゅ垪鍚�?',
+      t('searchOrder.deleteConfirm'),
       'Warning',
       {
-        confirmButtonText: '鍒犻櫎',
-        cancelButtonText: '鍙栨秷',
+        confirmButtonText: t('basicData.confirmButtonText'),
+        cancelButtonText: t('basicData.cancelButtonText'),
         type: 'warning',
       }
   )
       .then(() => {
         request.post(`/basicOtherMoney/deleteById/${id}`,).then(res=>{
           if (res.code==='200' && res.data!==false){
-            ElMessage.success('鍒犻櫎鎴愬姛')
+            ElMessage.success(t('basicData.msg.deleteSuccess'))
             setTimeout(()=>{
               window.location.reload()
             },1500)
           }else{
-            ElMessage.error('鍒犻櫎澶辫触')
+            ElMessage.error(t('basicData.msg.deleteFail'))
           }
         })
       })
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue b/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
index c9436c7..82570e0 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue
@@ -44,19 +44,19 @@
   orderId:null
 })
 const columns = [
-  {field: 'order_number',fixed:"left", width: 90,title: '璁㈠崟搴忓彿',showOverflow:"ellipsis"},
+  {field: 'order_number',fixed:"left", width: 90,title: t('order.OrderNum'),showOverflow:"ellipsis"},
   // {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
-  {field: 'product_name', width: 150, title: '浜у搧鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
-  {field: 'glass_child',width: 130, title: '鍗曠墖鍚嶇О' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
-  {field: 'order_type', width: 120,title: '璁㈠崟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
-  {field: 'process_id',width: 110, title: '娴佺▼鍗″彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
+  {field: 'product_name', width: 150, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
+  {field: 'glass_child',width: 130, title: t('reportingWorks.glassChild') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
+  {field: 'order_type', width: 120,title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
+  {field: 'process_id',width: 110, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
 
-  {field: 'technology_number', width: 90,title: '灏忕墖椤哄簭',showOverflow:"ellipsis"},
-  {field: 'quantity', width: 90,title: '鏁伴噺'},
-  {field: 'shippedQuantity',width: 120, title: '鍙戣揣鏁伴噺'},
-  {field: 'inventory',width: 120, title: '搴撳瓨鏁伴噺'},
-  {field: 'inventoryArea',width: 120, title: '搴撳瓨闈㈢Н'},
-  {field: 'broken_num',width: 90, title: '娆$牬鏁伴噺'},
+  {field: 'technology_number', width: 90,title:  t('processCard.technologyNumber'),showOverflow:"ellipsis"},
+  {field: 'quantity', width: 90,title: t('order.quantity')},
+  {field: 'shippedQuantity',width: 120, title: t('delivery.deliveryQuantity')},
+  {field: 'inventory',width: 120, title: t('productStock.inventoryQuantity')},
+  {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')},
+  {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')},
 ]
 let column = [0,1,3,6,7,8,9]
 
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/OrderSizeCheck.vue b/north-glass-erp/northglass-erp/src/components/sd/order/OrderSizeCheck.vue
index ca27479..74c0da1 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/OrderSizeCheck.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/OrderSizeCheck.vue
@@ -16,7 +16,7 @@
   id:'sizeCheck',
   toolbarConfig: {
     buttons: [
-      {'code': 'review', 'name': '瀹℃牳',status: 'primary'},
+      {'code': 'review', 'name': t('basicData.review'),status: 'primary'},
     ]
   },
 
@@ -49,19 +49,19 @@
     storage: true
   },
   columns:[
-    {field: 'width',  title: '瀹�',editRender: { name: 'input'}},
-    {field: 'height',  title:'楂�', editRender: { name: 'input'}},
-    {field: 'quantity', title: '鏁伴噺' ,editRender: { name: 'input'}, },
+    {field: 'width',  title: t('order.width'),editRender: { name: 'input'}},
+    {field: 'height',  title:t('order.height'), editRender: { name: 'input'}},
+    {field: 'quantity', title: t('order.quantity') ,editRender: { name: 'input'}, },
   ],
   editRules: {
     width: [
-      { required: true, message: '蹇呭~,鍙傛暟涓嶄竴鑷�' }
+      { required: true, message: t('components.inconsistentParameters') }
     ],
     height: [
-      { required: true, message: '蹇呭~,鍙傛暟涓嶄竴鑷�' }
+      { required: true, message:t('components.inconsistentParameters') }
     ],
     quantity: [
-      { required: true, message: '蹇呭~,鍙傛暟涓嶄竴鑷�' }
+      { required: true, message:t('components.inconsistentParameters') }
     ]
   }
 })
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet1.vue b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet1.vue
new file mode 100644
index 0000000..4e2692e
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet1.vue
@@ -0,0 +1,290 @@
+<script setup>
+import request from "@/utils/request"
+import {computed, onMounted, ref} from "vue"
+
+//杩欓噷鏄墦鍗扮殑閰嶇疆椤�
+const  print=ref({
+  id: 'printBox',//杩欓噷鐨刬d灏辨槸涓婇潰鎴戜滑鐨勬墦鍗板尯鍩焛d锛屽疄鐜版寚鍝墦鍝�
+  popTitle: '閰嶇疆椤电湁鏍囬', // 鎵撳嵃閰嶇疆椤典笂鏂圭殑鏍囬
+  extraHead: '', // 鏈�涓婃柟鐨勫ご閮ㄦ枃瀛楋紝闄勫姞鍦╤ead鏍囩涓婄殑棰濆鏍囩锛屼娇鐢ㄩ�楀彿鍒嗗壊
+  preview: false, // 鏄惁鍚姩棰勮妯″紡锛岄粯璁ゆ槸false
+  previewTitle: '棰勮鐨勬爣棰�', // 鎵撳嵃棰勮鐨勬爣棰�
+  previewPrintBtnLabel: '棰勮缁撴潫锛屽紑濮嬫墦鍗�', // 鎵撳嵃棰勮鐨勬爣棰樹笅鏂圭殑鎸夐挳鏂囨湰锛岀偣鍑诲彲杩涘叆鎵撳嵃
+  zIndex: 20002, // 棰勮绐楀彛鐨剒-index锛岄粯璁ゆ槸20002锛屾渶濂芥瘮榛樿鍊兼洿楂�
+  previewBeforeOpenCallback() { console.log('姝e湪鍔犺浇棰勮绐楀彛锛�'); }, // 棰勮绐楀彛鎵撳紑涔嬪墠鐨刢allback
+  previewOpenCallback() { console.log('宸茬粡鍔犺浇瀹岄瑙堢獥鍙o紝棰勮鎵撳紑浜嗭紒') }, // 棰勮绐楀彛鎵撳紑鏃剁殑callback
+  beforeOpenCallback() { console.log('寮�濮嬫墦鍗颁箣鍓嶏紒') }, // 寮�濮嬫墦鍗颁箣鍓嶇殑callback
+  openCallback() { console.log('鎵ц鎵撳嵃浜嗭紒') }, // 璋冪敤鎵撳嵃鏃剁殑callback
+  closeCallback() { console.log('鍏抽棴浜嗘墦鍗板伐鍏凤紒') }, // 鍏抽棴鎵撳嵃鐨刢allback(鏃犳硶鍖哄垎纭or鍙栨秷)
+  clickMounted() { console.log('鐐瑰嚮v-print缁戝畾鐨勬寜閽簡锛�') },
+
+})
+
+let props = defineProps({
+  orderId:null
+})
+let data = ref({
+  order:{
+    processingNote:''
+  },
+  orderProductDetail:[]
+})
+const grossNum = ref({
+  quantity: 0,
+  grossArea: 0,
+  perimeter: 0
+})
+const getData = () => {
+  request.get(`/order/printOrderProductDetail/${props.orderId}`).then(res => {
+    data.value= res.data
+    res.data.orderProductDetail.forEach(item => {
+        grossNum.value.quantity += getQuantity(item.productDetail)
+        grossNum.value.grossArea += getArea(item.productDetail)
+        grossNum.value.perimeter += getPerimeter(item.productDetail)
+
+    })
+
+    grossNum.value.quantity = parseFloat(grossNum.value.quantity.toFixed(3))
+    grossNum.value.grossArea = parseFloat(grossNum.value.grossArea.toFixed(3))
+    grossNum.value.perimeter = parseFloat(grossNum.value.perimeter.toFixed(3))
+
+  })
+}
+
+onMounted(() => {
+  getData()
+})
+
+const getQuantity = (productList) => {
+  let quantity = 0
+  productList.forEach(item => {
+    quantity += item.quantity
+  })
+  return parseFloat(quantity.toFixed(3))
+
+}
+
+const getArea = (productList) => {
+  let area = 0
+  productList.forEach(item => {
+    area += item.grossArea
+  })
+  return parseFloat(area.toFixed(3))
+
+}
+
+const getPerimeter = (productList) => {
+  let perimeter = 0
+  productList.forEach(item => {
+    perimeter += item.perimeter
+  })
+  return parseFloat(perimeter.toFixed(3))
+}
+
+const printSheet = () => {
+  // printJS({
+  //   printable:'sheet',
+  //   type:'html',
+  //   //style:styleAll(),
+  //   targetStyles: ['*']
+  //   //scanStyles:false
+  // })
+}
+
+
+
+
+defineExpose({
+  printSheet
+});
+</script>
+
+
+<template>
+  <div id="sheet">
+
+    <el-row style="margin-bottom: 0.5rem;">
+      <el-col :span="24">
+        <h1>
+          <img src="../../../assets/northGlass.ico" alt="" style="float: left;max-width: 60px;max-height: 60px">
+          澶╂触鍖楃幓鐜荤拑宸ヤ笟鎶�鏈湁闄愬叕鍙革紙THBB-QR7.1-01锛�
+        </h1>
+      </el-col>
+
+    </el-row >
+    <el-row style="text-align: left">
+      <el-col :span="2" ></el-col>
+      <el-col :span="8" >鍦板潃:澶╂触瀹濆澔鍖鸿妭鑳界幆淇濆伐涓氬尯澶╁叴璺タ渚у疂涓亾鍗椾晶</el-col>
+      <el-col :span="2"></el-col>
+      <el-col :span="5" >鐢佃瘽:022-59280088</el-col>
+      <el-col :span="5" >浼犵湡:022-59280066</el-col>
+    </el-row>
+    <hr>
+    <hr class="hr-border">
+
+    <el-row >
+      <el-col :span="24"><h3>鐜荤拑鍔犲伐鍗�</h3></el-col>
+
+    </el-row>
+
+    <table >
+      <tr>
+        <th class="title-1">瀹㈡埛鍚嶇О</th>
+        <th colspan="3">{{data.order.customerName}}</th>
+        <th class="title-1">宸ョ▼鍚嶇О</th>
+        <th colspan="3">{{data.order.project}}</th>
+      </tr>
+      <tr>
+        <th class="title-1">鐢熶骇鍗曞彿</th>
+        <th>{{data.order.orderId}}</th>
+        <th class="title-1">涓嬪崟鏃ユ湡</th>
+        <th>{{data.order.createTime}}</th>
+        <th class="title-1">璁㈠崟绫诲瀷</th>
+        <th>{{data.order.orderType}}</th>
+        <th class="title-1">璺熷崟鍛�</th>
+        <th>{{data.order.creator}}</th>
+      </tr>
+      <tr>
+        <th>纾ㄨ竟</th>
+        <th></th>
+        <th>瀹屽伐鏃ユ湡</th>
+        <th>{{data.order.deliveryDate}}</th>
+        <th>鍟嗘爣</th>
+        <th>{{data.order.icon}}</th>
+        <th>鍖呰</th>
+        <th>{{data.order.packType}}</th>
+      </tr>
+
+    </table>
+    <table border="1" >
+      <thead>
+        <tr>
+          <th class="title-1">鐜荤拑鍥惧彿</th>
+          <th>褰╅噳鍥惧彿</th>
+          <th>缂栧彿</th>
+          <th>瑙勬牸锛堝W*楂楬锛�</th>
+          <th>鐗囨暟</th>
+          <th>闈㈢Н</th>
+          <th>寤剁背</th>
+          <th>浜よ揣鏃ユ湡</th>
+          <th>搴忓彿</th>
+          <th>绠辨灦鍙�</th>
+          <th>澶囨敞1</th>
+          <th>澶囨敞2</th>
+          <th>纾ㄨ竟/澶囨敞/鍔犲伐鍐呭</th>
+        </tr>
+      </thead>
+      <tbody v-for="(item,index) in data.orderProductDetail" :key="index">
+        <tr>
+          <td class="no-change-row">鍝�&nbsp;&nbsp;绉�</td>
+          <td colspan="9">{{item.productName}}</td>
+          <td class="no-change-row">浜у搧鎻忚堪</td>
+          <td colspan="3"></td>
+        </tr>
+        <tr v-for="(item1,index1) in item.productDetail" :key="index1">
+          <td>{{}}</td>
+          <td></td>
+          <td></td>
+          <td>{{item1.width +'*'+item1.height}}</td>
+          <td>{{item1.quantity}}</td>
+          <td>{{item1.grossArea}}</td>
+          <td>{{item1.perimeter}}</td>
+          <td></td>
+          <td>{{item1.orderNumber}}</td>
+          <td></td>
+          <td></td>
+          <td></td>
+          <td></td>
+        </tr>
+
+        <tr>
+          <td colspan="4">灏忚</td>
+          <td>{{getQuantity(item.productDetail)}}</td>
+          <td>{{getArea(item.productDetail)}}</td>
+          <td>{{getPerimeter(item.productDetail)}}</td>
+          <td colspan="6"></td>
+        </tr>
+
+
+      </tbody>
+      <tfoot>
+        <tr>
+          <td colspan="4">鎬昏</td>
+          <td>{{grossNum.quantity}}</td>
+          <td>{{grossNum.grossArea}}</td>
+          <td>{{grossNum.perimeter}}</td>
+          <td colspan="6"></td>
+        </tr>
+        <tr>
+          <td colspan="13">
+<!--            v-model=""-->
+            <el-input
+                v-model="data.order.processingNote"
+                :rows="2"
+                type="textarea"
+                placeholder=""
+                readonly
+                autosize
+                resize="none"
+
+            />
+          </td>
+        </tr>
+      </tfoot>
+    </table>
+    <el-row style="text-align: left ">
+      <el-col :span="4">涓嬪崟鍛橈細</el-col>
+      <el-col :span="4">瀹℃牳浜猴細</el-col>
+      <el-col :span="4">鏍″锛�</el-col>
+    </el-row>
+    <el-row style="text-align: left ">
+      <el-col :span="4">鍒涘缓鏃堕棿锛�</el-col>
+      <el-col :span="4">瀹℃牳鏃堕棿锛�</el-col>
+      <el-col :span="4">鎵撳嵃鏃堕棿锛�</el-col>
+    </el-row>
+  </div>
+</template>
+
+<style scoped>
+#sheet{
+  width: 100%;
+  height: 100%;
+  text-align: center;
+}
+h1,h3{
+   left:0;
+    right:0;
+    top:0;
+    bottom:0;
+    margin:auto;
+}
+h1{
+  font-size: 1.5rem;
+}
+h3{
+  font-size: 1.2rem;
+  font-weight: bolder;
+}
+
+
+table{
+  border-collapse: collapse;
+  border: 1px solid black;
+  width: 100%;
+}
+th,.no-change-row {
+  white-space: nowrap;
+}
+
+.title-1{
+  width: 76px;
+}
+
+.hr-border{
+  height: 2px;
+  width: 100%;
+  background-color: black;
+  color: black;
+}
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet2.vue b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet2.vue
new file mode 100644
index 0000000..7e9b024
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet2.vue
@@ -0,0 +1,299 @@
+<script setup>
+import request from "@/utils/request"
+import {computed, onMounted, ref} from "vue"
+
+let props = defineProps({
+  orderId:null
+})
+let data = ref({
+  order:{
+    processingNote:''
+  },
+  orderProductDetail:[]
+})
+const grossNum = ref({
+  quantity: 0,
+  grossArea: 0,
+  perimeter: 0
+})
+const getData = () => {
+  request.get(`/order/printOrderProductGlassDetail/${props.orderId}`).then(res => {
+    data.value= res.data
+    console.log(data.value)
+    res.data.orderDetail.forEach(item => {
+        grossNum.value.quantity += getQuantity(item.productDetail)
+        grossNum.value.grossArea += getArea(item.productDetail)
+        grossNum.value.perimeter += getPerimeter(item.productDetail)
+    })
+
+
+    grossNum.value.quantity = parseFloat(grossNum.value.quantity.toFixed(3))
+    grossNum.value.grossArea = parseFloat(grossNum.value.grossArea.toFixed(3))
+    grossNum.value.perimeter = parseFloat(grossNum.value.perimeter.toFixed(3))
+
+  })
+}
+
+onMounted(() => {
+  getData()
+})
+
+const getQuantity = (productList) => {
+  let quantity = 0
+  productList.forEach(item => {
+    quantity += item.quantity
+  })
+  return parseFloat(quantity.toFixed(3))
+
+}
+
+const getArea = (productList) => {
+  let area = 0
+  productList.forEach(item => {
+    area += item.grossArea
+  })
+  return parseFloat(area.toFixed(3))
+
+}
+
+const getPerimeter = (productList) => {
+  let perimeter = 0
+  productList.forEach(item => {
+    perimeter += item.perimeter
+  })
+  return parseFloat(perimeter.toFixed(3))
+}
+
+
+
+</script>
+
+
+<template>
+  <div id="sheet">
+
+    <el-row style="margin-bottom: 0.5rem;">
+      <img src="../../../assets/northGlass.ico" alt="" style="max-width: 60px;max-height: 60px">
+      <h1>澶╂触鍖楃幓鐜荤拑宸ヤ笟鎶�鏈湁闄愬叕鍙革紙THBB-QR7.1-01锛�</h1>
+    </el-row >
+    <el-row style="text-align: left">
+      <el-col :span="2" ></el-col>
+      <el-col :span="8" >鍦板潃:澶╂触瀹濆澔鍖鸿妭鑳界幆淇濆伐涓氬尯澶╁叴璺タ渚у疂涓亾鍗椾晶</el-col>
+      <el-col :span="2"></el-col>
+      <el-col :span="5" >鐢佃瘽:022-59280088</el-col>
+      <el-col :span="5" >浼犵湡:022-59280066</el-col>
+    </el-row>
+    <hr>
+    <hr class="hr-border">
+
+    <el-row >
+      <h3>鐜荤拑鍔犲伐鍗�</h3>
+    </el-row>
+
+    <table>
+      <tr>
+        <th class="title-1">瀹㈡埛鍚嶇О</th>
+        <th colspan="3"></th>
+        <th class="title-1">宸ョ▼鍚嶇О</th>
+        <th colspan="3"></th>
+      </tr>
+      <tr>
+        <th class="title-1">鐢熶骇鍗曞彿</th>
+        <th></th>
+        <th class="title-1">涓嬪崟鏃ユ湡</th>
+        <th></th>
+        <th class="title-1">璁㈠崟绫诲瀷</th>
+        <th></th>
+        <th class="title-1">璺熷崟鍛�</th>
+        <th></th>
+      </tr>
+      <tr>
+        <th>纾ㄨ竟</th>
+        <th></th>
+        <th>瀹屽伐鏃ユ湡</th>
+        <th></th>
+        <th>鍟嗘爣</th>
+        <th></th>
+        <th>鍖呰</th>
+        <th></th>
+      </tr>
+
+    </table>
+    <table  >
+      <thead>
+      <tr>
+        <th >搴忓彿</th>
+        <th >鍥惧彿</th>
+        <th>褰╅噳鍥惧彿</th>
+        <th>缂栧彿</th>
+        <th>瑙勬牸锛堝W*楂楬锛�</th>
+        <th>鐗囨暟</th>
+        <th>闈㈢Н</th>
+        <th>寤剁背</th>
+        <th>浜よ揣鏃ユ湡</th>
+        <th>搴忓彿</th>
+        <th>绠辨灦鍙�</th>
+        <th>澶囨敞1</th>
+        <th>澶囨敞2</th>
+        <th>纾ㄨ竟/澶囨敞/鍔犲伐鍐呭</th>
+      </tr>
+      </thead>
+      <tbody v-for="(item,index) in data.orderDetail" :key="index">
+      <tr>
+        <td colspan="2" class="no-change-row">浜у搧鍚嶇О</td>
+        <td colspan="8">{{item.productName}}</td>
+        <td class="no-change-row">浜у搧鎻忚堪</td>
+        <td colspan="3"></td>
+      </tr>
+      <template v-for="(item1,index1) in item.productDetail" :key="index1">
+        <tr  >
+          <td>{{item1.orderNumber}}</td>
+          <td></td>
+          <td></td>
+          <td></td>
+          <td>{{item1.width}}*{{item1.height}}</td>
+          <td>{{item1.quantity}}</td>
+          <td>{{item1.grossArea}}</td>
+          <td>{{item1.perimeter}}</td>
+          <td>{{item1.bendRadius}}</td>
+          <td></td>
+          <td></td>
+          <td></td>
+          <td></td>
+          <td></td>
+        </tr>
+
+        <tr>
+          <td></td>
+          <td>鏍囪</td>
+          <td colspan="4">鍗婃垚鍝佸悕绉�</td>
+          <td>涓嬫枡-瀹�</td>
+          <td>寮ч暱</td>
+          <td>涓嬫枡-楂�</td>
+          <td>鎷遍珮</td>
+
+          <td colspan="4"></td>
+        </tr>
+          <tr  v-for="(item2,index2) in item1.orderGlassDetails" :key="index2" >
+
+            <td></td>
+            <td>{{ item2.technologyNumber }}</td>
+            <td colspan="4"> {{item2.glassChild}}</td>
+            <td>{{item2.childWidth}}</td>
+            <td>{{item1.bendRadius}}</td>
+            <td>{{item2.childHeight}}</td>
+            <td>{{item2.archRise}}</td>
+            <td colspan="4"></td>
+
+          </tr>
+      </template>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+      <tr>
+        <td colspan="5">灏忚</td>
+        <td>{{getQuantity(item.productDetail)}}</td>
+        <td>{{getArea(item.productDetail)}}</td>
+        <td>{{getPerimeter(item.productDetail)}}</td>
+        <td colspan="6"></td>
+      </tr>
+
+
+      </tbody>
+      <tfoot>
+      <tr>
+        <td colspan="5">鎬昏</td>
+        <td>{{grossNum.quantity}}</td>
+        <td>{{grossNum.grossArea}}</td>
+        <td>{{grossNum.perimeter}}</td>
+        <td colspan=""></td>
+      </tr>
+      <tr>
+        <td colspan="14">
+          <!--            v-model=""-->
+          <el-input
+              v-model="data.order.processingNote"
+              :rows="2"
+              type="textarea"
+              placeholder=""
+              readonly
+              autosize
+              resize="none"
+
+          />
+        </td>
+      </tr>
+      </tfoot>
+    </table>
+    <el-row style="text-align: left ">
+      <el-col :span="4">涓嬪崟鍛橈細</el-col>
+      <el-col :span="4">瀹℃牳浜猴細</el-col>
+      <el-col :span="4">鏍″锛�</el-col>
+    </el-row>
+    <el-row style="text-align: left ">
+      <el-col :span="4">鍒涘缓鏃堕棿锛�</el-col>
+      <el-col :span="4">瀹℃牳鏃堕棿锛�</el-col>
+      <el-col :span="4">鎵撳嵃鏃堕棿锛�</el-col>
+    </el-row>
+  </div>
+</template>
+
+<style scoped>
+#sheet{
+  width: 100%;
+  height: 100%;
+  text-align: center;
+}
+h1,h3{
+  left:0;
+  right:0;
+  top:0;
+  bottom:0;
+  margin:auto;
+}
+h1{
+  font-size: 1.5rem;
+}
+h3{
+  font-size: 1.2rem;
+  font-weight: bolder;
+}
+
+
+
+table{
+  border-collapse: collapse;
+  border: 1px solid black;
+  width: 100%;
+}
+table, th, td {
+  border: 1px solid black;
+  border-collapse: collapse;
+}
+th,.no-change-row {
+  white-space: nowrap;
+}
+
+.title-1{
+  width: 76px;
+}
+
+.hr-border{
+  height: 2px;
+  width: 100%;
+  background-color: black;
+  color: black;
+}
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue
new file mode 100644
index 0000000..146a5b7
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/PrintSheet3.vue
@@ -0,0 +1,16 @@
+<script setup>
+
+
+
+</script>
+
+<template>
+
+</template>
+
+<style scoped>
+
+
+
+
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/components/sd/product/BasicTable.vue b/north-glass-erp/northglass-erp/src/components/sd/product/BasicTable.vue
index 9a15137..b870edd 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/product/BasicTable.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/product/BasicTable.vue
@@ -28,8 +28,8 @@
 
 <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
       <template #button_slot="{ row }">
-        <el-button @click="gaveParent(row,'edit')" link type="primary" size="small">缂栬緫</el-button>
-        <el-button @click="gaveParent(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button>
+        <el-button @click="gaveParent(row,'edit')" link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
+        <el-button @click="gaveParent(row,'delete')" link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
       </template>
 
       <template #num1_filter="{ column, $panel }">
@@ -52,9 +52,10 @@
 import deepClone from "@/utils/deepClone";
 import {ElMessage} from "element-plus";
 import router from "@/router";
+import {useI18n} from "vue-i18n";
 //prop鎺ユ敹鐖剁粍浠跺嚱鏁�
 
-
+const { t } = useI18n()
 
 let props = defineProps({
   tableProp:{
@@ -154,7 +155,7 @@
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
-          return '鍚堣:'
+          return t('basicData.total')
         }
         if (props.tableProp.footList.includes(column.field)) {
           return sumNum(data, column.field)
@@ -172,7 +173,7 @@
       switch (code) {
         case 'checkList': {
           if($grid.getCheckboxRecords().length==0){
-            VXETable.modal.message( '璇烽�夋嫨涓�鏉℃暟鎹紒')
+            VXETable.modal.message( t('searchOrder.msg'))
             return
           }
           emit('getCheckList',$grid.getCheckboxRecords())
@@ -188,7 +189,7 @@
         }
         case 'mySave': {
           const { insertRecords, removeRecords, updateRecords } = $grid.getRecordset()
-          VXETable.modal.message({ content: `鏂板 ${insertRecords.length} 鏉★紝鍒犻櫎 ${removeRecords.length} 鏉★紝鏇存柊 ${updateRecords.length} 鏉, status: 'success' })
+          VXETable.modal.message({ content: `${t('basicData.insert')} ${insertRecords.length} ${t('components.strip')}锛�${t('basicData.delete')} ${removeRecords.length} ${t('components.strip')}锛�${t('basicData.update')} ${updateRecords.length} ${t('components.strip')}`, status: 'success' })
           break
         }
         case 'myExport': {
diff --git a/north-glass-erp/northglass-erp/src/components/sd/product/GlassType.vue b/north-glass-erp/northglass-erp/src/components/sd/product/GlassType.vue
index 0424c7f..cf0b761 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/product/GlassType.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/product/GlassType.vue
@@ -3,6 +3,8 @@
 import deepClone from "@/utils/deepClone";
 import {ElMessage} from "element-plus";
 import useProductGlassTypeStore from "@/stores/sd/product/productGlassType"
+import {useI18n} from "vue-i18n";
+const { t } = useI18n()
 let productGlassTypeStore = useProductGlassTypeStore()
 
 let options=$ref([])
@@ -25,7 +27,7 @@
         v-model="productGlassTypeStore.GlassType"
         :options="options"
         clearable
-        placeholder="鐜荤拑绫诲埆"
+        :placeholder="$t('orderBasicData.glassCategory')"
     />
   </div>
 </template>
diff --git a/north-glass-erp/northglass-erp/src/lang/zh.js b/north-glass-erp/northglass-erp/src/lang/zh.js
index 4cfe721..4c5c6ed 100644
--- a/north-glass-erp/northglass-erp/src/lang/zh.js
+++ b/north-glass-erp/northglass-erp/src/lang/zh.js
@@ -56,6 +56,7 @@
         reportForms:'鎶ヨ〃',
         print:'鎵撳嵃',
         export:'瀵煎嚭',
+        empty:'娓呯┖',
         msg:{
             max255:"鏈�澶氳緭鍏�255涓瓧绗�",
             range99999Dec2:
@@ -240,7 +241,7 @@
         msgDelete:'宸插鏍哥殑璁㈠崟涓嶈兘鍒犻櫎',
         msgDeleteFail:'鍒犻櫎澶辫触',
         msgDeleteSuccess:'鍒犻櫎鎴愬姛',
-        deleteConfirm:'纭鍒犻櫎璁㈠崟?',
+        deleteConfirm:'纭鍒犻櫎?',
         orderType:'璁㈠崟绫诲瀷',
         processFlows:'娴佺▼鍗¤繘搴�',
         copy:'澶嶅埗璁㈠崟',
@@ -855,7 +856,21 @@
         operateType :'鍒О',
         type :'绫诲瀷',
         takeOut :'棰嗗嚭',
+    },
+    components:{
+        addNewSignature :'鏂板鏍囩鍚�',
+        addColumnNames :'鏂板鍒楀悕',
+        message :'璇疯緭鍏�20涓瓧绗︿互鍐呯殑涓斾笉涓虹┖鐨勫瓧绗�',
+        activeName :'鏍囩鍒楄〃',
+        orderHeader :'璁㈠崟琛ㄥご',
+        finishedProduct :'鎴愬搧',
+        semiFinishedProducts :'鍗婃垚鍝�',
+        pleaseClickToSelectARowFirst :'璇峰厛鍗曞嚮閫夋嫨琛�',
+        otherProcessing :'鍏朵粬鍔犲伐',
+        inconsistentParameters :'蹇呭~,鍙傛暟涓嶄竴鑷�',
+        strip :'鏉�',
+        exportSelected :'瀵煎嚭閫変腑',
     }
 
-    
+
 }
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/main.js b/north-glass-erp/northglass-erp/src/main.js
index 779d678..005a895 100644
--- a/north-glass-erp/northglass-erp/src/main.js
+++ b/north-glass-erp/northglass-erp/src/main.js
@@ -11,6 +11,7 @@
 import VXETable from 'vxe-table'
 import 'vxe-table/lib/style.css'
 import i18n from "@/lang"
+import print from 'vue3-print-nb'
 
 
 
@@ -24,5 +25,6 @@
     locale: zhCn,
 })
 app.use(i18n)
+app.use(print)
 
 app.mount('#app')
diff --git a/north-glass-erp/northglass-erp/src/stores/sd/companyInfo.js b/north-glass-erp/northglass-erp/src/stores/sd/companyInfo.js
new file mode 100644
index 0000000..8c15e8f
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/stores/sd/companyInfo.js
@@ -0,0 +1,14 @@
+import {defineStore} from "pinia";
+
+export default defineStore('companyInfo', {
+
+    state: () => ({
+        companyName: '澶╂触鍖楃幓鐜荤拑宸ヤ笟鎶�鏈湁闄愬叕鍙�',
+        address:'澶╂触瀹濆澔鍖鸿妭鑳界幆淇濆伐涓氬尯澶╁叴璺タ渚у疂涓亾鍗椾晶',
+        telephone:'022-59280088',
+        fax:'022-59280066',
+    }),
+    actions: {
+        //
+    }
+})
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue
index d6b4359..a95dc65 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredient/SelectIngredients.vue
@@ -236,7 +236,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'SelectIngredients',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateOutBound.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateOutBound.vue
index c92152c..c71df41 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateOutBound.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/CreateOutBound.vue
@@ -85,7 +85,7 @@
 let materialStore= ref([])
 
 let arr = [
-  {type:'expand',fixed:"left",slots: { content:'content' },width: '60'},
+  //{type:'expand',fixed:"left",slots: { content:'content' },width: '60'},
   {field: 'select',type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
   { type: 'seq',fixed:"left", title: t('basicData.Number'), width: '80' },
   {field: 'inventoryOrganization', width:'150', title: t('mainIngredientStock.inventoryOrganization'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged },
@@ -418,7 +418,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'CreateOutBound',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/MaterialOutbound.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/MaterialOutbound.vue
index 4741bc1..f4b7fd3 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/MaterialOutbound.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/MaterialOutbound.vue
@@ -173,7 +173,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'MaterialOutbound',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorage.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorage.vue
index 278bd9d..9913f75 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorage.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorage.vue
@@ -177,7 +177,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'ReturnToStorage',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorageCreate.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorageCreate.vue
index e43ded8..daedfdc 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorageCreate.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/ReturnToStorageCreate.vue
@@ -444,7 +444,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'OrderList',
+  id: 'ReturnToStorageCreate',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue
index 01ff989..4e76d0a 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainIngredientStock/SelectIngredientsStock.vue
@@ -259,7 +259,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'SelectIngredientsStock',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
@@ -442,7 +442,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'SelectIngredientsStocks',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
index 91c8389..346e67e 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/CreateProductStock.vue
@@ -177,7 +177,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'CreateProductStock',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
index 0cf4cfc..c5e4354 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedGoodsIssue.vue
@@ -261,7 +261,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'FinishedGoodsIssue',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
index c500a3e..25ae591 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductOut.vue
@@ -181,7 +181,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'FinishedProductOut',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue
index cd81683..1c928b4 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductReturn.vue
@@ -29,7 +29,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'FinishedProductReturn',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue
index 394d804..b88c4eb 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/FinishedProductRework.vue
@@ -258,7 +258,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'FinishedProductRework',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue
index c8b3d1e..ca29bf8 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/OrderAllocation.vue
@@ -172,7 +172,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'OrderAllocation',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
index 03a6ac6..ca1e2ae 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ProductStockList.vue
@@ -165,7 +165,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'ProductStockList',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ReworkRecord.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ReworkRecord.vue
index e3dcd64..e3992ab 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ReworkRecord.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/ReworkRecord.vue
@@ -168,7 +168,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'ReworkRecord',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/StorageRecord.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/StorageRecord.vue
index 68000ab..fde30a8 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/StorageRecord.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/StorageRecord.vue
@@ -178,7 +178,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'StorageRecord',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue
index 7138452..de88ba7 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TakeOutRecord.vue
@@ -168,7 +168,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'TakeOutRecord',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue
index eefd263..dcb357b 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/mainProductStock/TransferRecord.vue
@@ -172,7 +172,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'TransferRecord',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue b/north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue
index 7221b1b..94d8a9d 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/stockReport/WarehouseReport.vue
@@ -14,7 +14,7 @@
     {field: 'operationOrderNumber', width:'150', title: t('productStock.operationOrderNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'orderId', width: '150',title: t('order.orderId'),showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'operationNumber', width: '100',title: t('order.OrderNum'), showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'operateType', width: '120',title:'绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'operateType', width: '120',title:t('mainBasicData.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'quantity', width: '140',title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'orderDetail.productId',width: '100', title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'orderDetail.productName',width: '140', title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
@@ -25,7 +25,7 @@
     {field: 'operator', width: '100',title: t('productStock.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'operateTime', width:'140', title: t('productStock.productionDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'processId', width:'140', title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'type', width:'140', title: t('productStock.棰嗗嚭绫诲瀷'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'type', width:'140', title: t('productStock.typeClaim'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'reviewed', width: '100',title: t('productStock.reviewed'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'reviewedTime', width: '140',title: t('productStock.approvedDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
     {field: 'remarks', width: '140',title: t('productStock.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
diff --git a/north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue b/north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
index e44c4de..477c0bf 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue
@@ -58,7 +58,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'AddReplenish',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue b/north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
index d9cfbaa..307b7a2 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue
@@ -84,7 +84,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'SelectReplenish',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue b/north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
index 5f158f4..ed3c235 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue
@@ -68,7 +68,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe: true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true, height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'AddRework',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue b/north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue
index 3a2c7c3..6ddeeec 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue
@@ -92,7 +92,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe: true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true, height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'SelectRework',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue b/north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
index 1945d2c..a65de04 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue
@@ -58,7 +58,7 @@
     ElMessage.error(t('customer.pleaseEnterTheCustomerName'))
     return
   }
-  const grade = ruleForm.value.grade
+  /*const grade = ruleForm.value.grade
   if(grade === null || grade === undefined || grade === ''){
     ElMessage.error(t('customer.pleaseEnterCustomerLevel'))
     return
@@ -67,7 +67,7 @@
   if(moneyLimit === null || moneyLimit === undefined || moneyLimit === ''){
     ElMessage.error(t('customer.pleaseEnterTheAmountOfFunds'))
     return
-  }
+  }*/
   const address = ruleForm.value.address
   if(address === null || address === undefined || address === ''){
     ElMessage.error(t('customer.pleaseEnterTheContactAddress'))
diff --git a/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue b/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
index 072d87d..48aa5f0 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue
@@ -172,7 +172,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'CustomerList',
+  id: 'SelectCustomer',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
diff --git a/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue
index cd94656..2a78b0d 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue
@@ -164,7 +164,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'OrderList',
+  id: 'SelectCustomerOrder',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
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 6120917..785c5a8 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
@@ -34,7 +34,9 @@
 
 const hasDecimalhtml=(item,row)=>{
   let aa=item.split('.').length
+  console.log(item)
   if (aa===2){
+
     return row[item.split('.')[0]][item.split('.')[1]]
   }else if(aa===3){
     return row[item.split('.')[0]][item.split('.')[1]][item.split('.')[2]]
@@ -253,7 +255,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'OrderList',
+  id: 'CreateDelivery',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
@@ -290,7 +292,7 @@
   },//琛ㄥご鍙傛暟
   columns:[
 
-    {type:'expand',fixed:"left",slots: { content:'content' },width: 60},
+    //{type:'expand',fixed:"left",slots: { content:'content' },width: 60},
     {field: 'select',type:'checkbox',title: t('basicData.check'), width: 80,fixed:"left"},
     {type: 'seq', title: t('basicData.Number'), width: 80 ,fixed:"left"},
     {field: 'orderId',width:120,  title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
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 53fb105..9f86dc8 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
@@ -202,7 +202,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'OrderList',
+  id: 'SelectDelivery',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
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 ac09b09..f2b6540 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
@@ -159,7 +159,7 @@
   align: 'center',//鏂囧瓧灞呬腑
   stripe:true,//鏂戦┈绾�
   rowConfig: {isCurrent: true, isHover: true,height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
-  id: 'OrderList',
+  id: 'SelectOrderList',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
   importConfig: {},
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 fcf3cd6..40f33ad 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
@@ -58,8 +58,8 @@
   otherMoneyRemarks:'',
   processingNote:'',
   createOrder:0,
-  creatorId:userStore.user.userName,
-  creator:userStore.user.userId,
+  creatorId:userStore.user.userId,
+  creator:userStore.user.userName,
 })
 //瀹氫箟鎺ユ敹鍔犺浇琛ㄥご涓嬫媺鏁版嵁
 const titleSelectJson = ref({
@@ -139,7 +139,7 @@
   },//琛ㄥご鍙傛暟
   columns:[
     {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
-    // {field: 'buildingNumber',width:120,  title: '妤煎彿',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
+    {field: 'buildingNumber',width:120,  title: '妤煎彿',editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter'}, sortable: true,filterMethod:filterChanged},
     {field: 'productId',width:140,  title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
     {field: 'productName',width:300,  title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
     {field: 'price',width:140,  title: t('order.price'),editRender: { name: 'input'},filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true,filterMethod:filterChanged},
@@ -204,6 +204,16 @@
             return new Error(t('basicData.msg.greater0'))
           }
         }}
+    ],
+    bendRadius:[
+      {
+        validator ({ cellValue }) {
+          const regex = /^(0(\.\d{1,2})?|([1-9]\d{0,4})(\.\d{1,2})?|99999(\.9{1,2})?)$/
+          if (cellValue && !regex.test(cellValue)) {
+            return new Error(t('basicData.msg.range99999Dec2'))
+          }
+        }
+      }
     ],
     width:[
       {
@@ -691,7 +701,7 @@
 
 // 瀹℃牳璁㈠崟
 const reviewOrder = (state) => {
-  request.post(`/order/reviewOrderById/${titleUploadData.value.orderId}/${state}`).then(res =>{
+  request.post(`/order/reviewOrderById/${titleUploadData.value.orderId}/${state}/${userStore.user.userId}/${userStore.user.userName}`).then(res =>{
     if(res.code==200){
       gridOptions.toolbarConfig.buttons[2].disabled = true
       if(state==2){
@@ -1188,4 +1198,6 @@
     width: 100%;
   }
 
+
+
 </style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue b/north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
index 80b1e18..14e21cd 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue
@@ -1,25 +1,28 @@
 <script setup>
   import {Search} from "@element-plus/icons-vue"
   import {useRouter} from "vue-router"
-  import {computed, nextTick, onUnmounted, reactive, ref} from "vue"
-  import ProcessCardProgress from '@/views/pp/report/ProcessCardProgress.vue'
+  import {computed, reactive, ref} from "vue"
   import request from "@/utils/request"
   import deepClone from "@/utils/deepClone"
   import {ElMessage} from "element-plus"
-  import {VXETable} from "vxe-table"
+  import {Edit, VXETable} from "vxe-table"
   import  useUserInfoStore from '@/stores/userInfo'
   import footSum from "@/hook/footSum"
   import OrderDetail from "@/components/sd/order/OrderDetail.vue"
   import OrderCraftDetail from "@/components/sd/order/OrderCraftDetail.vue"
-  import OrderProcess from "@/components/sd/order/OrderProcess.vue";
+  import OrderProcess from "@/components/sd/order/OrderProcess.vue"
+  import PrintSheet1 from "@/components/sd/order/PrintSheet1.vue"
+  import PrintSheet2 from "@/components/sd/order/PrintSheet2.vue"
+  import PrintSheet3 from "@/components/sd/order/PrintSheet3.vue"
   import {useI18n} from "vue-i18n"
-  import {columnDrop2, sortable2} from "@/hook/columnMove";
+  import {Download, Printer} from "@element-plus/icons-vue/global";
   const { t } = useI18n()
   const userStore = useUserInfoStore()
   const tabsValue=ref('1')
   const router = useRouter()
   let rowClickIndex = ref(null)
   const dialogTableVisible = ref(false)
+  let sheetIndex = ref(-1)
   let orderType = ref("2")
   let selectDate = ref(["",""])
   let filterData = ref({})
@@ -30,6 +33,7 @@
     dataTotal : 0,
     pageSize : 100
   })
+
 
   const xGrid = ref()
   const gridOptions = reactive({
@@ -66,6 +70,15 @@
           [
             { code: 'copy', name: t('searchOrder.copy'), prefixIcon: 'vxe-icon-copy', visible: true},
             { code: 'copyTitle', name: t('searchOrder.copyTitle'), prefixIcon: 'vxe-icon-copy', visible: true},
+            {
+              prefixIcon: 'vxe-icon-print',
+              name: '鍔犲伐鍗�',
+              children: [
+                { code: 'sheet1', name: '妯増-鏅��' },
+                { code: 'sheet2', name: '妯増-澶氬眰鏄庣粏' },
+                { code: 'sheet3', name: '妯増-澶氬眰寮挗' }
+              ]
+            }
            // { code: 'getProcessList', name: t('searchOrder.processFlows'), prefixIcon: 'vxe-icon-file-txt', visible: true}
           ]
         ]
@@ -158,12 +171,31 @@
       const $grid = xGrid.value
       if ($grid) {
         switch (menu.code) {
-          case 'getProcessList': {
+          case 'sheet1': {
             if(rowClickIndex.value===null){
               ElMessage.warning(t('searchOrder.msgList.checkOrder'))
               return
             }
             dialogTableVisible.value = true
+            sheetIndex.value=1
+            break
+          }
+          case 'sheet2': {
+            if(rowClickIndex.value===null){
+              ElMessage.warning(t('searchOrder.msgList.checkOrder'))
+              return
+            }
+            dialogTableVisible.value = true
+            sheetIndex.value=2
+            break
+          }
+          case 'sheet3': {
+            if(rowClickIndex.value===null){
+              ElMessage.warning(t('searchOrder.msgList.checkOrder'))
+              return
+            }
+            dialogTableVisible.value = true
+            sheetIndex.value=3
             break
           }
           case 'copy': {
@@ -188,6 +220,10 @@
                 orderId:rowClickIndex.value.orderId,
                 type:'copyTitle'
               }})
+            break
+          }
+          case 'print':{
+
             break
           }
 
@@ -311,20 +347,9 @@
 
 
 
-  // let initTime = null
-  // nextTick(() => {
-  //   // 鍔犺浇瀹屾垚涔嬪悗鍦ㄧ粦瀹氭嫋鍔ㄤ簨浠�
-  //   initTime = setTimeout(() => {
-  //     columnDrop2(xGrid.value)
-  //   }, 500)
-  // })
-  //
-  // onUnmounted(() => {
-  //   clearTimeout(initTime)
-  //   if (sortable2) {
-  //     sortable2.destroy()
-  //   }
-  // })
+  const printContent = ref({
+    id: 'child',
+  })
 
 </script>
 
@@ -455,16 +480,25 @@
 
     </div>
 
-
-<!--    <el-dialog
+    <el-dialog
+        id="print"
         v-model="dialogTableVisible"
         destroy-on-close
-        :title="$t('searchOrder.processFlows')"
-        style="width: 80%;height:75% ">
-      <ProcessCardProgress
-          :orderId="rowClickIndex.orderId"
-          style="width: 100%;height: 100%" />
-    </el-dialog>-->
+        style="width: 75%;height:75% "
+    >
+      <template #header="{ close, titleId, titleClass }">
+        <el-button v-print="printContent"  :icon="Printer" circle />
+        <el-button  :icon="Download" circle />
+      </template>
+
+      <print-sheet1 id="child"  v-if="sheetIndex===1" :orderId="rowClickIndex.orderId" />
+      <print-sheet2 id="child" v-else-if="sheetIndex===2" :orderId="rowClickIndex.orderId" />
+      <print-sheet3 id="child" v-else :orderId="rowClickIndex.orderId" />
+
+    </el-dialog>
+
+
+
   </div>
 </template>
 
@@ -477,5 +511,13 @@
   width: 100%;
   height: 100%;
 }
+:deep(#print .el-dialog__body){
+  height: 85%;
+  width: 100%;
+  overflow-y: auto;
+}
+
+
+
 
 </style>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java b/north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java
index 0db09e2..fe46471 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/sd/OrderController.java
@@ -90,9 +90,11 @@
     }
     @ApiOperation("瀹℃牳璁㈠崟")
     @SaCheckPermission("createOrder.review")
-    @PostMapping("/reviewOrderById/{id}/{status}")
-    public Result reviewOrderById(@PathVariable String id,@PathVariable Integer status)  {
-        return  Result.seccess(orderService.reviewOrderById(id,status));
+    @PostMapping("/reviewOrderById/{id}/{status}/{userId}/{userName}")
+    public Result reviewOrderById(@PathVariable String id,
+                                  @PathVariable Integer status
+                                      ,@PathVariable String userId,@PathVariable String userName)  {
+        return  Result.seccess(orderService.reviewOrderById(id,status,userId,userName));
     }
 
     @ApiOperation("瀹℃牳宸ヨ壓")
@@ -151,5 +153,19 @@
         return   Result.seccess(orderService.getOrderProductDetailTag(orderId));
     }
 
+    @ApiOperation("璁㈠崟鍔犲伐鍗曟墦鍗�-鎴愬搧")
+    @GetMapping ("/printOrderProductDetail/{orderId}")
+    public Result printOrderProductDetail(@PathVariable String orderId)  {
+
+        return   Result.seccess(orderService.printOrderProductDetail(orderId));
+    }
+
+    @ApiOperation("璁㈠崟鍔犲伐鍗曟墦鍗�-灏忕墖鏄庣粏")
+    @GetMapping ("/printOrderProductGlassDetail/{orderId}")
+    public Result printOrderProductGlassDetail(@PathVariable String orderId)  {
+
+        return   Result.seccess(orderService.printOrderProductGlassDetail(orderId));
+    }
+
 
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java b/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java
index 223d14e..ce4a702 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/sd/OrderDetail.java
@@ -10,6 +10,7 @@
 import lombok.NoArgsConstructor;
 
 import java.time.LocalDate;
+import java.util.List;
 
 @Data
 public class OrderDetail {
@@ -52,6 +53,9 @@
     private DeliveryDetail deliveryDetail;
     @TableField(select = false,exist= false)
     private FinishedGoodsInventory finishedGoodsInventory;
+    @TableField(select = false,exist= false)
+    private List<OrderGlassDetail> orderGlassDetails;
+
     @TableField(exist= false)
     private String levelOne;
     @TableField(exist= false)
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderDetailMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderDetailMapper.java
index b3116a3..77d76c8 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderDetailMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderDetailMapper.java
@@ -30,4 +30,10 @@
     List<OrderDTO> exportOrderProductSummary(List<LocalDate> dates);
 
     Map<String, String> getOrderProductDetailTag(String orderId);
+
+    List<Map<String,Object>> getOrderProductDistinctById(String orderId);
+
+    List<OrderDetail> getOrderProductByProductId(Object productId, String orderId);
+
+
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
index 458bffc..b431ff5 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/sd/OrderMapper.java
@@ -2,11 +2,9 @@
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.example.erp.entity.sd.Order;
-import com.example.erp.entity.sd.Product;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 
-import java.time.LocalDate;
 import java.util.List;
 import java.util.Map;
 
@@ -19,7 +17,7 @@
     List<Order> getOrderList(Integer offset, Integer pageSize, String startDate, String endDate, Order order, Integer orderType);
     Map<String,Integer> getPageTotal(Integer offset, Integer pageSize, String startDate, String endDate, Order order , Integer orderType);
 
-    boolean reviewOrderById(String id,Integer status);
+    boolean reviewOrderById(String id, Integer status, String userId, String userName);
 
     boolean reviewProcessById(String id, Integer status);
 
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 77eca5f..b386c6b 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
@@ -15,7 +15,6 @@
 import com.example.erp.exception.ServiceException;
 import com.example.erp.mapper.sd.*;
 import com.example.erp.service.userInfo.SysErrorService;
-import com.sun.org.apache.regexp.internal.RE;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.transaction.interceptor.TransactionAspectSupport;
@@ -236,12 +235,12 @@
         return map;
     }
     //璁㈠崟瀹℃牳
-    public boolean reviewOrderById(String id,Integer status) {
+    public boolean reviewOrderById(String id, Integer status, String userId, String userName) {
         Order order = orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",id));
         if(order.getProcessReview()!=2){
             throw  new ServiceException(Constants.Code_600,"璇ヨ鍗曡繕鏈鏍�");
         }
-        return orderMapper.reviewOrderById(id,status);
+        return orderMapper.reviewOrderById(id,status,userId,userName);
     }
     //宸ヨ壓瀹℃牳鐣岄潰瀹℃牳鏇存柊鏁版嵁
     public boolean reviewProcessById(String id, Integer status,List<OrderGlassDetail> orderGlassDetails) {
@@ -369,4 +368,76 @@
     public List<OrderGlassDetail> getOrderCraftDetailById(String id) {
          return orderGlassDetailMapper.selectOrderGlassDetailByOrderId(id);
     }
+
+    public Object printOrderProductDetail(String orderId) {
+        List<Map<String,Object>> orderProductDistinct = orderDetailMapper.getOrderProductDistinctById(orderId);
+
+        List<Map<String,Object>> orderProductDetail = new ArrayList<>();
+        orderProductDistinct.forEach(map->{
+            Map<String,Object> orderProductDetailMap = new HashMap<>();
+            orderProductDetailMap.put("productId",map.get("productId"));
+            orderProductDetailMap.put("productName",map.get("productName"));
+            List<OrderDetail> orderDetails = orderDetailMapper.getOrderProductByProductId(map.get("productId"),orderId);
+            orderDetails.forEach(orderDetail->{
+                orderDetail.setGrossArea(
+                        Double.parseDouble(String.format("%.3f",
+                                orderDetail.getWidth()*orderDetail.getHeight()/1000000)
+                                ) * orderDetail.getQuantity()
+                );
+            });
+
+            orderProductDetailMap.put("productDetail",orderDetails);
+            orderProductDetail.add(orderProductDetailMap);
+        });
+
+        Map<String,Object> returns = new HashMap<>();
+
+        returns.put("orderProductDetail",orderProductDetail);
+        returns.put("order",orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",orderId)));
+        return returns;
+    }
+
+    public Object printOrderProductGlassDetail(String orderId) {
+        Map<String,Object> returns = new HashMap<>();
+        returns.put("order",orderMapper.selectOne(new QueryWrapper<Order>().eq("order_id",orderId)));
+
+        List<Map<String,Object>> orderProductDistinct = orderDetailMapper.getOrderProductDistinctById(orderId);
+        List<Map<String,Object>> orderProductDetail = new ArrayList<>();
+        orderProductDistinct.forEach(map->{
+            Map<String,Object> orderProductDetailMap = new HashMap<>();
+            orderProductDetailMap.put("productId",map.get("productId"));
+            orderProductDetailMap.put("productName",map.get("productName"));
+            List<OrderDetail> orderDetails = orderDetailMapper.getOrderProductByProductId(map.get("productId"),orderId);
+            orderDetails.forEach(orderDetail->{
+                orderDetail.setGrossArea(
+                        Double.parseDouble(String.format("%.3f",
+                                orderDetail.getWidth()*orderDetail.getHeight()/1000000)
+                        ) * orderDetail.getQuantity()
+                );
+
+                List<OrderGlassDetail> orderGlassDetails =
+                        orderGlassDetailMapper.selectList(
+                                new QueryWrapper<OrderGlassDetail>().
+                                        eq("order_id",orderId).
+                                        eq("order_number",orderDetail.getOrderNumber())
+                        );
+                orderDetail.setOrderGlassDetails(orderGlassDetails);
+            });
+
+            orderProductDetailMap.put("productDetail",orderDetails);
+            orderProductDetail.add(orderProductDetailMap);
+        });
+        returns.put("orderDetail",orderProductDetail);
+
+
+
+
+
+
+
+        return returns;
+
+
+
+    }
 }
diff --git a/north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml
index 04ef992..618b68a 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/OrderDetailMapper.xml
@@ -764,5 +764,27 @@
         group by a.glass_child,a.child_width,a.child_height
     </select>
 
+    <select id="getOrderProductDistinctById">
+        select
+
+            (a.product_id) as 'productId',
+                    a.product_name as 'productName',
+                    a.order_number as 'orderNumber'
+        from order_detail as a
+        where a.order_id = #{orderId}
+        group by a.product_id
+    </select>
+
+    <select id="getOrderProductByProductId">
+        select
+            *
+        from order_detail as a
+        where a.order_id = #{orderId}
+        and a.product_id = #{productId}
+        order by id;
+    </select>
+
+
+
 
 </mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
index 93a2ab0..b02c622 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -181,7 +181,10 @@
     </select>
     
     <update id="reviewOrderById">
-        update `order` set order_review = #{status} where order_id = #{id}
+        update `order` set order_review = #{status},
+                           verifier_id = #{userId},
+                           verifier = #{userName}
+                           where order_id = #{id}
     </update>
 
     <update id="reviewProcessById">
diff --git a/north-glass-erp/src/main/resources/mapper/sd/ProductMapper.xml b/north-glass-erp/src/main/resources/mapper/sd/ProductMapper.xml
index c1956ba..3f12498 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/ProductMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/ProductMapper.xml
@@ -43,25 +43,25 @@
         left join basic_glass_type bgt on bgt.type_id = a.type_id
         <where>
             <if test="glassTypeId != null and glassTypeId != ''">
-                and a.type_id regexp #{glassTypeId}
+                and a.type_id like concat('%',#{glassTypeId},'%')
             </if>
             <if test="product.id != null and product.id != ''">
-                and a.id regexp #{product.id}
+                and a.id like like concat('%',#{product.id},'%')
             </if>
             <if test="product.productName != null and product.productName != ''">
-                and a.product_name regexp #{product.productName}
+                and a.product_name like concat('%',#{product.productName},'%')
             </if>
             <if test="product.basicGlassType.typeName != null and product.basicGlassType.typeName!= ''">
-                and bgt.type_name regexp #{product.basicGlassType.typeName}
+                and bgt.type_name like concat('%',#{product.basicGlassType.typeName},'%')
             </if>
             <if test="product.query != null and product.query != ''">
-                and a.query regexp #{product.query}
+                and a.query like concat('%',#{product.query},'%')
             </if>
             <if test="product.creator != null and product.creator != ''">
-                and a.creator regexp #{product.creator}
+                and a.creator like concat('%',#{product.creator},'%')
             </if>
             <if test="product.createTime != null and product.createTime != ''">
-                and date(a.create_time) regexp #{product.createTime}
+                and date(a.create_time) like concat('%',#{product.createTime},'%')
             </if>
         </where>
 

--
Gitblit v1.8.0