<!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> 搜索</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>