<!DOCTYPE HTML> <html lang="zh" xmlns:th="http://www.thymeleaf.org" xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> <meta charset="utf-8"> <head th:include="include :: header"></head> <style> #toolbar1 { display: inline-block; /*position: absolute;*/ margin: 10px auto; line-height: 34px; } </style> <body class="gray-bg"> <div class="container-div"> <div class="row"> <div class="col-sm-12 select-info"> <ul id="myTab" class="nav nav-tabs"> <li class="active"><a href="#tabHeader" data-toggle="tab">主表</a></li> <li><a href="#tabDetail" data-toggle="tab">明细</a></li> </ul> <div id="myTabContent" class="tab-content"> <div class="tab-pane fade in active" id="tabHeader"> <div class="col-sm-12 select-info"> <form id="task-form"> <div class="select-list"> <ul> <input type="hidden" th:value="${InternalTaskType}" name="InternalTaskType"> <li> 库区: <select id="zoneCode" name="zoneCode" th:with="list=${@zone.getCode()}"> <option value="">所有</option> <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['code']}" th:attr=" code = ${item['code']}"></option> </select> </li> <li> 原仓库:<select name="warehouse" th:with="warehouse=${@dict.getType('originalWarehouse')}"> <option value="">所有</option> <option th:each="e : ${warehouse}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> </select> </li> <li> 任务id:<input type="text" name="id"/> </li> <li> 单据编码:<input type="billCode" name="billCode"/> </li> <li> 任务类型:<select id="taskType" name="taskType" th:with="type=${@dict.getType('taskType')}"> <option value="">所有</option> <option th:each="e : ${type}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option> </select> </li> <li> 容器编号:<input type="text" name="containerCode"/> </li> <li> 源库位编号:<input type="text" name="fromLocation"/> </li> <li> 目的库位编号:<input type="text" name="toLocation"/> </li> <li> 任务下达人:<input type="text" name="createdBy"/> </li> <li> 回传状态:<select id="backMoM" name="backMoM"> <option value="">所有</option> <option value="0">未回传</option> <option value="1">回传成功</option> <option value="3">回传失败</option> </select> <li id="replenishmentLi"> 补充入库查询:<select id="replenishment" name="replenishment"> <option value="">所有</option> <option value="0">无明细的补充入库</option> </select></li> <li class="time" style="height: 30px"> <label>创建时间: </label> <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin" autocomplete="off"/> <span>-</span> <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd" autocomplete="off"/> </li> <li class="time" style="height: 30px"> <label>任务完成时间: </label> <input type="text" class="time-input" id="startCompleteTime" placeholder="开始时间" name="completeTimeBegin" autocomplete="off"/> <span>-</span> <input type="text" class="time-input" id="endTimeCompleteTime" placeholder="结束时间" name="completeTimeEnd" autocomplete="off"/> </li> <li> <input type="hidden" name="internalTaskType" th:value="${InternalTaskType}"/> </li> <li> <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i> 搜索</a> <a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('task-form')"><i class="fa fa-refresh"></i> 重置</a> <!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="receipt:receiptHeader:export"><i class="fa fa-download"></i> 导出</a>--> </li> </ul> </div> </form> </div> <div class="btn-group hidden-xs" id="toolbar" role="group"> <!--<a class="btn btn-outline btn-info btn-rounded" onclick="emptyIn()" shiro:hasPermission="task:task:emptyIn">--> <!--<i class="fa fa-level-down"></i> 空托入库--> <!--</a>--> <!--<a class="btn btn-outline btn-info btn-rounded" onclick="emptyOut()" shiro:hasPermission="task:task:emptyOut">--> <!--<i class="fa fa-level-up"></i> 空托出库--> <!--</a>--> <!-- <a class="btn btn-outline btn-success btn-rounded" onclick="print()" shiro:hasPermission="task:task:execute">--> <!-- <i class="fa fa-print"></i> 打印--> <!-- </a>--> <!-- </a>--> <!-- <a class="btn btn-outline btn-danger btn-rounded" onclick="batchRemoveHead()">--> <!-- <i class="fa fa-remove"></i>批量取消--> <!-- </a>--> <a class="btn btn-outline btn-danger btn-rounded" onclick="batchRemoveHead()" shiro:hasPermission="task:task:batchRemoveHead"> <i class="fa fa-remove"></i>批量取消 </a> </div> <input type="hidden" id="taskId" name="taskId" th:value="${taskId}"/> <input type="hidden" id="internalTaskType" name="internalTaskType" th:value="${InternalTaskType}"/> <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover text-nowrap"></table> </div> <div class="tab-pane fade" id="tabDetail"> <div class="btn-group hidden-xs" id="toolbar1" role="group"> </div> <table id="bootstrap-table1" data-mobile-responsive="true" class="table table-bordered table-hover text-nowrap"></table> </div> </div> </div> </div> </div> <div th:include="include :: footer"></div> <script th:inline="javascript"> var editFlag = [[${@permission.hasPermi('task:taskHeader:edit')}]]; var removeFlag = [[${@permission.hasPermi('task:taskHeader:remove')}]]; var executeFlag = [[${@permission.hasPermi('task:taskHeader:execute')}]]; var completeFlag = [[${@permission.hasPermi('task:taskHeader:complete')}]]; var agvFlag = [[${@permission.hasPermi('task:task:agvFlag')}]]; var prefix = ctx + "task/taskHeader"; var prefix1 = ctx + "task/taskDetail" var stations = [[${@dict.getType('station')}]]; var taskTypes = [[${@dict.getType('taskType')}]]; var taskStatus = [[${@dict.getType('taskStatus')}]]; var taskDetailStatus = [[${@dict.getType('taskDetailStatus')}]]; var zone = [[${@zone.getCode()}]]; var originalWarehouse = [[${@dict.getType('originalWarehouse')}]]; var InternalTaskType = [[${InternalTaskType}]]; if (InternalTaskType != undefined && InternalTaskType != '') { if(InternalTaskType!=100){ $("#replenishmentLi").hide(); } } //完成开始 layui.use('laydate', function () { var laydate = layui.laydate; var day1 = new Date(); day1.setTime(day1.getTime() + 24 * 60 * 60 * 1000 * 1); laydate.render({elem: '#startCompleteTime', theme: 'molv'}); }); //完成结束 layui.use('laydate', function () { var laydate = layui.laydate; var day1 = new Date(); day1.setTime(day1.getTime() + 24 * 60 * 60 * 1000 * 1); laydate.render({elem: '#endTimeCompleteTime', theme: 'molv'}); }); $(function () { var options = { url: prefix + "/list", createUrl: prefix + "/add", updateUrl: prefix + "/edit/{id}", removeUrl: prefix + "/remove", modalName: "任务管理", showExport: true, //导出 exportDataType: "all", //导出类型basic', 'all', 'selected'.当前页、所有数据、选中数据 // height:610, sortName: "lastUpdated", sortOrder: "desc", search: false, clickToSelect: true, queryParams: queryParams, columns: [{ checkbox: true }, { title: '操作', align: 'center', formatter: function (value, row, index) { var actions = []; actions.push('<a class="btn btn-info btn-xs " href="#" onclick="detail(\'' + row.id + '\')"><i class="fa fa-list-ul"></i>明细</a> '); // console.log(row.status + "---" + row.flat + "---" + row.taskType + "---" + row.id) if (row.status == 1 && row.flat == 1 && row.taskType == 700) { actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成盘点任务</a>'); } if (row.status < 10 && row.flat != 1) { actions.push('<a class="btn btn-success btn-xs ' + executeFlag + '" href="#" onclick="execute(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>执行</a> '); } if (row.status < 10) { actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>取消</a> '); } if (row.status >= 10 && row.status < 100) { actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>取消</a> '); actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="complete(\'' + row.id + '\')"><i class="fa fa-check"></i>完成</a>'); } if (row.status >= 100 && row.backMoM === 3) { actions.push('<a class="btn btn-primary btn-xs ' + completeFlag + '" href="#" onclick="backERP(\'' + row.id + '\')"><i class="fa fa-check"></i>回传</a>'); } return actions.join(''); } }, { field: 'warehouse', title: '原仓库', align: 'center', formatter: function (value, row, index) { return $.table.selectDictLabel(originalWarehouse, value); } }, { field: 'id', title: '任务id', sortable: false }, { field: 'status', title: '任务状态', align: 'center', formatter: function (value, row, index) { if (value != undefined) { if (value == 1) { return '<span style="color:#263594">任务创建</span>' } else if (value == 10) { return '<span style="color:#b90e0e">执行状态</span>' } else if (value == 50) { return '<span style="color:#890eb9">到达拣选台</span>' } else if (value == 100) { return '<span style="color:green">完成完成</span>' } } return ''; } }, { field: 'zoneCode', title: '库区', align: 'center', formatter: function (value, row, index) { var actions = []; $.each(zone, function (index, dict) { if (dict.code == value) { actions.push("<span class='badge badge-info'>" + dict.name + "</span>"); return false; } }); return actions.join(''); } }, { field: 'companyCode', title: '货主编码', visible: false }, { field: 'taskType', title: '任务类型', align: 'center', visible: true, formatter: function (value, row, index) { return $.table.selectDictLabel(taskTypes, value); } }, { field: 'fromLocation', title: '源库位号', visible: true }, { field: 'toLocation', title: '目的库位号', visible: true }, { field: 'containerCode', title: '容器号', sortable: false }, { field: 'priority', title: '优先级' }, { field: 'weight', title: '重量' }, { field: 'port', title: '出库口', align: 'center', visible: true, }, { field: 'exceptionCode', title: '异常原因', sortable: false }, { field: 'isEmptyOut', title: '空出', sortable: false }, { field: 'isDoubleIn', title: '重入', sortable: false }, // { // field : 'originLocation', // title : '原始库位', // sortable: false // }, { field: 'startPickDateTime', title: '开始拣货时间', sortable: true, visible: false, }, { field: 'endPickDateTime', title: '截止拣货时间', visible: false, }, { field: 'created', title: '生成时间', sortable: false }, { field: 'createdBy', title: '任务下达人' }, { field: 'lastUpdated', title: '修改时间', sortable: false, }, { field: 'lastUpdatedBy', title: '任务完成人', visible: true, }, { field: 'completeTime', title: '任务完成时间', }, { field: 'backMoM', title: '回传状态', visible: true, align: 'center', formatter: function (value, row, index) { if (value != undefined) { if (value == 1) { return '<span style="color:#016201">回传成功</span>' } else if (value == 0) { return '<span style="color:#060d37">未回传</span>' } else if (value == 3) { return '<span style="color:#b90e0e">回传失败</span>' } } return ''; } }, { field: 'pushErrorCount', title: '回传错误次数', visible: true, }, { field: 'userDef1', title: '自定义字段1', visible: false }, { field: 'userDef2', title: '自定义字段2', visible: false }, { field: 'userDef3', title: '自定义字段3', visible: false } ] }; $.table.init(options); }); $("#bootstrap-table1").bootstrapTable({ // url: prefix1 + "/list", // createUrl: prefix1 + "/add", // updateUrl: prefix1 + "/edit/{id}", // removeUrl: prefix1 + "/remove", // queryParams: queryParams, sortable: true, //排序 showRefresh: true, //刷新 showToggle: true, //视图切换 clickToSelect: false, showColumns: true, //列选择 // detailView:true, showExport: true, //导出 exportDataType: "all", //导出类型basic', 'all', 'selected'.当前页、所有数据、选中数据 modalName: "任务明细", iconSize: "outline", toolbar: "#toolbar1", contentType: "application/x-www-form-urlencoded", sortName: "id", sortOrder: "desc", columns: [{ checkbox: true }, { field: 'id', title: '明细ID' }, { field: 'taskId', title: '任务头ID', sortable: false }, { field: 'billCode', title: '单据编码', }, { field: 'billDetailId', title: '单据明细ID', sortable: false, visible: true, }, { field: 'materialCode', title: '物料编码', }, { field: 'materialName', title: '物料名称', }, { field: 'projectNo', title: '项目号', visible: false, }, { field: 'containerCode', title: '容器编码', sortable: false }, { field: 'fromLocation', title: '源库位', sortable: false }, { field: 'toLocation', title: '目的库位', sortable: false }, { field: 'qty', title: '数量' }, { field: 'zoneName', title: '库存名称' }, { field: 'zoneCode', title: '库区编码' }, { field: 'recordCode', title: '合并前单号' }, { field: 'status', title: '子任务状态', align: 'center', formatter: function (value, row, index) { return $.table.selectDictLabel(taskDetailStatus, value); }, visible: false, }, { field: 'created', title: '创建时间', visible: false, sortable: false }, { field: 'lastUpdated', title: '最后修改时间', visible: false, sortable: false }, // { // field : 'lastUpdatedBy', // title : '最后更新人' // }, /*{ title: '操作', align: 'center', formatter: function(value, row, index) { var actions = []; // actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> '); //actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-remove"></i>删除</a>'); return actions.join(''); } }*/ ] }); function createtable(url, taskId) { // $("#tabDetail").children().remove(); $("#myTab li").removeClass("active"); $(".tab-pane").removeClass("in active"); $("#myTab li:eq(1)").addClass("active"); $("#tabDetail").addClass("in active"); $.ajax({ url: url, type: 'post', data: { taskId: taskId }, success: function (value) { // console.log(value); $("#bootstrap-table1").bootstrapTable('load', value.data); // $("#bootstrap-table1").bootstrapTable('removeAll'); // for (var i = value.data.length-1; i >=0 ; i--) { // $("#bootstrap-table1").bootstrapTable('insertRow', { // index: 0, row: { // id: value.data[i].id, // taskId: value.data[i].taskId, // warehouseId: value.data[i].warehouseId, // warehouseCode: value.data[i].warehouseCode, // materialCode: value.data[i].materialCode, // allocationId: value.data[i].allocationId, // containerCode: value.data[i].containerCode, // sourceLocation: value.data[i].sourceLocation, // destinationLocation: value.data[i].destinationLocation, // qty: value.data[i].qty, // status: value.data[i].status, // // created: value.data[i].created, // // createdBy: value.data[i].createdBy, // lastUpdated: value.data[i].lastUpdated, // lastUpdatedBy: value.data[i].lastUpdatedBy, // endTime:value.data[i].endTime // // userDef1: value.data[i].userDef1, // // userDef2: value.data[i].userDef2, // // userDef3: value.data[i].userDef3 // } // }); // } } }) } /*入库单列表-详细*/ function detail(taskId) { var url = ctx + 'task/taskDetail/list'; // createMenuItem(url, "入库单明细"); // createtab(curl); createtable(url, taskId); } // /*任务列表-详细*/ // function detail(taskId) { // var url = 'task/taskDetail/' + taskId; // createMenuItem(url, "任务明细"); // } /*任务列表-下发执行*/ function execute(taskId) { $.modal.confirm("确定执行任务?", function () { var url = ctx + 'task/taskHeader/execute'; var data = {"taskId": taskId}; $.operate.post(url, data); }); } /*任务列表-批量下发执行*/ function batchExecute() { //var rows = $.common.isEmpty($.table._option.taskId) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.taskId); var rows = $("#bootstrap-table").bootstrapTable('getSelections'); if (rows.length == 0) { $.modal.alertWarning("请至少选择一条记录"); return; } $.modal.confirm("确认要执行选中的" + rows.length + "条数据吗?", function () { var url = ctx + 'task/taskHeader/execute'; var ids = ""; for (var i = rows.length - 1; i >= 0; i--) { ids = ids + rows[i].id + "," } var data = {"taskId": ids.substring(0, ids.length - 1)}; $.operate.submit(url, "post", "json", data); }) } /*任务列表-完成任务*/ function complete(taskId) { $.modal.confirm("确定完成任务?", function () { var url = ctx + 'task/taskHeader/completeTaskByWMS'; var data = {"taskId": taskId}; $.operate.post(url, data); }); } /*任务列表-回传*/ function backERP(taskId) { $.modal.confirm("确定回传MOM?", function () { var url = ctx + 'task/taskHeader/backERP'; var data = {"taskId": taskId}; $.operate.post(url, data); }); } /*任务列表-批量完成任务*/ function batchComplete() { //var rows = $.common.isEmpty($.table._option.taskId) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.taskId); var rows = $("#bootstrap-table").bootstrapTable('getSelections'); if (rows.length == 0) { $.modal.alertWarning("请至少选择一条记录"); return; } $.modal.confirm("确认要执行选中的" + rows.length + "条数据吗?", function () { var url = ctx + 'task/task/completeTaskByWMS'; var ids = ""; for (var i = 0; i < rows.length; i++) { ids = ids + rows[i].id + "," } var data = {"taskId": ids.substring(0, ids.length - 1)}; $.operate.submit(url, "post", "json", data); }) } /*批量最大值*/ function prioritymax() { let rows = $.table.selectColumns("id"); if (rows.length == 0) { $.modal.alertWarning("请至少选择一条记录"); return; } else { $.ajax({ cache: true, type: "POST", url: prefix + "/prioritymax/", async: false, data: { "ids": rows.join(","), }, error: function (request) { console.log(request); $.operate.ajaxSuccess(request); }, success: function (data) { // $.operate.saveSuccess(data); console.log(data); $.operate.ajaxSuccess(data); } }); } } /*批量最小值*/ function prioritymin() { let rows = $.table.selectColumns("id"); if (rows.length == 0) { $.modal.alertWarning("请至少选择一条记录"); return; } else { $.ajax({ cache: true, type: "POST", url: prefix + "/prioritymin/", async: false, data: { "ids": rows.join(","), }, error: function (request) { console.log(request); $.operate.ajaxSuccess(request); }, success: function (data) { // $.operate.saveSuccess(data); console.log(data); $.operate.ajaxSuccess(data); } }); } } /*任务列表-批量删除任务*/ function batchRemoveHead() { //var rows = $.common.isEmpty($.table._option.taskId) ? $.table.selectFirstColumns() : $.table.selectColumns($.table._option.taskId); var rows = $("#bootstrap-table").bootstrapTable('getSelections'); if (rows.length == 0) { $.modal.alertWarning("请至少选择一条记录"); return; } $.modal.confirm("确认要删除选中的" + rows.length + "条数据吗?", function () { var url = ctx + 'task/taskHeader/remove'; var ids = ""; for (var i = 0; i < rows.length; i++) { ids = ids + rows[i].id + "," } var data = {"ids": ids.substring(0, ids.length - 1)}; $.operate.submit(url, "post", "json", data); }) } function queryParams(params) { return { InternalTaskType: +[[${InternalTaskType}]], // 传递参数查询参数 pageSize: params.limit, pageNum: params.offset / params.limit + 1, searchValue: params.search, orderByColumn: params.sort, isAsc: params.order }; }; function print() { let rows = $("#bootstrap-table").bootstrapTable('getSelections'); if ($.common.isEmpty(rows)) { $.modal.alertWarning("请至少选择一条记录"); return; } let ids = rows[0].id; for (let i = 1; i < rows.length; i++) { ids = ids + "," + rows[i].id; } let url = ctx + 'task/taskDetail/report/' + ids; $.modal.open("任务打印", url); } </script> </body> </html>