west_pharmacy_dispensing.js 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386
  1. //@ sourceURL=west_pharmacy_dispensing.js
  2. var LODOP; //声明为全局变量
  3. var printIndex;
  4. var mzCfPrintIndex;
  5. var ekCfPrintIndex;
  6. var jzCfPrintIndex;
  7. $(function () {
  8. openSocket("PY");
  9. $("input").each(function () {
  10. this.onkeydown = function (e) { // 监听键盘事件
  11. let theEvent = window.event || e;
  12. let code = theEvent.keyCode || theEvent.which;
  13. if (code == 13) {//回车事件
  14. $("#btn_query").click(); //触发搜索按钮点击事件
  15. }
  16. }
  17. });
  18. init_daterangepicker();
  19. initTable();
  20. $('#dispensingStatusSearch').selectpicker('refresh');
  21. $("#btn_query").click(function (t) {
  22. initTable();
  23. });
  24. //重置查询参数
  25. $('#btn_clean').click(function () {
  26. cleanParams();
  27. });
  28. });
  29. /**
  30. * 获取按钮组选择的下标
  31. * @param id
  32. * @returns {number}
  33. */
  34. function getIndex(id) {
  35. var index = 0;
  36. var item = $("#" + id).find("button");
  37. for (var i = 0; i <= item.length; i++) {
  38. if ($(item[i]).hasClass("btn-primary")) {
  39. index = i;
  40. break;
  41. }
  42. }
  43. return index;
  44. }
  45. /**
  46. * 查询处方信息
  47. */
  48. function initTable() {
  49. $('#prescription_table').bootstrapTable("destroy");
  50. $('#prescription_table').bootstrapTable({
  51. url: '/thmz/listMzChargeOrder', //请求后台的URL(*)
  52. method: 'post', //请求方式(*)
  53. toolbar: '#toolbar', //工具按钮用哪个容器
  54. striped: true, //是否显示行间隔色
  55. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  56. pagination: true, //是否显示分页(*)
  57. sortable: true, //是否启用排序
  58. sortOrder: "asc", //排序方式
  59. queryParams: queryParams, //传递参数(*)
  60. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  61. pageNumber: 1, //初始化加载第一页,默认第一页
  62. pageSize: 10, //每页的记录行数(*)
  63. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  64. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  65. strictSearch: true,
  66. showColumns: false, //是否显示所有的列
  67. showRefresh: false, //是否显示刷新按钮
  68. minimumCountColumns: 2, //最少允许的列数
  69. clickToSelect: true, //是否启用点击选中行
  70. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  71. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  72. cardView: false, //是否显示详细视图
  73. detailView: false,
  74. //rowStyle:rowStyle,//通过自定义函数设置行样式
  75. ajaxOptions: {
  76. headers: {
  77. 'Accept': 'application/json',
  78. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  79. }
  80. },
  81. columns: [
  82. {
  83. field: 'no',
  84. title: '序号',
  85. align: "center",
  86. valign: 'middle',
  87. width: 40,
  88. formatter: function (value, row, index) {
  89. return index + 1;
  90. }
  91. }, {
  92. field: 'patientId',
  93. title: '病人ID',
  94. align: "center",
  95. valign: 'middle'
  96. }, {
  97. field: 'name',
  98. title: '病人姓名',
  99. align: "center",
  100. valign: 'middle'
  101. }, {
  102. field: 'realNo',
  103. title: '流水号',
  104. align: "center",
  105. valign: 'middle'
  106. }, {
  107. field: 'orderNo',
  108. title: '处方号',
  109. align: "center",
  110. valign: 'middle'
  111. }, {
  112. field: 'chargeDate',
  113. title: '缴费时间',
  114. align: "center",
  115. valign: 'middle',
  116. formatter: function (value, row, index) {
  117. return value == null ? "-" : format(value, "yyyy-MM-dd HH:mm:ss");
  118. }
  119. }, {
  120. title: '操作',
  121. field: 'op',
  122. align: "center",
  123. valign: 'middle',
  124. formatter: function (value, row, index) {
  125. var str = '<button type="button" class="registration-no-color-foot-button" title="打印" onclick="printPrescription(\'' + row.patientId + '\',\'' + row.times + '\')" style="color: #35D082;"><i class="fa fa-print"></i></button>';
  126. str += '<button type="button" class="registration-no-color-foot-button" title="配药完成" onclick="dispensingDispose(\'' + row.patientId + '\',\'' + row.orderNo + '\',\'' + row.name + '\',\'' + row.realNo + '\',\'' + row.chargeDate + '\')"><i class="fa fa-check-square-o"></i></button>';
  127. return str;
  128. }
  129. }
  130. ],
  131. responseHandler: function (res) {
  132. if (res == '401' || res == 401) {
  133. window.location.href = '/thmz/login/view'
  134. return;
  135. }
  136. var ress = eval(res);
  137. if (ress.code == -1) {
  138. if (ress.message != null && ress.message != '') {
  139. new PNotify({
  140. title: '错误提示',
  141. text: ress.message,
  142. type: 'error',
  143. hide: true,
  144. styling: 'bootstrap3'
  145. });
  146. }
  147. return {
  148. "total": 0,//总页数
  149. "rows": {} //数据
  150. };
  151. }
  152. return {
  153. "total": ress.data.length,//总页数
  154. "rows": ress.data //数据
  155. };
  156. },
  157. });
  158. }
  159. /**
  160. * 构建列表查询参数
  161. * @param params
  162. */
  163. function queryParams(params) {
  164. var rePortRangeArr = getRePortRangeArr();
  165. var temp = {
  166. /* pageSize: params.limit, //页面大小
  167. pageIndex: params.offset / params.limit, //页码*/
  168. beginTime: new Date(rePortRangeArr[0]),
  169. endTime: new Date(rePortRangeArr[1]),
  170. mzChargeDetail: {
  171. patientId: $("#patientIdSearch").val() == "" ? null : $("#patientIdSearch").val(),
  172. name: $("#nameSearch").val() == "" ? null : $("#nameSearch").val(),
  173. confirmFlag: $("#dispensingStatusSearch").val() == "" ? null : $("#dispensingStatusSearch").val(),
  174. payMark: 0, //已收费
  175. groupNo: 71, //门诊西药房
  176. windowsNoYf: '04', //4号窗口
  177. groupType: '1' //西药
  178. }
  179. };
  180. return temp;
  181. };
  182. /**
  183. * 配药处理
  184. */
  185. function dispensingDispose(patientId, orderNo, name, realNo, chargeDate) {
  186. if (!confirm("确定要对当前处方进行配药处理吗?")) {
  187. return;
  188. }
  189. var tem = {
  190. "patientId": patientId,
  191. "orderNo": orderNo,
  192. "realNo": realNo,
  193. "chargeDate": chargeDate,
  194. "name": name
  195. }
  196. $.ajax({
  197. type: "POST",
  198. url: '/thmz/dispensingMedicineProcessing',
  199. contentType: "application/json;charset=UTF-8",
  200. dataType: "json",
  201. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  202. data: JSON.stringify(tem),
  203. success: function (res) {
  204. if (res == '401' || res == 401) {
  205. window.location.href = '/thmz/login/view'
  206. return;
  207. }
  208. if (res.code == 0) {
  209. successMesage(res);
  210. initTable();
  211. } else {
  212. errorMesage(res);
  213. }
  214. }
  215. });
  216. }
  217. /**
  218. * 打印处方
  219. */
  220. function printPrescription(patientId, times) {
  221. var tem = {
  222. patientId: patientId,
  223. times: times,
  224. groupNo: 71
  225. };
  226. $.ajax({
  227. type: "POST",
  228. url: '/thmz/getPrintPrescriptionData',
  229. contentType: "application/json;charset=UTF-8",
  230. dataType: "json",
  231. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  232. data: JSON.stringify(tem),
  233. success: function (res) {
  234. if (res == '401' || res == 401) {
  235. window.location.href = '/thmz/login/view'
  236. return;
  237. }
  238. if (res.code == 0) {
  239. successMesage(res);
  240. setPrint();//初始化默认打印机
  241. $('#print_view input').attr("value", "");
  242. if (null != res.data) {
  243. for (var key in res.data) {
  244. $("#" + key + "").attr("value", res.data[key]);
  245. }
  246. }
  247. var list = res.data.list;
  248. /*if (list[0].drugFlag == 2 || list[0].drugFlag == 3) {
  249. $('#drugFlag').attr("value", "麻、精一");
  250. } else if (list[0].drugFlag == 4) {
  251. $('#drugFlag').attr("value", "精二");
  252. }else */
  253. if (res.data.warnDeptName.indexOf("儿科") != -1) {
  254. $('#drugFlag').attr("value", "儿科");
  255. printIndex = ekCfPrintIndex;
  256. } else if (res.data.warnDeptName.indexOf("急诊") != -1) {
  257. $('#drugFlag').attr("value", "急诊");
  258. printIndex = jzCfPrintIndex;
  259. } else if (list[0].drugFlag == '' || list[0].drugFlag == null || list[0].drugFlag == 6) {
  260. $('#drugFlag').attr("value", "普通");
  261. printIndex = mzCfPrintIndex;
  262. }
  263. $('#priceTime').attr("value", format(list[0].priceTime, "yyyy-MM-dd HH:mm"));
  264. $('#employeeName').attr("value", res.data.employeeName + "/" + res.data.employeeCode);
  265. if (res.data.sex == 1) {
  266. $('#sex').attr("value", '男');
  267. } else if (res.data.sex == 2) {
  268. $('#sex').attr("value", '女');
  269. } else {
  270. $('#sex').attr("value", '未知');
  271. }
  272. if(res.data.ybCardNo == null || res.data.ybCardNo == ''){
  273. $('#ybCardNo').attr("value", res.data.icCardNo);
  274. }
  275. var tr = '';
  276. for (let i = 0; i < list.length; i++) {
  277. var number = i + 1;
  278. let manufactoryName = list[i].manufactoryName == null || list[i].manufactoryName == '' ? '' : '(' + list[i].manufactoryName + ')';
  279. tr += '<tr>\n' +
  280. ' <td style="width: 10px;" align="left" valign="top">' + number + "." +
  281. '</td>\n' +
  282. ' <td style="vertical-align: middle !important;width: 260px;">\n' + list[i].drugName + manufactoryName +
  283. ' </td>\n' +
  284. ' <td style="vertical-align: middle !important;width: 120px;text-align: right;">' + list[i].specification +
  285. '</td>\n' +
  286. ' <td style="vertical-align: middle !important;width: 20px;text-align: right;">×</td>\n' +
  287. ' <td style="vertical-align: middle !important;width: 20px;text-align: right;">' + list[i].quantity +
  288. '</td>\n' +
  289. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;">' + list[i].ypUnitName +
  290. '</td>\n' +
  291. ' </tr>\n' +
  292. ' <tr>\n' +
  293. ' <td colspan="5" style="vertical-align: middle !important;text-align: right;">用法:' + list[i].drugQuan + list[i].drugUnitName + '/次 ' + list[i].frequency + ' ' + list[i].printName +
  294. '</td>\n' +
  295. ' </tr>';
  296. }
  297. $('#tbody_yp').html(tr);
  298. if (list.length < 5) {
  299. $('#yxwk').remove();
  300. $('#div_yp').append('<span id="yxwk">以下为空</span>');
  301. }
  302. LODOP = getLodop();
  303. LODOP.PRINT_INITA(6, 0, "140mm", "202mm", "泰和医院处方笺");
  304. LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
  305. //设置默认打印机
  306. LODOP.SET_PRINTER_INDEX(printIndex);
  307. LODOP.SET_PRINT_PAGESIZE(1, '140mm', '202mm', "CreateCustomPage");
  308. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "140mm");
  309. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "202mm");
  310. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "门诊处方笺");//对新建的纸张重命名
  311. LODOP.ADD_PRINT_HTM("5mm", "5mm", "140mm", "202mm", $("div[id='print_view']").html());
  312. // LODOP.NewPage();//下一页
  313. LODOP.PRINT();
  314. //LODOP.PREVIEW();
  315. } else {
  316. errorMesage(res);
  317. }
  318. }
  319. });
  320. }
  321. /**
  322. * 获取时间选择器的时间数组
  323. * @returns {string[]}
  324. */
  325. function getRePortRangeArr() {
  326. var rePortRange = $('#reportrange span').html();
  327. var rePortRangeArr = rePortRange.split(" - ");
  328. rePortRangeArr[0] = rePortRangeArr[0] + " 00:00:00"
  329. rePortRangeArr[1] = rePortRangeArr[1] + " 23:59:59"
  330. return rePortRangeArr;
  331. }
  332. /**
  333. * 清空查询条件
  334. */
  335. function cleanParams() {
  336. $('#reportrange span').html(moment().format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD'));
  337. $("#patientIdSearch").val(null);
  338. $("#nameSearch").val(null);
  339. $("#dispensingStatusSearch").val(0);
  340. $("#dispensingStatusSearch").selectpicker('refresh');
  341. }
  342. /**
  343. * 查询默认打印机
  344. */
  345. function setPrint() {
  346. if (mzCfPrintIndex >= 0 && ekCfPrintIndex >= 0 && jzCfPrintIndex >= 0) {
  347. return;
  348. }
  349. $.ajax({
  350. type: "GET",
  351. url: '/thmz/getLastDispensingWindowsByCurrentUser',
  352. contentType: "application/json;charset=UTF-8",
  353. dataType: "json",
  354. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  355. async: false,
  356. success: function (res) {
  357. if (res == '401' || res == 401) {
  358. window.location.href = '/thmz/login/view'
  359. return;
  360. }
  361. if (res.code == 0) {
  362. mzCfPrintIndex = res.data.mzCfPrintIndex;
  363. ekCfPrintIndex = res.data.ekCfPrintIndex;
  364. jzCfPrintIndex = res.data.jzCfPrintIndex;
  365. } else {
  366. mzCfPrintIndex = -1;
  367. ekCfPrintIndex = -1;
  368. jzCfPrintIndex = -1;
  369. }
  370. }
  371. });
  372. }