//@ sourceURL=yf_inventory.js var LODOP; //声明为全局变量 var pharmacyGroupNo = window.localStorage["groupNo"];//药房编码 var lastrow;//最后编辑单元格的行 var lastcell;//最后编辑单元格的列 $(function () { init_daterangepicker(); //$("#pharmacyModal").modal("show"); if(pharmacyGroupNo == null){ return errorMesageSimaple('药房参数未设置,请在发药参数设置中设置'); } initTbAdd(); $("#btn_query").click(function (t) { loadTbAddRecord(); }); $(".selectpicker").selectpicker({ dropuAuto: false }); $("#btn_create").on('click',function(e){ var ypOutDetlYfs= $("#tb_add").getRowData(); if(ypOutDetlYfs.length !=0){ if (!confirm("自动生成将覆盖现有未提交的盘点数据!是否继续?")) { return; } } loadTbTable(); }); $("#btn_audit").on('click',function(e){ audit(); }); $("#btn_save").on('click',function(e){ saveTbTable(); }); $("#btn_print").on('click',function(e){ print(); }); $("#btn_record").on('click',function(e){ $("#recrodModal").modal("show"); initTbAddRecord(); loadTbAddRecord(); }); }); /** * 获取按钮组选择的下标 * @param id * @returns {number} */ function getIndex(id) { var index = 0; var item = $("#" + id).find("button"); for (var i = 0; i <= item.length; i++) { if ($(item[i]).hasClass("btn-primary")) { index = i; break; } } return index; } /** * 列表类型按钮切换事件 * @param object * @param realIndex 下标 */ function inventoryButtonChange(object, realIndex) { $("#send_refund_group").find("button").each(function (index, element) { if ($(element).hasClass("btn-primary")) { $(element).removeClass("btn-primary").addClass("btn-default"); } }); if (realIndex == 0) { $("#searchDiv").css("display", "none"); $("#addDiv").css("display", ""); $("#record_div").css("display", "none"); $("#add_div").css("display", ""); var inventoryDate = $("#inventoryDate").html(); var auditDate = $("#auditDate").html(); var inventoryNo = $("#inventoryNo").html(); var is = inventoryDate.substring(0,7); if(!isEmpty(inventoryNo) && isEmpty(auditDate)){ loadTbTable(); } } else { $("#searchDiv").css("display", ""); $("#addDiv").css("display", "none"); $("#record_div").css("display", ""); $("#add_div").css("display", "none"); $.ajax({ type: "GET", url: '/thmz/getLoginUser', contentType: "application/json;charset=UTF-8", dataType: "json", headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")}, success: function (res) { if (res == '401' || res == 401) { window.location.href = '/thmz/login/view' return; } if (res.code == 0) { var roles = res.data.roleIds.split(","); for (var i = 0; i < roles.length; i++) { if(roles[i] == 1 || roles[i] == 3){ $("#btn_audit").attr("disabled",false); return; } } } else { errorMesage(res); } } }); } $(object).removeClass("btn-default").addClass("btn-primary"); } /** * 生成药品盘点数据 */ function loadTbTable() { $("#btn_create").attr("disabled",true); $("#tb_add").jqGrid('setGridParam', { datatype:'json', postData: { groupNo: pharmacyGroupNo,infusionFlag:$('#infusionFlag').val(),visibleFlag:$('#visibleFlag').val() } }).trigger('reloadGrid'); } /** * 生成盘点记录数据 */ function loadTbAddRecord() { $("#tb_add_record").jqGrid('setGridParam', { datatype:'json', postData: { groupNo: pharmacyGroupNo, confirmFlag:$('#confirmFlag').val(), beginDate: getRePortRangeArr()[0], endDate: getRePortRangeArr()[1] } }).trigger('reloadGrid'); } /** * 生成药品盘点数据 */ function saveTbTable() { $("#tb_add").jqGrid("saveCell",lastrow,lastcell);//当前单元格退出编辑模式 var ypOutDetlYfs= $("#tb_add").getRowData(); if(ypOutDetlYfs.length ==0){ return errorMesageSimaple('盘点药品数据为空,请生成后再提交'); } if (!confirm("为避免药品筛选导致药品不全,请检查表格筛选行是否已清空并重新刷新表格!是否已确认?")) { return; } $("#btn_save").attr("disabled",true); $.ajax({ type: "POST", url: '/thmz/saveYpInventoryData', contentType: "application/json;charset=UTF-8", dataType: "json", headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")}, data: JSON.stringify(ypOutDetlYfs), success: function (res) { $("#btn_save").attr("disabled",false); if (res == '401' || res == 401) { window.location.href = '/thmz/login/view' return; } if (res.code == 0) { successMesage(res); } else { errorMesage(res); } } }); } /** * 初始化盘点表 */ function initTbAdd() { $.jgrid.gridUnload("tb_add"); $("#tb_add").jqGrid({ datatype: 'local', mtype: 'get', url: '/thmz/getYpInventoryData', loadBeforeSend: function (jqXHR) { jqXHR.setRequestHeader("Authorization", 'Bearer ' + localStorage.getItem("token")); jqXHR.setRequestHeader("Accept", 'application/json'); }, ajaxCellOptions: { beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Authorization", 'Bearer ' + localStorage.getItem("token")); } }, styleUI: 'Bootstrap', viewrecords: true, autowidth: true, rowNum: -1,//取消分页 height: screen.height*0.6, caption: '盘点药品信息', shrinkToFit:true,//宽度是否自适应 autoScroll: false, cellEdit: true, cellsubmit: "clientArray", rownumbers: true,//是否显示序号 rownumWidth: 50, loadonce:true,//如果为ture则数据只从服务器端抓取一次,之后所有操作都是在客户端执行,翻页功能会被禁用 colNames: ['货位号','编码','药品名称','规格','单价', '账存数量', '实盘数量', '盈亏数量', '盈亏金额','盘点单号','盘点时间', '生产厂商','序号','药房编码','拼音编码'], colModel: [ {name: 'location', index: 'location',align:'center',width:100, searchoptions:{sopt:['cn','eq','ne','lt','le','gt','ge','nc']}}, {name: 'chargeCode', index: 'chargeCode',align:'center',width:100, searchoptions:{sopt:['cn','eq','nc']}}, {name: 'name', index: 'name',align:'left',width:180, searchoptions:{sopt:['cn','eq','nc']}}, {name: 'specification', index: 'specification',width:140, searchoptions:{sopt:['cn','eq','nc']}}, {name: 'packRetprice', index: 'packRetprice',align:'center',width:100, searchoptions:{sopt:['eq','ne','lt','le','gt','ge']}}, {name: 'stockAmount', index: 'stockAmount',align:'center',width:100, searchoptions:{sopt:['eq','ne','lt','le','gt','ge']}, formatter:function(cellvalue, options, rowObject){ return keepTwoDecimal(cellvalue) }}, {name: 'currStockAmount', index: 'currStockAmount',align:'center',width:100,editable : true,edittype:'text',searchoptions:{sopt:['eq','ne','lt','le','gt','ge']}, editrules: {edithidden:true,number:true,minValue:0}, formatter:function(cellvalue, options, rowObject){ $("#tb_add").jqGrid('setCell',options.rowId,'profitLossprofitLoss',parseFloat(rowObject.currStockAmount-rowObject.stockAmount)); $("#tb_add").jqGrid('setCell',options.rowId,'profitLossprofitMoney',parseFloat((rowObject.currStockAmount-rowObject.stockAmount)*rowObject.packRetprice)); return cellvalue==null?keepTwoDecimal(rowObject.stockAmount):keepTwoDecimal(cellvalue) }}, {name: 'profitLossprofitLoss', index: 'profitLossprofitLoss',align:'center',width:100,searchoptions:{sopt:['eq','ne','lt','le','gt','ge']}, formatter:function(cellvalue, options, rowObject){ return cellvalue==null?0:keepTwoDecimal(cellvalue) }}, {name: 'profitLossprofitMoney', index: 'profitLossprofitMoney',align:'center',width:100,searchoptions:{sopt:['eq','ne','lt','le','gt','ge']}, formatter:function(cellvalue, options, rowObject){ return cellvalue==null?0:keepTwoDecimal(cellvalue) }}, {name: 'drawNo', index: 'drawNo',align:'center',width:120,searchoptions:{sopt:['eq']}}, {name: 'outDate', index: 'outDate',align:'center',width:120,searchoptions:{sopt:['eq']},formatter:function(cellvalue, options, rowObject){ return format(cellvalue,"yyyy-MM-dd") }}, {name: 'manufactoryName', index: 'manufactoryName',width:180, searchoptions:{sopt:['cn','eq','nc']}}, {name: 'serial', index: 'serial',align:'center',width:100,hidden:true}, {name: 'groupNo', index: 'groupNo',align:'center',width:100,hidden:true}, {name: 'pyCode', index: 'pyCode',align:'center',width:100,hidden:true} ], jsonReader: { root: "data", repeatitems: false }, beforeEditCell:function(rowid, cellname, v, iRow, iCol){ lastrow = iRow; lastcell = iCol; }, beforeRequest:function(){ $("#tb_add").jqGrid("saveCell",lastrow,lastcell);//当前单元格退出编辑模式,防止列编辑功能失效 }, loadComplete: function (res) { //加载完成(初始加载),回调函数 $("#btn_create").attr("disabled",false); if (res == '401' || res == 401) { window.location.href = '/thmz/login/view'; return; } if (res.code == 0) { if(res.data[0].drawNo!=null){ $("#tipsModal").modal('show'); } }else if (res.code == -1){ errorMesage(res); } } }); $("#tb_add").jqGrid('filterToolbar',{searchOperators : true}); } /** * 初始化盘点记录表 */ function initTbAddRecord() { $.jgrid.gridUnload("tb_add_record"); $("#tb_add_record").jqGrid({ datatype: 'local', mtype: 'get', url: '/thmz/queryYpInventoryRecord', loadBeforeSend: function (jqXHR) { jqXHR.setRequestHeader("Authorization", 'Bearer ' + localStorage.getItem("token")); jqXHR.setRequestHeader("Accept", 'application/json'); }, ajaxCellOptions: { beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Authorization", 'Bearer ' + localStorage.getItem("token")); } }, styleUI: 'Bootstrap', viewrecords: true, //autowidth: true, rowNum: -1,//取消分页 //height: screen.height*0.3, caption: '盘点记录', shrinkToFit:false,//宽度是否自适应 autoScroll: false, colNames: ['盘点单号','盘点日期','状态'], colModel: [ {name: 'drawNo', index: 'drawNo',width:190}, {name: 'outDate', index: 'outDate',width:190,formatter:function(cellvalue, options, rowObject){ return format(cellvalue,"yyyy-MM-dd") }}, {name: 'confirmFlag', index: 'confirmFlag',align:'center',width:190, formatter:function(cellvalue, options, rowObject){ return cellvalue==0?'未审核':'已审核' } } ], jsonReader: { root: "data", repeatitems: false }, ondblClickRow: function(rowid){ var record = $("#tb_add_record").getRowData(rowid); $('.sjh').remove(); getTbAddRecordPrintData(record.drawNo); $("#recrodModal").modal("hide"); }, loadComplete: function (res) { //加载完成(初始加载),回调函数 if (res == '401' || res == 401) { window.location.href = '/thmz/login/view'; return; } if (res.code == -1) { errorMesage(res); } } }); } /** * 生成打印数据 */ function getTbAddRecordPrintData(drawNo) { $('#YWaitDialog').css('top',$('.xtd').offset().top); $('#YWaitDialog').show(); $.ajax({ type: "GET", url: '/thmz/getYpInventoryPrintData', contentType: "application/json;charset=UTF-8", dataType: "json", headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")}, data: { drawNo:drawNo }, success: function (res) { $('#YWaitDialog').hide(); if (res == '401' || res == 401) { window.location.href = '/thmz/login/view' return; } if (res.code == 0) { $("#groupNo").html(pharmacyGroupNo==71?'门诊西药房':'住院药房'); $("#inventoryDate").html(format(res.data[0].outDate,'yyyy-MM-dd')); $("#inventoryNo").html(drawNo); $("#auditDate").html(format(res.data[0].confirmDate,'yyyy-MM-dd HH:mm:ss')); $("#printDate").html(format(new Date(),'yyyy-MM-dd HH:mm:ss')); var html = ''; var kindName = ''; var xj_lszje = 0; var xj_grzje = 0; var xj_ykzje = 0; var lszje = 0; var grzje = 0; var ykzje = 0; var confirmName = res.confirmName==null?'':res.confirmName; for (var i = 0; i < res.data.length; i++) { var data = res.data[i]; var lsje = data.currStockAmount*data.packRetprice; var grje = data.currStockAmount*data.buyPrice; var ykje = parseFloat((data.currStockAmount-data.stockAmount)*data.packRetprice); if(kindName == ''){ kindName = data.kindName; xj_lszje += lsje; xj_grzje += grje; xj_ykzje += ykje; }else if(kindName == data.kindName){ xj_lszje += lsje; xj_grzje += grje; xj_ykzje += ykje; }else{ lszje += xj_lszje; grzje += xj_grzje; ykzje += xj_ykzje; html += ''; html += '' + kindName + ''; html += '小计:'; html += '' + keepTwoDecimal(xj_lszje) + ''; html += '' + keepTwoDecimal(xj_grzje) + ''; html += '' + keepTwoDecimal(xj_ykzje) + ''; html += ''; html += ''; xj_lszje = lsje; xj_grzje = grje; xj_ykzje = ykje; kindName = data.kindName; } html += ''; html += '' + data.location + ''; html += '' + data.chargeCode + ''; html += '' + data.name + ''; html += '' + data.specification + ''; html += '' + data.packRetprice + ''; html += '' + keepTwoDecimal(data.currStockAmount*data.packRetprice) + ''; html += '' + data.buyPrice + ''; html += '' + keepTwoDecimal(data.currStockAmount*data.buyPrice) + ''; html += '' + data.stockAmount + ''; html += '' + data.currStockAmount + ''; html += '' + parseFloat(data.currStockAmount-data.stockAmount) + ''; html += '' + keepTwoDecimal(parseFloat((data.currStockAmount-data.stockAmount)*data.packRetprice)) + ''; html += '' + (isEmpty(data.manufactoryName)?'':data.manufactoryName) + ''; html += ''; } lszje += xj_lszje; grzje += xj_grzje; ykzje += xj_ykzje; html += ''; html += '' + kindName + ''; html += '小计:'; html += '' + keepTwoDecimal(xj_lszje) + ''; html += '' + keepTwoDecimal(xj_grzje) + ''; html += '' + keepTwoDecimal(xj_ykzje) + ''; html += ''; html += ''; html += '' + ' 盘点总金额:'+keepTwoDecimal(lszje)+'' + ' 购入总金额:'+keepTwoDecimal(grzje)+'' + ' 盈亏总金额:'+keepTwoDecimal(ykzje)+'' + ' ' + ' ' + ' 盘点人:'+res.inputName+'' + ' 审核人:'+confirmName+'' + ' '; $("#tj_table").append(html); var date = new Date(); tableToExcel('tj_table', '长沙泰和医院药品盘点表('+date.getMonth()+'月)'); } else if (res.code == -1) { new PNotify({ title: '错误提示', text: res.message, type: 'error', hide: true, styling: 'bootstrap3' }); } } }); } /** * 获取时间选择器的时间数组 * @returns {string[]} */ function getRePortRangeArr() { var rePortRange = $('#reportrange span').html(); var rePortRangeArr = rePortRange.split(" - "); rePortRangeArr[0] = rePortRangeArr[0] + " 00:00:00"; rePortRangeArr[1] = rePortRangeArr[1] + " 23:59:59"; return rePortRangeArr; } /** * 打印报表 */ function print() { setDefaultPrint(); LODOP = getLodop(); LODOP.PRINT_INITA(6, 0, "210mm", "297mm", "药房精麻药品发放统计表"); LODOP.SET_PRINT_PAGESIZE(2, 0, 0,"A4"); //设置默认打印机 LODOP.SET_PRINTER_INDEX(defaultPrintIndex); LODOP.SET_PRINT_STYLE("FontSize", 10); //字体大小 LODOP.SET_PRINT_STYLEA(0,"ItemType",2); //设置默认打印机 LODOP.SET_PRINTER_INDEX(defaultPrintIndex); LODOP.ADD_PRINT_TEXT('195mm','140mm','40mm','40mm','第#页/共&页'); LODOP.SET_PRINT_STYLEA(0,"ItemType",2); var strStyle=""; LODOP.ADD_PRINT_HTM("0mm", "2mm", "RightMargin:0mm", "BottomMargin:15mm",strStyle+ document.getElementById("report_table_1").innerHTML); //LODOP.PRINT(); LODOP.PREVIEW(); } /** * 审核 */ function audit(){ var drawNo = $("#inventoryNo").html(); if(isEmpty(drawNo)){ return errorMesageSimaple('盘点单号数据为空,请重新选择盘点记录'); } if (!confirm("确认审核后将更新盘点药品的库存,是否确认审核?")) { return; } $("#btn_audit").attr("disabled",true); $.ajax({ type: "GET", url: '/thmz/auditYpInventory', contentType: "application/json;charset=UTF-8", dataType: "json", headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")}, data: { drawNo:drawNo }, success: function (res) { $("#btn_audit").attr("disabled",false); if (res == '401' || res == 401) { window.location.href = '/thmz/login/view' return; } if (res.code == 0) { successMesage(res); $('.sjh').remove(); getTbAddRecordPrintData(res.data); } else { errorMesage(res); } } }); }