From c3360be51c33fbdf16a379156d29cc5cd919e50e Mon Sep 17 00:00:00 2001
From: guoyuji <guoyujie@ng.com>
Date: 星期四, 13 六月 2024 16:15:07 +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                               |    6 
 north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue                        |    2 
 north-glass-erp/northglass-erp/src/lang/zh.js                                                   |  232 ++++++
 north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue                             |    2 
 north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue                          |   36 
 north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml                                       |    8 
 north-glass-erp/northglass-erp/src/components/BasicTable.vue                                    |    3 
 north-glass-erp/northglass-erp/src/views/sd/order/OrderProductSummaryReport.vue                 |   71 +
 north-glass-erp/northglass-erp/src/views/pp/processCard/SelectPrintFlowCard.vue                 |   14 
 north-glass-erp/northglass-erp/src/views/sd/delivery/SelectOrderList.vue                        |    4 
 north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue                               |    6 
 north-glass-erp/src/main/resources/mapper/pp/Report.xml                                         |   10 
 north-glass-erp/northglass-erp/src/views/system/userPassWord/UserPassWord.vue                   |    2 
 north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue                 |   28 
 north-glass-erp/northglass-erp/src/views/system/user/UserList.vue                               |   14 
 north-glass-erp/northglass-erp/src/views/pp/processCard/PrintLabel.vue                          |   38 
 north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue                         |    4 
 north-glass-erp/northglass-erp/src/views/sd/order/Order.vue                                     |    4 
 north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue             |   26 
 north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue                      |    6 
 north-glass-erp/northglass-erp/src/views/sd/basicData/SearchGlassType.vue                       |   20 
 north-glass-erp/northglass-erp/src/views/pp/Replenish/SelectReplenish.vue                       |    6 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue             |   34 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue          |   44 
 north-glass-erp/northglass-erp/src/views/sd/order/CreateOrder.vue                               |   41 
 north-glass-erp/src/main/resources/application.yml                                              |    8 
 north-glass-erp/src/main/java/com/example/erp/controller/pp/ProductionSchedulingController.java |   19 
 north-glass-erp/src/main/java/com/example/erp/service/pp/ProductionSchedulingService.java       |   33 
 north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue                           |   38 
 north-glass-erp/src/main/resources/mapper/pp/ProductionScheduling.xml                           |  201 ++---
 north-glass-erp/northglass-erp/src/views/pp/Replenish/AddReplenish.vue                          |    4 
 north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue                   |   24 
 north-glass-erp/src/main/java/com/example/erp/entity/pp/ProductionScheduling.java               |    1 
 north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml                                  |    6 
 north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue                                 |   10 
 north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java                   |   13 
 north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue                         |   48 
 north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue                               |   71 +-
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue            |   38 
 north-glass-erp/northglass-erp/src/views/system/role/Role.vue                                   |    2 
 north-glass-erp/northglass-erp/src/views/sd/delivery/CreateDelivery.vue                         |   18 
 north-glass-erp/northglass-erp/src/views/pp/rework/AddRework.vue                                |    4 
 north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue                              |   10 
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java                     |    1 
 north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue                |  196 +----
 north-glass-erp/northglass-erp/src/views/pp/rework/SelectRework.vue                             |    8 
 north-glass-erp/northglass-erp/src/views/sd/customer/CreateCustomer.vue                         |    4 
 north-glass-erp/src/main/java/com/example/erp/mapper/pp/ProductionSchedulingMapper.java         |   10 
 north-glass-erp/northglass-erp/config.js                                                        |    2 
 north-glass-erp/northglass-erp/src/views/sd/product/CreateProduct.vue                           |  113 +-
 north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue                    |   64 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue                 |   80 +-
 north-glass-erp/northglass-erp/src/views/sd/basicData/SearchBasicData.vue                       |    8 
 north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue                           |   24 
 north-glass-erp/northglass-erp/src/views/pp/processCard/PrintFlowCard.vue                       |   37 
 north-glass-erp/northglass-erp/src/views/system/role/RoleList.vue                               |   42 
 north-glass-erp/northglass-erp/src/views/sd/delivery/SelectDelivery.vue                         |   12 
 north-glass-erp/northglass-erp/src/views/system/user/User.vue                                   |    2 
 north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java          |    8 
 /dev/null                                                                                       |   18 
 north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue                       |   12 
 north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue                          |    4 
 north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue                   |    2 
 north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomer.vue                         |   10 
 north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue                       |   60 
 north-glass-erp/northglass-erp/src/views/sd/customer/SelectCustomerOrder.vue                    |   18 
 north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryProductReport.vue                  |   52 
 north-glass-erp/northglass-erp/src/views/sd/basicData/BasicData.vue                             |    4 
 north-glass-erp/northglass-erp/src/views/system/userPassWord/UpdateUserPassWord.vue             |   26 
 69 files changed, 1,040 insertions(+), 986 deletions(-)

diff --git a/north-glass-erp/northglass-erp/config.js b/north-glass-erp/northglass-erp/config.js
index f9eae20..02bde44 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:"10.153.19.150:8080"
+  //serverUrl:"192.168.1.199:8086"
 }
diff --git a/north-glass-erp/northglass-erp/src/components/BasicTable.vue b/north-glass-erp/northglass-erp/src/components/BasicTable.vue
index aa0fbd0..7ceaba3 100644
--- a/north-glass-erp/northglass-erp/src/components/BasicTable.vue
+++ b/north-glass-erp/northglass-erp/src/components/BasicTable.vue
@@ -8,6 +8,9 @@
 import deepClone from "@/utils/deepClone";
 import {ElMessage} from "element-plus";
 import * as XLSX from "xlsx";
+import {useI18n} from "vue-i18n";
+
+const { t } = useI18n()
 const xGrid = ref()
 let filterData = ref({})
 const gridOptions = reactive({
diff --git a/north-glass-erp/northglass-erp/src/lang/zh.js b/north-glass-erp/northglass-erp/src/lang/zh.js
index 1f13738..30b3134 100644
--- a/north-glass-erp/northglass-erp/src/lang/zh.js
+++ b/north-glass-erp/northglass-erp/src/lang/zh.js
@@ -43,6 +43,18 @@
         startDate:'寮�濮嬫椂闂�',
         endDate:'缁撴潫鏃堕棿',
         reportData:'鎶ヨ〃鏃ユ湡',
+
+        confirmButtonText: '纭',
+        cancelButtonText: '鍙栨秷',
+        creationTime:'鍒涘缓鏃堕棿',
+        insert: '鏂板',
+        update:'淇敼',
+        number:'搴忓彿',
+        otherAmounts:'鍏朵粬閲戦',
+        errorSettlementArea:'璇樊缁撶畻闈㈢Н',
+        sizeReview:'灏哄瀹℃牳',
+        reportForms:'鎶ヨ〃',
+        print:'鎵撳嵃',
         msg:{
             max255:"鏈�澶氳緭鍏�255涓瓧绗�",
             range99999Dec2:
@@ -52,12 +64,30 @@
             saveSuccess:'淇濆瓨鎴愬姛',
             saveFail:'淇濆瓨澶辫触',
             cancelReviewSuccess:'鍙嶅鎴愬姛',
-            ReviewSuccess:'瀹℃牳鎴愬姛'
+            ReviewSuccess:'瀹℃牳鎴愬姛',
+            ServerConnectionError:'鏈嶅姟鍣ㄨ繛鎺ラ敊璇�',
+            deleteSuccess:'鍒犻櫎鎴愬姛',
+            deleteFail:'鍒犻櫎澶辫触',
+            reviewFail:'瀹℃牳澶辫触',
+            noProductDataInTheTable:'琛ㄦ牸涓棤浜у搧鏁版嵁',
+            tableDataExceedsMaximumLimit:'琛ㄦ牸鏁版嵁瓒呰繃鏈�澶ч檺鍒�',
+
+
         }
     },
     product:{
-       ProductHomePage:'浜у搧棣栭〉',
-       create:'鍒涘缓',
+        ProductHomePage:'浜у搧棣栭〉',
+        create:'鍒涘缓',
+        coloredGlaze:'褰╅噳',
+        frostedSand:'钂欑爞',
+        coating:'闀�鑶�',
+        filmApplication:'璐磋啘',
+        sandblasting:'鍠风爞',
+        edgeGrinding:'纾ㄨ竟',
+        productName:'鍚嶇О',
+        typeName:'鎵�灞炵被鍒�',
+        query:'蹇�熸煡璇�',
+        creator:'鍒涘缓浜�',
        msg:{
            productLength:'璇锋坊鍔犱骇鍝佽鎯�',
            lastGlass:'浜у搧璇︽儏鏈�鍚庝竴鏉′笉鏄幓鐠冿紝璇峰畬鍠�',
@@ -105,6 +135,7 @@
            create:'鍒涘缓',
            review:'瀹℃牳',
            cancelReview:'鍙嶅',
+           theProductHasBeenReviewedAndCannotBeDeleted:'浜у搧宸插鏍�,鏃犳硶鍒犻櫎',
        }
 
 
@@ -146,12 +177,32 @@
         trueArea:'瀹為檯鍗曠墖闈㈢Н',
         trueGrossArea:'瀹為檯鎬婚潰绉�',
         computeArea:'缁撶畻鍗曠墖闈㈢Н',
-        computeGrossArea:'璁$畻鎬婚潰绉�',
+        computeGrossArea:'缁撶畻鎬婚潰绉�',
         shape:'褰㈢姸',
         bendRadius:'寮挗寮у害',
         edgingType:'纾ㄨ竟绫诲瀷',
         import:'瀵煎叆',
         template:'妯℃澘',
+
+        universalShape:'鏅舰',
+        alien:'寮傚舰',
+        areaAmountPerPiece:'闈㈢Н閲戦锛堝崟鐗囷級',
+        areaAmountAge:'闈㈢Н閲戦锛堟�婚潰绉級',
+        errorValue:'璇樊鍊�',
+        orderDetailsSummary:'璁㈠崟鏄庣粏姹囨��',
+        details:'璇︽儏',
+        workmanship:'宸ヨ壓',
+        processCard:'娴佺▼鍗�',
+        processingNotes:'涓诲姞宸ヨ姹�',
+        perimeter:'鍛ㄩ暱',
+        grossArea:'鎬婚潰绉�',
+        creator:'鍒跺崟鍛�',
+        totalThickness:'鍘氬害',
+        levelOne:'浜у搧澶х被',
+        levelTwo:'浜у搧灏忕被',
+        orderDetailsReport:'璁㈠崟鏄庣粏鎶ヨ〃',
+        orderDetailsSummaryReport:'璁㈠崟鏄庣粏姹囨�绘姤琛�',
+        floorNumber:'妤煎眰缂栧彿',
         msg:{
             productCheck:'璇烽�夋嫨浜у搧',
             tableLengthNot:'娌℃湁琛ㄦ牸鏁版嵁',
@@ -167,6 +218,10 @@
             importMaxCheckFailLast:'鏉�,璇峰垎璁㈠崟瀵煎叆',
             updateAmountSuccessfully:'鏇存柊閲戦鎴愬姛',
             updateOrderState:'鏇存柊璁㈠崟鐘舵�佹垚鍔�',
+            calculationAreaPrompt1:'瀛樺湪',
+            calculationAreaPrompt2:'鏉$粨绠楀崟鐗囬潰绉皬浜�',
+            calculationAreaPrompt3:'鏄惁鎸夌収',
+            calculationAreaPrompt4:'璁$畻',
         }
 
     },
@@ -213,14 +268,21 @@
         newProcess:'娴佺▼',
         reset:'閲嶇疆',
         sure:'纭畾',
-        // upperLeft:'宸︿笂',
-        // upperRight:'鍙充笂',
-        // lowLeft:'宸︿笅',
-        // lowRight:'鍙充笅',
-        // TrademarkAttribute:'鍟嗘爣鍙傛暟',
-        // TrademarkOptions:'鍟嗘爣閫夐」',
-        // xImage:'X杞撮暅鍍�',
-        // yImage:'X杞撮暅鍍�'
+        upperLeft:'宸︿笂',
+        upperRight:'鍙充笂',
+        lowLeft:'宸︿笅',
+        lowRight:'鍙充笅',
+        TrademarkAttribute:'鍟嗘爣鍙傛暟',
+        TrademarkOptions:'鍟嗘爣閫夐」',
+        xImage:'X杞撮暅鍍�',
+        yImage:'y杞撮暅鍍�',
+        modifyTrademark:'淇敼鍟嗘爣',
+        tag:'鎵撴爣浣胯兘',
+        tag2:'浜岀淮鐮佹墦鍗�1',
+        tag3:'浜岀淮鐮佹墦鍗�2',
+        xMargin:'X杞磋竟璺�',
+        yMargin:'Y杞磋竟璺�',
+        location:'鍟嗘爣浣嶇疆',
 
     },
 
@@ -231,7 +293,8 @@
         unConverted:'鏈浆',
         deleteOk:'鍒犻櫎鎴愬姛',
         transferOrder:'杞伐鍗�',
-        perimeter:'鍛ㄩ暱'
+        perimeter:'鍛ㄩ暱',
+        deleteNo:'鍒犻櫎澶辫触锛屾鏌ユ槸鍚﹀凡鍒嗘灦'
 
     },
     processCard:{
@@ -288,6 +351,20 @@
         technologyNumber:'灏忕墖椤哄簭',
         otherRemarks:'鍘熺墖瑕佹眰',
 
+        pleaseSelectTheSavedDataFirst:'璇峰厛閫夋嫨淇濆瓨鐨勬暟鎹�',
+        pleaseFirstCreateAProcessCardForAllTheDataOnTheRightSideAndSaveIt:'璇峰厛灏嗗彸渚ф暟鎹叏閮ㄥ缓绔嬫祦绋嬪崱鍚庝繚瀛�',
+        glassAddress:'灏忕墖鏍囪',
+        splitFrameTime:'鍒嗘灦鏃堕棿',
+        print:'鎵撳嵃娴佺▼鍗�',
+        printLabel:'鎵撳嵃鏍囩',
+        printSetup:'鏍囩璁剧疆',
+        specificationQuantity:'瑙勬牸鏁伴噺',
+        singlePieceProductName:'鍗曠墖浜у搧鍚嶇О',
+        productType:'浜у搧绫诲瀷',
+        whetherToScheduleProduction:'鏄惁鎺掍骇',
+        deleteNo:'鍒犻櫎澶辫触锛屾鏌ユ祦绋嬪崱鏄惁宸叉姤宸�',
+        deleteNoProcedure:'鍒犻櫎澶辫触锛屾鏌ヤ笅宸ュ簭鏄惁宸叉姤宸�',
+        pleaseCheckTheRequiredData:'璇峰嬀閫夐渶瑕佺殑鏁版嵁',
     },
 
     reportingWorks:{
@@ -363,6 +440,18 @@
         thisWornQuantity:'鏈伐搴忔鐮�',
         passAudit:'瀹℃牳閫氳繃',
 
+        ThanEqualTo1:'璇疯緭鍏ュぇ浜庣瓑浜�',
+        ThanEqualTo2:'鐨勬暟瀛�',
+        selectResponsibleTeam:'璇烽�夋嫨璐d换鐝粍',
+        selectWorkReportingTeam:'璇烽�夋嫨璐d换鐝粍',
+        successfulModificationOfWorkApplication:'鎶ュ伐淇敼鎴愬姛',
+        theProcessCardNumberCannotBeEmpty:'娴佺▼鍗″彿涓嶈兘涓虹┖',
+        unqualified:'鏈川妫�',
+        qualified:'宸茶川妫�',
+        thisProcess:'鏈伐搴�',
+        qualityInsTime:'璐ㄦ鏃堕棿',
+        completedArea:'瀹屽伐闈㈢Н',
+        wornArea:'娆$牬闈㈢Н',
 
 
     },
@@ -477,6 +566,8 @@
         customerHomePage:'瀹㈡埛棣栭〉',
         increaseCustomers:'瀹㈡埛鏂板',
         resetting:'閲嶇疆',
+        customerOrders:'瀹㈡埛璁㈠崟',
+        orderAmount:'璁㈠崟閲戦',
 
     },
     delivery:{
@@ -511,6 +602,12 @@
         deliveryNoteId:'鍙戣揣鍗曞彿',
         deliveryNoteNumber:'鍙戣揣搴忓彿',
         deliveryDate:"鍙戣揣鏃ユ湡 ",
+        shipmentDetailsReport:"鍙戣揣鏄庣粏鎶ヨ〃 ",
+        shipmentProductClassificationReport:"鍙戣揣浜у搧鍒嗙被鎶ヨ〃 ",
+        contacts:'鑱旂郴浜�',
+        contactNumber:'鑱旂郴鐢佃瘽',
+        salesman:'閿�鍞憳',
+        money:'閲戦',
 
     },
     replenish:{
@@ -538,7 +635,116 @@
         TheReworkQuantityCannotBeGreaterThanTheSecondBreakQuantity:'杩斿伐鏁伴噺涓嶈兘澶т簬娆$牬鏁伴噺',
         reworkQuantityCannotBeEmptyOr0:'杩斿伐鏁伴噺涓嶈兘涓虹┖鎴栬�呮槸0',
 
+    },
+
+    role:{
+        id:'ID',
+        characterHomepage:'瑙掕壊棣栭〉',
+        role:'瑙掕壊',
+        roleAdd:'瑙掕壊鏂板',
+        menu:"鑿滃崟 ",
+        page:'椤甸潰',
+        permission:'鏉冮檺',
+        rolePermissions:'瑙掕壊鏉冮檺',
+        permissionSelection:"鏉冮檺閫夋嫨 ",
+
+
+        ConfirmModifyingRolePermissions:'纭淇敼瑙掕壊鏉冮檺?',
+        PleaseEnterANewRole:'璇疯緭鍏ユ柊瑙掕壊',
+        AddANewRole:'鏂板瑙掕壊',
+        CannotBeEmptyAndTheLengthCannotExceed255:'涓嶈兘涓虹┖涓旈暱搴︿笉鑳借秴杩�255',
+
+    },
+
+    user:{
+        userId:'鐢ㄦ埛ID',
+        userHomepage:'鐢ㄦ埛棣栭〉',
+        user:'鐢ㄦ埛',
+        setUpRoles:'璁剧疆瑙掕壊',
+        changePassword:'淇敼瀵嗙爜',
+        OldPassword:'鏃у瘑鐮�',
+        TheNewPassword:'鏂板瘑鐮�',
+        ConfirmPassword:'纭瀵嗙爜',
+
+        OldPasswordCannotBeEmpty:'鏃у瘑鐮佷笉鑳戒负绌�',
+        TheNewPasswordCannotBeEmpty:'鏂板瘑鐮佷笉鑳戒负绌�',
+        ThePasswordLengthCannotBeLessThan6OrMoreThan16:'瀵嗙爜闀垮害涓嶈兘浣庝簬6鎴栬秴杩�16',
+        ConfirmPasswordCannotBeEmpty:'纭瀵嗙爜涓嶈兘涓虹┖',
+        TheTwoPasswordsAreNotTheSame:'涓ゆ瀵嗙爜涓嶇浉鍚�',
+        OldPasswordError:'鏃у瘑鐮侀敊璇�',
+
+
+    },
+
+    orderBasicData:{
+        order:'璁㈠崟',
+        orderType:'璁㈠崟绫诲瀷',
+        orderClassify:'璁㈠崟鍒嗙被',
+        icon:'鍟嗘爣閫夐」',
+        packType:'鍖呰鏂瑰紡',
+        alType:'閾濇潯鏂瑰紡',
+        saleMan:'涓氬姟鍛�',
+        product:'浜у搧',
+        stuffThickness:'鏉愭枡鍘氬害',
+        stuffColor:'鏉愭枡棰滆壊',
+        stuffCraft:'宸ヨ壓灞炴��',
+        stuffPosition:'鐜荤拑浣嶇疆',
+        stuffLowE:'lowe',
+        InterlayerThickness:'澶硅兌鍘氬害',
+        InterlayerType:'澶硅兌绫诲瀷',
+        InterlayerColor:'澶硅兌棰滆壊',
+        process:'宸ヨ壓娴佺▼',
+        hollowThickness:'涓┖鍘氬害',
+        hollowGasType:'鍏呮皵鏂瑰紡',
+        hollowType:'灏佽兌',
+        hollowGlueDepth:'榛樿鑳舵繁',
+        paymentTerms:'浠樻鏉′欢',
+        payMethod:'鏀舵鏂瑰紡',
+        delivery:'閫佽揣',
+
+        basicType:'鍩虹绫诲瀷',
+        name:'鍚嶇О',
+        glassCategory:'鐜荤拑绫诲埆',
+        level:'绫诲埆绛夌骇',
+        firstLevel:'涓�绾х被鍒�',
+        towLevel:'浜岀骇绫诲埆',
+
+    },
+
+    machine:{
+        basicId:'璁惧缂栧彿',
+        basicName:'璁惧鍚嶇О',
+        basicCategory:'鎵�鍦ㄥ伐搴�',
+        type:'绫诲瀷',
+        faultTime:'鏁呴殰鏃ユ湡',
+        faultReason:'鏁呴殰鍘熷洜',
+        maintenanceTime:'淇濆吇鏃ユ湡',
+        maintenanceIllustrate:'淇濆吇璇存槑',
+        startTime:'缁翠慨/淇濆吇寮�濮嬫椂闂�',
+        stopTime:'缁翠慨/淇濆吇缁撴潫鏃堕棿',
+        process:'鎵�鍦ㄥ伐搴�',
+        personnel:'缁翠慨/淇濆吇浜哄憳',
+        cost:'璐圭敤',
+
+        equipmentSituation:'璁惧鎯呭喌',
+        equipmentAddition:'璁惧鏂板',
+        maintenanceAndRepair:'淇濆吇涓庣淮淇�',
+        maintenanceAndRepairAddition:'淇濆吇涓庣淮淇柊澧�',
+        maintenanceAndRepairEdit:'淇濆吇涓庣淮淇紪杈�',
+        service:'缁翠慨',
+        maintain:'淇濆吇',
+
+        faultCount:'缁翠慨娆℃暟',
+        maintenanceCount:'淇濆吇娆℃暟',
+        faultLastTime:'鏈�鍚庣淮淇椂闂�',
+        maintenanceLastTime:'鏈�鍚庝繚鍏绘椂闂�',
+        faultCost:'缁翠慨璐圭敤',
+        maintenanceCost:'淇濆吇璐圭敤',
+
+
     }
 
 
+
+
 }
\ No newline at end of file
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 74c6321..e44c4de 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
@@ -98,7 +98,7 @@
     {field: 'width', width: 80, title: t('order.width'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
     {field: 'height', width: 80, title: t('order.height'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
     {field: 'shape', width: 80, title: t('order.shape'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
-    {field: 'responsibleProcess', width: 100, title: '璐d换宸ュ簭', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
+    {field: 'responsibleProcess', width: 100, title: t('reportingWorks.responsibleProcess'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
     {field: 'patchProcesses', width: 100, title: t('reportingWorks.reportingProcess'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
     {field: 'patchType', width: 100, title: t('reportingWorks.breakageType'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod:filterChanged},
     {field: 'patchReason', width: 120, title: t('reportingWorks.breakageReason'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
@@ -163,7 +163,7 @@
               ElMessage.success(t('basicData.msg.saveSuccess'))
               router.push({path:'/main/Replenish/AddReplenish',query:{random:Math.random()}})
             }else{
-              ElMessage.warning("淇濆瓨澶辫触")
+              ElMessage.warning(t('basicData.msg.saveFail'))
               router.push("/login")
             }
           })
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 4987207..d9cfbaa 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
@@ -194,7 +194,7 @@
                 router.push({path:'/main/Replenish/SelectReplenish',query:{random:Math.random()}})
 
               }else{
-                ElMessage.warning("瀹℃牳澶辫触")
+                ElMessage.warning(t('basicData.msg.reviewFail'))
                 router.push("/login")
               }
             })
@@ -264,8 +264,8 @@
       <el-date-picker
           v-model="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"
 
diff --git a/north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue b/north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue
index 8b384aa..59cb7cb 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/machine/AddMachine.vue
@@ -69,14 +69,14 @@
     {type: 'seq', fixed: "left", title: '鑷簭', width: 50},
     {
       field: 'basicName',
-      title: '璁惧鍚嶇О',
+      title: t('machine.basicName'),
       width: 500,
       editRender: {name: 'input', attrs: {placeholder: ''}},
     },
 
     {
       field: 'basicCategory',
-      title: '鎵�鍦ㄥ伐搴�',
+      title: t('machine.basicCategory'),
       width: 500,
       editRender: {},
       slots: {default: 'basicCategory_default', edit: 'basicCategory'}
@@ -87,7 +87,7 @@
     buttons: [
       {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'},
       {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'},
-      {code: 'save', name: '淇濆瓨', status: 'primary', icon: 'vxe-icon-save'},
+      {code: 'save', name: t('basicData.save'), status: 'primary', icon: 'vxe-icon-save'},
     ],
     // import: false,
     // export: true,
@@ -102,7 +102,7 @@
     return [
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
-          return '鍚堣:'
+          return ''
         }
         if (footList.includes(column.field)) {
           return sumNum(data, column.field)
@@ -139,7 +139,7 @@
           })
           request.post("/maintenance/saveMachine", machineData.value).then((res) => {
             if (res.code == 200) {
-              ElMessage.success("淇濆瓨鎴愬姛")
+              ElMessage.success(t('basicData.msg.saveSuccess'))
               //router.push('/main/processCard/SplittingDetails?orderId=${orderId}')
               router.push({
                 path: '/main/machine/AddMachine',
diff --git a/north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue b/north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue
index 0f7438e..cc0a0c1 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/machine/AddMaintenanceAndRepair.vue
@@ -76,60 +76,60 @@
     {type: 'seq', fixed: "left", title: '鑷簭', width: 50},
     {
       field: 'deviceName',
-      title: '璁惧鍚嶇О',
+      title: t('machine.basicName'),
       editRender: {},
       slots: {default: 'basicCategory_default', edit: 'deviceName'}
     },
     {
       field: 'type',
-      title: '绫诲瀷',
+      title: t('machine.type'),
       editRender: {name: 'input', attrs: {placeholder: ''}},
     },
     {
       field: 'faultTime',
-      title: '鏁呴殰鏃ユ湡',
+      title: t('machine.faultTime'),
       editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
     },
     {
       field: 'faultReason',
-      title: '鏁呴殰鍘熷洜',
+      title: t('machine.faultReason'),
       editRender: {name: 'input', attrs: {placeholder: ''}},
     },
     {
       field: 'maintenanceTime',
-      title: '淇濆吇鏃ユ湡',
+      title: t('machine.maintenanceTime'),
       editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
     },
     {
       field: 'maintenanceIllustrate',
-      title: '淇濆吇璇存槑',
+      title: t('machine.maintenanceIllustrate'),
       editRender: {name: 'input', attrs: {placeholder: ''}},
     },
     {
       field: 'startTime',
-      title: '缁翠慨/淇濆吇寮�濮嬫椂闂�',
+      title: t('machine.startTime'),
       editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
     },
     {
       field: 'stopTime',
-      title: '缁翠慨/淇濆吇缁撴潫鏃堕棿',
+      title: t('machine.stopTime'),
       editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
     },
 
     {
       field: 'process',
-      title: '鎵�鍦ㄥ伐搴�',
+      title: t('machine.process'),
       editRender: {},
       slots: {default: 'reportingDeviceSort_default', edit: 'process'}
     },
     {
       field: 'personnel',
-      title: '缁翠慨/淇濆吇浜哄憳',
+      title: t('machine.personnel'),
       editRender: {name: 'input', attrs: {placeholder: ''}},
     },
     {
       field: 'cost',
-      title: '璐圭敤',
+      title: t('machine.cost'),
       editRender: {name: 'input', attrs: {placeholder: ''}},
     },
   ],
@@ -138,7 +138,7 @@
     buttons: [
       {code: 'removeRow', name: t('basicData.delete'), status: 'primary', icon: 'vxe-icon-delete'},
       {code: 'addRow', name: t('reportingWorks.increase'), status: 'primary', icon: 'vxe-icon-square-plus'},
-      {code: 'save', name: '淇濆瓨', status: 'primary', icon: 'vxe-icon-save'},
+      {code: 'save', name: t('basicData.save'), status: 'primary', icon: 'vxe-icon-save'},
     ],
     // import: false,
     // export: true,
@@ -153,7 +153,7 @@
     return [
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
-          return '鍚堣:'
+          return ''
         }
         if (footList.includes(column.field)) {
           return sumNum(data, column.field)
@@ -189,7 +189,7 @@
           })
           request.post("/maintenance/saveMaintenanceAndRepair", machineData.value).then((res) => {
             if (res.code == 200) {
-              ElMessage.success("淇濆瓨鎴愬姛")
+              ElMessage.success(t('basicData.msg.saveSuccess'))
               //router.push('/main/processCard/SplittingDetails?orderId=${orderId}')
               router.push({
                 path: '/main/machine/AddMaintenanceAndRepair',
diff --git a/north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue b/north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue
index 05422ea..67ff3f7 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/machine/Machine.vue
@@ -19,11 +19,11 @@
   <div id="main">
     <div id="div-title">
       <el-breadcrumb :separator-icon="ArrowRight">
-        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/machine/SelectMachine' }">璁惧鎯呭喌</el-breadcrumb-item>
-        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/machine/AddMachine' }">璁惧鏂板</el-breadcrumb-item>
-        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/machine/MaintenanceAndRepair' }">淇濆吇涓庣淮淇�</el-breadcrumb-item>
-        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/machine/AddMaintenanceAndRepair' }">淇濆吇涓庣淮淇柊澧�</el-breadcrumb-item>
-        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/machine/SelectMachine' }">{{$t('machine.equipmentSituation')}}</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/machine/AddMachine' }">{{$t('machine.equipmentAddition')}}</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/machine/MaintenanceAndRepair' }">{{$t('machine.maintenanceAndRepair')}}</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/machine/AddMaintenanceAndRepair' }">{{$t('machine.maintenanceAndRepairAddition')}}</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">{{$t('basicData.print')}}</el-breadcrumb-item>
       </el-breadcrumb>
     </div>
 
diff --git a/north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue b/north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue
index c75ceb5..d5f52c5 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/machine/MaintenanceAndRepair.vue
@@ -164,38 +164,38 @@
   },//琛ㄥご鍙傛暟
   columns: [
     {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
-    {title: '鎿嶄綔', width: 140, slots: {default: 'button_slot'}, fixed: "left"},
+    {title: t('basicData.operate'), width: 140, slots: {default: 'button_slot'}, fixed: "left"},
     {
       field: 'id', width: 130, title: 'Id'
     },
 
     {
-      field: 'deviceName', width: 130, title: '璁惧鍚嶇О', filters: [{data: ''}],
+      field: 'deviceName', width: 130, title: t('machine.basicName'), filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
     },
     {
-      field: 'type', width: 120, title: '绫诲瀷', filters: [{data: ''}],
+      field: 'type', width: 120, title: t('machine.type'), filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
     },
-    {field: 'faultTime', width: 100, title: '鏁呴殰鏃ユ湡', showOverflow: "ellipsis"},
+    {field: 'faultTime', width: 100, title: t('machine.faultTime'), showOverflow: "ellipsis"},
     {
-      field: 'faultReason', width: 100, title: '鏁呴殰鍘熷洜', filters: [{data: ''}],
+      field: 'faultReason', width: 100, title: t('machine.faultReason'), filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
     },
-    {field: 'maintenanceTime', width: 100, title: '淇濆吇鏃ユ湡'},
-    {field: 'maintenanceIllustrate', width: 120, title: '淇濆吇璇存槑', showOverflow: "ellipsis"},
-    {field: 'startTime', width: 160, title: '缁翠慨/淇濆吇寮�濮嬫椂闂�'},
-    {field: 'stopTime', width: 160, title: '缁翠慨/淇濆吇缁撴潫鏃堕棿'},
+    {field: 'maintenanceTime', width: 100, title: t('machine.maintenanceTime')},
+    {field: 'maintenanceIllustrate', width: 120, title: t('machine.maintenanceIllustrate'), showOverflow: "ellipsis"},
+    {field: 'startTime', width: 160, title: t('machine.startTime')},
+    {field: 'stopTime', width: 160, title: t('machine.stopTime')},
     {
-      field: 'process', width: 120, title: '鎵�鍦ㄥ伐鑹�', filters: [{data: ''}],
+      field: 'process', width: 120, title: t('machine.process'), filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
     },
-    {field: 'personnel', width: 150, title: '缁翠慨/淇濆吇浜哄憳'},
-    {field: 'cost', width: 120, title: '璐圭敤'},
+    {field: 'personnel', width: 150, title: t('machine.personnel')},
+    {field: 'cost', width: 120, title: t('machine.cost')},
   ],//琛ㄥご鎸夐挳
 
   toolbarConfig: {
@@ -211,11 +211,11 @@
   data: [],//table body瀹為檯鏁版嵁
   //鑴氶儴姹傚拰
   footerMethod({columns, data}) {//椤佃剼鍑芥暟
-    let footList = ['璐圭敤']
+    let footList = ['']
     return [
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
-          return '鍚堣:'
+          return t('basicData.total')
         }
         if (footList.includes(column.field)) {
           return sumNum(data, column.field)
@@ -303,7 +303,7 @@
                    size="small">
           {{ $t('basicData.edit') }}
         </el-button>
-        <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">鍒犻櫎</el-button>
+        <el-button link size="small" type="primary" @click="getTableRow(row,'delete')">{{$t('basicData.delete')}}</el-button>
       </template>
 
       <template #num1_filter="{ column, $panel }">
@@ -317,27 +317,27 @@
 
     </vxe-grid>
 
-    <el-dialog v-model="dialogTableVisible" title="淇濆吇涓庣淮淇紪杈�">
+    <el-dialog v-model="dialogTableVisible" :title="$t('machine.maintenanceAndRepairEdit')">
 
       <el-form :model="form">
         <el-row>
           <el-col :span="12">
-            <el-form-item :label-width="formLabelWidth" label="璁惧鍚嶇О">
+            <el-form-item :label-width="formLabelWidth" :label="$t('machine.basicName')">
               <el-input v-model="getBasicData.device_name" autocomplete="off" style="width: 220px"/>
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item :label-width="formLabelWidth" label="绫诲瀷">
-              <el-select v-model="getBasicData.type" placeholder="缁翠慨" style="width: 220px">
-                <el-option label="淇濆吇" value="1"/>
-                <el-option label="缁翠慨" value="2"/>
+            <el-form-item :label-width="formLabelWidth" :label="$t('machine.type')">
+              <el-select v-model="getBasicData.type" :placeholder="$t('machine.service')" style="width: 220px">
+                <el-option :label="$t('machine.maintain')" value="1"/>
+                <el-option :label="$t('machine.service')" value="2"/>
               </el-select>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item :label-width="formLabelWidth" label="鏁呴殰鏃ユ湡">
+            <el-form-item :label-width="formLabelWidth" :label="$t('machine.faultTime')">
               <el-date-picker
                   v-model="getBasicData.fault_time"
                   :size="size"
@@ -348,14 +348,14 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item :label-width="formLabelWidth" label="鏁呴殰鍘熷洜">
+            <el-form-item :label-width="formLabelWidth" :label="$t('machine.faultReason')">
               <el-input v-model="getBasicData.fault_reason" autocomplete="off" style="width: 220px"/>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item :label-width="formLabelWidth" label="淇濆吇鏃ユ湡">
+            <el-form-item :label-width="formLabelWidth" :label="$t('machine.maintenanceTime')">
               <el-date-picker
                   v-model="getBasicData.maintenance_time"
                   :size="size"
@@ -366,14 +366,14 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item :label-width="formLabelWidth" label="淇濆吇璇存槑">
+            <el-form-item :label-width="formLabelWidth" :label="$t('machine.maintenanceIllustrate')">
               <el-input v-model="getBasicData.maintenance_illustrate" autocomplete="off" style="width: 220px"/>
             </el-form-item>
           </el-col>
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item :label-width="formLabelWidth" label="淇濆吇/缁翠慨寮�濮嬫椂闂�">
+            <el-form-item :label-width="formLabelWidth" :label="$t('machine.startTime')">
               <el-date-picker
                   v-model="getBasicData.start_time"
                   type="date"
@@ -383,7 +383,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item :label-width="formLabelWidth" label="淇濆吇/缁翠慨瀹屾垚鏃堕棿">
+            <el-form-item :label-width="formLabelWidth" :label="$t('machine.stopTime')">
               <el-date-picker
                   v-model="getBasicData.stop_time"
                   :size="size"
@@ -396,7 +396,7 @@
         </el-row>
         <el-row>
           <el-col :span="12">
-            <el-form-item :label-width="formLabelWidth" label="鎵�鍦ㄥ伐鑹�">
+            <el-form-item :label-width="formLabelWidth" :label="$t('machine.process')">
               <el-select  v-model="getBasicData.process" clearable placeholder="" style="width: 220px"
               >
                 <el-option
@@ -409,20 +409,20 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item :label-width="formLabelWidth" label="淇濆吇/缁翠慨浜哄憳">
+            <el-form-item :label-width="formLabelWidth" :label="$t('machine.personnel')">
               <el-input v-model="getBasicData.personnel" autocomplete="off" style="width: 220px"/>
             </el-form-item>
           </el-col>
         </el-row>
-        <el-form-item :label-width="formLabelWidth" label="璐圭敤">
+        <el-form-item :label-width="formLabelWidth" :label="$t('machine.cost')">
           <el-input v-model="getBasicData.cost" autocomplete="off" style="width: 220px"/>
         </el-form-item>
       </el-form>
       <template #footer>
       <span class="dialog-footer">
-        <el-button @click="dialogTableVisible = false">鍙栨秷</el-button>
+        <el-button @click="dialogTableVisible = false">{{$t('basicData.cancelButtonText')}}</el-button>
         <el-button type="primary" @click="updateBasic">
-          淇敼
+          {{$t('basicData.update')}}
         </el-button>
       </span>
       </template>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue b/north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue
index 68778d5..cd00564 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/machine/SelectMachine.vue
@@ -78,17 +78,17 @@
   },//琛ㄥご鍙傛暟
   columns:[
     {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
-    { type: 'seq',fixed:"left", title: '鑷簭', width: 50 },
-    {field: 'deviceId', width: 120, title: '璁惧缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged },
-    {field: 'deviceName', width: 130,title: '璁惧鍚嶇О' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
-    {field: 'type',width: 100, title: '浣跨敤鐘舵��',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged },
-    {field: 'faultCount',width: 120, title: '缁翠慨娆℃暟' ,showOverflow:"ellipsis"},
-    {field: 'maintenanceCount', width: 120,title: '淇濆吇娆℃暟', },
-    {field: 'faultLastTime',width: 120, title: '鏈�鍚庣淮淇椂闂�', },
-    {field: 'maintenanceLastTime',width: 120, title: '鏈�鍚庝繚鍏绘椂闂�', },
-    {field: 'faultCost',width: 120, title: '缁翠慨璐圭敤', },
-    {field: 'maintenanceCost',width: 120, title: '淇濆吇璐圭敤', },
-    {field: 'process',width: 120, title: '鎵�鍦ㄥ伐鑹�',filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged }
+    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 },
+    {field: 'deviceId', width: 120, title: t('machine.basicId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged },
+    {field: 'deviceName', width: 130,title: t('machine.basicName') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged},
+    {field: 'type',width: 100, title:  t('machine.type'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged },
+    {field: 'faultCount',width: 120, title: t('machine.faultCount') ,showOverflow:"ellipsis"},
+    {field: 'maintenanceCount', width: 120,title: t('machine.maintenanceCount'), },
+    {field: 'faultLastTime',width: 120, title: t('machine.faultLastTime'), },
+    {field: 'maintenanceLastTime',width: 120, title: t('machine.maintenanceLastTime'), },
+    {field: 'faultCost',width: 120, title: t('machine.faultCost'), },
+    {field: 'maintenanceCost',width: 120, title: t('machine.maintenanceCost'), },
+    {field: 'process',width: 120, title: t('machine.basicCategory'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },filterMethod: filterChanged }
   ],
   //琛ㄥご鎸夐挳
   toolbarConfig: {
@@ -109,7 +109,7 @@
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
-          return '鍚堣:'
+          return t('basicData.total')
         }
         if (footList.includes(column.field)) {
           return sumNum(data, column.field)
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
index a80d970..939fe77 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/AddProcessCard.vue
@@ -642,12 +642,12 @@
             //  const selectRight = $tableRight.getCheckboxRecords()
             let leftData = $tableRight.getTableData().fullData
             if (selectRecords.length === 0) {
-              ElMessage.warning("璇峰厛閫夋嫨淇濆瓨鐨勬暟鎹�")
+              ElMessage.warning(t('processCard.pleaseSelectTheSavedDataFirst'))
               return
             }
 
             if (leftData.length > 0) {
-              ElMessage.warning("璇峰厛灏嗗彸渚ф暟鎹叏閮ㄥ缓绔嬫祦绋嬪崱鍚庝繚瀛�")
+              ElMessage.warning(t('processCard.pleaseFirstCreateAProcessCardForAllTheDataOnTheRightSideAndSaveIt'))
               return;
             }
             let flowCardData = ref({
@@ -658,7 +658,7 @@
 
             request.post("/processCard/addFlowCard", flowCardData.value).then((res) => {
               if (res.code == 200) {
-                ElMessage.success("淇濆瓨鎴愬姛")
+                ElMessage.success(t('basicData.msg.saveSuccess'))
                 //router.push('/main/processCard/SplittingDetails?orderId=${orderId}')
                 router.push({
                   path: '/main/processCard/AddProcessCard',
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 5e615b1..b6792c5 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
@@ -60,6 +60,7 @@
 
 
 })
+
 //瀹氫箟椤甸潰鎬婚〉鏁�
 let pageTotal = ref('')
 //瀹氫箟鏁版嵁杩斿洖缁撴灉
@@ -86,6 +87,7 @@
     ElMessage.warning(res.msg)
   }
 })
+
 
 //琛ㄥ熬姹傚拰
 const sumNum = (list, field) => {
@@ -147,7 +149,7 @@
     },
     {
       field: 'process_id',
-      title: '娴佺▼鍗″彿',
+      title: t('processCard.processId'),
       showOverflow: "ellipsis",
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
@@ -155,32 +157,33 @@
     },
     {
       field: 'customer_name',
-      title: '瀹㈡埛鍚嶇О',
+      title: t('customer.customerName'),
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
     },
     {
       field: 'project',
-      title: '椤圭洰鍚嶇О',
+      title:  t('order.project'),
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
     },
-    {field: 'technology_number', title: '灏忕墖椤哄簭', showOverflow: "ellipsis"},
-    {field: 'glass_address', title: '灏忕墖鏍囪',},
-    {field: 'quantity', title: '鏁伴噺',},
-    {field: 'total_area', title: '闈㈢Н',},
-    {field: 'product_name', title: '浜у搧鍚嶇О',},
-    {field: 'glass_child', title: '鍗曠墖鍚嶇О',},
-    {field: 'founder', title: '鍒嗘灦鍛�',},
-    {field: 'splitFrame_time', title: '鍒嗘灦鏃堕棿',},
+    {field: 'technology_number', title: t('processCard.technologyNumber'), showOverflow: "ellipsis"},
+    {field: 'glass_address', title: t('processCard.glassAddress'),},
+    {field: 'quantity', title:  t('order.quantity'),},
+    {field: 'total_area', title:  t('order.area'),},
+    {field: 'product_name', title: t('order.product'),},
+    {field: 'glass_child', title: t('reportingWorks.glassChild'),},
+    {field: 'founder', title: t('processCard.founder'),},
+    {field: 'splitFrame_time', title: t('processCard.splitFrameTime'),},
   ],//琛ㄥご鎸夐挳
 
   toolbarConfig: {
     buttons: [
-      {code: 'print', name: '鎵撳嵃娴佺▼鍗�', status: 'primary'},
-      {code: 'printLabel', name: '鎵撳嵃鏍囩', status: 'primary'},
+      {code: 'print', name: t('processCard.print'), status: 'primary'},
+      {code: 'printLabel', name: t('processCard.printLabel'), status: 'primary'},
+
     ],
     // import: false,
     // export: true,
@@ -275,6 +278,7 @@
     }
   },
 }
+
 
 
 const detailGridOptions = reactive({
@@ -406,6 +410,7 @@
   xGridDetail.value.reloadData(detail.value)
 }
 
+
 </script>
 
 <template>
@@ -460,7 +465,7 @@
     <el-dialog
         v-model="dialogTableVisible"
         destroy-on-close
-        title="娴佺▼鍗℃墦鍗�"
+        :title="$t('processCard.print')"
         style="width: 80%;height:75% ">
       <PrintProcess :printList="selectRecords"
                     style="width: 100%;height: 100%" />
@@ -469,7 +474,7 @@
     <el-dialog
         v-model="dialogTableVisibleLabel"
         destroy-on-close
-        title="鏍囩鎵撳嵃"
+        :title="$t('processCard.printLabel')"
         style="width: 80%;height:75% ">
       <PrintLabel :printList="selectRecords"
                   style="width: 100%;height: 100%" />
@@ -514,6 +519,8 @@
 
       </vxe-grid>
     </el-dialog>
+
+
   </div>
 </template>
 
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 5f65553..d97bdc3 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
@@ -18,11 +18,7 @@
 const data = ref({
   printList: []
 })
-const setupData = ref({
-})
-let printSetupData = {
-  printState:''
-}
+
 
 const {currentRoute} = useRouter()
 const route = currentRoute.value
@@ -50,14 +46,6 @@
 
 )
 
-request.post(`/processCard/printSetup`, setupData.value).then((res) => {
-  if (res.code == 200) {
-    printSetupData = deepClone(res.data.data)
-  } else {
-    ElMessage.warning(res.msg)
-    router.push("/login")
-  }
-})
 
 
 
@@ -100,22 +88,22 @@
 </script>
 
 <template>
-  <el-button id="printButton" @click="printFlowCard();">鎵撳嵃</el-button>
+  <el-button id="printButton" @click="printFlowCard();">{{ $t('basicData.print') }}</el-button>
   <div id="printFlowCard" >
     <div id="entirety" v-for="(item,id) in labelList" >
-      <div v-show="printSetupData[0].printState" class="row1">{{ item.customer_name }}</div>
-      <div v-show="printSetupData[6].printState || printSetupData[7].printState" class="row2">
-        <span v-show="printSetupData[6].printState">{{ item.order_id }}</span>
-        <span v-show="printSetupData[7].printState">{{ item.type_name }}</span>
+      <div class="row1">{{ item.customer_name }}</div>
+      <div  class="row2">
+        <span>{{ item.order_id }}</span>
+        <span>{{ item.type_name }}</span>
       </div>
-      <div v-show="printSetupData[2].printState" class="row3">{{item.child_width}}*{{item.child_height}}={{item.quantity}}</div>
-      <div v-show="printSetupData[1].printState || printSetupData[3].printState" class="row5">
-        <span v-show="printSetupData[1].printState">{{item.project}}</span>
-        <span v-show="printSetupData[3].printState">{{ item.remarks }}</span>
+      <div class="row3">{{item.child_width}}*{{item.child_height}}={{item.quantity}}</div>
+      <div class="row5">
+        <span>{{item.project}}</span>
+        <span>{{ item.remarks }}</span>
       </div>
-      <div v-show="printSetupData[5].printState || printSetupData[4].printState" class="row6">
-        <span v-show="printSetupData[5].printState">{{item.glass_child}}</span>
-        <span v-show="printSetupData[4].printState">{{item.processing_note}}</span></div>
+      <div class="row6">
+        <span>{{item.glass_child}}</span>
+        <span>{{item.processing_note}}</span></div>
     </div>
   </div>
 
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue
index deeaa62..a804c53 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/PrintProcess.vue
@@ -99,7 +99,7 @@
 </script>
 
 <template>
-  <el-button id="printButton" @click="printFlowCard();">鎵撳嵃</el-button>
+  <el-button id="printButton" @click="printFlowCard();">{{ $t('basicData.print') }}</el-button>
   <div id="printFlowCard">
     <table v-for="(item,id) in produceList" id="contentTable" :key="id">
       <thead>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue
index 2672d8a..c579f69 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/ProcessCard.vue
@@ -27,8 +27,8 @@
         </el-breadcrumb-item>
         <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/processCard/ProductionScheduling' }">{{$t('processCard.scheduling')}}
         </el-breadcrumb-item>
-        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" >鎵撳嵃</el-breadcrumb-item>
-        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" >{{ $t('basicData.print') }}</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(4)" :class="indexFlag===4?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">{{ $t('basicData.print') }}</el-breadcrumb-item>
       </el-breadcrumb>
     </div>
 
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue
index 3ddf3dd..6b0517b 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/ProductionScheduling.vue
@@ -29,16 +29,12 @@
       break
     }
 
-    case  'setType': {
-      alert('鎴戞帴鏀跺埌瀛愮粍浠朵紶閫佺殑鎺掔増鐘舵��')
-      break
-    }
   }
 }
 
 
 //宸ュ簭
-const value = ref('鍒囧壊')
+const processVal = ref('鍒囧壊')
 
 
 //鎺掍骇鐘舵��
@@ -54,10 +50,6 @@
   },
 ]
 
-function padLeftZero(str) {
-  return ('00' + str).substr(str.length)
-}
-
 //瀹氫箟琛ㄥ崟鍊�
 const form = reactive({
   date1: '',
@@ -70,25 +62,6 @@
 })
 
 
-//琛ㄥ熬姹傚拰
-const sumNum = (list, field) => {
-  let count = 0
-  list.forEach(item => {
-    count += Number(item[field])
-  })
-  return count.toFixed(2)
-}
-
-//瀹氫箟婊氬姩鏉¢珮搴�
-let scrollTop = ref(null)
-let scrollHeight = ref(null)
-let clientHeight = ref(null)
-const scrollEvnt = (row) => {
-  // 鍐呭楂樺害
-  scrollTop.value = row.$event.target.scrollTop
-  scrollHeight.value = row.$event.target.scrollHeight
-  clientHeight.value = row.$event.target.clientHeight
-}
 //绛涢�夋潯浠讹紝鏈夊閿渶瑕佸厛瀹氫箟鏄庣粏閲岄潰鐨勬暟鎹�
 let filterData = ref({
   order: {
@@ -137,7 +110,7 @@
 form.date1 = getNowTime()
 let startTime = form.date1[0]
 let endTime = form.date1[1]
-let selectProcesses = value.value
+let selectProcesses = processVal.value
 let inputVal = form.orderId
 if (inputVal == '') {
   inputVal = null
@@ -166,7 +139,7 @@
 const getWorkOrder = () => {
   let startTime = form.date1[0]
   let endTime = form.date1[1]
-  let selectProcesses = value.value
+  let selectProcesses = processVal.value
   let selectState = stateValue.value
   let inputVal = form.orderId
   if (inputVal == '') {
@@ -175,24 +148,6 @@
   if (selectProcesses == '') {
     selectProcesses = null
   }
-  // if (inputVal == null && selectState == 1) {
-  //   //鏍规嵁鏃堕棿鏌ヨ鏈帓浜ф暟鎹�
-  //   request.post(`/productionScheduling/selectLastScheduling/${startTime}/${endTime}/${selectProcesses}/${inputVal}`, filterData.value).then((res) => {
-  //
-  //     if (res.code == 200) {
-  //       pageTotal.value = res.data.total
-  //       xGrid.value.loadData(res.data.data)
-  //       gridOptions.loading = false
-  //       //绂佺敤鍒犻櫎銆佸鏍告寜閽�
-  //       gridOptions.toolbarConfig.buttons[0].disabled = true
-  //       gridOptions.toolbarConfig.buttons[1].disabled = true
-  //       //鍚敤淇濆瓨
-  //       gridOptions.toolbarConfig.buttons[2].disabled = false
-  //     } else {
-  //       ElMessage.warning(res.msg)
-  //     }
-  //   })
-  // } else if (inputVal != null && selectState == 1) {
   //鏍规嵁宸ュ簭鏌ヨ鏈帓浜ф暟鎹�
   request.post(`/productionScheduling/selectScheduling/${pageNum.value}/${total.pageSize}/${startTime}/${endTime}/${inputVal}/${selectProcesses}/${selectState}`, filterData.value).then((res) => {
     if (res.code == 200) {
@@ -202,48 +157,24 @@
       xGrid.value.loadData(res.data.data)
       console.log(res.data.data)
       gridOptions.loading = false
-      //绂佺敤鍒犻櫎銆佸鏍告寜閽�
-      gridOptions.toolbarConfig.buttons[0].disabled = true
-      gridOptions.toolbarConfig.buttons[1].disabled = true
-      //鍚敤淇濆瓨
-      gridOptions.toolbarConfig.buttons[2].disabled = false
+      if (selectState==1){
+        //绂佺敤鍒犻櫎銆佸鏍告寜閽�
+        gridOptions.toolbarConfig.buttons[0].disabled = true
+        gridOptions.toolbarConfig.buttons[1].disabled = true
+        //鍚敤淇濆瓨
+        gridOptions.toolbarConfig.buttons[2].disabled = false
+      }else{
+        //绂佺敤鍒犻櫎銆佸鏍告寜閽�
+        gridOptions.toolbarConfig.buttons[0].disabled = false
+        gridOptions.toolbarConfig.buttons[1].disabled = false
+        //鍚敤淇濆瓨
+        gridOptions.toolbarConfig.buttons[2].disabled = false
+
+      }
     } else {
       ElMessage.warning(res.msg)
     }
   })
-  // } else if (inputVal == null && selectState == 2) {
-  //   //鏍规嵁鏃堕棿鏌ヨ宸叉帓浜ф暟鎹�
-  //   request.post(`/productionScheduling/selectScheduling/${startTime}/${endTime}/${inputVal}/${selectProcesses}/${selectState}`, filterData.value).then((res) => {
-  //     if (res.code == 200) {
-  //       pageTotal.value = res.data.total
-  //       xGrid.value.loadData(res.data.data)
-  //       gridOptions.loading = false
-  //       //鍚敤鍒犻櫎銆佸鏍告寜閽�
-  //       gridOptions.toolbarConfig.buttons[0].disabled = false
-  //       gridOptions.toolbarConfig.buttons[1].disabled = false
-  //       //绂佺敤淇濆瓨
-  //       gridOptions.toolbarConfig.buttons[2].disabled = true
-  //     } else {
-  //       ElMessage.warning(res.msg)
-  //     }
-  //   })
-  // } else if (inputVal != null && selectState == 2) {
-  //   //鏍规嵁璁㈠崟鍙锋煡璇㈠凡鎺掍骇鏁版嵁
-  //   request.post(`/productionScheduling/selectSchedulingNot/${startTime}/${endTime}/${inputVal}/${selectProcesses}/${selectState}`, filterData.value).then((res) => {
-  //     if (res.code == 200) {
-  //       pageTotal.value = res.data.total
-  //       xGrid.value.loadData(res.data.data)
-  //       gridOptions.loading = false
-  //       //鍚敤鍒犻櫎銆佸鏍告寜閽�
-  //       gridOptions.toolbarConfig.buttons[0].disabled = false
-  //       gridOptions.toolbarConfig.buttons[1].disabled = false
-  //       //绂佺敤淇濆瓨
-  //       gridOptions.toolbarConfig.buttons[2].disabled = true
-  //     } else {
-  //       ElMessage.warning(res.msg)
-  //     }
-  //   })
-  // }
 
 
 }
@@ -272,7 +203,7 @@
 //鑾峰彇閫変腑鏃堕棿
   let startTime = form.date1[0]
   let endTime = form.date1[1]
-  let selectProcesses = value.value
+  let selectProcesses = processVal.value
   let selectState = stateValue.value
   let inputVal = form.orderId
   if (inputVal == '') {
@@ -281,7 +212,6 @@
   if (selectProcesses == '') {
     selectProcesses = null
   }
-
   request.post(`/productionScheduling/selectScheduling/1/${total.pageSize}/${startTime}/${endTime}/${inputVal}/${selectProcesses}/${selectState}`, filterData.value).then((res) => {
     if (res.code == 200) {
       total.dataTotal = res.data.total.total * 1
@@ -289,11 +219,6 @@
       pageNum.value = 1
       xGrid.value.loadData(res.data.data)
       gridOptions.loading = false
-      //绂佺敤鍒犻櫎銆佸鏍告寜閽�
-      gridOptions.toolbarConfig.buttons[0].disabled = true
-      gridOptions.toolbarConfig.buttons[1].disabled = true
-      //鍚敤淇濆瓨
-      gridOptions.toolbarConfig.buttons[2].disabled = false
     } else {
       ElMessage.warning(res.msg)
     }
@@ -315,7 +240,7 @@
   keepSource: true,//淇濇寔婧愭暟鎹�
   align: 'center',//鏂囧瓧灞呬腑
   stripe: true,//鏂戦┈绾�
-  rowConfig: {isCurrent: true, isHover: true, height: 30},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
+  rowConfig: {isCurrent: true, isHover: true, height: 50},//榧犳爣绉诲姩鎴栭�夋嫨楂樹寒
   id: 'CustomerList',
   showFooter: true,//鏄剧ず鑴�
   printConfig: {},
@@ -333,7 +258,6 @@
   customConfig: {
     storage: true
   },
-
   editConfig: {
     trigger: 'click',
     mode: 'row',
@@ -370,18 +294,18 @@
   },
   //琛ㄥご鍙傛暟
   columns: [
-    {type: 'expand', fixed: "left", slots: {content: 'content'}, width: 50},
-    {type: 'checkbox', fixed: "left", title: t('basicData.check'), width: 80},
+    {type: 'expand',fixed: "left",  slots: {content: 'content'}, width: 50},
     {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
+    {type: 'checkbox', fixed: "left", title: t('basicData.check'), width: 80},
     {
-      field: 'scheduled_start_time',
-      width: 120,
-      editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
+      field: 'scheduledStartTime',
+      width: 130,
+      editRender: {name: 'input', attrs: {placeholder: '', type: 'date'},},
       title: t('processCard.scheduledStartTime')
     },
     {
-      field: 'plan_end_time',
-      width: 120,
+      field: 'planEndTime',
+      width: 130,
       editRender: {name: 'input', attrs: {placeholder: '', type: 'date'}},
       title: t('processCard.planEndTime')
     },
@@ -391,7 +315,7 @@
       title: t('order.orderId'),
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
-      width: 100,
+      width: 110,
     },
     {
       field: 'order.customerName',
@@ -412,14 +336,14 @@
       title: t('order.OrderNum'),
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
-      width: 70,
+      width: 100,
     },
     {
       field: 'technologyNumber',
       title: t('processCard.technologyNumber'),
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
-      width: 70,
+      width: 100,
     },
     {
       field: 'orderGlassDetail.childWidth',
@@ -431,7 +355,7 @@
       title: t('order.height'),
       width: 60,
     },
-    {field: 'orderDetail.quantity', title: t('processCard.orderQuantity'), width: 70},
+    {field: 'orderDetail.quantity', title: t('processCard.orderQuantity'), width: 90},
     {field: 'orderGlassDetail.area', title: t('processCard.orderArea'), width: 90},
     {
       field: 'schedulingQuantity',
@@ -440,13 +364,13 @@
       title: t('processCard.productionSchedulingQuantity'),
       sortable: true
     },
-    {field: 'pendingProductionQuantity', title: t('processCard.quantityToScheduled'), width: 120},
-    {field: 'pendingProductionArea', title: t('processCard.areaToScheduled'), width: 120},
-    {field: 'productionScheduledQuantity', title: t('processCard.plannedProductionQuantity'), width: 120},
-    {field: 'productionScheduledArea', title: t('processCard.plannedProductionArea'), width: 120},
-    {field: 'reviewStatus', title: t('processCard.reviewedState'), width: 140},
-    {field: 'reviewer', title: t('processCard.reviewed'), width: 140},
-    {field: 'orderGlassDetail.glassChild', title: t('order.product'), width: 140},
+    {field: 'pendingProductionQuantity', title: t('processCard.quantityToScheduled'), width: 100},
+    {field: 'pendingProductionArea', title: t('processCard.areaToScheduled'), width: 100},
+    {field: 'productionScheduledQuantity', title: t('processCard.plannedProductionQuantity'), width: 100},
+    {field: 'productionScheduledArea', title: t('processCard.plannedProductionArea'), width: 100},
+    {field: 'reviewStatus', title: t('processCard.reviewedState'), width: 80},
+    {field: 'reviewer', title: t('processCard.reviewed'), width: 80},
+    {field: 'orderDetail.productName', title: t('order.product'), width: 140},
     {field: 'orderDetail.shape', title: t('order.shape'), width: 80},
     {field: 'notes', title: t('processCard.notes'), editRender: {name: 'input', attrs: {placeholder: ''}}, width: 120},
     {field: 'schedulingId', title: t('processCard.schedulingId'), width: 120},
@@ -496,22 +420,22 @@
           if ($table) {
             const selectRecords = $table.getCheckboxRecords()
             if (selectRecords.length == 0) {
-              ElMessage.warning("璇峰嬀閫夋帓浜ф暟鎹�")
+              ElMessage.warning(t('processCard.checkProductionScheduling'))
               return;
             }
             for (let i = 0; i < selectRecords.length; i++) {
-              let start = selectRecords[i].scheduled_start_time
-              let end = selectRecords[i].plan_end_time
-              let number = selectRecords[i].scheduling_quantity
+              let start = selectRecords[i].scheduledStartTime
+              let end = selectRecords[i].planEndTime
+              let number = selectRecords[i].schedulingQuantity
               //璁″垝寮�濮嬨�佺粨鏉熸椂闂达紝鎺掍骇鏁伴噺涓嶈兘涓虹┖
               if (start == null || end == null || number == null) {
-                ElMessage.warning("璇峰~鍏ュ搴旂殑鍊煎啀杩涜淇濆瓨")
+                ElMessage.warning(t('processCard.saveCorrespondingValues'))
                 return;
               }
             }
-            let selectProcesses = value.value
+            let selectProcesses = processVal.value
             if (selectProcesses == null || selectProcesses == "") {
-              ElMessage.warning("璇烽�夋嫨鎺掍骇宸ュ簭")
+              ElMessage.warning(t('processCard.selectProductionSchedulingProcess'))
               return;
             }
 
@@ -525,7 +449,7 @@
             //淇濆瓨鎺掍骇鏁版嵁
             request.post("/productionScheduling/addScheduling", schedulingData.value).then((res) => {
               if (res.code == 200) {
-                ElMessage.success("淇濆瓨鎴愬姛")
+                ElMessage.success(t('basicData.msg.saveSuccess'))
                 // 鍚敤淇濆瓨
                 gridOptions.toolbarConfig.buttons[2].disabled = false
                 router.push({
@@ -550,10 +474,10 @@
           const selectRecords = $table.getCheckboxRecords()
           if ($table) {
             if (selectRecords.length == 0) {
-              ElMessage.warning("璇峰嬀閫夋帓浜ф暟鎹�")
+              ElMessage.warning(t('processCard.checkProductionScheduling'))
               return;
             }
-            const type = await VXETable.modal.confirm('鎮ㄧ‘瀹氳鍒犻櫎璇ユ暟鎹�?')
+            const type = await VXETable.modal.confirm(t('processCard.deleteThisData'))
             if (type === 'confirm') {
               let schedulingData = ref({
                 scheduling: selectRecords,
@@ -561,7 +485,7 @@
 
               request.post("/productionScheduling/deleteScheduling", schedulingData.value).then((res) => {
                 if (res.code == 200) {
-                  ElMessage.success("鍒犻櫎鎴愬姛")
+                  ElMessage.success(t('basicData.msg.deleteSuccess'))
                   location.reload();
                 } else {
                   ElMessage.warning(res.msg)
@@ -577,7 +501,7 @@
           const selectRecords = $table.getCheckboxRecords()
           if ($table) {
             if (selectRecords.length == 0) {
-              ElMessage.warning("璇峰嬀閫夋帓浜ф暟鎹�")
+              ElMessage.warning(t('processCard.checkProductionScheduling'))
               return;
             }
             let schedulingData = ref({
@@ -586,7 +510,7 @@
             })
             request.post("/productionScheduling/examineScheduling", schedulingData.value).then((res) => {
               if (res.code == 200) {
-                ElMessage.success("瀹℃牳鎴愬姛")
+                ElMessage.success(t('basicData.msg.ReviewSuccess'))
                 location.reload();
               } else {
                 ElMessage.warning(res.msg)
@@ -606,7 +530,7 @@
       switch (menu.code) {
         case 'copyChecked' : {
           let result = toolbarButtonClickEvent()
-          if (result.cell === "scheduled_start_time" || result.cell === "plan_end_time") {
+          if (result.cell === "scheduledStartTime" || result.cell === "planEndTime" || result.cell === "schedulingQuantity"){
             if (result) {
               const dataList = xGrid.value.getTableData().visibleData
               const val = dataList[result.start][result.cell]
@@ -622,7 +546,7 @@
         }
         case 'copyAll' : {
           let result = toolbarButtonClickEvent()
-          if (result.cell === "scheduled_start_time" || result.cell === "plan_end_time") {
+          if (result.cell === "scheduledStartTime" || result.cell === "planEndTime"|| result.cell === "schedulingQuantity") {
             if (result) {
               const dataList = xGrid.value.getTableData().visibleData
               const val = dataList[result.start][result.cell]
@@ -637,7 +561,7 @@
         }
         case 'clearChecked' : {
           let result = toolbarButtonClickEvent()
-          if (result.cell === "scheduled_start_time" || result.cell === "plan_end_time") {
+          if (result.cell === "scheduledStartTime" || result.cell === "planEndTime"|| result.cell === "schedulingQuantity") {
             if (result) {
               const dataList = xGrid.value.getTableData().visibleData
               dataList.forEach((item, index) => {
@@ -661,7 +585,7 @@
   let selectState = stateValue.value
   table.forEach((selectRecords) => {
     if (selectRecords.scheduling_quantity > selectRecords.pendingProductionQuantity && selectState == 1) {
-      ElMessage.warning("鎺掍骇鏁伴噺涓嶈兘澶т簬寰呮帓浜ф暟閲�")
+      ElMessage.warning(t('processCard.schedulingQuantityNoQuantityScheduled'))
       //绂佺敤淇濆瓨鎸夐挳
       //gridOptions.toolbarConfig.buttons[2].disabled = true
     }
@@ -680,9 +604,9 @@
         <el-date-picker
             v-model="form.date1"
             :default-time="defaultTime"
-            end-placeholder="缁撴潫鏃堕棿"
+            :start-placeholder="$t('basicData.startDate')"
+            :end-placeholder="$t('basicData.endDate')"
             format="YYYY/MM/DD"
-            start-placeholder="寮�濮嬫椂闂�"
             type="daterange"
             value-format="YYYY-MM-DD"
 
@@ -690,7 +614,7 @@
         &nbsp;&nbsp;
         <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 110px"></el-input>
         &nbsp;
-        <el-select v-model="value" clearable default-value="default_city" style="width: 120px">
+        <el-select v-model="processVal" clearable default-value="default_city" style="width: 120px">
           <el-option
               v-for="item in titleSelectJson['processType']"
               :key="item.id"
@@ -699,7 +623,7 @@
           />
         </el-select>
         &nbsp;
-        <el-select v-model="stateValue" class="m-2" placeholder="鏄惁鎺掍骇" style="width: 120px">
+        <el-select v-model="stateValue" class="m-2" :placeholder="$t('processCard.whetherToScheduleProduction')" style="width: 120px">
           <el-option
               v-for="item in stateOptions"
               :key="item.value"
@@ -761,11 +685,7 @@
 
     </vxe-grid>
   </div>
-  <div ref="cellArea" class="vxe-table--cell-area">
-    <span class="vxe-table--cell-main-area"></span>
 
-    <span class="vxe-table--cell-active-area"></span>
-  </div>
 </template>
 
 <style scoped>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue
index 0619e91..e1735ae 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectDetailProcessCard.vue
@@ -136,19 +136,19 @@
   },//琛ㄥご鍙傛暟
   columns:[
     {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
-    { type: 'seq',fixed:"left", title: '鑷簭', width: 50 },
-    {field: 'order_id', title: '閿�鍞崟鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 80 },
-    {field: 'process_id', width: 140, title: '娴佺▼鍗″彿' ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'order_number', title: '璁㈠崟搴忓彿' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
-    {field: 'technology_number', title: '灏忕墖椤哄簭' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
-    {field: 'quantity', title: '鏁伴噺',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 80},
-    {field: 'child_width', title: '瀹�', },
-    {field: 'child_height', title: '楂�', },
-    {field: 'area', title: '闈㈢Н' ,showOverflow:"ellipsis"},
-    {field: 'product_name', title: '浜у搧鍚嶇О', },
-    {field: 'glass_child', title: '鍗曠墖鍚嶇О', },
-    {field: 'founder', title: '鍒嗘灦鍛�', },
-    {field: 'splitFrame_time', title: '鍒嗘灦鏃堕棿', },
+    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 },
+    {field: 'order_id', title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' },width: 80 },
+    {field: 'process_id', width: 140, title: t('processCard.processId') ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'order_number', title: t('order.OrderNum') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
+    {field: 'technology_number', title: t('processCard.technologyNumber') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' },},
+    {field: 'quantity', title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, width: 80},
+    {field: 'child_width', title: t('order.width'), },
+    {field: 'child_height', title: t('order.height'), },
+    {field: 'area', title: t('order.area') ,showOverflow:"ellipsis"},
+    {field: 'product_name', title: t('order.product'), },
+    {field: 'glass_child', title: t('reportingWorks.glassChild'), },
+    {field: 'founder', title: t('processCard.founder'), },
+    {field: 'splitFrame_time', title: t('processCard.splitFrameTime'), },
   ],//琛ㄥご鎸夐挳
 
   toolbarConfig: {
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 1c0edc3..20a564b 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
@@ -156,28 +156,28 @@
     {type: 'seq', fixed: "left", title: t('basicData.Number'), width: 50},
     {
       field: 'order_id',
-      title: '閿�鍞崟鍙�',
+      title: t('order.orderId'),
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
     },
     {
       field: 'project',
-      title: '椤圭洰鍚嶇О',
+      title: t('order.project'),
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
     },
     {
       field: 'quantity',
-      title: '鏁伴噺',
+      title: t('order.quantity'),
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
     },
     {
       field: 'area',
-      title: '闈㈢Н',
+      title: t('order.area'),
       filters: [{data: ''}],
       slots: {filter: 'num1_filter'},
       filterMethod: filterChanged
@@ -233,9 +233,9 @@
       <el-row :gutter="0">
         <el-date-picker
             v-model="form.date1"
-            end-placeholder="缁撴潫鏃堕棿"
+            :start-placeholder="$t('basicData.startDate')"
+            :end-placeholder="$t('basicData.endDate')"
             format="YYYY/MM/DD"
-            start-placeholder="寮�濮嬫椂闂�"
             type="daterange"
             value-format="YYYY-MM-DD"
 
@@ -243,7 +243,7 @@
         &nbsp;&nbsp;
         <el-input v-model="form.orderId" :placeholder="$t('order.orderId')" clearable style="width: 110px"></el-input>
         &nbsp;&nbsp;
-        <el-input v-model="form.project" clearable placeholder="椤圭洰鍚嶇О" style="width: 110px"></el-input>
+        <el-input v-model="form.project" clearable :placeholder="$t('order.project')" style="width: 110px"></el-input>
         &nbsp;&nbsp;
         <el-button
             id="select"
diff --git a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
index 4c01593..d85a2cc 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/processCard/SelectProcessCard.vue
@@ -37,7 +37,7 @@
           ElMessage.success(t('workOrder.deleteOk'))
           router.push({path: '/main/processCard/SelectProcessCard', query: {random: Math.random()}})
         } else {
-          ElMessage.warning('鍒犻櫎澶辫触锛屾鏌ユ祦绋嬪崱鏄惁宸叉姤宸�')
+          ElMessage.warning(t('processCard.deleteOk'))
         }
       })
 
@@ -54,7 +54,7 @@
 //瀹氫箟鍙橀噺
 const form = reactive({
   date1: '',
-  getSelect:'涓嶅彲鎺掔増'
+  getSelect:t('processCard.composingNo')
 })
 
 
@@ -318,9 +318,9 @@
 })
 
 const sexOptions = ref([
-  {label: '宸叉帓鐗�', value: '宸叉帓鐗�'},
-  {label: '鍙帓鐗�', value: '鍙帓鐗�'},
-  {label: '涓嶅彲鎺掔増', value: '涓嶅彲鎺掔増'}
+  {label: t('processCard.typesetter'), value: t('processCard.typesetter')},
+  {label: t('processCard.composingOk'), value: t('processCard.composingOk')},
+  {label: t('processCard.composingNo'), value: t('processCard.composingNo')}
 ])
 
 //琛ㄦ牸鎸夐挳
@@ -334,7 +334,7 @@
           if ($table) {
             const selectRecords = $table.getCheckboxRecords()
             if (selectRecords.length == 0) {
-              ElMessage.warning("璇峰嬀閫夐渶瑕佺殑鏁版嵁")
+              ElMessage.warning(t('processCard.pleaseCheckTheRequiredData'))
               return;
             }
 
@@ -345,14 +345,14 @@
             //淇敼鎺掔増鐘舵��
             request.post("/processCard/updateComposing", composingData.value).then((res) => {
               if (res.code == 200 && res.data === true) {
-                ElMessage.success("淇敼鎴愬姛")
+                ElMessage.success(t('basicData.msg.saveSuccess'))
                 router.push({
                   path: '/main/processCard/SelectProcessCard',
                   query: {random: Math.random()}
                 })
               } else {
 
-                ElMessage.warning('淇敼澶辫触')
+                ElMessage.warning(t('basicData.msg.saveFail'))
 
               }
             })
@@ -368,7 +368,7 @@
 }
 const checkBoxConfig = {
   checkMethod: ({row}) => {
-    if (row['layoutStatus'] === '鍙帓鐗�' || row['layoutStatus'] === '宸叉帓鐗�') {
+    if (row['layoutStatus'] === t('processCard.composingOk') || row['layoutStatus'] === t('processCard.typesetter')) {
       return row.disable
     } else {
       return !row.disable
@@ -463,9 +463,9 @@
 
           <div v-for="(option, index) in column.filters" :key="index">
             <select v-model="option.data" @change="changeFilterEvent($event, option, $panel)" style="width: 100%">
-              <option  value="宸叉帓鐗�" label="宸叉帓鐗�"></option>
-              <option  value="鍙帓鐗�" label="鍙帓鐗�"></option>
-              <option  value="涓嶅彲鎺掔増" label="涓嶅彲鎺掔増"></option>
+              <option  :value="$t('processCard.typesetter')" :label="$t('processCard.typesetter')"></option>
+              <option  :value="$t('processCard.composingOk')" :label="$t('processCard.composingOk')"></option>
+              <option  :value="$t('processCard.composingNo')" :label="$t('processCard.composingNo')"></option>
             </select>
           </div>
         </div>
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
index 4969a00..a82238d 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/AddReportingWork.vue
@@ -99,11 +99,11 @@
         xGrid.value.reloadData(res.data.reportingWorkDetails)
         let button =  {
           code: 'update',
-          name: '淇敼',
+          name: t('basicData.update'),
           status: 'primary',
         }
         if(route.query.reviewStatus === "1"){
-          button.name='瀹℃牳'
+          button.name=t('basicData.review')
           titleUploadData.value.qualityInspector=user.user.userName
         }
 
@@ -132,15 +132,15 @@
 const optionVal = ref('')
 
 //鐝
-const classesVal = ref('鏃╃彮')
+const classesVal = ref(t('reportingWorks.early'))
 const classesOption = [
   {
-    value: '鏃╃彮',
-    label: '鏃╃彮',
+    value: t('reportingWorks.early'),
+    label: t('reportingWorks.early'),
   },
   {
-    value: '鏅氱彮',
-    label: '鏅氱彮',
+    value: t('reportingWorks.nightShift'),
+    label: t('reportingWorks.nightShift'),
   },
 ]
 
@@ -259,7 +259,7 @@
           const brokenNum =
               (row.breakageQuantity === undefined || row.breakageQuantity===null) ? 0 : row.breakageQuantity
           if (row.completedQuantity && !regex.test(row.completedQuantity)) {
-            return new Error('璇疯緭鍏ユ暣鏁帮紝骞朵笖澶т簬绛変簬0')
+            return new Error(t('reportingWorks.enterIntegerGreaterThanEqualTo'))
           }else if((row.completedQuantity*1+brokenNum*1)>row.quantity*1){
             return new Error((`${row.completedQuantity}+${brokenNum}>${row.quantity}`))
           }
@@ -319,7 +319,7 @@
         case 'saveReportingWork':  {
           const errMap = await $grid.validate(true)
           if (errMap) {
-            ElMessage.error(`鏍¢獙涓嶉�氳繃锛乣)
+            ElMessage.error(t('basicData.msg.checkoutLose'))
             return
           }
           saveReportingWork(0,'save')
@@ -328,7 +328,7 @@
         case 'saveReportingWorkReview':  {
           const errMap = await $grid.validate(true)
           if (errMap) {
-            ElMessage.error(`鏍¢獙涓嶉�氳繃锛乣)
+            ElMessage.error(t('basicData.msg.checkoutLose'))
             return
           }
           saveReportingWork(1,'save')
@@ -338,7 +338,7 @@
           getQuantity()
           const errMap = await $grid.validate(true)
           if (errMap) {
-            ElMessage.error(`鏍¢獙涓嶉�氳繃锛乣)
+            ElMessage.error(t('basicData.msg.checkoutLose'))
             return
           }
           saveReportingWork(0,'update')
@@ -453,7 +453,7 @@
         validator ({ cellValue }) {
           const regex = /^[1-9]\d*$/
           if (!regex.test(cellValue)) {
-            return new Error('杈撳叆澶т簬0鐨勬暣鏁�')
+            return new Error(t('reportingWorks.enterIntegerGreaterThan'))
           }
         }
       }
@@ -463,25 +463,25 @@
         validator ({ row }) {
           const regex = /^\s*$/i
           if(row.available===true && (regex.test(row.returnProcess)==='' || row.returnProcess===null)){
-            return new Error('鍙埄鐢ㄥ凡閫夋嫨锛岃閫夋嫨杩斿洖宸ュ簭')
+            return new Error(t('reportingWorks.availableOkReturnProcess'))
           }
         }
       }
     ],
     breakageType: [
-      { required: true, message: '璇烽�夋嫨娆$牬绫诲瀷' }
+      { required: true, message: t('reportingWorks.selectBreakageType') }
     ],
     breakageReason: [
-      { required: true, message: '璇烽�夋嫨娆$牬鍘熷洜' }
+      { required: true, message: t('reportingWorks.selectBreakageReason') }
     ],
     responsibleProcess: [
-      { required: true, message: '璇烽�夋嫨璐d换宸ュ簭' }
+      { required: true, message: t('reportingWorks.selectResponsibleProcess')}
     ],
     responsibleEquipment: [
-      { required: true, message: '璇烽�夋嫨璐d换璁惧' }
+      { required: true, message: t('reportingWorks.selectResponsibleEquipment') }
     ],
     responsibleTeam: [
-      { required: true, message: '璐d换鐝粍' }
+      { required: true, message: t('reportingWorks.selectResponsibleTeam') }
     ],
   },
   toolbarConfig: {//琛ㄥご鎸夐挳
@@ -533,7 +533,7 @@
   }
   const errMap = await brokenGrid.value.validate(true)
   if (errMap) {
-    ElMessage.error(`鏍¢獙涓嶉�氳繃锛乣)
+    ElMessage.error(t('basicData.msg.checkoutLose'))
     return false
   }
   let breakageQuantityCount = 0
@@ -610,17 +610,17 @@
 const saveReportingWork = (state,saveType) => {
 
   if(xGrid.value.getTableData().fullData.length===0){
-    ElMessage.warning(`璇烽�夋嫨娴佺▼鍗℃暟鎹甡)
+    ElMessage.warning(t('reportingWorks.selectProcessCardData'))
     return
   }
   const device = titleUploadData.value.deviceName
   if(device === null || device === undefined || device === ''){
-    ElMessage.error('璇烽�夋嫨鎶ュ伐璁惧锛�')
+    ElMessage.error(t('reportingWorks.selectWorkReportingEquipment'))
     return
   }
   const teamsGroupsName = titleUploadData.value.teamsGroupsName
   if(teamsGroupsName === null || teamsGroupsName === undefined || teamsGroupsName === ''){
-    ElMessage.error('璇烽�夋嫨鎶ュ伐璁惧锛�')
+    ElMessage.error(t('reportingWorks.selectWorkReportingTeam'))
     return
   }
 
@@ -655,7 +655,7 @@
     return (a || b)
   })
   if(requestDetailData.length === 0){
-    ElMessage.warning('璇峰~鍐欒嚦灏戜竴鏉℃崯鑰楁暟鍜屽畬宸ユ暟澶т簬0')
+    ElMessage.warning(t('reportingWorks.atLeastOneFinishedAndWornEligible'))
     return false
   }
 
@@ -678,7 +678,7 @@
 const saveReportingWorkRequest = (requestData) =>{
   request.post(`/reportingWork/saveReportingWork`,requestData).then(res =>{
     if (res.code == 200){
-      ElMessage.success("鎶ュ伐鎴愬姛")
+      ElMessage.success(t('reportingWorks.successfulJobApplication'))
       router.push({path:'/main/reportingWorks/AddReportingWork',query:{processId:titleUploadData.value.processId,random:Math.random()}})
     }else{
       const errorObj = JSON.parse(res.msg)
@@ -707,7 +707,7 @@
   }
   request.post(`/reportingWork/updateReportingWork/${reviewState}`,requestData).then(res =>{
     if (res.code == 200){
-      ElMessage.success("鎶ュ伐淇敼鎴愬姛")
+      ElMessage.success(t('reportingWorks.successfulModificationOfWorkApplication'))
       router.push({path:'/main/reportingWorks/AddReportingWork',
         query:{
           processId:titleUploadData.value.processId,
@@ -749,23 +749,23 @@
 const reviewReportingWork = () => {
   const processId = titleUploadData.value.processId
   if (processId.indexOf("/") < 0) {
-    ElMessage.warning("璇疯緭鍏ユ纭牸寮忔祦绋嬪崱")
+    ElMessage.warning(t('reportingWorks.correctFormatProcessCard'))
     return
   }
   let indexOfChar = processId.indexOf("/")
   let leftString = processId.slice(0, indexOfChar)
   if (leftString.length < 14) {
-    ElMessage.warning("璇疯緭鍏ユ纭綅鏁扮殑娴佺▼鍗�")
+    ElMessage.warning(t('reportingWorks.processCardCorrectNumberDigits'))
     return
   }
 //宸ュ簭
   let process = titleUploadData.value.thisProcess
   if (process === "" || process == null) {
-    ElMessage.warning("璇烽�夋嫨宸ュ簭")
+    ElMessage.warning(t('reportingWorks.selectProcess'))
     return
   }
   if(titleUploadData.value.previousProcess===''){
-    ElMessage.warning("绗竴閬撳伐搴忎笉闇�瑕佸鏍�")
+    ElMessage.warning(t('reportingWorks.firstProcessNotReview'))
     return
   }
   const reportWork = {
@@ -775,7 +775,7 @@
   loadingFlag.value= true
   request.post("/reportingWork/reviewReportingWork",reportWork).then((res) =>{
     if(res.code === '200'){
-      ElMessage.success("瀹℃牳鎴愬姛")
+      ElMessage.success(t('basicData.msg.ReviewSuccess'))
       router.push({path:'/main/reportingWorks/AddReportingWork',
         query:{
           processId:titleUploadData.value.processId,
@@ -795,30 +795,30 @@
 
   let processId = titleUploadData.value.processId
   if (processId == "" || processId == null) {
-    ElMessage.warning("娴佺▼鍗″彿涓嶈兘涓虹┖")
+    ElMessage.warning(t('reportingWorks.theProcessCardNumberCannotBeEmpty'))
     return
   }
   let parts = processId.split('/');
 
   if (processId.indexOf("/") < 0 ||parts[1].trim() == '') {
-    ElMessage.warning("璇疯緭鍏ユ纭牸寮忔祦绋嬪崱")
+    ElMessage.warning(t('reportingWorks.correctFormatProcessCard'))
     return
   }
   let indexOfChar = processId.indexOf("/")
   let leftString = processId.slice(0, indexOfChar)
   if (leftString.length < 14) {
-    ElMessage.warning("璇疯緭鍏ユ纭綅鏁扮殑娴佺▼鍗�")
+    ElMessage.warning(t('reportingWorks.processCardCorrectNumberDigits'))
     return
   }
 //宸ュ簭
   let process = titleUploadData.value.thisProcess
   if (process == "" || process == null) {
-    ElMessage.warning("璇烽�夋嫨宸ュ簭")
+    ElMessage.warning(t('reportingWorks.selectProcess'))
     return
   }
 
   if (titleSelectJson.value.thisProcessType.indexOf(process) == -1 && process != "鍒囧壊" && titleSelectJson.value.thisProcessType != "") {
-    ElMessage.warning("姝ゅ伐搴忎笉灞炰簬璇ユ祦绋嬪崱")
+    ElMessage.warning(t('reportingWorks.thisProcessNotProcessCard'))
     return
   }
   //鍖归厤鈥�/鈥濆墠鍚庡瓧绗︿覆
@@ -833,7 +833,7 @@
   request.post(`/reportingWork/addSelectLastWork/${processIdStr}/${technologyStr}/${process}`).then((res) => {
     if (res.code == 200) {
       if(res.data.data==null){
-        ElMessage.error("鏈煡璇㈠埌姝ゆ祦绋嬪崱鏁版嵁")
+        ElMessage.error(t('reportingWorks.noDataThisProcessCard'))
         return
       }
 
@@ -918,7 +918,7 @@
   let hours = dateObj.getHours().toString().padStart(2, '0'); // 灏忔椂
   let minutes = dateObj.getMinutes().toString().padStart(2, '0'); // 鍒嗛挓
   let seconds = dateObj.getSeconds().toString().padStart(2, '0'); // 绉掓暟
-  if(parseInt(hours)>=17 && parseInt(hours)<8)titleUploadData.value.classes='鏅氱彮'
+  if(parseInt(hours)>=17 && parseInt(hours)<8)titleUploadData.value.classes=t('reportingWorks.nightShift')
   return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`; // 杩斿洖鏍煎紡鍖栧悗鐨勬椂闂村瓧绗︿覆
 }
 
@@ -963,10 +963,10 @@
 <template>
   <div style="height: 100%;width: 100%">
     <div id="head" style="height: 5%;width: 100%;margin-bottom: 5px">
-      <el-input :disabled="inputDisabled" v-if="titleUploadData.reportingWorkId" v-model="titleUploadData.reportingWorkId" placeholder="鎶ュ伐缂栧彿" style="width: 200px" />
-      <el-input :disabled="inputDisabled" v-model="titleUploadData.processId" placeholder="娴佺▼鍗″彿" style="width: 200px" @keyup.enter.native="getWork();getQuantity()"/>
+      <el-input :disabled="inputDisabled" v-if="titleUploadData.reportingWorkId" v-model="titleUploadData.reportingWorkId" :placeholder="$t('reportingWorks.reportingWorkId')" style="width: 200px" />
+      <el-input :disabled="inputDisabled" v-model="titleUploadData.processId" :placeholder="$t('processCard.processId')" style="width: 200px" @keyup.enter.native="getWork();getQuantity()"/>
       &nbsp;
-      <el-select :disabled="inputDisabled" v-model="titleUploadData.thisProcess" clearable placeholder="璇烽�夋嫨宸ュ簭" style="width: 120px"
+      <el-select :disabled="inputDisabled" v-model="titleUploadData.thisProcess" clearable :placeholder="$t('reportingWorks.selectProcess')" style="width: 120px"
                  @change="getWork();getQuantity()">
         <el-option
             v-for="item in titleSelectJson['processType']"
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue
index 3b91dc2..96985a3 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInReviewDetail.vue
@@ -105,28 +105,28 @@
   columns:[
     {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
     // { type: 'seq',fixed:"left", title: '鑷簭', width: 50 },
-    {field: 'order_number',fixed:"left", width: 120, title: '搴忓彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
-    {field: 'glass_child',fixed:"left",width: 120, title: '鍗曠墖鍚嶇О', sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'technology_number', width: 130,title: '灏忕墖椤哄簭', sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'glass_address',width: 120, title: '鐗囨爣璁�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'child_width', width: 100,title: '瀹�', sortable: true},
-    {field: 'child_height',width: 100, title: '楂�', sortable: true},
-    {field: 'shape',width: 120, title: '褰㈢姸', sortable: true,showOverflow:"ellipsis"},
-    {field: 'completed_quantity',width: 120, title: '瀹屽伐鏁伴噺', sortable: true},
-    {field: 'breakage_quantity',width: 120, title: '娆$牬鏁伴噺', sortable: true},
-    {field: 'available',width: 120, title: '鍙埄鐢�', sortable: true},
-    {field: 'return_process',width: 120, title: '閫�鍥炲伐搴�', sortable: true},
-    {field: 'breakage_type',width: 120, title: '娆$牬绫诲瀷', sortable: true},
-    {field: 'breakage_reason',width: 120, title: '娆$牬鍘熷洜', sortable: true},
-    {field: 'responsible_equipment',width: 120, title: '璐d换璁惧', sortable: true},
-    {field: 'responsible_process',width: 120, title: '璐d换宸ュ簭', sortable: true},
-    {field: 'responsible_team',width: 120, title: '璐d换鐝粍', sortable: true},
-    {field: 'responsible_personnel',width: 120, title: '璐d换浜哄憳', sortable: true},
+    {field: 'order_number',fixed:"left", width: 120, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true, },
+    {field: 'glass_child',fixed:"left",width: 120, title: t('reportingWorks.glassChild'), sortable: true,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'technology_number', width: 130,title: t('processCard.technologyNumber'), sortable: true,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'glass_address',width: 120, title: t('reportingWorks.glassAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'child_width', width: 100,title: t('order.width'), sortable: true},
+    {field: 'child_height',width: 100, title: t('order.height'), sortable: true},
+    {field: 'shape',width: 120, title: t('order.shape'), sortable: true,showOverflow:"ellipsis"},
+    {field: 'completed_quantity',width: 120, title:  t('reportingWorks.thisCompletedQuantity'), sortable: true},
+    {field: 'breakage_quantity',width: 120, title: t('reportingWorks.thisWornQuantity'), sortable: true},
+    {field: 'available',width: 120, title: t('reportingWorks.available'), sortable: true},
+    {field: 'return_process',width: 120, title: t('reportingWorks.returnProcess'), sortable: true},
+    {field: 'breakage_type',width: 120, title: t('reportingWorks.breakageType'), sortable: true},
+    {field: 'breakage_reason',width: 120, title: t('reportingWorks.breakageReason'), sortable: true},
+    {field: 'responsible_equipment',width: 120, title: t('reportingWorks.responsibleEquipment'), sortable: true},
+    {field: 'responsible_process',width: 120, title: t('reportingWorks.responsibleProcess'), sortable: true},
+    {field: 'responsible_team',width: 120, title: t('reportingWorks.responsibleTeam'), sortable: true},
+    {field: 'responsible_personnel',width: 120, title: t('reportingWorks.responsiblePersonnel'), sortable: true},
   ],//琛ㄥご鎸夐挳
 
   toolbarConfig: {
     buttons: [
-      {code: 'print_lck', name: '瀹℃牳閫氳繃',status:'primary' },
+      {code: 'print_lck', name: t('reportingWorks.passAudit'),status:'primary' },
     ],
     // import: false,
     // export: true,
@@ -142,7 +142,7 @@
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
-          return '鍚堣:'
+          return t('basicData.total')
         }
         if (footList.includes(column.field)) {
           return sumNum(data, column.field)
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue
index 74acc76..e538a1b 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/QualityInspectionReview.vue
@@ -56,11 +56,11 @@
 const options = [
   {
     value: '1',
-    label: '鏈川妫�',
+    label: t('reportingWorks.unqualified'),
   },
   {
     value: '2',
-    label: '宸茶川妫�',
+    label: t('reportingWorks.qualified'),
   },
 ]
 
@@ -274,24 +274,24 @@
   },//琛ㄥご鍙傛暟
   columns:[
     {type:'expand',fixed:"left",slots: { content:'content' }},
-    {title: '鎿嶄綔', width: 100, slots: { default: 'button_slot' },fixed:"left"},
-    { type: 'seq',fixed:"left", title: '鑷簭',},
+    {title: t('basicData.operate'), width: 100, slots: { default: 'button_slot' },fixed:"left"},
+    { type: 'seq',fixed:"left", title: t('basicData.Number'),},
 
-    {field: 'reportingWorkId',width: 130,  title: '鎶ュ伐缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
-    {field: 'reportingWorkTime',width: 120, title: '鎶ュ伐鏃堕棿',showOverflow:"ellipsis" },
-    {field: 'processId',width: 130, title: '娴佺▼鍗″彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'order.project',width: 120, title: '椤圭洰鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'order.customerName',width: 120, title: '瀹㈡埛鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'thisProcess',width: 100, title: '鏈伐搴�',showOverflow:"ellipsis"},
-    {field: 'thisCompletedQuantity',width: 100, title: '瀹屽伐鏁伴噺'},
-    {field: 'thisWornQuantity', width: 100,title: '娆$牬鏁伴噺'},
-    {field: 'teamsGroupsName',width: 110, title: '鎶ュ伐鐝粍'},
-    {field: 'deviceName',width: 110, title: '鎶ュ伐璁惧'},
-    {field: 'previousProcess', width: 100,title: '涓婂伐搴�'},
-    {field: 'nextProcess',width: 100, title: '涓嬪伐搴�'},
-    {field: 'qualityInspector',width: 120, title: '璐ㄦ鍛�'},
-    {field: 'qualityInsTime',width: 120, title: '璐ㄦ鏃堕棿'},
-    {field: 'damageDetails.qualityInsStatus',width: 120, title: '璐ㄦ鐘舵��'}
+    {field: 'reportingWorkId',width: 130,  title: t('reportingWorks.reportingWorkId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
+    {field: 'reportingWorkTime',width: 120, title: t('reportingWorks.reportingWorkTime'),showOverflow:"ellipsis" },
+    {field: 'processId',width: 130, title: t('processCard.processId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'order.project',width: 120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'order.customerName',width: 120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'thisProcess',width: 100, title: t('reportingWorks.thisProcess'),showOverflow:"ellipsis"},
+    {field: 'thisCompletedQuantity',width: 100, title: t('reportingWorks.thisCompletedQuantity')},
+    {field: 'thisWornQuantity', width: 100,title: t('reportingWorks.thisWornQuantity')},
+    {field: 'teamsGroupsName',width: 110, title: t('reportingWorks.teamsType')},
+    {field: 'deviceName',width: 110, title: t('reportingWorks.deviceType')},
+    {field: 'previousProcess', width: 100,title: t('reportingWorks.previousProcess')},
+    {field: 'nextProcess',width: 100, title: t('reportingWorks.nextProcess')},
+    {field: 'qualityInspector',width: 120, title: t('reportingWorks.qualityInspector')},
+    {field: 'qualityInsTime',width: 120, title: t('reportingWorks.qualityInsTime')},
+    {field: 'damageDetails.qualityInsStatus',width: 120, title: t('reportingWorks.qualityInsStatus')}
   ],//琛ㄥご鎸夐挳
 
   toolbarConfig: {
@@ -353,7 +353,7 @@
           />
         </el-select>
         &nbsp;&nbsp;
-        <el-input v-model="form.processId" clearable placeholder="娴佺▼鍗″彿" style="width: 130px"></el-input>
+        <el-input v-model="form.processId" clearable :placeholder="$t('processCard.processId')" style="width: 130px"></el-input>
         &nbsp;
         <el-button
             @click="getWorkOrder"
@@ -395,8 +395,8 @@
                    size="small">
           {{ $t('basicData.edit') }}
         </el-button>
-        <el-button v-if="row.damageDetails.qualityInsStatus===1" @click="getTableRow(row,'setType')" link type="primary" size="small">瀹℃牳</el-button>
-        <el-button v-else disabled @click="getTableRow(row,'setType')" link type="primary" size="small">瀹℃牳</el-button>
+        <el-button v-if="row.damageDetails.qualityInsStatus===1" @click="getTableRow(row,'setType')" link type="primary" size="small">{{ $t('basicData.review') }}</el-button>
+        <el-button v-else disabled @click="getTableRow(row,'setType')" link type="primary" size="small">{{ $t('basicData.review') }}</el-button>
       </template>
 
       <template #num1_filter="{ column, $panel }">
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue
index fb17a28..61bbdcd 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/ReportingWorks.vue
@@ -26,7 +26,7 @@
         <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/reportingWorks/AddReportingWork' }">{{$t('reportingWorks.addReportingWorks')}}</el-breadcrumb-item>
         <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/reportingWorks/SelectReportingWorks' }">{{$t('reportingWorks.WorkReportingManagement')}}</el-breadcrumb-item>
         <el-breadcrumb-item @click="changeRouter(3)" :class="indexFlag===3?'indexTag':''" :to="{ path: '/main/reportingWorks/QualityInspectionReview' }">{{$t('reportingWorks.qualityInspectionReview')}}</el-breadcrumb-item>
-        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>
+        <el-breadcrumb-item :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">{{$t('basicData.print')}}</el-breadcrumb-item>
       </el-breadcrumb>
     </div>
 
diff --git a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
index d802036..a6b8b39 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/reportingWorks/SelectReportingWorks.vue
@@ -28,7 +28,7 @@
           ElMessage.success(t('workOrder.deleteOk'))
           router.push({path: '/main/reportingWorks/SelectReportingWorks', query: {random:Math.random()}})
         } else {
-          ElMessage.warning('鍒犻櫎澶辫触锛屾鏌ヤ笅宸ュ簭鏄惁宸叉姤宸�')
+          ElMessage.warning(t('processCard.deleteNoProcedure'))
         }
       })
       break
@@ -250,23 +250,23 @@
   },//琛ㄥご鍙傛暟
   columns:[
     {type:'expand',fixed:"left",slots: { content:'content' },width: 50},
-    {title: '鎿嶄綔', width: 140, slots: { default: 'button_slot' },fixed:"left"},
-    { type: 'seq',fixed:"left", title: '鑷簭', width: 50 },
-    {field: 'reportingWorkId', width: 120, title: '鎶ュ伐缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
-    {field: 'reportingWorkTime',width: 120, title: '鎶ュ伐鏃堕棿' ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'orderId', width: 130,title: '閿�鍞崟鍙�' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'processId', width: 130,title: '娴佺▼鍗″彿' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
-    {field: 'order.project',width: 120, title: '椤圭洰鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
-    {field: 'order.batch', width: 100,title: '鎵规' ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {title: t('basicData.operate'), width: 140, slots: { default: 'button_slot' },fixed:"left"},
+    { type: 'seq',fixed:"left", title: t('basicData.Number'), width: 50 },
+    {field: 'reportingWorkId', width: 120, title: t('reportingWorks.reportingWorkId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
+    {field: 'reportingWorkTime',width: 120, title: t('reportingWorks.reportingWorkTime') ,showOverflow:"ellipsis" ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'orderId', width: 130,title:  t('order.orderId') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'processId', width: 130,title: t('processCard.processId') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
+    {field: 'order.project',width: 120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, },
+    {field: 'order.batch', width: 100,title: t('order.batch') ,filters:[{ data: '' }],slots: { filter: 'num1_filter' }},
 
-    {field: 'thisProcess',width: 100, title: '鏈伐搴�',filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
-    {field: 'thisCompletedQuantity',width: 120, title: '鏈伐搴忓畬宸�' },
-    {field: 'completedArea', width: 120,title: '瀹屽伐闈㈢Н', },
-    {field: 'thisWornQuantity',width: 120, title: '鏈伐搴忔鐮�', },
-    {field: 'wornArea',width: 120, title: '娆$牬闈㈢Н', },
-    {field: 'deviceName', width: 100,title: '鎶ュ伐璁惧', },
-    {field: 'teamsGroupsName',width: 120, title: '鎶ュ伐鐝粍', },
-    {field: 'reviewedState',width: 120, title: '瀹℃牳鐘舵��', },
+    {field: 'thisProcess',width: 100, title: t('reportingWorks.thisProcess'),filters:[{ data: '' }],slots: { filter: 'num1_filter' } },
+    {field: 'thisCompletedQuantity',width: 120, title: t('reportingWorks.thisCompletedQuantity') },
+    {field: 'completedArea', width: 120,title: t('reportingWorks.completedArea'), },
+    {field: 'thisWornQuantity',width: 120, title: t('reportingWorks.thisWornQuantity'), },
+    {field: 'wornArea',width: 120, title: t('reportingWorks.wornArea'), },
+    {field: 'deviceName', width: 100,title: t('reportingWorks.deviceType'), },
+    {field: 'teamsGroupsName',width: 120, title: t('reportingWorks.teamsType'), },
+    {field: 'reviewedState',width: 120, title: t('processCard.reviewedState'), },
 
   ],//琛ㄥご鎸夐挳
 
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 6466d45..5f158f4 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
@@ -182,11 +182,11 @@
               ElMessage.success(t('basicData.msg.saveSuccess'))
               router.push({path:'/main/rework/AddRework',query:{random:Math.random()}})
             }else{
-              ElMessage.warning("淇濆瓨澶辫触")
+              ElMessage.warning(t('basicData.msg.saveFail'))
               router.push("/login")
             }
           }).catch((err)=>{
-            ElMessage.error('绯荤粺閿欒')
+            ElMessage.error(t('basicData.msg.ServerConnectionError'))
             router.push("/login")
           })
           break
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 633e122..3a2c7c3 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
@@ -201,11 +201,11 @@
                 router.push({path:'/main/rework/SelectRework',query:{random:Math.random()}})
 
               }else{
-                ElMessage.warning("瀹℃牳澶辫触")
+                ElMessage.warning(t('basicData.msg.reviewFail'))
                 router.push("/login")
               }
             }).catch((err)=>{
-              ElMessage.error('绯荤粺閿欒')
+              ElMessage.error(t('basicData.msg.ServerConnectionError'))
               router.push("/login")
             })
           }
@@ -274,8 +274,8 @@
       <el-date-picker
           v-model="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"
 
diff --git a/north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue b/north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue
index 5f094d7..e24af7a 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/workOrder/AddWorkOrder.vue
@@ -270,8 +270,8 @@
 
       <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
       <template #button_slot="{ row }">
-        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">杞伐鍗�</el-button>
-        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">鍒犻櫎</el-button>
+        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{ $t('workOrder.transferOrder') }}</el-button>
+        <el-button @click="getTableRow(row,'delete')" link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
       </template>
 
       <template #num1_filter="{ column, $panel }">
diff --git a/north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue b/north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue
index 6dc1abf..675bfbe 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/workOrder/SelectWorkOrder.vue
@@ -38,7 +38,7 @@
             router.push({path: '/main/workOrder/SelectWorkOrder', query: {startTime:startTime,endTime:endTime,state:state,random:Math.random()}})
           } else {
 
-            ElMessage.warning('鍒犻櫎澶辫触锛屾鏌ユ槸鍚﹀凡鍒嗘灦')
+            ElMessage.warning(t('workOrder.deleteNo'))
 
           }
       })
@@ -253,11 +253,11 @@
       , width: 130
     },
     {field: 'order.batch', title: t('order.batch'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 110},
-    {field: 'order.project', title: '椤圭洰鍚嶇О', filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 210},
-    {field: 'order.orderType', title: '璁㈠崟绫诲瀷', showOverflow: "ellipsis", width: 110},
-    {field: 'orderDetail.grossArea', title: '闈㈢Н', width: 70},
-    {field: 'orderDetail.quantity', title: '鏁伴噺',},
-    {field: 'order.creator', title: '鍒涘缓浜�',},
+    {field: 'order.project', title: t('order.project'), filters: [{data: ''}], slots: {filter: 'num1_filter'}, width: 210},
+    {field: 'order.orderType', title: t('order.orderType'), showOverflow: "ellipsis", width: 110},
+    {field: 'orderDetail.grossArea', title: t('order.orderType'), width: 70},
+    {field: 'orderDetail.quantity', title: t('order.grossArea'),},
+    {field: 'order.creator', title: t('order.creator'),},
   ],//琛ㄥご鎸夐挳
   data: null,//琛ㄦ牸鏁版嵁
   toolbarConfig: {
diff --git a/north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue b/north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue
index 39dd4cf..4226049 100644
--- a/north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue
+++ b/north-glass-erp/northglass-erp/src/views/pp/workOrder/WorkOrder.vue
@@ -23,7 +23,7 @@
     <div id="div-title">
       <el-breadcrumb :separator-icon="ArrowRight">
         <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/workOrder/SelectWorkOrder' }">{{$t('workOrder.workOrder')}}</el-breadcrumb-item>
-        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">鎵撳嵃</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/processCard/SelectPrintFlowCard' }" style="display: none">{{$t('basicData.print')}}</el-breadcrumb-item>
       </el-breadcrumb>
     </div>
     <div id="main-body">
diff --git a/north-glass-erp/northglass-erp/src/views/sd/basicData/BasicData.vue b/north-glass-erp/northglass-erp/src/views/sd/basicData/BasicData.vue
index 73180af..1519f0c 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/basicData/BasicData.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/basicData/BasicData.vue
@@ -20,8 +20,8 @@
   <div id="main-div">
     <div id="div-title">
       <el-breadcrumb :separator-icon="ArrowRight">
-        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/orderBasicData/searchBasicData' }">鍩虹鏁版嵁</el-breadcrumb-item>
-        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/orderBasicData/searchGlassType' }">鐜荤拑绫诲埆</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/orderBasicData/searchBasicData' }">{{ $t('orderBasicData.basicType') }}</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/orderBasicData/searchGlassType' }">{{ $t('orderBasicData.glassCategory') }}</el-breadcrumb-item>
         <el-breadcrumb-item v-show="false" :to="{ path: '/main/order/orderReport' }">鎶ヨ〃</el-breadcrumb-item>
       </el-breadcrumb>
     </div>
diff --git a/north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue b/north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue
index 0e47b24..0da5087 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/basicData/CreateBasicData.vue
@@ -14,89 +14,89 @@
   input:''
 })
 let options=ref([
-  { "label": "璁㈠崟",
+  { "label": t('orderBasicData.order'),
     "value": "order",
     "children": [
       {
-        "label": "璁㈠崟绫诲瀷",
+        "label": t('orderBasicData.orderType'),
         "value": "orderType"
       },
       {
-        "label": "璁㈠崟鍒嗙被",
+        "label": t('orderBasicData.orderClassify'),
         "value": "orderClassify"
       },
       {
-        "label": "鍟嗘爣閫夐」",
+        "label": t('orderBasicData.icon'),
         "value": "icon"
       },
       {
-        "label": "鍖呰鏂瑰紡",
+        "label": t('orderBasicData.packType'),
         "value": "packType"
       },
       {
-        "label": "閾濇潯鏂瑰紡",
+        "label": t('orderBasicData.alType'),
         "value": "alType"
       },
       {
-        "label": "涓氬姟鍛�",
+        "label": t('orderBasicData.saleMan'),
         "value": "saleMan"
       }
     ]
   },
   {
-    "label": "浜у搧",
+    "label": t('orderBasicData.product'),
     "value": "product",
     "children": [
       {
-        "label": "鏉愭枡鍘氬害",
+        "label": t('orderBasicData.stuffThickness'),
         "value": "stuffThickness"
       },
       {
-        "label": "鏉愭枡棰滆壊",
+        "label": t('orderBasicData.stuffColor'),
         "value": "stuffColor"
       },
       {
-        "label": "宸ヨ壓灞炴��",
+        "label": t('orderBasicData.stuffCraft'),
         "value": "stuffCraft"
       },
       {
-        "label": "鐜荤拑浣嶇疆",
+        "label": t('orderBasicData.stuffPosition'),
         "value": "stuffPosition"
       },
       {
-        "label": "lowe",
+        "label": t('orderBasicData.stuffLowE'),
         "value": "stuffLowE"
       },
       {
-        "label": "澶硅兌鍘氬害",
+        "label": t('orderBasicData.InterlayerThickness'),
         "value": "InterlayerThickness"
       },
       {
-        "label": "澶硅兌绫诲瀷",
+        "label": t('orderBasicData.InterlayerType'),
         "value": "InterlayerType"
       },
       {
-        "label": "澶硅兌棰滆壊",
+        "label": t('orderBasicData.InterlayerColor'),
         "value": "InterlayerColor"
       },
       {
-        "label": "宸ヨ壓娴佺▼",
+        "label": t('orderBasicData.process'),
         "value": "process"
       },
       {
-        "label": "涓┖鍘氬害",
+        "label": t('orderBasicData.hollowThickness'),
         "value": "hollowThickness"
       },
       {
-        "label": "鍏呮皵鏂瑰紡",
+        "label": t('orderBasicData.hollowGasType'),
         "value": "hollowGasType"
       },
       {
-        "label": "灏佽兌",
+        "label": t('orderBasicData.hollowType'),
         "value": "hollowType"
       },
       {
-        "label": "榛樿鑳舵繁",
+        "label": t('orderBasicData.hollowGlueDepth'),
         "value": "hollowGlueDepth"
       }
     ]
@@ -104,15 +104,15 @@
   {
     "children": [
       {
-        "label": "浠樻鏉′欢",
+        "label": t('orderBasicData.paymentTerms'),
         "value": "paymentTerms"
       },
       {
-        "label": "鏀舵鏂瑰紡",
+        "label": t('orderBasicData.payMethod'),
         "value": "payMethod"
       }
     ],
-    "label": "閫佽揣",
+    "label": t('orderBasicData.delivery'),
     "value": "delivery"
   }
 ])
@@ -135,7 +135,7 @@
 const saveBasicData =  () =>{
   request.post(`/basicData/addBasicData`, basic.value).then(res => {
     if (res.data) {
-      ElMessage.success('淇濆瓨鎴愬姛')
+      ElMessage.success(t('basicData.msg.saveSuccess'))
       emit('gaveParent', true)
     }
   })
@@ -147,7 +147,7 @@
   submitArr.basicName = basic.value.input
   request.post(`/basicData/updateBasicData`, submitArr).then(res => {
     if (res.data) {
-      ElMessage.success('淇敼鎴愬姛')
+      ElMessage.success(t('basicData.msg.saveSuccess'))
       emit('gaveParent', true)
     }
   })
@@ -165,7 +165,7 @@
 <template>
   <div>
     <el-row>
-      <el-col :span="4">鍩虹绫诲瀷:</el-col>
+      <el-col :span="4">{{ $t('orderBasicData.basicType') }}:</el-col>
       <el-col :span="12">
         <el-cascader
             v-model="basic.basicType"
@@ -178,7 +178,7 @@
       </el-col>
     </el-row>
     <el-row>
-      <el-col :span="4">鍚嶇О:</el-col>
+      <el-col :span="4">{{ $t('orderBasicData.name') }}:</el-col>
       <el-col :span="12">
         <el-input v-model="basic.input"/>
       </el-col>
@@ -186,8 +186,8 @@
     <el-row>
       <el-col :span="4"></el-col>
       <el-col :span="12">
-        <el-button v-show="!props.rowIndex" @click="saveBasicData" type="primary">鏂板</el-button>
-        <el-button v-show="props.rowIndex" @click="updateBasicData" type="primary">淇敼</el-button>
+        <el-button v-show="!props.rowIndex" @click="saveBasicData" type="primary">{{ $t('basicData.insert') }}</el-button>
+        <el-button v-show="props.rowIndex" @click="updateBasicData" type="primary">{{ $t('basicData.update') }}</el-button>
 
       </el-col>
     </el-row>
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 a7ffc0b..069ca28 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
@@ -42,9 +42,9 @@
   //琛ㄥご鍙傛暟
   columns:[
     {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
-    {type: 'seq', title: '搴忓彿', width: 80 ,fixed:"left",},
-    {field:'basicName',title: '鍚嶇О'},
-    {field:'createTime',title: '鍒涘缓鏃ユ湡'},
+    {type: 'seq', title: t('basicData.number'), width: 80 ,fixed:"left",},
+    {field:'basicName',title: t('orderBasicData.name')},
+    {field:'createTime',title: t('basicData.creationTime')},
 
 
   ],
@@ -52,7 +52,7 @@
   //琛ㄥご鎸夐挳
   toolbarConfig: {
     buttons: [
-      {'code': 'add', 'name': '鏂板',status: 'primary'},
+      {'code': 'add', 'name': t('basicData.insert'),status: 'primary'},
     ],
 
     // import: false,
diff --git a/north-glass-erp/northglass-erp/src/views/sd/basicData/SearchGlassType.vue b/north-glass-erp/northglass-erp/src/views/sd/basicData/SearchGlassType.vue
index cada649..8198765 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/basicData/SearchGlassType.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/basicData/SearchGlassType.vue
@@ -42,16 +42,16 @@
   //琛ㄥご鍙傛暟
   columns:[
     {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left",},
-    {type: 'seq', title: '搴忓彿', width: 80 ,fixed:"left",},
-    {field:'level',title: '绫诲埆绛夌骇'},
-    {field:'typeName',title: '鍚嶇О'},
-    {field:'createTime',title: '鍒涘缓鏃ユ湡'}
+    {type: 'seq', title: t('basicData.number'), width: 80 ,fixed:"left",},
+    {field:'level',title: t('orderBasicData.level')},
+    {field:'typeName',title: t('orderBasicData.name')},
+    {field:'createTime',title: t('basicData.creationTime')}
   ],
 
   //琛ㄥご鎸夐挳
   toolbarConfig: {
     buttons: [
-      {'code': 'add', 'name': '鏂板',status: 'primary'},
+      {'code': 'add', 'name': t('basicData.insert'),status: 'primary'},
     ],
 
     // import: false,
@@ -65,11 +65,11 @@
 const glassType = reactive([
   {
     value:1,
-    label:'涓�绾х被鍒�'
+    label:t('orderBasicData.firstLevel')
   },
   {
     value: 2,
-    label: '浜岀骇绫诲埆',
+    label: t('orderBasicData.towLevel'),
     children: []
   }
 ])
@@ -139,7 +139,7 @@
   submit.value.type = type
   request.post(`/basicGlassType/add`, submit.value).then(res => {
     if (res.code==='200') {
-      ElMessage.success('淇濆瓨鎴愬姛')
+      ElMessage.success(t('basicData.msg.saveSuccess'))
       router.push({
         path:'/main/orderBasicData/searchGlassType',
         query:{random:Math.random()
@@ -188,8 +188,8 @@
           <el-input v-model="submit.value"/>
       </el-row>
       <el-row>
-        <el-button v-if="!rowIndex" @click="saveBasicData('add')"   type="primary">鏂板</el-button>
-        <el-button v-else @click="saveBasicData('update')" type="primary">淇敼</el-button>
+        <el-button v-if="!rowIndex" @click="saveBasicData('add')"   type="primary">{{ $t('basicData.insert') }}</el-button>
+        <el-button v-else @click="saveBasicData('update')" type="primary">{{ $t('basicData.update') }}</el-button>
       </el-row>
     </el-dialog>
 
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 876ceeb..1945d2c 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
@@ -93,11 +93,11 @@
       resetForm()
       ElMessage.success(t('basicData.msg.saveSuccess'))
     }else{
-      ElMessage.warning("淇濆瓨澶辫触")
+      ElMessage.warning(t('basicData.msg.saveFail'))
       router.push("/login")
     }
   }).catch((err)=>{
-    ElMessage.error('绯荤粺閿欒')
+    ElMessage.error(t('basicData.msg.ServerConnectionError'))
     router.push("/login")
   })
 
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 ef28f5f..072d87d 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
@@ -47,14 +47,14 @@
 
       request.post("/customer/deleteCustomer", flowData.value).then((res) => {
         if(res.code==200 && res.data===true){
-          ElMessage.success("鍒犻櫎鎴愬姛")
+          ElMessage.success(t('basicData.msg.deleteSuccess'))
           router.push({path:'/main/customer/selectCustomer',query:{random:Math.random()}})
         }else{
-          ElMessage.warning("鍒犻櫎澶辫触")
+          ElMessage.warning(t('basicData.msg.deleteFail'))
           router.push("/login")
         }
       }).catch((err)=>{
-        ElMessage.error('绯荤粺閿欒')
+        ElMessage.error(t('basicData.msg.ServerConnectionError'))
         router.push("/login")
       })
       break
@@ -261,8 +261,8 @@
                    v-if="userStore.user.permissions.indexOf('selectCustomer.edit') > -1"
                    link type="primary" size="small">{{$t('basicData.edit')}}</el-button>
         <el-button @click="getTableRow(row,'customerOrder')"
-                   link type="primary" size="small">瀹㈡埛璁㈠崟</el-button>
-        <el-popconfirm @confirm="getTableRow(row,'delete')" title="纭畾鍒犻櫎?">
+                   link type="primary" size="small">{{$t('customer.customerOrders')}}</el-button>
+        <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
           <template #reference>
             <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
           </template>
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 4af1184..cd94656 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
@@ -195,18 +195,18 @@
     {field: 'order.customerId',width:120,  title: t('customer.customerNumber')},
     {field: 'order.customerName',width:120,  title: t('customer.customerName')},
     {field: 'quantity',width:120,  title: t('order.quantity')},
-    {field: 'productId',width:120,  title: "浜у搧缂栧彿",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'productName',width:120,  title: "浜у搧鍚嶇О",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'shape',width:120,  title: "褰㈢姸",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'width',width:120,  title: "瀹藉害",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'height',width:120,  title: "楂樺害",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'productId',width:120,  title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'productName',width:120,  title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'shape',width:120,  title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'width',width:120,  title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'height',width:120,  title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'order.project',width:120,  title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'order.batch',width:120,  title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.money',width:120,   title: "璁㈠崟閲戦",filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.money',width:120,   title: t('customer.orderAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'area',width:120,  title: t('productStock.totalArea')},
     {field: 'order.orderType',width:120,  title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'order.salesman',width:120,  title:t('order.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.createTime',width:120,  title:"鍒涘缓鏃堕棿"},
+    {field: 'order.createTime',width:120,  title:t('basicData.creationTime')},
 
 
   ],//琛ㄥご鎸夐挳
@@ -270,8 +270,8 @@
     <el-date-picker
         v-model="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"
 
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 26027f3..6120917 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
@@ -264,8 +264,8 @@
     body: {
       options: [
         [
-          { code: 'copyChecked', name: '閫変腑鐩稿悓', prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
-          { code: 'otherMoney', name: '鍏朵粬閲戦', prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false }
+          { code: 'copyChecked', name: t('basicData.selectSame'), prefixIcon: 'vxe-icon-copy', visible: true, disabled: false },
+          { code: 'otherMoney', name: t('basicData.otherAmounts'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false }
         ]
       ]
     }
@@ -400,11 +400,11 @@
                ElMessage.success(t('delivery.deliveryNoteSubmittedSuccessfully'))
                router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
              }else{
-               ElMessage.warning("淇濆瓨澶辫触")
+               ElMessage.warning(t('basicData.msg.saveFail'))
                router.push("/login")
              }
            }).catch((err)=>{
-             ElMessage.error('绯荤粺閿欒')
+             ElMessage.error(t('basicData.msg.ServerConnectionError'))
              router.push("/login")
            })
           break
@@ -420,11 +420,11 @@
               ElMessage.success(t('basicData.msg.ReviewSuccess'))
               router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
             } else {
-              ElMessage.warning("瀹℃牳澶辫触")
+              ElMessage.warning(t('basicData.msg.reviewFail'))
               router.push("/login")
             }
           }).catch((err)=>{
-            ElMessage.error('绯荤粺閿欒')
+            ElMessage.error(t('basicData.msg.ServerConnectionError'))
             router.push("/login")
           })
           break
@@ -440,11 +440,11 @@
               ElMessage.success(t('basicData.msg.cancelReviewSuccess'))
               router.push({path: '/main/delivery/selectDelivery', query:{random:Math.random()}})
             } else {
-              ElMessage.warning("瀹℃牳澶辫触")
+              ElMessage.warning(t('basicData.msg.reviewFail'))
               router.push("/login")
             }
           }).catch((err)=>{
-            ElMessage.error('绯荤粺閿欒')
+            ElMessage.error(t('basicData.msg.ServerConnectionError'))
             router.push("/login")
           })
           break
@@ -661,7 +661,7 @@
     </div>
 
     <el-dialog v-model="otherMoneyVisible"
-               :title="'鍏朵粬閲戦'"
+               :title="$t('basicData.otherAmounts')"
                :close-on-click-modal="false"
                :close-on-press-escape="false"
                :before-close="closeOtherMoneyDialog"
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue
index d43abee..24de4fc 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/Delivery.vue
@@ -32,15 +32,15 @@
         >
           <el-dropdown @command="handleCommand">
             <span class="el-dropdown-link" style="font-weight: 700;outline: none;">
-              鎶ヨ〃
+              {{$t('basicData.reportForms')}}
               <el-icon class="el-icon--right">
                 <arrow-down />
               </el-icon>
             </span>
             <template #dropdown>
               <el-dropdown-menu>
-                <el-dropdown-item command="/main/delivery/deliveryReport" >鍙戣揣鏄庣粏鎶ヨ〃</el-dropdown-item>
-                <el-dropdown-item command="/main/delivery/deliveryProductReport">鍙戣揣浜у搧鍒嗙被鎶ヨ〃</el-dropdown-item>
+                <el-dropdown-item command="/main/delivery/deliveryReport" >{{$t('delivery.shipmentDetailsReport')}}</el-dropdown-item>
+                <el-dropdown-item command="/main/delivery/deliveryProductReport">{{$t('delivery.shipmentProductClassificationReport')}}</el-dropdown-item>
               </el-dropdown-menu>
             </template>
           </el-dropdown>
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryProductReport.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryProductReport.vue
index 7d44a45..a9c1582 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryProductReport.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryProductReport.vue
@@ -3,40 +3,42 @@
 import BasicTable from "@/components/BasicTable.vue"
 import request from "@/utils/request"
 import { ref} from "vue"
+import {useI18n} from "vue-i18n";
 
+const { t } = useI18n()
 const childrenData = ref({
   columns:[
     {type:'expand',fixed:"left",width: 80},
-    {type: 'seq',fixed:"left", title: '鑷簭', width: 80 },
-    {field: 'deliveryId',width:120, title: '鍙戣揣鍗曞彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'deliveryNumber',width:120, title: '鍙戣揣搴忓彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderDetail.productId',width:120, title: '浜у搧缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderDetail.productName',width:120, title: '浜у搧鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.paymentTerms',width:120, title: '浠樻鏉′欢',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.project',width:140, title: '椤圭洰鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'quantity',width:120, title: '鏁伴噺', sortable: true},
-    {field: 'area',width:120, title: '闈㈢Н', sortable: true},
-    {field: 'money',width:120, title: '閲戦', sortable: true},
-    {field: 'delivery.customerId',width:120, title: '瀹㈡埛缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.customerName',width:120, title: '瀹㈡埛鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.deliveryDate',width:120, title: '閫佽揣鏃ユ湡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.payMethod',width:120, title: '鏀粯鏂瑰紡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.payDate',width:120, title: '鏀粯鏃ユ湡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.salesman',width:120, title: '閿�鍞憳',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.creator',width:120, title: '鍙戣揣鍛�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.contacts',width:120, title: '鑱旂郴浜�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.contactNumber',width:120, title: '鑱旂郴鐢佃瘽',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.deliveryAddress',width:150, title: '閫佽揣鍦板潃',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderId',width:120, title: '閿�鍞崟鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderNumber',width:120, title: '璁㈠崟搴忓彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'deliveryDetailRemakes',width:120, title: '澶囨敞',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'createTime',width:120, title: '鎶ヨ〃鏃ユ湡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
+    {field: 'deliveryId',width:120, title: t('delivery.deliveryNoteId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'deliveryNumber',width:120, title: t('delivery.deliveryNoteNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'orderDetail.productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'orderDetail.productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.paymentTerms',width:120, title: t('delivery.paymentTerms'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.project',width:140, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'quantity',width:120, title: t('order.quantity'), sortable: true},
+    {field: 'area',width:120, title: t('productStock.totalArea'), sortable: true},
+    {field: 'money',width:120, title: t('delivery.money'), sortable: true},
+    {field: 'delivery.customerId',width:120, title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.customerName',width:120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.deliveryDate',width:120, title: t('delivery.deliveryDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.payMethod',width:120, title: t('delivery.paymentMethod'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.payDate',width:120, title: t('delivery.deliveryDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.salesman',width:120, title: t('delivery.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.creator',width:120, title:  t('delivery.shipper'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.contacts',width:120, title: t('delivery.contacts'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.contactNumber',width:120, title: t('delivery.contactNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.deliveryAddress',width:150, title: t('delivery.shippingAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'orderId',width:120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'orderNumber',width:120, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'deliveryDetailRemakes',width:120, title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'createTime',width:120, title: t('basicData.reportData'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
 
   ],//琛ㄦ牸琛ㄥご瀛楁
   data:[],//琛ㄦ牸鏁版嵁
   url :'/Delivery/getSelectDeliveryDetailProductReport',
   exportUrl :'/Delivery/exportDeliveryDetailProductReport',
-  exportName:'鍙戣揣鏄庣粏浜у搧鍒嗙被鎶ヨ〃',
+  exportName:t('delivery.shipmentProductClassificationReport'),
   footList:['quantity','area','money']
 })
 
diff --git a/north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue b/north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue
index 94be7f0..f81ec2f 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/delivery/DeliveryReport.vue
@@ -3,38 +3,40 @@
 import BasicTable from "@/components/BasicTable.vue"
 import request from "@/utils/request"
 import { ref} from "vue"
+import {useI18n} from "vue-i18n";
 
+const { t } = useI18n()
 const childrenData = ref({
   columns:[
     {type:'expand',fixed:"left",width: 80},
-    {type: 'seq',fixed:"left", title: '鑷簭', width: 80 },
-    {field: 'deliveryId',width:120, title: '鍙戣揣鍗曞彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'deliveryNumber',width:120, title: '鍙戣揣搴忓彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.paymentTerms',width:120, title: '浠樻鏉′欢',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.project',width:140, title: '椤圭洰鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'quantity',width:120, title: '鏁伴噺',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'area',width:120, title: '闈㈢Н',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'money',width:120, title: '閲戦',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.customerId',width:120, title: '瀹㈡埛缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.customerName',width:120, title: '瀹㈡埛鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.deliveryDate',width:120, title: '閫佽揣鏃ユ湡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.payMethod',width:120, title: '鏀粯鏂瑰紡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.payDate',width:120, title: '鏀粯鏃ユ湡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.salesman',width:120, title: '閿�鍞憳',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.creator',width:120, title: '鍙戣揣鍛�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.contacts',width:120, title: '鑱旂郴浜�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.contactNumber',width:120, title: '鑱旂郴鐢佃瘽',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'delivery.deliveryAddress',width:150, title: '閫佽揣鍦板潃',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderId',width:120, title: '閿�鍞崟鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'orderNumber',width:120, title: '璁㈠崟搴忓彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'deliveryDetailRemakes',width:120, title: '澶囨敞',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'createTime',width:120, title: '鎶ヨ〃鏃ユ湡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
+    {field: 'deliveryId',width:120, title: t('delivery.deliveryNoteId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'deliveryNumber',width:120, title: t('delivery.deliveryNoteNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.paymentTerms',width:120, title: t('delivery.paymentTerms'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.project',width:140, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'quantity',width:120, title: t('order.quantity'), sortable: true},
+    {field: 'area',width:120, title: t('productStock.totalArea'), sortable: true},
+    {field: 'money',width:120, title: t('delivery.money'), sortable: true},
+    {field: 'delivery.customerId',width:120, title: t('customer.customerNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.customerName',width:120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.deliveryDate',width:120, title: t('delivery.deliveryDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.payMethod',width:120, title: t('delivery.paymentMethod'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.payDate',width:120, title: t('delivery.deliveryDate'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.salesman',width:120, title: t('delivery.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.creator',width:120, title:  t('delivery.shipper'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.contacts',width:120, title: t('delivery.contacts'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.contactNumber',width:120, title: t('delivery.contactNumber'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'delivery.deliveryAddress',width:150, title: t('delivery.shippingAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'orderId',width:120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'orderNumber',width:120, title: t('order.OrderNum'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'deliveryDetailRemakes',width:120, title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'createTime',width:120, title: t('basicData.reportData'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
 
   ],//琛ㄦ牸琛ㄥご瀛楁
   data:[],//琛ㄦ牸鏁版嵁
   url :'/Delivery/getSelectDeliveryDetailReport',
   exportUrl :'/Delivery/exportDeliveryDetailReport',
-  exportName:'鍙戣揣鏄庣粏鎶ヨ〃',
+  exportName:t('delivery.shipmentDetailsReport'),
   footList:['quantity','area','money']
 })
 
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 cc9e236..076aaa0 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
@@ -39,11 +39,11 @@
           ElMessage.success(t('searchOrder.msgDeleteSuccess'))
           router.push({path:'/main/delivery/selectDelivery',query:{random:Math.random()}})
         }else{
-          ElMessage.warning("鍒犻櫎澶辫触")
+          ElMessage.warning(t('basicData.msg.deleteFail'))
           router.push("/login")
         }
       }).catch((err)=>{
-        ElMessage.error('绯荤粺閿欒')
+        ElMessage.error(t('basicData.msg.ServerConnectionError'))
         router.push("/login")
       })
 
@@ -228,7 +228,7 @@
     body: {
       options: [
         [
-          { code: 'getProcessList', name: "鎵撳嵃", prefixIcon: 'vxe-icon-file-txt', visible: true}
+          { code: 'getProcessList', name: t('basicData.print'), prefixIcon: 'vxe-icon-file-txt', visible: true}
         ]
       ]
     }
@@ -291,8 +291,8 @@
     <el-date-picker
         v-model="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"
 
@@ -330,7 +330,7 @@
                    v-if="userStore.user.permissions.indexOf('selectDelivery.edit') > -1"
                    link type="primary" size="small">{{$t('basicData.edit')}}</el-button>
         <el-button @click="getTableRow(row,'printing')" :disabled="row.deliveryState!==2" link type="primary" size="small">鎵撳嵃</el-button>
-        <el-popconfirm @confirm="getTableRow(row,'delete')"  title="纭畾鍒犻櫎?">
+        <el-popconfirm @confirm="getTableRow(row,'delete')"  :title="$t('searchOrder.deleteConfirm')">
           <template #reference>
             <el-button :disabled="row.deliveryState===2" link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
           </template>
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 5a7d322..ac09b09 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
@@ -294,8 +294,8 @@
     <el-date-picker
         v-model="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"
 
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 b4ce726..47adeb3 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
@@ -29,7 +29,7 @@
 const xGrid = ref()
 let cellArea = ref()
 const shapeList = ref([
-    {label:'鏅舰',value:'1'}, {label:'寮傚舰',value:'2'}
+    {label:t('order.universalShape'),value:'1'}, {label:t('order.alien'),value:'2'}
 ])
 
 // 瀹氫箟琛ㄥご涓婁紶鏁版嵁
@@ -105,9 +105,9 @@
           { code: 'copyAll', name: t('basicData.sameAfterwards'), prefixIcon: 'vxe-icon-feedback', visible: true, disabled: false },
           { code: 'clearChecked', name: t('basicData.clearSelection'), prefixIcon: 'vxe-icon-indicator', visible: true, disabled: false },
           { code: 'computedMoney', name: t('basicData.calculateAmount'), prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: true },
-          { code: 'errorArea', name: '璇樊缁撶畻闈㈢Н', prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
-          { code: 'otherMoney', name: '鍏朵粬閲戦', prefixIcon: 'vxe-icon-chart-bar-x', visible: true, disabled: false },
-          { code: 'sizeCheck', name: '灏哄瀹℃牳', prefixIcon: 'vxe-icon-eye-fill', visible: true, disabled: true }
+          { 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: true }
         ]
       ]
     }
@@ -338,14 +338,17 @@
             )
             if(errorAreaList.length){
               ElMessageBox.confirm(
-                  `瀛樺湪
-                  ${errorAreaList.length}
-                  鏉$粨绠楀崟鐗囬潰绉皬浜�
-                  ${errorArea.value}鏄惁鎸夌収${errorArea.value}璁$畻`,
+                  /*t('order.msg.calculationAreaPrompt1')+
+                  ${errorAreaList.length}+
+                  t('order.msg.calculationAreaPrompt2')+
+                  ${errorArea.value}+
+                      t('order.msg.calculationAreaPrompt3')+
+                  ${errorArea.value}+*/
+                      t('order.msg.calculationAreaPrompt4'),
                   'Warning',
                   {
-                    confirmButtonText: '纭畾',
-                    cancelButtonText: '鍙栨秷',
+                    confirmButtonText: t('basicData.confirmButtonText'),
+                    cancelButtonText: t('basicData.cancelButtonText'),
                     type: 'warning',
                   }
               ).then(()=>{
@@ -864,7 +867,7 @@
   }
   const fullData = xGrid.value.getTableData().fullData
   if (!fullData.length){
-    ElMessage.warning("琛ㄦ牸涓棤浜у搧鏁版嵁")
+    ElMessage.warning(t('basicData.msg.noProductDataInTheTable'))
   }
   fullData.forEach((item,index) => {
     if( !isNaN(item.computeArea*1) && item.computeArea != null && item.computeArea*1 < errorArea.value){
@@ -919,7 +922,7 @@
   }
   const length = xGrid.value.getTableData().fullData.length
   if(length>maxTableLen.value){
-    ElMessage.warning('琛ㄦ牸鏁版嵁瓒呰繃鏈�澶ч檺鍒�')
+    ElMessage.warning(t('basicData.msg.tableDataExceedsMaximumLimit'))
     return
   }
   if(evnt.$event.keyCode === 13 ){
@@ -1011,8 +1014,8 @@
         <el-col  :span="2"><el-text>{{$t('order.calculateType')}}锛�</el-text></el-col>
         <el-col  :span="2">
           <el-select @change="changeCalculateType" v-model="titleUploadData.calculateType"   placeholder=" " >
-            <el-option :value="1" label="闈㈢Н閲戦锛堝崟鐗囷級"/>
-            <el-option :value="2" label="闈㈢Н閲戦锛堟�婚潰绉級"/>
+            <el-option :value="1" :label="t('order.areaAmountPerPiece')"/>
+            <el-option :value="2" :label="t('order.areaAmountAge')"/>
           </el-select>
         </el-col>
         <el-col  :span="2"><el-text>*{{$t('order.salesman')}}锛�</el-text></el-col>
@@ -1085,7 +1088,7 @@
           <vxe-button  @click="importEvent">{{$t('order.import')}}</vxe-button>
         </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>
         <template #shape_edit="{ row }">
           <vxe-select v-model="row.shape" transfer :options="shapeList"  placeholder=" "/>
@@ -1110,16 +1113,16 @@
         <el-col :span="10">
           <el-input
               v-model="errorArea"
-              :placeholder="'璇樊鍊�'"
+              :placeholder="$t('order.errorValue')"
           />
         </el-col>
         <el-col :span="6">
-          <el-button @click="errorAreaComputed">纭</el-button>
+          <el-button @click="errorAreaComputed">{{$t('basicData.confirmButtonText')}}</el-button>
         </el-col>
       </el-row>
     </el-dialog>
     <el-dialog v-model="otherMoneyVisible"
-               :title="'鍏朵粬閲戦'"
+               :title="$t('basicData.otherAmounts')"
                :close-on-click-modal="false"
                :close-on-press-escape="false"
                :before-close="closeOtherMoneyDialog"
@@ -1134,7 +1137,7 @@
     <el-dialog
         id="sizeCheck"
         v-model="sizeCheckVisible"
-       :title="'灏哄鏍¢獙'"
+       :title="$t('basicData.sizeReview')"
        :close-on-click-modal="false"
        :close-on-press-escape="false"
        style="width: 614px;height:445px "
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/Order.vue b/north-glass-erp/northglass-erp/src/views/sd/order/Order.vue
index 77fbfc8..13c3eee 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/Order.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/Order.vue
@@ -32,7 +32,7 @@
             >
           <el-dropdown @command="handleCommand">
             <span class="el-dropdown-link" style="font-weight: 700;outline: none;">
-              鎶ヨ〃
+              {{ $t('basicData.reportForms') }}
               <el-icon class="el-icon--right">
                 <arrow-down />
               </el-icon>
@@ -40,7 +40,7 @@
             <template #dropdown>
               <el-dropdown-menu>
                 <el-dropdown-item command="/main/order/orderReport" >{{ $t('order.orderReport') }}</el-dropdown-item>
-                <el-dropdown-item command="/main/order/orderProductSummaryReport">璁㈠崟鏄庣粏姹囨��</el-dropdown-item>
+                <el-dropdown-item command="/main/order/orderProductSummaryReport">{{ $t('order.orderDetailsSummary') }}</el-dropdown-item>
               </el-dropdown-menu>
             </template>
           </el-dropdown>
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/OrderProductSummaryReport.vue b/north-glass-erp/northglass-erp/src/views/sd/order/OrderProductSummaryReport.vue
index b348cea..3b517d4 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/OrderProductSummaryReport.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/OrderProductSummaryReport.vue
@@ -2,49 +2,54 @@
 import BasicTable from "@/components/BasicTable.vue"
 import { ref} from "vue"
 import request from "@/utils/request"
+import {useI18n} from "vue-i18n";
+
+const { t } = useI18n()
 const childrenData = ref({
   columns:[
     {type:'expand',fixed:"left",width: 80,slots: { content:'content' }},
-    {type: 'seq',fixed:"left", title: '鑷簭', width: 80 },
-    {field: 'order.orderType',width:120, title: '璁㈠崟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.customerName',width:120, title: '瀹㈡埛鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.project',width:120, title: '椤圭洰鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.orderId',width:120, title: '閿�鍞崟鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.batch',width:120, title: '鎵规',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'productId',width:120, title: '浜у搧缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'productName',width:120, title: '浜у搧鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
+    {field: 'order.orderType',width:120, title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.customerName',width:120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.project',width:120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.orderId',width:120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     //{field: 'orderNumber',width:120, title: '璁㈠崟搴忓彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     // {field: 'buildingNumber',width:120, title: '妤煎彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    //{field: 'width',width:120, title: '瀹�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    //{field: 'height',width:120, title: '楂�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'quantity',width:120, title: '鏁伴噺',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    //{field: 'bendRadius',width:120, title: '寮挗寮у害',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'grossArea',width:120, title: '瀹為檯闈㈢Н',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'computeGrossArea',width:150, title: '缁撶畻鎬婚潰绉�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    //{field: 'shape',width:120, title: '褰㈢姸',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    //{field: 'edgingType',width:120, title: '纾ㄨ竟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    //{field: 'order.processingNote',width:140, title: '涓诲姞宸ヨ姹�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    //{field: 'processingNote',width:120, title: '鍔犲伐瑕佹眰',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    //{field: 'order.remarks',width:120, title: '澶囨敞',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.icon',width:120, title: '鍟嗘爣閫夐」',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.packType',width:120, title: '鍖呰鏂瑰紡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    //{field: 'width',width:120, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    //{field: 'height',width:120, title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'quantity',width:120, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    //{field: 'bendRadius',width:120, title: t('order.bendRadius'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'grossArea',width:120, title: t('order.trueGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'computeGrossArea',width:150, title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    //{field: 'shape',width:120, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    //{field: 'edgingType',width:120, title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    //{field: 'order.processingNote',width:140, title: t('order.processingNotes'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    //{field: 'processingNote',width:120, title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    //{field: 'order.remarks',width:120, title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.icon',width:120, title: t('order.icon'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.packType',width:120, title: t('order.packType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     // {field: 'prodID',width:120, title: '宸ヨ壓娴佺▼',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'perimeter',width:120, title: '鍛ㄩ暱',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'price',width:120, title: '鍗曚环',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'grossAmount',width:120, title: '閲戦',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.alType',width:120, title: '閾濇潯鏂瑰紡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'perimeter',width:120, title: t('order.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'price',width:120, title: t('order.price'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'grossAmount',width:120, title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.alType',width:120, title: t('order.alType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     // {field: 'prodID',width:120, title: '璁㈠崟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.salesman',width:120, title: '涓氬姟鍛�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.deliveryAddress',width:120, title: '閫佽揣鍦板潃',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.creator',width:120, title: '鍒跺崟鍛�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'createTime',width:120, title: '寤虹珛鏃堕棿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'totalThickness',width:120, title: '鎬诲帤搴�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'levelOne',width:120, title: '浜у搧澶х被',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'levelTwo',width:120, title: '浜у搧灏忕被',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.customerBatch',width:120, title: '瀹㈡埛鎵规',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
+    {field: 'order.salesman',width:120, title: t('order.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.deliveryAddress',width:120, title: t('order.deliveryAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.creator',width:120, title: t('order.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'createTime',width:120, title: t('basicData.creationTime'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'totalThickness',width:120, title:t('order.totalThickness'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'levelOne',width:120, title: t('order.levelOne'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'levelTwo',width:120, title: t('order.levelTwo'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.customerBatch',width:120, title: t('order.customerBatch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
   ],//琛ㄦ牸琛ㄥご瀛楁
   data:[],//琛ㄦ牸鏁版嵁
   url :'/order/getOrderProductSummary',
+  exportUrl :'/order/getOrderProductSummary',
+  exportName:t('order.orderDetailsSummaryReport'),
   footList:['quantity','grossArea','computeGrossArea','perimeter','price','grossAmount']
 })
 
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue b/north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue
index c81a511..5906d3d 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/OrderReport.vue
@@ -2,51 +2,54 @@
 import BasicTable from "@/components/BasicTable.vue"
 import { ref} from "vue"
 import request from "@/utils/request"
+import {useI18n} from "vue-i18n";
+
+const { t } = useI18n()
 const childrenData = ref({
   columns:[
     {type:'expand',fixed:"left",width: 80,slots: { content:'content' }},
-    {type: 'seq',fixed:"left", title: '鑷簭', width: 80 },
-    {field: 'order.orderType',width:120, title: '璁㈠崟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.customerName',width:120, title: '瀹㈡埛鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.project',width:120, title: '椤圭洰鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.orderId',width:120, title: '閿�鍞崟鍙�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.batch',width:120, title: '鎵规',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'productId',width:120, title: '浜у搧缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'productName',width:120, title: '浜у搧鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
+    {field: 'order.orderType',width:120, title: t('order.orderType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.customerName',width:120, title: t('customer.customerName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.project',width:120, title: t('order.project'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.orderId',width:120, title: t('order.orderId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.batch',width:120, title: t('order.batch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'productId',width:120, title: t('order.productId'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'productName',width:120, title: t('order.product'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     {field: 'orderNumber',width:120, title: '璁㈠崟搴忓彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     // {field: 'buildingNumber',width:120, title: '妤煎彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'width',width:120, title: '瀹�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'height',width:120, title: '楂�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'quantity',width:120, title: '鏁伴噺',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'bendRadius',width:120, title: '寮挗寮у害',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'grossArea',width:120, title: '瀹為檯闈㈢Н',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'computeGrossArea',width:150, title: '缁撶畻鎬婚潰绉�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'shape',width:120, title: '褰㈢姸',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'edgingType',width:120, title: '纾ㄨ竟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.processingNote',width:140, title: '涓诲姞宸ヨ姹�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'processingNote',width:120, title: '鍔犲伐瑕佹眰',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.remarks',width:120, title: '澶囨敞',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.icon',width:120, title: '鍟嗘爣閫夐」',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.packType',width:120, title: '鍖呰鏂瑰紡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'width',width:120, title: t('order.width'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'height',width:120, title: t('order.height'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'quantity',width:120, title: t('order.quantity'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'bendRadius',width:120, title: t('order.bendRadius'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'grossArea',width:120, title: t('order.trueGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'computeGrossArea',width:150, title: t('order.computeGrossArea'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'shape',width:120, title: t('order.shape'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'edgingType',width:120, title: t('order.edgingType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.processingNote',width:140, title: t('order.processingNotes'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'processingNote',width:120, title: t('order.processingNote'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.remarks',width:120, title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.icon',width:120, title: t('order.icon'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.packType',width:120, title: t('order.packType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     // {field: 'prodID',width:120, title: '宸ヨ壓娴佺▼',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'perimeter',width:120, title: '鍛ㄩ暱',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'price',width:120, title: '鍗曚环',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'grossAmount',width:120, title: '閲戦',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.alType',width:120, title: '閾濇潯鏂瑰紡',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'perimeter',width:120, title: t('order.perimeter'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'price',width:120, title: t('order.price'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'grossAmount',width:120, title: t('order.grossAmount'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.alType',width:120, title: t('order.alType'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
     // {field: 'prodID',width:120, title: '璁㈠崟绫诲瀷',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.salesman',width:120, title: '涓氬姟鍛�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.deliveryAddress',width:120, title: '閫佽揣鍦板潃',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.creator',width:120, title: '鍒跺崟鍛�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'createTime',width:120, title: '寤虹珛鏃堕棿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'totalThickness',width:120, title: '鎬诲帤搴�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'levelOne',width:120, title: '浜у搧澶х被',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'levelTwo',width:120, title: '浜у搧灏忕被',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
-    {field: 'order.customerBatch',width:120, title: '瀹㈡埛鎵规',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
+    {field: 'order.salesman',width:120, title: t('order.salesman'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.deliveryAddress',width:120, title: t('order.deliveryAddress'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.creator',width:120, title: t('order.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'createTime',width:120, title: t('basicData.creationTime'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'totalThickness',width:120, title:t('order.totalThickness'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'levelOne',width:120, title: t('order.levelOne'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'levelTwo',width:120, title: t('order.levelTwo'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true},
+    {field: 'order.customerBatch',width:120, title: t('order.customerBatch'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: true}
   ],//琛ㄦ牸琛ㄥご瀛楁
   data:[],//琛ㄦ牸鏁版嵁
   url :'/order/getOrderReport',
   exportUrl :'/order/exportOrderReport',
-  exportName:'璁㈠崟鏄庣粏鎶ヨ〃',
+  exportName:t('order.orderDetailsReport'),
   footList:['quantity','grossArea','computeGrossArea','perimeter','price','grossAmount']
 })
 
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 933a586..80b1e18 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
@@ -433,19 +433,19 @@
                v-model="tabsValue"
                class="demo-tabs"
                style="width: 100%;height: 100%" >
-        <el-tab-pane label="璇︽儏" name="1" >
+        <el-tab-pane :label="$t('order.details')" name="1" >
           <order-detail
               v-if="tabsValue==='1'"
             :orderId="rowClickIndex===null?null:rowClickIndex.orderId"
           />
         </el-tab-pane>
-        <el-tab-pane label="宸ヨ壓 " name="2">
+        <el-tab-pane :label="$t('order.workmanship')" name="2">
           <order-craft-detail
               v-if="tabsValue==='2'"
               :orderId="rowClickIndex===null?null:rowClickIndex.orderId"
           />
         </el-tab-pane>
-        <el-tab-pane label="娴佺▼鍗�" name="3">
+        <el-tab-pane :label="$t('order.processCard')" name="3">
           <order-process
               v-if="tabsValue==='3'"
               :orderId="rowClickIndex===null?null:rowClickIndex.orderId"
diff --git a/north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue b/north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue
index 491ca8c..62da28a 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/order/UpdateOrderCraft.vue
@@ -14,7 +14,7 @@
 let dialogTableVisible = ref(false)
 let craftVisible = ref(false)
 const xGrid = ref()
-const trademarkLocation=ref(['宸︿笂','鍙充笂','宸︿笅','鍙充笅'])
+const trademarkLocation=ref([t('craft.upperLeft'),t('craft.upperRight'),t('craft.lowLeft'),t('craft.lowRight')])
 const gridOptions = reactive({
   border:  "full",//琛ㄦ牸鍔犺竟妗�
   keepSource: true,//淇濇寔婧愭暟鎹�
@@ -255,7 +255,7 @@
       tag3:true,
       xMargin:30,
       yMargin:30,
-      location:'宸︿笅'
+      location:t('craft.lowLeft')
   }
   if(row.icon!=null){
     trademarkAttr.value = JSON.parse(row.icon)
@@ -407,8 +407,8 @@
 
         <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
         <template #button_slot="{ row }">
-          <el-button @click="updateCraft(row)" link type="primary" size="small">{{t('craft.updateCraft')}}</el-button>
-          <el-button @click="updateTrademark(row)" link type="primary" size="small">淇敼鍟嗘爣</el-button>
+          <el-button @click="updateCraft(row)" link type="primary" size="small">{{$t('craft.updateCraft')}}</el-button>
+          <el-button @click="updateTrademark(row)" link type="primary" size="small">{{$t('craft.modifyTrademark')}}</el-button>
         </template>
 
         <template #num1_filter="{ column, $panel }">
@@ -466,14 +466,14 @@
     <el-dialog
         id="trademark"
         v-model="trademarkVisible"
-        :title="'鍟嗘爣鍙傛暟'"
+        :title="$t('craft.TrademarkAttribute')"
         :close-on-click-modal="false"
         :close-on-press-escape="false"
         style="width: 922px;height:443px ;
         position: relative;" >
       <div style="width: 50%;height: 100%;float: left">
         <el-row style="">
-          <el-col :span="4">鍟嗘爣閫夐」:</el-col>
+          <el-col :span="4">{{$t('craft.TrademarkOptions')}}:</el-col>
           <el-col :span="6">
             <el-select v-model="trademarkAttr.trademark"
                         >
@@ -483,7 +483,7 @@
         </el-row>
 
         <el-row>
-          <el-col :span="4">X杞撮暅鍍�:</el-col>
+          <el-col :span="4">{{$t('craft.xImage')}}:</el-col>
           <el-col :span="6">
             <el-select v-model="trademarkAttr.xImage">
               <el-option :value="true" :label="'鏄�'"/>
@@ -493,7 +493,7 @@
         </el-row>
 
         <el-row>
-          <el-col :span="4">Y杞撮暅鍍�:</el-col>
+          <el-col :span="4">{{$t('craft.yImage')}}:</el-col>
           <el-col :span="6">
             <el-select v-model="trademarkAttr.yImage">
               <el-option :value="true" :label="'鏄�'"/>
@@ -503,7 +503,7 @@
         </el-row>
 
         <el-row>
-          <el-col :span="4">鎵撴爣浣胯兘:</el-col>
+          <el-col :span="4">{{$t('craft.tag')}}:</el-col>
           <el-col :span="6">
             <el-select v-model="trademarkAttr.tag">
               <el-option :value="true" :label="'鏄�'"/>
@@ -513,7 +513,7 @@
         </el-row>
 
         <el-row>
-          <el-col :span="4">浜岀淮鐮佹墦鍗�1:</el-col>
+          <el-col :span="4">{{$t('craft.tag2')}}:</el-col>
           <el-col :span="6">
             <el-select v-model="trademarkAttr.tag2">
               <el-option :value="true" :label="'鏄�'"/>
@@ -523,7 +523,7 @@
         </el-row>
 
         <el-row>
-          <el-col :span="4">浜岀淮鐮佹墦鍗�2:</el-col>
+          <el-col :span="4">{{$t('craft.tag3')}}:</el-col>
           <el-col :span="6">
             <el-select v-model="trademarkAttr.tag3">
               <el-option :value="true" :label="'鏄�'"/>
@@ -533,21 +533,21 @@
         </el-row>
 
         <el-row>
-          <el-col :span="4">X杞磋竟璺�:</el-col>
+          <el-col :span="4">{{$t('craft.xMargin')}}:</el-col>
           <el-col :span="6">
             <el-input-number v-model="trademarkAttr.xMargin"/>
           </el-col>
         </el-row>
 
         <el-row>
-          <el-col :span="4">Y杞磋竟璺�:</el-col>
+          <el-col :span="4">{{$t('craft.yMargin')}}:</el-col>
           <el-col :span="6">
             <el-input-number v-model="trademarkAttr.yMargin"/>
           </el-col>
         </el-row>
 
         <el-row>
-          <el-col :span="4">鍟嗘爣浣嶇疆:</el-col>
+          <el-col :span="4">{{$t('craft.location')}}:</el-col>
           <el-col :span="25">
             <el-radio v-model="trademarkAttr.location" v-for="item in trademarkLocation" :label="item"  />
           </el-col>
@@ -562,7 +562,7 @@
       </div>
       <div style="width: 400px;height: 250px;border: 2px solid #000;float: left;position: relative;">
         <div
-            v-if="tagCheck('宸︿笂')"
+            v-if="tagCheck(t('craft.upperLeft'))"
             style="float: left;width: 60px;height: 60px;margin-left: 1rem">
           <el-row>
             <el-col :span="20"><el-image :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" src="/trademark.png"/></el-col>
@@ -578,7 +578,7 @@
         </div>
 
         <div
-            v-if="tagCheck('鍙充笂')"
+            v-if="tagCheck(t('craft.upperRight'))"
             style="float: right;width: 60px;height: 60px;margin-right: 1rem">
           <el-row>
             <el-col :span="20"><el-image  :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}" src="/trademark.png"/></el-col>
@@ -594,7 +594,7 @@
         </div>
 
         <div
-            v-if="tagCheck('宸︿笅')"
+            v-if="tagCheck(t('craft.lowLeft'))"
             style="width: 60px;height: 60px;margin-left: 1rem;float: left;position: absolute;bottom: 15px">
           <el-row>
             <el-col :span="20"><el-image :class="{'xStyle':trademarkAttr.xImage,'yStyle':trademarkAttr.yImage}"  src="/trademark.png"/></el-col>
@@ -610,7 +610,7 @@
         </div>
 
         <div
-            v-if="tagCheck('鍙充笅')"
+            v-if="tagCheck(t('craft.lowRight'))"
             style="width: 60px;height: 60px;position: absolute;bottom: 15px;right: 1rem">
           <el-row>
             <el-col :span="20">
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 6c2d584..64329bd 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
@@ -7,17 +7,18 @@
 import {useRouter,useRoute} from "vue-router"
 import GlassType from "@/components/sd/product/GlassType.vue"
 import useProductGlassTypeStore from "@/stores/sd/product/productGlassType"
-
+import {useI18n} from "vue-i18n";
+const { t } = useI18n()
 const router = useRouter()
 const route = useRoute()
 let  userInfo = useUserInfo()
 const disposeList = $ref([
-  '褰╅噳',
-  '钂欑爞',
-  '闀�鑶�',
-  '璐磋啘',
-  '鍠风爞',
-  '纾ㄨ竟'
+  t('product.coloredGlaze'),
+  t('product.frostedSand'),
+  t('product.coating'),
+  t('product.filmApplication'),
+  t('product.sandblasting'),
+  t('product.edgeGrinding')
 ])
 let BasicData = ref({
   stuffColor:null,
@@ -106,13 +107,13 @@
 
 const saveProduct = () => {
   if(productDetailList.value.length===0){
-    ElMessage.warning("璇锋坊鍔犱骇鍝佽鎯�")
+    ElMessage.warning(t('product.msg.productLength'))
     return
   }else if(productDetailList.value[productDetailList.value.length-1].detailType!=='glass'){
-    ElMessage.warning("浜у搧璇︽儏鏈�鍚庝竴鏉′笉鏄幓鐠冿紝璇峰畬鍠�")
+    ElMessage.warning(t('product.msg.lastGlass'))
     return
   }else if(productGlassTypeStore.GlassType[1]==='' || productGlassTypeStore.GlassType[1]===null){
-    ElMessage.warning("璇烽�夋嫨浜у搧绫诲埆")
+    ElMessage.warning(t('product.msg.glassType'))
     return
   }
   productTotal.value.typeId =  productGlassTypeStore.GlassType[1]
@@ -141,7 +142,7 @@
   }
   request.post(`/product/saveProduct`,product).then((res) =>{
     if(res.code==200){
-      ElMessage.success("鍒涘缓鎴愬姛")
+      ElMessage.success(t('product.msg.saveSuccess'))
       router.push("/main/product/selectProduct")
     }
   })
@@ -151,11 +152,11 @@
 const updateProductState =  (state) => {
   request.post(`/product/updateProductStateById/${productTotal.value.id}/${state}`).then((res) =>{
     if(res.code==200){
-      ElMessage.success("鎿嶄綔鎴愬姛")
+      ElMessage.success(t('product.msg.operateSuccess'))
       //router.go(0)
       router.push({path:'/main/product/createProduct',query:{id:productTotal.value.id,random:Math.random()}})
     }else{
-      ElMessage.error("鎿嶄綔澶辫触")
+      ElMessage.error(t('product.msg.operateFail'))
     }
   })
 }
@@ -176,7 +177,7 @@
   })
   let rege = /^\s*$/
   if(rege.test(childName) || processChecked.value.length===0){
-    ElMessage.warning('璇疯緭鍏ヤ骇鍝佹潗鏂欏睘鎬т笌宸ヨ壓灞炴��')
+    ElMessage.warning(t('product.msg.glassReview'))
     return
   }
   let productDetail = {
@@ -190,7 +191,7 @@
       productDetailList.value.push(productDetail)
     }else{
       if (productDetailList.value[productDetailList.value.length-1].detailType === 'glass') {
-        ElMessage.warning('璇峰厛閫夋嫨闂撮殧鐗�')
+        ElMessage.warning(t('product.msg.glassRepeat'))
         return
       }
       productDetailList.value.push(productDetail)
@@ -209,7 +210,7 @@
   try {
     Object.keys(hollowBasic.value).forEach((item, index) => {
       if (hollowBasic.value[item] === '') {
-        throw new Error("璇烽�夋嫨鍏ㄩ儴涓┖闂撮殧鐗╀笅鎷夋")
+        throw new Error(t('product.msg.HollowReview'))
       }
       childName += hollowBasic.value[item]
     })
@@ -225,10 +226,10 @@
   }
   if(hollowFlag.value.flag){
     if (productDetailList.value.length ===0) {
-      ElMessage.warning('璇峰厛閫夋嫨浜у搧')
+      ElMessage.warning(t('product.msg.firstGlass'))
       return
     }else if(productDetailList.value[productDetailList.value.length-1].detailType !== 'glass'){
-      ElMessage.warning('璇峰厛閫夋嫨浜у搧')
+      ElMessage.warning(t('product.msg.firstGlass'))
       return
     }
     productDetailList.value.push(Object.assign({},hollowDetail))
@@ -246,7 +247,7 @@
   try {
     Object.keys(InterlayerBasic.value).forEach((item, index) => {
       if (InterlayerBasic.value[item] === '') {
-        throw new Error("璇烽�夋嫨鍏ㄩ儴涓┖闂撮殧鐗╀笅鎷夋")
+        throw new Error(t('product.msg.InterlayerReview'))
       }
       childName += InterlayerBasic.value[item]
     })
@@ -261,10 +262,10 @@
   }
   if(InterlayerFlag.value.flag){
     if (productDetailList.value.length ===0) {
-      ElMessage.warning('璇峰厛閫夋嫨浜у搧')
+      ElMessage.warning(t('product.msg.firstGlass'))
       return
     }else if(productDetailList.value[productDetailList.value.length-1].detailType !== 'glass'){
-      ElMessage.warning('璇峰厛閫夋嫨浜у搧')
+      ElMessage.warning(t('product.msg.firstGlass'))
       return
     }
     productDetailList.value.push(Object.assign({},InterlayerDetail))
@@ -420,12 +421,12 @@
       <div class="line"/>
 
       <div class="glass-type">
-        <h5>鏉愭枡灞炴��</h5>
+        <h5>{{ $t('product.msg.glassTypeTitle') }}</h5>
         <el-row :gutter="50">
 <!--          <el-col :span="6"></el-col>-->
           <el-col :span="4">
             <div class="grid-content ep-bg-purple" >
-              <el-select v-model="stuff.thickness" size="small" clearable placeholder="*鍘氬害:" >
+              <el-select v-model="stuff.thickness" size="small" clearable :placeholder="$t('product.msg.thickness')" >
                 <el-option v-for="item in BasicData.stuffThickness"
                            :key="item.id"
                            :label="item.basicName"
@@ -436,7 +437,7 @@
           </el-col>
           <el-col :span="5">
             <div class="grid-content ep-bg-purple" >
-              <el-select v-model="stuff.color" size="small" clearable placeholder="*棰滆壊:"  filterable>
+              <el-select v-model="stuff.color" size="small" clearable :placeholder="$t('product.msg.color')"  filterable>
                 <el-option v-for="item in BasicData.stuffColor"
                            :key="item.id"
                            :label="item.basicName"
@@ -447,7 +448,7 @@
           </el-col>
           <el-col :span="4">
             <div class="grid-content ep-bg-purple" >
-              <el-select v-model="stuff.craft" size="small" clearable placeholder="*宸ヨ壓灞炴��:" >
+              <el-select v-model="stuff.craft" size="small" clearable :placeholder="$t('product.msg.craft')" >
                 <el-option v-for="item in BasicData.stuffCraft"
                            :key="item.id"
                            :label="item.basicName"
@@ -458,7 +459,7 @@
           </el-col>
           <el-col :span="4">
             <div class="grid-content ep-bg-purple" >
-              <el-select v-model="stuff.position" size="small"  clearable placeholder="浣嶇疆:" >
+              <el-select v-model="stuff.position" size="small"  clearable :placeholder="$t('product.msg.location')" >
                 <el-option v-for="item in BasicData.stuffPosition"
                            :key="item.id"
                            :label="item.basicName"
@@ -469,7 +470,7 @@
           </el-col>
           <el-col :span="6">
             <div class="grid-content ep-bg-purple" >
-              <el-select v-model="stuff.lowE" size="small"  clearable placeholder="LOW-E闈�:" >
+              <el-select v-model="stuff.lowE" size="small"  clearable :placeholder="$t('product.msg.lowELocation')" >
                 <el-option v-for="item in BasicData.stuffLowE"
                            :key="item.id"
                            :label="item.basicName"
@@ -483,7 +484,7 @@
 
       <div class="line"/>
       <div class="glass-process">
-        <h5>宸ヨ壓灞炴��</h5>
+        <h5>{{ $t('product.msg.processAttribute') }}</h5>
         <el-checkbox
             v-model="processChecked"
             v-for="item in BasicData.process"
@@ -498,7 +499,7 @@
               v-model="hollowBasic.thickness"
               size="small"
               style="width: 100px"
-              clearable placeholder="*涓┖鍘氬害:" >
+              clearable :placeholder="$t('product.msg.hollowThickness')" >
             <el-option v-for="item in BasicData.hollowThickness"
                        :key="item.id"
                        :label="item.basicName"
@@ -509,7 +510,7 @@
               v-model="hollowBasic.gasType"
               size="small"
               style="width: 100px"
-              clearable placeholder="*鍏呮皵鏂瑰紡:" >
+              clearable :placeholder="$t('product.msg.hollowGasType')" >
             <el-option v-for="item in BasicData.hollowGasType"
                        :key="item.id"
                        :label="item.basicName"
@@ -520,7 +521,7 @@
               v-model="hollowBasic.Type"
               size="small"
               style="width: 100px"
-              clearable placeholder="*灏佽兌:" >
+              clearable :placeholder="$t('product.msg.hollowType')" >
             <el-option v-for="item in BasicData.hollowType"
                        :key="item.id"
                        :label="item.basicName"
@@ -531,7 +532,7 @@
               v-model="hollowBasic.GlueDepth"
               size="small"
               style="width: 100px"
-              clearable placeholder="*榛樿鑳舵繁:" >
+              clearable :placeholder="$t('product.msg.hollowGlueDepth')" >
             <el-option v-for="item in BasicData.hollowGlueDepth"
                        :key="item.id"
                        :label="item.basicName"
@@ -543,20 +544,20 @@
               @click="addHollow"
               size="small"
               type="primary"
-              round>涓┖闂撮殧鐗�</el-button>
+              round>{{ $t('product.msg.hollow') }}</el-button>
           <el-button
               v-else
               @click="updateHollowSure"
               size="small"
               type="primary"
-              round>涓┖闂撮殧鐗╀慨鏀�</el-button>
+              round>{{ $t('product.msg.hollowUpdate') }}</el-button>
         </div>
         <div class="glass-spacer-zk">
           <el-select
               v-model="InterlayerBasic.thickness"
               size="small"
               style="width: 100px"
-              clearable placeholder="*澶瑰眰鍘氬害:" >
+              clearable :placeholder="$t('product.msg.interlayerThickness')" >
             <el-option v-for="item in BasicData.InterlayerThickness"
                        :key="item.id"
                        :label="item.basicName"
@@ -567,7 +568,7 @@
               v-model="InterlayerBasic.type"
               size="small"
               style="width: 100px"
-              clearable placeholder="*绫诲瀷:" >
+              clearable :placeholder="$t('product.msg.interlayerType')" >
             <el-option v-for="item in BasicData.InterlayerType"
                        :key="item.id"
                        :label="item.basicName"
@@ -578,7 +579,7 @@
               v-model="InterlayerBasic.color"
               size="small"
               style="width: 100px"
-              clearable placeholder="*棰滆壊:" >
+              clearable :placeholder="$t('product.msg.interlayerColor')">
             <el-option v-for="item in BasicData.InterlayerColor"
                        :key="item.id"
                        :label="item.basicName"
@@ -591,14 +592,14 @@
               size="small"
               type="primary"
               style="margin-left: 100px"
-              round>澶瑰眰闂撮殧鐗�</el-button>
+              round>{{ $t('product.msg.interlayer') }}</el-button>
           <el-button
               v-else
               @click="updateInterlayerSure"
               size="small"
               type="primary"
               style="margin-left: 100px"
-              round>澶瑰眰闂撮殧鐗╀慨鏀�</el-button>
+              round>{{ $t('product.msg.interlayerUpdate') }}</el-button>
         </div>
       </div>
       <div class="line"/>
@@ -607,7 +608,7 @@
           <el-row :gutter="20">
             <el-col :span="5">
               <div class="grid-content ep-bg-purple" >
-                <el-text class="mx-1"  style="margin-left: 0.5rem" >鍗曠墖鐜荤拑灞炴�э細</el-text>
+                <el-text class="mx-1"  style="margin-left: 0.5rem" >{{ $t('product.msg.glassAttribute') }}锛�</el-text>
               </div>
             </el-col>
             <el-col :span="13">
@@ -621,7 +622,7 @@
                     @click="reset"
                     size="small"
                     type="primary"
-                    round>閲嶇疆</el-button>
+                    round>{{ $t('product.msg.reset') }}</el-button>
               </div>
             </el-col>
           </el-row>
@@ -630,7 +631,7 @@
           <el-row :gutter="20">
             <el-col :span="5">
               <div class="grid-content ep-bg-purple" >
-                <el-text class="mx-1"  style="margin-left: 0.5rem"  >宸ヨ壓娴佺▼灞炴�э細</el-text>
+                <el-text class="mx-1"  style="margin-left: 0.5rem"  >{{ $t('product.msg.processFlowAttribute') }}锛�</el-text>
               </div>
             </el-col>
             <el-col :span="13">
@@ -644,12 +645,12 @@
                     @click="glassSure"
                     size="small"
                     type="primary"
-                    round>纭</el-button>
+                    round>{{ $t('product.msg.sure') }}</el-button>
                 <el-button v-else
                            @click="updateGlassSure"
                            size="small"
                            type="primary"
-                           round>淇敼</el-button>
+                           round>{{ $t('product.msg.update') }}</el-button>
               </div>
             </el-col>
           </el-row>
@@ -661,7 +662,7 @@
             <div class="grid-content ep-bg-purple" >
               <el-text class="mx-1"
                        style="margin-left: 0.5rem;text-align: center">
-                蹇�熸煡璇細
+                {{ $t('product.msg.quickSearch') }}锛�
               </el-text>
               <el-input v-model="productTotal.query" size="small" disabled  />
             </div>
@@ -670,7 +671,7 @@
             <div class="grid-content ep-bg-purple" >
               <el-text class="mx-1"
                        style="margin-left: 0.5rem;text-align: center">
-                璁¢噸鍘氬害锛�
+                {{ $t('product.msg.weightThickness') }}锛�
               </el-text>
               <el-input v-model="productTotal.thickness" size="small" disabled  />
             </div>
@@ -679,7 +680,7 @@
             <div class="grid-content ep-bg-purple" >
               <el-text class="mx-1"
                        style="margin-left: 0.5rem;text-align: center">
-                鍘氬害锛�
+                {{ $t('product.msg.allThickness') }}锛�
               </el-text>
               <el-input v-model="productTotal.totalThickness"  size="small" disabled  />
             </div>
@@ -688,7 +689,7 @@
             <div class="grid-content ep-bg-purple" >
               <el-text class="mx-1"
                        style="margin-left: 0.5rem;text-align: center">
-                澶囨敞锛�
+                {{ $t('product.msg.remarks') }}锛�
               </el-text>
               <el-input v-model="productTotal.remarks"  size="small"   />
             </div>
@@ -707,7 +708,7 @@
         <el-row >
           <el-col :span="4">
             <div class="grid-content ep-bg-purple" >
-              <el-text class="mx-1" size="large"  >浜у搧鍚嶇О锛�</el-text>
+              <el-text class="mx-1" size="large"  >{{ $t('product.msg.product') }}锛�</el-text>
             </div>
           </el-col>
           <el-col :span="20">
@@ -724,19 +725,19 @@
             <el-button
                 @click = "updateGlass(index)"
                 size="small"
-                type="primary">淇敼鐜荤拑</el-button>
+                type="primary">{{ $t('product.msg.updateGlass') }}</el-button>
           </el-col>
           <el-col :span="4" v-show="item.detailType === 'Interlayer'">
             <el-button
                 @click = "updateInterlayer(index)"
                 size="small"
-                type="primary">淇敼澶瑰眰</el-button>
+                type="primary">{{ $t('product.msg.updateHollow') }}</el-button>
           </el-col>
           <el-col :span="4" v-show="item.detailType === 'hollow'">
             <el-button
                 @click = "updateHollow(index)"
                 size="small"
-                type="primary">淇敼涓┖</el-button>
+                type="primary">{{ $t('product.msg.updateInterlayer') }}</el-button>
           </el-col>
           <el-col :span="16">
             <el-input
@@ -750,7 +751,7 @@
             <el-button
                 @click="deleteProductDetail(index)"
                 size="small"
-                type="primary">鍒犻櫎</el-button>
+                type="primary">{{ $t('product.msg.delete') }}</el-button>
           </el-col>
         </el-row>
 
@@ -762,7 +763,7 @@
           margin-right: 0.5rem;"
           size="large"
           type="primary"
-          round>{{productTotal.id?'淇敼':'鍒涘缓'}}</el-button>
+          round>{{productTotal.id?$t('product.msg.update'):$t('product.msg.create')}}</el-button>
       <el-button
           v-if="productTotal.state===0"
           @click="updateProductState(1)"
@@ -770,7 +771,7 @@
           margin-right: 0.5rem;"
           size="large"
           type="primary"
-          round>瀹℃牳</el-button>
+          round>{{ $t('product.msg.review') }}</el-button>
       <el-button
           v-else-if="productTotal.state===1"
           @click="updateProductState(0)"
@@ -778,7 +779,7 @@
           margin-right: 0.5rem;"
           size="large"
           type="primary"
-          round>鍙嶅</el-button>
+          round>{{ $t('product.msg.cancelReview') }}</el-button>
 
     </div>
 
diff --git a/north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue b/north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue
index 55a1ce0..7f650c2 100644
--- a/north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue
+++ b/north-glass-erp/northglass-erp/src/views/sd/product/SelectProduct.vue
@@ -11,6 +11,8 @@
 import Sortable from 'sortablejs'
 import BasicTable from '@/components/sd/product/BasicTable.vue'
 import {VXETable} from "vxe-table";
+import {useI18n} from "vue-i18n";
+const { t } = useI18n()
 let productGlassTypeStore = useProductGlassTypeStore()
 let router=useRouter()
 //鐩戝惉鐜荤拑绫诲瀷鏀瑰彉
@@ -156,10 +158,10 @@
       request.post(`/product/deleteProductById/${row.id}`).then((res) => {
         if(res.code==200){
           router.push({path:"/main/product/selectProduct",query:{random:Math.random()}})
-          ElMessage.success('鍒犻櫎鎴愬姛')
+          ElMessage.success(t('basicData.deleteSuccess'))
         }
       }).catch((err) => {
-        if(err==="600")ElMessage.warning("浜у搧宸插鏍�,鏃犳硶鍒犻櫎")
+        if(err==="600")ElMessage.warning(t('product.msg.theProductHasBeenReviewedAndCannotBeDeleted'))
       })
       break
     }
@@ -206,16 +208,16 @@
   },
   columns:[
     {type:'expand',fixed:"left",slots: { content:'content' },width: 60},
-    {title: '鎿嶄綔', width: 110, slots: { default: 'button_slot' },fixed:"left"},
-    {field:'state',title: '瀹℃牳', width: 40, slots: { default: 'state' }},
-    {type: 'seq',fixed:"left", title: '鑷簭', width: 80 },
-    {field: 'id', title: '缂栧彿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
-    {field: 'productName', title: '鍚嶇О',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
-    {field: 'basicGlassType.typeName', title: '鎵�灞炵被鍒�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
-    {field: 'query', title: '蹇�熸煡璇�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
-    {field: 'remarks', title: '澶囨敞',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
-    {field: 'creator', title: '鍒涘缓浜�',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
-    {field: 'createTime', title: '鍒涘缓鏃堕棿',filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false}
+    {title: t('basicData.operate'), width: 110, slots: { default: 'button_slot' },fixed:"left"},
+    {field:'state',title: t('basicData.review'), width: 40, slots: { default: 'state' }},
+    {type: 'seq',fixed:"left", title: t('basicData.Number'), width: 80 },
+    {field: 'id', title: t('basicData.number'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
+    {field: 'productName', title: t('product.productName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
+    {field: 'basicGlassType.typeName', title: t('product.typeName'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
+    {field: 'query', title: t('product.query'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
+    {field: 'remarks', title: t('basicData.remarks'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
+    {field: 'creator', title: t('product.creator'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false},
+    {field: 'createTime', title: t('basicData.creationTime'),filters:[{ data: '' }],slots: { filter: 'num1_filter' }, sortable: false}
   ],//琛ㄥご鍙傛暟
   data:null,//琛ㄦ牸鏁版嵁
   toolbarConfig: {
@@ -230,7 +232,7 @@
     return[
       columns.map((column, columnIndex) => {
         if (columnIndex === 0) {
-          return `${pageNum}/${pageTotal.value}`
+          return t('basicData.total')
         }
 
         return ''
@@ -317,7 +319,7 @@
       <el-button
           @click="getProduct"
           id="select"
-          type="primary" :icon="Search">鏌ヨ</el-button>
+          type="primary" :icon="Search">{{ $t('basicData.search') }}</el-button>
 
 
 
@@ -345,15 +347,15 @@
 
       <!--宸﹁竟鍥哄畾鏄剧ず鐨勬彃妲�-->
       <template #button_slot="{ row }" v-if="!props.rowIndex">
-        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">缂栬緫</el-button>
-        <el-popconfirm @confirm="getTableRow(row,'delete')" title="纭鍒犻櫎浜у搧?">
+        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{ $t('basicData.edit') }}</el-button>
+        <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
           <template #reference>
-            <el-button  link type="primary" size="small">鍒犻櫎</el-button>
+            <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
           </template>
         </el-popconfirm>
       </template>
       <template #button_slot="{ row }" v-else>
-        <el-button @click="emitParent(row)" link type="primary" size="small">娣诲姞</el-button>
+        <el-button @click="emitParent(row)" link type="primary" size="small">{{ $t('basicData.add') }}</el-button>
       </template>
 
       <template #num1_filter="{ column, $panel }">
diff --git a/north-glass-erp/northglass-erp/src/views/system/role/Role.vue b/north-glass-erp/northglass-erp/src/views/system/role/Role.vue
index e997f01..c070d0e 100644
--- a/north-glass-erp/northglass-erp/src/views/system/role/Role.vue
+++ b/north-glass-erp/northglass-erp/src/views/system/role/Role.vue
@@ -19,7 +19,7 @@
   <div id="main-div">
     <div id="div-title">
       <el-breadcrumb :separator-icon="ArrowRight">
-        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/role/roleList' }">瑙掕壊棣栭〉</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/role/roleList' }">{{$t('role.characterHomepage')}}</el-breadcrumb-item>
         <el-breadcrumb-item v-show="false" @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">{{$t('basicData.create')}}</el-breadcrumb-item>
       </el-breadcrumb>
     </div>
diff --git a/north-glass-erp/northglass-erp/src/views/system/role/RoleList.vue b/north-glass-erp/northglass-erp/src/views/system/role/RoleList.vue
index dd3fe99..f26c5f7 100644
--- a/north-glass-erp/northglass-erp/src/views/system/role/RoleList.vue
+++ b/north-glass-erp/northglass-erp/src/views/system/role/RoleList.vue
@@ -122,8 +122,8 @@
 onBeforeMount(()=>{
   let columns = [{title: t('basicData.operate'), width: 133, slots: { default: 'button_slot' }}]
   const columnName = {
-    id: 'ID',
-    role:'瑙掕壊'
+    id: t('role.id'),
+    role:t('role.role')
   }
   for (let columnNameKey in columnName) {
     let column = {field: columnNameKey,
@@ -143,10 +143,10 @@
       }
   ]
   const columnNameP = {
-    id: 'ID',
-    menu: '鑿滃崟',
-    page:'椤甸潰',
-    permission:'鏉冮檺'
+    id: t('role.id'),
+    menu: t('role.menu'),
+    page:t('role.page'),
+    permission:t('role.permission')
   }
   for (let columnNameKey in columnNameP) {
     let column = {field: columnNameKey,
@@ -213,11 +213,11 @@
   //   return
   // }
   ElMessageBox.confirm(
-      '纭淇敼瑙掕壊鏉冮檺?',
+      t('role.ConfirmModifyingRolePermissions'),
       'Warning',
       {
-        confirmButtonText: '纭',
-        cancelButtonText: '鍙栨秷',
+        confirmButtonText: t('basicData.confirmButtonText'),
+        cancelButtonText: t('basicData.cancelButtonText'),
         type: 'warning',
       }
   ).then(() => {
@@ -229,22 +229,22 @@
     }
     request.post(`/permissionRole/savePermissionRole`,permission).then(res=>{
       if(res.data=== true && res.code==='200'){
-        ElMessage.success('淇濆瓨鎴愬姛')
+        ElMessage.success(t('basicData.msg.saveSuccess'))
         dialogVisible.value = false
         getPermissionList()
       }else{
-        ElMessage.error('淇濆瓨澶辫触')
+        ElMessage.error(t('basicData.msg.saveFail'))
       }
     })
   })
 }
 
 const addRole = () =>{
-  ElMessageBox.prompt('璇疯緭鍏ユ柊瑙掕壊', '鏂板瑙掕壊', {
-    confirmButtonText: '纭畾',
-    cancelButtonText: '鍙栨秷',
+  ElMessageBox.prompt(t('role.PleaseEnterANewRole'), t('role.AddANewRole'), {
+    confirmButtonText: t('basicData.confirmButtonText'),
+    cancelButtonText: t('basicData.cancelButtonText'),
     inputPattern:/^.{1,255}$/,
-    inputErrorMessage: '涓嶈兘涓虹┖涓旈暱搴︿笉鑳借秴杩�255',
+    inputErrorMessage: t('role.CannotBeEmptyAndTheLengthCannotExceed255'),
   })
     .then(({ value }) => {
       const role= {
@@ -252,10 +252,10 @@
       }
       request.post("/role/add",role).then(res=>{
         if(res.code==='200' && res.data===true){
-          ElMessage.success('鏂板鎴愬姛')
+          ElMessage.success(t('basicData.msg.saveSuccess'))
           router.push({path:'/main/role/roleList',query:{random:Math.random()}})
         }else{
-          ElMessage.error('鏂板澶辫触')
+          ElMessage.error(t('basicData.msg.saveFail'))
         }
       })
     })
@@ -276,7 +276,7 @@
           @click="addRole"
           status='primary'
           style="margin-right: 1rem"
-      >瑙掕壊鏂板</vxe-button>
+      >{{$t('role.roleAdd')}}</vxe-button>
       </template>
 
 
@@ -289,7 +289,7 @@
       </template>
 
       <template #button_slot="{ row }">
-        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">瑙掕壊鏉冮檺</el-button>
+        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{$t('role.rolePermissions')}}</el-button>
       </template>
     </vxe-grid>
 
@@ -297,7 +297,7 @@
         v-model="dialogVisible"
         @open="getPermissionList"
         style="height: 70%;width: 70%"
-        title="鏉冮檺閫夋嫨">
+        :title="$t('role.permissionSelection')">
       <vxe-grid
           height="100%"
           class="mytable-scrollbar"
@@ -317,7 +317,7 @@
               @click="saveBatch"
               status='primary'
               style="margin-right: 1rem"
-          >淇濆瓨</vxe-button>
+          >{{$t('basicData.save')}}</vxe-button>
         </template>
 
       </vxe-grid>
diff --git a/north-glass-erp/northglass-erp/src/views/system/user/User.vue b/north-glass-erp/northglass-erp/src/views/system/user/User.vue
index 21d0c98..0b2dd67 100644
--- a/north-glass-erp/northglass-erp/src/views/system/user/User.vue
+++ b/north-glass-erp/northglass-erp/src/views/system/user/User.vue
@@ -19,7 +19,7 @@
   <div id="main-div">
     <div id="div-title">
       <el-breadcrumb :separator-icon="ArrowRight">
-        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/user/userList' }">鐢ㄦ埛棣栭〉</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/user/userList' }">{{$t('user.userHomepage')}}</el-breadcrumb-item>
         <el-breadcrumb-item v-show="false" @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">{{$t('basicData.create')}}</el-breadcrumb-item>
       </el-breadcrumb>
     </div>
diff --git a/north-glass-erp/northglass-erp/src/views/system/user/UserList.vue b/north-glass-erp/northglass-erp/src/views/system/user/UserList.vue
index 270e282..d394c9c 100644
--- a/north-glass-erp/northglass-erp/src/views/system/user/UserList.vue
+++ b/north-glass-erp/northglass-erp/src/views/system/user/UserList.vue
@@ -60,12 +60,12 @@
 onBeforeMount(()=>{
   let columns = [{title: t('basicData.operate'), width: 133, slots: { default: 'button_slot' }}]
   const columnName = {
-    loginName: '鐢ㄦ埛ID',
-    userName:'鐢ㄦ埛',
+    loginName: t('user.userId'),
+    userName:t('user.user'),
     // address:'鍦板潃',
     // phone:'鐢佃瘽',
-    role:'瑙掕壊',
-    createTime:'鍒涘缓鏃堕棿'
+    role:t('role.role'),
+    createTime:t('basicData.creationTime')
   }
   for (let columnNameKey in columnName) {
     let column = {field: columnNameKey,
@@ -156,7 +156,7 @@
       </template>
 
       <template #button_slot="{ row }">
-        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">璁剧疆瑙掕壊</el-button>
+        <el-button @click="getTableRow(row,'edit')" link type="primary" size="small">{{ $t('user.setUpRoles') }}</el-button>
         <el-popconfirm @confirm="getTableRow(row,'delete')" :title="$t('searchOrder.deleteConfirm')">
           <template #reference>
             <el-button  link type="primary" size="small">{{ $t('basicData.delete') }}</el-button>
@@ -180,9 +180,9 @@
       </span>
       <template #footer>
       <span class="dialog-footer">
-        <el-button @click="dialogVisible = false">鍙栨秷</el-button>
+        <el-button @click="dialogVisible = false">{{ $t('basicData.cancelButtonText') }}</el-button>
         <el-button type="primary" @click="roleUpdate">
-          纭
+          {{ $t('basicData.confirmButtonText') }}
         </el-button>
       </span>
       </template>
diff --git a/north-glass-erp/northglass-erp/src/views/system/userPassWord/UpdateUserPassWord.vue b/north-glass-erp/northglass-erp/src/views/system/userPassWord/UpdateUserPassWord.vue
index 1038ab2..2fdebf8 100644
--- a/north-glass-erp/northglass-erp/src/views/system/userPassWord/UpdateUserPassWord.vue
+++ b/north-glass-erp/northglass-erp/src/views/system/userPassWord/UpdateUserPassWord.vue
@@ -21,7 +21,7 @@
 
 const oldPassword = (rule: any, value: any, callback: any) => {
   if (value.trim() === '') {
-    callback(new Error('鏃у瘑鐮佷笉鑳戒负绌�'))
+    callback(new Error(t('user.OldPasswordCannotBeEmpty')))
   }else{
     callback()
   }
@@ -29,9 +29,9 @@
 
 const checkPassword = (rule: any, value: any, callback: any) => {
   if (value.trim() === '') {
-    callback(new Error('鏂板瘑鐮佷笉鑳戒负绌�'))
+    callback(new Error(t('user.TheNewPasswordCannotBeEmpty')))
   }else if(value.length>16 || value.length<6){
-    callback(new Error('瀵嗙爜闀垮害涓嶈兘浣庝簬6鎴栬秴杩�16'))
+    callback(new Error(t('user.ThePasswordLengthCannotBeLessThan6OrMoreThan16')))
   }else{
     callback()
   }
@@ -39,11 +39,11 @@
 
 const checkConfirmPassword = (rule: any, value: any, callback: any) => {
   if (value.trim() === '') {
-    callback(new Error('纭瀵嗙爜涓嶈兘涓虹┖'))
+    callback(new Error(t('user.ConfirmPasswordCannotBeEmpty')))
   }else if(value !== register.password){
-    callback(new Error('涓ゆ瀵嗙爜涓嶇浉鍚�'))
+    callback(new Error(t('user.ConfirmPasswordCannotBeEmpty')))
   }else if(value.length>16 || value.length<6){
-    callback(new Error('瀵嗙爜闀垮害涓嶈兘浣庝簬6鎴栬秴杩�16'))
+    callback(new Error(t('user.TheTwoPasswordsAreNotTheSame')))
   }else{
     callback()
   }
@@ -64,14 +64,14 @@
       register.oldPassword = btoa(register.oldPassword)
       request.post('/user/updatePassWord', register).then((res) => {
         if (res.data === true) {
-          ElMessage.success(`淇敼鎴愬姛`)
+          ElMessage.success(t('basicData.msg.saveSuccess'))
           router.push("/login")
         } else {
-          ElMessage.error('鏃у瘑鐮侀敊璇�')
+          ElMessage.error(t('user.OldPasswordError'))
           return false
         }
       }).catch(error => {
-        ElMessage.error("鏈嶅姟鍣ㄨ繛鎺ュけ璐�")
+        ElMessage.error(t('basicData.msg.ServerConnectionError'))
         return false
       })
     }
@@ -91,20 +91,20 @@
           status-icon
           :rules="rules"
       >
-        <el-form-item label="鏃у瘑鐮侊細" prop="oldPassword">
+        <el-form-item :label="$t('user.OldPassword')" prop="oldPassword">
           <el-input autocomplete="off" type="text" style="-webkit-text-security: disc"  v-model="register.oldPassword" />
         </el-form-item>
-        <el-form-item label="鏂板瘑鐮侊細" prop="password">
+        <el-form-item :label="$t('user.TheNewPassword')" prop="password">
           <el-input autocomplete="off" type="text" style="-webkit-text-security: disc" v-model="register.password" />
         </el-form-item>
-        <el-form-item label="纭瀵嗙爜锛�" prop="confirmPassword">
+        <el-form-item :label="$t('user.ConfirmPassword')" prop="confirmPassword">
           <el-input autocomplete="off" type="text" style="-webkit-text-security: disc" v-model="register.confirmPassword" />
         </el-form-item>
         <el-form-item >
           <el-button
               type="primary"
               @click="submitForm(ruleFormRef)"
-          >淇敼
+          >{{ $t('basicData.save') }}
           </el-button>
         </el-form-item>
       </el-form>
diff --git a/north-glass-erp/northglass-erp/src/views/system/userPassWord/UserPassWord.vue b/north-glass-erp/northglass-erp/src/views/system/userPassWord/UserPassWord.vue
index 79e0cc0..d23f922 100644
--- a/north-glass-erp/northglass-erp/src/views/system/userPassWord/UserPassWord.vue
+++ b/north-glass-erp/northglass-erp/src/views/system/userPassWord/UserPassWord.vue
@@ -19,7 +19,7 @@
   <div id="main-div">
     <div id="div-title">
       <el-breadcrumb :separator-icon="ArrowRight">
-        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/userPassWord/updateUserPassWord' }">淇敼瀵嗙爜</el-breadcrumb-item>
+        <el-breadcrumb-item @click="changeRouter(1)" :class="indexFlag===1?'indexTag':''" :to="{ path: '/main/userPassWord/updateUserPassWord' }">{{$t('user.changePassword')}}</el-breadcrumb-item>
         <el-breadcrumb-item v-show="false" @click="changeRouter(2)" :class="indexFlag===2?'indexTag':''" :to="{ path: '/main/order/createOrder' }">{{$t('basicData.create')}}</el-breadcrumb-item>
       </el-breadcrumb>
     </div>
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
index 54e284a..bd8896f 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProcessCardController.java
@@ -3,7 +3,6 @@
 import cn.dev33.satoken.annotation.SaCheckPermission;
 import com.example.erp.common.Constants;
 import com.example.erp.entity.pp.FlowCard;
-import com.example.erp.entity.pp.PrintSetup;
 import com.example.erp.entity.sd.DeliveryDetail;
 import com.example.erp.entity.sd.Order;
 import com.example.erp.common.Result;
@@ -219,11 +218,4 @@
         }
     }
 
-    @ApiOperation("鎵撳嵃鏍囩璁剧疆鏌ヨ")
-    @SaCheckPermission("PrintFlowCard.search")
-    @PostMapping  ("/printSetup")
-    public Result printSetup(@RequestBody PrintSetup printSetup){
-        return Result.seccess(flowCardService.printSetup(printSetup));
-
-    }
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProductionSchedulingController.java b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProductionSchedulingController.java
index 46ab80d..66a89fa 100644
--- a/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProductionSchedulingController.java
+++ b/north-glass-erp/src/main/java/com/example/erp/controller/pp/ProductionSchedulingController.java
@@ -37,35 +37,22 @@
     //鐐瑰嚮鏌ヨ鎺掔増鏁版嵁
     @ApiOperation("鐐瑰嚮鏌ヨ鎺掔増鏁版嵁鎺ュ彛")
     @SaCheckPermission("ProductionScheduling.search")
-    @PostMapping  ("/selectScheduling/{pageNum}/{pageSize}/{selectTime1}/{selectTime2}/{orderId}/{processes}/{state}")
+    @PostMapping  ("/selectScheduling/{pageNum}/{pageSize}/{selectTime1}/{selectTime2}/{orderIds}/{processes}/{state}")
     public Result selectScheduling(
             @PathVariable Integer pageNum,
             @PathVariable Integer pageSize,
             @PathVariable String selectTime1,
             @PathVariable String selectTime2,
-            @PathVariable String orderId,
+            @PathVariable String orderIds,
             @PathVariable String processes,
             @PathVariable Integer state,
             @RequestBody ProductionScheduling productionScheduling){
 
-        return Result.seccess(productionSchedulingService.selectSchedulingSv(pageNum, pageSize,selectTime1,selectTime2,orderId,processes,state,productionScheduling));
+        return Result.seccess(productionSchedulingService.selectSchedulingSv(pageNum, pageSize,selectTime1,selectTime2,orderIds,processes,state,productionScheduling));
 
     }
 
-    //鐐瑰嚮鏌ヨ鎺掔増鏁版嵁锛堝甫璁㈠崟鍙锋煡璇級
-    @ApiOperation("鏍规嵁鏉′欢鏌ヨ鎺掔増鏁版嵁鎺ュ彛")
-    @SaCheckPermission("ProductionScheduling.search")
-    @PostMapping  ("/selectSchedulingNot/{selectTime1}/{selectTime2}/{orderId}/{processes}/{state}")
-    public Result selectSchedulingNot(
-            @PathVariable String selectTime1,
-            @PathVariable String selectTime2,
-            @PathVariable String orderId,
-            @PathVariable String processes,
-            @PathVariable Integer state,
-            @RequestBody ProductionScheduling productionScheduling){
-        return Result.seccess(productionSchedulingService.selectSchedulingNotSv(selectTime1,selectTime2,orderId,processes,state,productionScheduling));
 
-    }
 
     //娣诲姞鎺掍骇鏁版嵁
     @ApiOperation("娣诲姞鎺掍骇鏁版嵁鎺ュ彛")
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/pp/PrintSetup.java b/north-glass-erp/src/main/java/com/example/erp/entity/pp/PrintSetup.java
deleted file mode 100644
index b4051c1..0000000
--- a/north-glass-erp/src/main/java/com/example/erp/entity/pp/PrintSetup.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package com.example.erp.entity.pp;
-
-import lombok.Data;
-
-import java.time.LocalDate;
-
-@Data
-public class PrintSetup {
-    //鑷id
-    private Integer id;
-    //鎵撳嵃鏍囩绫诲瀷
-    private String printType;
-    //鎵撳嵃鏍囩鍚嶇О
-    private String printTypeName;
-    //鐘舵��
-    private String printState;
-
-}
diff --git a/north-glass-erp/src/main/java/com/example/erp/entity/pp/ProductionScheduling.java b/north-glass-erp/src/main/java/com/example/erp/entity/pp/ProductionScheduling.java
index 1df4277..fabe09f 100644
--- a/north-glass-erp/src/main/java/com/example/erp/entity/pp/ProductionScheduling.java
+++ b/north-glass-erp/src/main/java/com/example/erp/entity/pp/ProductionScheduling.java
@@ -42,6 +42,7 @@
 
     private Double productionScheduledArea;
 
+    private  String reviewer;
 
     //澶栭敭璁㈠崟琛�
     private Order order;
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
index 1116f9b..aaa3210 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/FlowCardMapper.java
@@ -87,5 +87,4 @@
 
     Boolean printSortMp(String processId, Integer orderNumber, Integer technologyNumber, Integer sort);
 
-    List<Map<String, String>> selectPrintSetup(PrintSetup printSetup);
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ProductionSchedulingMapper.java b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ProductionSchedulingMapper.java
index b9298fe..905bf0c 100644
--- a/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ProductionSchedulingMapper.java
+++ b/north-glass-erp/src/main/java/com/example/erp/mapper/pp/ProductionSchedulingMapper.java
@@ -12,13 +12,9 @@
 public interface ProductionSchedulingMapper extends BaseMapper<ProductionScheduling> {
 
 
-    List<Map<String,String>> selectOkSchedulingMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, String processes, ProductionScheduling productionScheduling);
+    List<ProductionScheduling> selectOkSchedulingMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderIds, String processes, ProductionScheduling productionScheduling);
 
-    List<ProductionScheduling> selectNoSchedulingMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, String processes, ProductionScheduling  productionScheduling);
-
-    List<Map<String,String>> selectLastSchedulingMp(String selectTime1, String selectTime2,String processes,String orderId, ProductionScheduling productionScheduling);
-
-    List<Map<String,String>> selectSchedulingNotMp(String selectTime1, String selectTime2, String orderId, String processes, ProductionScheduling productionScheduling);
+    List<ProductionScheduling> selectNoSchedulingMp(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderIds, String processes, ProductionScheduling  productionScheduling);
 
     Integer selectMaxId();
 
@@ -32,5 +28,7 @@
 
     Map<String, Integer> getPageTotal(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, String processes, ProductionScheduling productionScheduling);
 
+    Map<String, Integer> getOkPageTotal(Integer offset, Integer pageSize, String selectTime1, String selectTime2, String orderId, String processes, ProductionScheduling productionScheduling);
+
 //    Integer selectNumberMp(String orderId, String orderNumber, String processes);
 }
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
index 37fa326..533d2f8 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/FlowCardService.java
@@ -16,10 +16,7 @@
 import org.springframework.stereotype.Service;
 
 import java.sql.Date;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import static com.example.erp.service.sd.OrderService.getOrderProcessDetails;
 
@@ -284,9 +281,7 @@
         return true;
     }
 
-    public Map<String, Object> printSetup(PrintSetup printSetup) {
-        Map<String, Object> map = new HashMap<>();
-        map.put("data", flowCardMapper.selectPrintSetup(printSetup));
-        return map;
-    }
+
 }
+
+
diff --git a/north-glass-erp/src/main/java/com/example/erp/service/pp/ProductionSchedulingService.java b/north-glass-erp/src/main/java/com/example/erp/service/pp/ProductionSchedulingService.java
index c9783e5..2517b30 100644
--- a/north-glass-erp/src/main/java/com/example/erp/service/pp/ProductionSchedulingService.java
+++ b/north-glass-erp/src/main/java/com/example/erp/service/pp/ProductionSchedulingService.java
@@ -22,12 +22,12 @@
     ProductionSchedulingMapper productionSchedulingMapper;
 
     //鏈帓浜ф煡璇�
-    public Map<String, Object> selectSchedulingSv(Integer pageNum, Integer pageSize, String selectTime1, String selectTime2, String orderId, String processes, Integer state, ProductionScheduling productionScheduling ) {
+    public Map<String, Object> selectSchedulingSv(Integer pageNum, Integer pageSize, String selectTime1, String selectTime2, String orderIds, String processes, Integer state, ProductionScheduling productionScheduling ) {
 
         Integer offset = (pageNum - 1) * pageSize;
         Map<String, Object> map = new HashMap<>();
-        if("null".equals(orderId)){
-            orderId="";
+        if("null".equals(orderIds)){
+            orderIds="";
         }
         if ("null".equals(processes)){
 
@@ -35,12 +35,14 @@
         }
 
         if (state==2){//宸叉帓浜�
-            map.put("data", productionSchedulingMapper.selectOkSchedulingMp(offset, pageSize,selectTime1, selectTime2,orderId,processes, productionScheduling));
+            map.put("data", productionSchedulingMapper.selectOkSchedulingMp(offset, pageSize,selectTime1, selectTime2,orderIds,processes, productionScheduling));
+            map.put("total", productionSchedulingMapper.getOkPageTotal(offset, pageSize,selectTime1, selectTime2,orderIds,processes, productionScheduling));
 
         }else if (state==1){//鏈帓浜�
-            map.put("data", productionSchedulingMapper.selectNoSchedulingMp(offset, pageSize,selectTime1, selectTime2,orderId,processes, productionScheduling));
+            map.put("data", productionSchedulingMapper.selectNoSchedulingMp(offset, pageSize,selectTime1, selectTime2,orderIds,processes, productionScheduling));
+            map.put("total", productionSchedulingMapper.getPageTotal(offset, pageSize,selectTime1, selectTime2,orderIds,processes, productionScheduling));
+
         }
-        map.put("total", productionSchedulingMapper.getPageTotal(offset, pageSize,selectTime1, selectTime2,orderId,processes, productionScheduling));
         return map;
     }
 
@@ -48,24 +50,11 @@
     //棣栨鏌ヨ鎺掍骇鏁版嵁
     public Map<String, Object> selectLastScheduling(String selectTime1, String selectTime2,String processes,String orderId,ProductionScheduling productionScheduling ) {
         Map<String, Object> map = new HashMap<>();
-        if("null".equals(orderId)){
-            orderId="";
-        }
-        if ("null".equals(processes)){
-
-            processes="";
-        }
-        map.put("data", productionSchedulingMapper.selectLastSchedulingMp(selectTime1, selectTime2,processes,orderId, productionScheduling));
         map.put("process", productionSchedulingMapper.selectProcess());
         return map;
     }
 
-    //甯﹁鍗曞彿鏌ヨ
-    public Map<String, Object> selectSchedulingNotSv(String selectTime1, String selectTime2, String orderId, String processes, Integer state, ProductionScheduling productionScheduling) {
-        Map<String, Object> map = new HashMap<>();
-        map.put("data", productionSchedulingMapper.selectSchedulingNotMp(selectTime1, selectTime2,orderId,processes, productionScheduling));
-        return map;
-    }
+
 
     public Boolean addSchedulingSv(Map<String, Object> object) {
         String userName = "";
@@ -92,8 +81,8 @@
                 //鏌ヨ宸叉帓浜у伐搴忔暟閲�
              // Integer num =  productionSchedulingMapper.selectNumberMp(productionScheduling.getOrderId(),productionScheduling.getOrderNumber(),processes);
 
-             productionSchedulingMapper.insertSelective(schedulingId,productionScheduling.getOrderId(),productionScheduling.getOrderNumber(),productionScheduling.getTechnologyNumber(),processes,productionScheduling.getSchedulingQuantity(),productionScheduling.getScheduledStartTime(),productionScheduling.getPlanEndTime(),productionScheduling.getNotes());
-                //System.out.println(productionScheduling.getOrderNumber()+"***"+productionScheduling.getTechnologyNumber());
+             productionSchedulingMapper.insertSelective(schedulingId,productionScheduling.getOrderGlassDetail().getOrderId(),productionScheduling.getOrderNumber(),productionScheduling.getTechnologyNumber(),processes,productionScheduling.getSchedulingQuantity(),productionScheduling.getScheduledStartTime(),productionScheduling.getPlanEndTime(),productionScheduling.getNotes());
+               // System.out.println(productionScheduling.getOrderId()+"***"+productionScheduling.getOrderGlassDetail().getOrderId()+"--"+productionScheduling.getOrderDetail().getOrderId());
             }
             return true;
         }
diff --git a/north-glass-erp/src/main/resources/application.yml b/north-glass-erp/src/main/resources/application.yml
index 3bcb389..8c37623 100644
--- a/north-glass-erp/src/main/resources/application.yml
+++ b/north-glass-erp/src/main/resources/application.yml
@@ -11,22 +11,22 @@
       strict: false #璁剧疆涓ユ牸妯″紡,榛樿false涓嶅惎鍔�. 鍚姩鍚庡湪鏈尮閰嶅埌鎸囧畾鏁版嵁婧愭椂鍊欏洖鎶涘嚭寮傚父,涓嶅惎鍔ㄤ細浣跨敤榛樿鏁版嵁婧�.
       datasource:
         user_info:
-          url: jdbc:mysql://192.168.1.108:3306/erp_user_info?serverTimezone=GMT%2b8
+          url: jdbc:mysql://localhost:3306/erp_user_info?serverTimezone=GMT%2b8
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
         sd:
-          url: jdbc:mysql://192.168.1.108:3306/sd?serverTimezone=GMT%2b8&allowMultiQueries=true
+          url: jdbc:mysql://localhost:3306/sd?serverTimezone=GMT%2b8&allowMultiQueries=true
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
         mm:
-          url: jdbc:mysql://192.168.1.108:3306/mm?serverTimezone=GMT%2b8
+          url: jdbc:mysql://localhost:3306/mm?serverTimezone=GMT%2b8
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
         pp:
-          url: jdbc:mysql://192.168.1.108:3306/pp?serverTimezone=GMT%2b8
+          url: jdbc:mysql://localhost:3306/pp?serverTimezone=GMT%2b8
           username: root
           password: beibo.123/
           driver-class-name: com.mysql.cj.jdbc.Driver
diff --git a/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml b/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
index eefc823..7829340 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/FolwCard.xml
@@ -570,11 +570,5 @@
           and technology_number = #{technologyNumber}
     </update>
 
-<select id="selectPrintSetup">
-        select id,
-               print_type as printType,
-               print_type_name as printTypeName,
-               print_state as printState
-        from pp.print_setup
-    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/north-glass-erp/src/main/resources/mapper/pp/ProductionScheduling.xml b/north-glass-erp/src/main/resources/mapper/pp/ProductionScheduling.xml
index aa8ed69..fdd147d 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/ProductionScheduling.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/ProductionScheduling.xml
@@ -15,6 +15,9 @@
         <result column="productionScheduledQuantity" property="productionScheduledQuantity"/>
         <result column="productionScheduledArea" property="productionScheduledArea"/>
         <result column="review_status" property="reviewStatus"/>
+        <result column="scheduled_start_time" property="scheduledStartTime"/>
+        <result column="plan_end_time" property="planEndTime"/>
+        <result column="reviewer" property="reviewer"/>
         <!--鎺ユ敹鍏朵粬澶栭敭瀹炰綋绫绘暟鎹�-->
         <result column="project" property="order.project"/>
         <result column="customer_name" property="order.customerName"/>
@@ -42,76 +45,61 @@
 
 
     <!--    鏌ヨ宸叉帓鐗堟暟鎹�-->
-    <select id="selectOkSchedulingMp">
-        select date(ps.scheduled_start_time)                          as scheduled_start_time,
-               date(ps.plan_end_time)                                 as plan_end_time,
-               od.order_id,
-               o.customer_name,
-               o.project,
-               od.order_number,
-               od.width,
-               od.height,
-               od.quantity,
-               round(od.width * od.height * od.quantity / 1000000, 2) as area,
-               ps.scheduling_quantity,
-               (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) as pendingProductionQuantity,
-               round(od.width * od.height * (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) / 1000000,
-                     2)                                               as pendingProductionArea,
-               IFNULL(ps.scheduling_quantity, 0)                      as productionScheduledQuantity,
-               round(od.width * od.height * (IFNULL(ps.scheduling_quantity, 0)) / 1000000,
-                     2)                                               as productionScheduledArea,
-               IF(ps.review_status = 0, "鏈鏍�", "宸插鏍�")           as review_status,
-               ps.reviewer,
-               od.product_name,
-               od.shape,
-               ps.scheduling_id
+    <select id="selectOkSchedulingMp" resultMap="productionSchedulingMap">
+        select date(ps.scheduled_start_time) as scheduled_start_time,
+        date(ps.plan_end_time) as plan_end_time,
+        od.order_id,
+        o.customer_name,
+        o.project,
+        ps.order_number,
+        ps.technology_number,
+        ogd.child_width,
+        ogd.child_height,
+        od.quantity,
+        round(od.width * od.height * od.quantity / 1000000, 2) as area,
+        ps.scheduling_quantity,
+        (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) as pendingProductionQuantity,
+        round(od.width * od.height * (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) / 1000000,
+        2) as pendingProductionArea,
+        IFNULL(ps.scheduling_quantity, 0) as productionScheduledQuantity,
+        round(od.width * od.height * (IFNULL(ps.scheduling_quantity, 0)) / 1000000,
+        2) as productionScheduledArea,
+        IF(ps.review_status = 0, "鏈鏍�", "宸插鏍�") as review_status,
+        ps.reviewer,
+        od.product_name,
+        if(od.shape=1,'鏅舰',if(od.shape=2,'寮傚舰','')) as shape,
+        ps.scheduling_id
         from sd.order_detail as od
-                 left join sd.order as o on od.order_id = o.order_id
-                 left join production_scheduling as ps
-                           on ps.order_id = od.order_id and ps.order_number = od.order_number
+        left join sd.order as o on od.order_id = o.order_id
+        left join production_scheduling as ps
+        on ps.order_id = od.order_id and ps.order_number = od.order_number
+        left join sd.order_glass_detail as ogd on ogd.order_id=od.order_id and ogd.order_number=od.order_number and
+        ogd.technology_number=ps.technology_number
         where ps.scheduling_id IS NOT NULL
-          and od.create_time between #{selectTime1} and #{selectTime2}
-          and position(#{processes} in ps.processes)
-          and position(#{orderId} in ps.order_id)
-        group by od.order_id, od.order_number
+        and od.create_time between #{selectTime1} and #{selectTime2}
+        and position(#{processes} in ps.processes)
+        and position(#{orderIds} in ps.order_id)
+        <if test="productionScheduling.orderId != null and productionScheduling.orderId != ''">
+            and ogd.order_id regexp #{productionScheduling.orderId}
+        </if>
+        <if test="productionScheduling.order.customerName != null and productionScheduling.order.customerName != ''">
+            and o.customer_name regexp #{productionScheduling.order.customerName}
+        </if>
+        <if test="productionScheduling.order.project != null and productionScheduling.order.project != ''">
+            and o.project regexp #{productionScheduling.order.project}
+        </if>
+        <if test="productionScheduling.orderNumber != null and productionScheduling.orderNumber != ''">
+            and ogd.order_number regexp #{productionScheduling.orderNumber}
+        </if>
+        <if test="productionScheduling.technologyNumber != null and productionScheduling.technologyNumber != ''">
+            and ogd.technology_number regexp #{productionScheduling.technologyNumber}
+        </if>
+        group by ps.id
         order by ps.id desc
+        limit #{offset},#{pageSize};
     </select>
 
-    <!--    鏌ヨ宸叉帓浜х殑鏁版嵁-->
-    <select id="selectSchedulingNotMp">
-        select date(ps.scheduled_start_time)                          as scheduled_start_time,
-               date(ps.plan_end_time)                                 as plan_end_time,
-               od.order_id,
-               o.customer_name,
-               o.project,
-               od.order_number,
-               od.width,
-               od.height,
-               od.quantity,
-               round(od.width * od.height * od.quantity / 1000000, 2) as area,
-               ps.scheduling_quantity,
-               (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) as scheduling_quantity,
-               round(od.width * od.height * (od.quantity - IFNULL(sum(ps.scheduling_quantity), 0)) / 1000000, 2)
-                                                                      as pendingProductionArea,
-               IFNULL(ps.scheduling_quantity, 0)                      as productionScheduledQuantity,
-               round(od.width * od.height * (IFNULL(ps.scheduling_quantity, 0)) / 1000000, 2)
-                                                                      as productionScheduledArea,
-               IF(ps.review_status = 0, "鏈鏍�", "宸插鏍�")
-                                                                      as review_status,
-               ps.reviewer,
-               od.product_name,
-               od.shape,
-               ps.scheduling_id
-        from sd.order_detail as od
-                 left join sd.order as o on od.order_id = o.order_id
-                 left join production_scheduling as ps
-                           on ps.order_id = od.order_id and ps.order_number = od.order_number
-        where (ps.scheduling_id IS NOT NULL)
-          and position(#{processes} in ps.processes)
-          and position(#{orderId} in ps.order_id)
-        group by od.order_id, od.order_number
-        order by ps.id desc
-    </select>
+
     <!--    鏌ヨ鏈帓浜ф暟鎹�-->
     <select id="selectNoSchedulingMp" resultMap="productionSchedulingMap">
         select ogd.order_id,
@@ -131,8 +119,8 @@
         IFNULL(ps.schedulingQuantity, 0) as productionScheduledQuantity,
         round(ogd.child_width * ogd.child_height * (IFNULL(ps.schedulingQuantity, 0)) / 1000000,
         2) as productionScheduledArea,
-        ogd.glass_child,
-        od.shape
+        od.product_name,
+        if(od.shape=1,'鏅舰',if(od.shape=2,'寮傚舰','')) as shape
         from sd.order_glass_detail as ogd
 
         left join sd.order as o on ogd.order_id = o.order_id
@@ -152,7 +140,7 @@
         and od.create_time between #{selectTime1} and #{selectTime2}
         and opd.reporting_work_num_count = 0
 
-        and position(#{orderId} in ogd.order_id)
+        and position(#{orderIds} in ogd.order_id)
         -- and position("鍒囧壊" in ps.processes)
         <if test="productionScheduling.orderId != null and productionScheduling.orderId != ''">
             and ogd.order_id regexp #{productionScheduling.orderId}
@@ -173,52 +161,7 @@
         order by ogd.order_id desc
         limit #{offset},#{pageSize};
     </select>
-    <!--    棣栨鏌ヨ鎺掍骇鏁版嵁-->
-    <select id="selectLastSchedulingMp">
-        select ogd.order_id,
-               o.customer_name,
-               o.project,
-               ogd.order_number,
-               ogd.technology_number,
-               ogd.child_width,
-               ogd.child_height,
-               od.quantity,
-               round(ogd.child_width * ogd.child_height * od.quantity / 1000000, 2) as area,
-               (od.quantity - IFNULL((ps.schedulingQuantity), 0))                   as scheduling_quantity,
-               (od.quantity - IFNULL((ps.schedulingQuantity), 0))                   as pendingProductionQuantity,
-               round(ogd.child_width * ogd.child_height * (od.quantity - IFNULL((ps.schedulingQuantity), 0)) / 1000000,
-                     2)
-                                                                                    as pendingProductionArea,
-               IFNULL(ps.schedulingQuantity, 0)                                     as productionScheduledQuantity,
-               round(ogd.child_width * ogd.child_height * (IFNULL(ps.schedulingQuantity, 0)) / 1000000,
-                     2)                                                             as productionScheduledArea,
-               ogd.glass_child,
-               od.shape
-        from sd.order_glass_detail as ogd
 
-                 left join sd.order as o on ogd.order_id = o.order_id
-                 left join sd.order_detail as od on od.order_id = ogd.order_id and od.order_number = ogd.order_number
-                 left join sd.order_process_detail as opd
-                           on opd.order_id = ogd.order_id and opd.order_number = ogd.order_number and
-                              opd.technology_number = ogd.technology_number
-                 left join
-             (select order_id, order_number, technology_number, SUM(scheduling_quantity) as schedulingQuantity
-              from production_scheduling
-              where processes = #{processes}
-              group by order_id, order_number, technology_number) as ps
-             on ps.order_id = ogd.order_id and ps.order_number = ogd.order_number and
-                ps.technology_number = ogd.technology_number
-
-        where (od.quantity - IFNULL((ps.schedulingQuantity), 0)) > 0
-          and od.create_time between #{selectTime1} and #{selectTime2}
-          and opd.reporting_work_num_count = 0
-
-          and position(#{orderId} in ogd.order_id)
---           and position("鍒囧壊" in ps.processes)
-
-        group by ogd.order_id, ogd.order_number, ogd.technology_number
-        order by ogd.order_id desc
-    </select>
 
     <select id="selectMaxId">
         select COUNT(ps.scheduling_id)
@@ -311,4 +254,36 @@
         order by ogd.order_id desc
         limit #{offset},#{pageSize};
     </select>
+
+    <select id="getOkPageTotal">
+        select CEILING(count(ps.id)/#{pageSize}) as 'pageTotal',
+        count(distinct ps.id) as 'total'
+        from sd.order_detail as od
+        left join sd.order as o on od.order_id = o.order_id
+        left join production_scheduling as ps
+        on ps.order_id = od.order_id and ps.order_number = od.order_number
+        left join sd.order_glass_detail as ogd on ogd.order_id=od.order_id and ogd.order_number=od.order_number and
+        ogd.technology_number=ps.technology_number
+        where ps.scheduling_id IS NOT NULL
+        and od.create_time between #{selectTime1} and #{selectTime2}
+        and position(#{processes} in ps.processes)
+        and position(#{orderId} in ps.order_id)
+        <if test="productionScheduling.orderId != null and productionScheduling.orderId != ''">
+            and ogd.order_id regexp #{productionScheduling.orderId}
+        </if>
+        <if test="productionScheduling.order.customerName != null and productionScheduling.order.customerName != ''">
+            and o.customer_name regexp #{productionScheduling.order.customerName}
+        </if>
+        <if test="productionScheduling.order.project != null and productionScheduling.order.project != ''">
+            and o.project regexp #{productionScheduling.order.project}
+        </if>
+        <if test="productionScheduling.orderNumber != null and productionScheduling.orderNumber != ''">
+            and ogd.order_number regexp #{productionScheduling.orderNumber}
+        </if>
+        <if test="productionScheduling.technologyNumber != null and productionScheduling.technologyNumber != ''">
+            and ogd.technology_number regexp #{productionScheduling.technologyNumber}
+        </if>
+        order by ps.id desc
+        limit #{offset},#{pageSize};
+    </select>
 </mapper>
\ No newline at end of file
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 a4d1b8b..0c4b357 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/Report.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/Report.xml
@@ -225,7 +225,7 @@
                o.project,
                o.order_id,
                o.batch,
-               od.shape,
+               if(od.shape=1,'鏅舰',if(od.shape=2,'寮傚舰','')) as shape,
                ogd.order_number,
                ogd.technology_number,
                ogd.process,
@@ -526,7 +526,7 @@
             ogd.child_height as childHeight,
             fc.quantity,
             round( ogd.child_width * ogd.child_height * fc.quantity / 1000000, 2 ) as area,
-            od.shape,
+            if(od.shape=1,'鏅舰',if(od.shape=2,'寮傚舰','')) as shape,
             od.remarks
         FROM
             sd.ORDER AS o
@@ -614,7 +614,7 @@
     <select id="productionScheduleMp">
         select
             a.order_number,
-            a.shape,
+            if(od.shape=1,'鏅舰',if(od.shape=2,'寮傚舰','')) as shape,
             a.product_name,
             b.child_width,
             b.child_height,
@@ -967,7 +967,7 @@
                o.project,
                o.order_id,
                o.batch,
-               od.shape,
+               if(od.shape=1,'鏅舰',if(od.shape=2,'寮傚舰','')) as shape,
                ogd.order_number,
                ogd.technology_number,
                ogd.process,
@@ -1180,7 +1180,7 @@
             rwd.order_number,
             MAX( ogd.child_width ) as width,
             MAX( ogd.child_height ) as height,
-            od.shape,
+        if(od.shape=1,'鏅舰',if(od.shape=2,'寮傚舰','')) as shape,
             sum( pd.thickness ) as thickness,
             od.edging_type,
             rwd.completed_quantity,
diff --git a/north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml b/north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
index 98403f5..367700e 100644
--- a/north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
+++ b/north-glass-erp/src/main/resources/mapper/pp/ReportingWork.xml
@@ -125,7 +125,7 @@
             fc.quantity AS quantity_card,
             ogd.child_width,
             ogd.child_height,
-            od.shape,
+            if(od.shape=1,'鏅舰',if(od.shape=2,'寮傚舰','')) as shape,
             fc.quantity -odpd.reporting_work_num -odpd.broken_num  as quantity,
             fc.quantity -odpd.reporting_work_num -odpd.broken_num  as completedQuantity,
             odpd.reporting_work_num as completed,
@@ -163,7 +163,7 @@
             fc.quantity AS quantity_card,
             ogd.child_width,
             ogd.child_height,
-            od.shape,
+        if(od.shape=1,'鏅舰',if(od.shape=2,'寮傚舰','')) as shape,
             if((odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num ) &lt; 0,
                 0,
         odpds.reporting_work_num_count + ifnull(c.patchNumSum,0) -odpd.reporting_work_num_count -odpd.broken_num) as quantity,
@@ -382,7 +382,7 @@
             c.quantity as quantity_card,
             d.child_width,
             d.child_height,
-            e.shape,
+            if(e.shape=1,'鏅舰',if(e.shape=2,'寮傚舰','')) as shape,
             if(ifnull(a.completed_quantity+a.breakage_quantity,0)=0,
                 c.quantity-ifnull(a.completed_quantity+a.breakage_quantity,0),
                 ifnull(a.completed_quantity+a.breakage_quantity,0)) as 'quantity', -- 鍙姤宸ユ暟

--
Gitblit v1.8.0