src/main/java/com/zy/asrs/controller/LocDetlController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/controller/OrderController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/controller/OrderDetlController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/locDetlGroup/locDetlGroup2.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/static/js/order/orderLog.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/order/orderLog.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/LocDetlController.java
@@ -48,7 +48,7 @@ return R.ok(); } @RequestMapping(value = "/locDetl/{id}/auth") @RequestMapping(value = "/locDetl/{id}/authv2") @ManagerAuth public R get(@PathVariable("id") String id) { return R.ok(locDetlService.selectById(String.valueOf(id))); src/main/java/com/zy/asrs/controller/OrderController.java
@@ -54,6 +54,8 @@ @Autowired private LocDetlService locDetlService; @Autowired private OrderLogService orderLogService; @Autowired private MatService matService; @RequestMapping(value = "/order/nav/list/auth") @@ -338,6 +340,21 @@ return R.ok(orderService.selectPage(new Page<>(curr, limit), wrapper)); } @RequestMapping(value = "/order/list/log/auth") @ManagerAuth public R listLog(@RequestParam(defaultValue = "1")Integer curr, @RequestParam(defaultValue = "10")Integer limit, @RequestParam(required = false)String orderByField, @RequestParam(required = false)String orderByType, @RequestParam Map<String, Object> param){ EntityWrapper<OrderLog> wrapper = new EntityWrapper<>(); wrapper.orderBy("create_time"); excludeTrash(param); convert(param, wrapper); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} return R.ok(orderLogService.selectPage(new Page<>(curr, limit), wrapper)); } private <T> void convert(Map<String, Object> map, EntityWrapper<T> wrapper){ for (Map.Entry<String, Object> entry : map.entrySet()){ String val = String.valueOf(entry.getValue()); src/main/java/com/zy/asrs/controller/OrderDetlController.java
@@ -10,6 +10,8 @@ import com.core.common.DateUtils; import com.core.common.R; import com.zy.asrs.entity.OrderDetl; import com.zy.asrs.entity.OrderDetlLog; import com.zy.asrs.service.OrderDetlLogService; import com.zy.asrs.service.OrderDetlService; import com.zy.common.web.BaseController; import org.springframework.beans.factory.annotation.Autowired; @@ -25,6 +27,9 @@ @Autowired private OrderDetlService orderDetlService; @Autowired private OrderDetlLogService orderDetlLogService; @RequestMapping(value = "/orderDetl/{id}/auth") @ManagerAuth @@ -49,6 +54,23 @@ return R.ok(orderDetlService.selectPage(new Page<>(curr, limit), wrapper)); } @RequestMapping(value = "/orderDetl/list/log/auth") @ManagerAuth public R listLog(@RequestParam(defaultValue = "1")Integer curr, @RequestParam(defaultValue = "10")Integer limit, @RequestParam(required = false)String orderByField, @RequestParam(required = false)String orderByType, @RequestParam Map<String, Object> param){ EntityWrapper<OrderDetlLog> wrapper = new EntityWrapper<>(); excludeTrash(param); convert(param, wrapper); if (!Cools.isEmpty(orderByField)){wrapper.orderBy(humpToLine(orderByField), "asc".equals(orderByType));} else { wrapper.orderBy("create_time", false); } wrapper.eq("status", 1); return R.ok(orderDetlLogService.selectPage(new Page<>(curr, limit), wrapper)); } @RequestMapping(value = "/orderDetl/pakout/list/auth") @ManagerAuth public R pakoutList(@RequestParam(defaultValue = "1")Integer curr, src/main/webapp/static/js/locDetlGroup/locDetlGroup2.js
@@ -388,7 +388,7 @@ }; $.ajax({ url: baseUrl + "/locDetl/" + name + "/auth", url: baseUrl + "/locDetl/" + name + "/authv2", headers: {'token': localStorage.getItem('token')}, data: top.reObject(data), method: 'POST', src/main/webapp/static/js/order/orderLog.js
New file @@ -0,0 +1,617 @@ var insTbCount = 0; var admin; var insTb layui.config({ base: baseUrl + "/static/layui/lay/modules/" }).use(['layer', 'form', 'table', 'util', 'admin', 'xmSelect', 'laydate'], function () { var $ = layui.jquery; var layer = layui.layer; var form = layui.form; var table = layui.table; var util = layui.util; admin = layui.admin; var xmSelect = layui.xmSelect; var layDate = layui.laydate; var laytpl = layui.laytpl; // 渲染搜索模板 $.ajax({ url: baseUrl+"/docType/list/auth", headers: {'token': localStorage.getItem('token')}, data: { limit: 9999 }, 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}) } } }) // 渲染表格 insTb = table.render({ elem: '#order', url: baseUrl+'/order/list/log/auth', headers: {token: localStorage.getItem('token')}, page: true, cellMinWidth: 100, cols: [[ {type: 'numbers'}, {field: 'orderNo', title: '单据编号', templet: '#orderNoTpl'}, {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: 280} ]], 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}}); }); // 添加 $("#orderAddBtn").click(function () { showEditModel(); }); // 导入销售单 $("#importOrder").click(function () { $("#importExcel").trigger("click"); }); // 工具条点击事件 table.on('tool(order)', function (obj) { var data = obj.data; var layEvent = obj.event; if (layEvent === 'edit') { showEditModel(data); } else if (layEvent === 'wrkTrace') { showWrkTrace(data.id); } else if (layEvent === 'del') { doDel(data.id); } else if (layEvent === 'exportData') { doExport(obj); } else if (layEvent === 'complete') { doModify(data.id, 4); } 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; layer.open({ type: 1, title: false, area: '820px', offset: [top + 'px', (left - 530 + $a.outerWidth()) + 'px'], shade: .01, shadeClose: true, fixed: false, content: '<table id="lookSSXMTable" lay-filter="lookSSXMTable"></table>', success: function (layero) { table.render({ elem: '#lookSSXMTable', headers: {token: localStorage.getItem('token')}, url: baseUrl+'/orderDetl/list/log/auth', where: { order_id: data.id }, page: true, cellMinWidth: 100, cols: [[ {type: 'numbers'}, {field: 'matnr', title: '商品编码', width: 280}, {field: 'maktx', title: '商品名称', width: 150}, // {field: 'batch', title: '批号'}, {field: 'specs', title: '规格', width: 180}, {field: 'anfme', title: '数量', width: 70}, {field: 'qty', title: '作业数量', style: 'font-weight: bold', width: 90} // {field: 'unit', title: '单位'}, // { // field: 'createTime$', title: '创建时间', sort: true, templet: function (d) { // return util.toDateString(d.createTime); // }, width: 180 // }, // {field: 'inQty', title: '已入库量'}, // {field: 'color', 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: '' }); } }); } }); // 显示表单弹窗 function showEditModel(expTpe) { admin.open({ type: 1, title: (expTpe ? '修改' : '添加') + '单据', content: $('#editDialog').html(), area: '1300px', success: function (layero, dIndex) { $(layero).children('.layui-layer-content').css('overflow', 'visible'); var isExpAdd = !expTpe; // 回显数据 form.val('editForm', expTpe); if (expTpe) { $('#orderNo').attr("disabled", "disabled"); } // 表单提交事件 form.on('submit(orderEditSubmit)', function (data) { // 组装数据 if (xxDataList.length <= 0) { layer.tips('请添加单据明细', '#matAddBtnComment', {tips: [1, '#ff4c4c']}); return false; } let nList = admin.util.deepClone(xxDataList); for (let xi = 0; xi < nList.length; xi++) { if (nList[xi].anfme <= 0){ layer.msg('明细修改数量不合法', {icon: 2}); return false; } } layer.load(2); $.ajax({ url: baseUrl+"/order/form/" + (isExpAdd?"add":"modify") + "/auth", headers: {'token': localStorage.getItem('token')}, data: JSON.stringify({ orderId: Number(data.field.id), docType: Number(data.field.docType), orderNo: data.field.orderNo, orderDetlList: nList }), contentType:'application/json;charset=UTF-8', method: 'POST', success: function (res) { layer.closeAll('loading'); if (res.code === 200){ layer.close(dIndex); $(".layui-laypage-btn")[0].click(); layer.msg(res.msg, {icon: 1}); } else if (res.code === 403){ top.location.href = baseUrl+"/"; }else { layer.msg(res.msg, {icon: 2}); } } }) return false; }); // 明细表格 var xxDataList = []; var tbOptions = { elem: '#formSSXMTable', headers: {token: localStorage.getItem('token')}, data: xxDataList, page: true, height: '350px;', cellMinWidth: 100, cols: [[ {type: 'numbers', title: '#'}, {field: 'matnr', title: '商品编码', width: 280}, {field: 'maktx', title: '商品名称', width: 150}, // {field: 'batch', title: '批号', edit: true}, {field: 'specs', title: '规格', width: 180}, {field: 'anfme', title: '数量(修改)', style: 'color: blue;font-weight: bold', edit: true, minWidth: 110, width: 100}, {field: 'sum', title: '库存数量', style: 'color: red;font-weight: bold', minWidth: 110, width: 100}, // {field: 'inQty', title: '已入库量', minWidth: 100, width: 100}, // {field: 'unit', title: '单位', width: 80}, {field: 'memo', title: '备注' , edit: true}, {align: 'center', title: '操作', toolbar: '#formSSXMTableBar', minWidth: 80, width: 80, fixed: 'right'} ]], done: function (res) { $(layero).find('.layui-table-view').css('margin', '0'); }, size: '' }; if (!isExpAdd) { $.ajax({ url: baseUrl+"/order/detl/all/auth?orderId=" + expTpe.id, headers: {'token': localStorage.getItem('token')}, method: 'GET', async: false, success: function (res) { if (res.code === 200){ xxDataList = res.data; tbOptions.data = xxDataList; } else if (res.code === 403){ top.location.href = baseUrl+"/"; }else { layer.msg(res.msg, {icon: 2}) } } }) } var insTbSSXM = table.render(tbOptions); // 工具条点击事件 table.on('tool(formSSXMTable)', function (obj) { var data = obj.data; var layEvent = obj.event; if (layEvent === 'edit') { showEditModel2(data); } else if (layEvent === 'del') { layer.confirm('确定要删除吗?', { shade: .1, skin: 'layui-layer-admin' }, function (i) { layer.close(i); for (var j = 0; j < xxDataList.length; j++) { if (xxDataList[j].matnr === data.matnr && xxDataList[j].batch === data.batch) { xxDataList.splice(j, 1); break; } } insTbSSXM.reload({data: xxDataList, page: {curr: 1}}); }); } }); // 明细数据修改 table.on('edit(formSSXMTable)', function (obj) { let index = obj.tr.attr("data-index"); let data = xxDataList[index]; if (obj.field === 'anfme'){ let vle = Number(obj.value); if (isNaN(vle)) { layer.msg("请输入数字", {icon: 2}); return false; } else { if (vle <= 0) { layer.msg("数量必须大于零", {icon: 2}); return false; } } } data[obj.field] = obj.value; insTbSSXM.reload({data: xxDataList}); }); $('#matAddBtnComment').click(function () { showEditModel2(); }); // 显示添加明细表单弹窗 function showEditModel2(exp) { admin.open({ type: 1, offset: '150px', area: '680px', title: (exp ? '修改' : '添加') + '明细', content: $('#matEditDialog').html(), success: function (layero, dIndex) { // 回显数据 form.val('matEditForm', exp); // 表单提交事件 form.on('submit(matEditSubmit)', function (data) { let selectList = matXmSelect.getValue(); for (let i = 0; i<selectList.length; i++) { let item = selectList[i]; // 查询物料详情 $.ajax({ url: baseUrl+"/mat/covert/"+btoa(item.value)+"/auth", headers: {'token': localStorage.getItem('token')}, method: 'GET', async: false, success: function (res) { if (res.code === 200){ var bige=true; for (var j = 0; j < xxDataList.length; j++) { if (xxDataList[j].matnr === res.data.matnr && xxDataList[j].batch === res.data.batch) { bige=false; break; } } if (bige){ xxDataList.push(res.data); insTbSSXM.reload({data: xxDataList, page: {curr: 1}}); } } else if (res.code === 403){ top.location.href = baseUrl+"/"; }else { layer.msg(res.msg, {icon: 2}) } } }) } layer.close(dIndex); return false; }); // 渲染物料选择 var matXmSelect = xmSelect.render({ el: '#mat', style: { width: '340px', }, autoRow: true, toolbar: { show: true }, filterable: true, remoteSearch: true, remoteMethod: function(val, cb, show){ $.ajax({ url: baseUrl+"/mat/all/get/kv", headers: {'token': localStorage.getItem('token')}, data: { condition: val }, method: 'POST', success: function (res) { if (res.code === 200){ cb(res.data) } else { cb([]); layer.msg(res.msg, {icon: 2}); } } }); } }) // 弹窗不出现滚动条 $(layero).children('.layui-layer-content').css('overflow', 'visible'); layui.form.render('select'); } }); } } }); } // 删除单据 function doDel(orderId) { layer.confirm('确定要删除吗?', { shade: .1, skin: 'layui-layer-admin' }, function (i) { layer.close(i); layer.load(2); $.ajax({ url: baseUrl+"/order/delete/auth", headers: {'token': localStorage.getItem('token')}, data: { orderId: orderId }, method: 'POST', success: function (res) { layer.closeAll('loading'); if (res.code === 200){ if (insTbCount === 0) { insTb.reload({page: {curr: 1}}); } else { $(".layui-laypage-btn")[0].click(); } layer.msg(res.msg, {icon: 1}); } else if (res.code === 403){ top.location.href = baseUrl+"/"; }else { layer.msg(res.msg, {icon: 2}); } } }) }); } // 导出单据 function doExport(obj) { layer.confirm('确定导出Excel吗?', { shade: .1, }, function (i) { var titles=['订单号','商品编号','商品名称','规格','订单数量','作业数量']; $.ajax({ url: baseUrl+"/order/exportOrder/auth", headers: {'token': localStorage.getItem('token')}, data: { orderId: obj.data.id }, method: 'POST', success: function (res) { layer.closeAll(); if (res.code === 200){ var tableName = '订单 ' + res.data[0][0] table.exportFile(titles,res.data,'xls',tableName); } else if (res.code === 403){ top.location.href = baseUrl+"/"; }else { layer.msg(res.msg, {icon: 2}); } } }) }); } // 修改订单状态 function doModify(orderId, settle) { layer.confirm('确定要手动完结吗?', { shade: .1, skin: 'layui-layer-admin' }, function (i) { layer.close(i); layer.load(2); $.ajax({ url: baseUrl+"/order/update/auth", headers: {'token': localStorage.getItem('token')}, data: { id: orderId, settle: settle }, method: 'POST', success: function (res) { layer.closeAll('loading'); if (res.code === 200){ if (insTbCount === 0) { insTb.reload({page: {curr: 1}}); } else { $(".layui-laypage-btn")[0].click(); } layer.msg(res.msg, {icon: 1}); } else if (res.code === 403){ top.location.href = baseUrl+"/"; }else { layer.msg(res.msg, {icon: 2}); } } }) }); } // 任务追溯 function showWrkTrace(orderId) { let loadIndex = layer.msg('请求中...', {icon: 16, shade: 0.01, time: false}); $.ajax({ url: baseUrl+"/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.wrkQty+"/"+res.data.totalQty }, 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}); } } }) } layDate.render({ elem: '.layui-laydate-range' ,type: 'datetime' ,range: true }); }); function upload(obj){ if(!obj.files) { return; } var file = obj.files[0]; admin.confirm('确认导入 [' + file.name +'] 文件吗?', function (index) { layer.load(1, {shade: [0.1,'#fff']}); var url = baseUrl + "/order/excel/import/auth"; var form = new FormData(); form.append("file", file); let xhr = new XMLHttpRequest(); xhr.open("post", url, true); xhr.setRequestHeader('token', localStorage.getItem('token')); xhr.onload = uploadComplete; xhr.onerror = uploadFailed; xhr.onloadend = function () { layer.closeAll('loading'); }; // xhr.upload.onprogress = progressFunction; xhr.upload.onloadstart = function(){ ot = new Date().getTime(); oloaded = 0; }; xhr.send(form); }, function(index){ }); } function uploadComplete(evt) { let res = JSON.parse(evt.target.responseText); if(res.code === 200) { layer.msg(res.msg, {icon: 1}); insTb.reload({page: {curr: 1}}); } else { alert(res.msg); // layer.msg(res.msg, {icon: 2}); } } function uploadFailed(evt) { let res = JSON.parse(evt.target.responseText); alert(res.msg); // layer.msg(res.msg, {icon: 2}); } src/main/webapp/views/order/orderLog.html
New file @@ -0,0 +1,311 @@ <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title></title> <meta name="renderer" content="webkit"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <link rel="stylesheet" href="../../static/layui/css/layui.css" media="all"> <link rel="stylesheet" href="../../static/css/admin.css?v=318" media="all"> <link rel="stylesheet" href="../../static/css/cool.css" media="all"> <!-- <link rel="stylesheet" href="../../static/css/common.css" media="all">--> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <style> .wrk-trace { color: green; cursor: pointer; margin-left: 6px; font-size: 18px; } .layui-timeline:first-child .layui-timeline-item { margin-top: 30px; } .btn-add { display: none; } .btn-edit { display: none; } .btn-complete { display: none; } .btn-delete { display: none; } </style> </head> <body> <!-- 正文开始 --> <div class="layui-fluid"> <div class="layui-card"> <div class="layui-card-body"> <!-- 表格顶部工具栏 --> <div class="layui-form toolbar"> <div class="layui-form-item"> <div class="layui-inline"> <div class="layui-input-inline mr0"> <input name="order_no" class="layui-input" type="text" placeholder="输入单据编号"/> </div> </div> <div class="layui-inline" style="width: 300px"> <div class="layui-input-inline"> <input class="layui-input layui-laydate-range" name="create_time" type="text" placeholder="起始时间 - 终止时间" autocomplete="off" style="width: 300px"> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <select name="doc_type" id="docType-query"> </select> </div> </div> <div class="layui-inline"> <div class="layui-input-inline"> <select name="settle"> <option value="">选择状态</option> <option value="1">待处理</option> <option value="2">作业中</option> <option value="4">已完成</option> <option value="6">上报完成</option> </select> </div> </div> <div class="layui-inline"> <button class="layui-btn icon-btn" lay-filter="tbSearch" lay-submit> <i class="layui-icon"></i>搜索 </button> <button id="orderAddBtn" class="layui-btn icon-btn btn-add"> <i class="layui-icon"></i>添加 </button> <button id="importOrder" class="layui-btn icon-btn btn-add"> <i class="layui-icon layui-icon-upload"></i> 导入订单 </button> <input style="display:none" id="importExcel" type="file" onchange="upload(this)" > </div> </div> </div> <table id="order" lay-filter="order"></table> </div> </div> <div class="layui-card"> <div class="layui-card-body"> 入库通知单:由ERP提供单据编号、类型、单据时间及物料明细,生成入库作业单,为维护系统高可用,用户可自行添加入库通知单数据,完成独立的入库作业。 <span class="text-danger">手动添加时,请检查单据编号是否在ERP系统中已存在,避免发生数据错误问题。</span> </div> </div> </div> <!-- 表格操作列 --> <script type="text/html" id="operate"> {{# if (d.settle == 1 || d.settle == 2) { }} <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="edit">修改</a> {{# if (d.settle == 2) { }} <a class="layui-btn layui-btn-primary layui-border-blue layui-btn-xs btn-complete" lay-event="complete">完结</a> {{# } }} {{# } }} <a class="layui-btn layui-btn-danger layui-btn-xs btn-delete" lay-event="del">删除</a> <a class="layui-btn layui-btn-primary layui-btn-xs btn-edit" lay-event="exportData">导出</a> </script> <!-- 表格操作列 --> <script type="text/html" id="tbLook"> <span class="layui-text"> <a href="javascript:;" lay-event="look"> <i class="layui-icon" style="font-size: 12px;"></i> 查看单据明细 </a> </span> </script> <script type="text/html" id="orderNoTpl"> {{d.orderNo}} {{# if(d.settle > 1 && d.settle !== 3){ }} {{# } }} <i class="layui-icon layui-icon-about wrk-trace" lay-tips="查看任务追溯" lay-direction="2" lay-offset="-10px,0px" lay-event="wrkTrace"></i> </script> <script type="text/html" id="settleTpl"> <span name="settle" {{# if( d.settle === 1){ }} class="layui-badge layui-badge-red" {{# }else if(d.settle === 2){ }} class="layui-badge layui-badge-green" {{# }else if(d.settle === 3){ }} class="layui-badge layui-badge-gray" {{# }else if(d.settle === 4){ }} class="layui-badge layui-badge-blue" {{# }else if(d.settle === 5){ }} class="layui-badge layui-badge-gray" {{# }else if(d.settle === 6){ }} class="layui-badge layui-badge-gray" {{# } }} >{{d.settle$}}</span> </script> <!-- 表单弹窗 --> <script type="text/html" id="editDialog"> <form id="editForm" lay-filter="editForm" class="layui-form model-form"> <input name="id" type="hidden"/> <div class="layui-form-item"> <label class="layui-form-label">单据类型:</label> <div class="layui-input-block cool-auto-complete"> <input class="layui-input" name="docType" placeholder="请输入单据类型" style="display: none"> <input id="docType$" name="docType$" class="layui-input cool-auto-complete-div" onclick="autoShow(this.id)" type="text" placeholder="请输入单据类型" onfocus=this.blur() lay-verType="tips" lay-verify="required"> <div class="cool-auto-complete-window"> <input class="cool-auto-complete-window-input" data-key="docTypeQueryBydocType" onkeyup="autoLoad(this.getAttribute('data-key'))"> <select class="cool-auto-complete-window-select" data-key="docTypeQueryBydocTypeSelect" onchange="confirmed(this.getAttribute('data-key'))" multiple="multiple"> </select> </div> </div> </div> <div class="layui-form-item"> <label class="layui-form-label">单据编号:</label> <div class="layui-input-block"> <input id="orderNo" name="orderNo" placeholder="输入单据编号" type="text" class="layui-input" maxlength="20" lay-verType="tips" lay-verify="required"/> </div> </div> <div class="layui-form-item" style="position: relative;"> <label class="layui-form-label">单据明细:</label> <div class="layui-input-block"> <table id="formSSXMTable" lay-filter="formSSXMTable"></table> </div> <button class="layui-btn layui-btn-sm icon-btn" id="matAddBtnComment" style="position: absolute; left: 20px;top: 60px;padding: 0 5px;" type="button"> <i class="layui-icon"></i>添加明细 </button> </div> <div class="layui-form-item text-right"> <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button> <button class="layui-btn" lay-filter="orderEditSubmit" lay-submit>保存</button> </div> </form> </script> <!-- 表格操作列 --> <script type="text/html" id="formSSXMTableBar"> <!-- <a class="layui-btn layui-btn-primary layui-btn-xs" lay-event="edit">修改</a>--> <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a> </script> <!-- 表单弹窗 --> <script type="text/html" id="matEditDialog"> <form id="matEditForm" lay-filter="matEditForm" class="layui-form model-form"> <input name="experimentId" type="hidden"/> <div class="layui-form-item" style="float: left"> <label class="layui-form-label">物料 - 多选</label> <div class="layui-input-block"> <div id="mat" name="mat"> </div> </div> </div> <div class="layui-form-item text-right" style="display: inline-block; margin-left: 35px"> <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button> <button class="layui-btn" lay-filter="matEditSubmit" lay-submit>保存</button> </div> </form> </script> <!-- 订单任务追溯 --> <script id="wrkTraceDialog" type="text/html" style="position: relative"> <div style="position: absolute; top: 0; left: 0;"> <div class="layui-card" style="overflow: hidden;"> <div class="layui-card-header" style="text-align: center;width: 80%;font-weight: inherit;font-size: 18px">{{ d.orderNo }}</div> <div class="layui-card-body"> <div id="wrkTraceCharts" style="height: 300px;width: 400px;transform: translateX(-10%);"></div> </div> </div> </div> <div class="layui-row" > <div class="layui-col-md5"> <h1 style="opacity: 0;">Hello World</h1> </div> <div class="layui-col-md7" style=""> {{# if(d.list.length > 0){ }} <ul class="layui-timeline" style="height: 400px; overflow: scroll;"> {{# layui.each(d.list, function(index, item){ }} <li class="layui-timeline-item"> <i class="layui-icon layui-timeline-axis"></i> <div class="layui-timeline-content layui-text"> <div class="layui-timeline-title"> <h3 class="inline-block"> {{ item.wrkNo }} {{# if(item.wrkMast.ioType < 100){ }} <span class="layui-badge layui-bg-blue" style="line-height: 20px;"> {{ item.wrkMast.ioType$ }} </span> {{# } }} {{# if(item.wrkMast.ioType > 100){ }} <span class="layui-badge layui-bg-orange" style="line-height: 20px;"> {{ item.wrkMast.ioType$ }} </span> {{# } }} {{# if(item.wrkMast.wrkSts < 14){ }} <span class="layui-badge layui-bg-red" style="line-height: 20px;"> {{ item.wrkMast.wrkSts$ }} </span> {{# } }} {{# if(item.wrkMast.wrkSts >= 14){ }} <span class="layui-badge layui-bg-green" style="line-height: 20px;"> {{ item.wrkMast.wrkSts$ }} </span> {{# } }} </h3>  {{ item.wrkMast.ioTime$ }} </div> <table class="layui-table" lay-skin="nob" style="width: 80%"> <thead> <tr style="background: none"> <td>No.</td> <td>商品编号</td> <td>数量</td> </tr> </thead> <tbody> {{# layui.each(item.wrkDetls, function(idx, wrkDetl){ }} <tr> <td><span class="layui-badge layui-bg-cyan">{{ idx+1 }}</span></td> <td>{{ wrkDetl.matnr }}</td> <td style="font-weight: bold">{{ wrkDetl.anfme }}</td> </tr> {{# }); }} </tbody> </table> <hr class="layui-border-cyan" style="width: 90%; opacity: .6;"> </div> </li> {{# }); }} </ul> {{# } else { }} <div style="height: 350px;display: flex;justify-content: center;align-items: center;"> <h2 style="font-weight: bold;letter-spacing: 2px">暂无任务</h2> </div> {{# } }} </div> </div> </script> <script type="text/javascript" src="../../static/js/jquery/jquery-3.3.1.min.js"></script> <script type="text/javascript" src="../../static/js/handlebars/handlebars-v4.5.3.js"></script> <script type="text/javascript" src="../../static/layui/layui.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/echarts/echarts.min.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/common.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/cool.js" charset="utf-8"></script> <script type="text/javascript" src="../../static/js/order/orderLog.js" charset="utf-8"></script> <script type="text/template" id="docTypeTpl"> <option value="">选择类型</option> {{#each records}} <option value="{{docId}}">{{docName}}</option> {{/each}} </script> </body> </html>