<!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>
<body class="white-bg">
<div class="row">
    <div class="col-sm-12">
        <div class="col-sm-12 select-info">
            <form id="cycleDetail-form">
            <div class="select-list">
                <ul>
                    <li>
                        仓库:<input  id="warehouseCode" type="text" name="warehouseCode" th:value="${warehouseCode}" readonly="readonly" />
                    </li>
                    <li>
                      盘点主单编码:<input type="text" id="cycleCountHeadCode" name="cycleCountHeadCode" th:value="${cycleCountHeadCode}" readonly="readonly" />
                    </li>
                    <li>
                        库位:<input id="locationCode" type="text" name="locationCode" />
                    </li>
                    <li>
                        容器:<input id="containerCode" type="text" name="containerCode" />
                    </li>
                    <li>
                        任务主ID:<input id="taskHeaderId" type="text" name="taskHeaderId" />
                    </li>
                    <li>
                        盘点明细状态:<select name="enableStatus"
                                      th:with="lastStatus=${@dict.getType('cyclecountStatus')}">
                        <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="createdBegin"/>
                        <span>-</span>
                        <input type="text" class="time-input" id="endTime" placeholder="结束时间"
                               name="createdEnd"/>
                    </li>-->
                    <li>
                        创建人:<input id="createdBy" type="text" name="createdBy" />
                    </li>
                    <!--<li>
                        完成人:<input id="completedBy" type="text" name="completedBy"/>
                    </li>-->
                    <li>
                    <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i
                    class="fa fa-search"></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="add()"
               shiro:hasPermission="inventory:cyclecountDetail:add">
                <i class="fa fa-plus"></i> 新增
            </a>
            <!--<a class="btn btn-outline btn-warning btn-rounded" onclick="createCyclecountWithGapQty()"
               shiro:hasPermission="inventory:cyclecountDetail:cyclecountRepeat">
                <i class="fa fa-vcard"></i> 差异复盘
            </a>-->
            <a class="btn btn-outline btn-primary btn-rounded" onclick="outcheckAll()"
               shiro:hasPermission="inventory:cyclecountDetail:createTask">
                <i class="fa fa-vcard"></i> 生成盘点任务
            </a>
            <a class="btn btn-outline btn-danger btn-rounded" onclick="batRemove()"
               shiro:hasPermission="inventory:cyclecountDetail:remove">
                <i class="fa fa-trash-o"></i> 删除
            </a>
            <!--<a class="btn btn-outline btn-success btn-rounded" onclick="$.table.refresh()">
                <i class="fa fa-refresh"></i> 刷新
            </a>-->
        </div>
        <table id="bootstrap-table" data-mobile-responsive="true" class="table table-bordered table-hover"></table>
    </div>
</div>
<div th:include="include :: footer"></div>
<script th:inline="javascript">
    //var editFlag = [[${@permission.hasPermi('inventory:cyclecountDetail:edit')}]];
    var removeFlag = [[${@permission.hasPermi('inventory:cyclecountDetail:remove')}]];
    var confirmFlag = [[${@permission.hasPermi('inventory:cyclecountDetail:confirm')}]];
    var createTaskFalg = [[${@permission.hasPermi('inventory:cyclecountDetail:createTask')}]];
    var prefix = ctx + "inventory/cycleCountDetail";
    var prefix_head = ctx + "inventory/cycleCountHeader";
    var remove_url= prefix + "/remove";
    var cyclecountStatus = [[${@dict.getType('cyclecountStatus')}]];
    var inventoryStatus=[[${@dict.getType('inventoryStatus')}]];


        $(function () {
                var options = {
                    url: prefix + "/list",
                    createUrl: prefix + "/add",
                    updateUrl: prefix + "/edit/{id}",
                    removeUrl: prefix + "/remove",
                    modalName: "盘点明细头",
                    sortName: "id",
                    sortOrder: "desc",
                    pagination: true,  //是否分页
                    search: false,
                    showSearch: false,
                    showRefresh: true,
                    refresh:true,
                    showToggle: false,
                    showColumns: false,
                    detailView: true,
                    queryParams : {
                        //传值
                        cycleCountHeadCode : $('#cycleCountHeadCode').val(),

                    },
                    onExpandRow : function(index, row, $detail) {
                        detailChildTable(index, row, $detail);
                    },
                    columns: [
                        {
                            checkbox: true
                        },
                        {
                            field: 'id',
                            title: '明细ID',
                            sortable: true
                        },
                        {
                            field: 'warehouseCode',
                            title: '仓库 ',
                            visible: true
                        },
                        {
                            field: 'cycleCountHeadCode',
                            title: '盘点主单编码',
                        },
                       /* {
                            field: 'companyCode',
                            title: ' 货主',
                            visible: true
                        },*/
                        {
                            field: 'locationCode',
                            title: '库位 '
                        },
                        {
                            field: 'containerCode',
                            title: ' 容器'
                        },
                        {
                            field: 'inventoryDetailId',
                            title: '库存头ID',
                            visible: true
                        },
                        {
                            field: 'containerStatus',
                            title: ' 容器状态',
                            visible: false
                        },
                        {
                            field: 'taskHeaderId',
                            title: ' 任务主表ID',
                            visible: true
                        },
                        {
                            field: 'enableStatus',
                            title: '盘点状态',
                            formatter: function(value, row, index) {
                                return $.table.selectDictLabel(cyclecountStatus, value);
                            },
                            visible: true
                        },
                        /*{
                            field: 'projectNos',
                            title: ' 项目号列表',
                            visible: false
                        },
                        {
                            field: 'batchs',
                            title: ' 批次列表'
                        },
                        {
                            field: 'lots',
                            title: ' 批号列表',
                            visible: false
                        },*/
                        /*{
                            field: 'locking',
                            title: ' 锁定',
                            formatter: function(value, row, index) {
                                var actions = [];
                                if (value == 1) {
                                    actions.push("<span class='badge badge-success'>否</span>");
                                } else {
                                    actions.push("<span class='badge badge-warning'>是</span>");
                                }
                                return actions.join('');
                            },
                            visible: true,
                        },
                        {
                            field: 'lockRemark',
                            title: ' 锁定备注',
                            visible: false
                        },*/
                        {
                            field: 'created',
                            title: ' 创建时间'
                        },
                        {
                            field: 'createdBy',
                            title: ' 创建用户'
                        },
                        {
                            field: 'lastUpdated',
                            title: ' 更新时间',
                            visible: false
                        },
                        {
                            field: 'lastUpdatedBy',
                            title: ' 更新用户',
                            visible: false
                        },
                        {
                            field: 'userDef1',
                            title: ' 自定义字段1',
                            visible: false
                        },
                        {
                            field: 'userDef2',
                            title: ' 自定义字段2',
                            visible: false
                        },
                        {
                            title: '操作',
                            align: 'center',
                            formatter: function (value, row, index) {
                                var actions = [];
                                if(row.enableStatus  === 1 ){
                                    actions.push('<a class="btn btn-primary btn-xs ' + createTaskFalg + '" href="#" onclick="outcheck(\'' + row.id + '\')"><i class="fa fa-gbp"></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>');
                                }
                                if(row.enableStatus  >= 15 && row.enableStatus < 100){
                                    actions.push('<a class="btn btn-warning btn-xs ' + createTaskFalg + '" href="#" onclick="completeCycleCoutTask(\'' + row.id + '\')"><i class="fa fa-gbp"></i>完成盘点任务</a> ');
                                }
                                return actions.join('');
                            }
                        }
                    ]
                };
                $.table.init(options);
            });

        //子表
        detailChildTable = function(index, row, $detail) {
            let childTable = $detail.html('<table style="table-layout:fixed"></table>').find('table');
            $(childTable).bootstrapTable({
                url: prefix + "/cycleCountDetailChild",
                method: 'post',
                sortName: "id",
                sortOrder: "desc",
                sidePagination: "server",
                contentType: "application/x-www-form-urlencoded",
                //页面渲染
                responseHandler: responseHandler,
                queryParams : {
                    //传值
                    cycleCountHeadCode : $('#cycleCountHeadCode').val(),
                    cycleCountDetailId: row.id,
                    containerCode: row.containerCode,
                },
                columns: [
                    {
                        field: 'id',
                        title: '子单ID',
                        sortable: true,
                        width: 80
                    },
                    /*{
                        field: 'inventoryHeaderId',
                        title: '库存头ID',
                        visible: false
                    },*/
                    {
                        field: 'locationCode',
                        title: '库位编号',
                        visible: false
                    },
                    {
                        field: 'containerCode',
                        title: '容器编号',
                        visible: false
                    },
                    {
                        field: 'inventoryDetaiId',
                        title: '库存明细ID',
                        visible: true,
                        width: 100
                    },
                    {
                        field: 'materialCode',
                        title: '物料编码',
                        width: 200
                    },

                    {
                        field: 'materialName',
                        title: '物料名称',
                        width: 200
                    },
                    {
                        field: 'materialSpec',
                        title: '物料规格',
                        visible: false
                    },
                    {
                        field: 'materialUnit',
                        title: '物料单位',
                        visible: true,
                        width: 80
                    },
                    {
                        field: 'systemQty',
                        title: '系统数',
                        width: 100
                    },
                    {
                        title: '实盘数',
                        field:'countedQty',
                        width: 100,
                        visible: true
                    },
                    {
                        title: '差异数',
                        field:'gapQty',
                        width: 100,
                        visible: true
                    },
                    /*{
                        field: 'taskQty',
                        title: '预定执行数量',
                        visible: false,
                        width: 90
                    },
                    {
                        field: 'lockedQty',
                        title: '冻结数量',
                        visible: false
                    },
                    {
                        field: 'receiptCode',
                        title: '入库单编码',
                        visible: true,
                        width: 150
                    },
                    {
                        field: 'companyCode',
                        title: '货主编码',
                        width: 80
                    },*/
                    /*{
                        field: 'receiptDetailId',
                        title: '入库单明细ID',
                        visible: false
                    },*/
                    /*{
                        field: 'batch',
                        title: '批次',
                        sortable: false,
                        visible: true
                    },
                    {
                        field: 'lot',
                        title: '批号',
                        sortable: false,
                        visible: false
                    },
                    {
                        field: 'projectNo',
                        title: '项目号',
                        visible: false,
                        sortable: true
                    },
                    {
                        field: 'supplierCode',
                        title: '供应商编码',
                        visible: false
                    },*/
                    /*{
                        field: 'manufactureDate',
                        title: '生产日期',
                        sortable: true,
                        visible: false
                    },
                    {
                        field: 'expirationDate',
                        title: '失效日期',
                        sortable: true,
                        visible: false
                    },
                    {
                        field: 'inventorySts',
                        title: '库存状态',
                        align: 'center',
                        formatter: function (value, row, index) {
                            return $.table.selectDictLabel(inventoryStatus, value);
                        },
                        visible: false
                    },

                    {
                        field: 'referCode',
                        title: '上游单号',
                        visible: false
                    },
                    {
                        field: 'referDetailId',
                        title: '上游单号行号',
                        visible: false
                    },
                    {
                        field: 'qcCheck',
                        title: '质检',
                        visible: false
                    },
                    {
                        field: 'weight',
                        title: '重量',
                        visible: false
                    },
                    {
                        field: 'attributeId',
                        title: '属性号',
                        visible: false
                    },
                    {
                        field: 'attribute1',
                        title: '属性1',
                        visible: false
                    },
                    {
                        field: 'attribute2',
                        title: '属性2',
                        visible: false
                    },
                    {
                        field: 'attribute3',
                        title: '属性3',
                        visible: false
                    },
                    {
                        field: 'lockCode',
                        title: '锁',
                        visible: false,
                        width: 110
                    },
                    {
                        field: 'lastCycleCountDate',
                        title: '上次盘点日期',
                        visible: false,
                        sortable: true
                    },*/
                    {
                        field: 'countedBy',
                        title: '实盘登记人',
                        visible: true,
                        width: 110
                    },
                    {
                        field: 'childStatus',
                        title: '子单状态',
                        visible: true,
                        formatter: function(value, row, index) {
                            return $.table.selectDictLabel(cyclecountStatus, value);
                        },
                        width: 120
                    },
                    {
                        field: 'created',
                        title: '创建时间',
                        sortable: true,
                        visible: true,
                        width: 145
                    },
                    {
                        field: 'createdBy',
                        title: '创建用户',
                        visible: true,
                        width: 110
                    },
                    /*{
                        field: 'lastUpdated',
                        title: '最后修改时间',
                        sortable: true,
                        visible: false
                    },
                    {
                        field: 'lastUpdatedBy',
                        title: '更新用户',
                        visible: false
                    },*/
                    {
                        title: '操作',
                        align: 'center',
                        width: 200,
                        formatter: function (value, row, index) {
                            var actions = [];
                            if(row.childStatus > 1 && row.childStatus < 100){
                                actions.push('<a class="btn btn-success btn-xs ' + confirmFlag + '" href="#" onclick="confirmGapQty(\'' + row.id + '\')"><i class="fa fa-comment"></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 add() {
        var cycleCountHeadCode = $('#cycleCountHeadCode').val();
        //var companyCode = $('#companyCode').val();
        if(cycleCountHeadCode != null && cycleCountHeadCode != "" && cycleCountHeadCode != undefined){
            $.modal.openFull("添加盘点明细", prefix +"/add?cycleCountHeadCode=" + cycleCountHeadCode);
        }else{
            $.modal.alertWarning("没有获取到主盘点单编码,无法新增明细!");
        }
    }


    function remove(id) {
        $.modal.confirm("确定删除该条" + $.table._option.modalName + "信息吗?", function() {
            var url = $.common.isEmpty(id) ? remove_url : remove_url.replace("{id}", id);
            var data = { "ids": id };
            $.ajax({
                url:url,
                type:"post",
                data:data,
                success:function (result) {
                    if (result.code == web_status.SUCCESS) {
                        $.modal.msgSuccess(result.msg);
                        $.table.refresh();
                    } else {
                        $.modal.alertError(result.msg);
                    }
                    $.modal.closeLoading();
                }
            })
        });
    }

    //
    function open(title, url, width, height){
        if (navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)) {
            width = 'auto';
            height = 'auto';
        }
        if (title==null){
            title = false;
        }
        if (url==null){
            url="404.html";
        }
        if ($.common.isEmpty(width)) {
            width = 800;
            // width = ($(window).width() - 100);
        }
        if ($.common.isEmpty(height)) {
            height = ($(window).height() - 50);
        }
        layer.open({
            type: 2,
            area: [width + 'px', height + 'px'],
            fix: false,
            //不固定
            maxmin: true,
            shade: 0.3,
            title: title,
            content: url
            // shadeClose: true, //点击遮罩关闭层
        })
    }

    /* 批量删除主表 */
    function batRemove() {
        var rows=$("#bootstrap-table").bootstrapTable('getSelections');
        if (rows.length == 0) {
            $.modal.alertWarning("请至少选择一条记录");
            return;
        }
        $.modal.confirm("确认要删除选中的" + rows.length + "条数据吗?", function() {
            $.modal.loading("正在处理,请稍后...");
            var url = remove_url;
            var ids = "";
            for(var i=0; i<rows.length; i++) {
                ids = ids + rows[i].id + ","
            }
            var data = { "ids": ids.substring(0, ids.length-1) };
            $.ajax({
                url:url,
                type:"post",
                data:data,
                success:function (result) {
                    if (result.code == web_status.SUCCESS) {
                        $.modal.closeLoading();
                        $.modal.msgSuccess(result.msg);

                    } else {
                        $.modal.closeLoading();
                        $.modal.alertError(result.msg);
                    }
                    $.table.refresh();
                    //$.modal.closeLoading();
                }
            })
        });
    }

    /*
        实盘登记单条
     */
    function confirmGapQty(id) {
        layer.prompt({
            formType: 0,
            value: '0',
            title: '登记数量',
          //  area: ['800px', '350px'] //自定义文本域宽高
        }, function(value, index, elem){
            if (parseFloat(value).toString() == "NaN"){
                layer.alertError("请输入数字");
            }else {
                var data = {
                    detailId:id,
                    qty:value
                };
                $.modal.loading("正在处理中,请稍后...");
                // $.operate.submit(prefix+"/confirmGapQty", "post", "json", data);
                $.ajax({
                    url:prefix+"/confirmGapQty",
                    type:"post",
                    data:data,
                    success:function (result) {
                        if (result.code == web_status.SUCCESS) {
                            $.modal.msgSuccess(result.msg);
                            //$("[name='refresh']").click();
                            $.table.refresh();
                            //detailChildTable();
                            //$.modal.refresh(id);
                        } else {
                            $.modal.alertError(result.msg);
                        }

                    }
                });
                $.modal.closeLoading();
                layer.close(index);
                //layer.closeAll();
            }
        });
    }

    /*
        差异复盘
     */
    function createCyclecountWithGapQty() {
        $.modal.confirm("确认进行差异复盘么?该操作会将有差异的明细重新生成一个新的盘点单。", function() {
            var url = prefix + "/createCyclecountWithGapQty";
            var data = { "cycleCountHeadCode": $('#cycleCountHeadCode').val() };
            postInner(url, data);
        });
    }

    //生成所有盘点任务
    function outcheckAll() {
        $.modal.confirm("确认进行盘点任务生成么?注意,这将会使未生成盘点任务的明细生成盘点任务!", function() {
            var url = prefix + "/createCycleCountTaskByHeadId";
            var data = { "cycleCountHeadCode": $('#cycleCountHeadCode').val() };
            postInner(url,data);
        });
    }

    //完成盘点任务
    function completeCycleCoutTask(id) {
        var url = prefix + "/completeCycleCountTask";
        var data = { "cycleCoutdetailId": id };
        postInner(url,data);
    }


    //下发单条盘点
    function outcheck(id) {
        var url = prefix + "/createCycleCoutTaskByDetailId";
        var data = { "cycleCoutdetailId": id };
        postInner(url,data);
    }

    function postInner(url,data) {
        $.modal.loading("正在处理中,请稍后...");
        $.ajax({
            url:url,
            type:"post",
            data:data,
            success:function (result) {
                if (result.code == web_status.SUCCESS) {
                    $.modal.msgSuccess(result.msg);
                    $.modal.closeLoading()
                    //layer.close(index);
                } else {
                    $.modal.alertError(result.msg);
                    $.modal.closeLoading()
                    //layer.close(index);
                }
                $.table.refresh();
            }
        })
    }



    function responseHandler(res) {
        if (res.code == 200) {
            return { rows: res.data, total: res.total, code: 0};
        } else {
            $.modal.alertWarning(res.msg);
            return { rows: [], total: 0 };
        }
    }

</script>
</body>
</html>