//@ 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;
}