From 539a56279625242c497b4b4093f2defbb9d80334 Mon Sep 17 00:00:00 2001
From: lty <876263681@qq.com>
Date: 星期四, 29 一月 2026 14:05:44 +0800
Subject: [PATCH] #i18n翻译

---
 src/main/webapp/static/js/order/order.js |  272 +++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 177 insertions(+), 95 deletions(-)

diff --git a/src/main/webapp/static/js/order/order.js b/src/main/webapp/static/js/order/order.js
index ad09170..cda091a 100644
--- a/src/main/webapp/static/js/order/order.js
+++ b/src/main/webapp/static/js/order/order.js
@@ -1,5 +1,7 @@
 var insTbCount = 0;
-layui.config({
+var insTb;
+    var insLookTb;
+    layui.config({
     base: baseUrl + "/static/layui/lay/modules/"
 }).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate'], function () {
     var $ = layui.jquery;
@@ -11,8 +13,78 @@
     var xmSelect = layui.xmSelect;
     var layDate = layui.laydate;
     var laytpl = layui.laytpl;
+    var dateIns = layDate.render({
+        elem: '#modi_time'
+        ,type: 'datetime'
+        ,range: true
+        ,lang: typeof I18n !== 'undefined' && I18n.getLanguage().toLowerCase() === 'zh-cn' ? 'cn' : 'en'
+    });
+    function getCols() {
+        return [[
+            {type: 'numbers'},
+            {field: 'orderNo', title: I18n.t('order_no'), templet: '#orderNoTpl'},
+            {field: 'docType$', align: 'center', title: I18n.t('doc_type'),  minWidth: 160, width: 160, templet: function (d) {
+                return I18n.t(d.docType$);
+            }},
+            {align: 'center', title: I18n.t('order_detail'), toolbar: '#tbLook', minWidth: 160, width: 160},
+            {field: 'createTime$', title: I18n.t('create_time'), minWidth: 200, width: 200},
+            {field: 'settle$', align: 'center', title: I18n.t('status'), templet: '#settleTpl',  minWidth: 160, width: 160},
+            {field: 'memo', align: 'center',title: I18n.t('memo'), hide: true},
+            {align: 'center', title: I18n.t('operation'), toolbar: '#operate', width: 180}
+        ]];
+    }
+
+    function getLookCols() {
+        return [[
+            {type: 'numbers'},
+            {field: 'matnr', title: I18n.t('mat_code'), width: 160},
+            {field: 'maktx', title: I18n.t('mat_name'), width: 160},
+            {field: 'batch', title: I18n.t('batch')},
+            {field: 'anfme', title: I18n.t('quantity')},
+            {field: 'workQty', title: I18n.t('work_qty')},
+            {field: 'qty', title: I18n.t('finish_qty'), style: 'font-weight: bold'},
+            // {field: 'unit', title: '鍗曚綅'},
+            // {
+            //     field: 'createTime$', title: '鍒涘缓鏃堕棿', sort: true, templet: function (d) {
+            //         return util.toDateString(d.createTime);
+            //     },  width: 180
+            // },
+            // {field: 'inQty', title: '宸插叆搴撻噺'},
+            // {field: 'color', title: '棰滆壊'},
+            {field: 'specs', title: I18n.t('spec')}
+        ]];
+    }
+
+    function getFormCols() {
+        return [[
+            {type: 'numbers', title: '#'},
+            {field: 'matnr', title: I18n.t('mat_code'), width: 160},
+            {field: 'maktx', title: I18n.t('mat_name'), width: 200},
+            {field: 'batch', title: I18n.t('batch'), edit: true},
+            {field: 'specs', title: I18n.t('spec')},
+            {field: 'anfme', title: I18n.t('quantity') + '(' + I18n.t('modify') + ')', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
+            {field: 'workQty', title: I18n.t('work_qty'),  minWidth: 100, width: 100},
+            // {field: 'unit', title: '鍗曚綅', width: 80},
+            {field: 'memo', title: I18n.t('memo') , edit: true},
+            {align: 'center', title: I18n.t('operation'), toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'}
+        ]];
+    }
 
     // 娓叉煋鎼滅储妯℃澘
+    var docTypeData = null;
+    function renderDocTypeSelect() {
+        if (!docTypeData || !docTypeData.records) return;
+
+        layui.each(docTypeData.records, function(index, item){
+            item.transDocName = I18n.t(item.docName$ || item.docName);
+        });
+
+        var template = Handlebars.compile($('#docTypeTpl').html());
+        $('#docType-query').html(template(docTypeData));
+        I18n.updatePage($('#docType-query'));
+        layui.form.render('select');
+    }
+
     $.ajax({
         url: baseUrl+"/docType/list/auth",
         headers: {'token': localStorage.getItem('token')},
@@ -22,9 +94,8 @@
         method: 'POST',
         success: function (res) {
             if (res.code === 200){
-                let template = Handlebars.compile($('#docTypeTpl').html());
-                $('#docType-query').html(template(res.data));
-                layui.form.render('select');
+                docTypeData = res.data;
+                renderDocTypeSelect();
             } else if (res.code === 403){
                 top.location.href = baseUrl+"/";
             } else {
@@ -34,43 +105,75 @@
     })
 
     // 娓叉煋琛ㄦ牸
-    var insTb = table.render({
-        elem: '#order',
-        url: baseUrl+'/order/head/page/auth',
-        headers: {token: localStorage.getItem('token')},
-        page: true,
-        cellMinWidth: 100,
-        cols: [[
-            {type: 'numbers'},
-            {field: 'orderNo', title: '鍗曟嵁缂栧彿', templet: '#orderNoTpl'},
-            {field: 'docType$', align: 'center', title: '绫诲瀷',  minWidth: 160, width: 160},
-            {align: 'center', title: '鏄庣粏', toolbar: '#tbLook', minWidth: 160, width: 160},
-            {field: 'createTime$', title: '鍒涘缓鏃堕棿', minWidth: 200, width: 200},
-            {field: 'settle$', align: 'center', title: '鐘舵��', templet: '#settleTpl',  minWidth: 160, width: 160},
-            {field: 'memo', align: 'center',title: '澶囨敞', hide: true},
-            {align: 'center', title: '鎿嶄綔', toolbar: '#operate', width: 180}
-        ]],
-        request: {
-            pageName: 'curr',
-            pageSize: 'limit'
-        },
-        parseData: function (res) {
-            return {
-                'code': res.code,
-                'msg': res.msg,
-                'count': res.data.total,
-                'data': res.data.records
+    function initTable() {
+        insTb = table.render({
+            elem: '#order',
+            url: baseUrl+'/order/head/page/auth',
+            headers: {token: localStorage.getItem('token')},
+            page: true,
+            cellMinWidth: 100,
+            cols: getCols(),
+            request: {
+                pageName: 'curr',
+                pageSize: 'limit'
+            },
+            parseData: function (res) {
+                return {
+                    'code': res.code,
+                    'msg': res.msg,
+                    'count': res.data.total,
+                    'data': res.data.records
+                }
+            },
+            response: {
+                statusCode: 200
+            },
+            done: function (res, curr, count) {
+                limit();
+                if (res.code === 403) {
+                    top.location.href = baseUrl+"/";
+                }
+                insTbCount = count;
+                if (typeof I18n !== 'undefined' && I18n.isReady()) {
+                    I18n.updatePage();
+                    I18n.updateLayuiPagination();
+                }
+                            if (typeof dateIns !== 'undefined') {
+                 // Completely remove and recreate the input element to force laydate reset
+                 var $input = $('#modi_time');
+                 var parent = $input.parent();
+                 var inputHtml = $input.prop("outerHTML");
+                 $input.remove();
+                 parent.append(inputHtml);
+                 $('#modi_time').removeAttr('lay-key'); // Ensure no key remains
+
+                 dateIns = layDate.render({
+                    elem: '#modi_time'
+                    ,type: 'datetime'
+                    ,range: true
+                    ,lang: I18n.getLanguage().toLowerCase() === 'zh-cn' ? 'cn' : 'en'
+                });
             }
-        },
-        response: {
-            statusCode: 200
-        },
-        done: function (res, curr, count) {
-            limit();
-            if (res.code === 403) {
-                top.location.href = baseUrl+"/";
             }
-            insTbCount = count;
+        });
+    }
+
+    if (typeof I18n !== 'undefined' && I18n.isReady()) {
+        initTable();
+    } else {
+        $(document).on('i18n:ready', initTable);
+    }
+
+    // 鐩戝惉璇█鍒囨崲
+    $(document).on('i18n:languageChanged', function () {
+        renderDocTypeSelect();
+        insTb.reload({
+            cols: getCols()
+        });
+        if (insLookTb && $('#lookSSXMTable').length > 0) {
+            insLookTb.reload({
+                cols: getLookCols()
+            });
         }
     });
 
@@ -111,7 +214,7 @@
                 fixed: false,
                 content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>',
                 success: function (layero) {
-                    table.render({
+                    insLookTb = table.render({
                         elem: '#lookSSXMTable',
                         headers: {token: localStorage.getItem('token')},
                         url: baseUrl+'/orderDetl/list/auth',
@@ -120,24 +223,7 @@
                         },
                         page: true,
                         cellMinWidth: 100,
-                        cols: [[
-                            {type: 'numbers'},
-                            {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
-                            {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 160},
-                            {field: 'batch', title: '鎵瑰彿'},
-                            {field: 'anfme', title: '鏁伴噺'},
-                            {field: 'workQty', title: '浣滀笟鏁伴噺'},
-                            {field: 'qty', title: '瀹屾垚鏁伴噺', style: 'font-weight: bold'},
-                            // {field: 'unit', title: '鍗曚綅'},
-                            // {
-                            //     field: 'createTime$', title: '鍒涘缓鏃堕棿', sort: true, templet: function (d) {
-                            //         return util.toDateString(d.createTime);
-                            //     },  width: 180
-                            // },
-                            // {field: 'inQty', title: '宸插叆搴撻噺'},
-                            // {field: 'color', title: '棰滆壊'},
-                            {field: 'specs', title: '瑙勬牸'}
-                        ]],
+                        cols: getLookCols(),
                         request: {
                             pageName: 'curr',
                             pageSize: 'limit'
@@ -154,6 +240,7 @@
                             statusCode: 200
                         },
                         done: function () {
+                            I18n.updateLayuiPagination();
                             $(layero).find('.layui-table-view').css('margin', '0');
                         },
                         size: ''
@@ -167,10 +254,11 @@
     function showEditModel(expTpe) {
         admin.open({
             type: 1,
-            title: (expTpe ? '淇敼' : '娣诲姞') + '鍗曟嵁',
+            title: (expTpe ? I18n.t('modify_order') : I18n.t('add_order')),
             content: $('#editDialog').html(),
             area: '1300px',
             success: function (layero, dIndex) {
+                I18n.updatePage($(layero));
                 $(layero).children('.layui-layer-content').css('overflow', 'visible');
                 var isExpAdd = !expTpe;
                 // 鍥炴樉鏁版嵁
@@ -182,17 +270,17 @@
                 form.on('submit(orderEditSubmit)', function (data) {
                     // 缁勮鏁版嵁
                     if (xxDataList.length <= 0) {
-                        layer.tips('璇锋坊鍔犲崟鎹槑缁�', '#matAddBtnComment', {tips: [1, '#ff4c4c']});
+                        layer.tips(I18n.t('please_add_detail_first'), '#matAddBtnComment', {tips: [1, '#ff4c4c']});
                         return false;
                     }
                     let nList = admin.util.deepClone(xxDataList);
                     for (let xi = 0; xi < nList.length; xi++) {
                         if (nList[xi].anfme <= 0){
-                            layer.msg('鏄庣粏淇敼鏁伴噺涓嶅悎娉�', {icon: 2});
+                            layer.msg(I18n.t('detail_modify_qty_invalid'), {icon: 2});
                             return false;
                         }
                         if (nList[xi].anfme < nList[xi].workQty){
-                            layer.msg('鏁伴噺涓嶈兘灏忎簬宸蹭綔涓氭暟閲�', {icon: 2});
+                            layer.msg(I18n.t('qty_cannot_less_than_worked'), {icon: 2});
                             return false;
                         }
                     }
@@ -213,7 +301,7 @@
                             if (res.code === 200){
                                 layer.close(dIndex);
                                 $(".layui-laypage-btn")[0].click();
-                                layer.msg(res.msg, {icon: 1});
+                                layer.msg(typeof I18n !== 'undefined' ? I18n.t(res.msg) : res.msg, {icon: 1});
                             } else if (res.code === 403){
                                 top.location.href = baseUrl+"/";
                             }else {
@@ -232,18 +320,7 @@
                     page: true,
                     height: '350px;',
                     cellMinWidth: 100,
-                    cols: [[
-                        {type: 'numbers', title: '#'},
-                        {field: 'matnr', title: '鍟嗗搧缂栫爜', width: 160},
-                        {field: 'maktx', title: '鍟嗗搧鍚嶇О', width: 200},
-                        {field: 'batch', title: '鎵瑰彿', edit: true},
-                        {field: 'specs', title: '瑙勬牸'},
-                        {field: 'anfme', title: '鏁伴噺(淇敼)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 110},
-                        {field: 'workQty', title: '浣滀笟鏁伴噺',  minWidth: 100, width: 100},
-                        // {field: 'unit', title: '鍗曚綅', width: 80},
-                        {field: 'memo', title: '澶囨敞' , edit: true},
-                        {align: 'center', title: '鎿嶄綔', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'}
-                    ]],
+                    cols: getFormCols(),
                     done: function (res) {
                         $(layero).find('.layui-table-view').css('margin', '0');
                     },
@@ -276,10 +353,10 @@
                         showEditModel2(data);
                     } else if (layEvent === 'del') {
                         if(data.workQty > 0){
-                            layer.msg("宸插瓨鍦ㄤ綔涓氭暟閲忥紝涓嶈兘鍒犻櫎", {icon: 2});
+                            layer.msg(I18n.t('work_qty_exists_cannot_delete'), {icon: 2});
                             return;
                         }
-                        layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', {
+                        layer.confirm(I18n.t('confirm_delete_data'), {
                             shade: .1,
                             skin: 'layui-layer-admin'
                         }, function (i) {
@@ -301,17 +378,17 @@
                     if (obj.field === 'anfme'){
                         let vle = Number(obj.value);
                         if (isNaN(vle)) {
-                            layer.msg("璇疯緭鍏ユ暟瀛�", {icon: 2});
+                            layer.msg(I18n.t('please_enter_number'), {icon: 2});
                             return false;
                         } else {
                             if (vle <= 0) {
-                                layer.msg("鏁伴噺蹇呴』澶т簬闆�", {icon: 2});
+                                layer.msg(I18n.t('quantity_must_be_greater_than_zero'), {icon: 2});
                                 // data[obj.field] = 0;
                                 // insTbSSXM.reload({data: xxDataList});
                                 return false;
                             }
                             if(obj.value < data.workQty){
-                                layer.msg("杈撳叆鏁伴噺涓嶈兘灏忎簬浣滀笟涓暟閲�", {icon: 2});
+                                layer.msg(I18n.t('input_qty_cannot_less_than_working'), {icon: 2});
                                 // data[obj.field] = 0;
                                 // insTbSSXM.reload({data: xxDataList});
                                 return false;
@@ -332,7 +409,7 @@
                         type: 1,
                         offset: '150px',
                         area: '680px',
-                        title: (exp ? '淇敼' : '娣诲姞') + '鏄庣粏',
+                        title: (exp ? I18n.t('modify_detail') : I18n.t('add_detail')),
                         content: $('#matEditDialog').html(),
                         success: function (layero, dIndex) {
                             // 鍥炴樉鏁版嵁
@@ -366,10 +443,13 @@
                             // 娓叉煋鐗╂枡閫夋嫨
                             var matXmSelect = xmSelect.render({
                                 el: '#mat',
+                                language: (typeof I18n !== 'undefined' && localStorage.getItem('lang') === 'en') ? 'en' : 'zn',
+                                tips: typeof I18n !== 'undefined' ? I18n.t('please_select') : '璇烽�夋嫨',
+                                searchTips: typeof I18n !== 'undefined' ? I18n.t('search') : '鎼滅储',
                                 style: {
                                     width: '340px',
                                 },
-                                autoRow: true,
+                                collapse: true,
                                 toolbar: { show: true },
                                 filterable: true,
                                 remoteSearch: true,
@@ -393,6 +473,7 @@
                                 }
                             })
                             // 寮圭獥涓嶅嚭鐜版粴鍔ㄦ潯
+                            I18n.updatePage($(layero));
                             $(layero).children('.layui-layer-content').css('overflow', 'visible');
                             layui.form.render('select');
                         }
@@ -405,7 +486,7 @@
 
     // 鍒犻櫎鍗曟嵁
     function doDel(orderId) {
-        layer.confirm('纭畾瑕佸垹闄ゅ悧锛�', {
+        layer.confirm(I18n.t('confirm_delete'), {
             shade: .1,
             skin: 'layui-layer-admin'
         }, function (i) {
@@ -426,7 +507,7 @@
                         } else {
                             $(".layui-laypage-btn")[0].click();
                         }
-                        layer.msg(res.msg, {icon: 1});
+                        layer.msg(typeof I18n !== 'undefined' ? I18n.t(res.msg) : res.msg, {icon: 1});
                     } else if (res.code === 403){
                         top.location.href = baseUrl+"/";
                     }else {
@@ -439,7 +520,7 @@
 
     // 淇敼璁㈠崟鐘舵��
     function doModify(orderId, orderNo, settle) {
-        layer.confirm('纭畾瑕佹墜鍔ㄥ畬缁撳悧锛�', {
+        layer.confirm(I18n.t('confirm_manual_complete'), {
             shade: .1,
             skin: 'layui-layer-admin'
         }, function (i) {
@@ -464,7 +545,7 @@
                         } else {
                             $(".layui-laypage-btn")[0].click();
                         }
-                        layer.msg(res.msg, {icon: 1});
+                        layer.msg(typeof I18n !== 'undefined' ? I18n.t(res.msg) : res.msg, {icon: 1});
                     } else if (res.code === 403){
                         top.location.href = baseUrl+"/";
                     }else {
@@ -477,7 +558,7 @@
 
     // 浠诲姟杩芥函
     function showWrkTrace(orderId) {
-        let loadIndex = layer.msg('璇锋眰涓�...', {icon: 16, shade: 0.01, time: false});
+        let loadIndex = layer.msg(I18n.t('requesting'), {icon: 16, shade: 0.01, time: false});
         $.ajax({
             url: baseUrl+"/order/wrk/trace/auth",
             headers: {'token': localStorage.getItem('token')},
@@ -491,24 +572,25 @@
                     laytpl(wrkTraceDialog.innerHTML).render(res.data, function (html) {
                         admin.open({
                             type: 1,
-                            title: '浠诲姟杩芥函',
+                            title: I18n.t('wrk_trace'),
                             area: ['800px', '450px'],
                             shadeClose: true,
                             content: html,
                             success: function (layero, dIndex) {
-                                $(layero).children('.layui-layer-content').css('overflow', 'visible');
-                                /** 缁熻鍥捐〃 */
+                            I18n.updatePage($(layero));
+                            $(layero).children('.layui-layer-content').css('overflow', 'visible');
+                            /** 缁熻鍥捐〃 */
                                 var traceCharts = echarts.init(document.getElementById('wrkTraceCharts'));
                                 var traceOptions = {
                                     title: {
-                                        text: '鎬婚噺/浣滀笟/瀹屾垚', x: 'center', y: '38%',
+                                        text: I18n.t('trace_chart_title'), x: 'center', y: '38%',
                                         textStyle: {fontSize: 18, color: '#262626', fontWeight: 'normal'},
                                         subtextStyle: {fontSize: 36, color: '#10B4E8'},
                                         itemGap: 20
                                     },
                                     color: ['#10B4E8', '#E0E0E0', '#FF0000'],
                                     tooltip: {trigger: 'item'},
-                                    series: [{name: '鏁伴噺', type: 'pie', radius: ['75%', '80%'], label: {normal: {show: false}}}]
+                                    series: [{name: I18n.t('quantity'), type: 'pie', radius: ['75%', '80%'], label: {normal: {show: false}}}]
                                 };
                                 traceCharts.setOption(traceOptions);
                                 // 璧嬪��
@@ -519,9 +601,9 @@
                                     series: [
                                         {
                                             data: [
-                                                {name: '宸蹭綔涓�', value: res.data.wrkQty},
-                                                {name: '鏈綔涓�', value: res.data.totalQty-res.data.wrkQty-res.data.lackQty},
-                                                {name: '搴撳瓨涓嶈冻', value: res.data.lackQty},
+                                                {name: I18n.t('worked'), value: res.data.wrkQty},
+                                                {name: I18n.t('not_worked'), value: res.data.totalQty-res.data.wrkQty-res.data.lackQty},
+                                                {name: I18n.t('stock_shortage'), value: res.data.lackQty},
                                             ]
                                         }
                                     ]

--
Gitblit v1.9.1