//@ sourceURL=drug_delivery.js var groupNo = window.localStorage["groupYk"];//药房编码 var outDetlList = [];//出库数据集 $(function () { init_daterangepicker(); $('.datetime').datetimepicker({ language: 'zh-CN', format: 'yyyy-mm-dd', autoclose: true, minView: 2, startView: 2, }); initDetailed(); initInDetlDetailed(); initDynamicSelect("allUnitCode",'deptCode'); initSearchList('
', 'drugName', 600, 250); $('#drugName').on('input focus', function (e) { showDrugPopover({ method: 'POST', data: JSON.stringify({ searchText: $("#drugName").val() == "" ? null : $("#drugName").val(), groupNo: groupNo, delFlag: 0 }), url: '/thmz/getYpZdDictBase', columns: [ { field: 'stockAmount', title: '库存', align: "center", valign: 'middle', formatter: function (value, row, index) { return value.toFixed(0); } }, { field: 'jbFlag', title: '基本药物', align: "center", valign: 'middle', formatter: function (cellvalue, options, rowObject) { return cellvalue === '1' ? '国家基本药物' : ''; } }], onClickRow: function (row, $element) { let dataRow = { chargeCode: row['code'], name: row['name'], specification: row['specification'], packRetprice: row['packRetprice'], amount: 0, amountOut: 0, amountOutMoney: 0, jbFlag: row['jbFlag'], serial: row['serial'] }; addRowToLast("tb_table_detailed", dataRow); $('#drugName').webuiPopover('hide'); $('#drugName').val(''); } }); }); $('#buyAmt').on('input focus', function (e) { $("#buyValue").val((e.target.value * $("#buyPrice").val()).toFixed(2)); }); $('#buyPrice').on('input focus', function (e) { $("#buyValue").val((e.target.value * $("#buyAmt").val()).toFixed(2)); }); $('#reportrange span').html(moment().subtract(29, 'days').format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD')); $(".selectpicker").selectpicker(); if (groupNo == null) { return errorMesageSimaple('药库参数未设置,请在药品管理参数设置中设置'); } $("input").each(function () { this.onkeydown = function (e) { // 监听键盘事件 let theEvent = window.event || e; let code = theEvent.keyCode || theEvent.which; if (code === 13) {//回车事件 $("#btn_query").click(); //触发搜索按钮点击事件 } } }); $("#btn_query").click(function (t) { initRecordTable(); }); $("#btn_record").click(function () { $("#recordModal").modal("show"); $('#reportrange span').html(moment().subtract(7, 'days').format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD')); $("#recordForm")[0].reset(); $("#statusFlagSearch").selectpicker('refresh'); initRecordTable(); }); $("#btn_save").on('click', function () { if (outDetlList == null || outDetlList.length === 0) { return errorMesageSimaple('没有可保存数据!'); } var data = $("#tb_table_detailed").jqGrid("getRowData"); for (let i = 0; i < data.length; i++) { if (parseFloat(data[i].amountOut === '' ? 0 : data[i].amountOut) <= 0) { data[i].drawNo = $("#drawNoLabel").html(); outDetlList.push(data[i]) } } console.log(outDetlList); request({ url: '/saveYpOutDetlList', method: 'POST', data: JSON.stringify({ list: outDetlList, outType: $("#outType1Search").val(), deptCode: $("#deptCode").val()[0] //drawNo: $("#drawNoLabel").html() }) }).then((res) => { $("#btn_clean").click(); successMesage(res); }); }); $("#btn_audit").on('click', function () { if ($("#statusLabel").html() !== '已确认') { return warningMesageSimaple('没有可审核的数据!'); } if (!confirm("确定审核出库吗?(注意:审核后本张出库单将不能再修改)")) { return; } request({ url: '/auditYpOutDetl', method: 'GET', data: { drawYf: $("#drawNoLabel").html() } }).then((res) => { $("#btn_clean").click(); successMesage(res); }); }); $("#btn_daily").click(function (t) { setPrintHtml(); }); $("#btn_clean").on('click', function () { $("#deptCode").selectpicker('val', ''); $("#deptCode").removeAttr('disabled'); $("#deptCode").selectpicker('refresh'); $("#drawNoLabel").text(''); $("#planDateLabel").text(''); $("#inputNameLabel").text(''); $("#keeperNameLabel").text(''); $("#confirmNameLabel").text(''); $("#statusLabel").text('未确认'); $("#xxform")[0].reset(); $("#tb_table_indetl_detailed").jqGrid('clearGridData'); $("#tb_table_detailed").jqGrid('clearGridData'); outDetlList = []; }); }); /** * 查询列表 */ function initRecordTable() { let url = '/thmz/getYpInPlanPage'; if ($("#statusFlagSearch").val() === '3' || $("#statusFlagSearch").val() === '4') { url = '/thmz/getYpOutDetlYk'; } let statusFlagSearch = $("#statusFlagSearch").val(); let isAudit = statusFlagSearch === "4"; $('#tb_record').bootstrapTable('destroy'); $('#tb_record').bootstrapTable({ url: url, //请求后台的URL(*) method: 'POST', //请求方式(*) toolbar: '#toolbar', //工具按钮用哪个容器 striped: true, //是否显示行间隔色 cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*) pagination: true, //是否显示分页(*) sortable: true, //是否启用排序 sortOrder: "asc", //排序方式 queryParams: recordTableQueryParams, //传递参数(*) sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*) pageNumber: 1, //初始化加载第一页,默认第一页 pageSize: 10, //每页的记录行数(*) pageList: [10, 20, 40, 100], //可供选择的每页的行数(*) search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大 strictSearch: true, showColumns: false, //是否显示所有的列 showRefresh: false, //是否显示刷新按钮 minimumCountColumns: 2, //最少允许的列数 clickToSelect: true, //是否启用点击选中行 uniqueId: "ID", //每一行的唯一标识,一般为主键列 showToggle: false, //是否显示详细视图和列表视图的切换按钮 cardView: false, //是否显示详细视图 detailView: false, ajaxOptions: { headers: { 'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token") } }, columns: [ { title: '操作', field: 'op', align: "center", valign: 'middle', formatter: function (value, row, index) { return ''; } }, { field: 'planDate', title: '请领日期', align: "center", valign: 'middle', visible: statusFlagSearch === '1', formatter: function (value, row, index) { return format(value, "yyyy-MM-dd HH:mm:ss"); } }, { field: 'outDate', title: '确认日期', align: "center", valign: 'middle', visible: statusFlagSearch === '3' || isAudit, formatter: function (value, row, index) { return format(value, "yyyy-MM-dd HH:mm:ss"); } }, { field: 'confirmDate', title: '审核出库日期', align: "center", valign: 'middle', visible: isAudit, formatter: function (value, row, index) { return format(value, "yyyy-MM-dd HH:mm:ss"); } }, { field: 'drawNo', title: (statusFlagSearch === '3' || isAudit) ? '出库单号' : '请领单号', align: "center", valign: 'middle' }, { field: (statusFlagSearch === '3' || isAudit) ? 'groupNoOut' : 'groupNo', title: '申请库房', align: "center", valign: 'middle', formatter: function (value, row, index) { return getGroupName(value); } }, { field: 'drawerName', title: '申请人', align: "center", valign: 'middle' }, { field: 'keeperName', title: '经发人', align: "center", valign: 'middle', visible: (statusFlagSearch === '2' || statusFlagSearch === '3' || isAudit) }, { field: 'confirmName', title: '审核人', align: "center", valign: 'middle', visible: (statusFlagSearch === '3' || isAudit) }, { field: (statusFlagSearch === '3' || isAudit) ? 'groupNo' : 'groupYk', title: '发药库房', align: "center", valign: 'middle', formatter: function (value, row, index) { return getGroupName(value); } } ], onDblClickRow: function (row) { $("#statusLabel").html($("#statusFlagSearch option:checked").text()); getDetail(row.drawNo); }, responseHandler: function (res) { if (res == '401' || res == 401) { window.location.href = '/thmz/login/view'; return; } var ress = eval(res); if (ress.code == -1) { errorMesage(res); return { "total": 0,//总页数 "rows": {} //数据 }; } return { "total": ress.total,//总页数 "rows": ress.data //数据 }; } }); } function getDetail(drawNo) { $("#recordModal").modal("hide"); loadDetailed(drawNo); } function recordTableQueryParams(params) { let rePortRangeArr = getRePortRangeArr(); let temp = { drawNo: $("#drawNoSearch").val() === '' ? null : $("#drawNoSearch").val(), beginTime: rePortRangeArr[0], endTime: rePortRangeArr[1], pageSize: params.limit, //页面大小 pageIndex: params.offset / params.limit //页码 }; if ($("#statusFlagSearch").val() === '3' || $("#statusFlagSearch").val() === '4') { temp.confirmFlag = $("#statusFlagSearch").val() === '3' ? '0' : '1'; temp.outType = '0,1'; temp.groupNo = groupNo; } else { temp.statusFlag = $("#statusFlagSearch").val(); temp.groupYk = groupNo } return JSON.stringify(temp); } /** * 加载详细表格数据 * @param inDocuNo */ function loadDetailed(drawNo) { let url = '/thmz/getYpInPlanDrugYk'; if ($("#statusFlagSearch").val() === '3' || $("#statusFlagSearch").val() === '4') { url = '/thmz/getYpOutDetlDrugYk'; } $("#tb_table_detailed").jqGrid('setGridParam', { datatype: 'JSON', url: url, postData: {drawNo: drawNo} }).trigger('reloadGrid'); } /** * 加载详细表格数据 * @param inDocuNo */ function loadInDetlDetailed(data) { $("#tb_table_indetl_detailed").jqGrid('setGridParam', { datatype: 'JSON', postData: JSON.stringify({ currentStock: 0.0, chargeCode: data.chargeCode, serial: data.serial, groupNo: groupNo }) }).trigger('reloadGrid'); } /** * 初始化药品入库详细表格 */ function initInDetlDetailed() { $.jgrid.gridUnload("tb_table_indetl_detailed"); $("#tb_table_indetl_detailed").jqGrid({ datatype: 'local', mtype: 'POST', url: '/thmz/getYpInDetl', loadBeforeSend: function (jqXHR) { jqXHR.setRequestHeader("Authorization", 'Bearer ' + localStorage.getItem("token")); jqXHR.setRequestHeader("Accept", 'application/json;charset=UTF-8'); jqXHR.setRequestHeader("Content-Type", 'application/json;charset=UTF-8'); }, ajaxCellOptions: { beforeSend: function (XMLHttpRequest) { XMLHttpRequest.setRequestHeader("Authorization", 'Bearer ' + localStorage.getItem("token")); } }, height: screen.height * 0.15, styleUI: 'Bootstrap', autowidth: true, autoScroll: true, shrinkToFit: true, rowNum: -1,//取消分页 caption: '入库记录', cellEdit: true, sortable: false, loadonce: false, //一次加载全部数据到客户端,由客户端进行排序。 cellsubmit: "clientArray", colNames: ['入库日期', '入库数量', '购入价', '供应商', '生产厂家', '效期', '入库单号', '现时库存', '出库量', '生产批号', '入库序号', '药品编码', 'serial'], colModel: [ { name: 'inDate', index: 'inDate', align: 'center', width: 100, formatter: function (cellvalue, options, rowObject) { return cellvalue == null ? "" : format(cellvalue, "yyyy-MM-dd"); } }, {name: 'buyAmt', index: 'buyAmt', align: 'center', width: 100}, {name: 'buyPrice', index: 'buyPrice', align: 'center', width: 100}, {name: 'supplyName', index: 'supplyName', align: 'left', width: 160}, {name: 'manufactoryName', index: 'manufactoryName', align: 'left', width: 160}, { name: 'effDate', index: 'effDate', align: 'center', width: 120, formatter: function (cellvalue, options, rowObject) { return cellvalue == null ? "" : format(cellvalue, "yyyy-MM-dd"); } }, {name: 'inDocuNo', index: 'inDocuNo', align: 'center', width: 100}, { name: 'currentStock', index: 'currentStock', align: 'center', width: 100, formatter: function (cellvalue, options, rowObject) { return keepTwoDecimal(cellvalue) } }, { name: 'amountOut', index: 'amountOut', align: 'center', width: 100, editable: true, edittype: 'text' , editrules: {edithidden: true, number: true, minValue: 0}, formatter: function (cellvalue, options, rowObject) { if (parseFloat(rowObject.currentStock) < parseFloat(cellvalue)) { warningMesageSimaple("出库量不允许大于现时库存!"); return ''; } return typeof (cellvalue) == 'undefined' ? '' : cellvalue; } }, {name: 'manuNo', index: 'manuNo', align: 'center', width: 100}, {name: 'inSeri', index: 'inSeri', align: 'center', hidden: true}, {name: 'chargeCode', index: 'chargeCode', align: 'center'}, {name: 'serial', index: 'serial', align: 'center', hidden: true} ], jsonReader: { root: "data", repeatitems: false }, beforeSubmitCell: function (rowid, cellname, cellvalue, iRow, iCol) { let rowObject = $("#tb_table_indetl_detailed").getRowData(rowid); let amountOut = 0; rowObject.amountOut = cellvalue == '' ? 0 : parseFloat(cellvalue); for (let i = 0; i < outDetlList.length; i++) { let data = outDetlList[i]; if (data.inDocuNo === rowObject.inDocuNo && data.chargeCode === rowObject.chargeCode) { outDetlList.splice(i, 1); break; } } let rowId = $("#tb_table_detailed").jqGrid("getGridParam", "selrow"); var rowData = $("#tb_table_detailed").jqGrid('getRowData', rowId); rowObject.drawNo = rowData.drawNo; outDetlList.push(rowObject); var data = $("#tb_table_indetl_detailed").jqGrid("getRowData"); for (let i = 0; i < data.length; i++) { if (data[i].amountOut.length > 10) { amountOut += rowObject.amountOut; } else { amountOut += parseFloat(data[i].amountOut == '' ? 0 : data[i].amountOut) } } $("#tb_table_detailed").jqGrid('setCell', rowId, "amountOut", amountOut); $("#tb_table_detailed").jqGrid('setCell', rowId, "amountOutMoney", keepTwoDecimal(amountOut * parseFloat(rowData.packRetprice))); $("#tb_table_detailed").jqGrid('setCell', rowId, "inSeri", rowData.inSeri); }, loadComplete: function (res) { //加载完成(初始加载),回调函数 if (res == '401' || res == 401) { window.location.href = '/thmz/login/view'; return; } if (res.code == -1) { errorMesage(res); } } }); } /** * 初始化详细表格 */ function initDetailed() { let selectRowId;//选中的行号 $.jgrid.gridUnload("tb_table_detailed"); $("#tb_table_detailed").jqGrid({ datatype: 'local', mtype: 'GET', url: url, 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")); } }, height: screen.height * 0.3, toolbar: [true, "top"], styleUI: 'Bootstrap', autowidth: true, autoScroll: true, shrinkToFit: true, rowNum: -1,//取消分页 caption: '请领单明细', cellEdit: false, sortable: false, loadonce: false, //一次加载全部数据到客户端,由客户端进行排序。 cellsubmit: "remote", colNames: ['请领单号', '药品编码', '药品名称', '规格', '零售价', '请领数量', '出库量', '金额', '基本药物', 'serial'], colModel: [ {name: 'drawNo', index: 'drawNo', align: 'center'}, {name: 'chargeCode', index: 'chargeCode', align: 'center'}, {name: 'name', index: 'name', align: 'left'}, {name: 'specification', index: 'specification', align: 'left'}, {name: 'packRetprice', index: 'packRetprice', align: 'center'}, {name: 'amount', index: 'amount', align: 'center'}, { name: 'amountOut', index: 'amountOut', align: 'center', formatter: function (cellvalue, options, rowObject) { return cellvalue === null ? '' : '' + cellvalue + '' } }, { name: 'amountOutMoney', index: 'amountOutMoney', align: 'center', /* formatter: function (cellvalue, options, rowObject) { return keepTwoDecimal((typeof rowObject.amount === 'undefined' ? rowObject.outAmt : rowObject.amountOut) * rowObject.packRetprice); }*/ }, { name: 'jbFlag', index: 'jbFlag', align: 'center', formatter: function (cellvalue, options, rowObject) { return cellvalue === '1' ? '国家基本药物' : ''; } }, {name: 'serial', index: 'serial', hidden: true} ], jsonReader: { root: "data", repeatitems: false }, onCellSelect: function (rowid, iCol, cellcontent, e) { loadInDetlDetailed($("#tb_table_detailed").getRowData(rowid)); }, loadComplete: function (res) { //加载完成(初始加载),回调函数 if (res.data != null && res.data.length > 0) { $("#xxform")[0].reset(); let data = res.data[0]; let no = "" + data['drawNo'] + ""; if ($("#statusFlagSearch").val() === '3' || $("#statusFlagSearch").val() === '4') { $("#planDateLabel").text(format(data['outDate'], "yyyy-MM-dd HH:mm")); $("label[for='drawNoLabel']")[0].innerHTML = "出库单号:" + no; $("#groupNoLabel").val(getGroupName(data['groupNoOut'])); } else { $("#planDateLabel").text(format(data['planDate'], "yyyy-MM-dd HH:mm")); $("label[for='drawNoLabel']")[0].innerHTML = "请领单号:" + no; $("#groupNoLabel").val(getGroupName(data['groupNo'])); } $("#deptCode").selectpicker('val', data['deptCode']); $("#deptCode").attr('disabled', true); $("#deptCode").selectpicker('refresh'); $("#inputNameLabel").text(data['inputName']); $("#confirmNameLabel").text(data['confirmName']); $("#keeperNameLabel").text(data['keeperName']); } if (res == '401' || res == 401) { window.location.href = '/thmz/login/view'; return; } if (res.code == -1) { errorMesage(res); } } }); $("#t_tb_table_detailed").append(""); //$("#t_tb_table_detailed").append(""); $("#remove").on('click', function () { if (selectRowId == null) { return errorMesageSimaple('请选择一行进行删除!'); } $("#tb_table_detailed").jqGrid("delRowData", selectRowId); }); } /** * 生产报表数据 */ function setPrintHtml() { let date = {drawNo: $("#drawNoLabel").text()}; request({ url: '/getYpOutDetlPrint', method: 'POST', data: JSON.stringify(date) }).then((res) => { console.log(res); let html = ''; let packRetpriceSum = 0; let buyPriceSum = 0; $('.sjh').remove(); for (let i = 0; i < res['data'].length; i++) { let data = res['data'][i]; let packRetprice = keepTwoDecimal(parseFloat(data['outAmt']) * parseFloat(data['packRetprice'])); let buyPrice = keepTwoDecimal(parseFloat(data['outAmt']) * parseFloat(data['buyPrice'])); packRetpriceSum += packRetprice; buyPriceSum += buyPrice; if (i === 0) { $(".printDate").html(format(new Date(), "yyyy-MM-dd HH:mm")); $(".groupName").html($("#groupNoLabel").val()); $(".drawNo").html(data['drawNo']); $(".planDate").html($("#planDateLabel").html()); $(".confirmDate").html(format(data['confirmDate'], "yyyy-MM-dd HH:mm")); $(".lister").html($(".current_user")[0].innerText); $(".listerAudit").html(data['confirmName']); } html += ''; html += '' + data['chargeCode'] + ''; html += '' + data['location'] + ''; html += '' + data['name'] + ''; html += '' + data['specification'] + ''; html += '' + data['outAmt'] + ''; html += '' + data['buyPrice'] + ''; html += '' + data['packRetprice'] + ''; html += '' + buyPrice + ''; html += '' + packRetprice + ''; html += '' + data['manuNo'] + ''; html += '' + data['manufactoryName'] + ''; html += '' + format(data['effDate'], "yyyy-MM-dd") + ''; html += '' + data['stockAmount'] + ''; html += ''; } $("#base_tr").after(html); $(".packRetpriceSum").html(keepTwoDecimal(packRetpriceSum)); $(".buyPriceSum").html(keepTwoDecimal(buyPriceSum)); print(); }); } /** * 打印报表 */ 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.ADD_PRINT_TEXT('190mm', '140mm', '40mm', '40mm', '第#页/共&页'); LODOP.SET_PRINT_STYLEA(0, "ItemType", 2); var strStyle = ""; LODOP.ADD_PRINT_HTM("2mm", "4mm", "RightMargin:2mm", "BottomMargin:15mm", strStyle + document.getElementById("report_table_1").innerHTML); LODOP.PRINT(); //LODOP.PREVIEW(); } //最后一行新增数据 function addRowToLast(gridID, dataRow) { var ids = jQuery("#" + gridID).jqGrid('getDataIDs'); if (ids.length == 0) { ids = [0]; } //获得当前最大行号(数据编号) var rowid = Math.max.apply(Math, ids); //获得新添加行的行号(数据编号) var newrowid = rowid + 1; $("#" + gridID).jqGrid("addRowData", newrowid, dataRow, "last"); return newrowid; }