var pageCurr;
|
layui.config({
|
base: baseUrl + "/static/layui/lay/modules/"
|
}).use(['table', 'form', 'admin'], function () {
|
var table = layui.table;
|
var $ = layui.jquery;
|
var layer = layui.layer;
|
var form = layui.form;
|
var admin = layui.admin;
|
|
tableIns = table.render({
|
elem: '#basCrnDepthRule',
|
headers: {token: localStorage.getItem('token')},
|
url: baseUrl + '/basCrnDepthRule/list/auth',
|
page: true,
|
limit: 15,
|
limits: [15, 30, 50, 100, 200, 500],
|
toolbar: '#toolbar',
|
cellMinWidth: 80,
|
height: 'full-120',
|
cols: [[
|
{type: 'checkbox'}
|
, {field: 'whsType', align: 'center', title: '仓库'}
|
, {field: 'crnNo', align: 'center', title: '堆垛机'}
|
, {field: 'layoutType$', align: 'center', title: '布局'}
|
, {field: 'searchRowsCsv', align: 'center', title: '搜索排'}
|
, {field: 'shallowRowsCsv', align: 'center', title: '浅排'}
|
, {field: 'deepRowsCsv', align: 'center', title: '深排'}
|
, {field: 'enabled$', align: 'center', title: '启用'}
|
, {field: 'memo', align: 'center', title: '备注'}
|
, {field: 'updateBy$', align: 'center', title: '修改人', hide: true}
|
, {field: 'updateTime$', align: 'center', title: '修改时间', hide: true}
|
, {fixed: 'right', title: '操作', align: 'center', toolbar: '#operate', width: 120}
|
]],
|
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) {
|
if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
}
|
pageCurr = curr;
|
limit();
|
}
|
});
|
|
table.on('sort(basCrnDepthRule)', function (obj) {
|
var searchData = collectSearchData();
|
searchData.orderByField = obj.field;
|
searchData.orderByType = obj.type;
|
tableIns.reload({
|
where: searchData,
|
page: {curr: 1}
|
});
|
});
|
|
table.on('toolbar(basCrnDepthRule)', function (obj) {
|
var checkStatus = table.checkStatus(obj.config.id).data;
|
switch (obj.event) {
|
case 'addData':
|
showEditModel();
|
break;
|
case 'deleteData':
|
if (checkStatus.length === 0) {
|
layer.msg('请选择要删除的数据', {icon: 2});
|
return;
|
}
|
del(checkStatus);
|
break;
|
case 'exportData':
|
exportData(obj);
|
break;
|
case 'templatePreview':
|
openTemplateDialog(false);
|
break;
|
case 'templateGenerate':
|
openTemplateDialog(true);
|
break;
|
case 'runtimePreview':
|
openRuntimeDialog();
|
break;
|
}
|
});
|
|
table.on('tool(basCrnDepthRule)', function (obj) {
|
var data = obj.data;
|
switch (obj.event) {
|
case 'edit':
|
showEditModel(data);
|
break;
|
case 'del':
|
del([data]);
|
break;
|
}
|
});
|
|
function collectSearchData() {
|
var searchData = {};
|
$.each($('#search-box [name]').serializeArray(), function () {
|
searchData[this.name] = this.value;
|
});
|
return searchData;
|
}
|
|
function showEditModel(mData) {
|
admin.open({
|
type: 1,
|
area: '900px',
|
title: (mData ? '修改' : '新增') + '堆垛机深浅规则',
|
content: $('#editDialog').html(),
|
success: function (layero, dIndex) {
|
form.val('detail', mData || {enabled: 1, layoutType: 2});
|
form.render('select');
|
var detailForm = $(layero).find('#detail');
|
if (!mData) {
|
detailForm.attr('data-auto-row-fill', 'true');
|
detailForm.on('input propertychange', '[name="searchRowsCsv"]', function () {
|
autoFillDepthRows(detailForm);
|
});
|
autoFillDepthRows(detailForm);
|
}
|
form.on('submit(editSubmit)', function (data) {
|
if (!mData) {
|
var submitForm = $(data.form);
|
data.field.shallowRowsCsv = submitForm.find('[name="shallowRowsCsv"]').val();
|
data.field.deepRowsCsv = submitForm.find('[name="deepRowsCsv"]').val();
|
}
|
$.ajax({
|
url: baseUrl + '/basCrnDepthRule/' + (mData ? 'update' : 'add') + '/auth',
|
headers: {'token': localStorage.getItem('token')},
|
data: data.field,
|
method: 'POST',
|
success: function (res) {
|
if (res.code === 200) {
|
layer.close(dIndex);
|
layer.msg(res.msg, {icon: 1});
|
tableReload();
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
} else {
|
layer.msg(res.msg, {icon: 2});
|
}
|
}
|
});
|
return false;
|
});
|
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
}
|
});
|
}
|
|
form.on('select(crnDepthLayoutType)', function (data) {
|
autoFillDepthRows($(data.elem).closest('form'));
|
});
|
|
function autoFillDepthRows(formEl) {
|
if (!formEl || formEl.length === 0 || formEl.attr('data-auto-row-fill') !== 'true') {
|
return;
|
}
|
var layoutType = $.trim(formEl.find('[name="layoutType"]').val());
|
var searchRowsCsv = $.trim(formEl.find('[name="searchRowsCsv"]').val());
|
if (layoutType === '1') {
|
formEl.find('[name="shallowRowsCsv"]').val(searchRowsCsv);
|
formEl.find('[name="deepRowsCsv"]').val('');
|
return;
|
}
|
if (layoutType === '2') {
|
var searchRows = parseRows(searchRowsCsv);
|
var shallowRows = [];
|
var deepRows = [];
|
if (searchRows.length > 0) {
|
deepRows.push(searchRows[0]);
|
}
|
if (searchRows.length > 1) {
|
deepRows.push(searchRows[searchRows.length - 1]);
|
shallowRows.push(searchRows[1]);
|
}
|
if (searchRows.length > 2) {
|
shallowRows.push(searchRows[2]);
|
}
|
formEl.find('[name="shallowRowsCsv"]').val(shallowRows.join(','));
|
formEl.find('[name="deepRowsCsv"]').val(deepRows.join(','));
|
}
|
}
|
|
function parseRows(rowsCsv) {
|
var rows = [];
|
if (!rowsCsv) {
|
return rows;
|
}
|
var normalized = rowsCsv.replace(/,/g, ',')
|
.replace(/;/g, ';')
|
.replace(/、/g, ',')
|
.replace(/\s+/g, '');
|
if (!normalized) {
|
return rows;
|
}
|
$.each(normalized.split(/[,;]/), function (_, segment) {
|
if (!segment) {
|
return true;
|
}
|
if (segment.indexOf('-') > -1) {
|
addRangeRows(rows, segment);
|
return true;
|
}
|
addRow(rows, segment);
|
return true;
|
});
|
return rows;
|
}
|
|
function addRangeRows(rows, segment) {
|
var rangeParts = segment.split('-', 2);
|
var startRow = parsePositiveInt(rangeParts[0]);
|
var endRow = parsePositiveInt(rangeParts[1]);
|
if (startRow == null || endRow == null) {
|
return;
|
}
|
var step = startRow <= endRow ? 1 : -1;
|
for (var row = startRow; step > 0 ? row <= endRow : row >= endRow; row += step) {
|
addUniqueRow(rows, row);
|
}
|
}
|
|
function addRow(rows, rowText) {
|
var row = parsePositiveInt(rowText);
|
if (row != null) {
|
addUniqueRow(rows, row);
|
}
|
}
|
|
function parsePositiveInt(value) {
|
var rowText = $.trim(String(value));
|
if (!/^\d+$/.test(rowText)) {
|
return null;
|
}
|
var row = parseInt(rowText, 10);
|
return isNaN(row) || row <= 0 ? null : row;
|
}
|
|
function addUniqueRow(rows, row) {
|
if ($.inArray(row, rows) === -1) {
|
rows.push(row);
|
}
|
}
|
|
function openTemplateDialog(generate) {
|
admin.open({
|
type: 1,
|
area: '520px',
|
title: generate ? '模板生成' : '模板预览',
|
content: $('#templateDialog').html(),
|
success: function (layero, dIndex) {
|
form.val('templateForm', {enabled: 1});
|
form.render('select');
|
form.on('submit(templateSubmit)', function (data) {
|
$.ajax({
|
url: baseUrl + '/basCrnDepthRule/' + (generate ? 'templateGenerate' : 'templatePreview') + '/auth',
|
headers: {'token': localStorage.getItem('token')},
|
data: data.field,
|
method: 'POST',
|
success: function (res) {
|
if (res.code === 200) {
|
if (generate) {
|
layer.close(dIndex);
|
layer.msg(res.msg, {icon: 1});
|
tableReload();
|
return;
|
}
|
layer.alert('<pre style="white-space: pre-wrap;max-height: 480px;overflow:auto;">' +
|
JSON.stringify(res.data, null, 2) + '</pre>', {
|
title: '模板预览'
|
});
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
} else {
|
layer.msg(res.msg, {icon: 2});
|
}
|
}
|
});
|
return false;
|
});
|
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
}
|
});
|
}
|
|
function openRuntimeDialog() {
|
admin.open({
|
type: 1,
|
area: '560px',
|
title: '运行预览',
|
content: $('#runtimeDialog').html(),
|
success: function (layero) {
|
form.on('submit(runtimeSubmit)', function (data) {
|
$.ajax({
|
url: baseUrl + '/basCrnDepthRule/runtimePreview/auth',
|
headers: {'token': localStorage.getItem('token')},
|
data: data.field,
|
method: 'POST',
|
success: function (res) {
|
if (res.code === 200) {
|
layer.alert('<pre style="white-space: pre-wrap;max-height: 520px;overflow:auto;">' +
|
JSON.stringify(res.data, null, 2) + '</pre>', {
|
title: '运行预览结果'
|
});
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
} else {
|
layer.msg(res.msg, {icon: 2});
|
}
|
}
|
});
|
return false;
|
});
|
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
}
|
});
|
}
|
|
function exportData(obj) {
|
admin.confirm('确定导出Excel吗', {shadeClose: true}, function () {
|
var titles = [];
|
var fields = [];
|
obj.config.cols[0].map(function (col) {
|
if (col.type === 'normal' && col.hide === false && col.toolbar == null) {
|
titles.push(col.title);
|
fields.push(col.field);
|
}
|
});
|
var param = {
|
basCrnDepthRule: collectSearchData(),
|
fields: fields
|
};
|
$.ajax({
|
url: baseUrl + '/basCrnDepthRule/export/auth',
|
headers: {'token': localStorage.getItem('token')},
|
data: JSON.stringify(param),
|
dataType: 'json',
|
contentType: 'application/json;charset=UTF-8',
|
method: 'POST',
|
success: function (res) {
|
if (res.code === 200) {
|
table.exportFile(titles, res.data, 'xls');
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
} else {
|
layer.msg(res.msg, {icon: 2});
|
}
|
}
|
});
|
});
|
}
|
|
function del(rows) {
|
layer.confirm('确定要删除选中数据吗?', {skin: 'layui-layer-admin', shade: .1}, function (i) {
|
layer.close(i);
|
$.ajax({
|
url: baseUrl + '/basCrnDepthRule/delete/auth',
|
headers: {'token': localStorage.getItem('token')},
|
data: {param: JSON.stringify(rows)},
|
method: 'POST',
|
success: function (res) {
|
if (res.code === 200) {
|
layer.msg(res.msg, {icon: 1});
|
tableReload();
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
} else {
|
layer.msg(res.msg, {icon: 2});
|
}
|
}
|
});
|
});
|
}
|
|
form.on('submit(search)', function () {
|
pageCurr = 1;
|
tableReload();
|
return false;
|
});
|
|
form.on('submit(reset)', function () {
|
pageCurr = 1;
|
clearFormVal($('#search-box'));
|
tableReload();
|
return false;
|
});
|
});
|
|
function tableReload() {
|
var searchData = {};
|
$.each($('#search-box [name]').serializeArray(), function () {
|
searchData[this.name] = this.value;
|
});
|
tableIns.reload({
|
where: searchData,
|
page: {curr: pageCurr || 1}
|
});
|
}
|