<!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">
            <div class="select-list">
                <ul>
                    <li>
                        <form id="cycleHeader-form">
                            盘点主单编码:<input type="text" id="cycleCountHeadCode" name="cycleCountHeadCode" readonly="readonly" />
                        </form>
                    </li>
                    <li>
                        货主编码:<input id="companyCode" type="text" name="companyCode"  />
                    </li>
                    <li>
                        库位:<input id="locationCode" type="text" name="locationCode" />
                    </li>
                    <li>
                        容器:<input id="containerCode" type="text" name="containerCode" />
                    </li>
                    <li>
                        库存明细ID:<input id = "inventoryDetailId" type="text" name="inventoryDetailId" />
                    </li>
                    <li>
                        物料编码:<input id="materialCode" type="text" name="materialCode" />
                    </li>
                    <li>
                        物料名称:<input id="materialName" type="text" name="materialName" />
                    </li>
                    <li>
                        物料规格:<input id="materialSpec" type="text" name="materialSpec" />
                    </li>
                    <li>
                        任务主表:<input id="taskHeaderId" type="text" name="taskHeaderId" />
                    </li>
                    <li>
                        库存状态:
                        <select name="inventorySts" th:with="inventoryStatus=${@dict.getType('inventoryStatus')}">
                            <option value="">所有</option>
                            <option th:each="e : ${inventoryStatus}" th:text="${e['dictLabel']}"
                                    th:value="${e['dictValue']}"></option>
                        </select>
                    </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>
                        批次:<input id="batch" type="text" name="batch" />
                    </li>
                    <li>
                        批号:<input id="lot" type="text" name="lot" />
                    </li>
                    <li>
                        项目号:<input id="projectNo" type="text" name="projectNo" />
                    </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>
                        创建人:<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>
        </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-danger btn-rounded" onclick="createCyclecountWithGapQty()"
               shiro:hasPermission="inventory:cyclecountDetail:cyclecountRepeat">
                <i class="fa fa-vcard"></i> 差异复盘
            </a>
            <a class="btn btn-outline btn-danger 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')}]];
    var created ;


    $(function () {
        update();
    });

    function update() {
        let options = {
            url: prefix + "/list",
            createUrl: prefix + "/add",
            updateUrl: prefix + "/edit/{id}",
            removeUrl: prefix + "/remove",
            modalName: "盘点明细",
            sortName: "id",
            sortOrder: "desc",
            showRefresh: true, //刷新
            search: false,
            refresh:true,
            columns: [
                {
                    checkbox: true
                },
                {
                    field: 'id',
                    title: '明细ID',
                    sortable:true
                },
                {
                    field: 'cycleCountHeadCode',
                    title: '盘点主单编码',
                },
                {
                    field: 'warehouseCode',
                    title: '仓库',
                },
                {
                    field: 'preferenceCode',
                    title: '盘点首选项编码',
                },
                {
                    field: 'countId',
                    title: '盘点内部号',
                    visible: false
                },
                {
                    field: 'round',
                    title: '盘点次数',
                    visible: false
                },
                {
                    field: 'taskHeaderId',
                    title: '任务ID',
                    visible: false
                },
                {
                    field: 'taskDetailId',
                    title: '任务明细ID',
                    visible: false
                },
                {
                    field: 'companyCode',
                    title: '货主',
                    visible: true
                },
                {
                    field: 'locationCode',
                    title: '库位编码',
                },
                {
                    field: 'containerCode',
                    title: '容器编号',

                },
                {
                    field: 'materialCode',
                    title: '物料编码',
                },
                {
                    field: 'materialName',
                    title: '物料名称',
                },
                {
                    field: 'materialSpec',
                    title: '物料规格',
                },
                {
                    field: 'materialUnit',
                    title: '物料单位',
                },
                {
                    field: 'batch',
                    title: '批次',
                    sortable:true
                },
                {
                    field: 'lot',
                    title: '批号',
                    sortable:true
                },
                {
                    field: 'projectNo',
                    title: '项目号',
                    sortable:true
                },

                {
                    field: 'inventorySts',
                    title: '库存状态',
                    formatter: function(value, row, index) {
                        return $.table.selectDictLabel(inventoryStatus, value);
                    },

                },
                {
                    field: 'systemQty',
                    title: '系统数量'
                },
                {
                    title: '实际盘点数量',
                    field:'countedQty'
                },
                {
                    title: '差异数量',
                    field: 'gapQty'
                },
                {
                    field: 'rejectionNote',
                    title: '失败原因'
                },
                {
                    field: 'countedBy',
                    title: '盘点创建人'
                },
                {
                    field: 'countedAt',
                    title: '盘点创建日期'
                },
                {
                    field: 'assignedTo',
                    title: '指派用户'
                },
                {
                    field: 'assignedAt',
                    title: '指派时间'
                },
                {
                    field: 'completedBy',
                    title: '完成用户'
                },
                {
                    field: 'completedAt',
                    title: '完成时间'
                },
                {
                    field: 'created',
                    title: '创建时间'
                },
                {
                    field: 'createdBy',
                    title: '创建用户'
                },
                {
                    field: 'lastUpdated',
                    title: '更新时间'
                },
                {
                    field: 'lastUpdatedBy',
                    title: '更新用户'
                },
                {
                    field: 'enableStatus',
                    title: '盘点明细状态',
                    formatter: function(value, row, index) {
                        return $.table.selectDictLabel(cyclecountStatus, value);
                    },
                    visible: true
                },
                {
                    field: 'processStamp',
                    title: '处理标记'
                },
                {
                    field: 'version',
                    title: '数据版本'
                },

                // {
                //     field: 'userDef1',
                //     title: '自定义字段1'
                // },
                // {
                //     field: 'userDef2',
                //     title: '自定义字段2'
                // },
                // {
                //     field: 'userDef3',
                //     title: '自定义字段3'
                // },
                {
                    title: '操作',
                    align: 'center',
                    formatter: function (value, row, index) {
                        var actions = [];
                            if(row.enableStatus >= 10 && row.enableStatus < 100){
                                actions.push('<a class="btn btn-success btn-xs ' + confirmFlag + '" href="#" onclick="confirmGapQty(\'' + row.id + '\')"><i class="fa fa-comment"></i>实盘登记</a> ');
                            }
                            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>');
                        return actions.join('');
                    }
                }]
        },url = location.search; //获取url中"?"符后的字串
        if (url.indexOf("?") != -1) {    //判断是否有参数
            let strs = url.substr(1).split("=");
            $("#cycleCountHeadCode").val(strs[1]);
            options.queryParams=function(params) {
                return {
                    // 传递参数查询参数
                    cycleCountHeadCode:strs[1],
                    pageSize:       params.limit,
                    pageNum:        params.offset / params.limit + 1,
                    searchValue:    params.search,
                    orderByColumn:  params.sort,
                    isAsc:          params.order
                };
            };
            $.table.init(options);
        }
        else{
            $.table.init(options);
        }
    }
    function add() {
        var cycleCountHeadCode = $('#cycleCountHeadCode').val();
        //var companyCode = $('#companyCode').val();
        if(cycleCountHeadCode !=null && cycleCountHeadCode!="" && cycleCountHeadCode!=undefined){
            open("添加盘点明细", prefix+"/add?cycleCountHeadCode=" + cycleCountHeadCode);
        }
    }
    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() {
            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.msgSuccess(result.msg);
                        update();
                    } else {
                        $.modal.alertError(result.msg);
                    }
                    $.modal.closeLoading();
                }
            })
        });
    }
/*    function updateHeader() {
        $.ajax({
            url:prefix_head+ "/getHeader",

            type:"post",
            data:{
                id:$('#headId').val()
            },
            success:function (value) {
                if (value.data) {
                    $('#code').val(value.data.code);
                    $('#type').val(value.data.typeLabel);
                    $('#status').val(value.data.statusLabel);
                    $('#created').val(value.data.created);
                    var text_val=$('#created').val();
                    $('#created').val(text_val.replace("T"," "));
                    $('#createdBy').val(value.data.createdBy);
                    $('#lastUpdated').val(value.data.lastUpdated);
                    var text_val_t=$('#lastUpdated').val();
                    $('#lastUpdated').val(text_val_t.replace("T"," "));
                    $('#lastUpdatedBy').val(value.data.lastUpdatedBy);
                }
            }
        })
    }*/
    // function updateHeader() {
    //     $.ajax({
    //         url:prefix_head+ "/getHeader",
    //
    //         type:"post",
    //         data:{
    //             id:$('#headId').val()
    //         },
    //         success:function (value) {
    //             if (value.data) {
    //                 $('#code').val(value.data.code);
    //                 $('#type').val(value.data.typeLabel);
    //                 $('#status').val(value.data.statusLabel);
    //                 $('#created').val(value.data.created);
    //                 var text_val=$('#created').val();
    //                 $('#created').val(text_val.replace("T"," "));
    //                 $('#createdBy').val(value.data.createdBy);
    //                 $('#lastUpdated').val(value.data.lastUpdated);
    //                 var text_val_t=$('#lastUpdated').val();
    //                 $('#lastUpdated').val(text_val_t.replace("T"," "));
    //                 $('#lastUpdatedBy').val(value.data.lastUpdatedBy);
    //             }
    //         }
    //     })
    // }
    //刷新
    // function update() {
    //     get_list();
    //     // $("#bootstrap-table").load(location.href + " #bootstrap-table")
    // }
    /*
        实盘登记单条
     */
    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();
                            update();
                        } else {
                            $.modal.alertError(result.msg);
                        }
                        $.modal.closeLoading();
                    }
                });
                layer.close(index);
            }
        });
    }

    /*
        无差异确认所有
     */
    function comfirmAllWithNoGapQty() {
        $.modal.confirm("确认全部无差异登记么?注意这会覆盖先前登记的信息。", function() {
            var url = prefix + "/comfirmAllWithNoGapQty";
            var data = { "cycleCountHeadCode": $('#cycleCountHeadCode').val() };
            postInner(url, data);
        });
    }

    /*
        剩余无差异确认
     */
/*    function comfirmRemainWithNoGapQty() {
        $.modal.confirm("确认剩余无差异登记么?", function() {
            var url = prefix + "/comfirmRemainWithNoGapQty";
            var data = { "cycleCountHeadCode": $('#cycleCountHeadCode').val() };
            postInner(url, data);
        });
    }*/

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

    //调整差异库存
   /* function adjust() {
        $.modal.confirm("注意:该操作将更改库存,当实盘数量为0且库位上只剩空容器时,请手动执行空托出库任务,容器上有货则无需其他操作!", function() {
            var url = prefix + "/adjust";
            var data = { "cycleCountHeadCode": $('#cycleCountHeadCode').val() };
            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);
                    update();
                } else {
                    $.modal.alertError(result.msg);
                }
                $.modal.closeLoading();
            }
        })
    }

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

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