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/views/pakStore/locDetlQuery.html |  163 +++++++++++++++++++++++++++++++++++++-----------------
 1 files changed, 111 insertions(+), 52 deletions(-)

diff --git a/src/main/webapp/views/pakStore/locDetlQuery.html b/src/main/webapp/views/pakStore/locDetlQuery.html
index 11547f9..40f81e7 100644
--- a/src/main/webapp/views/pakStore/locDetlQuery.html
+++ b/src/main/webapp/views/pakStore/locDetlQuery.html
@@ -39,17 +39,17 @@
 </head>
 <body>
 <div style="padding: 25px; line-height: 22px; background-color: #393D49; color: #fff; font-weight: 300;">
-    <span style="font-size: large; font-weight: bold">鎻愬彇搴撳瓨鍟嗗搧</span>
+    <span style="font-size: large; font-weight: bold" data-i18n="extract_inventory_item">鎻愬彇搴撳瓨鍟嗗搧</span>
 </div>
 <!-- 鎼滅储鏍� -->
 <fieldset class="layui-elem-field site-demo-button" style="margin: 20px;">
-    <legend>鎼滅储鏍�</legend>
+    <legend data-i18n="search_bar">鎼滅储鏍�</legend>
     <!-- 鎼滅储鏍� -->
     <div id="search-box" class="layui-form layui-card-header">
         <div class="layui-inline">
             <div class="layui-input-inline cool-auto-complete">
-                <input id="crnNo" class="layui-input" name="crnNo" type="text" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
-                <input id="crnNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="鍫嗗灈鏈哄彿" onfocus=this.blur()>
+                <input id="crnNo" class="layui-input" name="crnNo" type="text" data-i18n-placeholder="please_input" placeholder="璇疯緭鍏�" autocomplete="off" style="display: none">
+                <input id="crnNo$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" data-i18n-placeholder="crane_no" placeholder="鍫嗗灈鏈哄彿" onfocus=this.blur()>
                 <div class="cool-auto-complete-window">
                     <input class="cool-auto-complete-window-input" data-key="basCrnpQueryBycrnNo" onkeyup="autoLoad(this.getAttribute('data-key'))">
                     <select class="cool-auto-complete-window-select" data-key="basCrnpQueryBycrnNoSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple">
@@ -59,40 +59,40 @@
         </div>
         <div class="layui-inline">
             <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="loc_no" placeholder="搴撲綅鍙�" autocomplete="off">
+                <input class="layui-input" type="text" name="loc_no" data-i18n-placeholder="location_no" placeholder="搴撲綅鍙�" autocomplete="off">
             </div>
         </div>
         <div class="layui-inline">
             <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="matnr" placeholder="鍟嗗搧缂栧彿"  autocomplete="off">
+                <input class="layui-input" type="text" name="matnr" data-i18n-placeholder="product_code" placeholder="鍟嗗搧缂栧彿"  autocomplete="off">
             </div>
         </div>
         <div class="layui-inline">
             <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="specs" placeholder="瑙勬牸"  autocomplete="off">
+                <input class="layui-input" type="text" name="specs" data-i18n-placeholder="spec" placeholder="瑙勬牸"  autocomplete="off">
             </div>
         </div>
         <div class="layui-inline">
             <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="maktx" placeholder="鐗╂枡鎻忚堪" autocomplete="off">
+                <input class="layui-input" type="text" name="maktx" data-i18n-placeholder="material_desc" placeholder="鐗╂枡鎻忚堪" autocomplete="off">
             </div>
         </div>
         <!-- 鏃ユ湡鑼冨洿 -->
         <div class="layui-inline" style="width: 300px">
             <div class="layui-input-inline">
-                <input class="layui-input layui-laydate-range" name="modi_time" type="text" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
+                <input class="layui-input layui-laydate-range" id="modi_time" name="modi_time" type="text" data-i18n-placeholder="start_end_time" placeholder="璧峰鏃堕棿 - 缁堟鏃堕棿" autocomplete="off" style="width: 300px">
             </div>
         </div>
         <!-- 寰呮坊鍔� -->
         <div id="data-search-btn" class="layui-btn-container layui-form-item" style="display: inline-block">
-            <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search">鎼滅储</button>
+            <button id="search" class="layui-btn layui-btn-primary layui-btn-radius" lay-submit lay-filter="search" data-i18n="search">鎼滅储</button>
         </div>
     </div>
 </fieldset>
 
 <script type="text/html" id="toolbar">
     <div class="layui-btn-container">
-        <button class="layui-btn" id="btn-confirm" lay-event="confirm" style="">鎻愬彇</button>
+        <button class="layui-btn" id="btn-confirm" lay-event="confirm" style="" data-i18n="extract">鎻愬彇</button>
     </div>
 </script>
 
@@ -103,21 +103,29 @@
 <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script>
 <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script>
+<script type="text/javascript" src="../../static/js/i18n/i18n-helper.js"></script>
 <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script>
 <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script>
 
 </body>
 <script>
+    var locDetlTableIns;
 
     function getCol() {
         var cols = [
             {type: 'checkbox', merge: ['locNo']}
-            ,{field: 'locNo', align: 'center',title: '搴撲綅鍙�', merge: true, style: 'font-weight: bold'}
+            ,{field: 'locNo', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('location_no') : '搴撲綅鍙�', merge: true, style: 'font-weight: bold'}
             // ,{field: 'locNo$', align: 'center',title: '搴撲綅鍙�'}
         ];
-        cols.push.apply(cols, detlCols);
-        cols.push({field: 'modiUser$', align: 'center',title: '淇敼浜哄憳', hide: true}
-            ,{field: 'modiTime$', align: 'center',title: '淇敼鏃堕棿'})
+        var dCols = [];
+        if (typeof getDetlCols === 'function') {
+            dCols = getDetlCols();
+        } else {
+            dCols = detlCols.slice();
+        }
+        cols.push.apply(cols, dCols);
+        cols.push({field: 'modiUser$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('modifier') : '淇敼浜哄憳', hide: true}
+            ,{field: 'modiTime$', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('modify_time') : '淇敼鏃堕棿'})
         return cols;
     }
 
@@ -131,39 +139,95 @@
         var form = layui.form;
         var admin = layui.admin;
         var tableMerge = layui.tableMerge;
+        
+        var dateIns = layDate.render({
+            elem: '#modi_time'
+            ,type: 'datetime'
+            ,range: true
+            ,lang: typeof I18n !== 'undefined' && I18n.getLanguage().toLowerCase() === 'zh-cn' ? 'cn' : 'en'
+        });
 
         // 鏁版嵁娓叉煋
-        locDetlTableIns = table.render({
-            elem: '#stockOut',
-            headers: {token: localStorage.getItem('token')},
-            url: baseUrl+'/stock/out/list/auth',
-            page: true,
-            limits: [16, 30, 50, 100, 200, 500],
-            limit: 16,
-            even: true,
-            toolbar: '#toolbar',
-            cellMinWidth: 50,
-            cols: [getCol()],
-            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() {
+            locDetlTableIns = table.render({
+                elem: '#stockOut',
+                headers: {token: localStorage.getItem('token')},
+                url: baseUrl+'/stock/out/list/auth',
+                page: true,
+                limits: [16, 30, 50, 100, 200, 500],
+                limit: 16,
+                even: true,
+                toolbar: '#toolbar',
+                cellMinWidth: 50,
+                cols: [getCol()],
+                text: {
+                    none: typeof I18n !== 'undefined' ? I18n.t('no_data') : '鏆傛棤鐩稿叧鏁版嵁'
+                },
+                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) {
+                    tableMerge.render(this);
+                    if (typeof I18n !== 'undefined') {
+                        I18n.updatePage();
+                        I18n.updateLayuiPagination();
+                    }
+                    if (res.code === 403) {
+                        top.location.href = baseUrl+"/";
+                    }
                 }
-            },
-            response: {
-                statusCode: 200
-            },
-            done: function(res, curr, count) {
-                tableMerge.render(this);
-                if (res.code === 403) {
-                    top.location.href = baseUrl+"/";
-                }
+            });
+        }
+
+        // Initialize table when I18n is ready
+        if (typeof I18n !== 'undefined' && I18n.isReady()) {
+            initTable();
+        } else {
+            $(document).on('i18n:ready', function() {
+                initTable();
+            });
+        }
+
+        $(document).on('i18n:languageChanged', function() {
+            if (locDetlTableIns) {
+                locDetlTableIns.reload({
+                    cols: [getCol()]
+                });
+            } else {
+                initTable();
+            }
+            $('[data-i18n-placeholder]').each(function() {
+                var key = $(this).attr('data-i18n-placeholder');
+                $(this).attr('placeholder', I18n.t(key));
+            });
+            // Reload date component
+            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'
+                });
             }
         });
 
@@ -174,7 +238,7 @@
             switch(obj.event) {
                 case 'confirm':
                     if (data.length === 0){
-                        layer.msg("璇烽�夋嫨鏁版嵁");
+                        layer.msg(typeof I18n !== 'undefined' ? I18n.t('please_select_data') : "璇烽�夋嫨鏁版嵁");
                         return;
                     }
                     parent.addTableData(data);
@@ -186,15 +250,10 @@
         form.on('submit(search)', function (data) {
             tableReload();
         });
-
-        layDate.render({
-            elem: '.layui-laydate-range'
-            ,type: 'datetime'
-            ,range: true
-        });
     })
 
     function tableReload() {
+        if (!locDetlTableIns) return;
         var searchData = {};
         $.each($('#search-box [name]').serializeArray(), function() {
             searchData[this.name] = this.value;

--
Gitblit v1.9.1