west_pharmacy_send.js 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978
  1. //@ sourceURL=west_pharmacy_send.js
  2. var LODOP; //声明为全局变量
  3. var zsdPrintIndex;
  4. var bqPrintIndex;
  5. $(function () {
  6. openSocket("FY");
  7. $("input").each(function () {
  8. this.onkeydown = function (e) { // 监听键盘事件
  9. let theEvent = window.event || e;
  10. let code = theEvent.keyCode || theEvent.which;
  11. if (code == 13) {//回车事件
  12. $("#btn_query").click(); //触发搜索按钮点击事件
  13. }
  14. }
  15. });
  16. init_daterangepicker();
  17. initTbTable();
  18. //重置查询参数
  19. $('#btn_clean').click(function () {
  20. cleanParams();
  21. });
  22. $("#btn_query").click(function (t) {
  23. initTbTable();
  24. });
  25. $("#btn_ty").click(function (t) {
  26. saveRefundMedicine();
  27. });
  28. $(".selectpicker").selectpicker({
  29. dropuAuto: false
  30. });
  31. });
  32. /**
  33. * 获取按钮组选择的下标
  34. * @param id
  35. * @returns {number}
  36. */
  37. function getIndex(id) {
  38. var index = 0;
  39. var item = $("#" + id).find("button");
  40. for (var i = 0; i <= item.length; i++) {
  41. if ($(item[i]).hasClass("btn-primary")) {
  42. index = i;
  43. break;
  44. }
  45. }
  46. return index;
  47. }
  48. /**
  49. * 设置病人id
  50. */
  51. function setPatientId() {
  52. var patientId_or_cardNo = $("#patientId_or_cardNo").val();
  53. if (patientId_or_cardNo == '') {
  54. return $("#patientId").val("");
  55. }
  56. $.ajax({
  57. type: "GET",
  58. url: '/thmz/getByIcCardNo?icCardNo=' + patientId_or_cardNo,
  59. contentType: "application/json;charset=UTF-8",
  60. dataType: "json",
  61. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  62. success: function (res) {
  63. if (res == '401' || res == 401) {
  64. window.location.href = '/thmz/login/view'
  65. return;
  66. }
  67. if (res.code == 0) {
  68. if (res.data != null) {
  69. $("#patientId").val(res.data.patientId);
  70. } else {
  71. $("#patientId").val(patientId_or_cardNo);
  72. }
  73. }
  74. }
  75. });
  76. }
  77. /**
  78. * 列表类型按钮切换事件
  79. * @param object
  80. * @param realIndex 下标
  81. */
  82. function sendRefundButtonChange(object, realIndex) {
  83. $("#send_refund_group").find("button").each(function (index, element) {
  84. if ($(element).hasClass("btn-primary")) {
  85. $(element).removeClass("btn-primary").addClass("btn-default");
  86. }
  87. });
  88. if (realIndex == 0) {
  89. $("#confirmFlagSearch").empty();
  90. $("#confirmFlagSearch").append("<option value='0' selected>未发药</option>");
  91. $("#confirmFlagSearch").append("<option value='1'>已发药</option>");
  92. $("#confirmFlagSearch").selectpicker('refresh');
  93. $("#tb_table_right_ty").css("display", "none");
  94. $("#btn_ty").addClass("hidden");
  95. } else {
  96. $("#confirmFlagSearch").empty();
  97. $("#confirmFlagSearch").append("<option value='2' selected>待退药</option>");
  98. $("#confirmFlagSearch").append("<option value='3'>已退药</option>");
  99. $("#confirmFlagSearch").selectpicker('refresh');
  100. $("#tb_table_right_ty").css("display", "");
  101. $("#btn_ty").removeClass("hidden");
  102. }
  103. $(object).removeClass("btn-default").addClass("btn-primary");
  104. initTbTable();
  105. }
  106. /**
  107. * 发药处理
  108. */
  109. function sendMedicineProcessing(realNo, groupNo, orderNo, receiptNo, times, patientId, name) {
  110. if (!confirm("确定要对当前处方进行发药处理吗?")) {
  111. return;
  112. }
  113. var temp = {
  114. groupNo: groupNo,
  115. realNo: realNo,
  116. orderNo: orderNo,
  117. receiptNo: receiptNo,
  118. times: times,
  119. patientId: patientId,
  120. name: name,
  121. windowsNoYf: '04'
  122. };
  123. $.ajax({
  124. type: "POST",
  125. url: '/thmz/sendMedicineProcessing',
  126. contentType: "application/json;charset=UTF-8",
  127. dataType: "json",
  128. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  129. data: JSON.stringify(temp),
  130. success: function (res) {
  131. if (res == '401' || res == 401) {
  132. window.location.href = '/thmz/login/view'
  133. return;
  134. }
  135. if (res.code == 0) {
  136. successMesage(res);
  137. initTbTable();
  138. } else {
  139. errorMesage(res);
  140. }
  141. }
  142. });
  143. }
  144. /**
  145. * 查询处方信息
  146. */
  147. function initTbTable() {
  148. var sendRefundGroup = getIndex("send_refund_group");
  149. var visible = false;
  150. var url = "/thmz/getSendMedicinePrescription";
  151. if (sendRefundGroup == 1) {
  152. visible = true;
  153. url = "/thmz/getYfRefundMedicine";
  154. $("#tb_table_div").attr("class", "col-md-7 col-sm-7 col-xs-12");
  155. } else {
  156. $("#tb_table_div").attr("class", "");
  157. }
  158. $('#tb_table').bootstrapTable("destroy");
  159. $('#tb_table').bootstrapTable({
  160. url: url, //请求后台的URL(*)
  161. method: 'post', //请求方式(*)
  162. striped: true, //是否显示行间隔色
  163. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  164. pagination: true, //是否显示分页(*)
  165. sortable: true, //是否启用排序
  166. sortOrder: "asc", //排序方式
  167. queryParams: queryParams, //传递参数(*)
  168. sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
  169. pageNumber: 1, //初始化加载第一页,默认第一页
  170. pageSize: 10, //每页的记录行数(*)
  171. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  172. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  173. singleSelect: true, // 单选checkbox
  174. strictSearch: true,
  175. showColumns: false, //是否显示所有的列
  176. showRefresh: false, //是否显示刷新按钮
  177. minimumCountColumns: 2, //最少允许的列数
  178. clickToSelect: true, //是否启用点击选中行
  179. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  180. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  181. cardView: false, //是否显示详细视图
  182. detailView: false,
  183. //rowStyle:rowStyle,//通过自定义函数设置行样式
  184. ajaxOptions: {
  185. headers: {
  186. 'Accept': 'application/json',
  187. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  188. }
  189. },
  190. columns: [
  191. {
  192. field: 'checked',
  193. checkbox: true,
  194. align: "center",
  195. valign: 'middle',
  196. visible: visible,
  197. formatter: function (value, row, index) {
  198. if (index == 0 && sendRefundGroup == 1) {
  199. fitfymx(row.patientId, row.times, row.receiptNo, row.orderNo, row.groupNo);
  200. return {
  201. checked: true//设置选中
  202. };
  203. }
  204. }
  205. }, {
  206. field: 'patientId',
  207. title: '病人ID',
  208. align: "center",
  209. valign: 'middle'
  210. }, {
  211. field: 'name',
  212. title: '姓名',
  213. align: "center",
  214. valign: 'middle'
  215. }, {
  216. field: 'orderNo',
  217. title: '处方号',
  218. align: "center",
  219. valign: 'middle'
  220. }, {
  221. field: 'warnDeptName',
  222. title: '申请科室',
  223. align: "center",
  224. valign: 'middle',
  225. }, {
  226. field: 'employeeName',
  227. title: '医生',
  228. align: "center",
  229. valign: 'middle',
  230. formatter: function (value, row, index) {
  231. if (value == null) {
  232. return row.doctorName;
  233. }
  234. return value;
  235. }
  236. }, {
  237. field: 'chargeDate',
  238. title: '缴费日期',
  239. align: "center",
  240. valign: 'middle',
  241. formatter: function (value, row, index) {
  242. if (value != null && value != "") {
  243. return format(value, "yyyy-MM-dd HH:mm:ss");
  244. }
  245. return "";
  246. }
  247. }, {
  248. field: 'realNo',
  249. title: '流水号',
  250. align: "center",
  251. valign: 'middle',
  252. }, {
  253. field: 'confirmTime',
  254. title: '确认日期',
  255. align: "center",
  256. valign: 'middle',
  257. visible: visible,
  258. formatter: function (value, row, index) {
  259. if (value != null && value != "") {
  260. return format(value, "yyyy-MM-dd HH:mm:ss");
  261. }
  262. return "";
  263. }
  264. }
  265. /*, {
  266. field: 'doctorFlag',
  267. title: '医生处方',
  268. align: "center",
  269. valign: 'middle',
  270. formatter: function (value, row, index) {
  271. return value == 1 ? "是" : "否";
  272. }
  273. }*/
  274. , {
  275. title: '操作',
  276. align: "center",
  277. valign: 'middle',
  278. visible: !visible,
  279. formatter: function (value, row, index) {
  280. var str = "";
  281. if (sendRefundGroup == 0) {
  282. str = '<button type="button" class="registration-no-color-foot-button" title="打印" onclick="printInjectionOralMedicine(\'' + row.patientId + '\',\'' + row.orderNo + '\',\'' + row.realNo + '\',\'' + row.times + '\',\'' + row.receiptNo + '\');" style="color: #35D082;"><i class="fa fa-print"></i></button>';
  283. str += '<button type="button" class="registration-no-color-foot-button" title="叫号" onclick="callNumber(\'' + row.patientId + '\',\'' + row.name + '\')"><i class="glyphicon glyphicon-bullhorn"></i></button>';
  284. str += '<button type="button" class="registration-no-color-foot-button" title="发药" onclick="sendMedicineProcessing(\'' + row.realNo + '\',\'' + 71 + '\',\'' + row.orderNo + '\',\'' + row.receiptNo + '\',\'' + row.times + '\',\'' + row.patientId + '\',\'' + row.name + '\')"><i class="glyphicon glyphicon-send"></i></button>';
  285. str += '<button type="button" class="registration-no-color-foot-button" title="详细" onclick="prescriptionDetail(\'' + row.realNo + '\',\'' + 71 + '\',\'' + row.orderNo + '\',\'' + row.receiptNo + '\',\'' + row.times + '\',\'' + row.patientId + '\')"><i class="fa fa-plus"></i></button>';
  286. }
  287. return str;
  288. }
  289. }
  290. ],
  291. onClickRow: function (row) {
  292. if (sendRefundGroup == 1) {
  293. fitfymx(row.patientId, row.times, row.receiptNo, row.orderNo, row.groupNo);
  294. }
  295. },
  296. responseHandler: function (res) {
  297. if (res == '401' || res == 401) {
  298. window.location.href = '/thmz/login/view'
  299. return;
  300. }
  301. var ress = eval(res);
  302. if (ress.code == -1) {
  303. if (ress.message != null && ress.message != '') {
  304. new PNotify({
  305. title: '错误提示',
  306. text: ress.message,
  307. type: 'error',
  308. hide: true,
  309. styling: 'bootstrap3'
  310. });
  311. }
  312. return {
  313. "total": 0,//总页数
  314. "rows": {} //数据
  315. };
  316. }
  317. return {
  318. "total": ress.total,//总页数
  319. "rows": ress.data //数据
  320. };
  321. },
  322. });
  323. }
  324. /**
  325. * 打印注射卡口服药品
  326. */
  327. function printInjectionOralMedicine(patientId, orderNo, realNo, times, receiptNo) {
  328. var tem = {
  329. patientId: patientId,
  330. orderNo: orderNo,
  331. realNo: realNo,
  332. times: times,
  333. receiptNo: receiptNo,
  334. groupNo: 71
  335. };
  336. $.ajax({
  337. type: "POST",
  338. url: '/thmz/getPrintInjectionData',
  339. contentType: "application/json;charset=UTF-8",
  340. dataType: "json",
  341. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  342. data: JSON.stringify(tem),
  343. success: function (res) {
  344. if (res == '401' || res == 401) {
  345. window.location.href = '/thmz/login/view'
  346. return;
  347. }
  348. if (res.code == 0) {
  349. var injections = new Array();//注射液
  350. var drugs = new Array();//普通药品
  351. for (let i = 0; i < res.data.length; i++) {
  352. if (res.data[i].classCode == 2 || res.data[i].classCode == 7) {//给药方式 2:输液、雾化吸入、副药等等 7:注射、皮试、副药等等
  353. injections[injections.length] = res.data[i];
  354. } else if (res.data[i].classCode != 6) {//给药方式 6:领药 9:外用、局麻、喷用等等
  355. drugs[drugs.length] = res.data[i];
  356. }
  357. }
  358. if (injections.length == 0 && drugs.length == 0) {
  359. return errorMesageSimaple('当前处方,无需打印注射单和标签');
  360. }
  361. setPrint();
  362. if (injections.length > 0) {
  363. $(".zsd_two_tr").remove();
  364. $(".zsd_one_tr").remove();
  365. $(".zsd_yp_tr").remove();
  366. $("#dateTime").html(format(new Date(), "yyyy-MM-dd HH:mm:ss"));
  367. var sex = '';
  368. if (res.data[0].sex == 1) {
  369. sex = '男';
  370. } else if (res.data[0].sex == 2) {
  371. sex = '女';
  372. } else {
  373. sex = '未知';
  374. }
  375. var patientInfoHtm = '<tr class="zsd_one_tr">\n' +
  376. ' <td style="vertical-align: middle !important;width: 35px;text-align: center;"\n' +
  377. ' valign="top">姓名\n' +
  378. ' </td>\n' +
  379. ' <td style="vertical-align: middle !important;width: 75px;">\n' + res.data[0].name +
  380. ' </td>\n' +
  381. ' <td style="vertical-align: middle !important;width: 55px;text-align: center;">\n' +
  382. ' 性别\n' +
  383. ' </td>\n' +
  384. ' <td style="vertical-align: middle !important;width: 45px;text-align: left;">\n' + sex +
  385. ' </td>\n' +
  386. ' <td style="vertical-align: middle !important;width: 55px;text-align: center;">\n' +
  387. ' 年龄\n' +
  388. ' </td>\n' +
  389. ' <td style="vertical-align: middle !important;width: 55px;text-align: left;">\n' + res.data[0].age +
  390. ' </td>\n' +
  391. ' <td style="vertical-align: middle !important;width: 65px;text-align: center;">\n' +
  392. ' ID号\n' +
  393. ' </td>\n' +
  394. ' <td style="vertical-align: middle !important;width: 55px;text-align: left;">\n' + res.data[0].patientId +
  395. ' </td>\n' +
  396. ' <td style="vertical-align: middle !important;width: 55px;text-align: center;">\n' +
  397. ' 诊断\n' +
  398. ' </td>\n' +
  399. ' <td style="vertical-align: middle !important;width: 135px;text-align: left;">\n' + res.data[0].icdText +
  400. ' </td>\n' +
  401. ' <td style="vertical-align: middle !important;width: 55px;text-align: center;">\n' +
  402. ' 医生\n' +
  403. ' </td>\n' +
  404. ' <td style="vertical-align: middle !important;width: 55px;text-align: left;">\n' + res.data[0].employeeName +
  405. ' </td>\n' +
  406. ' </tr>';
  407. $('#zsd_one').prepend(patientInfoHtm);
  408. var zsdYpHtm = '';
  409. for (let i = 0; i < injections.length; i++) {
  410. let data = injections[i];
  411. let manufactoryName = (data.manufactoryName == null || data.manufactoryName == '') ? '' : '(' + data.manufactoryName + ')';
  412. let groupOrder = (data.groupOrder == '' || data.groupOrder == null) ? data.chargeItemCode : data.groupOrder;
  413. zsdYpHtm += '<tr class="zsd_yp_tr">\n' +
  414. ' <td>&nbsp;&nbsp;</td>\n' +
  415. ' <td style="vertical-align: middle !important;width: 10px;text-align: center;">\n' + groupOrder +
  416. ' </td>\n' +
  417. ' <td style="vertical-align: middle !important;width: 200px;text-align: center;">\n' + data.drugname + manufactoryName +
  418. ' </td>\n' +
  419. ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.drugQuan +
  420. ' </td>\n' +
  421. ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.drugUnitName +
  422. ' </td>\n' +
  423. ' <td style="vertical-align: middle !important;width: 120px;text-align: center;">\n' + data.printName +
  424. ' </td>\n' +
  425. ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.frequency +
  426. ' </td>\n' +
  427. ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.orderDays +
  428. ' </td>\n' +
  429. ' <td style="vertical-align: middle !important;width: 120px;text-align: center;">\n' + data.specification +
  430. ' </td>\n' +
  431. ' </tr>';
  432. }
  433. $('#zsd_yp').append(zsdYpHtm);
  434. var htm = '';
  435. for (let i = 0; i < 10; i++) {
  436. htm += '<tr class="zsd_two_tr">\n' +
  437. ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">&nbsp;&nbsp;月&nbsp;&nbsp;日</td>\n' +
  438. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  439. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  440. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  441. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  442. ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">&nbsp;&nbsp;月&nbsp;&nbsp;日</td>\n' +
  443. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  444. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  445. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  446. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  447. ' </tr>';
  448. }
  449. $('#zsd_two').append(htm);
  450. LODOP = getLodop();
  451. LODOP.PRINT_INITA(6, 0, "210mm", "148mm", "泰和医院门、急诊注射单");
  452. LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
  453. //设置默认打印机
  454. LODOP.SET_PRINTER_INDEX(zsdPrintIndex);
  455. LODOP.SET_PRINT_PAGESIZE(1, '210mm', '148mm', "CreateCustomPage");
  456. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "210mm");
  457. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "148mm");
  458. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "泰和医院门、急诊注射单");//对新建的纸张重命名
  459. LODOP.ADD_PRINT_HTM("5mm", "2mm", "210mm", "148mm", $("div[id='print_view_zsd']").html());
  460. LODOP.PRINT();
  461. //LODOP.PREVIEW();
  462. }
  463. if (drugs.length > 0) {
  464. LODOP = getLodop();
  465. LODOP.PRINT_INITA(6, 0, "80mm", "60mm", "患者药品标签");
  466. LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
  467. //设置默认打印机
  468. LODOP.SET_PRINTER_INDEX(bqPrintIndex);
  469. LODOP.SET_PRINT_PAGESIZE(1, '80mm', '60mm', "CreateCustomPage");
  470. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "80mm");
  471. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "60mm");
  472. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "患者药品标签");//对新建的纸张重命名
  473. for (let j = 0; j < drugs.length; j++) {
  474. for (var key in drugs[j]) {
  475. $("#ypbq_" + key + "").attr("value", drugs[j][key]);
  476. }
  477. $("#dataTime").attr("value", format(new Date(), "yyyy-MM-dd HH:mm"));
  478. $("#ypbq_sex").attr("value", getSex(drugs[0].sex));
  479. $("#ypbq_age").attr("value", drugs[0].age);
  480. $("#NO").attr("value", j + 1 + "/" + drugs.length);
  481. //每次用量计算 通过一次剂量单位截取同单位的最小药品规格
  482. //drugs[j].specification.slice();
  483. let weight = (drugs[j].weight == '' || drugs[j].weight == null) ? drugs[j].volum : drugs[j].weight;
  484. $("#ypbq_comm").attr("value", drugs[j].comm + ',每次' + drugs[j].drugQuan / weight + drugs[j].miniUnitName);
  485. LODOP.ADD_PRINT_HTM("5mm", "5mm", "RightMargin:5mm", "BottomMargin:5mm", $("div[id='print_view_bq']").html());
  486. LODOP.NewPage();//下一页
  487. }
  488. LODOP.PRINT();
  489. //LODOP.PREVIEW();
  490. }
  491. } else {
  492. errorMesage(res);
  493. }
  494. }
  495. });
  496. }
  497. /**
  498. * 返回性别
  499. */
  500. function getSex(code) {
  501. var sex = '';
  502. if (code == 1) {
  503. sex = '男';
  504. } else if (code == 2) {
  505. sex = '女';
  506. } else {
  507. sex = '未知';
  508. }
  509. return sex;
  510. }
  511. /**
  512. * 构建列表查询参数
  513. * @param params
  514. * @returns {{mzChargeDetail: {patientId: string | number | string[] | undefined | jQuery, warnDept: string | number | string[] | undefined | jQuery, doctorCode: string | number | string[] | undefined | jQuery, name: string | number | string[] | undefined | jQuery, payMark: number}, beginTime: Date, endTime: Date, pageSize: *, pageIndex: number}}
  515. */
  516. function queryParams(params) {
  517. var rePortRangeArr = getRePortRangeArr();
  518. var temp = {
  519. pageSize: params.limit, //页面大小
  520. pageIndex: params.offset / params.limit, //页码
  521. beginDate: rePortRangeArr[0],
  522. endDate: rePortRangeArr[1],
  523. name: $("#nameSearch").val() == "" ? null : $("#nameSearch").val(),
  524. patientId: $("#patientId").val() == "" ? null : $("#patientId").val(),
  525. confirmFlag: $("#confirmFlagSearch").val(),
  526. realNo: $("#realNoSearch").val() == "" ? null : $("#realNoSearch").val(),
  527. groupNoOut: '71'
  528. };
  529. return temp;
  530. };
  531. /**
  532. * 获取时间选择器的时间数组
  533. * @returns {string[]}
  534. */
  535. function getRePortRangeArr() {
  536. var rePortRange = $('#reportrange span').html();
  537. var rePortRangeArr = rePortRange.split(" - ");
  538. rePortRangeArr[0] = rePortRangeArr[0] + " 00:00:00"
  539. rePortRangeArr[1] = rePortRangeArr[1] + " 23:59:59"
  540. return rePortRangeArr;
  541. }
  542. /**
  543. * 清空查询条件
  544. */
  545. function cleanParams() {
  546. $('#reportrange span').html(moment().format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD'));
  547. $("#nameSearch").val(null);
  548. $("#patientId_or_cardNo").val(null);
  549. $("#patientIdSearch").val(null);
  550. $("#realNoSearch").val(null);
  551. var sendRefundGroup = getIndex("send_refund_group");
  552. sendRefundGroup == 0 ? $("#confirmFlagSearch").selectpicker('val', 0) : $("#confirmFlagSearch").selectpicker('val', 2);
  553. $("#confirmFlagSearch").selectpicker('refresh');
  554. $("#patientId_or_cardNo").focus();
  555. }
  556. /**
  557. * 查询病人处方明细
  558. */
  559. var $table;
  560. function prescriptionDetail(realNo, groupNo, orderNo, receiptNo, times, patientId) {
  561. var temp = {
  562. groupNo: groupNo,
  563. realNo: realNo,
  564. orderNo: orderNo,
  565. receiptNo: receiptNo,
  566. times: times,
  567. patientId: patientId
  568. };
  569. $('#tb_table_right').bootstrapTable("destroy");
  570. $table = $('#tb_table_right').bootstrapTable({
  571. url: '/thmz/getFyclPrescriptionDetail', //请求后台的URL(*)
  572. method: 'POST', //请求方式(*)
  573. striped: true, //是否显示行间隔色
  574. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  575. pagination: true, //是否显示分页(*)
  576. sortable: true, //是否启用排序
  577. sortOrder: "asc", //排序方式
  578. queryParams: JSON.stringify(temp), //传递参数(*)
  579. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  580. pageNumber: 1, //初始化加载第一页,默认第一页
  581. pageSize: 10, //每页的记录行数(*)
  582. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  583. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  584. strictSearch: true,
  585. showColumns: false, //是否显示所有的列
  586. showRefresh: false, //是否显示刷新按钮
  587. minimumCountColumns: 2, //最少允许的列数
  588. clickToSelect: true, //是否启用点击选中行
  589. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  590. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  591. cardView: false, //是否显示详细视图
  592. detailView: false,
  593. //rowStyle:rowStyle,//通过自定义函数设置行样式
  594. ajaxOptions: {
  595. headers: {
  596. 'Accept': 'application/json',
  597. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  598. }
  599. },
  600. columns: [
  601. {
  602. field: 'location',
  603. title: '货位号',
  604. align: "center",
  605. valign: 'middle'
  606. }, {
  607. field: 'drugname',
  608. title: '品名',
  609. align: "center",
  610. valign: 'middle',
  611. }, {
  612. field: 'specification',
  613. title: '规格',
  614. align: "center",
  615. valign: 'middle',
  616. }, {
  617. field: 'quantity',
  618. title: '<span style="color: green">数量</span>',
  619. align: "center",
  620. valign: 'middle',
  621. formatter: function (value, row, index) {
  622. return '<span style="color: green">' + value + '</span>'
  623. }
  624. }, {
  625. field: 'ypUnitName',
  626. title: '单位',
  627. align: "center",
  628. valign: 'middle',
  629. }, {
  630. field: 'abbrName',
  631. title: '生产厂家',
  632. align: "center",
  633. valign: 'middle',
  634. }, {
  635. field: 'drugQuan',
  636. title: '一次剂量',
  637. align: "center",
  638. valign: 'middle',
  639. }, {
  640. field: 'drugUnitName',
  641. title: '单位',
  642. align: "center",
  643. valign: 'middle',
  644. }, {
  645. field: 'frequency',
  646. title: '频率',
  647. align: "center",
  648. valign: 'middle',
  649. }, {
  650. field: 'decAmount',
  651. title: '<span style="color: red">退药量</span>',
  652. align: "center",
  653. valign: 'middle',
  654. formatter: function (value, row, index) {
  655. return value == null ? '<span style="color: red">-</span>' : '<span style="color: red">' + value + '</span>'
  656. }
  657. }, {
  658. field: 'printName',
  659. title: '给药方式',
  660. align: "center",
  661. valign: 'middle',
  662. }, {
  663. field: 'unitPrice',
  664. title: '单价',
  665. align: "center",
  666. valign: 'middle',
  667. }
  668. /* , {
  669. field: 'drug_flag',//毒麻标志:1:毒;2:麻;3:精神1;4:精神2
  670. title: '<span style="color: red">毒麻</span>',
  671. align: "center",
  672. valign: 'middle',
  673. formatter: function (value, row, index) {
  674. if(value == 1){
  675. return '<span style="color: red">毒</span>'
  676. }else if(value == 2){
  677. return '<span style="color: red">麻</span>'
  678. }else if(value == 3){
  679. return '<span style="color: red">精神1</span>'
  680. }else if(value == 3){
  681. return '<span style="color: red">精神2</span>'
  682. }else{
  683. return '<span style="color: red">-</span>'
  684. }
  685. }
  686. }*/
  687. , {
  688. field: 'stockAmount',
  689. title: '当前库存',
  690. align: "center",
  691. valign: 'middle',
  692. }
  693. ],
  694. responseHandler: function (res) {
  695. if (res == '401' || res == 401) {
  696. window.location.href = '/thmz/login/view'
  697. return;
  698. }
  699. var ress = eval(res);
  700. if (ress.data.length > 0) {
  701. $("#employeeNameLabel").val(ress.data[0].employeeName);
  702. $("#warnDeptNameLabel").val(ress.data[0].warnDeptName);
  703. $("#chargeDateLabel").val(format(ress.data[0].chargeDate, "yyyy-MM-dd HH:mm:ss"));
  704. $("#icdTextLabel").val(ress.data[0].icdText);
  705. }
  706. if (ress.code == -1) {
  707. if (ress.message != null && ress.message != '') {
  708. new PNotify({
  709. title: '错误提示',
  710. text: ress.message,
  711. type: 'error',
  712. hide: true,
  713. styling: 'bootstrap3'
  714. });
  715. }
  716. return {
  717. "total": 0,//总页数
  718. "rows": {} //数据
  719. };
  720. }
  721. return {
  722. "total": ress.data.length,//总页数
  723. "rows": ress.data //数据
  724. };
  725. },
  726. });
  727. $("#cfxxModal").modal();
  728. }
  729. /**
  730. * 查询病人处方药品明细
  731. */
  732. function fitfymx(patientId, times, receiptNo, orderNo, groupNoOut) {
  733. var temp = {
  734. patientId: patientId,
  735. times: times,
  736. receiptNo: receiptNo,
  737. orderNo: orderNo,
  738. groupNoOut: groupNoOut,
  739. confirmFlag: $("#confirmFlagSearch").val()
  740. };
  741. $('#tb_table_right_ty').bootstrapTable("destroy");
  742. $table = $('#tb_table_right_ty').bootstrapTable({
  743. url: '/thmz/getRefundYpMx', //请求后台的URL(*)
  744. method: 'post', //请求方式(*)
  745. striped: true, //是否显示行间隔色
  746. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  747. pagination: true, //是否显示分页(*)
  748. sortable: true, //是否启用排序
  749. sortOrder: "asc", //排序方式
  750. queryParams: temp, //传递参数(*)
  751. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  752. pageNumber: 1, //初始化加载第一页,默认第一页
  753. pageSize: 10, //每页的记录行数(*)
  754. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  755. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  756. strictSearch: true,
  757. showColumns: false, //是否显示所有的列
  758. showRefresh: false, //是否显示刷新按钮
  759. minimumCountColumns: 2, //最少允许的列数
  760. clickToSelect: true, //是否启用点击选中行
  761. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  762. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  763. cardView: false, //是否显示详细视图
  764. detailView: false,
  765. paginationDetailHAlign: ' hiddenPage',//隐藏分页
  766. //rowStyle:rowStyle,//通过自定义函数设置行样式
  767. ajaxOptions: {
  768. headers: {
  769. 'Accept': 'application/json',
  770. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  771. }
  772. },
  773. columns: [
  774. {
  775. field: 'drugname',
  776. title: '品名',
  777. align: "center",
  778. valign: 'middle',
  779. formatter: function (value, row, index) {
  780. if (value != null && value != "") {
  781. return value.replace("()", "");
  782. }
  783. return "";
  784. }
  785. }, {
  786. field: 'specification',
  787. title: '规格',
  788. align: "center",
  789. valign: 'middle',
  790. }, {
  791. field: 'quantity',
  792. title: '数量',
  793. align: "center",
  794. valign: 'middle',
  795. }, {
  796. field: 'unit_price',
  797. title: '单价',
  798. align: "center",
  799. valign: 'middle',
  800. }, {
  801. field: 'dec_amount',
  802. title: '<span style="color: red">退药量</span>',
  803. align: "center",
  804. valign: 'middle',
  805. formatter: function (value, row, index) {
  806. return '<span style="color: red">' + value + '</span>'
  807. }
  808. }
  809. ],
  810. responseHandler: function (res) {
  811. if (res == '401' || res == 401) {
  812. window.location.href = '/thmz/login/view'
  813. return;
  814. }
  815. var ress = eval(res);
  816. if (ress.code == -1) {
  817. if (ress.message != null && ress.message != '') {
  818. new PNotify({
  819. title: '错误提示',
  820. text: ress.message,
  821. type: 'error',
  822. hide: true,
  823. styling: 'bootstrap3'
  824. });
  825. }
  826. return {
  827. "total": 0,//总页数
  828. "rows": {} //数据
  829. };
  830. }
  831. return {
  832. "total": ress.data.length,//总页数
  833. "rows": ress.data //数据
  834. };
  835. },
  836. });
  837. }
  838. /**
  839. * 退药处理
  840. */
  841. function saveRefundMedicine() {
  842. if ($table) {
  843. return errorMesageSimaple('退药处方可退药药品为空');
  844. }
  845. var data = $table.bootstrapTable('getData');
  846. var datas = [];
  847. var i = 0;
  848. data.forEach(function (item, index, arr) {
  849. if (item.dec_amount != 0) {
  850. var tem = {
  851. "patientId": item.patient_id,
  852. "times": item.times,
  853. "receiptNo": item.receipt_no,
  854. "orderNo": item.order_no,
  855. "realNo": item.real_no,
  856. "decAmount": item.dec_amount,
  857. "unitPrice": item.unit_price,
  858. "chargeCode": item.charge_item_code,
  859. "serial": item.serial,
  860. "groupNo": item.group_no,
  861. "itemNo": item.item_no,
  862. "serialNo": item.serial_no
  863. }
  864. datas[i] = tem;
  865. i++;
  866. }
  867. })
  868. if (datas.length == 0) {
  869. return errorMesageSimaple('退药处方可退药药品为空');
  870. }
  871. if (!confirm("确定要对当前处方的药品进行退药处理吗?")) {
  872. return;
  873. }
  874. $.ajax({
  875. type: "POST",
  876. url: '/thmz/refundMedicineProcessing',
  877. contentType: "application/json;charset=UTF-8",
  878. dataType: "json",
  879. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  880. data: JSON.stringify(datas),
  881. success: function (res) {
  882. if (res == '401' || res == 401) {
  883. window.location.href = '/thmz/login/view'
  884. return;
  885. }
  886. if (res.code == 0) {
  887. successMesage(res);
  888. initTbTable();
  889. } else {
  890. errorMesage(res);
  891. }
  892. }
  893. });
  894. }
  895. /**
  896. * 叫号
  897. * @param patientId
  898. * @param name
  899. */
  900. function callNumber(patientId) {
  901. $.ajax({
  902. type: "GET",
  903. url: '/thmz/callNumber?patientId='+patientId,
  904. contentType: "application/json;charset=UTF-8",
  905. dataType: "json",
  906. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  907. success: function (res) {
  908. if (res == '401' || res == 401) {
  909. window.location.href = '/thmz/login/view'
  910. return;
  911. }
  912. if (res.code == 0) {
  913. successMesage(res);
  914. } else {
  915. errorMesage(res);
  916. }
  917. }
  918. });
  919. }
  920. /**
  921. * 查询默认打印机
  922. */
  923. function setPrint() {
  924. if (zsdPrintIndex >= 0 && bqPrintIndex >= 0) {
  925. return;
  926. }
  927. $.ajax({
  928. type: "GET",
  929. url: '/thmz/getLastDispensingWindowsByCurrentUser',
  930. contentType: "application/json;charset=UTF-8",
  931. dataType: "json",
  932. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  933. async: false,
  934. success: function (res) {
  935. if (res == '401' || res == 401) {
  936. window.location.href = '/thmz/login/view'
  937. return;
  938. }
  939. if (res.code == 0) {
  940. zsdPrintIndex = res.data.zsdPrintIndex;
  941. bqPrintIndex = res.data.bqPrintIndex;
  942. } else {
  943. zsdPrintIndex = -1;
  944. bqPrintIndex = -1;
  945. }
  946. }
  947. });
  948. }