<!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>
										任务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 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>
										<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>&nbsp;搜索</a>
										<a class="btn btn-warning btn-rounded btn-sm" onclick="$.form.reset('task-form')"><i class="fa fa-refresh"></i>&nbsp;重置</a>
										<!--<a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="receipt:receiptHeader:export"><i class="fa fa-download"></i>&nbsp;导出</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>
					</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()}]];

	$(function() {
		var options = {
			url: prefix + "/list",
			createUrl: prefix + "/add",
			updateUrl: prefix + "/edit/{id}",
			removeUrl: prefix + "/remove",
			modalName: "任务管理",
			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> ');
						if (row.status < 10)  {
							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> ');
							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 >= 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' ,
					sortable: true
				},
				{
					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: true
				},
				{
					field : 'priority',
					title : '优先级'
				},

				{
					field : 'weight',
					title : '重量'
				},
				{
					field : 'port',
					title : '出库口' ,
					align: 'center',
					visible:true,
				},
				{
					field : 'exceptionCode',
					title : '异常原因',
					sortable: true
				},
				{
					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 : 'created',
					title : '生成时间',
					sortable: true
				},
				{
					field : 'createdBy',
					title : '任务下达人'
				},
				{
					field : 'lastUpdated',
					title : '修改时间' ,
					sortable: true,
				},
				{
					field : 'lastUpdatedBy',
					title : '更新用户'
				},
				{
					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: true
			},
			{
				field : 'billCode',
				title : '单据编码',
			},
			{
				field : 'billDetailId',
				title : '单据明细ID',
				sortable: true,
				visible:true,
			},
			{
				field : 'materialCode',
				title : '物料编码',

			},
			{
				field : 'materialName',
				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 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 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>