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('<option value="" data-i18n="target_empty_location">目标空库位</option>');
|
if (typeof I18n !== 'undefined') {
|
I18n.updatePage($("#targetLocNo"));
|
}
|
layui.form.render('select');
|
}
|