west_pharmacy_send.js 111 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508
  1. //@ sourceURL=west_pharmacy_send.js
  2. var LODOP; //声明为全局变量
  3. var printIndex;
  4. var mzCfPrintIndex = window.localStorage["mzCfPrintIndex"];
  5. var ekCfPrintIndex = window.localStorage["ekCfPrintIndex"];
  6. var jzCfPrintIndex = window.localStorage["jzCfPrintIndex"];
  7. var zsdPrintIndex = window.localStorage["zsdPrintIndex"];
  8. var bqPrintIndex = window.localStorage["bqPrintIndex"];
  9. var fskPrintIndex = window.localStorage["fskPrintIndex"];
  10. var winNo = window.localStorage["winNo"];
  11. var groupNo = window.localStorage["groupNo"];
  12. let coreId // 病人id
  13. let mzHistoryDays = 30 // 门诊历史处方前置天数
  14. let isTyOk = false;
  15. $(function () {
  16. init_daterangepicker();
  17. // 查看门诊历史处方前置天数
  18. mzHistoryDays = parseInt(!initSysParametersByCode('mzHistoryDays') ? '30' : initSysParametersByCode('mzHistoryDays'))
  19. $(".selectpicker").selectpicker({
  20. dropuAuto: false
  21. });
  22. if (groupNo == null || winNo == null) {
  23. return errorMesageSimaple('药房参数未设置,请在发药参数设置中设置');
  24. }
  25. if (groupNo != 71) {
  26. $('#autoCellNumberDiv').hide();
  27. }
  28. openSocket("FY");
  29. $("input").each(function () {
  30. this.onkeydown = function (e) { // 监听键盘事件
  31. let theEvent = window.event || e;
  32. let code = theEvent.keyCode || theEvent.which;
  33. if (code == 13) {//回车事件
  34. $("#btn_query").click(); //触发搜索按钮点击事件
  35. }
  36. }
  37. });
  38. initTbTable();
  39. initDynamicSelect("allMzUnitCode", "unitCode");
  40. //重置查询参数
  41. $('#btn_clean').click(function () {
  42. cleanParams();
  43. });
  44. $('#btn_clean_history').click(function () {
  45. $('#reportRangeList span').html(moment().subtract(mzHistoryDays, 'days').format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD'));
  46. });
  47. $("#btn_query_history").click(function (t) {
  48. callHistoryDetail();
  49. });
  50. $("#btn_query").click(function (t) {
  51. initTbTable();
  52. });
  53. $("#sendAndMatch").click(function (t) {
  54. initTbTable();
  55. });
  56. $("#btn_radiology_send").click(function (t) {
  57. initRadiologyTable();
  58. });
  59. $("#btn_batch_send").click(function (t) {
  60. var rows = $("#tb_table").bootstrapTable('getSelections');
  61. if (rows.length == 0) {
  62. return errorMesageSimaple('请选择你要进行发药处理的处方');
  63. }
  64. var tem = [];
  65. for (let i = 0; i < rows.length; i++) {
  66. let item = rows[i];
  67. item.groupNo = groupNo;
  68. item.chargeDate = null;//后台转换异常,临时赋空
  69. tem.push({
  70. mzChargeDetail: item,
  71. winNo: winNo
  72. });
  73. if (item.confirmFlag != 5 && item.confirmFlag != 0) {
  74. return errorMesageSimaple('包含非未发药处方,发药失败');
  75. }
  76. }
  77. if (!confirm("确定要对选中的处方进行发药处理吗?")) {
  78. return;
  79. }
  80. batchSendMedicineProcessing(tem);
  81. });
  82. $("#btn_ty").click(function (t) {
  83. saveRefundMedicine();
  84. });
  85. $("#btn_cancel_ty").click(function (t) {
  86. saveCancelRefundMedicine();
  87. });
  88. $("#sendDispose").click(function (t) {
  89. let orderNo = $("#orderNoLabel").val();
  90. let receiptNo = $("#receiptNoLabel").val();
  91. let times = $("#timesLabel").val();
  92. let name = $("#nameLabel").val();
  93. let patientId = $("#patientIdLabel").val();
  94. let realNo = $("#realNoLabel").val();
  95. sendMedicineProcessing(realNo, orderNo, receiptNo, times, patientId, name);
  96. });
  97. $("#printSend").click(function (t) {
  98. $('#zydybqModal').modal('hide');
  99. $("#zyypbq_name").attr("value", $("#zydyNameLabel").val());
  100. $("#zyypbq_sex").attr("value", $("#sexLabel").val());
  101. $("#zyypbq_age").attr("value", $("#ageLabel").val());
  102. $("#zyypbq_date").attr("value", $("#dateLabel").val());
  103. $("#zyypbq_comm").text($("#yfLabel").val());
  104. if ($("#syfsLabel").val() == 0) {
  105. $("#zybq_title").text("中药【口服】标签");
  106. } else {
  107. $("#zybq_title").text("中药【外用】标签");
  108. }
  109. LODOP = getLodop();
  110. LODOP.PRINT_INITA(6, 0, "50mm", "30mm", "中药标签");
  111. //设置默认打印机
  112. LODOP.SET_PRINTER_INDEX(bqPrintIndex);
  113. LODOP.SET_PRINT_PAGESIZE(1, '50mm', '30mm', "CreateCustomPage");
  114. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "50mm");
  115. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "30mm");
  116. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "中药标签");//对新建的纸张重命名
  117. LODOP.SET_PRINT_COPIES(parseInt($("#dyslLabel").val()));
  118. LODOP.ADD_PRINT_HTM("2mm", "2mm", "50mm", "30mm", $('#print_view_zybq').html());
  119. LODOP.PRINT();
  120. //LODOP.PREVIEW();
  121. });
  122. });
  123. /**
  124. * 批量发药处理
  125. */
  126. function batchSendMedicineProcessing(tem) {
  127. $("#btn_batch_send").attr("disabled", true);
  128. $.ajax({
  129. type: "POST",
  130. url: '/thmz/batchSendMedicineProcessing',
  131. contentType: "application/json;charset=UTF-8",
  132. dataType: "json",
  133. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  134. data: JSON.stringify(tem),
  135. success: function (res) {
  136. $("#btn_batch_send").attr("disabled", false);
  137. if (res == '401' || res == 401) {
  138. window.location.href = '/thmz/login/view'
  139. return;
  140. }
  141. initTbTable($('#tb_table').bootstrapTable('getOptions').pageNumber);
  142. if (res.code == 0) {
  143. successMesage(res);
  144. } else {
  145. errorMesage(res);
  146. }
  147. },
  148. error: function () {
  149. $("#btn_batch_send").attr("disabled", false);
  150. }
  151. });
  152. }
  153. /**
  154. * 获取按钮组选择的下标
  155. * @param id
  156. * @returns {number}
  157. */
  158. function getIndex(id) {
  159. var index = 0;
  160. var item = $("#" + id).find("button");
  161. for (var i = 0; i <= item.length; i++) {
  162. if ($(item[i]).hasClass("btn-primary")) {
  163. index = i;
  164. break;
  165. }
  166. }
  167. return index;
  168. }
  169. /**
  170. * 设置病人id
  171. */
  172. function setPatientId() {
  173. var patientId_or_cardNo = $("#patientId_or_cardNo").val();
  174. if (patientId_or_cardNo == '') {
  175. return $("#patientId").val("");
  176. }
  177. $.ajax({
  178. type: "GET",
  179. url: '/thmz/getByIcCardNo?icCardNo=' + patientId_or_cardNo,
  180. contentType: "application/json;charset=UTF-8",
  181. dataType: "json",
  182. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  183. success: function (res) {
  184. if (res == '401' || res == 401) {
  185. window.location.href = '/thmz/login/view'
  186. return;
  187. }
  188. if (res.code == 0) {
  189. if (res.data != null) {
  190. $("#patientId").val(res.data.patientId);
  191. } else {
  192. $("#patientId").val(patientId_or_cardNo);
  193. }
  194. }
  195. }
  196. });
  197. }
  198. /**
  199. * 列表类型按钮切换事件
  200. * @param object
  201. * @param realIndex 下标
  202. */
  203. function sendRefundButtonChange(object, realIndex) {
  204. $("#send_refund_group").find("button").each(function (index, element) {
  205. if ($(element).hasClass("btn-primary")) {
  206. $(element).removeClass("btn-primary").addClass("btn-default");
  207. }
  208. });
  209. if (realIndex == 0) {
  210. $("#confirmFlagSearch").empty();
  211. $("#confirmFlagSearch").append("<option value='0' selected>未发药</option>");
  212. $("#confirmFlagSearch").append("<option value='1'>已发药</option>");
  213. $("#confirmFlagSearch").selectpicker('refresh');
  214. $("#tb_table_right_ty").css("display", "none");
  215. $("#return_total_amount").css("display", "none");
  216. $("#btn_ty").addClass("hidden");
  217. $("#btn_cancel_ty").addClass("hidden");
  218. $("#btn_radiology_send").removeClass("hidden");
  219. $("#btn_batch_send").removeClass("hidden");
  220. } else {
  221. $("#confirmFlagSearch").empty();
  222. $("#confirmFlagSearch").append("<option value='2' selected>待退药</option>");
  223. $("#confirmFlagSearch").append("<option value='3'>已退药</option>");
  224. $("#confirmFlagSearch").selectpicker('refresh');
  225. $("#tb_table_right_ty").css("display", "");
  226. $("#btn_ty").removeClass("hidden");
  227. $("#btn_cancel_ty").removeClass("hidden");
  228. $("#btn_radiology_send").addClass("hidden");
  229. $("#btn_batch_send").addClass("hidden");
  230. }
  231. $(object).removeClass("btn-default").addClass("btn-primary");
  232. initTbTable();
  233. }
  234. /**
  235. * 发药处理
  236. */
  237. function sendMedicineProcessing(realNo, orderNo, receiptNo, times, patientId, name) {
  238. $("#sendDispose").attr("disabled", true);
  239. $("#sendDrug").attr("disabled", true);
  240. var temp = {
  241. winNo: winNo,
  242. mzChargeDetail: {
  243. groupNo: groupNo,
  244. realNo: realNo,
  245. orderNo: orderNo,
  246. receiptNo: receiptNo,
  247. times: times,
  248. patientId: patientId,
  249. name: name,
  250. windowsNoYf: winNo
  251. }
  252. };
  253. $.ajax({
  254. type: "POST",
  255. url: '/thmz/sendMedicineProcessing',
  256. contentType: "application/json;charset=UTF-8",
  257. dataType: "json",
  258. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  259. data: JSON.stringify(temp),
  260. success: function (res) {
  261. $("#sendDispose").attr("disabled", false);
  262. $("#sendDrug").attr("disabled", false);
  263. if (res == '401' || res == 401) {
  264. window.location.href = '/thmz/login/view'
  265. return;
  266. }
  267. if (res.code == 0) {
  268. successMesage(res);
  269. $('#cfxxModal').modal('hide');
  270. $("#patientId").val('');
  271. initTbTable($('#tb_table').bootstrapTable('getOptions').pageNumber);
  272. } else {
  273. errorMesage(res);
  274. }
  275. },
  276. error: function () {
  277. $("#sendDispose").attr("disabled", false);
  278. $("#sendDrug").attr("disabled", false);
  279. }
  280. });
  281. }
  282. /**
  283. * 查询处方信息
  284. */
  285. function initTbTable(pageIndex) {
  286. // sendRefundGroup: 0: 发药; 1: 退药
  287. var sendRefundGroup = getIndex("send_refund_group");
  288. var visible = false;
  289. var qrsjVisible = false;
  290. var tysjVisible = false;
  291. var url = "/thmz/getSendMedicinePrescription";
  292. if (sendRefundGroup == 1) {
  293. visible = true;
  294. if ($("#confirmFlagSearch").val() == 2) {
  295. qrsjVisible = true;
  296. } else {
  297. tysjVisible = true;
  298. }
  299. url = "/thmz/getYfRefundMedicine";
  300. $("#tb_table_div").attr("class", "col-md-7 col-sm-7 col-xs-12");
  301. } else {
  302. $("#tb_table_div").attr("class", "");
  303. }
  304. $('#tb_table').bootstrapTable("destroy");
  305. $('#tb_table').bootstrapTable({
  306. url: url, //请求后台的URL(*)
  307. method: 'post', //请求方式(*)
  308. striped: true, //是否显示行间隔色
  309. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  310. pagination: true, //是否显示分页(*)
  311. sortable: true, //是否启用排序
  312. sortOrder: "asc", //排序方式
  313. queryParams: queryParams, //传递参数(*)
  314. sidePagination: $("#confirmFlagSearch").val() == 0 ? 'client' : 'server', //分页方式:client客户端分页,server服务端分页(*)
  315. pageNumber: pageIndex || 1, //初始化加载第一页,默认第一页
  316. pageSize: 15, //每页的记录行数(*)
  317. pageList: [25, 50, 100], //可供选择的每页的行数(*)
  318. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  319. singleSelect: sendRefundGroup == 1 ? true : false, // 多选checkbox
  320. strictSearch: true,
  321. showColumns: false, //是否显示所有的列
  322. showRefresh: false, //是否显示刷新按钮
  323. minimumCountColumns: 2, //最少允许的列数
  324. clickToSelect: true, //是否启用点击选中行
  325. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  326. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  327. cardView: false, //是否显示详细视图
  328. detailView: false,
  329. //rowStyle:rowStyle,//通过自定义函数设置行样式
  330. ajaxOptions: {
  331. headers: {
  332. 'Accept': 'application/json',
  333. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  334. }
  335. },
  336. columns: [
  337. {
  338. field: 'checked',
  339. checkbox: true,
  340. align: "center",
  341. valign: 'middle',
  342. //visible: visible,
  343. formatter: function (value, row, index) {
  344. if (index == 0 && sendRefundGroup == 1) {
  345. $("#return_total_amount").css("display", "");
  346. fitfymx(row.patientId, row.times, row.receiptNo, row.orderNo, row.groupNo);
  347. return {
  348. checked: true//设置选中
  349. };
  350. }
  351. }
  352. }, {
  353. title: '操作',
  354. align: "center",
  355. valign: 'middle',
  356. visible: !visible,
  357. formatter: function (value, row, index) {
  358. var str = "";
  359. if (sendRefundGroup == 0) {
  360. str = '<button type="button" class="btn btn-primary btn-sm" title="打印" onclick="printInjectionOralMedicine(\'' + row.patientId + '\',\'' + row.orderNo + '\',\'' + row.realNo + '\',\'' + row.times + '\',\'' + row.receiptNo + '\',\'' + row.confirmFlag + '\');" style="color: #35D082;">打印 <i class="fa fa-print"></i></button>';
  361. if (groupNo === '71' || groupNo === '83') {
  362. str += '<button type="button" class="btn btn-primary btn-sm" title="叫号" onclick="callNumber(\'' + row.patientId + '\',\'' + row.name + '\')">叫号 <i class="glyphicon glyphicon-bullhorn"></i></button>';
  363. }
  364. if (row.confirmFlag == 5 || row.confirmFlag == 0) {
  365. str += '<button type="button" class="btn btn-primary btn-sm" title="发药" id="sendDrug" onclick="sendMedicineProcessing(\'' + row.realNo + '\',\'' + row.orderNo + '\',\'' + row.receiptNo + '\',\'' + row.times + '\',\'' + row.patientId + '\',\'' + row.name + '\')">发药 <i class="fa fa-check-square-o"></i></button>';
  366. }
  367. str += '<button type="button" class="btn btn-primary btn-sm" title="详细" onclick="prescriptionDetail(\'' + row.realNo + '\',\'' + row.orderNo + '\',\'' + row.receiptNo + '\',\'' + row.times + '\',\'' + row.patientId + '\',\'' + row.confirmFlag + '\')">详细 <i class="fa fa-plus"></i></button>';
  368. str += '<button type="button" class="btn btn-primary btn-sm" title="历史处方" onclick="prescriptionHistoryDetail(\'' + row.patientId + '\',\'' + 0 +'\')">历史处方 <i class="fa fa-eye"></i></button>';
  369. str += '<button type="button" class="btn btn-primary btn-sm" title="打印处方" onclick="printPrescription(\'' + row.patientId + '\',\'' + row.times + '\',\'' + row.orderNo +'\')">打印处方 <i class="fa fa-print"></i></button>';
  370. }
  371. return str;
  372. }
  373. }, {
  374. title: '操作',
  375. align: "center",
  376. valign: 'middle',
  377. visible: visible,
  378. formatter: function (value, row, index) {
  379. return '<button type="button" class="btn btn-primary btn-sm" title="匹配" onclick="matchingDrugCodg(\'' + row.patientId + '\',\'' + row.times + '\',\'' + row.receiptNo + '\',\'' + row.orderNo + '\',\'' + row.realNo + '\');" style="color: #35D082;">匹配药品</button>';
  380. }
  381. }, {
  382. field: 'confirmFlag',
  383. title: '状态',
  384. align: "center",
  385. valign: 'middle',
  386. width: 80,
  387. formatter: function (value, row, index) {
  388. if(value == '5') {
  389. return "<div style='background: #087f5b'><span>已配药</span></div>";
  390. } else if(value == '1') {
  391. return "<div style='background: #4dabf7'><span>已发药</span></div>";
  392. } else if(value == '0') {
  393. if(row.printFlag == '1'){
  394. return "<div style='background: #c3d94e'><span>配药中</span></div>";
  395. }
  396. return "<div style='background: #f59f00'><span>待配药</span></div>";
  397. } else if(value == '3') {
  398. return "<div style='background: #868e96'><span>已取消</span></div>";
  399. }
  400. return "<div style='background: #d9480f'><span>其他</span></div>";
  401. }
  402. }, {
  403. field: 'pdStatus',
  404. title: '排队状态',
  405. align: "center",
  406. valign: 'middle',
  407. visible: !visible,
  408. width: 80,
  409. formatter: function (value, row, index) {
  410. if(value == '0') {
  411. return "<div style='background: #087f5b'><span>已排队</span></div>";
  412. } else if(row.confirmFlag == '1') {
  413. return "<div style='background: #4dabf7'><span>已完成</span></div>";
  414. } else {
  415. return "<div style='background: #d9480f'><span>未排队</span></div>";
  416. }
  417. }
  418. }, {
  419. field: 'pdSort',
  420. title: '排队序号',
  421. align: "center",
  422. valign: 'middle',
  423. visible: !visible,
  424. }, {
  425. field: 'patientId',
  426. title: '病人ID',
  427. align: "center",
  428. valign: 'middle'
  429. }, {
  430. field: 'name',
  431. title: '姓名',
  432. align: "center",
  433. valign: 'middle'
  434. // formatter: function (value, row, index) {
  435. // if (sendRefundGroup == 0) {
  436. // for (let i = 0; i < pastList.length; i++) {
  437. // if (pastList[i].patient_id == row.patientId) {
  438. // return (row.lineUp !== 10000 ? '<span class="number-name" style="background: red">&nbsp;' + row.lineUp + '&nbsp;</span>&nbsp;' : '') + '<span style="color: red">' + value + '</span>';
  439. // }
  440. // }
  441. // }
  442. // return (row.lineUp !== 10000 ? '<span class="number-name">&nbsp;' + row.lineUp + '&nbsp;</span>&nbsp;' : '') + value;
  443. // }
  444. }, {
  445. field: 'orderNo',
  446. title: '处方号',
  447. align: "center",
  448. valign: 'middle'
  449. }, {
  450. field: 'warnDeptName',
  451. title: '申请科室',
  452. align: "center",
  453. valign: 'middle',
  454. }, {
  455. field: 'employeeName',
  456. title: '医生',
  457. align: "center",
  458. valign: 'middle',
  459. formatter: function (value, row, index) {
  460. if (value == null) {
  461. return row.doctorName;
  462. }
  463. return value;
  464. }
  465. }, {
  466. field: 'chargeDate',
  467. title: '缴费日期',
  468. align: "center",
  469. valign: 'middle',
  470. formatter: function (value, row, index) {
  471. if (value != null && value != "") {
  472. return format(value, "yyyy-MM-dd HH:mm:ss");
  473. }
  474. return "";
  475. }
  476. }, {
  477. field: 'realNo',
  478. title: '流水号',
  479. align: "center",
  480. valign: 'middle',
  481. }, {
  482. field: 'confirmTime',
  483. title: '确认日期',
  484. align: "center",
  485. valign: 'middle',
  486. visible: qrsjVisible,
  487. formatter: function (value, row, index) {
  488. if (value != null && value != "") {
  489. return format(value, "yyyy-MM-dd HH:mm:ss");
  490. }
  491. return "";
  492. }
  493. }, {
  494. field: 'inputTime',
  495. title: '退药日期',
  496. align: "center",
  497. valign: 'middle',
  498. visible: tysjVisible,
  499. formatter: function (value, row, index) {
  500. if (value != null && value != "") {
  501. return format(value, "yyyy-MM-dd HH:mm:ss");
  502. }
  503. return "";
  504. }
  505. }
  506. ],
  507. onClickRow: function (row) {
  508. if (sendRefundGroup == 1) {
  509. fitfymx(row.patientId, row.times, row.receiptNo, row.orderNo, row.groupNo);
  510. }
  511. },
  512. onDblClickRow: function (row) {
  513. if (sendRefundGroup == 0 && groupNo == 71) {
  514. printInjectionOralMedicine(row.patientId, row.orderNo, row.realNo, row.times, row.receiptNo, row.confirmFlag);
  515. }
  516. // 打印处方
  517. printPrescription(row.patientId, row.times, row.orderNo)
  518. },
  519. responseHandler: function (res) {
  520. console.log(res);
  521. if (res == '401' || res == 401) {
  522. window.location.href = '/thmz/login/view'
  523. return;
  524. }
  525. var ress = eval(res);
  526. // let reverse = getLineUpData(ress.data);
  527. // $('#tb_table').bootstrapTable('load', reverse);
  528. if (ress.code == -1) {
  529. if (ress.message != null && ress.message != '') {
  530. new PNotify({
  531. title: '错误提示',
  532. text: ress.message,
  533. type: 'error',
  534. hide: true,
  535. styling: 'bootstrap3'
  536. });
  537. }
  538. return {
  539. "total": 0,//总页数
  540. "rows": {} //数据
  541. };
  542. }
  543. return {
  544. "total": ress.total,//总页数
  545. "rows": ress.data //数据
  546. };
  547. },
  548. });
  549. }
  550. /**
  551. * 加载放射科发药记录
  552. */
  553. function initRadiologyTable() {
  554. $('#rad_send_record_table').bootstrapTable("destroy");
  555. $('#rad_send_record_table').bootstrapTable({
  556. url: "/thmz/getRadSendRecord", //请求后台的URL(*)
  557. method: 'post', //请求方式(*)
  558. striped: true, //是否显示行间隔色
  559. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  560. pagination: true, //是否显示分页(*)
  561. sortable: true, //是否启用排序
  562. sortOrder: "asc", //排序方式
  563. queryParams: radSendRecordQueryParams, //传递参数(*)
  564. sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
  565. pageNumber: 1, //初始化加载第一页,默认第一页
  566. pageSize: 5, //每页的记录行数(*)
  567. pageList: [5], //可供选择的每页的行数(*)
  568. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  569. singleSelect: true, // 单选checkbox
  570. strictSearch: true,
  571. showColumns: false, //是否显示所有的列
  572. showRefresh: false, //是否显示刷新按钮
  573. minimumCountColumns: 2, //最少允许的列数
  574. clickToSelect: true, //是否启用点击选中行
  575. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  576. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  577. cardView: false, //是否显示详细视图
  578. detailView: false,
  579. paginationDetailHAlign: ' hidden',//隐藏左侧分页信息
  580. toolbar: '#rad_send_record_toolbar',
  581. //rowStyle:rowStyle,//通过自定义函数设置行样式
  582. ajaxOptions: {
  583. headers: {
  584. 'Accept': 'application/json',
  585. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  586. }
  587. },
  588. columns: [
  589. {
  590. field: 'startDate',
  591. title: '起始时间',
  592. align: "center",
  593. valign: 'middle',
  594. formatter: function (value, row, index) {
  595. if (index == 0) {
  596. initRadiologyStatTable(row.sendDate);
  597. }
  598. if (value != null && value != "") {
  599. return format(value, "yyyy-MM-dd");
  600. }
  601. return "";
  602. }
  603. }, {
  604. field: 'endDate',
  605. title: '截止时间',
  606. align: "center",
  607. valign: 'middle',
  608. formatter: function (value, row, index) {
  609. if (index == 0) {
  610. initRadiologyStatTable(row.sendDate);
  611. }
  612. if (value != null && value != "") {
  613. return format(value, "yyyy-MM-dd");
  614. }
  615. return "";
  616. }
  617. }, {
  618. field: 'name',
  619. title: '发药人',
  620. align: "center",
  621. valign: 'middle'
  622. }, {
  623. field: 'sendDate',
  624. title: '发药时间',
  625. align: "center",
  626. valign: 'middle',
  627. formatter: function (value, row, index) {
  628. if (value != null && value != "") {
  629. return format(value, "yyyy-MM-dd");
  630. }
  631. return "-";
  632. }
  633. }
  634. , {
  635. title: '操作',
  636. align: "center",
  637. valign: 'middle',
  638. formatter: function (value, row, index) {
  639. row.sendDate = (row.sendDate == null) ? '' : row.sendDate;
  640. var str = '<button type="button" class="registration-no-color-foot-button" title="打印" onclick="printRadSendMedicineStat(\'' + row.sendDate + '\',\'' + row.startDate + '\',\'' + row.endDate + '\');" style="color: #35D082;background:#fff"><i class="fa fa-print"></i></button>';
  641. if (index == 0 && row.pageIndex == 0) {
  642. str += '<button type="button" class="registration-no-color-foot-button" title="发药" id="sendRad" onclick="sendMedicineProcessingRad()" style="background:#fff"><i class="fa fa-check-square-o"></i></button>';
  643. }
  644. return str;
  645. }
  646. }
  647. ],
  648. onClickRow: function (row) {
  649. initRadiologyStatTable(row.sendDate);
  650. },
  651. onDblClickRow: function (row) {
  652. printRadSendMedicineStat(row.sendDate, row.startDate, row.endDate);
  653. },
  654. responseHandler: function (res) {
  655. if (res == '401' || res == 401) {
  656. window.location.href = '/thmz/login/view'
  657. return;
  658. }
  659. var ress = eval(res);
  660. if (ress.code == -1) {
  661. if (ress.message != null && ress.message != '') {
  662. new PNotify({
  663. title: '错误提示',
  664. text: ress.message,
  665. type: 'error',
  666. hide: true,
  667. styling: 'bootstrap3'
  668. });
  669. }
  670. return {
  671. "total": 0,//总页数
  672. "rows": {} //数据
  673. };
  674. }
  675. return {
  676. "total": ress.total,//总页数
  677. "rows": ress.data //数据
  678. };
  679. },
  680. });
  681. $("#radiologySendModal").modal();
  682. }
  683. /**
  684. * 加载放射科发药统计表格数据
  685. * @param sendDate
  686. */
  687. function initRadiologyStatTable(sendDate) {
  688. sendDate = (sendDate == null) ? '' : sendDate;
  689. $('#rad_send_stat_table').bootstrapTable("destroy");
  690. $('#rad_send_stat_table').bootstrapTable({
  691. url: "/thmz/getRadSendStat?confirmTime=" + sendDate, //请求后台的URL(*)
  692. method: 'GET', //请求方式(*)
  693. striped: true, //是否显示行间隔色
  694. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  695. pagination: true, //是否显示分页(*)
  696. sortable: true, //是否启用排序
  697. sortOrder: "asc", //排序方式
  698. queryParams: {}, //传递参数(*)
  699. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  700. pageNumber: 1, //初始化加载第一页,默认第一页
  701. pageSize: 10, //每页的记录行数(*)
  702. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  703. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  704. singleSelect: true, // 单选checkbox
  705. strictSearch: true,
  706. showColumns: false, //是否显示所有的列
  707. showRefresh: false, //是否显示刷新按钮
  708. minimumCountColumns: 2, //最少允许的列数
  709. clickToSelect: true, //是否启用点击选中行
  710. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  711. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  712. cardView: false, //是否显示详细视图
  713. detailView: false,
  714. paginationDetailHAlign: ' hidden',//隐藏左侧分页信息
  715. toolbar: '#rad_send_stat_toolbar',
  716. //rowStyle:rowStyle,//通过自定义函数设置行样式
  717. ajaxOptions: {
  718. headers: {
  719. 'Accept': 'application/json',
  720. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  721. }
  722. },
  723. columns: [
  724. {
  725. field: 'location',
  726. title: '货位号',
  727. align: "center",
  728. valign: 'middle'
  729. }, {
  730. field: 'name',
  731. title: '品名',
  732. align: "center",
  733. valign: 'middle'
  734. }, {
  735. field: 'manuName',
  736. title: '厂商',
  737. align: "center",
  738. valign: 'middle'
  739. }, {
  740. field: 'specification',
  741. title: '规格',
  742. align: "center",
  743. valign: 'middle'
  744. }, {
  745. field: 'quantity',
  746. title: '<span style="color: green">数量</span>',
  747. align: "center",
  748. valign: 'middle',
  749. formatter: function (value, row, index) {
  750. return '<span style="color: green">' + value + '</span>'
  751. }
  752. }, {
  753. field: 'stockAmount',
  754. title: '库存',
  755. align: "center",
  756. valign: 'middle'
  757. }
  758. ],
  759. responseHandler: function (res) {
  760. if (res == '401' || res == 401) {
  761. window.location.href = '/thmz/login/view'
  762. return;
  763. }
  764. var ress = eval(res);
  765. if (ress.code == -1) {
  766. if (ress.message != null && ress.message != '') {
  767. new PNotify({
  768. title: '错误提示',
  769. text: ress.message,
  770. type: 'error',
  771. hide: true,
  772. styling: 'bootstrap3'
  773. });
  774. }
  775. return {
  776. "total": 0,//总页数
  777. "rows": {} //数据
  778. };
  779. }
  780. return {
  781. "total": ress.total,//总页数
  782. "rows": ress.data //数据
  783. };
  784. },
  785. });
  786. }
  787. /**
  788. * 放射科发药处理
  789. */
  790. function sendMedicineProcessingRad() {
  791. if (!confirm("确定要进行发药处理吗?")) {
  792. return;
  793. }
  794. $("#sendRad").attr("disabled", true);
  795. $.ajax({
  796. type: "GET",
  797. url: '/thmz/sendMedicineProcessingRad',
  798. contentType: "application/json;charset=UTF-8",
  799. dataType: "json",
  800. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  801. data: {},
  802. success: function (res) {
  803. $("#sendRad").attr("disabled", false);
  804. if (res == '401' || res == 401) {
  805. window.location.href = '/thmz/login/view'
  806. return;
  807. }
  808. if (res.code == 0) {
  809. successMesage(res);
  810. initRadiologyTable();
  811. } else {
  812. errorMesage(res);
  813. }
  814. },
  815. error: function () {
  816. $("#sendRad").attr("disabled", false);
  817. }
  818. });
  819. }
  820. /**
  821. * 打印注射卡口服药品
  822. */
  823. function printInjectionOralMedicine(patientId, orderNo, realNo, times, receiptNo, confirmFlag) {
  824. if (groupNo === '71') {
  825. prescriptionDetail(realNo, orderNo, receiptNo, times, patientId, confirmFlag);
  826. }
  827. var tem = {
  828. mzChargeDetail: {
  829. patientId: patientId,
  830. orderNo: orderNo,
  831. realNo: realNo,
  832. times: times,
  833. receiptNo: receiptNo,
  834. groupNo: groupNo,
  835. },
  836. autoCellNumber: $('#autoCellNumber').prop('checked') ? 1 : 0,
  837. winNo: winNo
  838. };
  839. $.ajax({
  840. type: "POST",
  841. url: '/thmz/getPrintInjectionData',
  842. contentType: "application/json;charset=UTF-8",
  843. dataType: "json",
  844. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  845. data: JSON.stringify(tem),
  846. success: function (res) {
  847. if (res == '401' || res == 401) {
  848. window.location.href = '/thmz/login/view'
  849. return;
  850. }
  851. console.log(res);
  852. if (res.code == 0) {
  853. if (groupNo !== '71') {
  854. zyfdy(res.data);
  855. } else {
  856. xyfdy(res);
  857. successMesage(res);
  858. }
  859. } else {
  860. errorMesage(res);
  861. }
  862. }
  863. });
  864. }
  865. /**
  866. * 中药房打印
  867. * @param data
  868. */
  869. function zyfdy(data) {
  870. $('#zydybqform')[0].reset();
  871. if (bqPrintIndex == null) {
  872. return errorMesageSimaple('未设置标签打印机,请在发药参数设置中设置');
  873. }
  874. $('#zydyNameLabel').val(data[0].name);
  875. $('#sexLabel').val(getSex(data[0].sex));
  876. $('#ageLabel').val(data[0].age);
  877. $('#dyslLabel').val(data[0].drugWin*2);
  878. $('#dateLabel').val(format(new Date(), "MM-dd"));
  879. $('#zydybqModal').modal();
  880. }
  881. /**
  882. * 西药房打印
  883. */
  884. function xyfdy(res) {
  885. var injections = new Array();//注射液
  886. var drugs = new Array();//普通药品
  887. for (let i = 0; i < res.data.length; i++) {
  888. if (res.data[i].classCode == 2 || res.data[i].classCode == 7) {//给药方式 2:输液、雾化吸入、副药等等 7:注射、皮试、副药等等
  889. injections[injections.length] = res.data[i];
  890. } else if (res.data[i].classCode != 6) {//给药方式 6:领药 9:外用、局麻、喷用等等
  891. drugs[drugs.length] = res.data[i];
  892. }
  893. }
  894. if (injections.length == 0 && drugs.length == 0) {
  895. return errorMesageSimaple('当前处方,无需打印注射单和标签');
  896. }
  897. let age = getBirthSlot(res.data[0].birthDay, res.data[0].priceTime);
  898. //setPrint();
  899. if (injections.length > 0) {
  900. if (zsdPrintIndex == null) {
  901. return errorMesageSimaple('未设置注射单打印机,请在发药参数设置中设置');
  902. }
  903. $(".zsd_two_tr").remove();
  904. $(".zsd_one_tr_1").remove();
  905. $(".zsd_one_tr_2").remove();
  906. var patientInfoHtm = '<tr class="zsd_one_tr_1">\n' +
  907. ' <td style="vertical-align: middle !important;width: 75px;text-align: center;"\n' +
  908. ' valign="top">姓名\n' +
  909. ' </td>\n' +
  910. ' <td style="vertical-align: middle !important;width: 100px;">\n' + res.data[0].name +
  911. ' </td>\n' +
  912. ' <td style="vertical-align: middle !important;width: 75px;text-align: center;">\n' +
  913. ' 性别\n' +
  914. ' </td>\n' +
  915. ' <td style="vertical-align: middle !important;width: 100px;text-align: left;">\n' + getSex(res.data[0].sex) +
  916. ' </td>\n' +
  917. ' <td style="vertical-align: middle !important;width: 75px;text-align: center;">\n' +
  918. ' 年龄\n' +
  919. ' </td>\n' +
  920. ' <td style="vertical-align: middle !important;width: 100px;text-align: left;">\n' + age +
  921. ' </td>\n' +
  922. ' <td style="vertical-align: middle !important;width: 75px;text-align: center;">\n' +
  923. ' ID号\n' +
  924. ' </td>\n' +
  925. ' <td style="vertical-align: middle !important;width: 100px;text-align: left;">\n' + res.data[0].patientId +
  926. ' </td>\n' +
  927. ' </tr>\n' +
  928. ' <tr class="zsd_one_tr_2">\n' +
  929. ' <td style="vertical-align: middle !important;width: 75px;text-align: center;">\n' +
  930. ' 医生\n' +
  931. ' </td>\n' +
  932. ' <td style="vertical-align: middle !important;width: 100px;text-align: left;">\n' + res.data[0].employeeName +
  933. ' </td>\n' +
  934. ' <td style="vertical-align: middle !important;width: 75px;text-align: center;">\n' +
  935. ' 诊断\n' +
  936. ' </td>\n' +
  937. ' <td colspan="5" style="vertical-align: middle !important;width: 250px;text-align: left;">\n' + res.data[0].icdText +
  938. ' </td>\n' +
  939. ' </tr>';
  940. $(".zsd_yp_tr").remove();
  941. $("#dateTime").html(format(new Date(), "yyyy-MM-dd HH:mm:ss"));
  942. $('#zsd_one').prepend(patientInfoHtm);
  943. var zsdYpHtm = '';
  944. for (let i = 0; i < injections.length; i++) {
  945. let data = injections[i];
  946. let manufactoryName = (data.manufactoryName == null || data.manufactoryName == '') ? '' : '(' + data.manufactoryName + ')';
  947. let groupOrder = (data.groupOrder == '' || data.groupOrder == null) ? data.chargeItemCode : data.groupOrder;
  948. let psFlag = '';
  949. if (data.groupOrder != '' || data.groupOrder != null) {
  950. for (let j = 0; j < injections.length; j++) {
  951. if (groupOrder === injections[j].groupOrder && injections[j].tryFlag === '1') {
  952. psFlag = '(需皮试)';
  953. break
  954. }
  955. }
  956. }
  957. zsdYpHtm += '<tr class="zsd_yp_tr">\n' +
  958. ' <td>&nbsp;&nbsp;</td>\n' +
  959. ' <td style="vertical-align: middle !important;width: 10px;text-align: center;">\n' + groupOrder +
  960. ' </td>\n' +
  961. ' <td style="vertical-align: middle !important;width: 200px;text-align: left;">\n' + data.drugname + manufactoryName +
  962. ' </td>\n' +
  963. ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.drugQuan +
  964. ' </td>\n' +
  965. ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.drugUnitName +
  966. ' </td>\n' +
  967. ' <td style="vertical-align: middle !important;width: 130px;text-align: left;">\n' + data.printName + psFlag +
  968. ' </td>\n' +
  969. ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.frequency +
  970. ' </td>\n' +
  971. ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.orderDays +
  972. ' </td>\n' +
  973. ' <td style="vertical-align: middle !important;width: 120px;text-align: left;">\n' + data.specification +
  974. ' </td>\n' +
  975. ' </tr>';
  976. }
  977. $('#zsd_yp').append(zsdYpHtm);
  978. var htm = '';
  979. for (let i = 0; i < 14; i++) {
  980. htm += '<tr class="zsd_two_tr">\n' +
  981. ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">&nbsp;&nbsp;月&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;日</td>\n' +
  982. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  983. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  984. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  985. ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  986. // ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">&nbsp;&nbsp;月&nbsp;&nbsp;日</td>\n' +
  987. // ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  988. // ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  989. // ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  990. // ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
  991. ' </tr>';
  992. }
  993. $('#zsd_two').append(htm);
  994. LODOP = getLodop();
  995. // LODOP.PRINT_INITA(6, 0, "210mm", "148mm", "泰和医院门、急诊注射单");
  996. // LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
  997. LODOP.PRINT_INITA(6, 0, "140mm", "202mm", "泰和医院门、急诊注射单");
  998. LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
  999. //设置默认打印机
  1000. LODOP.SET_PRINTER_INDEX(zsdPrintIndex);
  1001. // LODOP.SET_PRINT_PAGESIZE(1, '210mm', '148mm', "CreateCustomPage");
  1002. // LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "210mm");
  1003. // LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "148mm");
  1004. LODOP.SET_PRINT_PAGESIZE(1, '140mm', '202mm', "CreateCustomPage");
  1005. LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
  1006. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "140mm");
  1007. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "202mm");
  1008. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "泰和医院门、急诊注射单");//对新建的纸张重命名
  1009. // LODOP.ADD_PRINT_HTM("5mm", "3mm", "210mm", "148mm", $("div[id='print_view_zsd']").html());
  1010. LODOP.ADD_PRINT_HTM("2mm", "4mm", "140mm", "202mm", $("div[id='print_view_zsd']").html());
  1011. LODOP.PRINT();
  1012. //LODOP.PREVIEW();
  1013. }
  1014. if (drugs.length > 0) {
  1015. if (bqPrintIndex == null) {
  1016. return errorMesageSimaple('未设置标签打印机,请在发药参数设置中设置');
  1017. }
  1018. LODOP = getLodop();
  1019. LODOP.PRINT_INITA(6, 0, "80mm", "60mm", "患者药品标签");
  1020. LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
  1021. //设置默认打印机
  1022. LODOP.SET_PRINTER_INDEX(bqPrintIndex);
  1023. LODOP.SET_PRINT_PAGESIZE(1, '80mm', '60mm', "CreateCustomPage");
  1024. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "80mm");
  1025. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "60mm");
  1026. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "患者药品标签");//对新建的纸张重命名
  1027. for (let j = 0; j < drugs.length; j++) {
  1028. for (var key in drugs[j]) {
  1029. $("#ypbq_" + key + "").attr("value", drugs[j][key]);
  1030. $("#ypbq_quantity").attr("value", parseInt(drugs[j]['quantity']));
  1031. }
  1032. $("#dataTime").attr("value", format(new Date(), "yyyy-MM-dd HH:mm"));
  1033. $("#ypbq_sex").attr("value", getSex(drugs[0].sex));
  1034. $("#ypbq_age").attr("value", age);
  1035. $("#NO").attr("value", j + 1 + "/" + drugs.length);
  1036. //用法
  1037. let yf = drugs[j].printName + ',';
  1038. if (drugs[j].drugUnitName == '粒' || drugs[j].drugUnitName == '片' || drugs[j].drugUnitName == '支' || drugs[j].drugUnitName == '袋' || drugs[j].drugUnitName == '包') {
  1039. $("#ypbq_comm").attr("value", yf + drugs[j].comm + ',每次' + (drugs[j].drugQuan == 0.5 ? '半' : drugs[j].drugQuan) + drugs[j].drugUnitName);
  1040. } else if ((drugs[j].weight == null && drugs[j].volum == null) || (drugs[j].weight != null && drugs[j].volum != null)) {
  1041. $("#ypbq_comm").attr("value", yf + drugs[j].comm + ',每次' + drugs[j].drugQuan + drugs[j].drugUnitName);
  1042. } else {
  1043. let weight = (drugs[j].weight == '' || drugs[j].weight == null) ? drugs[j].volum : drugs[j].weight;
  1044. var drugQuan = (drugs[j].drugQuan / weight).toFixed(2);
  1045. if (drugQuan == 0.5) {
  1046. $("#ypbq_comm").attr("value", yf + drugs[j].comm + ',每次半' + drugs[j].miniUnitName);
  1047. } else if (drugQuan < 1) {
  1048. $("#ypbq_comm").attr("value", yf + drugs[j].comm + ',每次' + drugs[j].drugQuan + drugs[j].drugUnitName);
  1049. } else {
  1050. drugQuan = Math.round(drugQuan * 100) / 100;
  1051. $("#ypbq_comm").attr("value", yf + drugs[j].comm + ',每次' + drugQuan + drugs[j].miniUnitName);
  1052. }
  1053. }
  1054. LODOP.ADD_PRINT_HTM("5mm", "2mm", "80mm", "60mm", $("div[id='print_view_bq']").html());
  1055. LODOP.NewPage();//下一页
  1056. }
  1057. LODOP.PRINT();
  1058. //LODOP.PREVIEW();
  1059. }
  1060. }
  1061. /**
  1062. * 打印放射科发药药品统计
  1063. */
  1064. function printRadSendMedicineStat(sendDate, startDate, endDate) {
  1065. $.ajax({
  1066. type: "GET",
  1067. url: "/thmz/getPrintRadSendStat?confirmTime=" + sendDate, //请求后台的URL(*)
  1068. contentType: "application/json;charset=UTF-8",
  1069. dataType: "json",
  1070. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  1071. data: {},
  1072. success: function (res) {
  1073. if (res == '401' || res == 401) {
  1074. window.location.href = '/thmz/login/view'
  1075. return;
  1076. }
  1077. if (res.code == 0) {
  1078. var list = res.data;
  1079. if (list.length == 0) {
  1080. return errorMesageSimaple('当前记录无发药药品统计数据');
  1081. }
  1082. if (fskPrintIndex == null) {
  1083. return errorMesageSimaple('未设置放射科发药清单打印机,请在发药参数设置中设置');
  1084. }
  1085. $(".fsk_tr").remove();
  1086. var htm = '';
  1087. for (let i = 0; i < list.length; i++) {
  1088. var data = list[i];
  1089. htm += '<tr class="fsk_tr">' +
  1090. ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">' + (data.location == null ? '-' : data.location) +
  1091. ' </td>' +
  1092. ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">' + data.name +
  1093. ' </td>' +
  1094. ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">' + data.manuName +
  1095. ' </td>' +
  1096. ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">' + data.specification +
  1097. ' </td>' +
  1098. ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">' + data.quantity +
  1099. ' </td>' +
  1100. ' </tr>';
  1101. }
  1102. $('#fsk_tbody').append(htm);
  1103. $('#startDate').html(format(startDate, "yyyy-MM-dd"));
  1104. $('#endDate').html(format(endDate, "yyyy-MM-dd"));
  1105. //setPrint();
  1106. LODOP = getLodop();
  1107. LODOP.PRINT_INITA(6, 0, "241mm", "93.3mm", "放射科发药记录单");
  1108. LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
  1109. //设置默认打印机
  1110. LODOP.SET_PRINTER_INDEX(fskPrintIndex);
  1111. LODOP.SET_PRINT_PAGESIZE(1, '241mm', '93.3mm', "CreateCustomPage");
  1112. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "241mm");
  1113. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "93.3mm");
  1114. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "放射科发药记录单");//对新建的纸张重命名
  1115. LODOP.ADD_PRINT_HTM("5mm", "20%", "60%", "93.3mm", $("div[id='print_view_fsk']").html());
  1116. LODOP.PRINT();
  1117. //LODOP.PREVIEW();
  1118. successMesage(res);
  1119. } else {
  1120. errorMesage(res);
  1121. }
  1122. }
  1123. });
  1124. }
  1125. /**
  1126. * 已发药和未发药记录构建列表查询参数
  1127. * @param params
  1128. */
  1129. function queryParams(params) {
  1130. var rePortRangeArr = getRePortRangeArr();
  1131. let warnDept;
  1132. if ($("#unitCode").val() == null) {
  1133. warnDept = null;
  1134. } else {
  1135. warnDept = $("#unitCode").val()[0]
  1136. }
  1137. var temp = {
  1138. pageSize: params.limit, //页面大小
  1139. pageIndex: params.offset / params.limit, //页码
  1140. beginDate: rePortRangeArr[0],
  1141. endDate: rePortRangeArr[1],
  1142. name: $("#nameSearch").val() == "" ? null : $("#nameSearch").val(),
  1143. patientId: $("#patientId").val() == "" ? null : $("#patientId").val(),
  1144. confirmFlag: $("#confirmFlagSearch").val(),
  1145. realNo: $("#realNoSearch").val() == "" ? null : $("#realNoSearch").val(),
  1146. warnDept: warnDept,
  1147. groupNoOut: groupNo,
  1148. winNo: winNo,
  1149. isSendAndMatch: 1,
  1150. sortType: $("#sortType option:selected").val()
  1151. };
  1152. return temp;
  1153. };
  1154. /**
  1155. * 放射科发药记录构建列表查询参数
  1156. * @param params
  1157. */
  1158. function radSendRecordQueryParams(params) {
  1159. var temp = {
  1160. pageSize: params.limit, //页面大小
  1161. pageIndex: params.offset / params.limit //页码
  1162. };
  1163. return temp;
  1164. };
  1165. /**
  1166. * 获取时间选择器的时间数组
  1167. * @returns {string[]}
  1168. */
  1169. function getRePortRangeArr() {
  1170. var rePortRange = $('#reportrange span').html();
  1171. var rePortRangeArr = rePortRange.split(" - ");
  1172. rePortRangeArr[0] = rePortRangeArr[0] + " 00:00:00"
  1173. rePortRangeArr[1] = rePortRangeArr[1] + " 23:59:59"
  1174. return rePortRangeArr;
  1175. }
  1176. /**
  1177. * 清空查询条件
  1178. */
  1179. function cleanParams() {
  1180. $('#reportrange span').html(moment().format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD'));
  1181. $("#nameSearch").val('');
  1182. $("#patientId_or_cardNo").val('');
  1183. $("#patientId").val('');
  1184. $("#realNoSearch").val('');
  1185. $("#unitCode").html('');
  1186. $("#unitCode").selectpicker('refresh');
  1187. var sendRefundGroup = getIndex("send_refund_group");
  1188. sendRefundGroup == 0 ? $("#confirmFlagSearch").selectpicker('val', 0) : $("#confirmFlagSearch").selectpicker('val', 2);
  1189. $("#confirmFlagSearch").selectpicker('refresh');
  1190. $("#patientId_or_cardNo").focus();
  1191. }
  1192. /**
  1193. * 查询病人处方明细
  1194. */
  1195. var $table;
  1196. function prescriptionDetail(realNo, orderNo, receiptNo, times, patientId, confirmFlag) {
  1197. let isXy = groupNo === '71' ? true : false;
  1198. if (confirmFlag == 5 || confirmFlag == 0) {
  1199. $("#sendDispose").show();//显示
  1200. } else {
  1201. $("#sendDispose").hide();//隐藏
  1202. }
  1203. var temp = {
  1204. groupNo: groupNo,
  1205. realNo: realNo,
  1206. orderNo: orderNo,
  1207. receiptNo: receiptNo,
  1208. times: times,
  1209. patientId: patientId
  1210. };
  1211. $('#tb_table_right').bootstrapTable("destroy");
  1212. $('#tb_table_allergen').bootstrapTable("destroy");
  1213. $table = $('#tb_table_right').bootstrapTable({
  1214. url: '/thmz/getFyclPrescriptionDetail', //请求后台的URL(*)
  1215. method: 'POST', //请求方式(*)
  1216. striped: true, //是否显示行间隔色
  1217. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  1218. pagination: true, //是否显示分页(*)
  1219. sortable: true, //是否启用排序
  1220. sortOrder: "asc", //排序方式
  1221. queryParams: JSON.stringify(temp), //传递参数(*)
  1222. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  1223. pageNumber: 1, //初始化加载第一页,默认第一页
  1224. pageSize: 10, //每页的记录行数(*)
  1225. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  1226. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  1227. strictSearch: true,
  1228. showColumns: false, //是否显示所有的列
  1229. showRefresh: false, //是否显示刷新按钮
  1230. minimumCountColumns: 2, //最少允许的列数
  1231. clickToSelect: true, //是否启用点击选中行
  1232. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  1233. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  1234. cardView: false, //是否显示详细视图
  1235. detailView: false,
  1236. //rowStyle:rowStyle,//通过自定义函数设置行样式
  1237. ajaxOptions: {
  1238. headers: {
  1239. 'Accept': 'application/json',
  1240. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  1241. }
  1242. },
  1243. columns: [
  1244. {
  1245. field: 'manuNo',
  1246. title: '批号',
  1247. align: "center",
  1248. valign: 'middle'
  1249. },{
  1250. field: 'location',
  1251. title: '货位号',
  1252. align: "center",
  1253. valign: 'middle'
  1254. }, {
  1255. field: 'drugname',
  1256. title: '品名',
  1257. align: "center",
  1258. valign: 'middle',
  1259. }, {
  1260. field: 'specification',
  1261. title: '规格',
  1262. align: "center",
  1263. valign: 'middle',
  1264. }, {
  1265. field: 'quantity',
  1266. title: '<span style="color: green">数量</span>',
  1267. align: "center",
  1268. valign: 'middle',
  1269. formatter: function (value, row, index) {
  1270. return '<span style="color: green">' + value + '</span>'
  1271. }
  1272. }, {
  1273. field: 'ypUnitName',
  1274. title: '单位',
  1275. align: "center",
  1276. valign: 'middle',
  1277. }, {
  1278. field: 'abbrName',
  1279. title: '生产厂家',
  1280. align: "center",
  1281. valign: 'middle',
  1282. visible: isXy
  1283. }, {
  1284. field: 'drugQuan',
  1285. title: '一次剂量',
  1286. align: "center",
  1287. valign: 'middle',
  1288. }, {
  1289. field: 'drugUnitName',
  1290. title: '单位',
  1291. align: "center",
  1292. valign: 'middle',
  1293. }, {
  1294. field: 'frequency',
  1295. title: '频率',
  1296. align: "center",
  1297. valign: 'middle',
  1298. visible: isXy
  1299. }, {
  1300. field: 'decAmount',
  1301. title: '<span style="color: red">退药量</span>',
  1302. align: "center",
  1303. valign: 'middle',
  1304. formatter: function (value, row, index) {
  1305. return value == null ? '<span style="color: red">-</span>' : '<span style="color: red">' + value + '</span>'
  1306. }
  1307. }, {
  1308. field: 'printName',
  1309. title: '给药方式',
  1310. align: "center",
  1311. valign: 'middle',
  1312. visible: isXy
  1313. }, {
  1314. field: 'unitPrice',
  1315. title: '单价',
  1316. align: "center",
  1317. valign: 'middle',
  1318. }
  1319. , {
  1320. field: 'drugFlag',//毒麻标志:1:毒;2:麻;3:精神1;4:精神2
  1321. title: '<span style="color: red">毒麻</span>',
  1322. align: "center",
  1323. valign: 'middle',
  1324. formatter: function (value, row, index) {
  1325. if (value == 1) {
  1326. return '<span style="color: red">毒</span>'
  1327. } else if (value == 2) {
  1328. return '<span style="color: red">麻</span>'
  1329. } else if (value == 3) {
  1330. return '<span style="color: red">精神1</span>'
  1331. } else if (value == 3) {
  1332. return '<span style="color: red">精神2</span>'
  1333. } else {
  1334. return '<span style="color: red">-</span>'
  1335. }
  1336. }
  1337. }
  1338. , {
  1339. field: 'stockAmount',
  1340. title: '当前库存',
  1341. align: "center",
  1342. valign: 'middle',
  1343. }
  1344. , {
  1345. field: 'drugWin',
  1346. title: '副数',
  1347. align: "center",
  1348. valign: 'middle',
  1349. visible: !isXy
  1350. }
  1351. , {
  1352. field: 'nationalCode',
  1353. title: '医保编码',
  1354. align: ";left",
  1355. valign: 'middle',
  1356. formatter: function (value, row, index) {
  1357. return value == null ? "-" : value;
  1358. }
  1359. }
  1360. ],
  1361. responseHandler: function (res) {
  1362. if (res == '401' || res == 401) {
  1363. window.location.href = '/thmz/login/view'
  1364. return;
  1365. }
  1366. var ress = eval(res);
  1367. if (ress.data.length > 0) {
  1368. $("#employeeNameLabel").val(ress.data[0].employeeName);
  1369. $("#warnDeptNameLabel").val(ress.data[0].warnDeptName);
  1370. $("#chargeDateLabel").val(format(ress.data[0].chargeDate, "yyyy-MM-dd HH:mm:ss"));
  1371. $("#icdTextLabel").val(ress.data[0].icdText);
  1372. $("#orderNoLabel").val(ress.data[0].orderNo);
  1373. $("#receiptNoLabel").val(ress.data[0].receiptNo);
  1374. $("#timesLabel").val(ress.data[0].times);
  1375. $("#nameLabel").val(ress.data[0].name);
  1376. $("#patientIdLabel").val(ress.data[0].patientId);
  1377. $("#realNoLabel").val(ress.data[0].realNo);
  1378. }
  1379. if(ress.patientAllergenInfoList){
  1380. callAllergenInfo(ress.patientAllergenInfoList)
  1381. }
  1382. if (ress.code == -1) {
  1383. if (ress.message != null && ress.message != '') {
  1384. new PNotify({
  1385. title: '错误提示',
  1386. text: ress.message,
  1387. type: 'error',
  1388. hide: true,
  1389. styling: 'bootstrap3'
  1390. });
  1391. }
  1392. return {
  1393. "total": 0,//总页数
  1394. "rows": {} //数据
  1395. };
  1396. }
  1397. return {
  1398. "total": ress.data.length,//总页数
  1399. "rows": ress.data //数据
  1400. };
  1401. },
  1402. onLoadSuccess: function (res) { //加载成功时执行
  1403. var sendTotalAmount = 0;
  1404. for (var i = 0; i < res.rows.length; i++) {
  1405. sendTotalAmount += parseFloat(res.rows[i].quantity * res.rows[i].unitPrice * res.rows[i].drugWin);
  1406. }
  1407. $('#sendTotalAmount').html(sendTotalAmount.toFixed(2));//toFixed(2),保留2位小数,避免js中小数相加小数点后面多出很多位
  1408. },
  1409. });
  1410. $("#cfxxModal").modal();
  1411. }
  1412. /**
  1413. * 查询病人处方药品明细
  1414. */
  1415. function fitfymx(patientId, times, receiptNo, orderNo, groupNoOut) {
  1416. var temp = {
  1417. patientId: patientId,
  1418. times: times,
  1419. receiptNo: receiptNo,
  1420. orderNo: orderNo,
  1421. groupNoOut: groupNoOut,
  1422. confirmFlag: $("#confirmFlagSearch").val()
  1423. };
  1424. $('#tb_table_right_ty').bootstrapTable("destroy");
  1425. $table = $('#tb_table_right_ty').bootstrapTable({
  1426. url: '/thmz/getRefundYpMx', //请求后台的URL(*)
  1427. method: 'post', //请求方式(*)
  1428. striped: true, //是否显示行间隔色
  1429. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  1430. pagination: true, //是否显示分页(*)
  1431. sortable: true, //是否启用排序
  1432. sortOrder: "asc", //排序方式
  1433. queryParams: temp, //传递参数(*)
  1434. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  1435. pageNumber: 1, //初始化加载第一页,默认第一页
  1436. pageSize: 10, //每页的记录行数(*)
  1437. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  1438. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  1439. strictSearch: true,
  1440. showColumns: false, //是否显示所有的列
  1441. showRefresh: false, //是否显示刷新按钮
  1442. minimumCountColumns: 2, //最少允许的列数
  1443. clickToSelect: true, //是否启用点击选中行
  1444. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  1445. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  1446. cardView: false, //是否显示详细视图
  1447. detailView: false,
  1448. paginationDetailHAlign: ' hidden',//隐藏左侧分页信息
  1449. //rowStyle:rowStyle,//通过自定义函数设置行样式
  1450. ajaxOptions: {
  1451. headers: {
  1452. 'Accept': 'application/json',
  1453. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  1454. }
  1455. },
  1456. columns: [
  1457. {
  1458. field: 'charge_item_code',
  1459. title: '编码',
  1460. align: "center",
  1461. valign: 'middle'
  1462. },{
  1463. field: 'drugname',
  1464. title: '品名',
  1465. align: "center",
  1466. valign: 'middle',
  1467. formatter: function (value, row, index) {
  1468. if (value != null && value != "") {
  1469. return value.replace("()", "");
  1470. }
  1471. return "";
  1472. }
  1473. }, {
  1474. field: 'specification',
  1475. title: '规格',
  1476. align: "center",
  1477. valign: 'middle',
  1478. }, {
  1479. field: 'quantity',
  1480. title: '数量',
  1481. align: "center",
  1482. valign: 'middle',
  1483. }, {
  1484. field: 'unit_price',
  1485. title: '单价',
  1486. align: "center",
  1487. valign: 'middle',
  1488. }, {
  1489. field: 'dec_amount',
  1490. title: '<span style="color: red">退药量</span>',
  1491. align: "center",
  1492. valign: 'middle',
  1493. formatter: function (value, row, index) {
  1494. return '<span style="color: red">' + value + '</span>'
  1495. }
  1496. }, {
  1497. field: 'refund_medicine_remark',
  1498. title: '退药原因',
  1499. align: "center",
  1500. valign: 'middle',
  1501. formatter: function (value, row, index) {
  1502. if(row.dec_amount > 0){
  1503. return value;
  1504. } else {
  1505. return ''
  1506. }
  1507. }
  1508. }
  1509. ],
  1510. responseHandler: function (res) {
  1511. if (res == '401' || res == 401) {
  1512. window.location.href = '/thmz/login/view'
  1513. return;
  1514. }
  1515. var ress = eval(res);
  1516. if (ress.code == -1) {
  1517. if (ress.message != null && ress.message != '') {
  1518. new PNotify({
  1519. title: '错误提示',
  1520. text: ress.message,
  1521. type: 'error',
  1522. hide: true,
  1523. styling: 'bootstrap3'
  1524. });
  1525. }
  1526. return {
  1527. "total": 0,//总页数
  1528. "rows": {} //数据
  1529. };
  1530. }
  1531. return {
  1532. "total": ress.data.length,//总页数
  1533. "rows": ress.data //数据
  1534. };
  1535. },
  1536. onLoadSuccess: function (res) { //加载成功时执行
  1537. var returnTotalAmount = 0;
  1538. var returnAmount = 0;
  1539. for (var i = 0; i < res.rows.length; i++) {
  1540. returnTotalAmount += parseFloat(res.rows[i].quantity * res.rows[i].unit_price);
  1541. returnAmount += parseFloat(res.rows[i].dec_amount * res.rows[i].unit_price);
  1542. }
  1543. $('#returnTotalAmount').html(returnTotalAmount.toFixed(2));//toFixed(2),保留2位小数,避免js中小数相加小数点后面多出很多位
  1544. $('#returnAmount').html(returnAmount.toFixed(2));//toFixed(2),保留2位小数,避免js中小数相加小数点后面多出很多位
  1545. },
  1546. });
  1547. }
  1548. /**
  1549. * 退药处理
  1550. */
  1551. function saveRefundMedicine() {
  1552. let zt = $("#confirmFlagSearch").val()
  1553. if(!isTyOk && zt === '2'){
  1554. return errorMesageSimaple('请匹配退药药品追溯码是否一致!');
  1555. }
  1556. var row = $("#tb_table").bootstrapTable('getSelections');
  1557. if (row.length != 1) {
  1558. return errorMesageSimaple('请选择一条处方数据');
  1559. }
  1560. if (row[0].confirmFlag == 3) {
  1561. return errorMesageSimaple('请勿重复退药');
  1562. }
  1563. var data = $table.bootstrapTable('getData');
  1564. var datas = [];
  1565. var i = 0;
  1566. data.forEach(function (item, index, arr) {
  1567. if (item.dec_amount != 0) {
  1568. var tem = {
  1569. "patientId": item.patient_id,
  1570. "times": item.times,
  1571. "receiptNo": item.receipt_no,
  1572. "orderNo": item.order_no,
  1573. "realNo": item.real_no,
  1574. "decAmount": item.dec_amount,
  1575. "unitPrice": item.unit_price,
  1576. "chargeCode": item.charge_item_code,
  1577. "serial": item.serial,
  1578. "groupNo": item.group_no,
  1579. "itemNo": item.item_no,
  1580. "serialNo": item.serial_no
  1581. }
  1582. datas[i] = tem;
  1583. i++;
  1584. }
  1585. })
  1586. if (datas.length == 0) {
  1587. return errorMesageSimaple('退药处方可退药药品为空');
  1588. }
  1589. if (!confirm("确定要对当前处方的药品进行退药处理吗?")) {
  1590. return;
  1591. }
  1592. $("#btn_ty").attr("disabled", true);
  1593. $.ajax({
  1594. type: "POST",
  1595. url: '/thmz/refundMedicineProcessing',
  1596. contentType: "application/json;charset=UTF-8",
  1597. dataType: "json",
  1598. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  1599. data: JSON.stringify(datas),
  1600. success: function (res) {
  1601. $("#btn_ty").attr("disabled", false);
  1602. if (res == '401' || res == 401) {
  1603. window.location.href = '/thmz/login/view'
  1604. return;
  1605. }
  1606. if (res.code == 0) {
  1607. successMesage(res);
  1608. initTbTable();
  1609. } else {
  1610. errorMesage(res);
  1611. }
  1612. },
  1613. error: function () {
  1614. $("#btn_ty").attr("disabled", false);
  1615. }
  1616. });
  1617. }
  1618. /**
  1619. * 撤销退药处理
  1620. */
  1621. function saveCancelRefundMedicine() {
  1622. var row = $("#tb_table").bootstrapTable('getSelections');
  1623. if (row.length != 1) {
  1624. return errorMesageSimaple('请选择一条处方数据');
  1625. }
  1626. if (row[0].confirmFlag != 3) {
  1627. return errorMesageSimaple('请选择已退药记录');
  1628. }
  1629. if (!confirm("确定要撤销当前处方的退药吗?")) {
  1630. return;
  1631. }
  1632. $("#btn_cancel_ty").attr("disabled", true);
  1633. request({
  1634. url: '/cancelRefundMedicineProcessing',
  1635. method: 'GET',
  1636. data: {
  1637. realNo: row[0].realNo,
  1638. groupNo: groupNo,
  1639. receiptNo: row[0].receiptNo,
  1640. orderNo: row[0].orderNo,
  1641. patientId: row[0].patientId,
  1642. times: row[0].times
  1643. }
  1644. }).then((res) => {
  1645. $("#btn_cancel_ty").attr("disabled", false);
  1646. successMesage(res);
  1647. initTbTable();
  1648. },err =>{
  1649. $("#btn_cancel_ty").attr("disabled",false);
  1650. })
  1651. }
  1652. /**
  1653. * 叫号
  1654. * @param patientId
  1655. * @param name
  1656. */
  1657. function callNumber(patientId, name) {
  1658. $.ajax({
  1659. type: "GET",
  1660. url: '/thmz/callNumber?patientId=' + patientId + "&winNo=" + winNo,
  1661. contentType: "application/json;charset=UTF-8",
  1662. dataType: "json",
  1663. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  1664. success: function (res) {
  1665. if (res == '401' || res == 401) {
  1666. window.location.href = '/thmz/login/view'
  1667. return;
  1668. }
  1669. if (res.code == 0) {
  1670. //jhRecord.push(patientId);
  1671. pastList[pastList.length] = {name: name, patient_id: patientId};
  1672. window.localStorage["pastList"] = JSON.stringify(pastList);
  1673. successMesage(res);
  1674. } else {
  1675. errorMesage(res);
  1676. }
  1677. }
  1678. });
  1679. }
  1680. // 添加门诊过敏史
  1681. var $tableAllergen;
  1682. function callAllergenInfo(allergenList){
  1683. $tableAllergen = $('#tb_table_allergen').bootstrapTable({
  1684. data:allergenList,
  1685. striped: true, //是否显示行间隔色
  1686. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  1687. pagination: false, //是否显示分页(*)
  1688. sortable: false, //是否启用排序
  1689. sortOrder: "asc", //排序方式
  1690. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  1691. pageNumber: 1, //初始化加载第一页,默认第一页
  1692. pageSize: 10, //每页的记录行数(*)
  1693. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  1694. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  1695. strictSearch: true,
  1696. showColumns: false, //是否显示所有的列
  1697. showRefresh: false, //是否显示刷新按钮
  1698. minimumCountColumns: 2, //最少允许的列数
  1699. clickToSelect: true, //是否启用点击选中行
  1700. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  1701. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  1702. cardView: false, //是否显示详细视图
  1703. detailView: false,
  1704. //rowStyle:rowStyle,//通过自定义函数设置行样式
  1705. ajaxOptions: {
  1706. headers: {
  1707. 'Accept': 'application/json',
  1708. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  1709. }
  1710. },
  1711. columns: [
  1712. {
  1713. field: 'patNo',
  1714. title: '门诊号',
  1715. align: "center",
  1716. valign: 'middle'
  1717. },{
  1718. field: 'allergenCode',
  1719. title: '过敏源编码',
  1720. align: "center",
  1721. valign: 'middle'
  1722. }, {
  1723. field: 'allergenName',
  1724. title: '过敏源',
  1725. align: "center",
  1726. valign: 'middle',
  1727. }
  1728. ],
  1729. responseHandler: function (res) {
  1730. if (res == '401' || res == 401) {
  1731. window.location.href = '/thmz/login/view'
  1732. return;
  1733. }
  1734. if (ress.code == -1) {
  1735. if (ress.message != null && ress.message != '') {
  1736. new PNotify({
  1737. title: '错误提示',
  1738. text: ress.message,
  1739. type: 'error',
  1740. hide: true,
  1741. styling: 'bootstrap3'
  1742. });
  1743. }
  1744. return {
  1745. "total": 0,//总页数
  1746. "rows": {} //数据
  1747. };
  1748. }
  1749. return {
  1750. "total": ress.data.length,//总页数
  1751. "rows": ress.data //数据
  1752. };
  1753. }
  1754. });
  1755. }
  1756. function callHistoryDetail() {
  1757. if(coreId){
  1758. prescriptionHistoryDetail(coreId, '1');
  1759. }
  1760. }
  1761. // 查看历史处方
  1762. let $historyTable
  1763. function prescriptionHistoryDetail(patientId, type){
  1764. coreId = patientId
  1765. if(type === '0'){
  1766. daterangepickerNew('reportRangeList', 'center');
  1767. initSelectHistory();
  1768. }
  1769. $('#tb_table_history').bootstrapTable("destroy");
  1770. $historyTable = $('#tb_table_history').bootstrapTable({
  1771. url: '/thmz/getMzBlRecordList', //请求后台的URL(*)
  1772. method: 'post', //请求方式(*)
  1773. toolbar: '#toolbar', //工具按钮用哪个容器
  1774. striped: true, //是否显示行间隔色
  1775. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  1776. pagination: true, //是否显示分页(*)
  1777. sortable: true, //是否启用排序
  1778. sortOrder: "desc", //排序方式
  1779. queryParams: queryDataS, //传递参数(*)
  1780. sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
  1781. pageNumber: 1, //初始化加载第一页,默认第一页
  1782. pageSize: 5, //每页的记录行数(*)
  1783. pageList: [5, 10, 15, 25, 30], //可供选择的每页的行数(*)
  1784. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  1785. strictSearch: true,
  1786. showColumns: false, //是否显示所有的列
  1787. showRefresh: false, //是否显示刷新按钮
  1788. minimumCountColumns: 2, //最少允许的列数
  1789. clickToSelect: true, //是否启用点击选中行
  1790. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  1791. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  1792. cardView: false, //是否显示详细视图
  1793. detailView: false,
  1794. //rowStyle:rowStyle,//通过自定义函数设置行样式
  1795. ajaxOptions: {
  1796. headers: {
  1797. 'Accept': 'application/json',
  1798. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  1799. }
  1800. },
  1801. columns: [
  1802. {
  1803. title: '操作',
  1804. field: 'op',
  1805. align: "center",
  1806. valign: 'middle',
  1807. formatter: function (value, row, index) {
  1808. var str = '<button type="button" class="btn btn-primary btn-sm" onclick="showMzBlRecordModal(\'' + row.patientId + '\',' + row.times + ',3)">查看</button>';
  1809. return [str].join('');
  1810. }
  1811. },
  1812. {
  1813. field: 'patientId',
  1814. title: '门诊ID',
  1815. align: "center",
  1816. valign: 'middle'
  1817. }, {
  1818. field: 'patientName',
  1819. title: '患者姓名',
  1820. align: "center",
  1821. valign: 'middle'
  1822. }, {
  1823. field: 'deptCode',
  1824. title: '就诊科室',
  1825. align: "center",
  1826. valign: 'middle'
  1827. }, {
  1828. field: 'doctorCode',
  1829. title: '接诊医师',
  1830. align: "center",
  1831. valign: 'middle'
  1832. }, {
  1833. field: 'firstOrNot',
  1834. title: '初/复诊',
  1835. align: "center",
  1836. valign: 'middle',
  1837. formatter: function (value, row, index) {
  1838. if (value == '1') {
  1839. return "复诊";
  1840. }
  1841. return "初诊";
  1842. }
  1843. }
  1844. , {
  1845. field: 'visitDate',
  1846. title: '就诊时间',
  1847. align: "center",
  1848. valign: 'middle',
  1849. formatter: function (value, row, index) {
  1850. if (value == null || value == "") {
  1851. return "";
  1852. }
  1853. return format(value, "yyyy-MM-dd HH:mm:ss");
  1854. }
  1855. }
  1856. ],
  1857. responseHandler: function (res) {
  1858. if (res == '401' || res == 401) {
  1859. window.location.href = '/thmz/login/view'
  1860. return;
  1861. }
  1862. var ress = eval(res);
  1863. if (ress.code == -1) {
  1864. if (ress.message != null && ress.message != '') {
  1865. errorMesage(ress);
  1866. }
  1867. return {
  1868. "total": 0,//总页数
  1869. "rows": {} //数据
  1870. };
  1871. }
  1872. return {
  1873. "total": ress.total,//总页数
  1874. "rows": ress.data //数据
  1875. };
  1876. },
  1877. });
  1878. $("#historyModal").modal();
  1879. }
  1880. function showMzBlRecordModal(patientId, times, type) {
  1881. $.ajax({
  1882. type: "GET",
  1883. url: '/thmz/getMzBlrecord?patientId=' + patientId + '&times=' + times,
  1884. contentType: "application/json;charset=UTF-8",
  1885. dataType: "json",
  1886. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  1887. success: function (res) {
  1888. if (res == '401' || res == 401) {
  1889. window.location.href = '/thmz/login/view'
  1890. return;
  1891. }
  1892. if (res.code == 0) {
  1893. var mzPatientMi = res.mzPatientMi;
  1894. $("#editPatientId").text(mzPatientMi.patientId);
  1895. $("#editPatientName").text(mzPatientMi.name);
  1896. $("#editPatientGender").text(mzPatientMi.gender);
  1897. $("#editPatientAge").text(mzPatientMi.ageString);
  1898. var mzBlRecord = res.mzBlRecord;
  1899. $("#editEmrChiefComplaint").val(mzBlRecord.emrChiefComplaint == null ? "" : mzBlRecord.emrChiefComplaint);
  1900. $("#editEmrHpi").val(mzBlRecord.emrHpi == null ? "" : mzBlRecord.emrHpi);
  1901. $("#editEmrPs").val(mzBlRecord.emrPs == null ? "" : mzBlRecord.emrPs);
  1902. $("#editPersonalHistory").val(mzBlRecord.personalHistory == null ? "" : mzBlRecord.personalHistory);
  1903. $("#editFzZl").val(mzBlRecord.fzZl == null ? "" : mzBlRecord.fzZl);
  1904. $("#editCrbHistory").val(mzBlRecord.crbHistory == null ? "" : mzBlRecord.crbHistory);
  1905. $("#editFamilyHistory").val(mzBlRecord.familyHistory == null ? "" : mzBlRecord.familyHistory);
  1906. $("#editObstericalHistory").val(mzBlRecord.obstericalHistory == null ? "" : mzBlRecord.obstericalHistory);
  1907. $("#editQtjc").val(mzBlRecord.emrPe == null ? "" : mzBlRecord.emrPe);
  1908. setSelectedAttr("editZd", mzBlRecord.icdCode, mzBlRecord.icdText);
  1909. var patientAllergenInfoList = res.patientAllergenInfoList;
  1910. if (patientAllergenInfoList != null && patientAllergenInfoList.length > 0) {
  1911. var zdAllergen = [];
  1912. var ypDitList = [];
  1913. var zdAllergenHtml = '';
  1914. var ypDitListHtml = '';
  1915. var zdAllergeCodes = null;
  1916. var zdAllergeTexts = null;
  1917. var ypDitListodes = null;
  1918. var ypDitListTexts = null;
  1919. for (var i = 0; i < patientAllergenInfoList.length; i++) {
  1920. var patientAllergenInfo = patientAllergenInfoList[i];
  1921. if (patientAllergenInfo.type == 0 || patientAllergenInfo.type == '0') {
  1922. zdAllergen[zdAllergen.length] = patientAllergenInfo.allergenCode;
  1923. zdAllergenHtml += '<option value="' + patientAllergenInfo.allergenCode + '">' + patientAllergenInfo.allergenName + '</option>';
  1924. if (zdAllergeCodes == null) {
  1925. zdAllergeCodes = patientAllergenInfo.allergenCode;
  1926. zdAllergeTexts = patientAllergenInfo.allergenName;
  1927. } else {
  1928. zdAllergeCodes += "," + patientAllergenInfo.allergenCode;
  1929. zdAllergeTexts += "," + patientAllergenInfo.allergenName;
  1930. }
  1931. } else if (patientAllergenInfo.type == 1 || patientAllergenInfo.type == '1') {
  1932. ypDitList[ypDitList.length] = patientAllergenInfo.allergenCode;
  1933. ypDitListHtml += '<option value="' + patientAllergenInfo.allergenCode + '">' + patientAllergenInfo.allergenName + '</option>';
  1934. if (zdAllergeCodes == null) {
  1935. ypDitListodes = patientAllergenInfo.allergenCode;
  1936. ypDitListTexts = patientAllergenInfo.allergenName;
  1937. } else {
  1938. ypDitListodes += "," + patientAllergenInfo.allergenCode;
  1939. ypDitListTexts += "," + patientAllergenInfo.allergenName;
  1940. }
  1941. }
  1942. }
  1943. $("#editZdAllergen").empty();
  1944. $('#editZdAllergen').append(zdAllergenHtml);
  1945. $('#editZdAllergen').selectpicker('refresh');
  1946. $("#editYpDitList").empty();
  1947. $('#editYpDitList').append(ypDitListHtml);
  1948. $('#editYpDitList').selectpicker('refresh');
  1949. $("#editZdAllergen").selectpicker('val', zdAllergen);
  1950. $("#editZdAllergen").selectpicker('refresh');
  1951. $("#editYpDitList").selectpicker('val', ypDitList);
  1952. $("#editYpDitList").selectpicker('refresh');
  1953. $("#editZdAllergen").attr("selectedCodes", zdAllergeCodes);
  1954. $("#editZdAllergen").attr("selectedTexts", zdAllergeTexts);
  1955. $("#editYpDitList").attr("selectedCodes", ypDitListodes);
  1956. $("#editYpDitList").attr("selectedTexts", ypDitListTexts);
  1957. }
  1958. var tentativeDiagnosis = mzBlRecord.tentativeDiagnosis == null ? "" : mzBlRecord.tentativeDiagnosis;
  1959. if ((mzBlRecord.icdCode == null || mzBlRecord.icdCode == "") && mzBlRecord.icdText != null && mzBlRecord.icdText != "") {
  1960. if (tentativeDiagnosis == null || tentativeDiagnosis == "") {
  1961. tentativeDiagnosis = mzBlRecord.icdText;
  1962. } else {
  1963. tentativeDiagnosis = mzBlRecord.icdText + " " + tentativeDiagnosis;
  1964. }
  1965. }
  1966. $("#edittentativeDiagnosis").val(tentativeDiagnosis);
  1967. $("#editEmrJkjy").val(mzBlRecord.emrJkjy == null ? "" : mzBlRecord.emrJkjy);
  1968. $("#bl_weight").val(mzBlRecord.weight == 0 ? null : mzBlRecord.weight);
  1969. $("#bl_temperature").val(mzBlRecord.temperature == 0 ? null : mzBlRecord.temperature);
  1970. $("#bl_sphygmus").val(mzBlRecord.sphygmus == 0 ? null : mzBlRecord.sphygmus);
  1971. $("#bl_breathe").val(mzBlRecord.breathe == 0 ? null : mzBlRecord.breathe);
  1972. $("#bl_pressure_high").val(mzBlRecord.pressureHigh == 0 ? null : mzBlRecord.pressureHigh);
  1973. $("#bl_pressure_floor").val(mzBlRecord.pressureFloor == 0 ? null : mzBlRecord.pressureFloor);
  1974. $("#bl_pressure_high_left").val(mzBlRecord.pressureHighLeft == 0 ? null : mzBlRecord.pressureHighLeft);
  1975. $("#bl_pressure_floor_left").val(mzBlRecord.pressureFloorLeft == 0 ? null : mzBlRecord.pressureFloorLeft);
  1976. if (mzBlRecord.emrProcess != null && mzBlRecord.emrProcess != "") {
  1977. var reg = new RegExp("</br>", "g");//g,表示全部替换。
  1978. var editEmrProcess = mzBlRecord.emrProcess.replace(reg, "\n");
  1979. reg = new RegExp("&nbsp;", "g");//g,表示全部替换。
  1980. editEmrProcess = editEmrProcess.replace(reg, "");
  1981. $("#editEmrProcess").val(editEmrProcess);
  1982. } else {
  1983. $("#editEmrProcess").val("");
  1984. }
  1985. if (type == 1) {
  1986. $("#mzBlRecorTitle").html("门诊病历【编辑】");
  1987. $("#setOtherEmrProcess").removeClass("in").addClass("hide");
  1988. $("#openBlRecordModel").removeClass("hide").addClass("in");
  1989. $("#setEmrProcess").removeClass("hide").addClass("in");
  1990. $("#visitingDetailModal").modal("hide");
  1991. } else if (type == 2 || type == 3) {
  1992. $("#mzBlRecorTitle").html("门诊病历【查询】");
  1993. if(type==2){
  1994. $("#setOtherEmrProcess").removeClass("hide").addClass("in");
  1995. }else {
  1996. $("#setOtherEmrProcess").removeClass("in").addClass("hide");
  1997. }
  1998. $("#openBlRecordModel").removeClass("in").addClass("hide");
  1999. $("#setEmrProcess").removeClass("in").addClass("hide");
  2000. //因为预览的时候,关闭预览框没有清空数据,且 此时基础数据的病历次数被清空
  2001. if ($("#mzBlTimes").val() != null && $("#mzBlTimes").val() != "" && ($("#baseMzBlTimes").val() == null || $("#baseMzBlTimes").val() == "")) {
  2002. $("#baseMzBlTimes").val($("#mzBlTimes").val());
  2003. }
  2004. $("#otherBlRecordModal").modal("hide");
  2005. }
  2006. $("#mzBlTimes").val(mzBlRecord.times);
  2007. $("#editMzBlRecordModal").modal();
  2008. } else {
  2009. errorMesage(res);
  2010. }
  2011. }
  2012. });
  2013. }
  2014. function queryDataS(params) {
  2015. var rePortRangeArr = getRePortRangeArr1();
  2016. var temp = { //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
  2017. patientId: coreId,
  2018. times: '-1', // 这里需要根据patientId精确查找病人的病历,而不是模糊查询
  2019. beginTime: rePortRangeArr[0],
  2020. endTime: rePortRangeArr[1],
  2021. pageSize: params.limit, //页面大小
  2022. pageIndex: params.offset / params.limit, //页码
  2023. };
  2024. return temp;
  2025. }
  2026. function getRePortRangeArr1() {
  2027. var rePortRange = $('#reportRangeList span').html();
  2028. var rePortRangeArr = rePortRange.split(" - ");
  2029. rePortRangeArr[0] = rePortRangeArr[0] + " 00:00:00"
  2030. rePortRangeArr[1] = rePortRangeArr[1] + " 23:59:59"
  2031. return rePortRangeArr;
  2032. }
  2033. /**
  2034. * 清空区域
  2035. */
  2036. function clearInput() {
  2037. $("#editPatientId").text(null);
  2038. $("#editPatientName").text(null);
  2039. $("#editPatientGender").text(null);
  2040. $("#editPatientAge").text(null);
  2041. $("#editEmrChiefComplaint").val(null);
  2042. $("#editEmrHpi").val(null);
  2043. $("#editEmrPs").val(null);
  2044. $("#editPersonalHistory").val(null);
  2045. $("#editFzZl").val(null);
  2046. $("#editCrbHistory").val(null);
  2047. $("#editFamilyHistory").val(null);
  2048. $("#editObstericalHistory").val(null);
  2049. $("#bl_weight").val(null);
  2050. $("#bl_sphygmus").val(null);
  2051. $("#bl_breathe").val(null);
  2052. $("#bl_pressure_high").val(null);
  2053. $("#bl_pressure_floor").val(null);
  2054. $("#bl_pressure_high_left").val(null);
  2055. $("#bl_pressure_floor_left").val(null);
  2056. $("#editQtjc").val(null);
  2057. $("#editZd").selectpicker('val', null);
  2058. $("#editZd").selectpicker('refresh');
  2059. $("#edittentativeDiagnosis").val(null);
  2060. $("#editEmrProcess").val(null);
  2061. $("#editEmrJkjy").val(null);
  2062. $("#mzBlTimes").val(null);
  2063. }
  2064. function initSelectHistory() {
  2065. $('#reportRangeList span').html(moment().subtract(mzHistoryDays, 'days').format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD'));
  2066. //select 从后台加载数据,并保留之前选择的内容
  2067. dynamicSelectWithOri("editZd", '/thmz/getAllZdIcdCommonParams?commonParams=',false);
  2068. //过敏源
  2069. dynamicSelectWithOri("editZdAllergen", '/thmz/getZdAllergenListByCode?code=', false);
  2070. //药品列表
  2071. dynamicSelectWithOri("editYpDitList", '/thmz/getYpZdDictListByCode?code=', false);
  2072. }
  2073. // 退药药品追溯码匹配
  2074. function matchingDrugCodg(patientId, times, receiptNo, orderNo, realNo){
  2075. if(groupNo !== '71'){
  2076. errorMesage("暂时仅门诊西药房发药才进行配药处理!");
  2077. }
  2078. let isXy = groupNo === '71';
  2079. let tem = {
  2080. patientId: patientId,
  2081. times: times,
  2082. receiptNo: receiptNo,
  2083. orderNo: orderNo,
  2084. realNo: realNo,
  2085. groupNo: groupNo,
  2086. };
  2087. $('#ty_table_detail').bootstrapTable("destroy");
  2088. $('#ty_table_detail').bootstrapTable({
  2089. url: '/thmz/getMzDrugTracCodgData', //请求后台的URL(*)
  2090. method: 'POST', //请求方式(*)
  2091. striped: true, //是否显示行间隔色
  2092. cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
  2093. pagination: true, //是否显示分页(*)
  2094. sortable: true, //是否启用排序
  2095. sortOrder: "asc", //排序方式
  2096. queryParams: JSON.stringify(tem), //传递参数(*)
  2097. sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
  2098. pageNumber: 1, //初始化加载第一页,默认第一页
  2099. pageSize: 50, //每页的记录行数(*)
  2100. pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
  2101. search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
  2102. strictSearch: true,
  2103. showColumns: false, //是否显示所有的列
  2104. showRefresh: false, //是否显示刷新按钮
  2105. minimumCountColumns: 2, //最少允许的列数
  2106. clickToSelect: true, //是否启用点击选中行
  2107. uniqueId: "ID", //每一行的唯一标识,一般为主键列
  2108. showToggle: false, //是否显示详细视图和列表视图的切换按钮
  2109. cardView: false, //是否显示详细视图
  2110. detailView: false,
  2111. // rowStyle:rowStyleCharge,//通过自定义函数设置行样式
  2112. ajaxOptions: {
  2113. headers: {
  2114. 'Accept': 'application/json',
  2115. 'Authorization': 'Bearer ' + localStorage.getItem("token")
  2116. }
  2117. },
  2118. columns: [
  2119. {
  2120. field: 'drugName',
  2121. title: '品名',
  2122. align: "center",
  2123. valign: 'middle',
  2124. }, {
  2125. field: 'specification',
  2126. title: '规格',
  2127. align: "center",
  2128. valign: 'middle',
  2129. }, {
  2130. field: 'abbrName',
  2131. title: '生产厂家',
  2132. align: "center",
  2133. valign: 'middle',
  2134. visible: isXy
  2135. }, {
  2136. field: 'unitPrice',
  2137. title: '单价',
  2138. align: "center",
  2139. valign: 'middle',
  2140. }, {
  2141. field: 'drugTracCodg',
  2142. title: '药品追溯码',
  2143. width: '270',
  2144. align: "left",
  2145. valign: 'middle',
  2146. formatter: function (value, row, index) {
  2147. return isEmpty(value)?'':value
  2148. }
  2149. }, {
  2150. field: 'matchOk',
  2151. title: '匹配结果',
  2152. align: "center",
  2153. valign: 'middle',
  2154. }
  2155. ],
  2156. responseHandler: function (res) {
  2157. if (res === '401' || res === 401) {
  2158. window.location.href = '/thmz/login/view'
  2159. return;
  2160. }
  2161. let re = eval(res);
  2162. if (re.data.length > 0) {
  2163. $("#patientIdTy").val(re.data[0].patientId);
  2164. $("#timesTy").val(re.data[0].times);
  2165. $("#nameTy").val(re.data[0].name);
  2166. $("#employeeNameLabelTy").val(re.data[0].employeeName);
  2167. $("#warnDeptNameLabelPy").val(re.data[0].warnDeptName);
  2168. $("#smMatchTy").val("");
  2169. }
  2170. if (re.code === -1) {
  2171. if (re.message != null && re.message !== '') {
  2172. new PNotify({
  2173. title: '错误提示',
  2174. text: re.message,
  2175. type: 'error',
  2176. hide: true,
  2177. styling: 'bootstrap3'
  2178. });
  2179. }
  2180. return {
  2181. "total": 0,//总页数
  2182. "rows": {} //数据
  2183. };
  2184. }
  2185. return {
  2186. "total": re.data.length,//总页数
  2187. "rows": re.data //数据
  2188. };
  2189. },
  2190. });
  2191. $("#tyModal").modal();
  2192. }
  2193. // 匹配扫码
  2194. function matchDrugCodg(){
  2195. if(isTyOk){
  2196. isTyOk = false;
  2197. }
  2198. let code = $("#smMatchTy").val().trim().replace(/[\r\n]/g,"");
  2199. let tyTable = $('#ty_table_detail').bootstrapTable("getData");
  2200. for (let i = 0; i < tyTable.length; i++) {
  2201. if(tyTable[i].drugTracCodg === code){
  2202. if(!isEmpty(tyTable[i].matchOk)){
  2203. warningMesageSimaple("已匹配,请勿重复扫码!");
  2204. return false;
  2205. }
  2206. $('#ty_table_detail').bootstrapTable('updateCell', {
  2207. index: i,
  2208. field: "drugTracCodg",
  2209. value: '<span style="color: green">' + tyTable[i].drugTracCodg + '</span>'
  2210. });
  2211. $('#ty_table_detail').bootstrapTable('updateCell', {
  2212. index: i,
  2213. field: "matchOk",
  2214. value: '<span style="color: green">已匹配</span>'
  2215. });
  2216. break
  2217. }
  2218. if(i === tyTable.length - 1){
  2219. errorMesageSimaple("在退药列表未找到条码对应的药品,请核对!")
  2220. }
  2221. }
  2222. $("#smMatchTy").val("")
  2223. }
  2224. // 确认匹配之后可以退药了
  2225. function matchTp(){
  2226. if (!confirm("确定对当前处方所有退药的药品匹配成功?")) {
  2227. return;
  2228. }
  2229. if(!isTyOk){
  2230. isTyOk = true;
  2231. }
  2232. $("#tyModal").modal('hide');
  2233. }
  2234. function printPrescription(patientId, times, orderNo) {
  2235. if (mzCfPrintIndex == null || ekCfPrintIndex == null || jzCfPrintIndex == null) {
  2236. return errorMesageSimaple('打印机参数未设置,请在发药参数设置中设置');
  2237. }
  2238. var tem = {
  2239. patientId: patientId,
  2240. times: times,
  2241. orderNo: orderNo,
  2242. groupNo: groupNo
  2243. };
  2244. $.ajax({
  2245. type: "POST",
  2246. url: '/thmz/getPrintPrescriptionData',
  2247. contentType: "application/json;charset=UTF-8",
  2248. dataType: "json",
  2249. headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
  2250. data: JSON.stringify(tem),
  2251. success: function (res) {
  2252. if (res == '401' || res == 401) {
  2253. window.location.href = '/thmz/login/view'
  2254. return;
  2255. }
  2256. if (res.code == 0) {
  2257. //setPrint();//初始化默认打印机
  2258. printView(res.data);
  2259. successMesage(res);
  2260. } else {
  2261. errorMesage(res);
  2262. }
  2263. }
  2264. });
  2265. }
  2266. function printView(data) {
  2267. $('.sjh').remove();
  2268. $('#print_view input').attr("value", "");
  2269. var age = 0;
  2270. if (null != data) {
  2271. for (var key in data) {
  2272. $("#" + key + "").attr("value", data[key]);
  2273. }
  2274. age = getBirthSlot(data['birthDay'], data.list[0].priceTime);
  2275. $("#age").attr("value", age);
  2276. }
  2277. var list = data.list;
  2278. if (age.substring(0, age.indexOf('岁')) < 18 && groupNo === '71') {
  2279. $('#drugFlag').attr("value", "儿科");
  2280. printIndex = ekCfPrintIndex;
  2281. } else if (data.warnDeptName.indexOf("急诊") != -1 && groupNo === '71') {
  2282. $('#drugFlag').attr("value", "急诊");
  2283. printIndex = jzCfPrintIndex;
  2284. } else {
  2285. $('#drugFlag').attr("value", "普通");
  2286. printIndex = mzCfPrintIndex;
  2287. }
  2288. if (list[0].drugFlag == 2 || list[0].drugFlag == 3) {
  2289. $('#drugFlag').attr("value", "麻、精一");
  2290. } else if (list[0].drugFlag == 4) {
  2291. $('#drugFlag').attr("value", "精二");
  2292. }
  2293. JsBarcode("#cfBarcode", data.patientId+'|'+data.times+'|'+data.orderNo, {
  2294. lineColor: '#333', //线条颜色
  2295. width: 1, //线宽
  2296. height: 26, //条码高度
  2297. displayValue: false, //是否显示文字信息
  2298. });
  2299. $('#priceTime').attr("value", format(list[0].priceTime, "yyyy-MM-dd HH:mm"));
  2300. // 获取医生签名
  2301. getAjaxRequest("/thmz/getDoctorSignatureImage",{doctorCode:data.employeeCode},false,function (postRes) {
  2302. if(postRes.code == 0){
  2303. $("#employeeName").html("<img src='" + postRes.data + "' style='width:100px;height:23px;'/>")
  2304. }else {
  2305. $('#employeeName').html(data.employeeName);
  2306. }
  2307. })
  2308. $('#sex').attr("value", getSex(data.sex));
  2309. $('#nameCf').attr("value", data.name);
  2310. $('#patientIdCf').attr("value", data.patientId);
  2311. $('#totalPrice').html(data.totalPrice + '元');
  2312. if (data.ybCardNo == null || data.ybCardNo == '') {
  2313. $('#ybCardNo').attr("value", data.icCardNo);
  2314. }
  2315. $('#tbody_yp').html(groupNo === '71' ? getXyPrintHtml(list) : getZyPrintHtml(list));
  2316. $("#patientId").val('');
  2317. LODOP = getLodop();
  2318. LODOP.PRINT_INITA(6, 0, "140mm", "202mm", "泰和医院处方笺");
  2319. LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
  2320. //设置默认打印机
  2321. LODOP.SET_PRINTER_INDEX(printIndex);
  2322. LODOP.SET_PRINT_PAGESIZE(1, '140mm', '202mm', "CreateCustomPage");
  2323. LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
  2324. LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "140mm");
  2325. LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "202mm");
  2326. LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "泰和医院处方笺");//对新建的纸张重命名
  2327. let strStyle='';
  2328. let font = 'font-size: 12px;padding: 2px 2px;';
  2329. if(groupNo !== '71'){
  2330. strStyle = "<style>table,td,th {border-bottom: 1px dashed black;margin-bottom: 2px;";
  2331. strStyle += font;
  2332. strStyle += "}";
  2333. strStyle += "</style>";
  2334. }
  2335. LODOP.ADD_PRINT_HTM("2mm", "4mm", "140mm", "202mm", strStyle + $("div[id='print_view']").html());
  2336. LODOP.PRINT();
  2337. LODOP.NewPageA();//下一页
  2338. // LODOP.PREVIEW();
  2339. }
  2340. function getXyPrintHtml(list) {
  2341. let tr = '';
  2342. for (let i = 0; i < list.length; i++) {
  2343. let printName = list[i].printName == null ? "" : list[i].printName;
  2344. let tryResult = '';
  2345. let tryFlag = '';
  2346. if(list[i].paySelf == 1 || list[i].ybZfFlag == 1){
  2347. continue
  2348. }
  2349. if (list[i].tryResult !== null && list[i].tryResult.trim() === '0') {
  2350. tryResult = '(阴性)';
  2351. } else if (list[i].psFlag === '1' && list[i].tryFlag === '0') {//药品需要皮试,处方未点需要皮试
  2352. tryResult = '<span style="color: red">(免试)</span>';
  2353. }
  2354. if (list[i].tryFlag === '1') {
  2355. tryFlag = '<span style="color: red">(需皮试)</span>';
  2356. }
  2357. var number = i + 1;
  2358. let manufactoryName = list[i].manufactoryName == null || list[i].manufactoryName === '' ? '' : '(' + list[i].manufactoryName + ')';
  2359. tr += '<tr>' +
  2360. ' <td style="margin-bottom: 5px;width: 10px;font-size: 13px;" align="left" valign="top">' + number + "." +
  2361. ' </td>' +
  2362. ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 245px;font-size: 13px;">' + tryResult + list[i].drugName +
  2363. ' </td>' +
  2364. ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 70px;text-align: right;font-size: 13px;">' + list[i].specification +
  2365. ' </td>' +
  2366. ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 5px;text-align: left;font-size: 13px;">×</td>' +
  2367. ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 5px;text-align: left;font-size: 13px;">' + list[i].quantity +
  2368. ' </td>' +
  2369. ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 25px;text-align: left;font-size: 13px;">' + list[i].ypUnitName +
  2370. ' </td>' +
  2371. '</tr>' +
  2372. '<tr>' +
  2373. ' <td style="margin-bottom: 5px;width: 10px;font-size: 13px;" align="left" valign="top">' +
  2374. ' </td>' +
  2375. ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 245px;font-size: 13px;">' + manufactoryName + tryFlag +
  2376. ' </td>' +
  2377. ' <td colspan="4" style="padding-left:0;margin-bottom: 5px;width:220px;vertical-align: middle !important;text-align: left;font-size: 13px;">用法:' + list[i].drugQuan + "&nbsp;" + list[i].drugUnitName + '/次&nbsp;&nbsp;' + list[i].frequencyName + '&nbsp;&nbsp;' + printName +
  2378. ' </td>' +
  2379. '</tr>' +
  2380. '<tr>' +
  2381. ' <td style="margin-bottom: 5px;width: 10px;font-size: 13px;" align="left" valign="top">' +
  2382. ' </td>' +
  2383. ' <td colspan="5" style="margin-bottom: 5px;vertical-align: middle !important;width: 245px;font-size: 13px;">' + (list[i].instructionText == null ? '' : list[i].instructionText) +
  2384. ' </td>' +
  2385. '</tr>' +
  2386. '<tr>' +
  2387. ' <td style="margin-bottom: 5px;width: 10px;font-size: 13px;" align="left" valign="top">' +
  2388. ' </td>' +
  2389. // ' <td colspan="5" style="margin-bottom: 5px;vertical-align: middle !important;width: 245px;font-size: 13px;">' + '货位号:' + list[i].location +
  2390. // ' </td>' +
  2391. ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 245px;font-size: 13px;">货位号:' + list[i].location +
  2392. ' </td>' +
  2393. ' <td colspan="4" style="padding-left:0;margin-bottom: 5px;width:220px;vertical-align: middle !important;text-align: left;font-size: 13px;">零售价:' + list[i].packRetprice + '&nbsp;元/' + list[i].ypUnitName +
  2394. ' </td>' +
  2395. '</tr><tr style="height: 5px;"><td><img src="about:blank" width="5" height="5" /></td></tr>';
  2396. }
  2397. $('#yxwk').remove();
  2398. if (list.length < 5) {
  2399. $('#div_yp_cf').append('<span id="yxwk" style="margin-bottom: 5px;font-size: 13px;">以下为空</span>');
  2400. }
  2401. return tr;
  2402. }
  2403. function getZyPrintHtml(list) {
  2404. let tr = '';
  2405. for (let i = 0; i < list.length;) {
  2406. tr += '<tr class="sjh">' +
  2407. '<td style="width: 160px; font-size: 14px;">' + list[i].drugName + (list[i].instructionText == null || list[i].instructionText === '' ? '' : '【' + list[i].instructionText + '】') +
  2408. '</td>' +
  2409. '<td style="width: 40px;text-align: right; font-size: 14px;">' + list[i].specification +
  2410. '</td>' +
  2411. '<td style="width: 25px;text-align: right;border-right: 1px solid black; font-size: 14px;">' + list[i].quantity + list[i].ypUnitName +
  2412. '</td>';
  2413. if (i + 1 < list.length) {
  2414. tr += '<td style="width: 160px; font-size: 14px;">' + list[i + 1].drugName + (list[i + 1].instructionText == null || list[i + 1].instructionText === '' ? '' : '【' + list[i + 1].instructionText + '】') +
  2415. '</td>' +
  2416. '<td style="width: 40px;text-align: right; font-size: 14px;">' + list[i + 1].specification +
  2417. '</td>' +
  2418. '<td style="width: 25px;text-align: right; font-size: 14px;">' + list[i + 1].quantity + list[i + 1].ypUnitName +
  2419. '</td>' +
  2420. '</tr>';
  2421. }
  2422. i = i + 2;
  2423. }
  2424. let cydj = isEmpty(list[0].cyDj)?'':list[0].cyDj;
  2425. tr += '<tr class="sjh">' +
  2426. '<td colspan="6" style="border: 0 !important;text-align: right;padding: 0;">×&nbsp;' + list[0].drugWin +
  2427. '&nbsp;副&nbsp;&nbsp;'+cydj+'</td>' +
  2428. '</tr>';
  2429. let yf = '';
  2430. yf += isEmpty(list[0].cyMtjs)?'':'每天'+list[0].cyMtjs+'剂,';
  2431. yf += isEmpty(list[0].cyJsl)?'':list[0].cyJssm+list[0].cyJsl+'ml,';
  2432. yf += isEmpty(list[0].cyZql)?'':'煮取量'+list[0].cyZql+'ml,';
  2433. yf += isEmpty(list[0].cyFj)?'':'复煎'+list[0].cyFj+'次。';
  2434. yf += isEmpty(list[0].cyFfcs)?'':'分'+list[0].cyFfcs+'次,';
  2435. yf += isEmpty(list[0].cyFysm)?'':list[0].cyFysm;
  2436. tr += '<tr class="sjh">' +
  2437. '<td colspan="6" style="border: 0 !important;text-align: left;padding: 0; font-size: 14px;">'+yf+'</td>' +
  2438. '</tr>';
  2439. return tr;
  2440. }
  2441. function getAjaxRequest (url, data,async, callBack) {
  2442. requestAs(url, "GET", data, async,"application/x-www-form-urlencoded;charset=UTF-8", function(res) {
  2443. return typeof callBack == "function" && callBack(res)
  2444. })
  2445. }
  2446. function requestAs (url, method, data = {},async, contentType, back){
  2447. $.ajax({
  2448. url: url,
  2449. type: method,
  2450. data: data,
  2451. async: async,
  2452. headers:{'Accept': 'application/json','Authorization':'Bearer '+ localStorage.getItem("token")},
  2453. contentType: contentType,
  2454. dataType: "json",
  2455. success: function(res){
  2456. return typeof back == "function" && back(res);
  2457. },
  2458. error: function(error) {
  2459. console.log(error)
  2460. return typeof back == "function" && back(null);
  2461. }
  2462. });
  2463. }