<!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; margin: 10px auto; line-height: 34px; } </style> <body class="gray-bg"> <div class="container-div"> <div class="row"> <div class="col-sm-12 select-table"> <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-table"> <form id="task-form" autocomplete="off"> <div class="select-list"> <ul> <li> <input type="hidden" th:value="${internalTaskType}" name="internalTaskType"> <label>库区:</label> <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> <label>任务id:</label> <input name="id" placeholder="请输入任务id" type="text"/> </li> <li> <label>载具编码:</label> <input name="containerCode" placeholder="请输入载具编码" type="text"/> </li> <li> <label>盛具编码:</label> <input name="vehicleCode" placeholder="请输入盛具编码" type="text"/> </li> <li> <label>原库位编码:</label> <input name="fromLocation" placeholder="请输入原库位编码" type="text"/> </li> <li> <label>目标库位编码:</label> <input name="toLocation" placeholder="请输入目标库位编码" type="text"/> </li> <li> <label>来源料点:</label> <input name="fromPort" placeholder="请输入来源料点" type="text"/> </li> <li> <label>目标料点:</label> <input name="port" placeholder="请输入目标料点" type="text"/> </li> <li> <label>回传次数:</label> <input name="callBackTimes" placeholder="大于等于" min="0" type="number"/> </li> <li class="select-time"> <label>创建时间: </label> <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="createdBegin"/> <span>-</span> <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="createdEnd"/> </li> <li> <input type="hidden" name="internalTaskType" th:value="${internalTaskType}"/> </li> <li style="float: right; margin-right: 45px"> <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> </li> </ul> </div> </form> </div> <div class="btn-group hidden-xs" id="toolbar" role="group"> <a class="btn btn-outline btn-success btn-rounded" onclick="print()" shiro:hasPermission="task:task:execute"> <i class="fa fa-print"></i> 打印 </a> <a class="btn btn-outline btn-primary btn-rounded" onclick="batchExecute()"> <i class="fa fa-send"></i> 批量执行 </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-success btn-rounded" onclick="prioritymax()"> <i class="fa fa-edit"></i> 批量设置优先级最大值 </a> <a class="btn btn-outline btn-primary btn-rounded" onclick="prioritymin()"> <i class="fa fa-edit"></i> 批量设置优先级最小值 </a>--> </div> <input type="hidden" id="taskId" name="taskId" th:value="${taskId}"/> <input type="hidden" id="internalTaskType" name="internalTaskType" th:value="${internalTaskType}"/> <div class="col-sm-12 select-table"> <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover text-nowrap"> </table> </div> </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 supplier = [[${@SupplierService.getCode()}]]; var prefix = ctx + "task/taskHeader"; var stations = [[${@dict.getType('station')}]]; var taskTypes = [[${@dict.getType('taskType')}]]; var taskStatus = [[${@dict.getType('taskStatus')}]]; var taskDetailStatus = [[${@dict.getType('taskDetailStatus')}]]; var inventoryStatus = [[${@dict.getType('inventorySts')}]]; var zone = [[${@zone.getCode()}]]; $(function () { let options = { url: prefix + "/list", createUrl: prefix + "/add", updateUrl: prefix + "/edit/{id}", removeUrl: prefix + "/remove", modalName: "任务管理", 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> '); if (row.status < 100) { if (row.internalTaskType === 1100) { actions.push('<a class="btn btn-success btn-xs" href="#" onclick="assemble(\'' + row.id + '\')"><i class="fa fa-send" style="padding-right: 1px;"></i>装配</a> '); } else { 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 && 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>'); }*/ return actions.join(''); } }, { field: 'id', title: '任务id', }, { 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: 'taskType', title: '任务类型', align: 'center', visible: true, formatter: function (value, row, index) { return $.table.selectDictLabel(taskTypes, value); } }, { field: 'status', title: '任务状态', visible: true, formatter: function (value, row, index) { return $.table.selectDictLabel(taskStatus, value); } }, { field: 'fromLocation', title: '原库位编码', visible: true }, { field: 'toLocation', title: '目的库位编码', visible: true }, { field: 'containerCode', title: '载具编码', }, { field: 'vehicleCode', title: '盛具编码', }, { field: 'fromPort', title: '来源料点', align: 'center', visible: true, }, { field: 'port', title: '目标料点', align: 'center', visible: true, }, { field: 'sequenceGroup', title: '顺序组', visible: true }, { field: 'sequenceCount', title: '排序数', visible: true }, { field: 'sequence', title: '顺序号', visible: true }, { field: 'callBackTimes', title: '回传', formatter: function (value, row, index) { if (row.isBack === 1) { return "<span title='' class='badge badge-primary'>成功 " + value + "</span>"; } else if (row.isBack === 0) { return "<span title=" + row.information + " class='badge badge-default'>未回传</span>"; } else if (value > 1) { return "<span title=" + row.information + " class='badge badge-danger'>失败 " + value + "</span>"; } else { return "<span title=" + row.information + " class='badge badge-success'>无需回传</span>"; } } }, { field: 'orderCode', title: '工单号', }, { field: 'shipmentReferCode', title: '领料单号', }, { field: 'exceptionCode', title: '异常原因', }, { field: 'isEmptyOut', title: '空出', }, { field: 'isDoubleIn', title: '重入', }, { field: 'originLocation', title: '原始库位', }, { field: 'created', title: '生成时间', }, { field: 'createdBy', title: '任务下达人' }, { field: 'lastUpdated', title: '修改时间', }, { field: 'lastUpdatedBy', title: '更新用户', }, ] }; $.table.init(options); }); $("#bootstrap-table1").bootstrapTable({ //排序 showRefresh: false, //刷新 showToggle: false, //视图切换 clickToSelect: false, showColumns: false, //列选择 // detailView:true, showExport: false, //导出 exportDataType: "all", //导出类型basic', 'all', 'selected'.当前页、所有数据、选中数据 modalName: "任务明细", iconSize: "outline", toolbar: "#toolbar1", contentType: "application/x-www-form-urlencoded", sortName: "id", sortOrder: "desc", columns: [ { checkbox: true }, { field: 'billCode', title: '单据编码', }, { field: 'billDetailId', title: '单据明细id', visible: true, }, { field: 'materialCode', title: '物料编码', }, { field: 'materialName', title: '物料名称', }, { field: 'materialSpec', title: '物料规格', }, { field: 'materialUnit', title: '物料单位', }, { field: 'weight', title: '药量(克)', }, { field: 'high', title: '高度' }, { field: 'solidifyTime', title: '固化时间(时)' }, { field: 'tracingNo', title: '追溯码', }, { field: 'supplierCode', title: '供应商', visible: true, formatter: function (value, row, index) { let actions = []; $.each(supplier, function (index, item) { if (item.code === value) { actions.push("<span class='badge badge-info'>" + item.name + "</span>"); return false; } }); return actions.join(''); }, }, { field: 'supplierTracingNo', title: '供应商追溯码', }, { field: 'inventorySts', title: '库存状态', formatter: function (value, row, index) { return $.table.selectDictLabel(inventoryStatus, value); } }, { field: 'containerCode', title: '载具编码', }, { field: 'vehicleCode', title: '盛具编码', }, { field: 'fromLocation', title: '源库位', }, { field: 'toLocation', title: '目的库位', }, { field: 'qty', title: '数量' }, { field: 'locationNoX', title: 'x', }, { field: 'locationNoY', title: 'y', }, { field: 'created', title: '创建时间' }, { field: 'lastUpdated', title: '最后修改时间' }, { field: 'lastUpdatedBy', title: '更新用户' }, ] }); function createtable(url, taskId) { $("#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) { $("#bootstrap-table1").bootstrapTable('load', value.data); } }) } /*入库单列表-详细*/ function detail(taskId) { var url = ctx + 'task/taskDetail/list'; // createMenuItem(url, "入库单明细"); // createtab(curl); createtable(url, taskId); } /*任务列表-下发执行*/ function execute(taskId) { $.modal.confirm("确定执行任务?", function () { var url = ctx + 'task/taskHeader/execute'; var data = {"taskId": taskId}; $.operate.post(url, data); }); } // 装配 function assemble(taskId) { $.modal.openFull("人工装配", prefix + "/assemble/" + taskId, 800, 500) } /*任务列表-批量下发执行*/ 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 () { let url = ctx + 'task/taskHeader/execute'; let ids = ""; for (let i = rows.length - 1; i >= 0; i--) { ids = ids + rows[i].id + "," } let 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 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 () { let url = ctx + 'task/task/completeTaskByWMS'; let ids = ""; for (let 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("请至少选择一条记录"); } else { $.ajax({ cache: true, type: "POST", url: prefix + "/prioritymax/", async: false, data: { "ids": rows.join(","), }, error: function (request) { $.operate.ajaxSuccess(request); }, success: function (data) { $.operate.ajaxSuccess(data); } }); } } /*批量最小值*/ function prioritymin() { let rows = $.table.selectColumns("id"); if (rows.length === 0) { $.modal.alertWarning("请至少选择一条记录"); } else { $.ajax({ cache: true, type: "POST", url: prefix + "/prioritymin/", async: false, data: { "ids": rows.join(","), }, error: function (request) { $.operate.ajaxSuccess(request); }, success: function (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>