var insTbCount = 0;
|
layui.config({
|
base: baseUrl + "/static/layui/lay/modules/"
|
}).use(['layer', 'form', 'table', 'util', 'admin', 'laydate', 'element'], function () {
|
var $ = layui.jquery;
|
var layer = layui.layer;
|
var form = layui.form;
|
var table = layui.table;
|
var util = layui.util;
|
var admin = layui.admin;
|
var layDate = layui.laydate;
|
var laytpl = layui.laytpl;
|
var element = layui.element;
|
|
// 渲染搜索模板
|
$.ajax({
|
url: baseUrl + "/docType/list/auth",
|
headers: { 'token': localStorage.getItem('token') },
|
data: {
|
limit: 9999,
|
pakout: 1
|
},
|
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');
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
} else {
|
layer.msg(res.msg, { icon: 2 })
|
}
|
}
|
})
|
|
// 渲染表格
|
var insTb = table.render({
|
elem: '#order',
|
url: baseUrl + '/order/pakoutLog/order/head/page/auth',
|
method: 'POST',
|
headers: { token: localStorage.getItem('token') },
|
page: true,
|
cellMinWidth: 100,
|
cols: [[
|
{ type: 'numbers' },
|
{ field: 'orderNo', title: '单据编号', templet: '#orderNoTpl' },
|
{ field: 'orderTime', align: 'center', title: '业务时间' },
|
{ field: 'cstmrName', align: 'center', title: '客户' },
|
{ 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: 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, count) {
|
limit();
|
if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
}
|
insTbCount = count;
|
}
|
});
|
|
// 搜索
|
form.on('submit(tbSearch)', function (data) {
|
insTb.reload({ where: data.field, page: { curr: 1 } });
|
});
|
|
// 工具条点击事件
|
table.on('tool(order)', function (obj) {
|
var data = obj.data;
|
var layEvent = obj.event;
|
if (layEvent === 'wrkTrace') {
|
showWrkTrace(data.id);
|
} else if (layEvent === 'look') {
|
var $a = $(obj.tr).find('a[lay-event="look"]');
|
var offset = $a.offset();
|
var top = offset.top;
|
var left = offset.left;
|
var hasChangeLog = data.hasChangeLog || false;
|
var tabContent = '<div class="layui-tab layui-tab-brief" lay-filter="orderDetailTab">' +
|
'<ul class="layui-tab-title">' +
|
'<li class="layui-this">单据明细</li>';
|
if (hasChangeLog) {
|
tabContent += '<li>业务时间变更记录</li>';
|
}
|
tabContent += '</ul>' +
|
'<div class="layui-tab-content" style="padding: 10px 0;">' +
|
'<div class="layui-tab-item layui-show">' +
|
'<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>' +
|
'</div>';
|
if (hasChangeLog) {
|
tabContent += '<div class="layui-tab-item">' +
|
'<table id="changeLogTable" lay-filter="changeLogTable"></table>' +
|
'</div>';
|
}
|
tabContent += '</div></div>';
|
|
layer.open({
|
type: 1,
|
title: false,
|
area: '820px',
|
offset: [top + 'px', (left - 530 + $a.outerWidth()) + 'px'],
|
shade: .01,
|
shadeClose: true,
|
fixed: false,
|
content: tabContent,
|
success: function (layero) {
|
// 渲染单据明细表格
|
table.render({
|
elem: '#lookSSXMTable',
|
method: 'POST',
|
headers: { token: localStorage.getItem('token') },
|
url: baseUrl + '/order/pakoutLog/orderDetl/list/auth',
|
where: {
|
order_id: data.id
|
},
|
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: 'specs', title: '规格' }
|
]],
|
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 () {
|
$(layero).find('.layui-table-view').css('margin', '0');
|
},
|
size: ''
|
});
|
|
// 标签切换事件
|
var changeLogTableRendered = false;
|
element.on('tab(orderDetailTab)', function(elem){
|
if (hasChangeLog && elem.index === 1 && !changeLogTableRendered) {
|
// 切换到变更记录标签时才查询(只查询一次)
|
changeLogTableRendered = true;
|
table.render({
|
elem: '#changeLogTable',
|
method: 'POST',
|
headers: { token: localStorage.getItem('token') },
|
url: baseUrl + '/orderTimeChangeLog/list/byOrderId/auth',
|
where: {
|
orderId: data.id
|
},
|
page: false,
|
cellMinWidth: 100,
|
cols: [[
|
{ type: 'numbers' },
|
{ field: 'oldOrderTime', title: '原业务时间', width: 180 },
|
{ field: 'newOrderTime', title: '新业务时间', width: 180 },
|
{ field: 'memo', title: '备注', minWidth: 200 },
|
{ field: 'createByName', title: '操作人', width: 120 },
|
{ field: 'createTime$', title: '变更时间', width: 180 }
|
]],
|
parseData: function (res) {
|
return {
|
'code': res.code,
|
'msg': res.msg,
|
'count': res.data ? res.data.length : 0,
|
'data': res.data || []
|
}
|
},
|
response: {
|
statusCode: 200
|
}
|
});
|
}
|
});
|
}
|
});
|
} else if (layEvent === 'editOrderTime') {
|
// 检查是否已月结
|
if (data.monthlySettleId && data.monthlySettleId > 0) {
|
layer.msg('该单据已月结,不能修改业务时间', { icon: 2 });
|
return;
|
}
|
showEditOrderTimeDialog(data);
|
}
|
});
|
|
// 任务追溯
|
function showWrkTrace(orderId) {
|
let loadIndex = layer.msg('请求中...', { icon: 16, shade: 0.01, time: false });
|
$.ajax({
|
url: baseUrl + "/order/pakoutLog/order/wrk/trace/auth",
|
headers: { 'token': localStorage.getItem('token') },
|
data: {
|
orderId: orderId
|
},
|
method: 'POST',
|
success: function (res) {
|
layer.close(loadIndex);
|
if (res.code === 200) {
|
laytpl(wrkTraceDialog.innerHTML).render(res.data, function (html) {
|
admin.open({
|
type: 1,
|
title: '任务追溯',
|
area: ['800px', '450px'],
|
shadeClose: true,
|
content: html,
|
success: function (layero, dIndex) {
|
$(layero).children('.layui-layer-content').css('overflow', 'visible');
|
/** 统计图表 */
|
var traceCharts = echarts.init(document.getElementById('wrkTraceCharts'));
|
var traceOptions = {
|
title: {
|
text: '总量/作业/完成', 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 } } }]
|
};
|
traceCharts.setOption(traceOptions);
|
// 赋值
|
traceCharts.setOption({
|
title: {
|
subtext: res.data.totalQty + "/" + res.data.wrkQty + "/" + res.data.endQty
|
},
|
series: [
|
{
|
data: [
|
{ name: '已作业', value: res.data.wrkQty },
|
{ name: '未作业', value: res.data.totalQty - res.data.wrkQty - res.data.lackQty },
|
{ name: '库存不足', value: res.data.lackQty },
|
]
|
}
|
]
|
});
|
}
|
});
|
});
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
} else {
|
layer.msg(res.msg, { icon: 2 });
|
}
|
}
|
})
|
}
|
|
// 显示修改业务时间弹窗
|
function showEditOrderTimeDialog(data) {
|
admin.open({
|
type: 1,
|
title: '修改业务时间',
|
content: $('#editOrderTimeDialog').html(),
|
area: '400px',
|
success: function (layero, dIndex) {
|
// 回显数据
|
form.val('editOrderTimeForm', {
|
id: data.id,
|
orderTime: data.orderTime
|
});
|
// 初始化业务时间日期选择器(支持选择时分秒)
|
layDate.render({
|
elem: '#orderTimeEdit',
|
type: 'datetime',
|
format: 'yyyy-MM-dd HH:mm:ss',
|
value: data.orderTime || '',
|
btns: ['clear', 'confirm'],
|
ready: function(date){
|
// 确保时分秒选择器显示
|
var layero = this.elem.next();
|
if(layero.length > 0) {
|
layero.find('.laydate-time-list').show();
|
}
|
}
|
});
|
// 表单提交事件
|
form.on('submit(editOrderTimeSubmit)', function (formData) {
|
// 前端校验:检查新旧时间是否相同
|
var oldOrderTime = data.orderTime;
|
var newOrderTime = formData.field.orderTime;
|
if (oldOrderTime && oldOrderTime === newOrderTime) {
|
layer.msg('新业务时间与原业务时间相同,无需修改', { icon: 2 });
|
return false;
|
}
|
layer.load(2);
|
$.ajax({
|
url: baseUrl + "/order/pakoutLog/order/update/orderTime/auth",
|
headers: { 'token': localStorage.getItem('token') },
|
data: {
|
id: formData.field.id,
|
orderTime: formData.field.orderTime,
|
memo: formData.field.memo || ''
|
},
|
method: 'POST',
|
success: function (res) {
|
layer.closeAll('loading');
|
if (res.code === 200) {
|
layer.close(dIndex);
|
insTb.reload({ page: { curr: 1 } });
|
layer.msg(res.msg, { icon: 1 });
|
} else if (res.code === 403) {
|
top.location.href = baseUrl + "/";
|
} else {
|
layer.msg(res.msg, { icon: 2 });
|
}
|
}
|
});
|
return false;
|
});
|
}
|
});
|
}
|
|
|
layDate.render({
|
elem: '.layui-laydate-range'
|
, type: 'datetime'
|
, range: true
|
});
|
});
|