<!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;
    }
    .btn-default {
        color: #333;
        background-color: #fff;
        border-color: #ccc
    }
    .isShow{
        display: none;
    }
</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="receiptHeader-form">
                            <div class="select-list">
                                <ul>
                                    <li>
                                        入库单号:<input type="text" name="code"/>
                                    </li>
                                    <li>
                                        上游单号:<input type="text" name="sourceCode"/>
                                    </li>
                                    <li>
                                        货主:<select id="companyCode" name="companyCode" th:with="list=${@companyService.getCode()}">
                                        <option th:each="item : ${list}" th:text="${item['name']}" th:value="${item['code']}" th:attr = " code = ${item['code']}"></option>
                                    </select>
                                    </li>
                                    <li>
                                        <!--入库类型:<input type="text" name="sourceCode"/>-->
                                        入库类型:<select name="type" th:with="type=${@receiptTypeService.getType()}">
                                        <option value="">所有</option>
                                        <option th:each="e : ${type}" th:text="${e['name']}" th:value="${e['code']}"></option></select>
                                    </li>
                                    <li>
                                        供 应 商:<input type="text" name="supplierCode"/>
                                    </li>
                                    <li>
                                        <!--头 状 态:<input type="text" name="firstStatus"/>-->
                                        头 状 态:<select name="firstStatus" th:with="firstStatus=${@dict.getType('receiptHeaderStatus')}">
                                        <option value="">所有</option>
                                        <option th:each="e : ${firstStatus}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option></select>
                                    </li>
                                    <li>
                                        <!--尾 状 态:<input type="text" name="lastStatus"/>-->
                                        尾 状 态:<select name="lastStatus" th:with="lastStatus=${@dict.getType('receiptHeaderStatus')}">
                                        <option value="">所有</option>
                                        <option th:each="e : ${lastStatus}" th:text="${e['dictLabel']}" th:value="${e['dictValue']}"></option></select>
                                    </li>
                                    <li class="time">
                                        <label>创建时间: </label>
                                        <input type="text" class="time-input" id="startTime" placeholder="开始时间" name="params[createdBegin]"/>
                                        <span>-</span>
                                        <input type="text" class="time-input" id="endTime" placeholder="结束时间" name="params[createdEnd]"/>
                                    </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-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-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="receipt:receiptHeader:add">
                            <i class="fa fa-plus"></i> 新增
                        </a>
                        <a class="btn btn-outline btn-default btn-rounded" onclick="submitReview()" shiro:hasPermission="receipt:receiptHeader:add">
                            <i class="fa fa-fighter-jet"></i> 提交审核
                        </a>
                        <a class="btn btn-outline btn-primary btn-rounded" onclick="approval()" shiro:hasPermission="receipt:receiptHeader:add">
                            <i class="fa fa-level-up"></i> 审核通过
                        </a>
                        <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.batRemove()" shiro:hasPermission="receipt:receiptHeader:remove">
                            <i class="fa fa-trash-o"></i> 删除
                        </a>
                    </div>
                    <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table>
                </div>
                <div class="tab-pane fade" id="tabDetail">
                    <div class="col-sm-12 select-info">
                        <form id = "shipmentHeadForm" >
                            <ul id="tabHead" class="nav nav-tabs">
                                <li class="active"><a href="#tabBase" data-toggle="tab">基础数据</a></li>
                                <li role="presentation" ><a href="#tabCustomer" data-toggle="tab">客户信息</a></li>
                            </ul>
                            <div class="tab-content">
                                <div class="tab-pane in active" id="tabBase">
                                    <div class="select-list">
                                        <ul>
                                            <!--<input type="hidden" name="warehouseId" id = "shipmentWarehouseId">-->
                                            <li>入库单id:<input type="text"  name="receiptId" id="receiptId"></li>
                                            <li>入库单号:<input type="text"  name="receiptCode" id="receiptCode"></li>
                                            <li>货主编码:
                                                <input type="text" name="receiptCompanyCode" id="receiptCompanyCode">
                                            </li>
                                            <li>上游系统单号:<input type="text" name="receiptSourceCode" id="receiptSourceCode"></li>
                                            <li>上游平台:<input type="text" name="receiptSourcePlatform" id="receiptSourcePlatform"></li>
                                            <li>
                                                <!--入库类型:<input type="text" name="sourceCode"/>-->
                                                入库类型:<select name="type" th:with="type=${@receiptTypeService.getType()}">
                                                <option value="">所有</option>
                                                <option th:each="e : ${type}" th:text="${e['name']}" th:value="${e['code']}"></option></select>
                                            </li>
                                            <li>总数量:<input type="text" name="receiptTotalQty" id="receiptTotalQty"></li>
                                            <li>总行数:<input type="text" name="receiptTotalLines" id="receiptTotalLines"></li>
                                            <li>单据头状态:<input type="text" name="receiptFirstStatus" id="receiptFirstStatus"></li>
                                            <li>单据尾状态:<input type="text" name="receiptLastStatus" id="receiptLastStatus"></li>
                                        </ul>
                                    </div>
                                </div>
                                <div class="tab-pane fade" id="tabCustomer">
                                    <div class="select-list">
                                        <ul>
                                            <li>供应商编码:<input type="text" name="receiptSupplierCode" id="receiptSupplierCode"></li>
                                            <li>入库预约时间:<input type="text" name="receiptAppointmentTime" id="receiptAppointmentTime"></li>
                                        </ul>
                                    </div>
                                </div>
                            </div>
                        </form>
                    </div>
                    <div class="btn-group hidden-xs" id="toolbar1" role="group" style="position:relative;">
                        <a class="btn btn-outline btn-success btn-rounded" onclick="add()" shiro:hasPermission="receipt:receiptDetail:add">
                            <i class="fa fa-plus"></i> 新增
                        </a>
                        <a class="btn btn-outline btn-danger btn-rounded" onclick="batRemove()" shiro:hasPermission="receipt:receiptDetail:remove">
                            <i class="fa fa-trash-o"></i> 删除
                        </a>
                        <a class="btn btn-outline btn-primary btn-rounded to-receive" onclick="Toreceiving(receiptCode)" shiro:hasPermission="receipt:receiving:add">
                            <i class="fa fa-cart-plus"></i> 收货
                        </a>
                    </div>
                    <table id="bootstrap-table1" data-mobile-responsive="true" class="table table-bordered table-hover"></table>
                </div>
            </div>
        </div>
    </div>
</div>
<div th:include="include :: footer"></div>
<script th:inline="javascript">
    var printFlag = [[${@permission.hasPermi('receipt:receiptHeader:report')}]];
    var editFlag = [[${@permission.hasPermi('receipt:receiptHeader:edit')}]];
    var removeFlag = [[${@permission.hasPermi('receipt:receiptHeader:remove')}]];
    var addFlag= [[${@permission.hasPermi('receipt:receiptHeader:add')}]];
    var prefix = ctx + "receipt/receiptHeader";
    var detailPrefix = ctx + "receipt/receiptDetail";
    var datas = [[${@dict.getType('sys_normal_disable')}]];
    var receiptTypes = [[${@dict.getType('receiptType')}]];
    var receiptHeaderStatus = [[${@dict.getType('receiptHeaderStatus')}]];
    var uploadStatus = [[${@dict.getType('uploadStatus')}]];
    var detailCreateUrl = detailPrefix+"/add";
    var detailUpdateUrl = detailPrefix + "/edit/{id}";
    var detailRemoveUrl = detailPrefix+"/remove";
    var inventoryStatus = [[${@dict.getType('inventoryStatus')}]];
    var isVirtualBoms = [[${@dict.getType('isVirtualBom')}]];
    var receiptId = '';
    var receiptCode = '';

    $(function() {
        var options = {
            url: prefix + "/list",
            createUrl: prefix + "/add",
            updateUrl: prefix + "/edit/{id}",
            removeUrl: prefix + "/remove",
            modalName: "入库单",
            sidePagination:"server",
            search: false,
            pageSize: 50,
            columns: [{
                checkbox: true
            },
                {
                    field : 'id',
                    title : '入库单id',
                    sortable:true
                },
                {
                    field : 'createdBy',
                    title : '创建用户',
                    sortable:true
                },
                {
                    field : 'referCode',
                    title : '关联单号',
                    sortable:true
                },
                {
                    field : 'referType',
                    title : '关联订单类型'
                },
                {
                    field : 'code',
                    title : '入库单号',
                    visible:false
                },
                {
                    field : 'companyCode',
                    title : '货主编码',
                    visible:false
                },
                {
                    field : 'warehouseCode',
                    title : '仓库编码',
                    visible:false
                },
                {
                    field : 'receiptType',
                    title : '入库类型',
                    align: 'center',
                    formatter: function(value, row, index) {
                        var actions = [];
                        $.each(receiptTypes, function(index, dict) {
                            if (dict.code == value) {
                                actions.push("<span class='badge badge-info'>" + dict.name + "</span>");
                                return false;
                            }
                        });
                        return actions.join('');
                    }
                },
                {
                    field : 'scheduledArriveDate',
                    title : '预计到达日期',
                    sortable:true
                },
                {
                    field : 'actualArriveDate',
                    title : '实际到达日期'
                },
                {
                    field : 'startCheckinDatetime',
                    title : '开始收货日期'
                },
                {
                    field : 'endCheckinDatetime',
                    title : '结束收货日期'
                },
                {
                    field : 'recvDock',
                    title : '月台货位'
                },
                {
                    field : 'closedAt',
                    title : '关闭时间',
                    visible : false
                },
                {
                    field : 'closedBy',
                    title : '强制关闭用户',
                    visible :false
                },
                {
                    field : 'totalQty',
                    title : '总数量'
                },
                {
                    field : 'totalLines',
                    title : '总行数'
                },
                {
                    field : 'remark',
                    title : '备注',
                    visible : false
                },
                {
                    field : 'uploadStatus',
                    title : '上传状态',
                    visible:false
                },
                {
                    field : 'receiptNote',
                    title : '入库单备注',
                    visible:false
                },
                {
                    field : 'locked',
                    title : '锁定',
                    visible:false
                },
                {
                    field : 'lockedBy',
                    title : '锁定用户',
                    visible:false
                },
                {
                    field : 'firstStatus',
                    title : '头状态',
                    align: 'center',
                    formatter: function(value, row, index) {
                        return $.table.selectDictLabel(receiptHeaderStatus, value);
                    }
                },
                {
                    field : 'lastStatus',
                    title : '尾状态',
                    align: 'center',
                    formatter: function(value, row, index) {
                        return $.table.selectDictLabel(receiptHeaderStatus, value);
                    }
                },
                {
                    field : 'created',
                    title : '创建时间',
                    sortable:true
                },
                {
                    field : 'lastUpdated',
                    title : '最后修改时间',
                    visible:false,
                    sortable:true
                },
                {
                    field : 'lastUpdatedBy',
                    title : '更新用户',
                    visible:false,
                },
                {
                    field : 'userDef2',
                    title : '自定义字段2',
                    visible: false
                },
                {
                    field : 'userDef3',
                    title : '自定义字段3' ,
                    visible: false
                },
                {
                    title: '操作',
                    align: 'center',
                    formatter: function(value, row, index) {
                        var actions = [];
                        actions.push('<a id="table_edit" class="btn btn-success btn-xs ' + printFlag + '" href="#" onclick="receiptPrint(\'' + row.id + '\')"><i class="fa fa-print"></i>打印</a> ');
                        if (row.lastStatus >= 200)
                            actions.push('<a style="background: #b5bdc0" class="btn btn-default btn-xs"  onclick="Toreceiving(\''+ row.code + '\')"><i class="fa fa-list-ul"></i>列表</a> ');
                        if (row.firstStatus < 100)
                            actions.push('<a class="btn btn-info btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.id + '\')" ><i class="fa fa-edit"></i>编辑</a> ');
                        if (row.lastStatus < 200)
                            actions.push('<a class="btn btn-primary btn-xs to-receive" ' +addFlag+ ' onclick="Toreceiving(\''+ row.code + '\')"><i class="fa fa-cart-plus"></i>收货</a> ');
                        if (row.firstStatus < 120)
                            actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a>');
                        return actions.join('');
                    }
                }]
        };
        $.table.init(options);
    });

    $("#bootstrap-table1").bootstrapTable({
        // url: detailPrefix + "/list",
        createUrl: detailPrefix + "/add",
        updateUrl: detailPrefix + "/edit/{id}",
        removeUrl: detailPrefix + "/remove",
        // search: true, //搜索
        sortable: true, //排序
        showRefresh: true, //刷新
        showToggle:true, //视图切换
        clickToSelect: true,
        showColumns:true, //列选择
        // detailView:true,
        showExport: true, //导出
        exportDataType: "all",  //导出类型basic', 'all', 'selected'.当前页、所有数据、选中数据
        modalName: "入库明细",
        sortName: "lastUpdated",
        sortOrder: "desc",
        iconSize: "outline",
        toolbar: "#toolbar1",
        contentType: "application/x-www-form-urlencoded",
        pagination: true,   // 是否显示分页(*)
        pageNumber: 1,                                      // 初始化加载第一页,默认第一页
        pageSize: 50,                                       // 每页的记录行数(*)
        pageList: [10, 25, 50, 100],                             // 可供选择的每页的行数(*)
        onRefresh: function(){
            loadDetail();
        },
        columns: [{
            checkbox: true
        },
            {
                field : 'id',
                title : 'id'
            },
            {
                field : 'receiptCode',
                title : '入库单编码'
            },
            {
                field : 'materialCode',
                title : '物料编码'
            },
            {
                field : 'materialName',
                title : '物料名称'
            },
            {
                field : 'materialSpec',
                title : '物料规格'
            },
            {
                field : 'materialUnit',
                title : '物料单位'
            },
            {
                field : 'supplierCode',
                title : '供应商编码'
            },
            {
                field : 'batch',
                title : '批次'
            },
            {
                field : 'lot',
                title : '批号' ,
                visible:false
            },
            {
                field : 'qcCheck',
                title : '是否质检'
            },
            {
                field : 'projectNo',
                title : '项目号'
            },
            {
                field : 'manufactureDate',
                title : '生产日期' ,
                visible:false
            },
            {
                field : 'expirationDate',
                title : '失效日期' ,
                visible:false
            },
            {
                field : 'agingDate',
                title : '入库日期' ,
                visible:false
            },
            {
                field : 'totalQty',
                title : '总数量'
            },
            {
                field : 'openQty',
                title : '未收数量'
            },
            {
                field : 'referCode',
                title : 'ERP单号',
                visible : false
            },
            {
                field : 'referId',
                title : 'ERP内部号',
                visible : false
            },
            {
                field : 'referLineNum',
                title : 'ERP行号',
                visible : false
            },
            {
                field : 'locatingRule',
                title : '定位规则'
            },
            {
                field : 'inventorySts',
                title : '库存状态',
                visible : false
            },
            {
                field : 'itemListPrice',
                title : '标价'
            },
            {
                field : 'itemNetPrice',
                title : '净价'
            },
            {
                field : 'price',
                title : '单价' ,
                visible:false
            },
            {
                field : 'isVirtualBom',
                title : '是否虚拟套件',
                formatter: function(value, row, index) {
                    return $.table.selectDictLabel(isVirtualBoms, value);
                }
            },
            {
                field : 'created',
                title : '创建时间'
            },
            {
                field : 'createdBy',
                title : '创建用户',
                visible:false
            },
            {
                field : 'lastUpdated',
                title : '最后修改时间',
                visible:false
            },
            {
                field : 'lastUpdatedBy',
                title : '更新用户' ,
                visible:false
            },
            {
                field : 'userDef1',
                title : '自定义字段1' ,
                visible:false
            },
            {
                field : 'userDef2',
                title : '自定义字段2' ,
                visible:false
            },
            {
                field : 'userDef3',
                title : '自定义字段3' ,
                visible:false
            },
            {
                title: '操作',
                align: 'center',
                events:'operateEvents',
                formatter: function(value, row, index) {
                    var actions = [];
                    actions.push('<a id="table_edit" class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="edit(\'' + row.id + '\')"><i class="fa fa-edit"></i>编辑</a> ');
                    actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="remove(\'' + row.id + '\')"><i class="fa fa-trash-o"></i>删除</a>');
                    return actions.join('');
                }
            }]
    });

    /* 入库单列表-详细 */
    function detail(id, code) {
        receiptId = id;
        receiptCode=code;
        $("#myTab li").removeClass("active");
        $("#tabHeader").removeClass("in active");
        $("#myTab li:eq(1)").addClass("active");
        $("#tabDetail").addClass("in active");
        // $("#tabBase").addClass("in active");
        loadDetail();
    }

    /* 入库单列表-详细 */
    function loadDetail() {
        $.ajax({
            url:ctx + 'receipt/receiptDetail/list',
            type:"post",
            data:{
                receiptId:receiptId,
            },
            success:function (value) {
                $("#bootstrap-table1").bootstrapTable('load',value.data);
            }
        });
        $.ajax({
            url: ctx + "receipt/receiptHeader/getReceiptHeader",
            type:"post",
            data:{
                id:receiptId
            },
            success:function (value) {
                $('#receiptId').val(value.data.id);
                $('#receiptCode').val(value.data.code);
                receiptCode=value.data.code;
                $('#receiptCompanyId').val(value.data.companyId);
                $('#receiptCompanyCode').val(value.data.companyCode);
                $('#receiptSourceCode').val(value.data.sourceCode);
                $('#receiptSourcePlatform').val(value.data.sourcePlatform);
                // $('#receiptType').val(receiptTypes.filter(function (e) {return e.dictValue==value.data.type})[0].dictLabel);
                $('#receiptTotalQty').val(value.data.totalQty);
                $('#receiptTotalLines').val(value.data.totalLines);
                // $('#receiptFirstStatus').val(receiptHeaderStatus.filter(function (e) {return e.dictValue==value.data.firstStatus})[0].dictLabel);
                // $('#receiptLastStatus').val(receiptHeaderStatus.filter(function (e) {return e.dictValue==value.data.lastStatus})[0].dictLabel);
                $('#receiptSupplierCode').val(value.data.supplierCode);
                $('#receiptAppointmentTime').val(value.data.appointmentTime);
            }
        })
    }

    /* 打印 */
    function receiptPrint(id) {
        var url = prefix + "/report/" + id;
        $.modal.open("入库单打印" , url);
    }

    /* 新增主表 */
    function add() {
        if (receiptId == '') {
            $.modal.open("未选择入库单" , "404.html");
        }
        else {
            var  url = detailPrefix + "/add/" +  receiptId + "/" +  receiptCode;
            $.modal.open("添加" + $.table._option.modalName, url);
        }
    }

    /* 编辑主表 */
    function edit(id) {
        var url = detailUpdateUrl.replace("{id}", id);
        $.modal.open("修改入库单明细" , url);
    }

    /* 单个删除主表 */
    function remove(id) {
        $.modal.confirm("确定删除该条入库单明细信息吗?", function() {
            var url = $.common.isEmpty(id) ? detailRemoveUrl : detailRemoveUrl.replace("{id}", id);
            var data = { "ids": id };
            submit(url, "post", "json", data);
        });
    }

    /* 批量删除主表 */
    function batRemove() {
        var rows=$("#bootstrap-table1").bootstrapTable('getSelections');
        if (rows.length == 0) {
            $.modal.alertWarning("请至少选择一条记录");
            return;
        }
        $.modal.confirm("确认要删除选中的" + rows.length + "条数据吗?", function() {
            var url = detailRemoveUrl;
            var ids = "";
            for(var i=0; i<rows.length; i++) {
                ids = ids + rows[i].id + ","
            }
            var data = { "ids": ids.substring(0, ids.length-1) };
            submit(url, "post", "json", data);
        });
    }

    //提交
    function submit(url, type, dataType, data) {
        $.modal.loading("正在处理中,请稍后...");
        var config = {
            url: url,
            type: type,
            dataType: dataType,
            data: data,
            success: function(result) {
                if (result.code == web_status.SUCCESS) {
                    $.modal.msgSuccess(result.msg);
                    loadDetail();
                }
                else {
                    $.modal.alertError(result.msg);
                }
                $.modal.closeLoading();
            }
        };
        $.ajax(config)
    }

    /* 打印*/
    function receiptDetailPrint() {
        var rows=$("#bootstrap-table1").bootstrapTable('getSelections');
        if (rows.length == 0) {
            $.modal.alertWarning("请至少选择一条记录");
            return;
        }
        var ids = "";
        for(var i=0; i<rows.length; i++) {
            ids = ids + rows[i].id + ","
        }

        var url = detailPrefix + "/report/" + ids;
        $.modal.open("入库铭牌打印" , url);
    }

    /* 收货 */
    function Toreceiving(code) {
        let storage=window.localStorage;
        storage.receiving_code=code;
        createMenuItem(ctx + "receipt/receiving","入库组盘");
        parent.$('.tabReload').click();
    }

    /* 点击明细面板 */
    $("#myTab li:eq(1)").click(function () {
        if (receiptId == '') {
            receiptId = $("#bootstrap-table tr:eq(1) td:eq(1)").text();
        }
        detail(receiptId, "");
    });

    /* 点击主表面板 */
    $("#myTab li:eq(0)").click(function () {
        $.ajax({
            url: prefix + "/list",
            type:"post",
            success:function (value) {
                $("#bootstrap-table").bootstrapTable('refresh', value.data);
            }
        })
    });

    function submitReview(){
        var rows=$("#bootstrap-table").bootstrapTable('getSelections');
        if (rows.length == 0) {
            $.modal.alertWarning("请至少选择一条记录");
            return;
        }

        var url = prefix+"/submitReview";
        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 approval() {
        var rows=$("#bootstrap-table").bootstrapTable('getSelections');
        if (rows.length == 0) {
            $.modal.alertWarning("请至少选择一条记录");
            return;
        }
        var url = prefix+"/approval";
        var ids = "";
        for(var i=0; i<rows.length; i++) {
            ids = ids + rows[i].id + ","
        }
        var data = { "ids": ids.substring(0, ids.length-1),"approval": 100 };
        $.operate.submit(url, "post", "json", data);
    }
</script>
</body>
</html>