//@ sourceURL=drug_storage.js let groupNo = window.localStorage["groupYk"];//药库编码 var hospitalName ='长沙泰和医院' $(function () { getAjaxRequst("/thmz/queryHospitalName",{},true,function (res) { hospitalName = res.data $('.hospitalName').text(hospitalName) }) init_daterangepicker(); $('.datetime').datetimepicker({ language: 'zh-CN', format: 'yyyy-mm-dd', autoclose: true, minView: 2, startView: 2, }); initSearchList('
', 'drugName', 600, 250); initSearchList('
', 'drugName1', 600, 250); initSearchList('
', 'barCode1', 600, 250); initSearchList('
', 'purchaserNameLabel', 300, 250); initSearchList('
', ['supplyNameLabel', 'supplyNameSearch'], 300, 250); $('#drugName').on('input', debounce(e=>{ inputDrugName() },500)); $('#drugName1').on('input', debounce(e=>{ inputDrugName1() },500)); //商品码检索药品 $('#barCode1').on('input', debounce(e=>{ inputBarCode() },500)); function inputDrugName() { 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); } }], onClickRow: function (row, $element) { $('#drugName').webuiPopover('hide'); $('#chargeCode').val(row['code']); $('#serial').val(row['serial']); $('#drugName').val(row['name']); $('#specification').val(row['specification']); $('#packRetprice').val(row['packRetprice']); $('#buyPrice').val(row['buyPrice']); $('#manufactoryName').val(row['manufactoryName']); $('#manuCode').val(row['manuCode']); $('#licenseNo').val(row['pzwh']); $('#nationalCode').val(row['nationalCode']); } }); }; function inputDrugName1() { showDrugPopoverNew({ method: 'POST', data: JSON.stringify({ searchText: $("#drugName1").val() == "" ? null : $("#drugName1").val(), groupNo: groupNo, delFlag: 0 }), url: '/thmz/getYpZdDictBase', columns: [ { field: 'barCode', title: '商品码', align: "center", valign: 'middle' },{ field: 'stockAmount', title: '库存', align: "center", valign: 'middle', formatter: function (value, row, index) { return value.toFixed(0); } }], onClickRow: function (row, $element) { $('#drugName1').webuiPopover('hide'); $('#chargeCode1').val(row['code']); $('#serial1').val(row['serial']); $('#drugName1').val(row['name']); $('#barCode1').val(row['barCode']); $('#specification1').val(row['specification']); $('#packRetprice1').val(row['packRetprice']); $('#buyPrice1').val(row['buyPrice']); $('#manufactoryName1').val(row['manufactoryName']); $('#manuCode1').val(row['manuCode']); $('#licenseNo1').val(row['pzwh']); $('#nationalCode1').val(row['nationalCode']); $('#buyAmt1').val(null); $('#buyValue1').val(null); $('#manuNo1').val(''); $('#producingDate1').val(null); $('#effDate1').val(null); } }, 'tb_table_drug1'); }; //商品码检索药品明细 function inputBarCode() { showDrugPopoverNew({ method: 'POST', data: JSON.stringify({ searchText: $("#barCode1").val() == "" ? null : $("#barCode1").val(), groupNo: groupNo, delFlag: 0 }), url: '/thmz/getYpZdDictBaseByBarCode', columns: [ { field: 'barCode', title: '商品码', align: "center", valign: 'middle' },{ field: 'stockAmount', title: '库存', align: "center", valign: 'middle', formatter: function (value, row, index) { if(!isEmpty(value)){ return value.toFixed(0); } else { return value; } } }], onClickRow: function (row, $element) { $('#barCode1').webuiPopover('hide'); $('#chargeCode1').val(row['code']); $('#serial1').val(row['serial']); $('#drugName1').val(row['name']); $('#barCode1').val(row['barCode']); $('#specification1').val(row['specification']); $('#packRetprice1').val(row['packRetprice']); $('#buyPrice1').val(row['buyPrice']); $('#manufactoryName1').val(row['manufactoryName']); $('#manuCode1').val(row['manuCode']); $('#licenseNo1').val(row['pzwh']); $('#nationalCode1').val(row['nationalCode']); $('#buyAmt1').val(null); $('#buyValue1').val(null); $('#manuNo1').val(''); $('#producingDate1').val(null); $('#effDate1').val(null); } }, 'tb_table_bar1'); }; $('#purchaserNameLabel').on('input focus', function (e) { showEmployeePopover({ data: { searchText: $("#purchaserNameLabel").val() == "" ? null : $("#purchaserNameLabel").val(), }, onClickRow: function (row, $element) { $('#purchaserNameLabel').webuiPopover('hide'); $('#purchaser').val(row['employeeCode']); $('#purchaserNameLabel').val(row['employeeName']); } }); }); $('#supplyNameLabel').on('input focus', function (e) { showSupplyPopover({ data: { searchText: $("#supplyNameLabel").val() == "" ? null : $("#supplyNameLabel").val(), }, onClickRow: function (row, $element) { $('#supplyNameLabel').webuiPopover('hide'); $('#supplyCode').val(row['code']); $('#supplyNameLabel').val(row['name']); } }); }); $('#supplyNameSearch').on('input focus', function (e) { showSupplyPopover({ data: { searchText: $("#supplyNameSearch").val() == "" ? null : $("#supplyNameSearch").val(), }, onClickRow: function (row, $element) { $('#supplyNameSearch').webuiPopover('hide'); $('#supplyCodeSearch').val(row['code']); $('#supplyNameSearch').val(row['name']); } }); }); $('#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)); }); $('#buyAmt1').on('input focus', function (e) { $("#buyValue1").val((e.target.value * $("#buyPrice1").val()).toFixed(2)); }); $('#buyPrice1').on('input focus', function (e) { $("#buyValue1").val((e.target.value * $("#buyAmt1").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('药库参数未设置,请在药品管理参数设置中设置'); } $("#btn_query").click(function (t) { initRecordTable(); }); $("#btn_record").click(function () { $("#recordModal").modal("show"); initRecordTable(); }); initDetailed(); initBar(); $("#addDetailed").click(function () { $("#detailedFormModal").modal("hide"); if ($("#checkerName").val() == '') {//新增 let ids = $("#tb_table_detailed").jqGrid("getDataIDs");//得到jqgrid当前行数 let rowid = Math.max.apply(Math, ids);//获得当前最大行号 let formData = {}; let t = $("#detailedForm").serializeArray(); $.each(t, function () { formData[this.name] = this.value }); $("#tb_table_detailed").addRowData(rowid + 1, formData, 'first'); $("#tb_table_detailed").jqGrid('editRow', rowid + 1); } else {//修改 var ids = $("#tb_bar_code").jqGrid("getDataIDs");//得到jqgrid当前行数 var rowid = Math.max.apply(Math,ids);//获得当前最大行号 if(rowid == "-Infinity"){ rowid = 0; } $("#tb_bar_code").saveRow(rowid);//取消最后一行的编辑状态 let form = $("#detailedForm").serializeObject(); form.inDocuNo = $("#inDocuNoLabel").val(); form.purchaser = $("#purchaser").val(); form.supplyCode = $("#supplyCode").val(); form.groupNo = groupNo; form.ypManuBarCodes = $("#tb_bar_code").getRowData(); request({ url: '/modifYpInDetl', method: 'POST', data: JSON.stringify(form) }).then((res) => { successMesage(res); loadDetailed(form.inDocuNo); }); } }); $("#btn_save").on('click', function () { let ypInDetlVoList = $("#tb_table_detailed").jqGrid("getRowData"); if (ypInDetlVoList == null || ypInDetlVoList.length === 0) { return errorMesageSimaple('没有可保存数据!'); } if ($("#purchaser").val() === "" || $("#supplyCode").val() === "") { return errorMesageSimaple('采购人和供应商不能为空!'); } ypInDetlVoList[0].purchaser = $("#purchaser").val(); ypInDetlVoList[0].supplyCode = $("#supplyCode").val(); ypInDetlVoList[0].inDocuNo = $("#inDocuNoLabel").val(); ypInDetlVoList[0].groupNo = groupNo; ypInDetlVoList[0].ypManuBarCodes = $("#tb_bar_code").getRowData(); request({ url: '/saveYpInDetlList', method: 'POST', data: JSON.stringify(ypInDetlVoList) }).then((res) => { initValue(); successMesage(res); }); }); $("#btn_clean").on('click', function () { initValue(); }); $("#btn_audit").on('click', function () { let ypInDetlVoList = $("#tb_table_detailed").jqGrid("getRowData"); if (isEmpty($("#inDocuNoLabel").val()) || ypInDetlVoList == null || ypInDetlVoList.length === 0) { return errorMesageSimaple('没有可审核的数据!'); } if (ypInDetlVoList[0]['confirmFlag'] === '1') { return errorMesageSimaple('当前入库单已审核通过,请勿重复审核!'); } $("#btn_audit").attr("disabled",true); request({ url: '/auditYpInDetl', method: 'GET', data: { inDocuNo: $("#inDocuNoLabel").val() } }).then((res) => { if(res.code == 0){ successMesage(res); initValue(); } }).catch((res) => { $("#btn_audit").attr("disabled",false); }); }); $("#btn_daily").click(function (t) { setPrintHtml(); }); // 确认药品追溯码集合 $("#saveBarList").click(function () { if(barC === 1){ return errorMesageSimaple('当前扫码未进行追溯码检查,请检查!'); } // 有重复错误追溯码信息 if(barFor){ return errorMesageSimaple('当前扫码有重复或者错误追溯码信息,请检查!'); } let barList = $("#drugTracCodgStr").val(); let rowid = $('#rowid2').val(); let buyAmt2 = $("#buyAmt2").val(); if(!isEmpty(barList)){ let str = removeLastComma(barList.replaceAll('\n', ','), ','); let clFlag = $('#clFlag').val() if(clFlag === '1'){ if(Number.parseInt(buyAmt2) !== str.split(',').length){ return errorMesageSimaple('当前入库单数量与扫码数量不一致,请检查!'); } } else if(clFlag === '0'){ if(1 !== str.split(',').length){ return errorMesageSimaple('当前入库单数量与扫码数量不一致,请检查!'); } } // 更新追溯码内容 $("#tb_bar_code").setCell(rowid, 'drugTracCodg', str); // 更新追溯码扫码数量 $("#tb_bar_code").setCell(rowid, 'quantity', str.split(',').length); $("#tb_bar_code").setCell(rowid, 'clFlag', clFlag); $("#tb_bar_code").setCell(rowid, 'clFlagName', clFlag); $("#tb_bar_code").saveRow(rowid); } $("#barListModal").modal('hide'); }) // 添加药品追溯码入库信息 $("#addDetailedForBar").click(function () { if ($("#checkerName1").val() === '') {//新增 let formData = $("#tb_bar_code").jqGrid("getRowData"); formData.forEach(function (item, index, arr) { $("#tb_table_detailed").jqGrid('addRowData', index + 1, item); $("#tb_table_detailed").jqGrid('editRow', index + 1); }) } else {//修改 let ids = $("#tb_bar_code1").jqGrid("getDataIDs");//得到jqgrid当前行数 let rowid = Math.max.apply(Math,ids);//获得当前最大行号 if(rowid == "-Infinity"){ rowid = 0; } $("#tb_bar_code1").saveRow(rowid);//取消最后一行的编辑状态 let form = $("#barForm").serializeObject(); form.inDocuNo = $("#inDocuNoLabel").val(); form.purchaser = $("#purchaser").val(); form.supplyCode = $("#supplyCode").val(); form.groupNo = groupNo; form.ypManuBarCodes = $("#tb_bar_code").getRowData(); request({ url: '/modifYpInDetl', method: 'POST', data: JSON.stringify(form) }).then((res) => { successMesage(res); loadDetailed(form.inDocuNo); }); } $("#barFormModal").modal("hide"); }); // 追溯码检查 $("#checkBarList").click(function () { drugBarStat(); }); // 追溯码去重 $("#checkBarRe").click(function () { drugBarRepeat() drugBarStat(); }); }); /** * 初始化表单和grid */ function initValue() { $("#purchaser").val(""); $("#checkerName").val(""); $("#purchaserNameLabel").val(""); $("#supplyCode").val(""); $("#supplyNameLabel").val(""); $("#inDateLabel").val(""); $("#inDocuNoLabel").val(""); $("#tb_table_detailed").jqGrid("clearGridData"); $("#confirmFlag").val(""); $("#addDetailed").attr("disabled",false); $("#btn_save").attr("disabled",false); $("#btn_audit").attr("disabled",false); } /** * 查询列表 */ function initRecordTable() { $('#tb_record').bootstrapTable('destroy'); $('#tb_record').bootstrapTable({ url: '/thmz/getYpInDetlPage', //请求后台的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) { var str = ''; if($("#confirmFlagSearch").val() === "0"){ str = ''; } str += ''; return str; } }, { field: 'inDate', title: '入库日期', align: "center", valign: 'middle', formatter: function (value, row, index) { return value == null ? "-" : format(value, "yyyy-MM-dd HH:mm:ss"); } }, { field: 'reptNo', title: '发票号', align: "center", valign: 'middle' }, { field: 'inDocuNo', title: '入库单号', align: "center", valign: 'middle' }, { field: 'purchaserName', title: '采购员', align: "center", valign: 'middle' }, { field: 'supplyName', title: '供应商', align: "center", valign: 'middle' }, { field: 'buyValue', title: '购入金额', align: "center", valign: 'middle', formatter: function (value, row, index) { return value.toFixed(2); } }, { field: 'packValue', title: '零售金额', align: "center", valign: 'middle', formatter: function (value, row, index) { return value.toFixed(2); } } ], onDblClickRow: function (row) { getYpInDetlDetail(row.inDocuNo) }, 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 removeYpInDetl(inDocuNo) { if (!confirm("确定删除该张单据吗?")) { return; } request({ url: '/removeYpInDetlByInDocuNo', method: 'GET', data: {inDocuNo: inDocuNo} }).then((res) => { successMesage(res); initRecordTable(); }); } function getYpInDetlDetail(inDocuNo) { $("#recordModal").modal("hide"); loadDetailed(inDocuNo); } function recordTableQueryParams(params) { let rePortRangeArr = getRePortRangeArr(); let temp = { inType:'0,2,3', beginTime: rePortRangeArr[0], endTime: rePortRangeArr[1], groupNo: groupNo, reptNo: $("#reptNoSearch").val() == '' ? null : $("#reptNoSearch").val(), supplyCode: $("#supplyCodeSearch").val() == '' ? null : $("#supplyCodeSearch").val(), confirmFlag: $("#confirmFlagSearch").val(), inDocuNo: $("#inDocuNoSearch").val() == '' ? null : $("#inDocuNoSearch").val(), pageSize: params.limit, //页面大小 pageIndex: params.offset / params.limit //页码 }; return JSON.stringify(temp); } /** * 加载详细表格数据 * @param inDocuNo */ function loadDetailed(inDocuNo) { $("#tb_table_detailed").jqGrid('setGridParam', { datatype: 'JSON', postData: {inDocuNo: inDocuNo} }).trigger('reloadGrid'); } /** * 初始化详细表格 */ function initDetailed() { let selectRowId;//选中的行号 $.jgrid.gridUnload("tb_table_detailed"); $("#tb_table_detailed").jqGrid({ datatype: 'local', mtype: 'get', url: '/thmz/getYpInDetlDetailed', 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', viewrecords: true, autowidth: false, autoScroll: true, shrinkToFit: true, rowNum: -1,//取消分页 caption: '入库单明细', cellEdit: false, sortable: false, loadonce: false, //一次加载全部数据到客户端,由客户端进行排序。 sortname: 'chargeCode', //设置默认的排序列 sortorder: 'desc', cellsubmit: "remote", colNames: ['药品编码', '药品名称', '生产厂家', '规格', '零售价', '零售金额', '购入价', '购入量', '购入金额', '有效期', '生产日期', '药品追溯码', '批号', '传票号', '传票日期', '文号', '入库人', '入库类别名称','入库类别', '结账标记', '发票日期', '药品国家医保编码', '规格编码', '生成厂家编码', '序号', '审核状态'], colModel: [ {name: 'chargeCode', index: 'chargeCode', align: 'center', width: 100, sortable: false}, {name: 'drugName', index: 'drugName', align: 'left', width: 160}, {name: 'manufactoryName', index: 'manufactoryName', align: 'left', width: 160}, {name: 'specification', index: 'specification', align: 'center', width: 120}, {name: 'packRetprice', index: 'packRetprice', align: 'center', width: 100}, { name: 'packValue', index: 'packValue', align: 'center', width: 100, formatter: function (cellvalue, options, rowObject) { return (rowObject.packRetprice * rowObject.buyAmt).toFixed(2) } }, {name: 'buyPrice', index: 'buyPrice', align: 'center', width: 100}, {name: 'buyAmt', index: 'buyAmt', align: 'center', width: 100}, { name: 'buyValue', index: 'buyValue', align: 'center', width: 100, formatter: function (cellvalue, options, rowObject) { return (rowObject.buyPrice * rowObject.buyAmt).toFixed(2) } }, { name: 'effDate', index: 'effDate', align: 'center', width: 100, formatter: function (cellvalue, options, rowObject) { return cellvalue == null ? "" : format(cellvalue, "yyyy-MM-dd"); } }, { name: 'producingDate', index: 'producingDate', align: 'center', width: 100, formatter: function (cellvalue, options, rowObject) { return cellvalue == null ? "" : format(cellvalue, "yyyy-MM-dd"); } }, {name: 'drugTracCodg', index: 'drugTracCodg', align: 'center', width: 140}, {name: 'manuNo', index: 'manuNo', align: 'center', width: 100}, {name: 'reptNo', index: 'reptNo', align: 'center', width: 100}, { name: 'reptDate', index: 'reptDate', align: 'center', width: 120, formatter: function (cellvalue, options, rowObject) { return cellvalue == null ? "" : format(cellvalue, "yyyy-MM-dd"); } }, {name: 'licenseNo', index: 'licenseNo', align: 'center', width: 120}, {name: 'checkerName', index: 'checkerName', align: 'center', width: 100}, { name: 'inTypeName', index: 'inTypeName', align: 'center', width: 100, formatter: function (cellvalue, options, rowObject) { let str = ''; switch (rowObject.inType) { case '0': str = '入库'; break; case '1': str = '退库'; break; case '2': str = '赠药'; break; case '3': str = '紧急入库'; } return str } }, { name: 'inType', index: 'inType', align: 'center', width: 100, hidden: true }, { name: 'acctType', index: 'acctType', align: 'center', width: 100, formatter: function (cellvalue, options, rowObject) { return cellvalue === 1 ? '已结账' : '未结账' } }, { name: 'fpDate', index: 'fpDate', align: 'center', width: 100, formatter: function (cellvalue, options, rowObject) { return cellvalue == null ? "" : format(cellvalue, "yyyy-MM-dd"); } }, {name: 'nationalCode', index: 'nationalCode', align: 'center', width: 120}, { name: 'serial', index: 'serial', hidden: true }, { name: 'manuCode', index: 'manuCode', hidden: true }, { name: 'inSeri', index: 'inSeri', hidden: true }, { name: 'confirmFlag', index: 'confirmFlag', hidden: true } ], jsonReader: { root: "data", repeatitems: false }, onCellSelect: function (rowid, iCol, cellcontent, e) { selectRowId = rowid; }, ondblClickRow: function (row) { let rowData = $('#tb_table_detailed').jqGrid('getRowData', row); let inType = 0; switch (rowData) { case "入库": inType = 0; break; case "退库": inType = 1; break; case "赠药": inType = 2; break; case "紧急入库": inType = 3; } rowData.inType = inType; $("#detailedForm")[0].reset(); $("#confirmFlag").val()==1?$("#addDetailed").attr("disabled",true):$("#addDetailed").attr("disabled",false); $("#detailedFormModal").modal("show"); $.each(rowData, function (key, value) { $("#" + key).val(value); }); isEmpty(rowData.checkerName)?$("#div_bar_code").hide():$("#div_bar_code").show(); loadBar(rowData.inDocuNo, rowData.chargeCode, rowData.manuNo); $("#barCode").val(""); }, loadComplete: function (res) { //加载完成(初始加载),回调函数 if (res == '401' || res == 401) { window.location.href = '/thmz/login/view'; return; } if (res.code == -1) { return errorMesage(res); } if (res.data != null && res.data.length > 0) { $("#xxform")[0].reset(); let data = res.data[0]; $("#inDocuNoLabel").val(data['inDocuNo']); $("#inDateLabel").val(format(data['inDate'], "yyyy-MM-dd HH:mm:ss")); $("#purchaserNameLabel").val(data['purchaserName']); $("#purchaser").val(data['purchaser']); $("#supplyNameLabel").val(data['supplyName']); $("#supplyCode").val(data['supplyCode']); $("#confirmFlag").val(data['confirmFlag']); } if($("#confirmFlag").val()==1){ $("#btn_save").attr("disabled",true); $("#btn_audit").attr("disabled",true); }else{ $("#btn_save").attr("disabled",false); $("#btn_audit").attr("disabled",false); } } }); $("#t_tb_table_detailed").append(""); $("#t_tb_table_detailed").append(""); $("#t_tb_table_detailed").append(""); $("#showDetailed").on('click', function () { $("#detailedForm")[0].reset(); $("#detailedFormModal").modal("show"); $("#div_bar_code").hide(); $("#manuNo").attr("disabled",false); $("#confirmFlag").val()==1?$("#addDetailed").attr("disabled",true):$("#addDetailed").attr("disabled",false); let rowData = $("#tb_table_detailed").jqGrid("getRowData")[0]; if(rowData){ $("#reptNo").val(rowData['reptNo']); $("#reptDate").val(rowData['reptDate']); }else{ $("#reptNo").val(null); $("#reptDate").val(null); } }); // 增加入库信息扫入 $("#showDrugBarDetailed").on('click', function () { $("#barForm")[0].reset(); $("#barFormModal").modal("show"); $("#div_bar_code").show(); $("#chargeCode1").val(''); $("#manuNo1").attr("disabled",false); $("#confirmFlag").val()===1 ? $("#addDetailed").attr("disabled",true) : $("#addDetailed").attr("disabled",false); let rowData = $("#tb_table_detailed").jqGrid("getRowData")[0]; if(rowData){ $("#reptNo1").val(rowData['reptNo']); $("#reptDate1").val(rowData['reptDate']); }else{ $("#reptNo1").val(null); $("#reptDate1").val(null); } $("#tb_bar_code").jqGrid('clearGridData'); }); $("#removeDetailed").on('click', function () { if($("#confirmFlag").val() == 1){ return errorMesageSimaple('已审核,禁止操作!'); } if (selectRowId == null) { return errorMesageSimaple('请选择一行进行删除!'); } $("#tb_table_detailed").jqGrid("delRowData", selectRowId); }); } /** * 加载入库药品条码表格数据 * @param inDocuNo 入库单号 * @param chargeCode 药品编码 * @param manuNo 批号 */ function loadBar(inDocuNo, chargeCode, manuNo) { $("#tb_bar_code").jqGrid('setGridParam', { datatype: 'JSON', postData: JSON.stringify({chargeCode: chargeCode,manuNo: manuNo,inDocuNo:inDocuNo}) }).trigger('reloadGrid'); } /** * 初始化入库药品条码表格数据 */ function initBar() { $.jgrid.gridUnload("tb_bar_code"); $("#tb_bar_code").jqGrid({ datatype: 'local', mtype: 'POST', url: '/thmz/getYpManuBarCode', 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.2, toolbar: [true, "top"], styleUI: 'Bootstrap', viewrecords: true, autowidth: false, autoScroll: true, shrinkToFit: true, rowNum: -1,//取消分页 cellEdit: true, classes: { // 为选中行添加的CSS类 "ui-state-highlight": "your-custom-class" }, sortable: false, loadonce: true, //一次加载全部数据到客户端,由客户端进行排序。 cellsubmit: "clientArray", caption: '入库药品关联条码', rownumbers: true,//是否显示序号 // multiselect: true, // multiboxonly: true, // multiselectWidth: 60, colNames: ['药品编码','药品名称','商品码','追溯码','追溯码数量','批号','入库单号','1','是否拆零','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18'], colModel: [ {name: 'chargeCode', index: 'chargeCode', align: 'center', width: 120,sortable: false}, {name: 'drugName', index: 'drugName', align: 'left', width: 160,sortable: false}, {name: 'barCode', index: 'barCode', align: 'center', width: 120,sortable: false}, {name: 'drugTracCodg', index: 'drugTracCodg', align: 'left', width: 200,sortable: false}, {name: 'quantity', index: 'quantity', align: 'center', width: 120,sortable: false}, {name: 'manuNo', index: 'manuNo', align: 'center', width: 150,sortable: false}, {name: 'inDocuNo', index: 'inDocuNo', align: 'center', width: 150,sortable: false}, {name: 'clFlag', index: 'clFlag',align: 'center', width: 100,hidden: true}, {name: 'clFlagName', index: 'clFlagName',align: 'center', width: 100,sortable: false, formatter: function (cellvalue, options, rowObject) { if(isEmpty(cellvalue)){ return ''; } else { return cellvalue === '0' ? '否' : '是'; } } }, {name: 'manufactoryName', index: 'manufactoryName',hidden: true}, {name: 'specification', index: 'specification',hidden: true}, {name: 'packRetprice', index: 'packRetprice',hidden: true}, {name: 'buyAmt', index: 'buyAmt',hidden: true}, {name: 'buyPrice', index: 'buyPrice',hidden: true}, {name: 'effDate', index: 'effDate',hidden: true}, {name: 'producingDate', index: 'producingDate',hidden: true}, {name: 'manuNo', index: 'manuNo',hidden: true}, {name: 'reptNo', index: 'reptNo',hidden: true}, {name: 'reptDate', index: 'reptDate',hidden: true}, {name: 'licenseNo', index: 'licenseNo',hidden: true}, {name: 'nationalCode', index: 'nationalCode',hidden: true}, {name: 'serial', index: 'serial',hidden: true}, {name: 'manuCode', index: 'manuCode',hidden: true}, {name: 'inSeri', index: 'inSeri',hidden: true}, {name: 'inType', index: 'inType',hidden: true}, {name: 'fpDate', index: 'fpDate',hidden: true}, ], jsonReader: { root: "data", repeatitems: false }, afterSubmitCell: function(rowid, cellname, value, iRow, iCol) { $("#tb_bar_code").setCell(rowid, iCol, value); return true; // 必须返回 ture or false,否则 下面的 afterSaveCell 方法执行不了的 }, afterSaveCell: function (rowid, celname, value, iRow, iCol) { $("#tb_bar_code").setCell(rowid, iCol, value); return true; }, onCellSelect: function (rowid, iCol, cellcontent, e) { $("#tb_bar_code #jqg_tb_bar_code_" + rowid).prop("checked", true);//打钩 if(iCol === 4){ let rowData = $("#tb_bar_code").jqGrid("getRowData", rowid); $("#barListForm")[0].reset(); $("#clFlag option:selected").val('1') $("#barListModal").modal("show"); $('#chargeCode2').val(rowData['chargeCode']); $('#buyAmt2').val(rowData['buyAmt']); $('#quantity2').val(rowData['quantity']); $('#drugName2').val(rowData['drugName']); $('#barCode2').val(rowData['barCode']); if(!isEmpty(rowData['drugTracCodg'])){ let str = (rowData['drugTracCodg'] + ',').replaceAll(',', '\n'); $('#drugTracCodgStr').val(str); } $('#rowid2').val(rowid); } }, beforeSelectRow: function(rowid, e) { // 阻止行选择 return true; }, beforeEditCell: function(rowid,iCol,cellcontent,e){ }, loadComplete: function (res) { //加载完成(初始加载),回调函数 /*$("#barCode").focus();*/ if (res == '401' || res == 401) { window.location.href = '/thmz/login/view'; return; } if (res.code == -1) { errorMesage(res); }else{ // if(!isEmpty(res.data) && res.data.length>0){ // $("#manuNo").attr("disabled",true) // }else{ // $("#manuNo").attr("disabled",false) // } } } }); $("#t_tb_bar_code").append(""); $("#t_tb_bar_code").append(""); // $("#t_tb_bar_code").append(""); $("#addBarCode").on('click', function () { if(isEmpty($("#chargeCode1").val())){ return errorMesageSimaple('药品编码为空,请重新设置药品!'); } let barDataList = $("#tb_bar_code").jqGrid("getGridParam").data;//得到jqgrid当前行数 let rowid = barDataList.length if(barDataList.length !== 0 ){ // 因为新增的数据都是放在首行,所以id最大的是第一行数据 rowid = Number.parseInt(barDataList[0].id) + 1 } $("#tb_bar_code").saveRow(rowid); let formData = {} let t = $("#barForm").serializeArray(); $.each(t, function () { formData[this.name.replace('1', '')] = this.value }); formData['inDocuNo'] = $("#inDocuNoLabel").val(); formData['drugTracCodg'] = ''; $("#tb_bar_code").addRowData(rowid, formData,'first'); // $("#tb_bar_code").jqGrid('editRow', rowid+1); }); $("#removeBarCode").on('click', function () { if (!confirm("确定删除该条药品追溯码吗?")) { return; } let selectRowId = $("#tb_bar_code").jqGrid("getGridParam", "selrow"); if(isEmpty(selectRowId)){ return errorMesageSimaple('请选择一行数据!'); } $("#tb_bar_code").jqGrid("delRowData", selectRowId); }); /** * 条码赋值 * @param value */ function autoBar(value){ let selectRowId = $("#tb_bar_code").jqGrid("getGridParam", "selrow"); if(isEmpty(selectRowId)){ return errorMesageSimaple('请选择一个药品!'); } // 获取当前追溯码信息 let ypTracCodg = $("#tb_bar_code").getCell(selectRowId, 'drugTracCodg') if(!isEmpty(ypTracCodg)){ // 更新追溯码内容 $("#tb_bar_code").setCell(selectRowId, 'drugTracCodg', ypTracCodg + ',' + value); // 更新追溯码扫码数量(这里不需要加1,因为最后会多一个",") $("#tb_bar_code").setCell(selectRowId, 'quantity', ypTracCodg.split(',').length); } else { $("#tb_bar_code").setCell(selectRowId, 'drugTracCodg', value); $("#tb_bar_code").setCell(selectRowId, 'quantity', 1); } $("#barCode").val(""); } /** * 扫码条码 */ $("#barCode").on('input', debounce(e=>{ autoBar(e.delegateTarget.value) },500)); } /** * 生产报表数据 */ function setPrintHtml() { let date = {inDocuNo: $("#inDocuNoLabel").val()}; request({ url: '/getYpInDetlDetailed', method: 'GET', data: 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['buyAmt']) * parseFloat(data['packRetprice'])); let buyPrice = keepTwoDecimal(parseFloat(data['buyAmt']) * parseFloat(data['buyPrice'])); packRetpriceSum += packRetprice; buyPriceSum += buyPrice; if (i === 0) { $(".printDate").html(format(new Date(), "yyyy-MM-dd HH:mm")); $(".supplyName").html(data['supplyName']); $(".inDocuNo").html(data['inDocuNo']); $(".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['drugName'] + ''; html += '' + data['specification'] + ''; html += '' + data['buyAmt'] + ''; html += '' + data['buyPrice'] + ''; html += '' + data['packRetprice'] + ''; html += '' + buyPrice + ''; html += '' + packRetprice + ''; html += '' + data['manuNo'] + ''; html += '' + (isEmpty(data['manufactoryName'])?'':data['manufactoryName']) + ''; html += '' + format(data['effDate'], "yyyy-MM-dd") + ''; html += ''; } $("#base_tr").after(html); $(".packRetpriceSum").html(keepTwoDecimal(packRetpriceSum)); $(".buyPriceSum").html(keepTwoDecimal(buyPriceSum)); $(".balance").html(keepTwoDecimal(Math.abs(packRetpriceSum-buyPriceSum))); print(); }); } /** * 打印报表 */ function print() { setDefaultPrint(); LODOP = getLodop(); LODOP.PRINT_INITA(6, 0, "215mm", "280mm", "入库单打印"); LODOP.SET_PRINT_PAGESIZE(1, "215mm", "280mm", ""); //设置默认打印机 LODOP.SET_PRINTER_INDEX(defaultPrintIndex); LODOP.SET_PRINT_STYLE("FontSize", 11); //字体大小 LODOP.SET_PRINT_STYLEA(0, "ItemType", 2); var strStyle = ""; LODOP.ADD_PRINT_HTM("0mm", "0mm", "RightMargin:0mm", "BottomMargin:0mm", strStyle + document.getElementById("report_table_1").innerHTML); //LODOP.PRINT(); LODOP.PREVIEW(); } // 追溯码扫码计数统计 let barFor = false let barC = 1 function drugBarStat(){ barFor = false barC = 0 $('#quantity2').val(null) $('#drugTracCodgAt').val(null); let sum = 0; let str = $("#drugTracCodgStr").val(); let infoErr = '错误:\n'; let infoRep = '重复:\n'; if(!isEmpty(str)){ let barInfo = str.replaceAll('\n', ',').split(',') if(barInfo.length > 0) { for(let i in barInfo){ if(barInfo[i].length === 20){ sum++; } else { if(barInfo[i] > 0 && barInfo[i].length !== 20){ sum++; barFor = true infoErr += barInfo[i] + '\n'; } } } let barInfoCp = [...barInfo] let repStr = '' for(let i in barInfo){ let rep = 1; // 不能用index的序号去比,因为它已经比过了 let index = 0; if(!(isEmpty(repStr) || repStr.indexOf(barInfo[i]) === -1)){ continue } for(let j in barInfoCp){ if(j > i && barInfo[i] === barInfoCp[j]){ rep++; barFor = true if(isEmpty(repStr)){ repStr = barInfo[i] } else if(repStr.indexOf(barInfo[i]) === -1){ repStr += ',' + barInfo[i] } index = j } } if(rep > 1){ infoRep = infoRep + barInfo[i] + '重复出现:' + rep + '次。 \n' rep = 1 } } } } let info = infoErr + '\n' + infoRep $('#quantity2').val(sum) $('#drugTracCodgAt').val(info); } /** * 去掉最后一个字符 * @param str 字符串 * @param char 去掉的字符 * @returns {string} */ function removeLastComma(str, char) { if (str.endsWith(char)) { str = str.substring(0, str.length - 1); } return str; } function drugBarRepeat(){ let barStr = $("#drugTracCodgStr").val() if(!isEmpty(barStr)) { let barInfo = barStr.replaceAll('\n', ',').split(',') if (barInfo.length > 0) { let barData = new Set(barInfo) let barList = [...barData] let data = '' for(let i in barList){ if(!isEmpty(barList[i])) { data += (barList[i] + '\n') } } $("#drugTracCodgStr").val(data) } } }