From 77e6370cf2476a7c32fdd88df94cff0b042abd43 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期四, 27 三月 2025 10:37:44 +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                                           |   10 
 north-glass-erp/northglass-erp/src/views/sd/order/SelectOrder.vue                            |   19 
 north-glass-erp/northglass-erp/src/lang/en.js                                                |   22 +
 north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi2.vue            |    6 
 north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue                   |    3 
 north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java |    6 
 north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel1.vue                      |    5 
 north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml                                 |    3 
 north-glass-erp/northglass-erp/src/lang/zh.js                                                |   31 +
 north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi1.vue            |    5 
 north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue                    |    4 
 north-glass-erp/northglass-erp/src/lang/ar.js                                                |   20 +
 north-glass-erp/northglass-erp/src/stores/sd/companySet/新疆恒鑫.js                              |    2 
 north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue              |    4 
 north-glass-erp/northglass-erp/src/stores/sd/companySet/常州吉利.js                              |    2 
 north-glass-erp/src/main/resources/mapper/pp/Report.xml                                      |    1 
 north-glass-erp/src/main/java/com/example/erp/entity/sd/Order.java                           |    2 
 north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue                        |    2 
 north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java         |   11 
 north-glass-erp/northglass-erp/src/views/sd/basicData/SearchBasicData.vue                    |    2 
 north-glass-erp/northglass-erp/src/components/sd/order/OrderNumberReportTransfer.vue         |   57 +++
 north-glass-erp/northglass-erp/src/stores/sd/companySet/金华天成.js                              |    2 
 north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue                       |    6 
 north-glass-erp/northglass-erp/src/views/mm/ingredientStock/IngredientsStock.vue             |    1 
 north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue                    |   23 +
 north-glass-erp/northglass-erp/src/views/mm/ingredientStock/MaterialAdditionRecord.vue       |  480 ++++++++++++++++++++++++++++
 north-glass-erp/northglass-erp/src/components/sd/order/OrderProcess.vue                      |    1 
 north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue                    |    4 
 north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java           |   64 +++
 north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCardDetails.vue             |   22 +
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue                            |   60 ++
 north-glass-erp/northglass-erp/src/lang/ru.js                                                |   20 +
 north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java       |   73 ++++
 north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue                      |    8 
 north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml                           |   24 +
 north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue                 |    4 
 north-glass-erp/northglass-erp/src/stores/sd/companySet/天津北玻.js                              |    2 
 37 files changed, 933 insertions(+), 78 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue b/north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue
index 74dbda6..03ae342 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet1.vue
@@ -473,7 +473,9 @@
 
 <style scoped>
 @media print {
-
+  @page {
+    margin: 8mm 16mm 20mm 16mm !important;
+  }
   .pages {
     page-break-after: always;
   }
diff --git a/north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue b/north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue
index ce871af..9c178ea 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/delivery/PrintSheet2.vue
@@ -252,7 +252,9 @@
 
 <style scoped>
 @media print {
-
+  @page {
+    margin: 8mm 16mm 20mm 16mm !important;
+  }
   .pages {
     page-break-after: always;
   }
diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/OrderNumberReportTransfer.vue b/north-glass-erp/northglass-erp/src/components/sd/order/OrderNumberReportTransfer.vue
new file mode 100644
index 0000000..341f694
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/OrderNumberReportTransfer.vue
@@ -0,0 +1,57 @@
+<script setup>
+import {ref} from "vue";
+import request from "@/utils/request";
+import {ElMessage} from "element-plus";
+import {useI18n} from "vue-i18n"
+const { t } = useI18n()
+const props = defineProps({
+  transferData:{}
+})
+const emits = defineEmits(['orderNumberTransfer'])
+/*request.post()*/
+const orderNumberTransferSubmit = () => {
+  request.post('/reportingWork/reportingWorkTransfer',props.transferData).then(res => {
+    if(res.code === '200' && res.data.data===true){
+      ElMessage.success(t('basicData.saveSuccess'))
+      emits('orderNumberTransfer')
+    }else{
+      ElMessage.warning(res.data.msg)
+    }
+
+  }).catch(err => {
+    ElMessage.error(t('order.transferPage.errorToMes'))
+  })
+/*emits('orderNumberTransfer')*/
+}
+</script>
+
+<template>
+  <el-form :model="props.transferData">
+    <el-form-item :label="$t('order.transferPage.oldOrderId')+'锛�'" label-width="140px">
+      <el-text>{{props.transferData.oldOrderId}}</el-text>
+    </el-form-item>
+    <el-form-item :label="$t('order.transferPage.oldOrderNumber')+'锛�'" label-width="140px">
+      <el-text>{{props.transferData.oldOrderNumber}}</el-text>
+    </el-form-item>
+    <el-form-item :label="$t('order.transferPage.newOrderId')+'锛�'" label-width="140px">
+      <el-input v-model="props.transferData.newOrderId" autocomplete="off" />
+    </el-form-item>
+    <el-form-item :label="$t('order.transferPage.newOrderNumber')+'锛�'" label-width="140px">
+      <el-input v-model="props.transferData.newOrderNumber" type="number" autocomplete="off" />
+    </el-form-item>
+    <el-form-item  label-width="140px">
+      <el-popconfirm :title="$t('order.transferPage.confirmTitle')"
+                     @confirm="orderNumberTransferSubmit()">
+        <template #reference>
+          <el-button
+              type="primary"
+              style="margin-left: 268px">{{$t('craft.sure')}}</el-button>
+        </template>
+      </el-popconfirm>
+    </el-form-item>
+  </el-form>
+</template>
+
+<style scoped>
+
+</style>
\ No newline at end of file
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 bef4ae0..a01fef4 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
@@ -65,6 +65,7 @@
 
   {field: 'technology_number', width: 90,title:  t('processCard.technologyNumber'),showOverflow:"ellipsis"},
   {field: 'quantity', width: 90,title: t('order.quantity')},
+  {field: 'gross_area', width: 90,title: t('order.area')},
   {field: 'shippedQuantity',width: 120, title: t('delivery.deliveryQuantity')},
   {field: 'inventory',width: 120, title: t('productStock.inventoryQuantity')},
   {field: 'inventoryArea',width: 120, title: t('report.inventoryArea')},
diff --git a/north-glass-erp/northglass-erp/src/lang/ar.js b/north-glass-erp/northglass-erp/src/lang/ar.js
index fa8c0c4..278722d 100644
--- a/north-glass-erp/northglass-erp/src/lang/ar.js
+++ b/north-glass-erp/northglass-erp/src/lang/ar.js
@@ -68,6 +68,7 @@
         selected:'閫変腑',
         partiallySelected:'閮ㄥ垎閫変腑',
         unchecked :'鏈�変腑',
+        copy:'澶嶅埗',
         msg:{
             max255:'兀丿禺賱 255 丨乇賮賸丕 賰丨丿 兀賯氐賶',
             range99999Dec2:
@@ -249,6 +250,7 @@
 
         quantityMount:'鏁伴噺閲戦',
         allAmount:'闈㈢Н閲戦锛堟�婚噾棰濓級',
+        orderTransfer:'璁㈠崟鎶ュ伐杞Щ',
 
         msg:{
             productCheck:'丕賱乇噩丕亍 丕禺鬲賷丕乇 賲賳鬲噩',
@@ -275,7 +277,13 @@
 
             pleaseCancelTheFilteringFirst:'賷乇噩賶 廿賱睾丕亍 丕賱丕禺鬲賷丕乇 兀賵賱丕賸',
             grossAreaIsNot0:'瀛樺湪瀹為檯鎬婚潰绉瓑浜�0',
-            differentSize:'姝よ鍗曞惈鏈夋墜鍔ㄤ慨鏀瑰ぇ灏忕墖锛屽弽瀹′慨鏀硅鍗曞悗璇烽噸鏂伴噸缃ぇ灏忕墖锛佹槸鍚﹀弽瀹★紵'
+            differentSize:'姝よ鍗曞惈鏈夋墜鍔ㄤ慨鏀瑰ぇ灏忕墖锛屽弽瀹′慨鏀硅鍗曞悗璇烽噸鏂伴噸缃ぇ灏忕墖锛佹槸鍚﹀弽瀹★紵',
+            updateOrderIdErrorGtMaxId:'杈撳叆璁㈠崟鍙蜂笉鑳藉ぇ浜庢渶澶ц鍗曞彿',
+            updateOrderIdErrorIsExist:'杈撳叆璁㈠崟鍙峰凡瀛樺湪',
+            updateOrderIdErrorIsSame:'杈撳叆璁㈠崟鍙风浉鍚�',
+            updateOrderIdErrorDiscrepancyInLength:'杈撳叆璁㈠崟鍙烽暱搴︿笉绗�',
+            updateOrderIdErrorInputNumber:'璇疯緭鍏ユ暟瀛�',
+            updateOrderIdErrorNotNo1:'涓嶈兘淇敼绗竴涓崟瀛�',
         }
 
     },
@@ -301,7 +309,12 @@
         copyTitle:'賳爻禺 丕賱毓賳賵丕賳',
         msgList:{
             checkOrder:'賱賲 賷鬲賲 丕賱毓孬賵乇 毓賱賶 賲毓賱賵賲丕鬲 丕賱胤賱亘貙 賷乇噩賷 鬲丨丿賷丿 丕賱胤賱亘 丕賵賱丕賸',
-        }
+            isOptimize:'姝よ鍗曞凡杞紭鍖栵紝鍥為��澶辫触锛�',
+            isReportingWork:'姝よ鍗曞凡鎶ュ伐锛屽洖閫�澶辫触锛�',
+            isStorage:'姝よ鍗曞凡鍏ュ簱锛屽洖閫�澶辫触锛�',
+        },
+        updateOrderId:"淇敼璁㈠崟鍙�",
+        reportingTransfer:'鎶ュ伐杞Щ'
     },
     craft:{
         glassAddress:'賵囟毓 毓賱丕賲丞 丕賱夭噩丕噩',
@@ -713,6 +726,9 @@
 
         customerAbbreviation:'丕禺鬲氐丕乇 丕賱毓賲賷賱',
         pleaseEnterTheCustomerAbbreviation:'丕賱乇噩丕亍 丕丿禺丕賱 丕禺鬲氐丕乇 丕賱毓賲賷賱',
+        msgList:{
+            notCustomerInfo:'鏈煡璇㈠埌瀹㈡埛淇℃伅',
+        }
     },
     delivery:{
         page:{
diff --git a/north-glass-erp/northglass-erp/src/lang/en.js b/north-glass-erp/northglass-erp/src/lang/en.js
index 76d0f79..641db5a 100644
--- a/north-glass-erp/northglass-erp/src/lang/en.js
+++ b/north-glass-erp/northglass-erp/src/lang/en.js
@@ -68,6 +68,7 @@
         selected:'selected',
         partiallySelected:'partially selected',
         unchecked :'unchecked',
+        copy:'Copy',
         msg:{
             max255:"The value contains a maximum of 255 characters",
             range99999Dec2:
@@ -249,6 +250,7 @@
 
         quantityMount:'Quantity and Amount',
         allAmount:'闈㈢Н閲戦锛堟�婚噾棰濓級',
+        orderTransfer:'璁㈠崟鎶ュ伐杞Щ',
 
         msg:{
             productCheck:'Please select a product',
@@ -275,7 +277,13 @@
 
             pleaseCancelTheFilteringFirst:'Please cancel the selection first.',
             grossAreaIsNot0:'There is an actual total area equal to0',
-            differentSize:'姝よ鍗曞惈鏈夋墜鍔ㄤ慨鏀瑰ぇ灏忕墖锛屽弽瀹′慨鏀硅鍗曞悗璇烽噸鏂伴噸缃ぇ灏忕墖锛佹槸鍚﹀弽瀹★紵'
+            differentSize:'姝よ鍗曞惈鏈夋墜鍔ㄤ慨鏀瑰ぇ灏忕墖锛屽弽瀹′慨鏀硅鍗曞悗璇烽噸鏂伴噸缃ぇ灏忕墖锛佹槸鍚﹀弽瀹★紵',
+            updateOrderIdErrorGtMaxId:'杈撳叆璁㈠崟鍙蜂笉鑳藉ぇ浜庢渶澶ц鍗曞彿',
+            updateOrderIdErrorIsExist:'杈撳叆璁㈠崟鍙峰凡瀛樺湪',
+            updateOrderIdErrorIsSame:'杈撳叆璁㈠崟鍙风浉鍚�',
+            updateOrderIdErrorDiscrepancyInLength:'杈撳叆璁㈠崟鍙烽暱搴︿笉绗�',
+            updateOrderIdErrorInputNumber:'璇疯緭鍏ユ暟瀛�',
+            updateOrderIdErrorNotNo1:'涓嶈兘淇敼绗竴涓崟瀛�',
         }
 
     },
@@ -300,8 +308,13 @@
         copy:'Copy',
         copyTitle:'Copy Title',
         msgList:{
-            checkOrder:'No order information is found. Please click Order first'
-        }
+            checkOrder:'No order information is found. Please click Order first',
+            isOptimize:'姝よ鍗曞凡杞紭鍖栵紝鍥為��澶辫触锛�',
+            isReportingWork:'姝よ鍗曞凡鎶ュ伐锛屽洖閫�澶辫触锛�',
+            isStorage:'姝よ鍗曞凡鍏ュ簱锛屽洖閫�澶辫触锛�',
+        },
+        updateOrderId:"淇敼璁㈠崟鍙�",
+        reportingTransfer:'鎶ュ伐杞Щ'
     },
     craft:{
         glassAddress:'Glass Address',
@@ -713,6 +726,9 @@
 
         customerAbbreviation:'Customer abbreviation',
         pleaseEnterTheCustomerAbbreviation:'Please enter the customers abbreviation',
+        msgList:{
+            notCustomerInfo:'鏈煡璇㈠埌瀹㈡埛淇℃伅',
+        }
     },
     delivery:{
         page:{
diff --git a/north-glass-erp/northglass-erp/src/lang/ru.js b/north-glass-erp/northglass-erp/src/lang/ru.js
index 5236d26..da57fe2 100644
--- a/north-glass-erp/northglass-erp/src/lang/ru.js
+++ b/north-glass-erp/northglass-erp/src/lang/ru.js
@@ -68,6 +68,7 @@
         selected:'閫変腑',
         partiallySelected:'閮ㄥ垎閫変腑',
         unchecked :'鏈�変腑',
+        copy:'澶嶅埗',
         msg:{
             max255:"袙胁械写懈褌械 255 褋懈屑胁芯谢芯胁.",
             range99999Dec2:
@@ -249,6 +250,7 @@
 
         quantityMount:'鏁伴噺閲戦',
         allAmount:'闈㈢Н閲戦锛堟�婚噾棰濓級',
+        orderTransfer:'璁㈠崟鎶ュ伐杞Щ',
 
         msg:{
             productCheck:'袩芯卸邪谢褍泄褋褌邪, 胁褘斜械褉懈褌械 锌褉芯写褍泻褌',
@@ -275,7 +277,13 @@
 
             pleaseCancelTheFilteringFirst:'璇峰厛鍙栨秷绛涢��',
             grossAreaIsNot0:'瀛樺湪瀹為檯鎬婚潰绉瓑浜�0',
-            differentSize:'姝よ鍗曞惈鏈夋墜鍔ㄤ慨鏀瑰ぇ灏忕墖锛屽弽瀹′慨鏀硅鍗曞悗璇烽噸鏂伴噸缃ぇ灏忕墖锛佹槸鍚﹀弽瀹★紵'
+            differentSize:'姝よ鍗曞惈鏈夋墜鍔ㄤ慨鏀瑰ぇ灏忕墖锛屽弽瀹′慨鏀硅鍗曞悗璇烽噸鏂伴噸缃ぇ灏忕墖锛佹槸鍚﹀弽瀹★紵',
+            updateOrderIdErrorGtMaxId:'杈撳叆璁㈠崟鍙蜂笉鑳藉ぇ浜庢渶澶ц鍗曞彿',
+            updateOrderIdErrorIsExist:'杈撳叆璁㈠崟鍙峰凡瀛樺湪',
+            updateOrderIdErrorIsSame:'杈撳叆璁㈠崟鍙风浉鍚�',
+            updateOrderIdErrorDiscrepancyInLength:'杈撳叆璁㈠崟鍙烽暱搴︿笉绗�',
+            updateOrderIdErrorInputNumber:'璇疯緭鍏ユ暟瀛�',
+            updateOrderIdErrorNotNo1:'涓嶈兘淇敼绗竴涓崟瀛�',
         }
 
     },
@@ -301,7 +309,12 @@
         copyTitle:'袣芯锌懈褉芯胁邪褌褜 蟹邪谐芯谢芯胁芯泻',
         msgList:{
             checkOrder:'袝褋谢懈 懈薪褎芯褉屑邪褑懈褟 芯 蟹邪泻邪蟹械 薪械 锌芯谢褍褔械薪邪, 薪邪卸屑懈褌械 薪邪 蟹邪泻邪蟹.',
-        }
+            isOptimize:'姝よ鍗曞凡杞紭鍖栵紝鍥為��澶辫触锛�',
+            isReportingWork:'姝よ鍗曞凡鎶ュ伐锛屽洖閫�澶辫触锛�',
+            isStorage:'姝よ鍗曞凡鍏ュ簱锛屽洖閫�澶辫触锛�',
+        },
+        updateOrderId:"淇敼璁㈠崟鍙�",
+        reportingTransfer:'鎶ュ伐杞Щ'
     },
     craft:{
         glassAddress:'袦邪褉泻懈褉芯胁泻邪',
@@ -712,6 +725,9 @@
 
         customerAbbreviation:'袣谢懈械薪褌褘 小芯泻褉邪褖械薪懈褟',
         pleaseEnterTheCustomerAbbreviation:'袩芯卸邪谢褍泄褋褌邪, 胁胁械写懈褌械 褋芯泻褉邪褖械薪懈械 泻谢懈械薪褌邪.',
+        msgList:{
+            notCustomerInfo:'鏈煡璇㈠埌瀹㈡埛淇℃伅',
+        }
     },
     delivery:{
         page:{
diff --git a/north-glass-erp/northglass-erp/src/lang/zh.js b/north-glass-erp/northglass-erp/src/lang/zh.js
index 1a12b0a..74ec01b 100644
--- a/north-glass-erp/northglass-erp/src/lang/zh.js
+++ b/north-glass-erp/northglass-erp/src/lang/zh.js
@@ -68,6 +68,7 @@
         selected:'閫変腑',
         partiallySelected:'閮ㄥ垎閫変腑',
         unchecked :'鏈�変腑',
+        copy:'澶嶅埗',
         msg:{
             max255:"鏈�澶氳緭鍏�255涓瓧绗�",
             range99999Dec2:
@@ -249,6 +250,16 @@
 
         quantityMount:'鏁伴噺閲戦',
         allAmount:'闈㈢Н閲戦锛堟�婚噾棰濓級',
+        orderTransfer:'璁㈠崟鎶ュ伐杞Щ',
+        transferPage:{
+            oldOrderId:'鍘熻鍗曞彿',
+            newOrderId:'鏂拌鍗曞彿',
+            oldOrderNumber:'鍘熻鍗曞簭鍙�',
+            newOrderNumber:'鏂拌鍗曞簭鍙�',
+            confirmTitle:'纭疄杞Щ姝ゅ簭鍙风殑娴佺▼鍗℃姤宸ユ暟鎹�?',
+            errorToMes:'涓巑es閫氳寮傚父'
+
+        },
 
         msg:{
             productCheck:'璇烽�夋嫨浜у搧',
@@ -275,7 +286,13 @@
 
             pleaseCancelTheFilteringFirst:'璇峰厛鍙栨秷绛涢��',
             grossAreaIsNot0:'瀛樺湪瀹為檯鎬婚潰绉瓑浜�0',
-            differentSize:'姝よ鍗曞惈鏈夋墜鍔ㄤ慨鏀瑰ぇ灏忕墖锛屽弽瀹′慨鏀硅鍗曞悗璇烽噸鏂伴噸缃ぇ灏忕墖锛佹槸鍚﹀弽瀹★紵'
+            differentSize:'姝よ鍗曞惈鏈夋墜鍔ㄤ慨鏀瑰ぇ灏忕墖锛屽弽瀹′慨鏀硅鍗曞悗璇烽噸鏂伴噸缃ぇ灏忕墖锛佹槸鍚﹀弽瀹★紵',
+            updateOrderIdErrorGtMaxId:'杈撳叆璁㈠崟鍙蜂笉鑳藉ぇ浜庢渶澶ц鍗曞彿',
+            updateOrderIdErrorIsExist:'杈撳叆璁㈠崟鍙峰凡瀛樺湪',
+            updateOrderIdErrorIsSame:'杈撳叆璁㈠崟鍙风浉鍚�',
+            updateOrderIdErrorDiscrepancyInLength:'杈撳叆璁㈠崟鍙烽暱搴︿笉绗�',
+            updateOrderIdErrorInputNumber:'璇疯緭鍏ユ暟瀛�',
+            updateOrderIdErrorNotNo1:'涓嶈兘淇敼绗竴涓崟瀛�',
         }
 
     },
@@ -300,8 +317,13 @@
         copy:'澶嶅埗璁㈠崟',
         copyTitle:'澶嶅埗琛ㄥご',
         msgList:{
-            checkOrder:'鏈煡璇㈠埌璁㈠崟淇℃伅锛岃鍏堝崟鍑昏鍗�'
-        }
+            checkOrder:'鏈煡璇㈠埌璁㈠崟淇℃伅锛岃鍏堝崟鍑昏鍗�',
+            isOptimize:'姝よ鍗曞凡杞紭鍖栵紝鍥為��澶辫触锛�',
+            isReportingWork:'姝よ鍗曞凡鎶ュ伐锛屽洖閫�澶辫触锛�',
+            isStorage:'姝よ鍗曞凡鍏ュ簱锛屽洖閫�澶辫触锛�',
+        },
+        updateOrderId:"淇敼璁㈠崟鍙�",
+        reportingTransfer:'鎶ュ伐杞Щ'
     },
     craft:{
         glassAddress:'鏍囪',
@@ -713,6 +735,9 @@
 
         customerAbbreviation:'瀹㈡埛绠�绉�',
         pleaseEnterTheCustomerAbbreviation:'璇疯緭鍏ュ鎴风畝绉�',
+        msgList:{
+            notCustomerInfo:'鏈煡璇㈠埌瀹㈡埛淇℃伅',
+        }
     },
     delivery:{
         page:{
diff --git a/north-glass-erp/northglass-erp/src/router/index.js b/north-glass-erp/northglass-erp/src/router/index.js
index 941701c..187bd23 100644
--- a/north-glass-erp/northglass-erp/src/router/index.js
+++ b/north-glass-erp/northglass-erp/src/router/index.js
@@ -61,10 +61,6 @@
             }
           ]
         },
-{
-          path: '/main/glassOptimize/MoveManage',
-          component: () => import('@/views/pp/glassOptimize/MoveManage.vue')
-        },
         {
           path:'userPassWord',
           name: 'userPassWord',
@@ -1049,6 +1045,12 @@
               name:'returnToStorageCreate',
               component:()=>import('../views/mm/ingredientStock/ReturnToStorageCreate.vue')
             },
+            //鐗╂枡鏂板
+            {
+              path:'materialAdditionRecord',
+              name:'materialAdditionRecord',
+              component:()=>import('../views/mm/ingredientStock/MaterialAdditionRecord.vue')
+            },
             {
               path: '',
               redirect:'/main/ingredientsStock/selectIngredientsStock'
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 90f2943..d9a5f4d 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"
@@ -3,6 +3,8 @@
 export default defineStore('companyInfo', {
 
     state: () => ({
+        timeOut:false,//閲戝崕true锛屽叾浠杅alse锛屾槸鍚﹀紑鍚秴鏃舵敼鍙樺閫夋鐘舵��
+        connectMes:false,//甯稿窞true锛屽叾浠杅alse锛屾樉绀鸿鍗曟姤宸ヨ浆绉绘槸鍚﹀惎鐢�
         companyName: '澶╂触鍖楃幓鐜荤拑宸ヤ笟鎶�鏈湁闄愬叕鍙革紙TJBB-QR7.1-01锛�',
         address:'澶╂触瀹濆澔鍖鸿妭鑳界幆淇濆伐涓氬尯澶╁叴璺タ渚у疂涓亾鍗椾晶',
         telephone:'022-59280088',
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 d4b3d47..db0462c 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"
@@ -3,6 +3,8 @@
 export default defineStore('companyInfo', {
 
     state: () => ({
+        timeOut:false,//閲戝崕true锛屽叾浠杅alse锛屾槸鍚﹀紑鍚秴鏃舵敼鍙樺閫夋鐘舵��
+        connectMes:true,//甯稿窞true锛屽叾浠杅alse锛屾樉绀鸿鍗曟姤宸ヨ浆绉绘槸鍚﹀惎鐢�
         companyName: '甯稿窞甯傚悏鍒╃幓鐠冩湁闄愬叕鍙�',
         address:'甯稿窞甯傚ぉ瀹佸尯閮戦檰闀囧ぇ鏄庡崡璺�8鍙�',
         telephone:'022-59280088',
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 cd49263..bcf29c1 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"
@@ -3,6 +3,8 @@
 export default defineStore('companyInfo', {
 
     state: () => ({
+        timeOut:false,//閲戝崕true锛屽叾浠杅alse锛屾槸鍚﹀紑鍚秴鏃舵敼鍙樺閫夋鐘舵��
+        connectMes:false,//甯稿窞true锛屽叾浠杅alse锛屾樉绀鸿鍗曟姤宸ヨ浆绉绘槸鍚﹀惎鐢�
         companyName: '鏂扮枂鎭掗懌鐜荤拑绉戞妧鏈夐檺鍏徃',
         address:'鏂扮枂浜斿娓犲伐涓氬洯鍏靛洟鏂板瀷寤烘潗宸ヤ笟鍥尯宸ヤ竴璺�11鍙烽檮1鍙�',
         telephone:'13419168999',
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 39d4872..5ceb709 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"
@@ -3,6 +3,8 @@
 export default defineStore('companyInfo', {
 
     state: () => ({
+        timeOut:true,//閲戝崕true锛屽叾浠杅alse锛屾槸鍚﹀紑鍚秴鏃舵敼鍙樺閫夋鐘舵��
+        connectMes:false,//甯稿窞true锛屽叾浠杅alse锛屾樉绀鸿鍗曟姤宸ヨ浆绉绘槸鍚﹀惎鐢�
         companyName: '閲戝崕绂忓枩澶╂垚鐜荤拑鏈夐檺鍏徃',
         address:'娴欐睙鐪侀噾鍗庡競閲戜笢鍖烘浌瀹呴晣宸ヤ笟鍔熻兘鍖洪工宀╄28鍙�2鍙�',
         telephone:'153 8178 1915 绂忓枩澶╂垚',
diff --git a/north-glass-erp/northglass-erp/src/views/mm/ingredientStock/IngredientsStock.vue b/north-glass-erp/northglass-erp/src/views/mm/ingredientStock/IngredientsStock.vue
index 4920741..e2d57ec 100644
--- a/north-glass-erp/northglass-erp/src/views/mm/ingredientStock/IngredientsStock.vue
+++ b/north-glass-erp/northglass-erp/src/views/mm/ingredientStock/IngredientsStock.vue
@@ -32,6 +32,7 @@
         <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/ingredientsStock/AccessoriesMonthlySettlement' }">杈呮枡鏈堢粨</el-breadcrumb-item>-->
         <el-breadcrumb-item @click="changeRouter(5)" :class="indexFlag===5?'indexTag':''" :to="{ path: '/main/ingredientsStock/returnToStorage' }">{{$t('ingredientsStock.returnToStorage')}}</el-breadcrumb-item>
         <el-breadcrumb-item @click="changeRouter(6)" :class="indexFlag===6?'indexTag':''" :to="{ path: '/main/ingredientsStock/selectSurplusMaterials' }">{{$t('ingredientsStock.surplusMaterialManagement')}}</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(7)" :class="indexFlag===7?'indexTag':''" :to="{ path: '/main/ingredientsStock/materialAdditionRecord' }">{{$t('ingredients.materialAddition')}}</el-breadcrumb-item>
         <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">{{$t('ingredientsStock.returnToStorage')}}</el-breadcrumb-item>
       </el-breadcrumb>
 
diff --git a/north-glass-erp/northglass-erp/src/views/mm/ingredientStock/MaterialAdditionRecord.vue b/north-glass-erp/northglass-erp/src/views/mm/ingredientStock/MaterialAdditionRecord.vue
new file mode 100644
index 0000000..3f5b905
--- /dev/null
+++ b/north-glass-erp/northglass-erp/src/views/mm/ingredientStock/MaterialAdditionRecord.vue
@@ -0,0 +1,480 @@
+<!-- 棰嗗嚭璁板綍  -->
+<script setup>
+
+import {onMounted, reactive, ref} from "vue";
+import {useRoute, useRouter} from "vue-router"
+import request from "@/utils/request";
+import deepClone from "@/utils/deepClone";
+import useUserInfoStore from "@/stores/userInfo";
+import {ElMessage} from "element-plus";
+import {Search} from "@element-plus/icons-vue";
+import { useI18n } from 'vue-i18n'
+import footSum from "@/hook/footSum";
+
+//璇█鑾峰彇
+const { t } = useI18n()
+const router = useRouter()
+const route = useRoute()
+const userStore = useUserInfoStore()
+const username = userStore.user.userName
+const userid = userStore.user.userId
+let produceList = ref([])
+const getTableRow = (row,type) =>{
+  switch (type) {
+    case 'add' :{
+      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑缂栬緫淇℃伅')
+      break
+    }
+    case 'delete':{
+      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鍒犻櫎淇℃伅')
+      break
+    }
+  }
+}
+
+const hasDecimal=(value)=>{
+  const regex=/\./ // 瀹氫箟姝e垯琛ㄨ揪寮忥紝鏌ユ壘灏忔暟鐐�
+  return regex.test(value) //杩斿洖true/false
+}
+
+const hasDecimalhtml=(item,row)=>{
+  let aa=item.split('.').length
+  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]]
+  }
+
+
+}
+let selectDate = ref(["",""])
+
+let type = ref("")
+
+//绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹�
+let filterData = ref({
+
+})
+
+let pageNum=ref(1)
+let total = reactive({
+  pageTotal : 0,
+  dataTotal : 0,
+  pageSize : 100
+})
+
+onMounted(()=> {
+
+  //绗竴娆¤皟鐢�
+  request.post(`/materialInventory/getMaterialLogReport/鐗╂枡鏂板/1/${total.pageSize}/${selectDate.value}`, filterData.value).then((res) => {
+
+    if (res.code == 200) {
+      console.log(res.data)
+      total.dataTotal = res.data.total.total * 1
+      total.pageTotal = res.data.total.pageTotal
+      selectDate.value = res.data.selectDate
+      produceList = deepClone(res.data.data)
+      xGrid.value.loadData(produceList)
+      gridOptions.loading = false
+    } else {
+      ElMessage.warning(res.msg)
+      router.push("/login")
+    }
+  })
+})
+
+  let pageState = null
+
+  /*浣跨敤绛涢�夛紝鍚庣鑾峰彇鏁版嵁*/
+  const changeFilterEvent = (event, option, $panel,) => {
+    // 鎵嬪姩瑙﹀彂绛涢��
+    $panel.changeOption(event, !!option.data, option)
+  }
+
+  function filterChanged(column) {
+    gridOptions.loading = true
+    //绛涢�夋潯浠跺彂鐢熷彉鍖栨潯浠跺彂鐢熷彉鍖�
+    let value = column.datas[0] != undefined ? column.datas[0] : ''
+    value = value.trim()
+    //鍒ゆ柇鏄惁瀛樺湪澶栭敭
+    if (column.property.indexOf('.') > -1) {
+      const columnArr = column.property.split('.')
+      filterData.value[columnArr[0]] = {
+        [columnArr[1]]: value
+      }
+    } else {
+      filterData.value[column.property] = value
+    }
+    request.post(`/materialInventory/getMaterialLogReport/鐗╂枡鏂板/1/${total.pageSize}/${selectDate.value}`, filterData.value).then((res) => {
+
+      if (res.code == 200) {
+        total.dataTotal = res.data.total.total * 1
+        total.pageTotal = res.data.total.pageTotal
+
+        selectDate.value = 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 selectOrderList = () => {
+    request.post(`/materialInventory/getMaterialLogReport/鐗╂枡鏂板/${pageNum.value}/${total.pageSize}/${selectDate.value}/${type.value}`, filterData.value).then((res) => {
+      if (res.code == 200) {
+        selectDate.value = res.data.selectDate
+        if (res.data.total != null) {
+          total.dataTotal = res.data.total.total * 1
+          total.pageTotal = res.data.total.pageTotal
+        }
+        produceList = deepClone(res.data.data)
+        xGrid.value.loadData(produceList)
+        gridOptions.loading = false
+      } else {
+        ElMessage.warning(res.msg)
+        router.push("/login")
+      }
+    })
+  }
+
+  const changeDate = () => {
+    selectOrderList()
+  }
+
+//椤佃剼璺宠浆
+  const handlePageChange = ({currentPage, pageSize}) => {
+    total.pageTotal = pageSize
+    pageNum.value = currentPage
+
+    selectOrderList()
+  }
+
+
+//瀛愮粍浠舵帴鏀跺弬鏁�
+  const xGrid = ref();
+
+  const gridOptions = reactive({
+    border: "full",//琛ㄦ牸鍔犺竟妗�
+    keepSource: true,//淇濇寔婧愭暟鎹�
+    align: 'center',//鏂囧瓧灞呬腑
+    stripe: true,//鏂戦┈绾�
+    rowConfig: {isCurrent: true, isHover: true, height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+    id: 'StorageRecord',
+    showFooter: true,//鏄剧ず鑴�
+    printConfig: {},
+    importConfig: {},
+    exportConfig: {},
+    scrollY: {enabled: true},//寮�鍚櫄鎷熸粴鍔�
+    showOverflow: true,
+    columnConfig: {
+      resizable: true,
+      useKey: true
+    },
+    filterConfig: {   //绛涢�夐厤缃」
+      remote: true
+    },
+    customConfig: {
+      storage: true
+    },
+    editConfig: {
+      trigger: 'click',
+      mode: 'row',
+      showStatus: true
+    },//琛ㄥご鍙傛暟
+    columns: [
+
+      {type: 'checkbox',fixed:"left", title: t('basicData.check'), width: '80' },
+      {type: 'seq', fixed: "left", title: t('basicData.Number'), width: '80'},
+      {
+        field: 'operationOrderNumber',
+        width: '150',
+        title: t('productStock.operationOrderNumber'),
+        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: t('warehouseBasicData.type'),
+        filters: [{data: ''}],
+        slots: {filter: 'num1_filter'}
+      },
+      {
+        field: 'quantity',
+        width: '140',
+        title: t('order.quantity'),
+        filters: [{data: ''}],
+        slots: {filter: 'num1_filter'}
+      },
+      {
+        field: 'inventoryId',
+        width: '100',
+        title: t('ingredientsStock.id'),
+        filters: [{data: ''}],
+        slots: {filter: 'num1_filter'}
+      },
+      {
+        field: 'materialCode',
+        width: '140',
+        title: t('ingredients.materialCode'),
+        filters: [{data: ''}],
+        slots: {filter: 'num1_filter'}
+      },
+      {
+        field: 'materialName',
+        width: '140',
+        title: t('ingredientsStock.materialName'),
+        filters: [{data: ''}],
+        slots: {filter: 'num1_filter'}
+      },
+      {field: 'width', width: '100', title: t('order.width'), filters: [{data: ''}], slots: {filter: 'num1_filter'}},
+      {field: 'height', width: '100', title: t('order.height'), filters: [{data: ''}], slots: {filter: 'num1_filter'}},
+      {
+        field: 'thickness',
+        width: '150',
+        title: t('order.totalThickness'),
+        filters: [{data: ''}],
+        slots: {filter: 'num1_filter'}
+      },
+      {
+        field: 'producer',
+        width: '100',
+        title: t('ingredientsStock.producer'),
+        filters: [{data: ''}],
+        slots: {filter: 'num1_filter'}
+      },
+      {
+        field: 'unit',
+        width: '140',
+        title: t('ingredients.unit'),
+        filters: [{data: ''}],
+        slots: {filter: 'num1_filter'}
+      },
+      {
+        field: 'singlePieceArea',
+        width: '140',
+        title: t('productStock.singlePieceArea'),
+        filters: [{data: ''}],
+        slots: {filter: 'num1_filter'}
+      },
+      {
+        field: 'inventoryArea',
+        width: '140',
+        title: t('productStock.inventoryArea'),
+        filters: [{data: ''}],
+        slots: {filter: 'num1_filter'}
+      },
+      {
+        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: 'remarks',
+        width: '140',
+        title: t('productStock.remarks'),
+        filters: [{data: ''}],
+        slots: {filter: 'num1_filter'}
+      },
+    ],//琛ㄥご鎸夐挳
+    toolbarConfig: {
+      buttons: [
+        {
+          'name': t('productStock.returnToWarehouse'), status: 'primary',
+          'code': 'cancel'
+        }],
+      /*import: false,
+   export: true,
+   print: true,*/
+      zoom: true,
+      custom: true
+    },
+
+    footerMethod({columns, data}) {//椤佃剼鍑芥暟
+      let footList = ['quantity']
+      return [
+        columns.map((column, columnIndex) => {
+          if (columnIndex === 0) {
+            return t('basicData.total')
+          }
+          if (footList.includes(column.field)) {
+            return footSum(data, column.field)
+          }
+          return ''
+        })
+      ]
+    }
+
+  })
+
+  const gridEvents = {
+    toolbarButtonClick({code}) {
+      const $grid = xGrid.value
+      if ($grid) {
+        switch (code) {
+
+          case 'cancel': {
+            const $table = xGrid.value
+            //gridOptions.columns.unshift(a)
+            if ($table) {
+              const selectRecords = $table.getCheckboxRecords()
+
+              if (selectRecords.length <= 0) {
+                ElMessage.warning(t('productStock.unselectedData'))
+                return
+              }
+              let flowData = ref({
+
+                userId: userid,
+                userName: username,
+                materialAdd: selectRecords
+
+              })
+              request.post("/materialInventory/cancelMaterialAdditionRecord", flowData.value).then((res) => {
+                if (res.code == 200 && res.data === "true") {
+                  ElMessage.success(t('product.msg.operateSuccess'))
+                  router.push({
+                    path: '/main/ingredientsStock/materialAdditionRecord',
+                    query: {random: Math.random(), storageType: type.value}
+                  })
+
+                }else if(res.data === "false1"){
+                  ElMessage.warning(t('鏁伴噺涓嶅璇锋鏌�'))
+                }else if(res.data === "false2"){
+                  ElMessage.warning(t('搴撳瓨涓嶅瓨鍦ㄦ垨鑰呭瓨鍦ㄥ鏉�'))
+                }else {
+                  ElMessage.warning(t('productStock.cancellationFailed'))
+                }
+              }).catch((err) => {
+                ElMessage.error(t('basicData.msg.ServerConnectionError'))
+                router.push("/login")
+              })
+            }
+            return;
+
+          }
+
+        }
+      }
+    }
+
+  }
+
+
+
+
+
+</script>
+
+<template>
+  <div  style="width: 100%;height: 100%">
+    <div class="head">
+      <el-date-picker
+          v-model="selectDate"
+          type="daterange"
+          :start-placeholder="$t('basicData.startDate')"
+          :end-placeholder="$t('basicData.endDate')"
+          format="YYYY-MM-DD"
+          value-format="YYYY-MM-DD"
+
+      />
+      <el-button @click="changeDate" style="margin-top: -5px"  id="searchButton" type="primary" :icon="Search">{{$t('basicData.search')}}</el-button>
+    </div>
+
+    <div class="main-table">
+      <vxe-grid
+          height="100%"
+          @filter-change="filterChanged"
+          class="mytable-scrollbar"
+          ref="xGrid"
+          v-bind="gridOptions"
+          v-on="gridEvents"
+          :checkbox-config="checkBoxConfig"
+
+      >
+
+        <!--      <template #state="{ row,column}">
+        &lt;!&ndash;                <p>{{row[column.field]}}</p>&ndash;&gt;
+        &lt;!&ndash;        <el-checkbox v-model="row['isState']" :disabled="row[column.field]==='宸插鏍�'||row[column.field]==='鏈�氳繃'"/>&ndash;&gt;
+                <vxe-checkbox v-model="row['isState']" :disabled="row[column.field]==='宸插鏍�'||row[column.field]==='鏈�氳繃'"></vxe-checkbox>
+              </template>-->
+
+
+        <!--      @toolbar-button-click="toolbarButtonClickEvent"-->
+        <!--      涓嬫媺鏄剧ず鎵�鏈変俊鎭彃妲�-->
+        <template #content="{ row }">
+          <ul class="expand-wrapper">
+            <li  v-for="(item,index) in gridOptions.columns" v-show="item.field!=undefined ">
+              <span style="font-weight: bold">{{item.title+':  '}}</span>
+              <span v-if="hasDecimal(item.field)">{{ hasDecimalhtml(item.field,row) }}</span>
+              <span v-else>{{ row[item.field] }}</span>
+            </li>
+          </ul>
+        </template>
+
+        <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
+        <template #button_slot="{ row }">
+          <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{$t('basicData.edit')}}</el-button>
+          <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">{{$t('basicData.delete')}}</el-button>
+        </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>
+
+        <template #pager>
+          <!--浣跨敤 pager 鎻掓Ы-->
+          <vxe-pager
+              @page-change="handlePageChange"
+              :layouts="[  'PrevPage', 'Jump','PageCount', 'NextPage',  'Total']"
+              v-model:current-page="pageNum"
+              v-model:page-size="total.pageSize"
+              v-model:pager-count="total.pageTotal"
+              :total="total.dataTotal"
+          >
+          </vxe-pager>
+        </template>
+
+
+      </vxe-grid>
+    </div>
+  </div>
+</template>
+
+<style scoped>
+.head{
+  width: 100%;
+  height: 35px;
+}
+
+.main-table{
+  width: 100%;
+  height: calc(100% - 35px);
+}
+</style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi1.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi1.vue
index b903266..795289d 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi1.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi1.vue
@@ -42,6 +42,7 @@
   }else{
     localStorage.setItem('hasRefreshed', 'false');
   }
+  //娴佺▼鍗$紪杈戞墦鍗版爣绛� 甯稿窞
   if (printType == 1) {
     request.post(`/processCard/getSelectPrintCustomLabel2/${type}/1`, data.value).then((res) => {
       if (res.code == 200) {
@@ -64,7 +65,9 @@
       }
     })
 
-  }else if(printType==2){
+  }
+  //鏄庣粏鍒嗘灦鎵撳嵃鏍囩 甯稿窞
+  else if(printType==2){
     request.post(`/processCard/getSelectPrintCustomLabelDetails/${type}/1`, data.value).then((res) => {
       if (res.code == 200) {
         produceList.value = deepClone(res.data.title)
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi2.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi2.vue
index e0d4c89..a0d3ae1 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi2.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintCustomLabelSemi2.vue
@@ -45,6 +45,7 @@
   }else{
     localStorage.setItem('hasRefreshed', 'false');
   }
+  //宸ョ▼鎵撳嵃鎴愬搧鏍囩
   if(projectNo.value!=null){
     request.post(`/processCard/getSelectPrintLabel/${projectNo.value}/${type.value}`).then((res) => {
       if (res.code == 200) {
@@ -57,6 +58,7 @@
 
   }else{
     data.value.printList = JSON.parse(route.query.printList)
+    //娴佺▼鍗$紪杈戞墦鍗版爣绛� 甯稿窞
     if (printType == 1) {
       request.post(`/processCard/getSelectPrintLabel1`, data.value).then((res) => {
         if (res.code == 200) {
@@ -76,7 +78,9 @@
         }
       })
 
-    }else if(printType==2){
+    }
+    //鏄庣粏鍒嗘灦鎵撳嵃鏍囩 甯稿窞
+    else if(printType==2){
       request.post(`/processCard/getSelectPrintLabelDetails`, data.value).then((res) => {
         if (res.code == 200) {
           produceList.value = deepClone(res.data.data)
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
index caf1689..062129b 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue
@@ -387,6 +387,7 @@
     let lableTitle = lableType.text
     if ($grid) {
       switch (code) {
+        //鎵撳嵃娴佺▼鍗�
         case 'print': {
           if (selectRecords === null || selectRecords === '' || selectRecords.length === 0) {
             ElMessage.warning(t('searchOrder.msgList.checkOrder'))
@@ -414,7 +415,7 @@
 
           break
         }
-
+        //鏍囩鎵撳嵃
         case 'printLabel': {
           if (selectRecords === null || selectRecords === '' || selectRecords.length === 0) {
             ElMessage.warning(t('searchOrder.msgList.checkOrder'))
@@ -436,6 +437,7 @@
 
           break
         }
+        //鏍囩鎵撳嵃2
         case 'printLabel2': {
           if (selectRecords === null || selectRecords === '' || selectRecords.length === 0) {
             ElMessage.warning(t('searchOrder.msgList.checkOrder'))
@@ -457,6 +459,7 @@
 
           break
         }
+        //鎺掑簭姹囨��
         case 'sort': {
           const $table = xGridDetail.value
           let data = $table.getTableData().fullData
@@ -485,6 +488,7 @@
           })
           break
         }
+        //鑷畾涔夋墦鍗�
         case 'customLabel': {
           if (selectRecords === null || selectRecords === '' || selectRecords.length === 0) {
             ElMessage.warning(t('searchOrder.msgList.checkOrder'))
@@ -503,6 +507,7 @@
               id += selectRecords[i].id + "|"
             }
           }
+          //鎴愬搧鏍囩1
           if (lableTypes == 1) {
 
             labelRow.value.list = JSON.stringify(selectRecords)
@@ -517,7 +522,9 @@
                 dialogTableVisibleLabel.value = true
               }
 
-            } else if (company.label === 2) {
+            }
+            //甯稿窞椤圭洰
+            else if (company.label === 2) {
               router.push({
                 path: '/main/processCard/PrintCustomLabelCZ',
                 query: {
@@ -530,14 +537,18 @@
               })
             }
 
-          } else if (lableTypes == 2) {
+          }
+          //鎴愬搧鏍囩2
+          else if (lableTypes == 2) {
             labelRow.value.list = JSON.stringify(selectRecords)
             labelRow.value.faceOrientation = faceOrientation
             labelRow.value.type = type
             labelRow.value.lableType = lableTypes
             if (company.label === 1) {
               dialogTableVisibleCustomLabel.value = true
-            } else if (company.label === 2) {
+            }
+            //甯稿窞椤圭洰
+            else if (company.label === 2) {
               router.push({
                 path: '/main/processCard/PrintCustomLabelSemiCZ',
                 query: {
@@ -549,7 +560,9 @@
                 }
               })
             }
-          } else if (lableTypes == 3) {
+          }
+          //鎴愬搧鏍囩3 甯稿窞椤圭洰
+          else if (lableTypes == 3) {
             router.push({
               path: '/main/processCard/PrintLabel1',
               query: {
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCardDetails.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCardDetails.vue
index 3f7f816..6d5c173 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCardDetails.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCardDetails.vue
@@ -459,6 +459,7 @@
     let lableTitle = lableType.text
     if ($grid) {
       switch (code) {
+        //鎵撳嵃娴佺▼鍗�
         case 'print': {
           if (selectRecords === null || selectRecords === '' || selectRecords.length === 0) {
             ElMessage.warning(t('searchOrder.msgList.checkOrder'))
@@ -480,7 +481,7 @@
           dialogTableVisible.value = true
           break
         }
-
+        //鏍囩鎵撳嵃 甯稿窞
         case 'printLabel': {
           if (selectRecords === null || selectRecords === '' || selectRecords.length === 0) {
             ElMessage.warning(t('searchOrder.msgList.checkOrder'))
@@ -502,6 +503,7 @@
 
           break
         }
+        //鏍囩鎵撳嵃2 甯稿窞
         case 'printLabel2': {
           if (selectRecords === null || selectRecords === '' || selectRecords.length === 0) {
             ElMessage.warning(t('searchOrder.msgList.checkOrder'))
@@ -551,6 +553,7 @@
           })
           break
         }
+        //鑷畾涔夋垚鍝佹爣绛炬墦鍗�
         case 'customLabel': {
           if (selectRecords === null || selectRecords === '' || selectRecords.length === 0) {
             ElMessage.warning(t('searchOrder.msgList.checkOrder'))
@@ -569,6 +572,7 @@
               id += selectRecords[i].id + "|"
             }
           }
+          //鎴愬搧鏍囩1
           if (lableTypes == 1) {
             labelRow.value.list = JSON.stringify(selectRecords)
             labelRow.value.faceOrientation = faceOrientation
@@ -577,7 +581,9 @@
             lastList.value = []
             if (company.label === 1) {
               dialogTableVisibleLabel.value = true
-            } else if (company.label === 2) {
+            }
+            //甯稿窞椤圭洰
+            else if (company.label === 2) {
               router.push({
                 path: '/main/processCard/PrintCustomLabelCZ',
                 query: {
@@ -590,7 +596,9 @@
               })
             }
 
-          } else if (lableTypes == 2) {
+          }
+          //鎴愬搧鏍囩2
+          else if (lableTypes == 2) {
             labelRow.value.list = JSON.stringify(selectRecords)
             labelRow.value.faceOrientation = faceOrientation
             labelRow.value.type = type
@@ -598,7 +606,9 @@
             lastList.value = []
             if (company.label === 1) {
               dialogTableVisibleCustomLabel.value = true
-            } else if (company.label === 2) {
+            }
+            //甯稿窞椤圭洰
+            else if (company.label === 2) {
               router.push({
                 path: '/main/processCard/PrintCustomLabelSemiCZ',
                 query: {
@@ -610,7 +620,9 @@
                 }
               })
             }
-          } else if (lableTypes == 3) {
+          }
+          //鎴愬搧鏍囩3
+          else if (lableTypes == 3) {
             router.push({
               path: '/main/processCard/PrintLabel1',
               query: {
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue
index 2ceed2b..2ae9c9d 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue
@@ -41,6 +41,7 @@
       }else{
         localStorage.setItem('hasRefreshed', 'false');
       }
+  //宸ョ▼鎵撳嵃
   if(projectNo.value!=null){
     request.post(`/processCard/getSelectPrintLabel/${projectNo.value}/${type.value}`).then((res) => {
       if (res.code == 200) {
@@ -51,6 +52,7 @@
       }
     })
   }else{
+    //娴佺▼鍗$紪杈戞墦鍗版爣绛� 甯稿窞
     if (printType == 1) {
       data.value.printList = JSON.parse(route.query.printList)
       request.post(`/processCard/getSelectPrintLabel1`,data.value).then((res) => {
@@ -72,7 +74,9 @@
           router.push("/login")
         }
       })
-    }else if(printType==2){
+    }
+    //鏄庣粏鍒嗘灦鎵撳嵃鏍囩 甯稿窞
+    else if(printType==2){
       data.value.printList = JSON.parse(route.query.printList)
       request.post(`/processCard/getSelectPrintLabelDetails`, data.value).then((res) => {
         if (res.code == 200) {
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel1.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel1.vue
index e50a215..0d75f91 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel1.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel1.vue
@@ -41,6 +41,7 @@
   }else{
     localStorage.setItem('hasRefreshed', 'false');
   }
+  //娴佺▼鍗$紪杈戞墦鍗版爣绛�2 甯稿窞
   if (printType == 1) {
     request.post(`/processCard/getSelectPrintCustomLabel2/${type}/1`, data.value).then((res) => {
       if (res.code == 200) {
@@ -63,7 +64,9 @@
       }
     })
 
-  }else if(printType==2){
+  }
+  //鏄庣粏鍒嗘灦鎵撳嵃鏍囩2 甯稿窞
+  else if(printType==2){
     request.post(`/processCard/getSelectPrintCustomLabelDetails/${type}/1`, data.value).then((res) => {
       if (res.code == 200) {
         produceList.value = deepClone(res.data.title)
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue
index 564d38c..752adf4 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue
@@ -281,6 +281,7 @@
           titleStyleVisible.value = true
           break
         }
+        //缂栬緫
         case 'editCheckbox': {
           const selectRecords = $grid.getCheckboxRecords()
           if(selectRecords===null ||selectRecords===''||selectRecords.length===0){
@@ -304,6 +305,7 @@
           return;
 
         }
+        //鏄庣粏鎵撳嵃
         case 'detailsPrint': {
           const selectRecords = $grid.getCheckboxRecords()
           if(selectRecords===null ||selectRecords===''||selectRecords.length===0){
@@ -327,6 +329,7 @@
           return;
 
         }
+        //鏄庣粏鍒嗘灦鎵撳嵃
         case 'detailsProcessPrint': {
           const selectRecords = $grid.getCheckboxRecords()
           if(selectRecords===null ||selectRecords===''||selectRecords.length===0){
@@ -350,6 +353,7 @@
           return;
 
         }
+        //璁㈠崟鎵撳嵃
         case 'orderPrint': {
           const selectRecords = $grid.getCheckboxRecords()
           if(selectRecords===null ||selectRecords===''||selectRecords.length===0){
diff --git a/north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue b/north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue
index 6583a68..71b210d 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/report/ProcessCardProgress.vue
@@ -198,6 +198,7 @@
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged},
     {field: 'quantity', width: 90,title: t('order.quantity')},
+     {field: 'gross_area', width: 90,title: t('order.area')},
     {field: 'broken_num',width: 90, title: t('reportingWorks.quantityBroken')},
     // {field: 'shippedQuantity',width: 120, title: t('report.shippedQuantity')},
     {field: 'inventory',width: 120, title: t('report.inventoryNum')},
@@ -223,7 +224,7 @@
         if (columnIndex === 0) {
           return t('basicData.total')
         }
-        const List = ["quantity", "broken_num", "inventory", "inventoryArea"]; // 闈欐�佸垪鐨勬眰鍜�
+        const List = ["quantity", "broken_num", "inventory", "inventoryArea","gross_area"]; // 闈欐�佸垪鐨勬眰鍜�
         if (List.includes(column.field)) {
           return footSum(data, column.field)
         }
diff --git a/north-glass-erp/northglass-erp/src/views/sd/basicData/SearchBasicData.vue b/north-glass-erp/northglass-erp/src/views/sd/basicData/SearchBasicData.vue
index 6921c96..da7d7fa 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/basicData/SearchBasicData.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/basicData/SearchBasicData.vue
@@ -302,7 +302,7 @@
           </el-col>
         </template>
         <template #add>
-          <el-button @click="add" type="primary" style="margin-right: 3px">鏂板</el-button>
+          <el-button @click="add" type="primary" style="margin-right: 3px">{{$t('basicData.insert')}}</el-button>
 
         </template>
 
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 4763dc1..df97c1d 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
@@ -201,8 +201,8 @@
     body: {
       options: [
         [
-          { code: 'sheet1', name: '璁㈠崟', prefixIcon: 'vxe-icon-file-txt', visible: true},
-          { code: 'sheet2', name: '鍙戣揣', prefixIcon: 'vxe-icon-file-txt', visible: true},
+          { code: 'sheet1', name: t('orderBasicData.order'), prefixIcon: 'vxe-icon-file-txt', visible: true},
+          { code: 'sheet2', name: t('searchOrder.delivery'), prefixIcon: 'vxe-icon-file-txt', visible: true},
         ]
       ]
     }
@@ -260,7 +260,7 @@
       switch (menu.code) {
         case 'sheet1': {
           if(rowClickIndex.value===null){
-            ElMessage.warning("鏈煡璇㈠埌瀹㈡埛淇℃伅")
+            ElMessage.warning(t('customer.msgList.notCustomerInfo'))//"鏈煡璇㈠埌瀹㈡埛淇℃伅"
             return
           }
           router.push({path: '/main/customer/selectCustomerOrder', query: { id: row.id,type:1 }})
@@ -269,7 +269,7 @@
         }
         case 'sheet2': {
           if(rowClickIndex.value===null){
-            ElMessage.warning("鏈煡璇㈠埌瀹㈡埛淇℃伅")
+            ElMessage.warning(t('customer.msgList.notCustomerInfo'))
             return
           }
           router.push({path: '/main/customer/selectCustomerOrder', query: { id: row.id,type:2 }})
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 8d5ce1f..49a73bf 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
@@ -265,7 +265,7 @@
       const blob = new Blob([res])
       if ('download' in document.createElement('a')) { // 闈濱E涓嬭浇
         const elink = document.createElement('a')
-        elink.download = `瀹㈡埛璁㈠崟.xlsx`
+        elink.download = `customerOrder.xlsx`
         elink.style.display = 'none'
         elink.href = URL.createObjectURL(blob)
         document.body.appendChild(elink)
@@ -281,7 +281,7 @@
         const blob = new Blob([res])
         if ('download' in document.createElement('a')) { // 闈濱E涓嬭浇
           const elink = document.createElement('a')
-          elink.download = `瀹㈡埛鍙戣揣.xlsx`
+          elink.download = `customerDelivery.xlsx`
           elink.style.display = 'none'
           elink.href = URL.createObjectURL(blob)
           document.body.appendChild(elink)
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 635a91b..8ff5bae 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
@@ -18,6 +18,7 @@
 import footSum from "@/hook/footSum"
 import {useI18n} from "vue-i18n"
 import {multiply,multiplyAuto,divideAuto} from '@/utils/decimal'
+import OrderNumberReportTransfer from "@/components/sd/order/OrderNumberReportTransfer.vue";
 const { t } = useI18n()
 
 let dialogTableVisible = ref(false)
@@ -25,6 +26,13 @@
 let errorAreaVisible = ref(false)
 let otherMoneyVisible = ref(false)
 let sizeCheckVisible = ref(false)
+let dialogTransferVisible = ref(false)
+const transferData = ref({
+  oldOrderId:null,
+  newOrderNumber:null,
+  newOrderId:null,
+  oldOrderNumber:null,
+})
 let orderIdVisible = ref(false)
 const maxTableLen =ref(500)
 const userStore = useUserInfoStore()
@@ -117,7 +125,8 @@
           { code: 'errorArea', name: t('basicData.errorSettlementArea'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
           { code: 'otherMoney', name: t('basicData.otherAmounts'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
           { code: 'sizeCheck', name: t('basicData.sizeReview'), prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false },
-          { code: 'updateOrderId', name: '淇敼璁㈠崟鍙�', prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false }
+          { code: 'updateOrderId', name: t('searchOrder.updateOrderId'), prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: false },
+          { code: 'reportingTransfer', name: t('searchOrder.reportingTransfer'), prefixIcon: 'vxe-icon-send', visible: true, disabled: true }
         ]
       ]
     }
@@ -749,12 +758,20 @@
 
               })
             }
-
-
-
           }
           computedMoney(result.cell)
           gridOptions.menuConfig.body.options[0][5].disabled = false
+          break
+        }
+        case "reportingTransfer":{
+          const row = xGrid.value.getCurrentRecord()
+          if(row===null){
+            ElMessage.warning(t('components.pleaseClickToSelectARowFirst'))
+            return
+          }
+          transferData.value.oldOrderNumber = row.orderNumber
+          transferData.value.oldOrderId = titleUploadData.value.orderId
+          dialogTransferVisible.value = true
           break
         }
       }
@@ -880,9 +897,10 @@
           gridOptions.toolbarConfig.buttons[2].disabled = true
           gridOptions.toolbarConfig.buttons[3].disabled = true
           gridOptions.toolbarConfig.buttons[4].disabled = true
-
-
         }
+      }
+      if(res.data.order.processingCard>0 && company.connectMes){
+        gridOptions.menuConfig.body.options[0][12].disabled = false
       }
 
       if(res.data.order.productionOrder !==0 ){
@@ -1089,17 +1107,17 @@
           orderId:newOrderId.value,
           random:Math.random()}})
     }else if(res.data==="false1"){
-      ElMessage.warning("杈撳叆璁㈠崟鍙蜂笉鑳藉ぇ浜庢渶澶ц鍗曞彿")
+      ElMessage.warning(t('order.msg.updateOrderIdErrorGtMaxId'))
     }else if(res.data==="false2"){
-      ElMessage.warning("杈撳叆璁㈠崟鍙峰凡瀛樺湪")
+      ElMessage.warning(t('order.msg.updateOrderIdErrorIsExist'))
     }else if(res.data==="false3"){
-      ElMessage.warning("杈撳叆璁㈠崟鍙风浉鍚�")
+      ElMessage.warning(t('order.msg.updateOrderIdErrorIsSame'))
     }else if(res.data==="false4"){
-      ElMessage.warning("杈撳叆璁㈠崟鍙烽暱搴︿笉绗�")
+      ElMessage.warning(t('order.msg.updateOrderIdErrorDiscrepancyInLength'))
     }else if(res.data==="false5"){
-      ElMessage.warning("璇疯緭鍏ユ暟瀛�")
+      ElMessage.warning(t('order.msg.updateOrderIdErrorInputNumber'))
     }else if(res.data==="false6"){
-      ElMessage.warning("涓嶈兘淇敼绗竴涓崟瀛�")
+      ElMessage.warning(t('order.msg.updateOrderIdErrorNotNo1'))
     }
   })
 }
@@ -1142,8 +1160,7 @@
   await  ElMessageBox.confirm(
         t('order.msg.differentSize'),
         t('order.msg.warning'),
-        {
-          confirmButtonText: t('basicData.confirmButtonText'),
+        {confirmButtonText: t('basicData.confirmButtonText'),
           cancelButtonText: t('basicData.cancelButtonText'),
           type: 'warning',
         }
@@ -1579,6 +1596,13 @@
   await initOrder(1)
   createCustomerVisible.value = false
 }
+const orderNumberTransfer = () => {
+  router.push({
+    path:'/main/order/createOrder',
+    query:{
+      orderId:titleUploadData.value.orderId,
+      random:Math.random()}})
+}
 
 </script>
 
@@ -1852,6 +1876,14 @@
       <create-customer :getOrderPage="'order'" @getOrderFunction="createCustomerSuccess" />
     </el-dialog>
 
+<!--    璁㈠崟鎶ュ伐杞Щ-->
+    <el-dialog v-model="dialogTransferVisible"
+               :close-on-click-modal="false"
+               :title="$t('order.orderTransfer')"
+               destroy-on-close width="500">
+      <order-number-report-transfer :transferData="transferData" @orderNumberTransfer="orderNumberTransfer"/>
+    </el-dialog>
+
 
   </div>
 </template>
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 b99f723..6034cbf 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
@@ -390,11 +390,11 @@
               ElMessage.success(t('product.msg.operateSuccess')+'!')
               selectOrderList()
             }else if(res.data==='false1'){
-              ElMessage.warning('姝よ鍗曞凡杞紭鍖栵紝鍥為��澶辫触锛�')
+              ElMessage.warning(t('searchOrder.msgList.isOptimize'))
             }else if(res.data==='false2'){
-              ElMessage.warning('姝よ鍗曞凡鎶ュ伐锛屽洖閫�澶辫触锛�')
+              ElMessage.warning(t('searchOrder.msgList.isReportingWork'))
             }else if(res.data==='false3'){
-              ElMessage.warning('姝よ鍗曞凡鍏ュ簱锛屽洖閫�澶辫触锛�')
+              ElMessage.warning(t('searchOrder.msgList.isStorage'))
             }
           })
         })
@@ -598,6 +598,12 @@
 
   }
 }
+//璁㈠崟璺濈灏忎簬涓夊ぉ鍒欐敼鍙榗heckbox class 鏀瑰彉棰滆壊
+const timeOutChangeColor =(row)=>{
+  if(company.timeOut){
+    return row.timeOut
+  }
+}
 
 </script>
 
@@ -643,12 +649,14 @@
 
         <template #state="{ row,column}">
           <el-checkbox
+              :class="timeOutChangeColor(row)"
               v-if="row[column.field] === 2"
               @click.native.prevent
               :indeterminate="row[column.field]===1"
               :checked="true"/>
           <el-checkbox
               v-else
+              :class="timeOutChangeColor(row)"
               @click.native.prevent
               :indeterminate="row[column.field]===1"
               :checked="false"/>
@@ -794,7 +802,10 @@
   height: 100%;
 }
 
-
+:deep(.timeOut.is-checked .el-checkbox__inner) {
+  background-color: orangered;
+  border-color: orangered;
+}
 
 
 </style>
\ No newline at end of file
diff --git a/north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue b/north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue
index 4481166..e124ad7 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue
@@ -816,7 +816,7 @@
           margin-left: 0.5rem;"
           size="large"
           type="primary"
-          round>{{"澶嶅埗"}}</el-button>
+          round>{{$t('basicData.copy')}}</el-button>
       <el-button
           :disabled="productTotal.state===1"
           @click="saveProduct(null)"
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java b/north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java
index 43665b7..13617d9 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/mm/MaterialInventoryController.java
@@ -188,6 +188,12 @@
         return  Result.seccess(materialInventoryService.mesMaterialOutbound(reportingWork));
     }
 
+    @ApiOperation("鐗╂枡鏂板杩斿洖鎺ュ彛")
+    @PostMapping("/cancelMaterialAdditionRecord")
+    public Result cancelMaterialAdditionRecord( @RequestBody Map<String,Object>  object){
+        return Result.seccess(materialInventoryService.cancelMaterialAdditionRecord(object));
+    }
+
 
 
 
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 b0857bc..a326716 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
@@ -101,6 +101,8 @@
     private LocalDate updateTime;
     @TableField(select = false,exist = false)
     private Integer goodsQuantity;
+    @TableField(select = false,exist = false)
+    private String timeOut;
 
     @TableField(value = "customer_id")
     private Customer  customer;
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java
index 9e20ef4..6efb6fe 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/mm/MaterialInventoryMapper.java
@@ -60,6 +60,8 @@
 
     Boolean deleteMaterialLog(@Param("materialOutboundId") String materialOutboundId);
 
+    Boolean deleteMaterialLogById(@Param("id") Long id);
+
     Integer getMaximum(@Param("type") String type);
 
     Integer getMaximums(@Param("type") String type);
@@ -68,9 +70,9 @@
 
     Integer getReturningWarehouseCount(@Param("returningId") String returningId);
 
-    Integer getMaterialInventoryCount(@Param("materialCode") Long materialCode,@Param("dateOfManufacture") LocalDate dateOfManufacture);
+    List<MaterialInventory> getMaterialInventoryCount(@Param("materialCode") Long materialCode,@Param("dateOfManufacture") LocalDate dateOfManufacture);
 
-    Integer getMaterialInventoryCountNull(@Param("materialCode") Long materialCode);
+    List<MaterialInventory> getMaterialInventoryCountNull(@Param("materialCode") Long materialCode);
 
 
     List<MaterialInventory> getMaterialInventoryCountId(@Param("materialCode") Long materialCode,@Param("dateOfManufacture") LocalDate dateOfManufacture);
@@ -190,6 +192,11 @@
                                     @Param("totalArea") Double totalArea,
                                     @Param("materialInventory") MaterialInventory materialInventory);
 
+    Boolean updateMaterialInventoryOut(@Param("materialCode") Long materialCode,@Param("quantity") Integer quantity,
+                                    @Param("dateOfManufacture") String dateOfManufacture);
+
+    Boolean updateMaterialInventoryNullOut(@Param("materialCode") Long materialCode,@Param("quantity") Integer quantity);
+
     Boolean insertMaterialInventory(@Param("materialCode") Long materialCode,@Param("singlePieceArea") Double singlePieceArea,
                                     @Param("totalArea") Double totalArea,
                                     @Param("materialInventory") MaterialInventory materialInventory);
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java b/north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
index f3c8ce6..1be42c5 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/mm/MaterialInventoryService.java
@@ -201,21 +201,22 @@
 
 
             //鏌ヨ鐗╂枡鏄惁瀛樺湪
-            Integer MaterialInventoryCount=0;
+            List<MaterialInventory> MaterialInventoryCount;
             if (materialInventory.getDateOfManufacture()!=null){
                 MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(materialCode,materialInventory.getDateOfManufacture());
             }else{
                 MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCountNull(materialCode);
             }
 
-            if(MaterialInventoryCount==1){
+            if(MaterialInventoryCount.size()==1){
+                materialInventory.setId(MaterialInventoryCount.get(0).getId());
                 if (materialInventory.getDateOfManufacture()!=null){
                     materialInventoryMapper.updateMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory);
                 }else{
                     materialInventoryMapper.updateMaterialInventoryNull(materialCode,singlePieceArea,totalArea,materialInventory);
                 }
                 log.setFunction("saveMaterialInventory淇敼");
-            }else if(MaterialInventoryCount==0) {
+            }else if(MaterialInventoryCount.isEmpty()) {
                 materialInventoryMapper.insertMaterialInventory(materialCode,singlePieceArea,totalArea,materialInventory);
                 log.setFunction("saveMaterialInventory鏂板");
             }else {
@@ -226,6 +227,9 @@
             MaterialStore materialStore=materialStoreMapper.getSelectMaterialStoreById(materialCode);
             json=materialStore.getJson().substring(1, materialStore.getJson().length() - 1);
             MaterialLog materialLog=new MaterialLog();
+            if(materialInventory.getDateOfManufacture()!=null){
+                materialLog.setOperationOrderNumber(materialInventory.getDateOfManufacture().toString());
+            }
             materialLog.setOperateType("鐗╂枡鏂板");
             materialLog.setMaterialCode(materialCode);
             materialLog.setMaterialName(convertString(json,"\"name\""));
@@ -598,7 +602,7 @@
 
 
                     //鏌ヨ鐗╂枡鏄惁瀛樺湪
-                    Integer MaterialInventoryCount=0;
+                    List<MaterialInventory> MaterialInventoryCount;
                     if (returningWarehouseDetail.getDateOfManufacture()!=null){
                         MaterialInventoryCount = materialInventoryMapper.getMaterialInventoryCount(returningWarehouseDetail.getId(),returningWarehouseDetail.getDateOfManufacture());
                     }else{
@@ -606,7 +610,7 @@
                     }
 
 
-                    if(MaterialInventoryCount>0){
+                    if(!MaterialInventoryCount.isEmpty()){
                         if (returningWarehouseDetail.getDateOfManufacture()!=null){
                             materialInventoryMapper.updateMaterialInventoryReturning(returningWarehouseDetail.getId(),singlePieceArea,totalArea,returningWarehouseDetail);
                         }else{
@@ -1018,6 +1022,65 @@
     }
 
 
+    public String cancelMaterialAdditionRecord(Map<String,Object> object) {
+        String saveState = "true";
+        //璁剧疆鍥炴粴鐐�
+        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
+        try {
+            Log log = new Log();
+            log.setOperatorId(object.get("userId").toString());
+            log.setOperator(object.get("userName").toString());
+            log.setContent(object.toString());
+            //鑾峰彇瀵硅薄闆嗗悎寰幆杩涜鏂板淇敼
+            List<MaterialLog> materialLoglist = JSONArray.parseArray(JSONObject.toJSONString(object.get("materialAdd")), MaterialLog.class);
+            if (!materialLoglist.isEmpty()){
+                for (MaterialLog materialLog : materialLoglist) {
+
+                    //鏌ヨ鐗╂枡鏄惁瀛樺湪
+                    List<MaterialInventory> MaterialInventoryList;
+                    if (materialLog.getOperationOrderNumber()!=null){
+                        MaterialInventoryList = materialInventoryMapper.getMaterialInventoryCount(materialLog.getMaterialCode(), LocalDate.parse(materialLog.getOperationOrderNumber()));
+                    }else{
+                        MaterialInventoryList = materialInventoryMapper.getMaterialInventoryCountNull(materialLog.getMaterialCode());
+                    }
+
+                    if(MaterialInventoryList.size()==1){
+                        if(MaterialInventoryList.get(0).getAvailableQuantity()>=materialLog.getQuantity()){
+                            if (materialLog.getOperationOrderNumber()!=null){
+                                materialInventoryMapper.updateMaterialInventoryOut(materialLog.getMaterialCode(),materialLog.getQuantity(),materialLog.getOperationOrderNumber());
+                            }else{
+                                materialInventoryMapper.updateMaterialInventoryNullOut(materialLog.getMaterialCode(),materialLog.getQuantity());
+                            }
+                            materialInventoryMapper.deleteMaterialLogById(materialLog.getId());
+                        }else{
+                            return "false1";
+                        }
+
+                    }else{
+                        return "false2";
+                    }
+
+
+                }
+
+            }
+            logService.saveLog(log);
+
+        } catch (Exception e) {
+            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
+            //灏嗗紓甯镐紶鍏ユ暟鎹簱
+            SysError sysError = new SysError();
+            sysError.setError(e+Arrays.toString(e.getStackTrace()));
+            sysError.setFunc("cancelFinishedGoodsInventoryStorage");
+            sysErrorService.insert(sysError);
+            saveState = "false";
+
+        }
+        return saveState;
+
+    }
+
+
 
 
 
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
index ea5f781..e4ff2bc 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ReportingWorkService.java
@@ -842,12 +842,24 @@
 
     @Transactional(rollbackFor = Exception.class)
     public Object reportingWorkTransferSv(Map<String, String> reportingWork) {
+        Map<String, Object> result = new HashMap<>();
+
         Order oldOrder = orderMapper.selectOrderId(reportingWork.get("oldOrderId"));
         OrderDetail oldOrderDetail = orderDetailMapper.selectOne(
                 new QueryWrapper<OrderDetail>()
                         .eq("order_id", reportingWork.get("oldOrderId"))
                         .eq("order_number", reportingWork.get("oldOrderNumber"))
         );
+        if(oldOrder == null){
+            result.put("msg","鏃ц鍗曚笉瀛樺湪");
+            result.put("data",false);
+            return result;
+        }
+        if(oldOrderDetail == null){
+            result.put("msg","鏃ц鍗曟搴忓彿涓嶅瓨鍦�");
+            result.put("data",false);
+            return result;
+        }
 
         Order newOrder = orderMapper.selectOrderId(reportingWork.get("newOrderId"));
         OrderDetail newOrderDetail = orderDetailMapper.selectOne(
@@ -855,15 +867,37 @@
                         .eq("order_id", reportingWork.get("newOrderId"))
                         .eq("order_number", reportingWork.get("newOrderNumber"))
         );
+        if (newOrder == null){
+            result.put("msg","鏂拌鍗曚笉瀛樺湪");
+            result.put("data",false);
+            return result;
+        }
+        if(newOrderDetail == null){
+            result.put("msg","鏂拌鍗曟搴忓彿涓嶅瓨鍦�");
+            result.put("data",false);
+            return result;
+        }
+        if(Objects.equals(oldOrder.getOrderId(), newOrder.getOrderId())){
+            result.put("msg","鏂版棫璁㈠崟鍙蜂竴鑷�");
+            result.put("data",false);
+            return result;
+        }
+
         if(!Objects.equals(oldOrder.getCustomerId(), newOrder.getCustomerId())){
-            return "鏂版棫璁㈠崟瀹㈡埛涓嶄竴鑷�";
+            result.put("msg","鏂版棫璁㈠崟瀹㈡埛涓嶄竴鑷�");
+            result.put("data",false);
+            return result;
         }
         if(!Objects.equals(oldOrderDetail.getProductId(), newOrderDetail.getProductId())){
-            return "鏂版棫璁㈠崟浜у搧涓嶄竴鑷�";
+            result.put("msg","鏂版棫璁㈠崟浜у搧涓嶄竴鑷�");
+            result.put("data",false);
+            return result;
         }
         if (!Objects.equals(oldOrderDetail.getWidth(), newOrderDetail.getWidth())
                 || !Objects.equals(oldOrderDetail.getHeight(), newOrderDetail.getHeight())){
-            return "鏂版棫璁㈠崟灏哄涓嶄竴鑷�";
+            result.put("msg","鏂版棫璁㈠崟灏哄涓嶄竴鑷�");
+            result.put("data",false);
+            return result;
         }
 
 
@@ -874,7 +908,9 @@
                         .eq("order_number", reportingWork.get("oldOrderNumber"))
                 );
         if(oldOrderProcessDetailList.isEmpty()){
-            return "鏃ц鍗曟湭鍒嗘祦绋嬪崱";
+            result.put("msg","鏃ц鍗曟湭鍒嗘祦绋嬪崱");
+            result.put("data",false);
+            return result;
         }
         //鑾峰彇鏂拌鍗曟槸鍚︽祦绋嬪崱鏄惁瀛樺湪
         List<OrderProcessDetail> newOrderProcessDetailList = orderProcessDetailMapper
@@ -883,7 +919,9 @@
                         .eq("order_number", reportingWork.get("newOrderNumber"))
                 );
         if(newOrderProcessDetailList.isEmpty()){
-            return "鏂拌鍗曟湭鍒嗘祦绋嬪崱";
+            result.put("msg","鏂拌鍗曟湭鍒嗘祦绋嬪崱");
+            result.put("data",false);
+            return result;
         }
         //鏂拌鍗曟槸鍚﹀瓨鍦ㄥ凡缁忔帓鐗堝簭鍙�
         List<FlowCard> newFlowCardLayoutStatus = flowCardMapper.selectList(new QueryWrapper<FlowCard>()
@@ -892,7 +930,9 @@
                 .gt("layout_status",0)
         );
         if(!newFlowCardLayoutStatus.isEmpty()){
-            return "鏂拌鍗曟搴忓彿瀛樺湪鎺掔増";
+            result.put("msg","鏂拌鍗曟搴忓彿瀛樺湪鎺掔増");
+            result.put("data",false);
+            return result;
         }
         //鑾峰彇鏃ц鍗曟姤宸ユ暟鎹眹鎬�
         List<OrderProcessDetail> oldOrderProcessDetailForReport = orderProcessDetailMapper
@@ -1021,16 +1061,20 @@
         //restTemplate.postForObject("http://localhost:8086/order/test",orderNumberTransferList,String.class);
 
         //鍚憁es鍙戦�乭ttp璇锋眰
-        ResponseEntity<String> response =restTemplate.exchange(
+        ResponseEntity<OrderNumberTransferDTO> response =restTemplate.exchange(
                 "http://localhost:88/api/loadGlass/order/order/orderChange",
                 HttpMethod.POST,
                 new HttpEntity<>(orderNumberTransferList),
-                String.class);
+                OrderNumberTransferDTO.class);
 
         if(response.getStatusCode() == HttpStatus.OK){
-            return true;
+            OrderNumberTransferDTO responseBody = response.getBody();
+            result.put("data",true);
+            return result;
         }else{
-            return "杩炴帴mes鍝嶅簲瓒呮椂";
+            result.put("msg","杩炴帴mes鍝嶅簲瓒呮椂");
+            result.put("data",false);
+            return result;
         }
         
     }
diff --git a/north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml b/north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
index 1cfa8bc..fc889c2 100644
--- a/north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
+++ b/north-glass-erp/src/main/resources/mapper/mm/MaterialInventory.xml
@@ -538,6 +538,10 @@
         delete from mm.material_log where operation_order_number=#{materialOutboundId}
     </delete>
 
+    <delete id="deleteMaterialLogById" >
+        delete from mm.material_log where id=#{id}
+    </delete>
+
     <delete id="deleteReturningWarehouseDetail" >
         delete from mm.returning_warehouse_detail where returning_id=#{returningId}
     </delete>
@@ -583,11 +587,11 @@
     </select>
 
     <select id="getMaterialInventoryCount" >
-        select count(*) from mm.material_inventory where  material_code=#{materialCode} and date_of_manufacture=#{dateOfManufacture}
+        select * from mm.material_inventory where  material_code=#{materialCode} and date_of_manufacture=#{dateOfManufacture}
     </select>
 
     <select id="getMaterialInventoryCountNull" >
-        select count(*) from mm.material_inventory where  material_code=#{materialCode} and date_of_manufacture is null
+        select * from mm.material_inventory where  material_code=#{materialCode} and date_of_manufacture is null
     </select>
 
     <select id="getMaterialInventoryCountId" >
@@ -779,7 +783,21 @@
         update mm.material_inventory set inventory_quantity=inventory_quantity+#{materialInventory.inventoryQuantity},
                                          available_quantity=available_quantity+#{materialInventory.inventoryQuantity},
                                          total_area=single_piece_area*inventory_quantity
-        where  material_code=#{materialCode}
+        where  material_code=#{materialCode} and date_of_manufacture is null
+    </update>
+
+    <update id="updateMaterialInventoryOut" >
+        update mm.material_inventory set inventory_quantity=inventory_quantity-#{quantity},
+                                         available_quantity=available_quantity-#{quantity},
+                                         total_area=single_piece_area*inventory_quantity
+        where  material_code=#{materialCode} and date_of_manufacture=#{dateOfManufacture}
+    </update>
+
+    <update id="updateMaterialInventoryNullOut" >
+        update mm.material_inventory set inventory_quantity=inventory_quantity-#{quantity},
+                                         available_quantity=available_quantity-#{quantity},
+                                         total_area=single_piece_area*inventory_quantity
+        where  material_code=#{materialCode} and date_of_manufacture is null
     </update>
 
     <update id="updateMaterialInventoryReturning" >
diff --git a/north-glass-erp/src/main/resources/mapper/pp/Report.xml b/north-glass-erp/src/main/resources/mapper/pp/Report.xml
index c41dc89..02f922f 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/Report.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -170,6 +170,7 @@
                e.reportWorkQuantityCount,
                e.reportWorkTime,
                e.broken_num,
+               c.quantity*a.area as gross_area,
                ifnull(f.inventory, 0)                         as inventory,
                round(ifnull(f.inventory, 0) * a.area, 2)      as inventoryArea,
                ifnull(dd.quantity, 0)                         as shippedQuantity,
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 fc2ba1c..27d6d8c 100644
--- a/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
+++ b/north-glass-erp/src/main/resources/mapper/sd/OrderMapper.xml
@@ -104,7 +104,8 @@
     <select id="getOrderList">
        select * from (select
             o.*,
-        ifnull(sum(fgi.quantity_available),0) as goodsQuantity
+        ifnull(sum(fgi.quantity_available),0) as goodsQuantity,
+        if(DATEDIFF(o.delivery_date, CURDATE()) &lt; 3  and o.delivery &lt; 2, 'timeOut','' ) as timeOut
         from
             sd.`order` as o
         left join mm.finished_goods_inventory as  fgi

--
Gitblit v1.8.0