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