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 = '
' + '' + '
' + '
' + '
' + '
'; if (hasChangeLog) { tabContent += '
' + '
' + '
'; } tabContent += '
'; 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 }); });