|
|
@@ -0,0 +1,443 @@
|
|
|
+//@ sourceURL=drug_delivery_dept.js
|
|
|
+var groupNo = window.localStorage["groupNo"];//药房编码
|
|
|
+$(function () {
|
|
|
+ init_daterangepicker();
|
|
|
+ $('.datetime').datetimepicker({
|
|
|
+ language: 'zh-CN',
|
|
|
+ format: 'yyyy-mm-dd',
|
|
|
+ autoclose: true,
|
|
|
+ minView: 2,
|
|
|
+ startView: 2,
|
|
|
+ });
|
|
|
+ initDetailed();
|
|
|
+ initEmployeeSelect("drawer");
|
|
|
+ initDynamicSelect("allUnitCode",'deptCode');
|
|
|
+ initSearchList('<div id="medicinePopoverContent"><table id="tb_table_medicine"></table></div>',
|
|
|
+ 'drugName', 600, 250);
|
|
|
+ $('#drugName').on('input focus', function (e) {
|
|
|
+ showDrugPopover({
|
|
|
+ url: '/thmz/getYpBaseYfLike',
|
|
|
+ data:{
|
|
|
+ groupNo: groupNo,
|
|
|
+ searchText: $("#drugName").val() == "" ? null : $("#drugName").val(),
|
|
|
+ },
|
|
|
+ columns: [{
|
|
|
+ field: 'stockAmount',
|
|
|
+ title: '药房库存',
|
|
|
+ align: "center",
|
|
|
+ valign: 'middle',
|
|
|
+ formatter: function (value, row, index) {
|
|
|
+ return value<=0?'<span style="color: red">'+value+'</span>':value;
|
|
|
+ }
|
|
|
+ }],
|
|
|
+ onClickRow: function (row, $element) {
|
|
|
+ let dataRow = {
|
|
|
+ chargeCode: row['code'],
|
|
|
+ name: row['name'],
|
|
|
+ specification: row['specification'],
|
|
|
+ packRetprice: row['packRetprice'],
|
|
|
+ amount: 0,
|
|
|
+ outAmt: 0,
|
|
|
+ amountOutMoney: 0,
|
|
|
+ serial: row['serial'],
|
|
|
+ stockAmount: row['stockAmount'],
|
|
|
+ manufactoryName: row['manufactoryName']
|
|
|
+ };
|
|
|
+ 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 ($("#statusLabel").html() === '已审核') {
|
|
|
+ return warningMesageSimaple('已审核,请勿重复保存!');
|
|
|
+ }
|
|
|
+ if(isEmpty($("#deptCode").val())){
|
|
|
+ return errorMesageSimaple('领药科室为空!');
|
|
|
+ }
|
|
|
+ if(isEmpty($("#drawer").val())){
|
|
|
+ return errorMesageSimaple('请领人为空!');
|
|
|
+ }
|
|
|
+ let outDetlList = [];
|
|
|
+ var data = $("#tb_table_detailed").jqGrid("getRowData");
|
|
|
+ for (let i = 0; i < data.length; i++) {
|
|
|
+ if (parseFloat(data[i].outAmt === '' ? 0 : data[i].outAmt) > 0) {
|
|
|
+ outDetlList.push(data[i])
|
|
|
+ }
|
|
|
+ }
|
|
|
+ request({
|
|
|
+ url: '/saveYpOutDetlYfList',
|
|
|
+ method: 'POST',
|
|
|
+ data: JSON.stringify({
|
|
|
+ list: outDetlList,
|
|
|
+ outType: $("#outType1Search").val(),
|
|
|
+ deptCode: $("#deptCode").val()[0],
|
|
|
+ drawer: $("#drawer").val()[0],
|
|
|
+ groupNo:groupNo
|
|
|
+ })
|
|
|
+ }).then((res) => {
|
|
|
+ $("#btn_clean").click();
|
|
|
+ successMesage(res);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ $("#btn_audit").on('click', function () {
|
|
|
+ if ($("#statusLabel").html() !== '未审核') {
|
|
|
+ return warningMesageSimaple('没有可审核的数据!');
|
|
|
+ }
|
|
|
+ if (!confirm("确定审核出库吗?(注意:审核后本张出库单将不能再修改)")) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ request({
|
|
|
+ url: '/auditYpOutDetlYf',
|
|
|
+ method: 'GET',
|
|
|
+ data: {
|
|
|
+ drawNo: $("#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');
|
|
|
+ $("#drawer").selectpicker('val', '');
|
|
|
+ $("#drawer").removeAttr('disabled');
|
|
|
+ $("#drawer").selectpicker('refresh');
|
|
|
+ $("#drawNoLabel").text('');
|
|
|
+ $("#drawerNameLabel").text('');
|
|
|
+ $("#keeperNameLabel").text('');
|
|
|
+ $("#confirmNameLabel").text('');
|
|
|
+ $("#statusLabel").text('未确认');
|
|
|
+ $("#xxform")[0].reset();
|
|
|
+ $("#tb_table_detailed").jqGrid('clearGridData');
|
|
|
+ $("#outType1Search").val(0);
|
|
|
+ $("#outType1Search").selectpicker('refresh');
|
|
|
+ });
|
|
|
+});
|
|
|
+
|
|
|
+/**
|
|
|
+ * 查询列表
|
|
|
+ */
|
|
|
+function initRecordTable() {
|
|
|
+ $('#tb_record').bootstrapTable('destroy');
|
|
|
+ $('#tb_record').bootstrapTable({
|
|
|
+ url: '/thmz/queryYpOutDetlYfRecord', //请求后台的URL(*)
|
|
|
+ method: 'GET', //请求方式(*)
|
|
|
+ toolbar: '#toolbar', //工具按钮用哪个容器
|
|
|
+ striped: true, //是否显示行间隔色
|
|
|
+ cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
|
|
|
+ pagination: true, //是否显示分页(*)
|
|
|
+ sortable: true, //是否启用排序
|
|
|
+ sortOrder: "asc", //排序方式
|
|
|
+ queryParams: recordTableQueryParams, //传递参数(*)
|
|
|
+ sidePagination: "client", //分页方式: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: [
|
|
|
+ {
|
|
|
+ field: 'outDate',
|
|
|
+ title: '确认日期',
|
|
|
+ align: "center",
|
|
|
+ valign: 'middle',
|
|
|
+ formatter: function (value, row, index) {
|
|
|
+ return format(value, "yyyy-MM-dd HH:mm:ss");
|
|
|
+ }
|
|
|
+ }, {
|
|
|
+ field: 'drawNo',
|
|
|
+ title: '单号' ,
|
|
|
+ align: "center",
|
|
|
+ valign: 'middle'
|
|
|
+ }, {
|
|
|
+ field: 'deptName',
|
|
|
+ title: '领药科室',
|
|
|
+ align: "center",
|
|
|
+ valign: 'middle'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'drawerName',
|
|
|
+ title: '申请人',
|
|
|
+ align: "center",
|
|
|
+ valign: 'middle'
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'keeperName',
|
|
|
+ title: '经发人',
|
|
|
+ align: "center",
|
|
|
+ valign: 'middle'
|
|
|
+ }, {
|
|
|
+ field: 'confirmDate',
|
|
|
+ title: '审核出库日期',
|
|
|
+ align: "center",
|
|
|
+ valign: 'middle',
|
|
|
+ formatter: function (value, row, index) {
|
|
|
+ return format(value, "yyyy-MM-dd HH:mm:ss");
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'confirmName',
|
|
|
+ title: '审核人',
|
|
|
+ align: "center",
|
|
|
+ valign: 'middle'
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ onDblClickRow: function (row) {
|
|
|
+ getDetail(row.drawNo);
|
|
|
+ $("#xxform")[0].reset();
|
|
|
+ let status = $("#statusFlagSearch option:checked").text();
|
|
|
+ $("#statusLabel").html(status);
|
|
|
+ $("#outType1Search").val(row['outType']);
|
|
|
+ $("#outType1Search").selectpicker('refresh');
|
|
|
+ $("#drawNoLabel").text(row['drawNo']);
|
|
|
+ $("#deptCode").selectpicker('val', row['deptCode']);
|
|
|
+ $("#deptCode").selectpicker('refresh');
|
|
|
+ $("#drawer").selectpicker('val', row['drawer']);
|
|
|
+ $("#drawer").selectpicker('refresh');
|
|
|
+ $("#drawerNameLabel").text(row['drawerName']);
|
|
|
+ $("#confirmNameLabel").text(row['confirmName']);
|
|
|
+ $("#keeperNameLabel").text(row['keeperName']);
|
|
|
+ },
|
|
|
+ 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(),
|
|
|
+ beginDate: rePortRangeArr[0],
|
|
|
+ endDate: rePortRangeArr[1],
|
|
|
+ groupNo: groupNo,
|
|
|
+ confirmFlag: $("#statusFlagSearch").val()
|
|
|
+ };
|
|
|
+ return temp;
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 加载详细表格数据
|
|
|
+ * @param inDocuNo
|
|
|
+ */
|
|
|
+function loadDetailed(drawNo) {
|
|
|
+ $("#tb_table_detailed").jqGrid('setGridParam', {
|
|
|
+ datatype: 'JSON',
|
|
|
+ url: '/thmz/getYpOutDetlDrugYf',
|
|
|
+ postData: {drawNo: drawNo}
|
|
|
+ }).trigger('reloadGrid');
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 初始化详细表格
|
|
|
+ */
|
|
|
+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: true,
|
|
|
+ sortable: false,
|
|
|
+ loadonce: false, //一次加载全部数据到客户端,由客户端进行排序。
|
|
|
+ cellsubmit: "clientArray",
|
|
|
+ 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: 'manufactoryName', index: 'manufactoryName',align:'left'},
|
|
|
+ {name: 'packRetprice', index: 'packRetprice', align: 'center'},
|
|
|
+ {name: 'stockAmount', index: 'stockAmount', align: 'center'},
|
|
|
+ {
|
|
|
+ name: 'outAmt', index: 'outAmt', align: 'center', width: 100, editable: true, edittype: 'text'
|
|
|
+ , editrules: {edithidden: true, number: true, minValue: 0},
|
|
|
+ formatter: function (cellvalue, options, rowObject) {
|
|
|
+ return isEmpty(cellvalue) ? 0 : cellvalue;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {name: 'serial', index: 'serial', hidden: true},
|
|
|
+ {name: 'confirmDate', index: 'confirmDate', hidden: true}
|
|
|
+ ],
|
|
|
+ jsonReader: {
|
|
|
+ root: "data", repeatitems: false
|
|
|
+ },
|
|
|
+ loadComplete: function (res) { //加载完成(初始加载),回调函数
|
|
|
+ if (res == '401' || res == 401) {
|
|
|
+ window.location.href = '/thmz/login/view';
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (res.code == -1) {
|
|
|
+ errorMesage(res);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ $("#t_tb_table_detailed").append("<input id='drugName' name='drugName' type='text' style='margin-left: 10px;' placeholder='添加药品...'>");
|
|
|
+ //$("#t_tb_table_detailed").append("<button class='registration-no-color-foot-button' title='删除药品' id='remove' style='color: red;margin-left: 10px;'><i class='fa fa-trash-o'></i></button>");
|
|
|
+ $("#remove").on('click', function () {
|
|
|
+ if (selectRowId == null) {
|
|
|
+ return errorMesageSimaple('请选择一行进行删除!');
|
|
|
+ }
|
|
|
+ $("#tb_table_detailed").jqGrid("delRowData", selectRowId);
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 生产报表数据
|
|
|
+ */
|
|
|
+function setPrintHtml() {
|
|
|
+ var datas = $("#tb_table_detailed").jqGrid("getRowData");
|
|
|
+ let html = '';
|
|
|
+ let packRetpriceSum = 0;
|
|
|
+ $('.sjh').remove();
|
|
|
+ for (let i = 0; i < datas.length; i++) {
|
|
|
+ let data = datas[i];
|
|
|
+ let packRetprice = keepTwoDecimal(parseFloat(data['outAmt']) * parseFloat(data['packRetprice']));
|
|
|
+ packRetpriceSum += packRetprice;
|
|
|
+ if (i === 0) {
|
|
|
+ $(".printDate").html(format(new Date(), "yyyy-MM-dd HH:mm"));
|
|
|
+ $(".title").html(getGroupName(groupNo)+"药品出库单");
|
|
|
+ let w_code = $("#deptCode").find("option:selected").text();
|
|
|
+ $(".deptName").html(w_code.substring(0, w_code.lastIndexOf("(")));
|
|
|
+ $(".drawNo").html(data['drawNo']);
|
|
|
+ $(".confirmDate").html(format(data['confirmDate'], "yyyy-MM-dd"));
|
|
|
+ $(".listerAudit").html($("#confirmNameLabel").html());
|
|
|
+ $(".drawer").html($("#drawerNameLabel").html());
|
|
|
+ $(".keeper").html($("#keeperNameLabel").html());
|
|
|
+ }
|
|
|
+ html += '<tr class="sjh">';
|
|
|
+ html += '<td class="xtd" style="text-align: center;">' + data['chargeCode'] + '</td>';
|
|
|
+ html += '<td class="xtd" style="text-align: left;">' + data['name'] + '</td>';
|
|
|
+ html += '<td class="xtd" style="text-align: left;">' + data['specification'] + '</td>';
|
|
|
+ html += '<td class="xtd" style="text-align: center;">' + data['outAmt'] + '</td>';
|
|
|
+ html += '<td class="xtd" style="text-align: center;">' + data['packRetprice'] + '</td>';
|
|
|
+ html += '<td class="xtd" style="text-align: center;">' + packRetprice + '</td>';
|
|
|
+ html += '<td class="xtd" style="text-align: left;">' + data['manufactoryName'] + '</td>';
|
|
|
+ html += '</tr>';
|
|
|
+ }
|
|
|
+ $("#base_tr").after(html);
|
|
|
+ $(".packRetpriceSum").html(keepTwoDecimal(packRetpriceSum));
|
|
|
+ print();
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 打印报表
|
|
|
+ */
|
|
|
+function print() {
|
|
|
+ setDefaultPrint();
|
|
|
+ LODOP = getLodop();
|
|
|
+ LODOP.PRINT_INITA(6, 0, "221mm", "93mm", "长沙泰和医院药品出库单");
|
|
|
+ LODOP.SET_PRINT_PAGESIZE(1, "221mm", "93mm", "");
|
|
|
+ //设置默认打印机
|
|
|
+ LODOP.SET_PRINTER_INDEX(defaultPrintIndex);
|
|
|
+ LODOP.SET_PRINT_STYLEA(0, "ItemType", 2);
|
|
|
+ var strStyle = "<style>table,td,th {border-width: 1px;" +
|
|
|
+ "border-style: solid;border-collapse: collapse;table-layout:fixed;word-wrap:break-word;font-size: 13px}</style>";
|
|
|
+ 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;
|
|
|
+}
|