var pageCurr = 0; var tableIns; function getCol() { var cols = [ {field: 'locNo', align: 'center',title: typeof I18n !== 'undefined' ? I18n.t('location_no') : '库位号', merge: true, style: 'font-weight: bold'} ]; var dCols = []; if (typeof getDetlCols === 'function') { dCols = getDetlCols(); } else { dCols = typeof detlCols !== 'undefined' ? detlCols.slice() : []; } cols.push.apply(cols, dCols); return cols; } layui.config({ base: baseUrl + "/static/layui/lay/modules/" }).use(['table','laydate', 'form', 'tableMerge'], function() { var table = layui.table; var $ = layui.jquery; var form = layui.form; var tableMerge = layui.tableMerge; window.initTable = function() { // 数据渲染 tableIns = table.render({ elem: '#locMatCode', headers: {token: localStorage.getItem('token')}, // url: baseUrl+'/locDetl/list/auth', data:[], page: true, limit: 16, limits: [16, 50, 100, 200, 500], even: true, 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 (res.code === 403) { top.location.href = baseUrl+"/"; } pageCurr=curr; limit(); clearSelect(); if (typeof I18n !== 'undefined') { I18n.updatePage(); // Retry updating pagination to ensure it catches the DOM element var attempts = 0; var interval = setInterval(function() { attempts++; if ($('.layui-laypage').length > 0) { I18n.updateLayuiPagination(); } if (attempts >= 5) { clearInterval(interval); } }, 100); } } }); }; if (typeof I18n !== 'undefined' && I18n.isReady()) { initTable(); } else { $(document).on('i18n:ready', initTable); } $(document).on('i18n:languageChanged', function() { // Full re-render of the table to ensure columns and headers are updated initTable(); // Update placeholders $('[data-i18n-placeholder]').each(function() { var key = $(this).attr('data-i18n-placeholder'); $(this).attr('placeholder', I18n.t(key)); }); // Update page text I18n.updatePage(); // Re-render form to update select options AFTER page text update form.render('select'); updateLayuiSelects(); }); // Use MutationObserver to monitor body changes for Layui select "No Match" / "No Data" prompts // This is more robust than keyup/click events as it catches DOM changes directly var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.addedNodes.length) { $(mutation.addedNodes).each(function() { // Check if the added node is the "No Match" or "No Data" paragraph from Layui if (this.nodeType === 1 && $(this).hasClass('layui-select-none')) { var text = $(this).text(); if (typeof I18n !== 'undefined') { if (text.indexOf('无匹配项') !== -1 || text.indexOf('No Match') !== -1) { $(this).text(I18n.t('form.select.noMatch')); } if (text.indexOf('没有选项') !== -1 || text.indexOf('No Data') !== -1) { $(this).text(I18n.t('form.select.noData')); } } } }); } }); }); // Start observing the document body for child list changes observer.observe(document.body, { childList: true, subtree: true }); function updateLayuiSelects() { if (typeof I18n === 'undefined') return; // Update "No Match" / "No Data" text $('.layui-select-none').each(function() { var text = $(this).text(); if (text.indexOf('无匹配项') !== -1 || text.indexOf('No Match') !== -1) { $(this).text(I18n.t('form.select.noMatch')); } if (text.indexOf('没有选项') !== -1 || text.indexOf('No Data') !== -1) { $(this).text(I18n.t('form.select.noData')); } }); // Update "Please Select" tips if they match the default $('.layui-select-title input').each(function() { var val = $(this).val(); if (val === '请选择' || val === 'Select') { $(this).val(I18n.t('form.select.placeholder')); } var ph = $(this).attr('placeholder'); if (ph === '请选择' || ph === 'Select') { $(this).attr('placeholder', I18n.t('form.select.placeholder')); } }); } }); // 搜索库位物料 function getLoc(el) { if (!tableIns) return; tableIns.reload({ url: baseUrl+'/locDetl/list/auth' , where: {loc_no: el.value} , done:function (res) { limit(); clearSelect(); // 获取同一堆垛机的空库位 http.post(baseUrl + "/group/empty/stock", {sourceLocNo: el.value}, function (res) { if (res.data != null) { var list = res.data; var tpl = $("#emptyLocStock").html(); var template = Handlebars.compile(tpl); var html = template({data: list}); $('#targetLocNo').html(html); if (typeof I18n !== 'undefined') { I18n.updatePage($('#targetLocNo')); } layui.form.render('select'); } }); if (typeof I18n !== 'undefined') { // Retry updating pagination var attempts = 0; var interval = setInterval(function() { attempts++; if ($('.layui-laypage').length > 0) { I18n.updateLayuiPagination(); } if (attempts >= 5) { clearInterval(interval); } }, 100); } } }); } // 移库启动 function locMove() { var sourceLocNo = $("#sourceLocNo").val(); var targetLocNo = $("#targetLocNo").val(); if (sourceLocNo === null || sourceLocNo === ""){ $("#sourceLocNo").css("border-color", "red"); setTimeout(function () { $("#sourceLocNo").css("border-color", "#b8b8b8"); }, 1000); layer.msg(typeof I18n !== 'undefined' ? I18n.t('please_enter_source_location') : '请输入源库位'); return; } if (targetLocNo === null || targetLocNo === "") { $(".layui-select-title .layui-input").css("border-color", "red"); setTimeout(function () { $(".layui-select-title .layui-input").css("border-color", "#b8b8b8"); }, 1000); layer.msg(typeof I18n !== 'undefined' ? I18n.t('please_select_target_location') : '请选择目标库位'); return; } $.ajax({ url: baseUrl + "/loc/move/start", headers: {'token': localStorage.getItem('token')}, dataType: 'json', data: { sourceLocNo: sourceLocNo, targetLocNo: targetLocNo }, method: 'POST', success: function (res) { if (res.code === 200) { $("#sourceLocNo").val(""); $("#targetLocNo").empty(); layui.form.render('select'); tableIns.reload({ data: [], url: '', done:function (res) { limit();clearSelect(); if (typeof I18n !== 'undefined') { I18n.updatePage(); // Retry updating pagination var attempts = 0; var interval = setInterval(function() { attempts++; if ($('.layui-laypage').length > 0) { I18n.updateLayuiPagination(); } if (attempts >= 5) { clearInterval(interval); } }, 100); } } }); layer.msg(typeof I18n !== 'undefined' ? I18n.t(res.msg) : res.msg); // Messages from server are usually not translated here unless we have keys } else if (res.code === 403) { top.location.href = baseUrl + "/"; } else { layer.msg(typeof I18n !== 'undefined' ? I18n.t(res.msg) : res.msg); } } }) } function clearSelect() { $("#targetLocNo").empty(); $("#targetLocNo").append(''); if (typeof I18n !== 'undefined') { I18n.updatePage($("#targetLocNo")); } layui.form.render('select'); }