<!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="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>&nbsp;搜索
                                        </a>
                                        <a class="btn btn-warning btn-rounded btn-sm"
                                           onclick="$.form.reset('task-form')">
                                            <i class="fa fa-refresh"></i>&nbsp;重置
                                        </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: 'companyCode',
                    title: '货主编码',
                    visible: false
                },*/
                {
                    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: '更新用户',
                    visible: false
                },
            ]
        };
        $.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: 'id',
                title: '明细ID'
            },
            {
                field: 'taskId',
                title: '任务头ID',
            },*/
            {
                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: '创建时间',
                visible: true,
            },
            {
                field: 'lastUpdated',
                title: '最后修改时间',
                visible: true,
            },
            {
                field: 'lastUpdatedBy',
                title: '更新用户'
            },
        ]
    });

    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) {
                $("#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>