<!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; } .time3 label,.time3 span,.time3 input{ float:left; } .time3 label{ margin-top: 5px; } .time3 span{ display: block; margin: 5px 5px; } </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> 任务id:<input type="text" name="id"/> </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="goodsShelfNo"/> </li> <li class="time3" style="height: 30px"> <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> 任务类型: <select id="internalTaskType" name="internalTaskType" th:with="list=${@zone.getCode()}"> <option value="">所有</option> <option value="100">入库</option> <option value="200">出库</option> <option value="300">工作任务</option> </select> </li> <li> 回传状态: <select id="isReturn" name="isReturn"> <option value="">所有</option> <option value="1">失败</option> <option value="2">成功</option> <option value="3">其他</option> </select> </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 class="btn btn-outline btn-primary btn-rounded" onclick="batchExecute()"> <i class="fa fa-send"></i> 批量执行 </a> <!–<a class="btn btn-outline btn-primary btn-rounded" onclick="batchComplete()" shiro:hasPermission="task:task:completeTaskByWMS">–> <!–<i class="fa fa-check"></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>--> <!--<a class="btn btn-outline btn-info btn-rounded" onclick="emptyIn()" > <i class="fa fa-level-down"></i> 空托入库 </a> <a class="btn btn-outline btn-info btn-rounded" onclick="emptyOut()" > <i class="fa fa-level-up"></i> 空托出库 </a>--> <a class="btn btn-outline btn-success btn-rounded" onclick="deliveryReceiptDetailPrint()" shiro:hasPermission="task:task:report"> <i class="fa fa-print"></i> 发货标签打印 </a> </div> <input type="hidden" id="taskId" name="taskId" th:value="${taskId}"/> <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 stationlist =[[${@stationService.selectlist()}]] var stations = [[${@dict.getType('station')}]]; var taskTypes=[[${@dict.getType('taskType')}]]; var isReturnStatus=[[${@dict.getType('isReturnStatus')}]]; var taskStatus=[[${@dict.getType('taskStatus')}]]; var taskDetailStatus=[[${@dict.getType('taskDetailStatus')}]]; var zone =[[${@zone.getCode()}]]; // setInterval(refreshV,1000*60); function refreshV(){ $.table.refresh(); } $(function (){ layui.use('laydate', function() { var laydate = layui.laydate; var day1 = new Date(); day1.setTime(day1.getTime()-24*60*60*1000*7); var endDay = new Date(); endDay.setTime(endDay.getTime()+24*60*60*1000); laydate.render({ elem: '#startTime', theme: 'molv',format: 'yyyy-MM-dd HH:mm:ss',type: 'datetime',value: new Date(day1), isInitValue: true}); laydate.render({ elem: '#endTime', theme: 'molv',format: 'yyyy-MM-dd HH:mm:ss',type: 'datetime',value: new Date(endDay), isInitValue: true }); }); }) $(function() { var options = { url: prefix + "/listHistory", createUrl: prefix + "/add", updateUrl: prefix + "/edit/{id}", removeUrl: prefix + "/remove", modalName: "任务管理", sortName: "lastUpdated", sortOrder: "desc", search: false, clickToSelect:true, queryParams: queryParams, columns: [ { checkbox: true, // formatter:function (value,row,index){ // if(row.status === 100){ // return { // checked : false, // disabled: true // } // }else{ // return { // checked : false, // disabled: false // } // } // } }, { title: '操作', align: 'center', formatter: function(value, row, index) { var actions = []; if ( row.status == 100 && row.backQty >= 1 && row.isReturn < 2 ) { actions.push('<a class="btn btn-success btn-xs ' + completeFlag + '" href="#" onclick="handleBack(\'' + row.id + '\')"><i class="fa fa-upload"></i>回传</a>'); } // if (row.status >= 10) { // if ( row.zoneCode == 'V'||(row.zoneCode=='LK'&&row.containerCode.substring(0,1)=="M")) { if (row.zoneCode == 'V' && row.warehouseCode == 'CS0001') { actions.push('<a class="btn btn-primary btn-xs ' + executeFlag + '" href="#" onclick="lookAgvTask(\'' + row.id + '\')"><i class="fa fa-eye"></i>查看agv任务</a>'); }else if(row.warehouseCode == 'CS0001'&&(row.taskType == 100||row.taskType == 500||row.taskType == 300||row.taskType == 600)&&row.containerCode.substring(0,1)=="M" ) { actions.push('<a class="btn btn-primary btn-xs ' + executeFlag + '" href="#" onclick="lookAgvTask(\'' + row.id + '\')"><i class="fa fa-eye"></i>查看agv任务</a>'); } else if (row.warehouseCode == 'KS0001' && (row.taskType == 100 || row.taskType == 500 || row.taskType == 300 || row.taskType == 600|| row.taskType == 1000) && row.zoneCode == 'JLK') { actions.push('<a class="btn btn-primary btn-xs ' + executeFlag + '" href="#" onclick="lookAgvTask(\'' + row.id + '\')"><i class="fa fa-eye"></i>查看agv任务</a>'); } } return actions.join(''); } }, { field : 'id', title : '任务id', visible: false }, { field : 'companyCode', title : '货主编码', visible:false }, { field : 'createdBy', title : '任务下达人' }, { field: 'created', title: '生成时间', formatter: function(value, row, index) { let time=value.slice(5,10); return `<span>${time}</span>` } }, { field : 'taskType', title : '任务类型' , align: 'center', visible:true, formatter: function(value, row, index) { return $.table.selectDictLabel(taskTypes, value); } }, { field : 'containerCode', title : '容器号' , sortable: true }, { field : 'goodsShelfNo', title : '货架号' , sortable: true }, { field : 'port', title : '出库口' , align: 'center', visible:true, formatter: function(value, row, index) { var actions = []; if(value!=undefined&&value!=null){ $.each(stationlist, function(index, dict) { if (dict.code == value) { actions.push("" + dict.name + ""); return false; } }); } return actions.join(''); } }, { 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 : 'fromLocation', title : '源库位号', visible:true }, { field : 'toLocation', title : '目的库位号', visible:true }, { field : 'exceptionCode', title : '异常原因', sortable: true }, { field : 'isReturn', title : '回传状态', align: 'center', formatter: function(value, row, index) { return $.table.selectDictLabel(isReturnStatus, value); } }, { field : 'backQty', title : '回传次数', visible:false, }, { field : 'backInfo', title : '回传信息', align: 'center', formatter: function(value, row, index) { return $.table.tooltip(value, 8, "open"); } }, { field : 'isEmptyOut', title : '空出', sortable: true }, { field : 'isDoubleIn', title : '重入', sortable: true }, { field : 'originLocation', title : '原始库位', sortable: true }, { field : 'startPickDateTime', title : '开始拣货时间', sortable: true, visible:false, }, { field : 'endPickDateTime', title : '截止拣货时间', visible:false, }, { field : 'lastUpdated', title : '修改时间' , sortable: true, }, { field : 'lastUpdatedBy', title : '更新用户' }, { field : 'created', title : '生成时间', sortable: 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, formatter:function (value,row,index){ if(row.status === 100){ return { checked : false, disabled: true } }else{ return { checked : false, disabled: false } } } }, { field : 'id', title : '明细ID' }, { field : 'taskId', title : '任务头ID', sortable: true }, { field: 'referenceCode', title: '上游号' }, { field : 'billCode', title : '单据编码', }, { field : 'billDetailId', title : '单据明细ID', sortable: true, visible:true, }, { field : 'materialCode', title : '物料编码', }, { field : 'materialName', title : '物料名称', }, { field : 'materialSpec', title : '物料规格', }, { field : 'projectNo', title : '项目号', }, { field : 'containerCode', title : '容器编码', sortable:true }, { field : 'fromLocation', title : '源库位', sortable:true }, { field : 'toLocation', title : '目的库位', sortable:true }, { field : 'qty', title : '数量' }, { field : 'status', title : '子任务状态', align: 'center', formatter: function(value, row, index) { return $.table.selectDictLabel(taskDetailStatus, value); } }, { field : 'created', title : '创建时间' , visible:false, sortable:true }, { field : 'lastUpdated', title : '最后修改时间' , visible:false, sortable:true }, { 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 setLkStation(id,taskType){ var url = ctx + "task/taskHeader/chooseStation" + "/" + id; $.modal.open("选择站台", 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'); var isAgv=false; if (rows.length == 0) { $.modal.alertWarning("请至少选择一条记录"); return; } var ids = ""; var agvIds=""; for(var i=rows.length-1; i >= 0; i--) { ids = ids + rows[i].id + ","; if(rows[i].zoneCode==='AGV'){ isAgv=true; agvIds=agvIds + rows[i].id + ","; } } if(isAgv){ setLkStation(agvIds.substring(0, ids.length-1),'taskType'); return; } $.modal.confirm("确认要执行选中的" + rows.length + "条数据吗?", function() { var url = ctx + 'task/taskHeader/execute'; 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 handleBack(taskId) { var url = ctx + 'task/taskHeader/handleBack'; 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").val(), // 传递参数查询参数 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); } var prefix_inventory = ctx + "inventory/inventoryHeader"; function emptyIn() { $.modal.open("空托盘入库",prefix_inventory+"/emptyIn") } function emptyOut() { $.modal.open("空托盘出库",prefix_inventory+"/emptyOut") } //发货标签打印 function deliveryReceiptDetailPrint() { let rows=$("#bootstrap-table").bootstrapTable('getSelections'); if (rows.length === 0) { $.modal.alertWarning("请至少选择一条记录"); return; } let ids = ""; for(let i=0; i<rows.length; i++) { ids = ids + rows[i].id + "," } let url = prefix + "/deliveryReport/" + ids; $.modal.open("任务铭牌打印" , url); } /* 入库单列表-详细 */ function lookAgvTask(taskNo) { let url = `${ctx}agv/lookAgvTask/` + taskNo; $.modal.open("AGV任务", url) } </script> </body> </html>