spirit_anesthetic_print.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401
  1. //@ sourceURL=spirit_anesthetic_print.js
  2. var LODOP; //声明为全局变量
  3. $(function () {
  4. initDeptSelect(0,"unitCodeSearch");
  5. init_daterangepickertime();
  6. setTimeout(function () {
  7. getLodop();
  8. }, 800);
  9. $("#jmtj_table").hide();
  10. $(".selectpicker").selectpicker({
  11. dropuAuto: false
  12. });
  13. //初始化页面上面的按钮事件
  14. $("#btn_search").click(function (t) {
  15. $('.sjh').remove();
  16. if($('#drugFlagSearch').val() == 0){
  17. getSendDrugRecordData();
  18. }else{
  19. getSpiritAnestheticPrintData();
  20. }
  21. });
  22. $('#btn_clean').click(function () {
  23. cleanParams();
  24. });
  25. $("#btn_daily").click(function (t) {
  26. print();
  27. });
  28. $("#drugFlagSearch").change(function (t,d,e) {
  29. let drugFlag = $("#drugFlagSearch").val();
  30. let title = "";
  31. if(drugFlag == 1){
  32. title = "麻、精一及麻黄碱类药品使用登记";
  33. $("#jmtj_table").show();
  34. $("#qbtj_table").hide();
  35. }else if(drugFlag == 2){
  36. title = "终止妊娠药统计";
  37. $("#jmtj_table").show();
  38. $("#qbtj_table").hide();
  39. }else if(drugFlag == 3){
  40. title = "精二类统计";
  41. $("#jmtj_table").show();
  42. $("#qbtj_table").hide();
  43. }else if(drugFlag == 0){
  44. title = "药品发药明细统计表";
  45. $("#qbtj_table").show();
  46. $("#jmtj_table").hide();
  47. }
  48. $(".title").html(title);
  49. $(".dateRange").html($('#reportrange span').html());
  50. $(".printDate").html(format(new Date(),"yyyy-MM-dd HH:mm"));
  51. });
  52. //初始化药品查询弹出框
  53. initSearchList('<div id="medicinePopoverContent"><table id="tb_table_medicine"></table></div>',
  54. 'searchTextDrug', 700, 250);
  55. $('#searchTextDrug').on('input focus',function(e){
  56. showDrugPopover();
  57. if($('#searchTextDrug').val() == ''){
  58. $('#codeSearch').val("");
  59. $('#serialSearch').val("");
  60. }
  61. });
  62. });
  63. /**
  64. * 获取精麻药统计报表
  65. */
  66. function getSpiritAnestheticPrintData() {
  67. $(".dateRange").html($('#reportrange span').html());
  68. $(".printDate").html(format(new Date(),"yyyy-MM-dd HH:mm"));
  69. $.ajax({
  70. type: "GET",
  71. url: '/thmz/getSpiritAnestheticPrint',
  72. contentType: "application/json;charset=UTF-8",
  73. dataType: "json",
  74. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  75. data: queryParams(),
  76. success: function (res) {
  77. if (res == '401' || res == 401) {
  78. window.location.href = '/thmz/login/view'
  79. return;
  80. }
  81. if (res.code == 0) {
  82. let html = '';
  83. let code = '';
  84. let number = 0;
  85. let sex;
  86. for (var i = 0; i < res.data.length; i++) {
  87. let data = res.data[i];
  88. if(code == ''){
  89. code = data.chargeItemCode;
  90. number += parseFloat(data.quantity);
  91. }else if(code == data.chargeItemCode){
  92. number += parseFloat(data.quantity);
  93. }else{
  94. html += '<tr class="sjh">';
  95. html += '<td colspan="15" style="text-align: center;font-weight: 700;">共计:' + number + '</td>';
  96. html += '</tr>';
  97. code = data.chargeItemCode;
  98. number = parseFloat(data.quantity);
  99. }
  100. if(data.sex == 1){
  101. sex = "男"
  102. }else if(data.sex == 2){
  103. sex = "女"
  104. }else{
  105. sex = "未知"
  106. }
  107. html += '<tr class="sjh">';
  108. html += '<td class="xtd" style="text-align: center;mso-number-format: \'\\@\';">' + data.chargeDate.substring(5,11) + '</td>';
  109. html += '<td class="xtd" style="text-align: center;">' + data.patientId + '</td>';
  110. html += '<td class="xtd" style="text-align: center;">' + data.name + '</td>';
  111. html += '<td class="xtd" style="text-align: center;">' + sex + '</td>';
  112. html += '<td class="xtd" style="text-align: center;">' + data.age + '</td>';
  113. html += '<td style="mso-number-format: \'\\@\';">' + data.socialNo + '</td>';
  114. html += '<td>' + data.icdText + '</td>';
  115. html += '<td class="xtd" style="text-align: center;">' + data.chargeItemCode + '</td>';
  116. html += '<td>' + data.drugname + '</td>';
  117. html += '<td>' + data.specification + '</td>';
  118. html += '<td class="xtd" style="text-align: center;">' + data.quantity + '</td>';
  119. html += '<td class="xtd" style="text-align: center;">' + data.employeeName.trim().substring(0,1)+new Array(data.employeeName.trim().length).join('*') + '</td>';
  120. html += '<td class="xtd" style="text-align: center;">' + data.warnDeptName + '</td>';
  121. html += '<td class="xtd" ></td>';
  122. html += '<td class="xtd" ></td>';
  123. html += '</tr>';
  124. }
  125. html += '<tr class="sjh">';
  126. html += '<td colspan="15" style="text-align: center;font-weight: 700;">共计:' + number + '</td>';
  127. html += '</tr>';
  128. $("#jmtj_table").append(html);
  129. let drugFlag = $("#drugFlagSearch").val();
  130. let title = "";
  131. if(drugFlag == 1){
  132. title = "麻、精一及麻黄碱类药品使用登记";
  133. }else if(drugFlag == 2){
  134. title = "终止妊娠药统计";
  135. }else if(drugFlag == 3){
  136. title = "精二类统计";
  137. }
  138. tableToExcel('jmtj_table', title);
  139. } else if (res.code == -1) {
  140. new PNotify({
  141. title: '错误提示',
  142. text: res.message,
  143. type: 'error',
  144. hide: true,
  145. styling: 'bootstrap3'
  146. });
  147. }
  148. }
  149. });
  150. }
  151. /**
  152. * 获取所有药品类型统计报表
  153. */
  154. function getSendDrugRecordData() {
  155. $('#YWaitDialog').css('top',$('.xtd').offset().top);
  156. $('#YWaitDialog').show();
  157. $(".dateRange").html($('#reportrange span').html());
  158. $(".printDate").html(format(new Date(),"yyyy-MM-dd HH:mm"));
  159. $.ajax({
  160. type: "POST",
  161. url: '/thmz/getSendDrugRecord',
  162. contentType: "application/json;charset=UTF-8",
  163. dataType: "json",
  164. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  165. data: JSON.stringify({
  166. 'beginDate': getRePortRangeArr()[0],
  167. 'endDate': getRePortRangeArr()[1],
  168. 'chargeCode': $('#codeSearch').val()==''?null:$('#codeSearch').val(),
  169. 'serial': $('#serialSearch').val()==''?null:$('#serialSearch').val(),
  170. 'warnDept': $('#unitCodeSearch').val()!=null?$('#unitCodeSearch').val()[0]:null,
  171. 'queryScope': $("#queryScopeSearch").val()
  172. }),
  173. success: function (res) {
  174. $('#YWaitDialog').hide();
  175. if (res == '401' || res == 401) {
  176. window.location.href = '/thmz/login/view'
  177. return;
  178. }
  179. if (res.code == 0) {
  180. let html = '';
  181. let flag = '';//区分门诊住院 -1住院 其它门诊
  182. let number = 0;
  183. let totalNumber = 0;
  184. let sex;
  185. for (var i = 0; i < res.data.length; i++) {
  186. let data = res.data[i];
  187. if(flag == ''){
  188. flag = data.id.indexOf("-")!=-1?'0':'1';
  189. number += parseFloat(data.quantity);
  190. }else if(flag == (data.id.indexOf("-")!=-1?'0':'1')){
  191. number += parseFloat(data.quantity);
  192. }else{
  193. html += '<tr class="sjh">';
  194. html += '<td colspan="11" style="text-align: right;font-weight: 700;">小计:' + number + '</td>';
  195. html += '<td colspan="5"></td>';
  196. html += '</tr>';
  197. flag = data.id.indexOf("-")!=-1?'0':'1';
  198. totalNumber += number;
  199. number = parseFloat(data.quantity);
  200. }
  201. if(data.sex == 1){
  202. sex = "男"
  203. }else if(data.sex == 2){
  204. sex = "女"
  205. }else{
  206. sex = "未知"
  207. }
  208. let queryScope = data.id.indexOf("-")!=-1?'门诊':'住院';
  209. let age = data.birthDay!=null?getBirthSlot(data.birthDay,new Date()):'';
  210. html += '<tr class="sjh">';
  211. html += '<td class="xtd" style="text-align: center;">' + data.id + '</td>';
  212. html += '<td class="xtd" style="text-align: center;">' + data.name + '</td>';
  213. html += '<td class="xtd" style="text-align: center;">' + sex + '</td>';
  214. html += '<td class="xtd" style="text-align: center;">' + age.substring(0,age.indexOf('岁')) + '</td>';
  215. html += '<td class="xtd" style="text-align: center;">' + data.warnDeptName + '</td>';
  216. html += '<td>' + data.icdText + '</td>';
  217. html += '<td class="xtd" style="text-align: center;">' + data.chargeCode + '</td>';
  218. html += '<td>' + data.drugName + '</td>';
  219. html += '<td>' + data.specification + '</td>';
  220. html += '<td>' + data.abbrName + '</td>';
  221. html += '<td class="xtd" style="text-align: center;">' + data.quantity + '</td>';
  222. html += '<td style="text-align: center;">' + data.chargeDate + '</td>';
  223. html += '<td class="xtd" style="text-align: center;">' + data.employeeName.trim().substring(0,1)+new Array(data.employeeName.trim().length).join('*') + '</td>';
  224. html += '<td class="xtd" style="text-align: center;">' + data.supplyName + '</td>';
  225. html += '<td class="xtd" style="text-align: center;">' + data.frequency + '</td>';
  226. html += '<td class="xtd" style="text-align: center;">' + queryScope + '</td>';
  227. html += '</tr>';
  228. }
  229. html += '<tr class="sjh">';
  230. html += '<td colspan="11" style="text-align: right;font-weight: 700;">小计:' + number + '</td>';
  231. html += '<td colspan="5"></td>';
  232. html += '</tr>';
  233. html += '<tr class="sjh">';
  234. html += '<td colspan="11" style="text-align: right;font-weight: 700;">总计:' + parseFloat(totalNumber+number) + '</td>';
  235. html += '<td colspan="5"></td>';
  236. html += '</tr>';
  237. $("#qbtj_table").append(html);
  238. tableToExcel('qbtj_table', '药品发药明细统计表');
  239. } else if (res.code == -1) {
  240. new PNotify({
  241. title: '错误提示',
  242. text: res.message,
  243. type: 'error',
  244. hide: true,
  245. styling: 'bootstrap3'
  246. });
  247. }
  248. }
  249. });
  250. }
  251. /**
  252. * 获取按钮组选择的下标
  253. * @param id
  254. * @returns {number}
  255. */
  256. function getIndex(id) {
  257. var index = 0;
  258. var item = $("#" + id).find("button");
  259. for (var i = 0; i <= item.length; i++) {
  260. if ($(item[i]).hasClass("btn-primary")) {
  261. index = i;
  262. break;
  263. }
  264. }
  265. return index;
  266. }
  267. /**
  268. * 获取时间选择器的时间数组
  269. * @returns {string[]}
  270. */
  271. function getRePortRangeArr() {
  272. var rePortRange = $('#reportrange span').html();
  273. var rePortRangeArr = rePortRange.split(" - ");
  274. return rePortRangeArr;
  275. }
  276. /**
  277. * 清空查询条件
  278. */
  279. function cleanParams() {
  280. $("#queryScopeSearch").val(0);
  281. $('#queryScopeSearch').selectpicker('refresh');
  282. $('#reportrange span').html(moment().subtract(1, 'days').format("YYYY-MM-DD 14:00:00") + ' - ' + moment().format("YYYY-MM-DD 13:59:59"));
  283. $('#unitCodeSearch').empty();
  284. $('#drugFlagSearch').val(0);
  285. $('#qbtj_table').show();
  286. $('#jmtj_table').hide();
  287. $('.sjh').remove();
  288. $('#drugFlagSearch').selectpicker('refresh');
  289. $("#unitCodeSearch").html('');
  290. $("#unitCodeSearch").selectpicker('refresh');
  291. $('#searchTextDrug').empty();
  292. $('#codeSearch').empty();
  293. $('#serialSearch').empty();
  294. }
  295. /**
  296. * 打印报表
  297. */
  298. function print() {
  299. setDefaultPrint();
  300. LODOP = getLodop();
  301. LODOP.PRINT_INITA(6, 0, "210mm", "297mm", "药品发放统计表");
  302. LODOP.SET_PRINT_PAGESIZE(2, 0, 0,"A4");
  303. //设置默认打印机
  304. LODOP.SET_PRINTER_INDEX(defaultPrintIndex);
  305. LODOP.SET_PRINT_STYLE("FontSize", 10); //字体大小
  306. LODOP.SET_PRINT_STYLEA(0,"ItemType",2);
  307. //设置默认打印机
  308. LODOP.SET_PRINTER_INDEX(defaultPrintIndex);
  309. LODOP.ADD_PRINT_TEXT('200mm','140mm','40mm','40mm','第#页/共&页');
  310. LODOP.SET_PRINT_STYLEA(0,"ItemType",2);
  311. var strStyle="<style>table,td,th {border-width: 1px;" +
  312. "border-style: solid;border-collapse: collapse;table-layout:fixed;word-wrap:break-word;font-size: 14px}</style>";
  313. LODOP.ADD_PRINT_HTM("2mm", "4mm", "RightMargin:4mm", "BottomMargin:15mm",strStyle+ document.getElementById("report_table_1").innerHTML);
  314. LODOP.PRINT();
  315. //LODOP.PREVIEW();
  316. }
  317. /**
  318. * 统计列表查询参数
  319. */
  320. function queryParams() {
  321. let drugFlags = new Array();
  322. let flag = $("#drugFlagSearch").val();
  323. if(flag == 1){
  324. drugFlags[0] = 2;
  325. drugFlags[1] = 3;
  326. drugFlags[2] = 5;
  327. }else if(flag == 2){
  328. drugFlags[0] = 6;
  329. }else if(flag == 3){
  330. drugFlags[0] = 1;
  331. drugFlags[1] = 4;
  332. }
  333. var temp = {
  334. beginDate: getRePortRangeArr()[0],
  335. endDate: getRePortRangeArr()[1],
  336. chargeItemCode: $('#codeSearch').val(),
  337. unitCode: $('#unitCodeSearch').val()!=null?$('#unitCodeSearch').val()[0]:'',
  338. drugFlags: drugFlags,
  339. queryScope: $("#queryScopeSearch").val()
  340. };
  341. return temp;
  342. }
  343. function init_daterangepickertime() {
  344. if (typeof ($.fn.daterangepicker) === 'undefined') {
  345. return;
  346. }
  347. var optionSet1 = {
  348. startDate: moment().subtract(1, 'days').format("YYYY-MM-DD 14:00:00"),
  349. endDate: moment().format("YYYY-MM-DD 13:59:59"),
  350. minDate: '2012-01-01',
  351. maxDate: nowString()+' 23:59:59',
  352. dateLimit: {
  353. days: 1200
  354. },
  355. showDropdowns: true,
  356. showWeekNumbers: true,
  357. ranges: {
  358. '今天': [moment(), moment()],
  359. '昨天': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
  360. '最近7天': [moment().subtract(6, 'days'), moment()],
  361. '最近30天': [moment().subtract(29, 'days'), moment()],
  362. '当月': [moment().startOf('month'), moment().endOf('month')],
  363. '上个月': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
  364. },
  365. opens: 'right',
  366. buttonClasses: ['btn btn-default'],
  367. applyClass: 'btn-small btn-primary',
  368. cancelClass: 'btn-small',
  369. timePicker: true, //显示时间
  370. timePicker24Hour: true, //时间制
  371. timePickerSeconds: true, //时间显示到秒
  372. timePickerIncrement: 1,
  373. format: 'YYYY-MM-DD HH:mm:ss',
  374. separator: ' to ',
  375. locale: {
  376. applyLabel: '确定',
  377. cancelLabel: '取消',
  378. fromLabel: 'From',
  379. toLabel: 'To',
  380. customRangeLabel: '自定义',
  381. daysOfWeek: ['天', '一', '二', '三', '四', '五', '六'],
  382. monthNames: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
  383. firstDay: 1
  384. }
  385. };
  386. $('#reportrange').daterangepicker(optionSet1, function (start, end, label) {
  387. $('#reportrange span').html(start.format('YYYY-MM-DD HH:mm:ss') + ' - ' + end.format('YYYY-MM-DD HH:mm:ss'));
  388. });
  389. $('#reportrange span').html(moment().subtract(1, 'days').format("YYYY-MM-DD 14:00:00") + ' - ' + moment().format("YYYY-MM-DD 13:59:59"));
  390. }