<!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>&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>
                        &lt;!&ndash;<a class="btn btn-outline btn-primary btn-rounded" onclick="batchComplete()" shiro:hasPermission="task:task:completeTaskByWMS">&ndash;&gt;
                        &lt;!&ndash;<i class="fa fa-check"></i> 批量完成&ndash;&gt;
                        &lt;!&ndash;</a>&ndash;&gt;
                        <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 + "/listHistoryError",
            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>');
                        }
                        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 : '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);
    }
</script>
</body>
</html>