123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849 |
- //@ sourceURL=west_pharmacy_send.js
- var LODOP; //声明为全局变量
- var printIndex;
- var mzCfPrintIndex = window.localStorage["mzCfPrintIndex"];
- var ekCfPrintIndex = window.localStorage["ekCfPrintIndex"];
- var jzCfPrintIndex = window.localStorage["jzCfPrintIndex"];
- var zsdPrintIndex = window.localStorage["zsdPrintIndex"];
- var bqPrintIndex = window.localStorage["bqPrintIndex"];
- var fskPrintIndex = window.localStorage["fskPrintIndex"];
- var winNo = window.localStorage["winNo"];
- var groupNo = window.localStorage["groupNo"];
- let coreId // 病人id
- let mzHistoryDays = 30 // 门诊历史处方前置天数
- let isTyOk = false;
- var hospitalName ='沭阳铭和医院';
- let yf;
- $(function () {
- getAjaxRequst("/thmz/queryHospitalName",{},true,function (res) {
- hospitalName = res.data
- $('.hospitalName').text(hospitalName)
- })
- init_daterangepicker();
- // 查看门诊历史处方前置天数
- mzHistoryDays = parseInt(!initSysParametersByCode('mzHistoryDays') ? '30' : initSysParametersByCode('mzHistoryDays'))
- $(".selectpicker").selectpicker({
- dropuAuto: false
- });
- if (groupNo == null || winNo == null) {
- return errorMesageSimaple('药房参数未设置,请在发药参数设置中设置');
- }
- yf = selectYfInfo(groupNo)
- // if (yf.xyFlag === '1') {
- // $('#autoCellNumberDiv').hide();
- // }
- openSocket("FY");
- $("input").each(function () {
- this.onkeydown = function (e) { // 监听键盘事件
- let theEvent = window.event || e;
- let code = theEvent.keyCode || theEvent.which;
- if (code == 13) {//回车事件
- $("#btn_query").click(); //触发搜索按钮点击事件
- }
- }
- });
- initTbTable();
- initDynamicSelect("allMzUnitCode", "unitCode");
- //重置查询参数
- $('#btn_clean').click(function () {
- cleanParams();
- });
- $('#btn_clean_history').click(function () {
- $('#reportRangeList span').html(moment().subtract(mzHistoryDays, 'days').format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD'));
- });
- $("#btn_query_history").click(function (t) {
- callHistoryDetail();
- });
- $("#btn_query").click(function (t) {
- initTbTable();
- });
- $("#sendAndMatch").click(function (t) {
- initTbTable();
- });
- $("#btn_radiology_send").click(function (t) {
- initRadiologyTable();
- });
- $("#btn_batch_send").click(function (t) {
- var rows = $("#tb_table").bootstrapTable('getSelections');
- if (rows.length == 0) {
- return errorMesageSimaple('请选择你要进行发药处理的处方');
- }
- var tem = [];
- for (let i = 0; i < rows.length; i++) {
- let item = rows[i];
- item.groupNo = groupNo;
- item.chargeDate = null;//后台转换异常,临时赋空
- tem.push({
- mzChargeDetail: item,
- winNo: winNo
- });
- if (item.confirmFlag != 5 && item.confirmFlag != 0) {
- return errorMesageSimaple('包含非未发药处方,发药失败');
- }
- }
- if (!confirm("确定要对选中的处方进行发药处理吗?")) {
- return;
- }
- batchSendMedicineProcessing(tem);
- });
- $("#btn_ty").click(function (t) {
- saveRefundMedicine();
- });
- $("#btn_cancel_ty").click(function (t) {
- saveCancelRefundMedicine();
- });
- $("#sendDispose").click(function (t) {
- let orderNo = $("#orderNoLabel").val();
- let receiptNo = $("#receiptNoLabel").val();
- let times = $("#timesLabel").val();
- let name = $("#nameLabel").val();
- let patientId = $("#patientIdLabel").val();
- let realNo = $("#realNoLabel").val();
- // 从全局变量获取药师执业资格证号
- let pharPracCertNo = window.currentPharPracCertNo || '';
-
- // 先验证追溯码数量,再决定是否发药
- validateTracCodgQuantity(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo);
- });
- // 追溯码数量确认弹框的确认发药按钮
- $("#confirmTracCodgSend").click(function (t) {
- // ================= 新增:确认发药时再次验证追溯码数量 =================
- // 目的:确保追溯码数量与处方数量完全匹配才能发药
- // 获取处方明细表格数据
- let tableData = $("#tb_table_right").bootstrapTable('getData');
- let hasMismatch = false;
- let mismatchMessage = '';
-
- console.log('确认发药时验证追溯码数量,表格数据:', tableData);
-
- // 遍历每种药品,检查追溯码数量
- for (let i = 0; i < tableData.length; i++) {
- let drug = tableData[i];
- let prescriptionQuantity = parseInt(drug.quantity) || 0; // 处方数量
- let tracCodgCount = 0; // 追溯码数量
-
- // 计算该药品的追溯码数量
- if (!isEmpty(drug.drugTracCodg)) {
- // 按<br>分割追溯码,过滤空值
- let tracCodgList = drug.drugTracCodg.split('<br>').filter(code => code.length > 0);
- tracCodgCount = tracCodgList.length;
- }
-
- console.log('药品:', drug.drugname, '处方数量:', prescriptionQuantity, '追溯码数量:', tracCodgCount);
-
- // 检查数量是否匹配
- if (tracCodgCount !== prescriptionQuantity) {
- hasMismatch = true;
- let difference = tracCodgCount - prescriptionQuantity;
- let differenceText = '';
-
- if (difference > 0) {
- differenceText = '多输入 ' + difference + ' 个';
- } else {
- differenceText = '缺少 ' + Math.abs(difference) + ' 个';
- }
-
- mismatchMessage += '药品【' + drug.drugname + '】: 处方数量 ' + prescriptionQuantity + ',追溯码数量 ' + tracCodgCount + ',' + differenceText + ';\n';
- }
- }
-
- // 如果数量不匹配,阻止发药并显示错误提示
- if (hasMismatch) {
- console.error('追溯码数量不匹配,阻止发药:', mismatchMessage);
- errorMesageSimaple('追溯码数量与处方数量不匹配,无法发药!\n\n' + mismatchMessage);
- return; // 阻止后续操作
- }
- // ================= 新增结束 =================
-
- // ================= 原代码(已隐藏,可能复用) =================
- /*
- // 获取存储的发药参数
- let sendParams = window.pendingSendParams;
- if (sendParams) {
- // 隐藏确认弹框
- $('#tracCodgConfirmModal').modal('hide');
- // 执行发药处理
- sendMedicineProcessing(sendParams.realNo, sendParams.orderNo, sendParams.receiptNo,
- sendParams.times, sendParams.patientId, sendParams.name, sendParams.pharPracCertNo);
- // 清除存储的参数
- window.pendingSendParams = null;
- }
- */
- // ================= 原代码结束 =================
-
- // ================= 新增:数量匹配时的处理逻辑 =================
- // 获取存储的发药参数
- let sendParams = window.pendingSendParams;
- if (sendParams) {
- // 隐藏确认弹框
- $('#tracCodgConfirmModal').modal('hide');
- // 执行发药处理
- sendMedicineProcessing(sendParams.realNo, sendParams.orderNo, sendParams.receiptNo,
- sendParams.times, sendParams.patientId, sendParams.name, sendParams.pharPracCertNo);
- // 清除存储的参数
- window.pendingSendParams = null;
- console.log('追溯码数量验证通过,执行发药处理');
- }
- // ================= 新增结束 =================
- });
-
- $("#printSend").click(function (t) {
- $('#zydybqModal').modal('hide');
- $("#zyypbq_name").attr("value", $("#zydyNameLabel").val());
- $("#zyypbq_sex").attr("value", $("#sexLabel").val());
- $("#zyypbq_age").attr("value", $("#ageLabel").val());
- $("#zyypbq_date").attr("value", $("#dateLabel").val());
- $("#zyypbq_comm").text($("#yfLabel").val());
- if ($("#syfsLabel").val() == 0) {
- $("#zybq_title").text("中药【口服】标签");
- } else {
- $("#zybq_title").text("中药【外用】标签");
- }
- LODOP = getLodop();
- LODOP.PRINT_INITA(6, 0, "50mm", "30mm", "中药标签");
- //设置默认打印机
- LODOP.SET_PRINTER_INDEX(bqPrintIndex);
- LODOP.SET_PRINT_PAGESIZE(1, '50mm', '30mm', "CreateCustomPage");
- LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "50mm");
- LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "30mm");
- LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "中药标签");//对新建的纸张重命名
- LODOP.SET_PRINT_COPIES(parseInt($("#dyslLabel").val()));
- LODOP.ADD_PRINT_HTM("2mm", "2mm", "50mm", "30mm", $('#print_view_zybq').html());
- LODOP.PREVIEW();
- //LODOP.PREVIEW();
- });
- });
- /**
- * 批量发药处理
- */
- function batchSendMedicineProcessing(tem) {
- $("#btn_batch_send").attr("disabled", true);
- $.ajax({
- type: "POST",
- url: '/thmz/batchSendMedicineProcessing',
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
- data: JSON.stringify(tem),
- success: function (res) {
- $("#btn_batch_send").attr("disabled", false);
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- initTbTable($('#tb_table').bootstrapTable('getOptions').pageNumber);
- if (res.code == 0) {
- successMesage(res);
- } else {
- errorMesage(res);
- }
- },
- error: function () {
- $("#btn_batch_send").attr("disabled", false);
- }
- });
- }
- /**
- * 获取按钮组选择的下标
- * @param id
- * @returns {number}
- */
- function getIndex(id) {
- var index = 0;
- var item = $("#" + id).find("button");
- for (var i = 0; i <= item.length; i++) {
- if ($(item[i]).hasClass("btn-primary")) {
- index = i;
- break;
- }
- }
- return index;
- }
- /**
- * 设置病人id
- */
- function setPatientId() {
- var patientId_or_cardNo = $("#patientId_or_cardNo").val();
- if (patientId_or_cardNo == '') {
- return $("#patientId").val("");
- }
- $.ajax({
- type: "GET",
- url: '/thmz/getByIcCardNo?icCardNo=' + patientId_or_cardNo,
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
- success: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- if (res.code == 0) {
- if (res.data != null) {
- $("#patientId").val(res.data.patientId);
- } else {
- $("#patientId").val(patientId_or_cardNo);
- }
- }
- }
- });
- }
- /**
- * 列表类型按钮切换事件
- * @param object
- * @param realIndex 下标
- */
- function sendRefundButtonChange(object, realIndex) {
- $("#send_refund_group").find("button").each(function (index, element) {
- if ($(element).hasClass("btn-primary")) {
- $(element).removeClass("btn-primary").addClass("btn-default");
- }
- });
- if (realIndex == 0) {
- $("#confirmFlagSearch").empty();
- $("#confirmFlagSearch").append("<option value='0' selected>未发药</option>");
- $("#confirmFlagSearch").append("<option value='1'>已发药</option>");
- $("#confirmFlagSearch").selectpicker('refresh');
- $("#tb_table_right_ty").css("display", "none");
- $("#return_total_amount").css("display", "none");
- $("#btn_ty").addClass("hidden");
- $("#btn_cancel_ty").addClass("hidden");
- $("#btn_radiology_send").removeClass("hidden");
- $("#btn_batch_send").removeClass("hidden");
- } else {
- $("#confirmFlagSearch").empty();
- $("#confirmFlagSearch").append("<option value='2' selected>待退药</option>");
- $("#confirmFlagSearch").append("<option value='3'>已退药</option>");
- $("#confirmFlagSearch").selectpicker('refresh');
- $("#tb_table_right_ty").css("display", "");
- $("#btn_ty").removeClass("hidden");
- $("#btn_cancel_ty").removeClass("hidden");
- $("#btn_radiology_send").addClass("hidden");
- $("#btn_batch_send").addClass("hidden");
- }
- $(object).removeClass("btn-default").addClass("btn-primary");
- initTbTable();
- }
- /**
- * 发药处理
- */
- function sendMedicineProcessing(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo) {
- $("#sendDispose").attr("disabled", true);
- $("#sendDrug").attr("disabled", true);
-
- // 收集药品追溯码数据
- let tableData = $("#tb_table_right").bootstrapTable('getData');
- let drugTracCodgData = [];
- for (let i = 0; i < tableData.length; i++) {
- if (!isEmpty(tableData[i].drugTracCodg)) {
- drugTracCodgData.push({
- drugTracCodg: tableData[i].drugTracCodg,
- patientId: tableData[i].patientId,
- times: tableData[i].times,
- receiptNo: tableData[i].receiptNo,
- orderNo: tableData[i].orderNo,
- itemNo: tableData[i].itemNo,
- chargeItemCode: tableData[i].chargeItemCode,
- serial: tableData[i].serial,
- groupNo: tableData[i].groupNo,
- realNo: tableData[i].realNo,
- specification: tableData[i].specification,
- drugName: tableData[i].drugname,
- abbrName: tableData[i].abbrName,
- unitPrice: tableData[i].unitPrice,
- flag: '0'
- });
- }
- }
-
- var temp = {
- winNo: winNo,
- mzChargeDetail: {
- groupNo: groupNo,
- realNo: realNo,
- orderNo: orderNo,
- receiptNo: receiptNo,
- times: times,
- patientId: patientId,
- name: name,
- windowsNoYf: winNo
- },
- drugTracCodgList: drugTracCodgData // 添加药品追溯码数据
- };
- console.log("sendMedicineProcessing1111111111111",temp)
- $.ajax({
- type: "POST",
- url: '/thmz/sendMedicineProcessing',
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
- data: JSON.stringify(temp),
- success: function (res) {
- $("#sendDispose").attr("disabled", false);
- $("#sendDrug").attr("disabled", false);
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- if (res.code == 0) {
- // 发药成功后,调用医保接口
- callYbSaleGoodsItem(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo);
-
- successMesage(res);
- $('#cfxxModal').modal('hide');
- $("#patientId").val('');
- initTbTable($('#tb_table').bootstrapTable('getOptions').pageNumber);
- // 发药成功后打印处方
- printPrescription(patientId, times, orderNo)
- } else {
- errorMesage(res);
- }
- },
- error: function () {
- $("#sendDispose").attr("disabled", false);
- $("#sendDrug").attr("disabled", false);
- }
- });
- }
- /**
- * 查询处方信息
- */
- function initTbTable(pageIndex) {
- // sendRefundGroup: 0: 发药; 1: 退药
- var sendRefundGroup = getIndex("send_refund_group");
- var visible = false;
- var qrsjVisible = false;
- var tysjVisible = false;
- var url = "/thmz/getSendMedicinePrescription";
- if (sendRefundGroup == 1) {
- visible = true;
- if ($("#confirmFlagSearch").val() == 2) {
- qrsjVisible = true;
- } else {
- tysjVisible = true;
- }
- url = "/thmz/getYfRefundMedicine";
- $("#tb_table_div").attr("class", "col-md-7 col-sm-7 col-xs-12");
- } else {
- $("#tb_table_div").attr("class", "");
- }
- $('#tb_table').bootstrapTable("destroy");
- $('#tb_table').bootstrapTable({
- url: url, //请求后台的URL(*)
- method: 'post', //请求方式(*)
- striped: true, //是否显示行间隔色
- cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
- pagination: true, //是否显示分页(*)
- sortable: true, //是否启用排序
- sortOrder: "asc", //排序方式
- queryParams: queryParams, //传递参数(*)
- sidePagination: $("#confirmFlagSearch").val() == 0 ? 'client' : 'server', //分页方式:client客户端分页,server服务端分页(*)
- pageNumber: pageIndex || 1, //初始化加载第一页,默认第一页
- pageSize: 15, //每页的记录行数(*)
- pageList: [25, 50, 100], //可供选择的每页的行数(*)
- search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
- singleSelect: sendRefundGroup == 1 ? true : false, // 多选checkbox
- strictSearch: true,
- showColumns: false, //是否显示所有的列
- showRefresh: false, //是否显示刷新按钮
- minimumCountColumns: 2, //最少允许的列数
- clickToSelect: true, //是否启用点击选中行
- uniqueId: "ID", //每一行的唯一标识,一般为主键列
- showToggle: false, //是否显示详细视图和列表视图的切换按钮
- cardView: false, //是否显示详细视图
- detailView: false,
- //rowStyle:rowStyle,//通过自定义函数设置行样式
- ajaxOptions: {
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- }
- },
- columns: [
- {
- field: 'checked',
- checkbox: true,
- align: "center",
- valign: 'middle',
- //visible: visible,
- formatter: function (value, row, index) {
- if (index == 0 && sendRefundGroup == 1) {
- $("#return_total_amount").css("display", "");
- fitfymx(row.patientId, row.times, row.receiptNo, row.orderNo, row.groupNo);
- return {
- checked: true//设置选中
- };
- }
- }
- }, {
- title: '操作',
- align: "center",
- valign: 'middle',
- visible: !visible,
- formatter: function (value, row, index) {
- var str = "";
- if (sendRefundGroup == 0) {
- 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>';
- // if (yf.xyFlag === '1') {
- // str += '<button type="button" class="btn btn-primary btn-sm" title="叫号" onclick="callNumber(\'' + row.patientId + '\',\'' + row.name + '\')">叫号 <i class="glyphicon glyphicon-bullhorn"></i></button>';
- // }
- // if (row.confirmFlag == 5 || row.confirmFlag == 0) {
- // let pharPracCertNoForSend = (row.pharPracCertNo || '').replace(/'/g, '\\\'');
- // 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 + '\',\'' + pharPracCertNoForSend + '\')">发药 <i class="fa fa-check-square-o"></i></button>';
- // }
- let pharPracCertNo = (row.pharPracCertNo || '').replace(/'/g, '\\\'');
- 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 + '\',\'' + pharPracCertNo + '\')">详细 <i class="fa fa-plus"></i></button>';
- str += '<button type="button" class="btn btn-primary btn-sm" title="历史处方" onclick="prescriptionHistoryDetail(\'' + row.patientId + '\',\'' + 0 +'\')">历史处方 <i class="fa fa-eye"></i></button>';
- 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>';
- }
- return str;
- }
- }, {
- title: '操作',
- align: "center",
- valign: 'middle',
- visible: visible,
- formatter: function (value, row, index) {
- 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>';
- }
- }, {
- field: 'confirmFlag',
- title: '状态',
- align: "center",
- valign: 'middle',
- width: 80,
- formatter: function (value, row, index) {
- if(value == '5') {
- return "<div style='background: #087f5b'><span>已配药</span></div>";
- } else if(value == '1') {
- return "<div style='background: #4dabf7'><span>已发药</span></div>";
- } else if(value == '0') {
- if(row.printFlag == '1'){
- return "<div style='background: #c3d94e'><span>配药中</span></div>";
- }
- return "<div style='background: #f59f00'><span>待配药</span></div>";
- } else if(value == '3') {
- return "<div style='background: #868e96'><span>已取消</span></div>";
- }
- return "<div style='background: #d9480f'><span>其他</span></div>";
- }
- }, {
- field: 'pdStatus',
- title: '排队状态',
- align: "center",
- valign: 'middle',
- visible: !visible,
- width: 80,
- formatter: function (value, row, index) {
- if(value == '0') {
- return "<div style='background: #087f5b'><span>已排队</span></div>";
- } else if(row.confirmFlag == '1') {
- return "<div style='background: #4dabf7'><span>已完成</span></div>";
- } else {
- return "<div style='background: #d9480f'><span>未排队</span></div>";
- }
- }
- }, {
- field: 'pdSort',
- title: '排队序号',
- align: "center",
- valign: 'middle',
- visible: !visible,
- }, {
- field: 'patientId',
- title: '病人ID',
- align: "center",
- valign: 'middle'
- }, {
- field: 'name',
- title: '姓名',
- align: "center",
- valign: 'middle'
- // formatter: function (value, row, index) {
- // if (sendRefundGroup == 0) {
- // for (let i = 0; i < pastList.length; i++) {
- // if (pastList[i].patient_id == row.patientId) {
- // return (row.lineUp !== 10000 ? '<span class="number-name" style="background: red"> ' + row.lineUp + ' </span> ' : '') + '<span style="color: red">' + value + '</span>';
- // }
- // }
- // }
- // return (row.lineUp !== 10000 ? '<span class="number-name"> ' + row.lineUp + ' </span> ' : '') + value;
- // }
- }, {
- field: 'orderNo',
- title: '处方号',
- align: "center",
- valign: 'middle'
- }, {
- field: 'warnDeptName',
- title: '申请科室',
- align: "center",
- valign: 'middle',
- }, {
- field: 'employeeName',
- title: '医生',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- if (value == null) {
- return row.doctorName;
- }
- return value;
- }
- }, {
- field: 'chargeDate',
- title: '缴费日期',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- if (value != null && value != "") {
- return format(value, "yyyy-MM-dd HH:mm:ss");
- }
- return "";
- }
- }, {
- field: 'realNo',
- title: '流水号',
- align: "center",
- valign: 'middle',
- }, {
- field: 'confirmTime',
- title: '确认日期',
- align: "center",
- valign: 'middle',
- visible: qrsjVisible,
- formatter: function (value, row, index) {
- if (value != null && value != "") {
- return format(value, "yyyy-MM-dd HH:mm:ss");
- }
- return "";
- }
- }, {
- field: 'inputTime',
- title: '退药日期',
- align: "center",
- valign: 'middle',
- visible: tysjVisible,
- formatter: function (value, row, index) {
- if (value != null && value != "") {
- return format(value, "yyyy-MM-dd HH:mm:ss");
- }
- return "";
- }
- }
- ],
- onClickRow: function (row) {
- if (sendRefundGroup == 1) {
- fitfymx(row.patientId, row.times, row.receiptNo, row.orderNo, row.groupNo);
- }
- },
- onDblClickRow: function (row) {
- if (sendRefundGroup === 0 && yf.xyFlag === '1') {
- printInjectionOralMedicine(row.patientId, row.orderNo, row.realNo, row.times, row.receiptNo, row.confirmFlag);
- }
- // 打印处方
- printPrescription(row.patientId, row.times, row.orderNo)
- },
- responseHandler: function (res) {
- console.log(res);
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- var ress = eval(res);
- // let reverse = getLineUpData(ress.data);
- // $('#tb_table').bootstrapTable('load', reverse);
- if (ress.code == -1) {
- if (ress.message != null && ress.message != '') {
- new PNotify({
- title: '错误提示',
- text: ress.message,
- type: 'error',
- hide: true,
- styling: 'bootstrap3'
- });
- }
- return {
- "total": 0,//总页数
- "rows": {} //数据
- };
- }
- return {
- "total": ress.total,//总页数
- "rows": ress.data //数据
- };
- },
- });
- }
- /**
- * 加载放射科发药记录
- */
- function initRadiologyTable() {
- $('#rad_send_record_table').bootstrapTable("destroy");
- $('#rad_send_record_table').bootstrapTable({
- url: "/thmz/getRadSendRecord", //请求后台的URL(*)
- method: 'post', //请求方式(*)
- striped: true, //是否显示行间隔色
- cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
- pagination: true, //是否显示分页(*)
- sortable: true, //是否启用排序
- sortOrder: "asc", //排序方式
- queryParams: radSendRecordQueryParams, //传递参数(*)
- sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
- pageNumber: 1, //初始化加载第一页,默认第一页
- pageSize: 5, //每页的记录行数(*)
- pageList: [5], //可供选择的每页的行数(*)
- search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
- singleSelect: true, // 单选checkbox
- strictSearch: true,
- showColumns: false, //是否显示所有的列
- showRefresh: false, //是否显示刷新按钮
- minimumCountColumns: 2, //最少允许的列数
- clickToSelect: true, //是否启用点击选中行
- uniqueId: "ID", //每一行的唯一标识,一般为主键列
- showToggle: false, //是否显示详细视图和列表视图的切换按钮
- cardView: false, //是否显示详细视图
- detailView: false,
- paginationDetailHAlign: ' hidden',//隐藏左侧分页信息
- toolbar: '#rad_send_record_toolbar',
- //rowStyle:rowStyle,//通过自定义函数设置行样式
- ajaxOptions: {
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- }
- },
- columns: [
- {
- field: 'startDate',
- title: '起始时间',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- if (index == 0) {
- initRadiologyStatTable(row.sendDate);
- }
- if (value != null && value != "") {
- return format(value, "yyyy-MM-dd");
- }
- return "";
- }
- }, {
- field: 'endDate',
- title: '截止时间',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- if (index == 0) {
- initRadiologyStatTable(row.sendDate);
- }
- if (value != null && value != "") {
- return format(value, "yyyy-MM-dd");
- }
- return "";
- }
- }, {
- field: 'name',
- title: '发药人',
- align: "center",
- valign: 'middle'
- }, {
- field: 'sendDate',
- title: '发药时间',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- if (value != null && value != "") {
- return format(value, "yyyy-MM-dd");
- }
- return "-";
- }
- }
- , {
- title: '操作',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- row.sendDate = (row.sendDate == null) ? '' : row.sendDate;
- 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>';
- if (index == 0 && row.pageIndex == 0) {
- 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>';
- }
- return str;
- }
- }
- ],
- onClickRow: function (row) {
- initRadiologyStatTable(row.sendDate);
- },
- onDblClickRow: function (row) {
- printRadSendMedicineStat(row.sendDate, row.startDate, row.endDate);
- },
- responseHandler: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- var ress = eval(res);
- if (ress.code == -1) {
- if (ress.message != null && ress.message != '') {
- new PNotify({
- title: '错误提示',
- text: ress.message,
- type: 'error',
- hide: true,
- styling: 'bootstrap3'
- });
- }
- return {
- "total": 0,//总页数
- "rows": {} //数据
- };
- }
- return {
- "total": ress.total,//总页数
- "rows": ress.data //数据
- };
- },
- });
- $("#radiologySendModal").modal();
- }
- /**
- * 加载放射科发药统计表格数据
- * @param sendDate
- */
- function initRadiologyStatTable(sendDate) {
- sendDate = (sendDate == null) ? '' : sendDate;
- $('#rad_send_stat_table').bootstrapTable("destroy");
- $('#rad_send_stat_table').bootstrapTable({
- url: "/thmz/getRadSendStat?confirmTime=" + sendDate, //请求后台的URL(*)
- method: 'GET', //请求方式(*)
- striped: true, //是否显示行间隔色
- cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
- pagination: true, //是否显示分页(*)
- sortable: true, //是否启用排序
- sortOrder: "asc", //排序方式
- queryParams: {}, //传递参数(*)
- sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
- pageNumber: 1, //初始化加载第一页,默认第一页
- pageSize: 10, //每页的记录行数(*)
- pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
- search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
- singleSelect: true, // 单选checkbox
- strictSearch: true,
- showColumns: false, //是否显示所有的列
- showRefresh: false, //是否显示刷新按钮
- minimumCountColumns: 2, //最少允许的列数
- clickToSelect: true, //是否启用点击选中行
- uniqueId: "ID", //每一行的唯一标识,一般为主键列
- showToggle: false, //是否显示详细视图和列表视图的切换按钮
- cardView: false, //是否显示详细视图
- detailView: false,
- paginationDetailHAlign: ' hidden',//隐藏左侧分页信息
- toolbar: '#rad_send_stat_toolbar',
- //rowStyle:rowStyle,//通过自定义函数设置行样式
- ajaxOptions: {
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- }
- },
- columns: [
- {
- field: 'location',
- title: '货位号',
- align: "center",
- valign: 'middle'
- }, {
- field: 'name',
- title: '品名',
- align: "center",
- valign: 'middle'
- }, {
- field: 'manuName',
- title: '厂商',
- align: "center",
- valign: 'middle'
- }, {
- field: 'specification',
- title: '规格',
- align: "center",
- valign: 'middle'
- }, {
- field: 'quantity',
- title: '<span style="color: green">数量</span>',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- return '<span style="color: green">' + value + '</span>'
- }
- }, {
- field: 'stockAmount',
- title: '库存',
- align: "center",
- valign: 'middle'
- }
- ],
- responseHandler: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- var ress = eval(res);
- if (ress.code == -1) {
- if (ress.message != null && ress.message != '') {
- new PNotify({
- title: '错误提示',
- text: ress.message,
- type: 'error',
- hide: true,
- styling: 'bootstrap3'
- });
- }
- return {
- "total": 0,//总页数
- "rows": {} //数据
- };
- }
- return {
- "total": ress.total,//总页数
- "rows": ress.data //数据
- };
- },
- });
- }
- /**
- * 放射科发药处理
- */
- function sendMedicineProcessingRad() {
- if (!confirm("确定要进行发药处理吗?")) {
- return;
- }
- $("#sendRad").attr("disabled", true);
- $.ajax({
- type: "GET",
- url: '/thmz/sendMedicineProcessingRad',
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
- data: {},
- success: function (res) {
- $("#sendRad").attr("disabled", false);
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- if (res.code == 0) {
- successMesage(res);
- initRadiologyTable();
- } else {
- errorMesage(res);
- }
- },
- error: function () {
- $("#sendRad").attr("disabled", false);
- }
- });
- }
- /**
- * 打印注射卡口服药品
- */
- function printInjectionOralMedicine(patientId, orderNo, realNo, times, receiptNo, confirmFlag) {
- if (yf.xyFlag === '1') {
- prescriptionDetail(realNo, orderNo, receiptNo, times, patientId, confirmFlag);
- }
- var tem = {
- mzChargeDetail: {
- patientId: patientId,
- orderNo: orderNo,
- realNo: realNo,
- times: times,
- receiptNo: receiptNo,
- groupNo: groupNo,
- },
- autoCellNumber: $('#autoCellNumber').prop('checked') ? 1 : 0,
- winNo: winNo
- };
- $.ajax({
- type: "POST",
- url: '/thmz/getPrintInjectionData',
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
- data: JSON.stringify(tem),
- success: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- console.log(res);
- if (res.code === 0) {
- if (yf.zcyFlag === '1') {
- zyfdy(res.data);
- } else {
- xyfdy(res);
- successMesage(res);
- }
- } else {
- errorMesage(res);
- }
- }
- });
- }
- /**
- * 中药房打印
- * @param data
- */
- function zyfdy(data) {
- $('#zydybqform')[0].reset();
- if (bqPrintIndex == null) {
- return errorMesageSimaple('未设置标签打印机,请在发药参数设置中设置');
- }
- $('#zydyNameLabel').val(data[0].name);
- $('#sexLabel').val(getSex(data[0].sex));
- $('#ageLabel').val(data[0].age);
- $('#dyslLabel').val(data[0].drugWin*2);
- $('#dateLabel').val(format(new Date(), "MM-dd"));
- $('#zydybqModal').modal();
- }
- /**
- * 西药房打印
- */
- function xyfdy(res) {
- var injections = new Array();//注射液
- var drugs = new Array();//普通药品
- for (let i = 0; i < res.data.length; i++) {
- if (res.data[i].classCode == 2 || res.data[i].classCode == 7) {//给药方式 2:输液、雾化吸入、副药等等 7:注射、皮试、副药等等
- injections[injections.length] = res.data[i];
- } else if (res.data[i].classCode != 6) {//给药方式 6:领药 9:外用、局麻、喷用等等
- drugs[drugs.length] = res.data[i];
- }
- }
- if (injections.length == 0 && drugs.length == 0) {
- return errorMesageSimaple('当前处方,无需打印注射单和标签');
- }
- let age = getBirthSlot(res.data[0].birthDay, res.data[0].priceTime);
- //setPrint();
- if (injections.length > 0) {
- if (zsdPrintIndex == null) {
- return errorMesageSimaple('未设置注射单打印机,请在发药参数设置中设置');
- }
- $(".zsd_two_tr").remove();
- $(".zsd_one_tr_1").remove();
- $(".zsd_one_tr_2").remove();
- var patientInfoHtm = '<tr class="zsd_one_tr_1">\n' +
- ' <td style="vertical-align: middle !important;width: 75px;text-align: center;"\n' +
- ' valign="top">姓名\n' +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 100px;">\n' + res.data[0].name +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 75px;text-align: center;">\n' +
- ' 性别\n' +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 100px;text-align: left;">\n' + getSex(res.data[0].sex) +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 75px;text-align: center;">\n' +
- ' 年龄\n' +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 100px;text-align: left;">\n' + age +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 75px;text-align: center;">\n' +
- ' ID号\n' +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 100px;text-align: left;">\n' + res.data[0].patientId +
- ' </td>\n' +
- ' </tr>\n' +
- ' <tr class="zsd_one_tr_2">\n' +
- ' <td style="vertical-align: middle !important;width: 75px;text-align: center;">\n' +
- ' 医生\n' +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 100px;text-align: left;">\n' + res.data[0].employeeName +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 75px;text-align: center;">\n' +
- ' 诊断\n' +
- ' </td>\n' +
- ' <td colspan="5" style="vertical-align: middle !important;width: 250px;text-align: left;">\n' + res.data[0].icdText +
- ' </td>\n' +
- ' </tr>';
- $(".zsd_yp_tr").remove();
- $("#dateTime").html(format(new Date(), "yyyy-MM-dd HH:mm:ss"));
- $('#zsd_one').prepend(patientInfoHtm);
- var zsdYpHtm = '';
- for (let i = 0; i < injections.length; i++) {
- let data = injections[i];
- let manufactoryName = (data.manufactoryName == null || data.manufactoryName == '') ? '' : '(' + data.manufactoryName + ')';
- let groupOrder = (data.groupOrder == '' || data.groupOrder == null) ? data.chargeItemCode : data.groupOrder;
- let psFlag = '';
- if (data.groupOrder != '' || data.groupOrder != null) {
- for (let j = 0; j < injections.length; j++) {
- if (groupOrder === injections[j].groupOrder && injections[j].tryFlag === '1') {
- psFlag = '(需皮试)';
- break
- }
- }
- }
- zsdYpHtm += '<tr class="zsd_yp_tr">\n' +
- ' <td> </td>\n' +
- ' <td style="vertical-align: middle !important;width: 10px;text-align: center;">\n' + groupOrder +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 200px;text-align: left;">\n' + data.drugname + manufactoryName +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.drugQuan +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.drugUnitName +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 130px;text-align: left;">\n' + data.printName + psFlag +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.frequency +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 60px;text-align: center;">\n' + data.orderDays +
- ' </td>\n' +
- ' <td style="vertical-align: middle !important;width: 120px;text-align: left;">\n' + data.specification +
- ' </td>\n' +
- ' </tr>';
- }
- $('#zsd_yp').append(zsdYpHtm);
- var htm = '';
- for (let i = 0; i < 14; i++) {
- htm += '<tr class="zsd_two_tr">\n' +
- ' <td style="vertical-align: middle !important;width: 30px;text-align: center;"> 月 日</td>\n' +
- ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
- ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
- ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
- ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
- // ' <td style="vertical-align: middle !important;width: 30px;text-align: center;"> 月 日</td>\n' +
- // ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
- // ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
- // ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
- // ' <td style="vertical-align: middle !important;width: 30px;text-align: right;"></td>\n' +
- ' </tr>';
- }
- $('#zsd_two').append(htm);
- LODOP = getLodop();
- // LODOP.PRINT_INITA(6, 0, "210mm", "148mm", "铭和医院门、急诊注射单");
- // LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
- LODOP.PRINT_INITA(6, 0, "140mm", "202mm", "铭和医院门、急诊注射单");
- LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
- //设置默认打印机
- LODOP.SET_PRINTER_INDEX(zsdPrintIndex);
- // LODOP.SET_PRINT_PAGESIZE(1, '210mm', '148mm', "CreateCustomPage");
- // LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "210mm");
- // LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "148mm");
- LODOP.SET_PRINT_PAGESIZE(1, '140mm', '202mm', "CreateCustomPage");
- LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
- LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "140mm");
- LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "202mm");
- LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "铭和医院门、急诊注射单");//对新建的纸张重命名
- // LODOP.ADD_PRINT_HTM("5mm", "3mm", "210mm", "148mm", $("div[id='print_view_zsd']").html());
- LODOP.ADD_PRINT_HTM("2mm", "4mm", "140mm", "202mm", $("div[id='print_view_zsd']").html());
- LODOP.PREVIEW();
- //LODOP.PREVIEW();
- }
- if (drugs.length > 0) {
- if (bqPrintIndex == null) {
- return errorMesageSimaple('未设置标签打印机,请在发药参数设置中设置');
- }
- LODOP = getLodop();
- LODOP.PRINT_INITA(6, 0, "80mm", "60mm", "患者药品标签");
- LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
- //设置默认打印机
- LODOP.SET_PRINTER_INDEX(bqPrintIndex);
- LODOP.SET_PRINT_PAGESIZE(1, '80mm', '60mm', "CreateCustomPage");
- LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "80mm");
- LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "60mm");
- LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "患者药品标签");//对新建的纸张重命名
- for (let j = 0; j < drugs.length; j++) {
- for (var key in drugs[j]) {
- $("#ypbq_" + key + "").attr("value", drugs[j][key]);
- $("#ypbq_quantity").attr("value", parseInt(drugs[j]['quantity']));
- }
- $("#dataTime").attr("value", format(new Date(), "yyyy-MM-dd HH:mm"));
- $("#ypbq_sex").attr("value", getSex(drugs[0].sex));
- $("#ypbq_age").attr("value", age);
- $("#NO").attr("value", j + 1 + "/" + drugs.length);
- //用法
- let yf = drugs[j].printName + ',';
- if (drugs[j].drugUnitName == '粒' || drugs[j].drugUnitName == '片' || drugs[j].drugUnitName == '支' || drugs[j].drugUnitName == '袋' || drugs[j].drugUnitName == '包' || drugs[j].drugUnitName == '丸') {
- $("#ypbq_comm").attr("value", yf + drugs[j].comm + ',每次' + (drugs[j].drugQuan == 0.5 ? '半' : drugs[j].drugQuan) + drugs[j].drugUnitName);
- } else if ((drugs[j].weight == null && drugs[j].volum == null) || (drugs[j].weight != null && drugs[j].volum != null)) {
- $("#ypbq_comm").attr("value", yf + drugs[j].comm + ',每次' + drugs[j].drugQuan + drugs[j].drugUnitName);
- } else {
- let weight = (drugs[j].weight == '' || drugs[j].weight == null) ? drugs[j].volum : drugs[j].weight;
- var drugQuan = (drugs[j].drugQuan / weight).toFixed(2);
- if (drugQuan == 0.5) {
- $("#ypbq_comm").attr("value", yf + drugs[j].comm + ',每次半' + drugs[j].miniUnitName);
- } else if (drugQuan < 1) {
- $("#ypbq_comm").attr("value", yf + drugs[j].comm + ',每次' + drugs[j].drugQuan + drugs[j].drugUnitName);
- } else {
- drugQuan = Math.round(drugQuan * 100) / 100;
- $("#ypbq_comm").attr("value", yf + drugs[j].comm + ',每次' + drugQuan + drugs[j].miniUnitName);
- }
- }
- LODOP.ADD_PRINT_HTM("5mm", "2mm", "80mm", "60mm", $("div[id='print_view_bq']").html());
- LODOP.NewPage();//下一页
- }
- LODOP.PREVIEW();
- //LODOP.PREVIEW();
- }
- }
- /**
- * 打印放射科发药药品统计
- */
- function printRadSendMedicineStat(sendDate, startDate, endDate) {
- $.ajax({
- type: "GET",
- url: "/thmz/getPrintRadSendStat?confirmTime=" + sendDate, //请求后台的URL(*)
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
- data: {},
- success: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- if (res.code == 0) {
- var list = res.data;
- if (list.length == 0) {
- return errorMesageSimaple('当前记录无发药药品统计数据');
- }
- if (fskPrintIndex == null) {
- return errorMesageSimaple('未设置放射科发药清单打印机,请在发药参数设置中设置');
- }
- $(".fsk_tr").remove();
- var htm = '';
- for (let i = 0; i < list.length; i++) {
- var data = list[i];
- htm += '<tr class="fsk_tr">' +
- ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">' + (data.location == null ? '-' : data.location) +
- ' </td>' +
- ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">' + data.name +
- ' </td>' +
- ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">' + data.manuName +
- ' </td>' +
- ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">' + data.specification +
- ' </td>' +
- ' <td style="vertical-align: middle !important;width: 30px;text-align: center;">' + data.quantity +
- ' </td>' +
- ' </tr>';
- }
- $('#fsk_tbody').append(htm);
- $('#startDate').html(format(startDate, "yyyy-MM-dd"));
- $('#endDate').html(format(endDate, "yyyy-MM-dd"));
- //setPrint();
- LODOP = getLodop();
- LODOP.PRINT_INITA(6, 0, "241mm", "93.3mm", "放射科发药记录单");
- LODOP.SET_PRINT_STYLE("FontSize", 9); //字体大小
- //设置默认打印机
- LODOP.SET_PRINTER_INDEX(fskPrintIndex);
- LODOP.SET_PRINT_PAGESIZE(1, '241mm', '93.3mm', "CreateCustomPage");
- LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "241mm");
- LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "93.3mm");
- LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "放射科发药记录单");//对新建的纸张重命名
- LODOP.ADD_PRINT_HTM("5mm", "20%", "60%", "93.3mm", $("div[id='print_view_fsk']").html());
- LODOP.PREVIEW();
- //LODOP.PREVIEW();
- successMesage(res);
- } else {
- errorMesage(res);
- }
- }
- });
- }
- /**
- * 已发药和未发药记录构建列表查询参数
- * @param params
- */
- function queryParams(params) {
- var rePortRangeArr = getRePortRangeArr();
- let warnDept;
- if ($("#unitCode").val() == null) {
- warnDept = null;
- } else {
- warnDept = $("#unitCode").val()[0]
- }
- var temp = {
- pageSize: params.limit, //页面大小
- pageIndex: params.offset / params.limit, //页码
- beginDate: rePortRangeArr[0],
- endDate: rePortRangeArr[1],
- name: $("#nameSearch").val() == "" ? null : $("#nameSearch").val(),
- patientId: $("#patientId").val() == "" ? null : $("#patientId").val(),
- confirmFlag: $("#confirmFlagSearch").val(),
- realNo: $("#realNoSearch").val() == "" ? null : $("#realNoSearch").val(),
- warnDept: warnDept,
- groupNoOut: groupNo,
- winNo: winNo,
- isSendAndMatch: 1,
- sortType: $("#sortType option:selected").val()
- };
- return temp;
- };
- /**
- * 放射科发药记录构建列表查询参数
- * @param params
- */
- function radSendRecordQueryParams(params) {
- var temp = {
- pageSize: params.limit, //页面大小
- pageIndex: params.offset / params.limit //页码
- };
- return temp;
- };
- /**
- * 获取时间选择器的时间数组
- * @returns {string[]}
- */
- function getRePortRangeArr() {
- var rePortRange = $('#reportrange span').html();
- var rePortRangeArr = rePortRange.split(" - ");
- rePortRangeArr[0] = rePortRangeArr[0] + " 00:00:00"
- rePortRangeArr[1] = rePortRangeArr[1] + " 23:59:59"
- return rePortRangeArr;
- }
- /**
- * 清空查询条件
- */
- function cleanParams() {
- $('#reportrange span').html(moment().format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD'));
- $("#nameSearch").val('');
- $("#patientId_or_cardNo").val('');
- $("#patientId").val('');
- $("#realNoSearch").val('');
- $("#unitCode").html('');
- $("#unitCode").selectpicker('refresh');
- var sendRefundGroup = getIndex("send_refund_group");
- sendRefundGroup == 0 ? $("#confirmFlagSearch").selectpicker('val', 0) : $("#confirmFlagSearch").selectpicker('val', 2);
- $("#confirmFlagSearch").selectpicker('refresh');
- $("#patientId_or_cardNo").focus();
- }
- /**
- * 查询病人处方明细
- */
- var $table;
- function prescriptionDetail(realNo, orderNo, receiptNo, times, patientId, confirmFlag, pharPracCertNo) {
- // 设置全局变量,供发药按钮使用
- window.currentPharPracCertNo = pharPracCertNo || '';
-
- let isXy = yf.xyFlag === '1';
- if (confirmFlag == 5 || confirmFlag == 0) {
- $("#sendDispose").show();//显示
- } else {
- $("#sendDispose").hide();//隐藏
- }
- var temp = {
- groupNo: groupNo,
- realNo: realNo,
- orderNo: orderNo,
- receiptNo: receiptNo,
- times: times,
- patientId: patientId
- };
- $('#tb_table_right').bootstrapTable("destroy");
- $('#tb_table_allergen').bootstrapTable("destroy");
- $table = $('#tb_table_right').bootstrapTable({
- url: '/thmz/getFyclPrescriptionDetail', //请求后台的URL(*)
- method: 'POST', //请求方式(*)
- striped: true, //是否显示行间隔色
- cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
- pagination: true, //是否显示分页(*)
- sortable: true, //是否启用排序
- sortOrder: "asc", //排序方式
- queryParams: JSON.stringify(temp), //传递参数(*)
- sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
- pageNumber: 1, //初始化加载第一页,默认第一页
- pageSize: 10, //每页的记录行数(*)
- pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
- search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
- strictSearch: true,
- showColumns: false, //是否显示所有的列
- showRefresh: false, //是否显示刷新按钮
- minimumCountColumns: 2, //最少允许的列数
- clickToSelect: true, //是否启用点击选中行
- uniqueId: "ID", //每一行的唯一标识,一般为主键列
- showToggle: false, //是否显示详细视图和列表视图的切换按钮
- cardView: false, //是否显示详细视图
- detailView: false,
- //rowStyle:rowStyle,//通过自定义函数设置行样式
- ajaxOptions: {
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- }
- },
- columns: [
- {
- field: 'manuNo',
- title: '批号',
- align: "center",
- valign: 'middle'
- },{
- field: 'location',
- title: '货位号',
- align: "center",
- valign: 'middle'
- }, {
- field: 'drugname',
- title: '品名',
- align: "center",
- valign: 'middle',
- }, {
- field: 'specification',
- title: '规格',
- align: "center",
- valign: 'middle',
- }, {
- field: 'quantity',
- title: '<span style="color: green">数量</span>',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- return '<span style="color: green">' + value + '</span>'
- }
- }, {
- field: 'ypUnitName',
- title: '单位',
- align: "center",
- valign: 'middle',
- }, {
- field: 'abbrName',
- title: '生产厂家',
- align: "center",
- valign: 'middle',
- visible: isXy
- }, {
- field: 'drugQuan',
- title: '一次剂量',
- align: "center",
- valign: 'middle',
- }, {
- field: 'drugUnitName',
- title: '单位',
- align: "center",
- valign: 'middle',
- }, {
- field: 'frequency',
- title: '频率',
- align: "center",
- valign: 'middle',
- visible: isXy
- }, {
- field: 'decAmount',
- title: '<span style="color: red">退药量</span>',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- return value == null ? '<span style="color: red">-</span>' : '<span style="color: red">' + value + '</span>'
- }
- }, {
- field: 'printName',
- title: '给药方式',
- align: "center",
- valign: 'middle',
- visible: isXy
- }, {
- field: 'unitPrice',
- title: '单价',
- align: "center",
- valign: 'middle',
- }
- , {
- field: 'drugFlag',//毒麻标志:1:毒;2:麻;3:精神1;4:精神2
- title: '<span style="color: red">毒麻</span>',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- if (value == 1) {
- return '<span style="color: red">毒</span>'
- } else if (value == 2) {
- return '<span style="color: red">麻</span>'
- } else if (value == 3) {
- return '<span style="color: red">精神1</span>'
- } else if (value == 4) {
- return '<span style="color: red">精神2</span>'
- } else {
- return '<span style="color: red">-</span>'
- }
- }
- }
- , {
- field: 'stockAmount',
- title: '当前库存',
- align: "center",
- valign: 'middle',
- }
- , {
- field: 'drugWin',
- title: '副数',
- align: "center",
- valign: 'middle',
- visible: !isXy
- }
- , {
- field: 'nationalCode',
- title: '医保编码',
- align: ";left",
- valign: 'middle',
- formatter: function (value, row, index) {
- return value == null ? "-" : value;
- }
- }
- , {
- field: 'employeeName',
- title: '医生姓名',
- visible: false // 隐藏列,仅用于数据传递
- }, {
- field: 'mdtrtSetlType',
- title: '结算类型',
- align: "center",
- valign: 'middle',
- width: 80,
- formatter: function (value, row, index) {
- // 根据处方类型判断:普通处方(1)、特门处方(3)、GCP实验(4)为自费,门诊统筹(2)为医保
- if (value == 1) {
- return '<span style="color: #007bff; font-weight: bold;">医保</span>';
- } else {
- return '<span style="color: #28a745; font-weight: bold;">自费</span>';
- }
- }
- }, {
- field: 'serial',
- title: '拆零状态',
- align: "center",
- valign: 'middle',
- width: 80,
- formatter: function (value, row, index) {
- if (value === '01') {
- return '<span style="color: #dc3545; font-weight: bold;">拆零</span>';
- } else if (value === '99') {
- return '<span style="color: #6c757d;">不拆零</span>';
- } else {
- return '<span style="color: #6c757d;">-</span>';
- }
- }
- }, {
- field: 'drugTracCodg',
- title: '药品追溯码',
- width: '270',
- align: "left",
- valign: 'middle',
- formatter: function (value, row, index) {
- return isEmpty(value)?'':value
- }
- }
- ],
- /**
- * @param {点击列的 field 名称} field
- * @param {点击列的 value 值} value
- * @param {点击列的整行数据} row
- * @param {td 元素} $element
- */
- // onClickCell: function (field, value, row, $element) {
- // if (field === 'drugTracCodg') {
- // $element.attr('contenteditable', true);
- // $element.focus();
- // $element.blur(function () {
- // let index = $element.parent().data('index');
- // let tdValue = $element.html();
- // saveCellData($('#tb_table_right'), index, field, tdValue);
- // })
- // }
- // },
- onClickCell: function (field, value, row, $element) {
- if (field === 'drugTracCodg') {
- $element.attr('contenteditable', true);
- $element.focus();
-
- // 添加扫码输入监听(带防抖)
- let inputTimer = null;
- let lastInputValue = '';
-
- $element.off('input.scan').on('input.scan', function(e) {
- // 使用innerHTML获取包含<br>的完整内容
- let inputValue = e.target.innerHTML;
-
- console.log('扫码输入事件触发,输入值:', inputValue);
- console.log('输入值长度:', inputValue ? inputValue.length : 0);
- console.log('输入值是否包含<br>:', inputValue ? inputValue.includes('<br>') : false);
-
- // 清除之前的定时器
- if (inputTimer) {
- clearTimeout(inputTimer);
- }
-
- // 设置防抖定时器,0.5秒后触发验证
- inputTimer = setTimeout(function() {
- if (inputValue && inputValue.length > 0) {
- // 直接按<br>分割,获取所有追溯码
- let codes = inputValue.split('<br>').filter(code => code.length > 0);
- console.log('分割后的追溯码列表:', codes);
-
- // 检查最后一个追溯码是否为20位或以上
- if (codes.length > 0) {
- let lastCode = codes[codes.length - 1];
- console.log('最后一个追溯码:', lastCode);
- console.log('最后一个追溯码长度:', lastCode.length);
-
- if (lastCode.length >= 20) {
- console.log('防抖触发,准备验证追溯码:', lastCode);
- // 验证最后一个完整的追溯码
- validateAndAddTracCodg(lastCode, row, $element);
- } else {
- console.log('最后一个追溯码长度不正确,不进行验证:', lastCode.length);
- // 添加报错提示
- errorMesageSimaple('追溯码长度不正确,应为20位或以上,当前为' + lastCode.length + '位');
- // 去掉长度不正确的追溯码
- codes.pop();
- // 重新设置单元格内容
- let newContent = codes.join('<br>');
- if (newContent) {
- newContent += '<br>';
- }
- $element.html(newContent);
-
- // 保持焦点在单元格末尾,让用户可以继续扫码
- $element.focus();
- // 将光标移动到内容末尾
- let range = document.createRange();
- let selection = window.getSelection();
- range.selectNodeContents($element[0]);
- range.collapse(false); // false表示移动到末尾
- selection.removeAllRanges();
- selection.addRange(range);
- }
- } else {
- console.log('没有找到有效的追溯码');
- }
- }
- }, 500);
- });
-
- // 保持原有的失去焦点保存逻辑
- $element.off('blur.save').on('blur.save', function () {
- let index = $element.parent().data('index');
- let tdValue = $element.html();
- saveCellData($('#tb_table_right'), index, field, tdValue);
- });
- }
- },
- responseHandler: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- var ress = eval(res);
- if (ress.data.length > 0) {
- $("#employeeNameLabel").val(ress.data[0].employeeName);
- $("#warnDeptNameLabel").val(ress.data[0].warnDeptName);
- $("#chargeDateLabel").val(format(ress.data[0].chargeDate, "yyyy-MM-dd HH:mm:ss"));
- $("#icdTextLabel").val(ress.data[0].icdText);
- $("#orderNoLabel").val(ress.data[0].orderNo);
- $("#receiptNoLabel").val(ress.data[0].receiptNo);
- $("#timesLabel").val(ress.data[0].times);
- $("#nameLabel").val(ress.data[0].name);
- $("#patientIdLabel").val(ress.data[0].patientId);
- $("#realNoLabel").val(ress.data[0].realNo);
- }
- if(ress.patientAllergenInfoList){
- callAllergenInfo(ress.patientAllergenInfoList)
- }
- if (ress.code == -1) {
- if (ress.message != null && ress.message != '') {
- new PNotify({
- title: '错误提示',
- text: ress.message,
- type: 'error',
- hide: true,
- styling: 'bootstrap3'
- });
- }
- return {
- "total": 0,//总页数
- "rows": {} //数据
- };
- }
- return {
- "total": ress.data.length,//总页数
- "rows": ress.data //数据
- };
- },
- onLoadSuccess: function (res) { //加载成功时执行
- var sendTotalAmount = 0;
- for (var i = 0; i < res.rows.length; i++) {
- sendTotalAmount += parseFloat(res.rows[i].quantity * res.rows[i].unitPrice * res.rows[i].drugWin);
- }
- $('#sendTotalAmount').html(sendTotalAmount.toFixed(2));//toFixed(2),保留2位小数,避免js中小数相加小数点后面多出很多位
- },
- });
- $("#cfxxModal").modal();
- }
- /**
- * 查询病人处方药品明细
- */
- function fitfymx(patientId, times, receiptNo, orderNo, groupNoOut) {
- var temp = {
- patientId: patientId,
- times: times,
- receiptNo: receiptNo,
- orderNo: orderNo,
- groupNoOut: groupNoOut,
- confirmFlag: $("#confirmFlagSearch").val()
- };
- $('#tb_table_right_ty').bootstrapTable("destroy");
- $table = $('#tb_table_right_ty').bootstrapTable({
- url: '/thmz/getRefundYpMx', //请求后台的URL(*)
- method: 'post', //请求方式(*)
- striped: true, //是否显示行间隔色
- cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
- pagination: true, //是否显示分页(*)
- sortable: true, //是否启用排序
- sortOrder: "asc", //排序方式
- queryParams: temp, //传递参数(*)
- sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
- pageNumber: 1, //初始化加载第一页,默认第一页
- pageSize: 10, //每页的记录行数(*)
- pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
- search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
- strictSearch: true,
- showColumns: false, //是否显示所有的列
- showRefresh: false, //是否显示刷新按钮
- minimumCountColumns: 2, //最少允许的列数
- clickToSelect: true, //是否启用点击选中行
- uniqueId: "ID", //每一行的唯一标识,一般为主键列
- showToggle: false, //是否显示详细视图和列表视图的切换按钮
- cardView: false, //是否显示详细视图
- detailView: false,
- paginationDetailHAlign: ' hidden',//隐藏左侧分页信息
- //rowStyle:rowStyle,//通过自定义函数设置行样式
- ajaxOptions: {
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- }
- },
- columns: [
- {
- field: 'charge_item_code',
- title: '编码',
- align: "center",
- valign: 'middle'
- },{
- field: 'drugname',
- title: '品名',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- if (value != null && value != "") {
- return value.replace("()", "");
- }
- return "";
- }
- }, {
- field: 'specification',
- title: '规格',
- align: "center",
- valign: 'middle',
- }, {
- field: 'quantity',
- title: '数量',
- align: "center",
- valign: 'middle',
- }, {
- field: 'unit_price',
- title: '单价',
- align: "center",
- valign: 'middle',
- }, {
- field: 'dec_amount',
- title: '<span style="color: red">退药量</span>',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- return '<span style="color: red">' + value + '</span>'
- }
- }, {
- field: 'refund_medicine_remark',
- title: '退药原因',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- if(row.dec_amount > 0){
- return value;
- } else {
- return ''
- }
- }
- }
- ],
- responseHandler: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- var ress = eval(res);
- if (ress.code == -1) {
- if (ress.message != null && ress.message != '') {
- new PNotify({
- title: '错误提示',
- text: ress.message,
- type: 'error',
- hide: true,
- styling: 'bootstrap3'
- });
- }
- return {
- "total": 0,//总页数
- "rows": {} //数据
- };
- }
- return {
- "total": ress.data.length,//总页数
- "rows": ress.data //数据
- };
- },
- onLoadSuccess: function (res) { //加载成功时执行
- var returnTotalAmount = 0;
- var returnAmount = 0;
- for (var i = 0; i < res.rows.length; i++) {
- returnTotalAmount += parseFloat(res.rows[i].quantity * res.rows[i].unit_price);
- returnAmount += parseFloat(res.rows[i].dec_amount * res.rows[i].unit_price);
- }
- $('#returnTotalAmount').html(returnTotalAmount.toFixed(2));//toFixed(2),保留2位小数,避免js中小数相加小数点后面多出很多位
- $('#returnAmount').html(returnAmount.toFixed(2));//toFixed(2),保留2位小数,避免js中小数相加小数点后面多出很多位
- },
- });
- }
- /**
- * 退药处理
- */
- function saveRefundMedicine() {
- let zt = $("#confirmFlagSearch").val()
-
- // 检查是否需要进行追溯码匹配
- if (zt === '2') {
- // 检查是否已经完成匹配
- if (!isTyOk) {
- return errorMesageSimaple('请先匹配退药药品追溯码!');
- }
-
- // 获取退药表格数据,检查是否所有需要退药的药品都已匹配
- let tyTable = $('#ty_table_detail').bootstrapTable("getData");
- let refundData = window.currentRefundData || $table.bootstrapTable('getData');
- // ========== 调试日志开始 ==========
- console.log('=== saveRefundMedicine 调试信息 ===');
- console.log('refundData 样本:', refundData.length > 0 ? refundData[0] : '空数组');
- console.log('tyTable 样本:', tyTable.length > 0 ? tyTable[0] : '空数组');
- console.log('refundData 总数量:', refundData.length);
- console.log('tyTable 总数量:', tyTable.length);
- // ========== 调试日志结束 ==========
- let needRefundItems = [];
-
- // 找出需要退药的药品
- refundData.forEach(function (item, index, arr) {
- if (item.dec_amount != 0) {
- needRefundItems.push({
- chargeItemCode: item.charge_item_code,
- serial: item.serial,
- itemNo: item.item_no
- });
- }
- });
- // ========== 调试日志开始 ==========
- console.log('needRefundItems:', needRefundItems);
- console.log('第一个需要退药的药品字段信息:');
- if (needRefundItems.length > 0) {
- console.log('- chargeItemCode:', needRefundItems[0].chargeItemCode);
- console.log('- serial:', needRefundItems[0].serial);
- console.log('- itemNo:', needRefundItems[0].itemNo);
- }
- // ========== 调试日志结束 ==========
- // 检查每个需要退药的药品是否都已匹配
- let allMatched = true;
- let unmatchedItems = [];
-
- for (let i = 0; i < tyTable.length; i++) {
- let item = tyTable[i];
- // 检查这个药品是否需要退药
- let needRefund = needRefundItems.some(function(refundItem) {
- return refundItem.chargeItemCode === item.chargeItemCode &&
- refundItem.serial === item.serial &&
- refundItem.itemNo === item.itemNo;
- });
-
- if (needRefund) {
- // 检查是否已匹配
- if (isEmpty(item.matchOk) || item.matchOk.indexOf('已匹配') === -1) {
- allMatched = false;
- unmatchedItems.push(item.drugName || '未知药品');
- }
- }
- }
-
- if (!allMatched) {
- return errorMesageSimaple('还有药品未匹配追溯码:' + unmatchedItems.join('、') + ',请完成匹配后再退药!');
- }
- }
-
- var row = $("#tb_table").bootstrapTable('getSelections');
- if (row.length != 1) {
- return errorMesageSimaple('请选择一条处方数据');
- }
- if (row[0].confirmFlag == 3) {
- return errorMesageSimaple('请勿重复退药');
- }
- var data = $table.bootstrapTable('getData');
- var datas = [];
- var i = 0;
- data.forEach(function (item, index, arr) {
- if (item.dec_amount != 0) {
- // 调试日志
- console.log('=== 退药参数调试 ===');
- console.log('item.patient_id:', item.patient_id);
- console.log('item.times:', item.times);
- console.log('item.receipt_no:', item.receipt_no);
- console.log('item.order_no:', item.order_no);
- console.log('item.real_no:', item.real_no);
- console.log('item.dec_amount:', item.dec_amount);
- console.log('item.unit_price:', item.unit_price);
- console.log('item.charge_item_code:', item.charge_item_code);
- console.log('item.serial:', item.serial);
- console.log('item.group_no:', item.group_no);
- console.log('item.item_no:', item.item_no);
- console.log('item.serial_no:', item.serial_no);
-
- var tem = {
- "patientId": item.patient_id,
- "times": item.times,
- "receiptNo": item.receipt_no,
- "orderNo": item.order_no,
- "realNo": item.real_no,
- "decAmount": item.dec_amount,
- "unitPrice": item.unit_price,
- "chargeCode": item.charge_item_code,
- "serial": item.serial,
- "groupNo": item.group_no,
- "itemNo": item.item_no,
- "serialNo": item.serial_no
- }
- datas[i] = tem;
- i++;
- }
- })
- if (datas.length == 0) {
- return errorMesageSimaple('退药处方可退药药品为空');
- }
- if (!confirm("确定要对当前处方的药品进行退药处理吗?")) {
- return;
- }
- $("#btn_ty").attr("disabled", true);
- $.ajax({
- type: "POST",
- url: '/thmz/refundMedicineProcessing',
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
- data: JSON.stringify(datas),
- success: function (res) {
- // ========== 调试日志:AJAX成功响应 ==========
- console.log('=== AJAX成功响应 ===');
- console.log('响应状态: 成功');
- console.log('响应数据:', res);
-
- $("#btn_ty").attr("disabled", false);
- if (res == '401' || res == 401) {
- console.error('认证失败,跳转到登录页面');
- window.location.href = '/thmz/login/view'
- return;
- }
- if (res.code == 0) {
- console.log('退药处理成功');
- successMesage(res);
-
- // ========== 调用退药医保接口 ==========
- console.log('=== 开始调用退药医保接口 ===');
- // 获取退药记录的基本信息
- let refundData = $table.bootstrapTable('getData');
- if (refundData && refundData.length > 0) {
- let firstItem = refundData[0];
- let patientId = firstItem.patient_id;
- let times = firstItem.times;
- let receiptNo = firstItem.receipt_no;
- let orderNo = firstItem.order_no;
- let realNo = Math.abs(firstItem.real_no); // 保证 realNo 为正数
- let name = firstItem.name;
-
- console.log('退药医保接口参数:', {
- patientId: patientId,
- times: times,
- receiptNo: receiptNo,
- orderNo: orderNo,
- realNo: realNo,
- name: name
- });
-
- // 调用退药医保接口
- callYbReturnGoodsItem(realNo, orderNo, receiptNo, times, patientId, name);
- } else {
- console.warn('没有退药数据,跳过医保接口调用');
- }
-
- // 退药成功后重置匹配状态和全局数据
- isTyOk = false;
- window.currentRefundData = null;
- initTbTable();
- } else {
- console.error('退药处理失败:', res.message);
- errorMesage(res);
- }
- },
- error: function () {
- $("#btn_ty").attr("disabled", false);
- }
- });
- }
- /**
- * 撤销退药处理
- */
- function saveCancelRefundMedicine() {
- var row = $("#tb_table").bootstrapTable('getSelections');
- console.log("row11111111111111111111111111111111",row)
- if (row.length != 1) {
- return errorMesageSimaple('请选择一条处方数据');
- }
- if (row[0].confirmFlag != 3) {
- return errorMesageSimaple('请选择已退药记录');
- }
- if (!confirm("确定要撤销当前处方的退药吗?")) {
- return;
- }
- $("#btn_cancel_ty").attr("disabled", true);
- request({
- url: '/cancelRefundMedicineProcessing',
- method: 'GET',
- data: {
- realNo: row[0].realNo,
- groupNo: groupNo,
- receiptNo: row[0].receiptNo,
- orderNo: row[0].orderNo,
- patientId: row[0].patientId,
- times: row[0].times
- }
- }).then((res) => {
- $("#btn_cancel_ty").attr("disabled", false);
- successMesage(res);
-
- // ========== 调用撤销退药医保接口 ==========
- console.log('=== 开始调用撤销退药医保接口 ===');
- // 获取撤销退药记录的基本信息
- let patientId = row[0].patientId;
- let times = row[0].times;
- let receiptNo = row[0].receiptNo;
- let orderNo = row[0].orderNo;
- let realNo = row[0].realNo;
- let name = row[0].name;
- let doctorName = row[0].doctorName;
- console.log('撤销退药医保接口参数:', {
- patientId: patientId,
- times: times,
- receiptNo: receiptNo,
- orderNo: orderNo,
- realNo: realNo,
- name: name
- });
-
- // 调用撤销退药医保接口
- callYbSaleGoodsItemForCancelRefund(realNo, orderNo, receiptNo, times, patientId, name, doctorName);
-
- initTbTable();
- },err =>{
- $("#btn_cancel_ty").attr("disabled",false);
- })
- }
- /**
- * 叫号
- * @param patientId
- * @param name
- */
- function callNumber(patientId, name) {
- $.ajax({
- type: "GET",
- url: '/thmz/callNumber?patientId=' + patientId + "&winNo=" + winNo,
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
- success: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- if (res.code == 0) {
- //jhRecord.push(patientId);
- pastList[pastList.length] = {name: name, patient_id: patientId};
- window.localStorage["pastList"] = JSON.stringify(pastList);
- successMesage(res);
- } else {
- errorMesage(res);
- }
- }
- });
- }
- // 添加门诊过敏史
- var $tableAllergen;
- function callAllergenInfo(allergenList){
- $tableAllergen = $('#tb_table_allergen').bootstrapTable({
- data:allergenList,
- striped: true, //是否显示行间隔色
- cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
- pagination: false, //是否显示分页(*)
- sortable: false, //是否启用排序
- sortOrder: "asc", //排序方式
- sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
- pageNumber: 1, //初始化加载第一页,默认第一页
- pageSize: 10, //每页的记录行数(*)
- pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
- search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
- strictSearch: true,
- showColumns: false, //是否显示所有的列
- showRefresh: false, //是否显示刷新按钮
- minimumCountColumns: 2, //最少允许的列数
- clickToSelect: true, //是否启用点击选中行
- uniqueId: "ID", //每一行的唯一标识,一般为主键列
- showToggle: false, //是否显示详细视图和列表视图的切换按钮
- cardView: false, //是否显示详细视图
- detailView: false,
- //rowStyle:rowStyle,//通过自定义函数设置行样式
- ajaxOptions: {
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- }
- },
- columns: [
- {
- field: 'patNo',
- title: '门诊号',
- align: "center",
- valign: 'middle'
- },{
- field: 'allergenCode',
- title: '过敏源编码',
- align: "center",
- valign: 'middle'
- }, {
- field: 'allergenName',
- title: '过敏源',
- align: "center",
- valign: 'middle',
- }
- ],
- responseHandler: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- if (ress.code == -1) {
- if (ress.message != null && ress.message != '') {
- new PNotify({
- title: '错误提示',
- text: ress.message,
- type: 'error',
- hide: true,
- styling: 'bootstrap3'
- });
- }
- return {
- "total": 0,//总页数
- "rows": {} //数据
- };
- }
- return {
- "total": ress.data.length,//总页数
- "rows": ress.data //数据
- };
- }
- });
- }
- function callHistoryDetail() {
- if(coreId){
- prescriptionHistoryDetail(coreId, '1');
- }
- }
- // 查看历史处方
- let $historyTable
- function prescriptionHistoryDetail(patientId, type){
- coreId = patientId
- if(type === '0'){
- daterangepickerNew('reportRangeList', 'center');
- initSelectHistory();
- }
- $('#tb_table_history').bootstrapTable("destroy");
- $historyTable = $('#tb_table_history').bootstrapTable({
- url: '/thmz/getMzBlRecordList', //请求后台的URL(*)
- method: 'post', //请求方式(*)
- toolbar: '#toolbar', //工具按钮用哪个容器
- striped: true, //是否显示行间隔色
- cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
- pagination: true, //是否显示分页(*)
- sortable: true, //是否启用排序
- sortOrder: "desc", //排序方式
- queryParams: queryDataS, //传递参数(*)
- sidePagination: "server", //分页方式:client客户端分页,server服务端分页(*)
- pageNumber: 1, //初始化加载第一页,默认第一页
- pageSize: 5, //每页的记录行数(*)
- pageList: [5, 10, 15, 25, 30], //可供选择的每页的行数(*)
- search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
- strictSearch: true,
- showColumns: false, //是否显示所有的列
- showRefresh: false, //是否显示刷新按钮
- minimumCountColumns: 2, //最少允许的列数
- clickToSelect: true, //是否启用点击选中行
- uniqueId: "ID", //每一行的唯一标识,一般为主键列
- showToggle: false, //是否显示详细视图和列表视图的切换按钮
- cardView: false, //是否显示详细视图
- detailView: false,
- //rowStyle:rowStyle,//通过自定义函数设置行样式
- ajaxOptions: {
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- }
- },
- columns: [
- {
- title: '操作',
- field: 'op',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- var str = '<button type="button" class="btn btn-primary btn-sm" onclick="showMzBlRecordModal(\'' + row.patientId + '\',' + row.times + ',3)">查看</button>';
- return [str].join('');
- }
- },
- {
- field: 'patientId',
- title: '门诊ID',
- align: "center",
- valign: 'middle'
- }, {
- field: 'patientName',
- title: '患者姓名',
- align: "center",
- valign: 'middle'
- }, {
- field: 'deptCode',
- title: '就诊科室',
- align: "center",
- valign: 'middle'
- }, {
- field: 'doctorCode',
- title: '接诊医师',
- align: "center",
- valign: 'middle'
- }, {
- field: 'firstOrNot',
- title: '初/复诊',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- if (value == '1') {
- return "复诊";
- }
- return "初诊";
- }
- }
- , {
- field: 'visitDate',
- title: '就诊时间',
- align: "center",
- valign: 'middle',
- formatter: function (value, row, index) {
- if (value == null || value == "") {
- return "";
- }
- return format(value, "yyyy-MM-dd HH:mm:ss");
- }
- }
- ],
- responseHandler: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- var ress = eval(res);
- if (ress.code == -1) {
- if (ress.message != null && ress.message != '') {
- errorMesage(ress);
- }
- return {
- "total": 0,//总页数
- "rows": {} //数据
- };
- }
- return {
- "total": ress.total,//总页数
- "rows": ress.data //数据
- };
- },
- });
- $("#historyModal").modal();
- }
- function showMzBlRecordModal(patientId, times, type) {
- $.ajax({
- type: "GET",
- url: '/thmz/getMzBlrecord?patientId=' + patientId + '×=' + times,
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
- success: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- if (res.code == 0) {
- var mzPatientMi = res.mzPatientMi;
- $("#editPatientId").text(mzPatientMi.patientId);
- $("#editPatientName").text(mzPatientMi.name);
- $("#editPatientGender").text(mzPatientMi.gender);
- $("#editPatientAge").text(mzPatientMi.ageString);
- var mzBlRecord = res.mzBlRecord;
- $("#editEmrChiefComplaint").val(mzBlRecord.emrChiefComplaint == null ? "" : mzBlRecord.emrChiefComplaint);
- $("#editEmrHpi").val(mzBlRecord.emrHpi == null ? "" : mzBlRecord.emrHpi);
- $("#editEmrPs").val(mzBlRecord.emrPs == null ? "" : mzBlRecord.emrPs);
- $("#editPersonalHistory").val(mzBlRecord.personalHistory == null ? "" : mzBlRecord.personalHistory);
- $("#editFzZl").val(mzBlRecord.fzZl == null ? "" : mzBlRecord.fzZl);
- $("#editCrbHistory").val(mzBlRecord.crbHistory == null ? "" : mzBlRecord.crbHistory);
- $("#editFamilyHistory").val(mzBlRecord.familyHistory == null ? "" : mzBlRecord.familyHistory);
- $("#editObstericalHistory").val(mzBlRecord.obstericalHistory == null ? "" : mzBlRecord.obstericalHistory);
- $("#editQtjc").val(mzBlRecord.emrPe == null ? "" : mzBlRecord.emrPe);
- setSelectedAttr("editZd", mzBlRecord.icdCode, mzBlRecord.icdText);
- var patientAllergenInfoList = res.patientAllergenInfoList;
- if (patientAllergenInfoList != null && patientAllergenInfoList.length > 0) {
- var zdAllergen = [];
- var ypDitList = [];
- var zdAllergenHtml = '';
- var ypDitListHtml = '';
- var zdAllergeCodes = null;
- var zdAllergeTexts = null;
- var ypDitListodes = null;
- var ypDitListTexts = null;
- for (var i = 0; i < patientAllergenInfoList.length; i++) {
- var patientAllergenInfo = patientAllergenInfoList[i];
- if (patientAllergenInfo.type == 0 || patientAllergenInfo.type == '0') {
- zdAllergen[zdAllergen.length] = patientAllergenInfo.allergenCode;
- zdAllergenHtml += '<option value="' + patientAllergenInfo.allergenCode + '">' + patientAllergenInfo.allergenName + '</option>';
- if (zdAllergeCodes == null) {
- zdAllergeCodes = patientAllergenInfo.allergenCode;
- zdAllergeTexts = patientAllergenInfo.allergenName;
- } else {
- zdAllergeCodes += "," + patientAllergenInfo.allergenCode;
- zdAllergeTexts += "," + patientAllergenInfo.allergenName;
- }
- } else if (patientAllergenInfo.type == 1 || patientAllergenInfo.type == '1') {
- ypDitList[ypDitList.length] = patientAllergenInfo.allergenCode;
- ypDitListHtml += '<option value="' + patientAllergenInfo.allergenCode + '">' + patientAllergenInfo.allergenName + '</option>';
- if (zdAllergeCodes == null) {
- ypDitListodes = patientAllergenInfo.allergenCode;
- ypDitListTexts = patientAllergenInfo.allergenName;
- } else {
- ypDitListodes += "," + patientAllergenInfo.allergenCode;
- ypDitListTexts += "," + patientAllergenInfo.allergenName;
- }
- }
- }
- $("#editZdAllergen").empty();
- $('#editZdAllergen').append(zdAllergenHtml);
- $('#editZdAllergen').selectpicker('refresh');
- $("#editYpDitList").empty();
- $('#editYpDitList').append(ypDitListHtml);
- $('#editYpDitList').selectpicker('refresh');
- $("#editZdAllergen").selectpicker('val', zdAllergen);
- $("#editZdAllergen").selectpicker('refresh');
- $("#editYpDitList").selectpicker('val', ypDitList);
- $("#editYpDitList").selectpicker('refresh');
- $("#editZdAllergen").attr("selectedCodes", zdAllergeCodes);
- $("#editZdAllergen").attr("selectedTexts", zdAllergeTexts);
- $("#editYpDitList").attr("selectedCodes", ypDitListodes);
- $("#editYpDitList").attr("selectedTexts", ypDitListTexts);
- }
- var tentativeDiagnosis = mzBlRecord.tentativeDiagnosis == null ? "" : mzBlRecord.tentativeDiagnosis;
- if ((mzBlRecord.icdCode == null || mzBlRecord.icdCode == "") && mzBlRecord.icdText != null && mzBlRecord.icdText != "") {
- if (tentativeDiagnosis == null || tentativeDiagnosis == "") {
- tentativeDiagnosis = mzBlRecord.icdText;
- } else {
- tentativeDiagnosis = mzBlRecord.icdText + " " + tentativeDiagnosis;
- }
- }
- $("#edittentativeDiagnosis").val(tentativeDiagnosis);
- $("#editEmrJkjy").val(mzBlRecord.emrJkjy == null ? "" : mzBlRecord.emrJkjy);
- $("#bl_weight").val(mzBlRecord.weight == 0 ? null : mzBlRecord.weight);
- $("#bl_temperature").val(mzBlRecord.temperature == 0 ? null : mzBlRecord.temperature);
- $("#bl_sphygmus").val(mzBlRecord.sphygmus == 0 ? null : mzBlRecord.sphygmus);
- $("#bl_breathe").val(mzBlRecord.breathe == 0 ? null : mzBlRecord.breathe);
- $("#bl_pressure_high").val(mzBlRecord.pressureHigh == 0 ? null : mzBlRecord.pressureHigh);
- $("#bl_pressure_floor").val(mzBlRecord.pressureFloor == 0 ? null : mzBlRecord.pressureFloor);
- $("#bl_pressure_high_left").val(mzBlRecord.pressureHighLeft == 0 ? null : mzBlRecord.pressureHighLeft);
- $("#bl_pressure_floor_left").val(mzBlRecord.pressureFloorLeft == 0 ? null : mzBlRecord.pressureFloorLeft);
- if (mzBlRecord.emrProcess != null && mzBlRecord.emrProcess != "") {
- var reg = new RegExp("</br>", "g");//g,表示全部替换。
- var editEmrProcess = mzBlRecord.emrProcess.replace(reg, "\n");
- reg = new RegExp(" ", "g");//g,表示全部替换。
- editEmrProcess = editEmrProcess.replace(reg, "");
- $("#editEmrProcess").val(editEmrProcess);
- } else {
- $("#editEmrProcess").val("");
- }
- if (type == 1) {
- $("#mzBlRecorTitle").html("门诊病历【编辑】");
- $("#setOtherEmrProcess").removeClass("in").addClass("hide");
- $("#openBlRecordModel").removeClass("hide").addClass("in");
- $("#setEmrProcess").removeClass("hide").addClass("in");
- $("#visitingDetailModal").modal("hide");
- } else if (type == 2 || type == 3) {
- $("#mzBlRecorTitle").html("门诊病历【查询】");
- if(type==2){
- $("#setOtherEmrProcess").removeClass("hide").addClass("in");
- }else {
- $("#setOtherEmrProcess").removeClass("in").addClass("hide");
- }
- $("#openBlRecordModel").removeClass("in").addClass("hide");
- $("#setEmrProcess").removeClass("in").addClass("hide");
- //因为预览的时候,关闭预览框没有清空数据,且 此时基础数据的病历次数被清空
- if ($("#mzBlTimes").val() != null && $("#mzBlTimes").val() != "" && ($("#baseMzBlTimes").val() == null || $("#baseMzBlTimes").val() == "")) {
- $("#baseMzBlTimes").val($("#mzBlTimes").val());
- }
- $("#otherBlRecordModal").modal("hide");
- }
- $("#mzBlTimes").val(mzBlRecord.times);
- $("#editMzBlRecordModal").modal();
- } else {
- errorMesage(res);
- }
- }
- });
- }
- function queryDataS(params) {
- var rePortRangeArr = getRePortRangeArr1();
- var temp = { //这里的键的名字和控制器的变量名必须一直,这边改动,控制器也需要改成一样的
- patientId: coreId,
- times: '-1', // 这里需要根据patientId精确查找病人的病历,而不是模糊查询
- beginTime: rePortRangeArr[0],
- endTime: rePortRangeArr[1],
- pageSize: params.limit, //页面大小
- pageIndex: params.offset / params.limit, //页码
- };
- return temp;
- }
- function getRePortRangeArr1() {
- var rePortRange = $('#reportRangeList span').html();
- var rePortRangeArr = rePortRange.split(" - ");
- rePortRangeArr[0] = rePortRangeArr[0] + " 00:00:00"
- rePortRangeArr[1] = rePortRangeArr[1] + " 23:59:59"
- return rePortRangeArr;
- }
- /**
- * 清空区域
- */
- function clearInput() {
- $("#editPatientId").text(null);
- $("#editPatientName").text(null);
- $("#editPatientGender").text(null);
- $("#editPatientAge").text(null);
- $("#editEmrChiefComplaint").val(null);
- $("#editEmrHpi").val(null);
- $("#editEmrPs").val(null);
- $("#editPersonalHistory").val(null);
- $("#editFzZl").val(null);
- $("#editCrbHistory").val(null);
- $("#editFamilyHistory").val(null);
- $("#editObstericalHistory").val(null);
- $("#bl_weight").val(null);
- $("#bl_sphygmus").val(null);
- $("#bl_breathe").val(null);
- $("#bl_pressure_high").val(null);
- $("#bl_pressure_floor").val(null);
- $("#bl_pressure_high_left").val(null);
- $("#bl_pressure_floor_left").val(null);
- $("#editQtjc").val(null);
- $("#editZd").selectpicker('val', null);
- $("#editZd").selectpicker('refresh');
- $("#edittentativeDiagnosis").val(null);
- $("#editEmrProcess").val(null);
- $("#editEmrJkjy").val(null);
- $("#mzBlTimes").val(null);
- }
- function initSelectHistory() {
- $('#reportRangeList span').html(moment().subtract(mzHistoryDays, 'days').format('YYYY-MM-DD') + ' - ' + moment().format('YYYY-MM-DD'));
- //select 从后台加载数据,并保留之前选择的内容
- dynamicSelectWithOri("editZd", '/thmz/getAllZdIcdCommonParams?commonParams=',false);
- //过敏源
- dynamicSelectWithOri("editZdAllergen", '/thmz/getZdAllergenListByCode?code=', false);
- //药品列表
- dynamicSelectWithOri("editYpDitList", '/thmz/getYpZdDictListByCode?code=', false);
- }
- // 退药药品追溯码匹配
- function matchingDrugCodg(patientId, times, receiptNo, orderNo, realNo){
- if(yf.xyFlag !== '1'){
- errorMesage("暂时仅门诊西药房发药才进行配药处理!");
- }
- let isXy = yf.xyFlag === '1';
- let tem = {
- patientId: patientId,
- times: times,
- receiptNo: receiptNo,
- orderNo: orderNo,
- realNo: realNo,
- groupNo: groupNo,
- };
-
- // 保存当前退药数据到全局变量,供匹配检查使用
- window.currentRefundData = $table.bootstrapTable('getData');
-
- $('#ty_table_detail').bootstrapTable("destroy");
- $('#ty_table_detail').bootstrapTable({
- url: '/thmz/getMzDrugTracCodgData', //请求后台的URL(*)
- method: 'POST', //请求方式(*)
- striped: true, //是否显示行间隔色
- cache: false, //是否使用缓存,默认为true,所以一般情况下需要设置一下这个属性(*)
- pagination: true, //是否显示分页(*)
- sortable: true, //是否启用排序
- sortOrder: "asc", //排序方式
- queryParams: JSON.stringify(tem), //传递参数(*)
- sidePagination: "client", //分页方式:client客户端分页,server服务端分页(*)
- pageNumber: 1, //初始化加载第一页,默认第一页
- pageSize: 50, //每页的记录行数(*)
- pageList: [10, 25, 50, 100], //可供选择的每页的行数(*)
- search: false, //是否显示表格搜索,此搜索是客户端搜索,不会进服务端,所以,个人感觉意义不大
- strictSearch: true,
- showColumns: false, //是否显示所有的列
- showRefresh: false, //是否显示刷新按钮
- minimumCountColumns: 2, //最少允许的列数
- clickToSelect: true, //是否启用点击选中行
- uniqueId: "ID", //每一行的唯一标识,一般为主键列
- showToggle: false, //是否显示详细视图和列表视图的切换按钮
- cardView: false, //是否显示详细视图
- detailView: false,
- // rowStyle:rowStyleCharge,//通过自定义函数设置行样式
- ajaxOptions: {
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- }
- },
- columns: [
- {
- field: 'drugName',
- title: '品名',
- align: "center",
- valign: 'middle',
- }, {
- field: 'specification',
- title: '规格',
- align: "center",
- valign: 'middle',
- }, {
- field: 'abbrName',
- title: '生产厂家',
- align: "center",
- valign: 'middle',
- visible: isXy
- }, {
- field: 'unitPrice',
- title: '单价',
- align: "center",
- valign: 'middle',
- }, {
- field: 'drugTracCodg',
- title: '药品追溯码',
- width: '270',
- align: "left",
- valign: 'middle',
- formatter: function (value, row, index) {
- return isEmpty(value)?'':value
- }
- }, {
- field: 'matchOk',
- title: '匹配结果',
- align: "center",
- valign: 'middle',
- }
- ],
- responseHandler: function (res) {
- if (res === '401' || res === 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- let re = eval(res);
- if (re.data.length > 0) {
- $("#patientIdTy").val(re.data[0].patientId);
- $("#timesTy").val(re.data[0].times);
- $("#nameTy").val(re.data[0].name);
- $("#employeeNameLabelTy").val(re.data[0].employeeName);
- $("#warnDeptNameLabelPy").val(re.data[0].warnDeptName);
- $("#smMatchTy").val("");
- }
- if (re.code === -1) {
- if (re.message != null && re.message !== '') {
- new PNotify({
- title: '错误提示',
- text: re.message,
- type: 'error',
- hide: true,
- styling: 'bootstrap3'
- });
- }
- return {
- "total": 0,//总页数
- "rows": {} //数据
- };
- }
- return {
- "total": re.data.length,//总页数
- "rows": re.data //数据
- };
- },
- });
- $("#tyModal").modal();
-
- // 弹窗打开后自动聚焦到扫码输入框
- $("#tyModal").on('shown.bs.modal', function () {
- setTimeout(function() {
- $("#smMatchTy").focus();
- }, 100);
- });
-
- // 防抖定时器
- let matchDebounceTimer = null;
-
- // 支持回车键触发匹配
- $("#smMatchTy").on('keypress', function(e) {
- if (e.which === 13) { // 回车键
- e.preventDefault();
- // 清除防抖定时器
- if (matchDebounceTimer) {
- clearTimeout(matchDebounceTimer);
- }
- matchDrugCodg();
- }
- });
-
- // 输入防抖处理
- $("#smMatchTy").on('input', function() {
- let code = $(this).val().trim();
-
- // 清除之前的定时器
- if (matchDebounceTimer) {
- clearTimeout(matchDebounceTimer);
- }
-
- // 如果输入框有值,设置0.5秒防抖
- if (code && code !== '') {
- matchDebounceTimer = setTimeout(function() {
- matchDrugCodg();
- }, 500);
- }
- });
-
- // 防止onchange和防抖冲突
- $("#smMatchTy").on('change', function() {
- // 清除防抖定时器,避免重复执行
- if (matchDebounceTimer) {
- clearTimeout(matchDebounceTimer);
- matchDebounceTimer = null;
- }
- });
-
- // 扫码输入框获得焦点时全选文本
- $("#smMatchTy").on('focus', function() {
- $(this).select();
- });
- }
- // 匹配扫码
- function matchDrugCodg(){
- if(isTyOk){
- isTyOk = false;
- }
- let code = $("#smMatchTy").val().trim().replace(/[\r\n]/g,"");
-
- // 检查输入是否为空
- if (!code) {
- errorMesageSimaple("请输入或扫描药品追溯码!");
- $("#smMatchTy").focus();
- return false;
- }
-
- let tyTable = $('#ty_table_detail').bootstrapTable("getData");
- let matched = false;
-
- for (let i = 0; i < tyTable.length; i++) {
- if(tyTable[i].drugTracCodg === code){
- if(!isEmpty(tyTable[i].matchOk)){
- warningMesageSimaple("已匹配,请勿重复扫码!");
- // 重复匹配时清空输入框,准备扫描下一个
- $("#smMatchTy").val("").focus();
- return false;
- }
- $('#ty_table_detail').bootstrapTable('updateCell', {
- index: i,
- field: "drugTracCodg",
- value: '<span style="color: green">' + tyTable[i].drugTracCodg + '</span>'
- });
- $('#ty_table_detail').bootstrapTable('updateCell', {
- index: i,
- field: "matchOk",
- value: '<span style="color: green">已匹配</span>'
- });
- successMesageSimaple("药品追溯码匹配成功!");
- matched = true;
- // 匹配成功后清空输入框,准备扫描下一个
- $("#smMatchTy").val("").focus();
- break;
- }
- }
-
- if (!matched) {
- errorMesageSimaple("在退药列表未找到条码对应的药品,请核对!");
- // 匹配失败时清空输入框
- $("#smMatchTy").val("").focus();
- }
- }
- // 确认匹配之后可以退药了
- function matchTp(){
- // 获取退药表格数据
- let tyTable = $('#ty_table_detail').bootstrapTable("getData");
- let refundData = window.currentRefundData || $table.bootstrapTable('getData');
- // ========== 调试日志开始 ==========
- console.log('=== matchTp 调试信息 ===');
- console.log('refundData 样本:', refundData.length > 0 ? refundData[0] : '空数组');
- console.log('tyTable 样本:', tyTable.length > 0 ? tyTable[0] : '空数组');
- // ========== 调试日志结束 ==========
- let needRefundItems = [];
-
- // 找出需要退药的药品
- refundData.forEach(function (item, index, arr) {
- if (item.dec_amount != 0) {
- needRefundItems.push({
- chargeItemCode: item.charge_item_code,
- serial: item.serial,
- itemNo: item.item_no
- });
- }
- });
-
- // 检查每个需要退药的药品是否都已匹配
- let allMatched = true;
- let unmatchedItems = [];
-
- for (let i = 0; i < tyTable.length; i++) {
- let item = tyTable[i];
- // 检查这个药品是否需要退药
- let needRefund = needRefundItems.some(function(refundItem) {
- let matchResult = refundItem.chargeItemCode === item.chargeItemCode &&
- refundItem.serial === item.serial &&
- refundItem.itemNo === item.itemNo;
-
- // ========== 调试日志开始 ==========
- if (i === 0) { // 只打印第一个匹配的调试信息
- console.log('=== 匹配检查调试 ===');
- console.log('tyTable item 字段信息:');
- console.log('- item.chargeItemCode:', item.chargeItemCode);
- console.log('- item.serial:', item.serial);
- console.log('- item.itemNo:', item.itemNo);
- console.log('- item.drugName:', item.drugName);
- console.log('- item.matchOk:', item.matchOk);
- console.log('refundItem 字段信息:');
- console.log('- refundItem.chargeItemCode:', refundItem.chargeItemCode);
- console.log('- refundItem.serial:', refundItem.serial);
- console.log('- refundItem.itemNo:', refundItem.itemNo);
- console.log('匹配结果:', matchResult);
- }
- // ========== 调试日志结束 ==========
-
- return matchResult;
- });
- if (needRefund) {
- // 检查是否已匹配
- if (isEmpty(item.matchOk) || item.matchOk.indexOf('已匹配') === -1) {
- allMatched = false;
- unmatchedItems.push(item.drugName || '未知药品');
- }
- }
- }
-
- if (!allMatched) {
- return errorMesageSimaple('还有药品未匹配追溯码:' + unmatchedItems.join('、') + ',请完成所有匹配后再确认!');
- }
-
- if (!confirm("确定对当前处方所有退药的药品匹配成功?")) {
- return;
- }
- if(!isTyOk){
- isTyOk = true;
- }
- $("#tyModal").modal('hide');
- }
- function printPrescription(patientId, times, orderNo) {
- if (mzCfPrintIndex == null || ekCfPrintIndex == null || jzCfPrintIndex == null) {
- return errorMesageSimaple('打印机参数未设置,请在发药参数设置中设置');
- }
- var tem = {
- patientId: patientId,
- times: times,
- orderNo: orderNo,
- groupNo: groupNo
- };
- $.ajax({
- type: "POST",
- url: '/thmz/getPrintPrescriptionData',
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
- data: JSON.stringify(tem),
- success: function (res) {
- if (res == '401' || res == 401) {
- window.location.href = '/thmz/login/view'
- return;
- }
- if (res.code == 0) {
- //setPrint();//初始化默认打印机
- printView(res.data);
- successMesage(res);
- } else {
- errorMesage(res);
- }
- }
- });
- }
- function groupByGroupProperty(array) {
- return array.reduce((acc, current) => {
- const group = current.groupOrder;
- acc[group] = acc[group] || [];
- acc[group].push(current);
- return acc;
- }, {});
- }
- function printView(data) {
- $('.sjh').remove();
- $('#print_view input').attr("value", "");
- var age = 0;
- if (null != data) {
- for (var key in data) {
- $("#" + key + "").attr("value", data[key]);
- }
- age = getBirthSlot(data['birthDay'], data.list[0].priceTime);
- $("#age").attr("value", age);
- }
- var list = data.list;
- // console.log('list',list);
- if(list.length > 0) {
- let gruop = groupByGroupProperty(list);
- for (const key in gruop) {
- let current = gruop[key]
- // console.log('current',current);
- if (current) {
- if(current.length == 1){
- current[0].groupSign = '⊐'
- } else {
- current.forEach((item,index) => {
- if(index == 0) {
- item.groupSign = '⌝'
- } else if(index == current.length - 1) {
- item.groupSign = '⌟'
- } else {
- item.groupSign = ''
- }
- })
- }
- }
- }
- // console.log('gruop',gruop);
- }
- if (age.substring(0, age.indexOf('岁')) < 18 && yf.xyFlag === '1') {
- $('#drugFlag').attr("value", "儿科");
- printIndex = ekCfPrintIndex;
- } else if (data.warnDeptName.indexOf("急诊") != -1 && yf.xyFlag === '1') {
- $('#drugFlag').attr("value", "急诊");
- printIndex = jzCfPrintIndex;
- } else {
- $('#drugFlag').attr("value", "普通");
- printIndex = mzCfPrintIndex;
- }
- if (list[0].drugFlag == 2 || list[0].drugFlag == 3) {
- $('#drugFlag').attr("value", "麻、精一");
- } else if (list[0].drugFlag == 4) {
- $('#drugFlag').attr("value", "精二");
- } else if(list[0].drugFlag == 1){
- $('#drugFlag').attr("value", "毒");
- }
- JsBarcode("#cfBarcode", data.patientId+'|'+data.times+'|'+data.orderNo, {
- lineColor: '#000000', //线条颜色
- width: 1, //线宽
- height: 26, //条码高度
- displayValue: false, //是否显示文字信息
- });
- $('#priceTime').attr("value", format(list[0].priceTime, "yyyy-MM-dd HH:mm"));
- // 获取医生签名
- getAjaxRequest("/thmz/getDoctorSignatureImage",{doctorCode:data.employeeCode},false,function (postRes) {
- if(postRes.code == 0){
- $("#employeeName").html("<img src='" + postRes.data + "' style='width:80px;'/>")
- }else {
- $('#employeeName').html(data.employeeName);
- }
- })
- $('#sex').attr("value", getSex(data.sex));
- $('#nameCf').attr("value", data.name);
- $('#patientIdCf').attr("value", data.patientId);
- $('#totalPrice').html(data.totalPrice + '元');
- if (data.ybCardNo == null || data.ybCardNo == '') {
- $('#ybCardNo').attr("value", data.icCardNo);
- }
- $('#tbody_yp').html(yf.xyFlag === '1' ? getXyPrintHtml(list) : getZyPrintHtml(list));
- $("#patientId").val('');
- // LODOP = getLodop();
- // LODOP.PRINT_INITA(6, 0, "140mm", "202mm", "铭和医院处方笺");
- // LODOP.SET_PRINT_STYLE("FontSize", 28); //字体大小
- // //设置默认打印机
- // //设置默认打印机
- // LODOP.SET_PRINTER_INDEX(printIndex);
- // LODOP.SET_PRINT_PAGESIZE(1, '140mm', '202mm', "CreateCustomPage");
- // LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true) // 整宽不变形
- // LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "140mm");
- // LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "202mm");
- // LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "铭和医院处方笺");//对新建的纸张重命名
- // let strStyle='';
- // let font = 'font-size: 12px;padding: 2px 2px;';
- // if(yf.xyFlag !== '1'){
- // strStyle = "<style>table,td,th {border-bottom: 1px dashed black;margin-bottom: 2px;";
- // strStyle = "<style>table,td,th {border-bottom: 1px dashed black;margin-bottom: 2px;";
- // strStyle += font;
- // strStyle += font;
- // strStyle += "}";
- // strStyle += "}";
- // strStyle += "</style>";
- // }
- // LODOP.ADD_PRINT_HTM("2mm", "4mm", "140mm", "202mm", strStyle + $("div[id='print_view']").html());
- // LODOP.PREVIEW();
- // LODOP.NewPageA();//下一页
- LODOP = getLodop();
- // 初始化打印区域,参数:top, left, width, height(横向打印时宽高可保持原比例)
- LODOP.PRINT_INITA(6, 0, "202mm", "202mm", "铭和医院处方笺"); // 横向建议交换宽高值适配布局
- // 设置字体大小
- LODOP.SET_PRINT_STYLE("FontSize", 28);
- // 设置默认打印机
- LODOP.SET_PRINTER_INDEX(printIndex);
- // 关键:设置打印方向为横向(1=横向),并保持自定义纸张尺寸
- // 横向打印时,宽高参数建议按 "实际高度, 实际宽度" 传递更符合视觉习惯
- LODOP.SET_PRINT_PAGESIZE(2, 0, 0, "square202");
- // LODOP.SET_PRINT_PAGESIZE(2, 0, 0, "A4");
- // // 整宽不变形模式(横向适配关键)
- // LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOW', true);
- //
- // // 背景图尺寸适配横向纸张
- // LODOP.SET_SHOW_MODE("BKIMG_WIDTH", "202mm");
- // LODOP.SET_SHOW_MODE("BKIMG_HEIGHT", "140mm");
- // 核心配置:同时宽度和高度自适应铺满
- LODOP.SET_PRINT_MODE('FULL_WIDTH_FOR_OVERFLOWFLOW', true); // 宽度铺满
- // LODOP.SET_PRINT_MODE('FULL_HEIGHT_FOR_OVERFLOWFLOW', true); // 高度铺满
- LODOP.SET_PRINT_MODE('AUTO_SCALE', true); // 自动缩放适配
- // 自定义纸张重命名
- LODOP.SET_PRINT_MODE("CREATE_CUSTOM_PAGE_NAME", "铭和医院处方笺");
- let strStyle = '';
- let font = 'font-size: 12px;padding: 2px 2px;';
- if (yf.xyFlag !== '1') {
- strStyle = "<style>";
- strStyle += "table,td,th {border-bottom: 1px dashed black;margin-bottom: 2px;";
- strStyle += font;
- strStyle += "}";
- strStyle += "</style>";
- }
- // 添加HTML内容,参数:top, left, width, height(使用横向纸张的宽高)
- // 宽度设为"100%"可自动适配横向纸张宽度
- let printContent = document.getElementById('print_view').innerHTML
- // LODOP.ADD_PRINT_HTM("2mm", "4mm", "100%", "100%", strStyle + $("div[id='print_view']").html());
- LODOP.ADD_PRINT_HTM("2mm", "4mm", "100%", "100%", strStyle + printContent);
- LODOP.SET_PRINT_MODE("RESELECT_ORIENT",true);
- LODOP.SET_PRINT_MODE("RESELECT_PAGESIZE", true);
- // 预览打印(横向效果)
- // LODOP.PREVIEW();
- // LODOP.NewPageA();//下一页
- // 如需多页,建议在添加内容前调用NewPageA(),此处预览后无需调用
- LODOP.NewPageA();
- LODOP.PREVIEW();
- }
- function getXyPrintHtml(list) {
- let tr = '';
- for (let i = 0; i < list.length; i++) {
- let printName = list[i].printName == null ? "" : list[i].printName;
- let tryResult = '';
- let tryFlag = '';
- if(list[i].paySelf == 1 || list[i].ybZfFlag == 1){
- continue
- }
- if (list[i].tryResult !== null && list[i].tryResult.trim() === '0') {
- tryResult = '(阴性)';
- } else if (list[i].psFlag === '1' && list[i].tryFlag === '0') {//药品需要皮试,处方未点需要皮试
- tryResult = '<span style="color: red">(免试)</span>';
- }
- if (list[i].tryFlag === '1') {
- tryFlag = '<span style="color: red">(需皮试)</span>';
- }
- var number = i + 1;
- let manufactoryName = list[i].manufactoryName == null || list[i].manufactoryName === '' ? '' : '(' + list[i].manufactoryName + ')';
- tr += '<tr>' +
- ' <td style="margin-bottom: 5px;width: 10px;font-size: 18px;" align="left" valign="top">' + number + "." +
- ' </td>' +
- ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 260px;font-size: 13px;">' + tryResult + list[i].drugName +
- ' </td>' +
- ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 65px;text-align: right;font-size: 13px;">' + list[i].specification +
- ' </td>' +
- ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 5px;text-align: left;font-size: 13px;">×</td>' +
- ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 5px;text-align: left;font-size: 13px;">' + list[i].quantity +
- ' </td>' +
- ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 20px;text-align: left;font-size: 13px;">' + list[i].ypUnitName +
- ' </td>' +
- ' <td style="vertical-align: middle !important;width: 60px;text-align: left;font-size:25px;font-weight: bold">' + list[i].groupSign +
- ' </td>' +
- '</tr>' +
- '<tr>' +
- ' <td style="margin-bottom: 5px;width: 10px;font-size: 13px;" align="left" valign="top">' +
- ' </td>' +
- ' <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 + " " + list[i].drugUnitName + '/次 ' + list[i].frequencyName + ' ' + printName +
- ' </td>' +
- ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 245px;font-size: 13px;">' + tryFlag +
- ' </td>' +
- '</tr>' +
- '<tr>' +
- ' <td style="margin-bottom: 5px;width: 10px;font-size: 13px;" align="left" valign="top">' +
- ' </td>' +
- ' <td colspan="5" style="margin-bottom: 5px;vertical-align: middle !important;width: 245px;font-size: 13px;">' + (list[i].instructionText == null ? '' : list[i].instructionText) +
- ' </td>' +
- '</tr>' +
- '<tr>' +
- ' <td style="margin-bottom: 5px;width: 10px;font-size: 13px;" align="left" valign="top">' +
- ' </td>' +
- // ' <td colspan="5" style="margin-bottom: 5px;vertical-align: middle !important;width: 245px;font-size: 13px;">' + '货位号:' + list[i].location +
- // ' </td>' +
- // ' <td style="margin-bottom: 5px;vertical-align: middle !important;width: 245px;font-size: 13px;">货位号:' + list[i].location +
- // ' </td>' +
- // ' <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 + ' 元/' + list[i].ypUnitName +
- // ' </td>' +
- '</tr><tr style="height: 5px;"><td><img src="about:blank" width="5" height="5" /></td></tr>';
- }
- $('#yxwk').remove();
- if (list.length < 5) {
- $('#div_yp_cf').append('<span id="yxwk" style="margin-bottom: 5px;font-size: 13px;">以下为空</span>');
- }
- return tr;
- }
- function getZyPrintHtml(list) {
- let tr = '';
- for (let i = 0; i < list.length;) {
- tr += '<tr class="sjh">' +
- '<td style="width: 160px; font-size: 14px;">' + list[i].drugName + (list[i].instructionText == null || list[i].instructionText === '' ? '' : '【' + list[i].instructionText + '】') +
- '</td>' +
- '<td style="width: 40px;text-align: right; font-size: 14px;">' + list[i].specification +
- '</td>' +
- '<td style="width: 25px;text-align: right;border-right: 1px solid black; font-size: 14px;">' + list[i].quantity + list[i].ypUnitName +
- '</td>';
- if (i + 1 < list.length) {
- 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 + '】') +
- '</td>' +
- '<td style="width: 40px;text-align: right; font-size: 14px;">' + list[i + 1].specification +
- '</td>' +
- '<td style="width: 25px;text-align: right; font-size: 14px;">' + list[i + 1].quantity + list[i + 1].ypUnitName +
- '</td>' +
- '</tr>';
- }
- i = i + 2;
- }
- let cydj = isEmpty(list[0].cyDj)?'':list[0].cyDj;
- tr += '<tr class="sjh">' +
- '<td colspan="6" style="border: 0 !important;text-align: right;padding: 0;">× ' + list[0].drugWin +
- ' 副 '+cydj+'</td>' +
- '</tr>';
- let yf = '';
- yf += isEmpty(list[0].cyMtjs)?'':'每天'+list[0].cyMtjs+'剂,';
- yf += isEmpty(list[0].cyJsl)?'':list[0].cyJssm+list[0].cyJsl+'ml,';
- yf += isEmpty(list[0].cyZql)?'':'煮取量'+list[0].cyZql+'ml,';
- yf += isEmpty(list[0].cyFj)?'':'复煎'+list[0].cyFj+'次。';
- yf += isEmpty(list[0].cyFfcs)?'':'分'+list[0].cyFfcs+'次,';
- yf += isEmpty(list[0].cyFysm)?'':list[0].cyFysm;
- tr += '<tr class="sjh">' +
- '<td colspan="6" style="border: 0 !important;text-align: left;padding: 0; font-size: 14px;">'+yf+'</td>' +
- '</tr>';
- return tr;
- }
- function getAjaxRequest (url, data,async, callBack) {
- requestAs(url, "GET", data, async,"application/x-www-form-urlencoded;charset=UTF-8", function(res) {
- return typeof callBack == "function" && callBack(res)
- })
- }
- function requestAs (url, method, data = {},async, contentType, back){
- $.ajax({
- url: url,
- type: method,
- data: data,
- async: async,
- headers:{'Accept': 'application/json','Authorization':'Bearer '+ localStorage.getItem("token")},
- contentType: contentType,
- dataType: "json",
- success: function(res){
- return typeof back == "function" && back(res);
- },
- error: function(error) {
- console.log(error)
- return typeof back == "function" && back(null);
- }
- });
- }
- /**
- * 新的requestAs函数,用于药品追溯码功能
- * @param url 请求URL
- * @param method 请求方法
- * @param data 请求数据
- * @param async 是否异步
- * @param contentType 内容类型
- * @param back 回调函数
- */
- function requestAsNew (url, method, data = {},async, contentType, back){
- $.ajax({
- type: method,
- url: url,
- contentType: contentType,
- dataType: "json",
- async: async,
- headers: {'Accept': 'application/json', 'Authorization': 'Bearer ' + localStorage.getItem("token")},
- data: data,
- success: function (res) {
- back(res);
- },
- error: function () {
- back(null);
- }
- });
- }
- /**
- * 保存单元格数据
- * @param table 表格对象
- * @param index 行索引
- * @param field 字段名
- * @param value 新值
- */
- function saveCellData(table, index, field, value) {
- table.bootstrapTable('updateCell', {
- index: index,
- field: field,
- value: value
- });
- }
- $(document).ready(function () {
- // 初始化全局变量
- window.currentRefundData = null;
- isTyOk = false;
-
- initTbTable();
- });
- /**
- * 验证并添加追溯码
- * @param tracCodg 追溯码
- * @param rowData 行数据
- * @param $element 单元格元素
- */
- function validateAndAddTracCodg(tracCodg, rowData, $element) {
- // 构建验证数据,只包含可以从rowData中获取的字段
- let validateData = {
- drugTracCodg: tracCodg, // 这是用户扫码输入的追溯码
- patientId: rowData.patientId,
- times: rowData.times,
- receiptNo: rowData.receiptNo,
- orderNo: rowData.orderNo,
- itemNo: rowData.itemNo,
- chargeItemCode: rowData.chargeItemCode,
- drugName: rowData.drugname,
- specification: rowData.specification
- };
-
- // 添加调试日志
- console.log('验证追溯码参数:', validateData);
- console.log('行数据:', rowData);
-
- $.ajax({
- type: "POST",
- url: '/thmz/validateDrugTracCodgForDispensing',
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- },
- data: JSON.stringify(validateData),
- success: function (res) {
- console.log('验证响应:', res);
- if (res.code == 0 && res.data && res.data.isValid) {
- // 验证成功,添加到追溯码集合
- addTracCodgToCell(tracCodg, $element);
- successMesage(res);
- // 验证成功后,保持单元格可编辑状态,用户可以继续扫码
- $element.focus();
- } else {
- // 验证失败
- errorMesage(res);
- // 验证失败时,清理掉无效的追溯码
- let currentContent = $element.html();
- let codes = currentContent.split('<br>').filter(code => code.length > 0);
-
- // 去掉最后一个追溯码(无效的追溯码)
- if (codes.length > 0) {
- codes.pop();
- // 重新设置单元格内容
- let newContent = codes.join('<br>');
- if (newContent) {
- newContent += '<br>';
- }
- $element.html(newContent);
-
- // 保持焦点在单元格末尾
- $element.focus();
- let range = document.createRange();
- let selection = window.getSelection();
- range.selectNodeContents($element[0]);
- range.collapse(false);
- selection.removeAllRanges();
- selection.addRange(range);
- }
- }
- },
- error: function (xhr, status, error) {
- console.error('验证请求失败:', error);
- errorMesageSimaple("验证请求失败");
- // 错误时也清理掉无效的追溯码
- let currentContent = $element.html();
- let codes = currentContent.split('<br>').filter(code => code.length > 0);
-
- // 去掉最后一个追溯码(无效的追溯码)
- if (codes.length > 0) {
- codes.pop();
- // 重新设置单元格内容
- let newContent = codes.join('<br>');
- if (newContent) {
- newContent += '<br>';
- }
- $element.html(newContent);
-
- // 保持焦点在单元格末尾
- $element.focus();
- let range = document.createRange();
- let selection = window.getSelection();
- range.selectNodeContents($element[0]);
- range.collapse(false);
- selection.removeAllRanges();
- selection.addRange(range);
- }
- }
- });
- }
- /**
- * 添加追溯码到单元格
- * @param tracCodg 追溯码(单个追溯码,不包含分隔符)
- * @param $element 单元格元素
- */
- function addTracCodgToCell(tracCodg, $element) {
- let currentValue = $element.html();
-
- console.log('addTracCodgToCell 开始');
- console.log('传入的追溯码:', tracCodg);
- console.log('当前单元格内容:', currentValue);
-
- if (isEmpty(currentValue)) {
- // 如果单元格为空,直接设置追溯码
- console.log('单元格为空,直接设置追溯码');
- $element.html(tracCodg);
- } else {
- // 检查是否已存在该追溯码
- let existingCodes = currentValue.split('<br>');
- console.log('已存在的追溯码列表:', existingCodes);
- console.log('是否已存在:', existingCodes.includes(tracCodg));
-
- if (!existingCodes.includes(tracCodg)) {
- // 如果不存在,添加<br>分隔符后追加
- let newValue = currentValue + '<br>' + tracCodg;
- console.log('添加追溯码,新内容:', newValue);
- $element.html(newValue);
- } else {
- // 追溯码已存在,显示提示
- console.log('追溯码已存在,显示提示');
- if (typeof PNotify !== 'undefined') {
- new PNotify({
- title: '提示',
- text: '该追溯码已添加',
- type: 'info',
- delay: 2000
- });
- }
- }
- }
-
- console.log('addTracCodgToCell 结束,最终单元格内容:', $element.html());
- }
- /**
- * 调用医保商品销售接口
- * @param realNo 流水号
- * @param orderNo 处方号
- * @param receiptNo 发票分票号
- * @param times 次数
- * @param patientId 病人ID
- * @param name 病人姓名
- */
- function callYbSaleGoodsItem(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo) {
- // 获取处方明细数据
- let tableData = $("#tb_table_right").bootstrapTable('getData');
- console.log("callYbSaleGoodsItem11111111111111111111111",tableData)
- if (!tableData || tableData.length === 0) {
- console.log('没有处方明细数据,跳过医保接口调用');
- return;
- }
-
- // 获取当前用户信息(药师信息)
- let currentUserName = localStorage.getItem('userName') || '';
- let currentUserId = localStorage.getItem('userID') || '';
-
- // 获取当前时间
- let currentTime = new Date();
- let selRetnTime = currentTime.getFullYear() + '-' +
- String(currentTime.getMonth() + 1).padStart(2, '0') + '-' +
- String(currentTime.getDate()).padStart(2, '0') + ' ' +
- String(currentTime.getHours()).padStart(2, '0') + ':' +
- String(currentTime.getMinutes()).padStart(2, '0') + ':' +
- String(currentTime.getSeconds()).padStart(2, '0');
-
- // 为每个药品调用一次医保接口
- for (let i = 0; i < tableData.length; i++) {
- let item = tableData[i];
-
- // 构建关联字段组合(用于关联发药记录)
- let currentPatientId = item.patientId || patientId;
- let currentTimes = item.times || times;
- let currentReceiptNo = item.receiptNo || receiptNo;
- let currentOrderNo = item.orderNo || orderNo;
- let chargeItemCode = item.chargeItemCode;
- let currentRealNo = item.realNo || realNo;
-
- console.log('发药关联键:', {patientId: currentPatientId, times: currentTimes, receiptNo: currentReceiptNo, orderNo: currentOrderNo, chargeItemCode, realNo: currentRealNo});
-
- // 参数验证
- // 从处方明细数据中获取开方医师姓名
- console.log('处方明细数据item:', item); // 调试日志
- console.log('doctorName字段:', item.doctorName); // 调试日志
- console.log('employeeName字段:', item.employeeName); // 调试日志
-
- let doctorName = item.doctorName || item.employeeName || '';
- if (!doctorName) {
- console.warn('开方医师姓名为空,使用默认值,item数据:', item);
- doctorName = '未知医师';
- } else {
- console.log('成功获取医生姓名:', doctorName);
- }
-
- if (!currentUserName) {
- console.warn('药师姓名为空,使用默认值');
- currentUserName = '未知药师';
- }
-
- // 构建医保接口参数
- let ybData = {
- // 关联字段 - 直接传递到医保接口
- patientId: currentPatientId,
- times: currentTimes,
- receiptNo: currentReceiptNo,
- orderNo: currentOrderNo,
- chargeItemCode: chargeItemCode,
- realNo: currentRealNo,
-
- // 医疗目录编码(医保编码)
- medListCodg: item.nationalCode,
-
- // 开方医师姓名
- prscDrName: doctorName,
-
- // 药师姓名
- pharName: currentUserName,
-
- // 药师执业资格证号(取当前操作者的药师执业资格证号)
- pharPracCertNo: localStorage.getItem('pharPracCertNo') || '',
-
- // 销售/退货经办人姓名
- selRetnOpterName: currentUserName,
-
- // 就诊结算类型(1-医保结算 2-自费结算)
- // 根据处方类型判断:普通处方(1)、特门处方(3)、GCP实验(4)为自费,门诊统筹(2)为医保
- mdtrtSetlType: (item.mdtrtSetlType && item.mdtrtSetlType === 1) ? '1' : '2',
-
- // 处方药标志
- // rxFlag: item.rxFlag || '1',
- rxFlag: "1",//医院默认都是处方药
-
- // 拆零标志(0-否;1-是)
- trdnFlag: (item.serial === '99') ? '0' : '1',
-
- // 患者相关参数(医保接口需要)
- // 人员证件类型
- psnCertType: item.psnCertType || '01',
- // 证件号码
- certno: item.certno || '',
- // 人员姓名
- psnName: item.psnName || item.name || name || '',
-
- };
- // 追溯码信息
- let drugtracinfo = []
- // 处理追溯码
- if (item.drugTracCodg && item.drugTracCodg !== '') {
- let tracCodes = item.drugTracCodg.split('<br>').filter(code => code !== '');
- for (let j = 0; j < tracCodes.length; j++) {
- drugtracinfo.push({
- drugTracCodg: tracCodes[j]
- });
- }
- }
-
- // 如果没有追溯码,添加空数组(保持数据结构一致)
- if (drugtracinfo.length === 0) {
- drugtracinfo = [];
- }
-
- console.log('调用医保接口,药品:', item.drugname, '参数:', ybData);
- let param = {
- selinfoSold: ybData,
- drugtracinfo: drugtracinfo
- }
-
- // 调用医保接口
- $.ajax({
- type: "POST",
- url: '/thmz/Yb/saleGoodsItem',
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- },
- data: JSON.stringify(param),
- success: function (res) {
- console.log('医保接口调用成功:', res);
- if (res.code !== 0) {
- console.error('医保接口调用失败:', res.message);
- // 医保接口失败不影响发药流程,只记录日志
- }
- },
- error: function (xhr, status, error) {
- console.error('医保接口调用失败:', error);
- // 医保接口失败不影响发药流程,只记录日志
- }
- });
- }
- }
- /**
- * 调用医保商品退货接口
- * @param realNo 流水号
- * @param orderNo 处方号
- * @param receiptNo 发票分票号
- * @param times 次数
- * @param patientId 病人ID
- * @param name 病人姓名
- */
- function callYbReturnGoodsItem(realNo, orderNo, receiptNo, times, patientId, name) {
- // 获取退药明细数据 - 直接使用退药表格数据
- let tableData = window.currentRefundData || $table.bootstrapTable('getData');
-
- if (!tableData || tableData.length === 0) {
- console.log('没有退药明细数据,跳过医保接口调用');
- return;
- }
-
- // 获取当前用户信息(药师信息)
- let currentUserName = localStorage.getItem('userName') || '';
- let currentUserId = localStorage.getItem('userID') || '';
-
- // 获取当前时间
- let currentTime = new Date();
- let selRetnTime = currentTime.getFullYear() + '-' +
- String(currentTime.getMonth() + 1).padStart(2, '0') + '-' +
- String(currentTime.getDate()).padStart(2, '0') + ' ' +
- String(currentTime.getHours()).padStart(2, '0') + ':' +
- String(currentTime.getMinutes()).padStart(2, '0') + ':' +
- String(currentTime.getSeconds()).padStart(2, '0');
-
- // 为每个退药药品调用一次医保接口
- console.log('开始处理退药数据,总数:', tableData.length);
-
- for (let i = 0; i < tableData.length; i++) {
- let item = tableData[i];
-
- console.log('处理第', i + 1, '条退药记录:', {
- 'drugname': item.drugname,
- 'dec_amount': item.dec_amount,
- 'charge_item_code': item.charge_item_code,
- 'serial': item.serial,
- 'item_no': item.item_no
- });
-
- // 只处理有退药数量的药品
- if (item.dec_amount == 0) {
- console.log('跳过数量为0的药品:', item.drugname);
- continue;
- }
-
- // 获取医生姓名
- let doctorName = item.doctor_name || item.name || '';
- if (!doctorName) {
- doctorName = '未知医生';
- }
-
- // 构建医保接口参数
- let ybData = {
- // 关联字段 - 直接传递到医保接口
- patientId: patientId,
- times: times,
- receiptNo: receiptNo,
- orderNo: orderNo,
- chargeItemCode: item.charge_item_code,
- realNo: realNo,
-
- // // 医疗目录编码(医保编码)
- // medListCodg: item.nationalCode || 'NMLC999',
-
- // 销售/退货经办人姓名(必填参数)
- selRetnOpterName: currentUserName,
-
- // // 销售/退货数量
- // selRetnCnt: item.dec_amount,
-
- // // 销售/退货时间
- // selRetnTime: selRetnTime,
-
- // // 最终成交单价
- // finlTrnsPric: item.unit_price,
-
- // // 处方药标志
- // rxFlag: item.rxFlag || '1',
- // rxFlag: '1',//医院默认都是处方药
-
- // // 拆零标志(0-否;1-是)
- // trdnFlag: item.clFlag || '0',
-
- // 追溯码信息
- drugtracinfo: []
- };
-
- // 主动获取追溯码信息(退药后从退药追溯码表查询)
- let tracCodgParams = {
- patientId: patientId,
- times: times,
- receiptNo: receiptNo,
- orderNo: orderNo,
- chargeItemCode: item.charge_item_code,
- serial: item.serial,
- itemNo: item.item_no,
- groupNo: item.group_no || groupNo
- };
- console.log("调用退药医保接口tracCodgParams000000000000000000000",tracCodgParams)
- // 调用追溯码查询接口(异步方式)
- // 注意:退药处理后,追溯码已转移到 mz_drug_trac_codg_ty 表
- $.ajax({
- type: "POST",
- url: '/thmz/getMzDrugTracCodgTyData',
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- },
- data: JSON.stringify(tracCodgParams),
- success: function (tracRes) {
- console.log('追溯码查询结果:', tracRes);
- if (tracRes.code === 0 && tracRes.data && tracRes.data.length > 0) {
- // 将追溯码添加到医保接口参数中
- for (let k = 0; k < tracRes.data.length; k++) {
- let tracItem = tracRes.data[k];
- if (tracItem.drugTracCodg && tracItem.drugTracCodg !== '') {
- ybData.drugtracinfo.push({
- drugTracCodg: tracItem.drugTracCodg
- });
- }
- }
- console.log('成功获取追溯码:', ybData.drugtracinfo);
- } else {
- console.log('未找到追溯码信息');
- }
-
- // 追溯码查询完成后,调用医保接口
- callYbReturnGoodsItemWithData(ybData, item);
- },
- error: function (xhr, status, error) {
- console.error('追溯码查询失败:', error);
- // 即使追溯码查询失败,也要调用医保接口
- callYbReturnGoodsItemWithData(ybData, item);
- }
- });
- }
- }
- /**
- * 调用医保退药接口(带追溯码数据)
- * @param ybData 医保接口参数
- * @param item 退药药品信息
- */
- function callYbReturnGoodsItemWithData(ybData, item) {
- // 如果没有追溯码,添加空数组(保持数据结构一致)
- if (ybData.drugtracinfo.length === 0) {
- ybData.drugtracinfo = [];
- }
-
- console.log('调用医保退药接口,药品:', item.drugname, '参数:', ybData);
-
- // 调用医保接口
- $.ajax({
- type: "POST",
- url: '/thmz/Yb/returnGoodsItem',
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- },
- data: JSON.stringify(ybData),
- success: function (res) {
- console.log('医保退药接口调用成功:', res);
- if (res.code !== 0) {
- console.error('医保退药接口调用失败:', res.message);
- // 医保接口失败不影响退药流程,只记录日志
- }
- },
- error: function (xhr, status, error) {
- console.error('医保退药接口调用失败:', error);
- // 医保接口失败不影响退药流程,只记录日志
- }
- });
- }
- /**
- * 验证追溯码数量与处方数量的匹配情况
- * @param realNo 流水号
- * @param orderNo 处方号
- * @param receiptNo 发票分票号
- * @param times 次数
- * @param patientId 病人ID
- * @param name 病人姓名
- * @param pharPracCertNo 药师执业资格证号
- */
- function validateTracCodgQuantity(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo) {
- // 获取处方明细表格数据
- let tableData = $("#tb_table_right").bootstrapTable('getData');
- let mismatchDetails = [];
- let hasMismatch = false;
-
- console.log('开始验证追溯码数量,表格数据:', tableData);
-
- // 遍历每种药品,检查追溯码数量
- for (let i = 0; i < tableData.length; i++) {
- let drug = tableData[i];
- let prescriptionQuantity = parseInt(drug.quantity) || 0; // 处方数量
- let tracCodgCount = 0; // 追溯码数量
-
- // 计算该药品的追溯码数量
- if (!isEmpty(drug.drugTracCodg)) {
- // 按<br>分割追溯码,过滤空值
- let tracCodgList = drug.drugTracCodg.split('<br>').filter(code => code.length > 0);
- tracCodgCount = tracCodgList.length;
- }
-
- console.log('药品:', drug.drugname, '处方数量:', prescriptionQuantity, '追溯码数量:', tracCodgCount);
-
- // 检查数量是否匹配
- if (tracCodgCount !== prescriptionQuantity) {
- hasMismatch = true;
- let mismatchInfo = {
- drugName: drug.drugname,
- prescriptionQuantity: prescriptionQuantity,
- tracCodgCount: tracCodgCount,
- difference: tracCodgCount - prescriptionQuantity
- };
- mismatchDetails.push(mismatchInfo);
- }
- }
-
- // 如果有不匹配的情况,显示确认弹框
- if (hasMismatch) {
- // 存储发药参数,供确认后使用
- window.pendingSendParams = {
- realNo: realNo,
- orderNo: orderNo,
- receiptNo: receiptNo,
- times: times,
- patientId: patientId,
- name: name,
- pharPracCertNo: pharPracCertNo
- };
-
- // 构建不匹配详情HTML
- let detailsHtml = '<div class="table-responsive"><table class="table table-bordered table-striped">';
- detailsHtml += '<thead><tr><th>药品名称</th><th>处方数量</th><th>追溯码数量</th><th>差异</th></tr></thead><tbody>';
-
- for (let i = 0; i < mismatchDetails.length; i++) {
- let detail = mismatchDetails[i];
- let differenceText = '';
- let rowClass = '';
-
- if (detail.difference > 0) {
- differenceText = '<span style="color: orange;">多输入 ' + detail.difference + ' 个</span>';
- rowClass = 'warning';
- } else if (detail.difference < 0) {
- differenceText = '<span style="color: red;">缺少 ' + Math.abs(detail.difference) + ' 个</span>';
- rowClass = 'danger';
- }
-
- detailsHtml += '<tr class="' + rowClass + '">';
- detailsHtml += '<td>' + detail.drugName + '</td>';
- detailsHtml += '<td>' + detail.prescriptionQuantity + '</td>';
- detailsHtml += '<td>' + detail.tracCodgCount + '</td>';
- detailsHtml += '<td>' + differenceText + '</td>';
- detailsHtml += '</tr>';
- }
-
- detailsHtml += '</tbody></table></div>';
-
- // 显示确认弹框
- $('#tracCodgMismatchDetails').html(detailsHtml);
- $('#tracCodgConfirmModal').modal('show');
-
- console.log('追溯码数量不匹配,显示确认弹框:', mismatchDetails);
- } else {
- // 数量匹配,直接发药
- console.log('追溯码数量匹配,直接发药');
- sendMedicineProcessing(realNo, orderNo, receiptNo, times, patientId, name, pharPracCertNo);
- }
- }
- /**
- * 调用撤销退药医保接口(销售接口)
- * @param realNo 流水号
- * @param orderNo 处方号
- * @param receiptNo 发票分票号
- * @param times 次数
- * @param patientId 病人ID
- * @param name 病人姓名
- */
- function callYbSaleGoodsItemForCancelRefund(realNo, orderNo, receiptNo, times, patientId, name, doctorName) {
- console.log('=== 开始调用撤销退药医保接口 ===');
-
- // 获取当前用户信息(药师信息)
- let currentUserName = localStorage.getItem('userName') || '';
- let pharPracCertNo = localStorage.getItem('pharPracCertNo') || '';
-
- // 构建调用新接口的参数
- let params = {
- patientId: patientId,
- times: times,
- receiptNo: receiptNo,
- orderNo: orderNo,
- groupNoOut: groupNo,
- // 添加医生姓名、药师姓名和药师执业资格证号
- doctorName: doctorName, // 医生姓名,从处方明细中获取
- pharName: currentUserName, // 药师姓名
- pharPracCertNo: pharPracCertNo // 药师执业资格证号
- };
-
- console.log('撤销退药医保接口参数:', params);
-
- // 调用新的撤销退药医保接口
- $.ajax({
- type: "POST",
- url: '/thmz/cancelRefundWithYb',
- contentType: "application/json;charset=UTF-8",
- dataType: "json",
- headers: {
- 'Accept': 'application/json',
- 'Authorization': 'Bearer ' + localStorage.getItem("token")
- },
- data: JSON.stringify(params),
- success: function (res) {
- console.log('撤销退药医保接口调用结果:', res);
- if (res.code === 0) {
- successMesage(res);
- console.log('撤销退药医保接口调用成功');
- } else {
- errorMesage(res);
- console.error('撤销退药医保接口调用失败:', res.message);
- }
- },
- error: function (xhr, status, error) {
- console.error('撤销退药医保接口调用异常:', error);
- errorMesage({message: '撤销退药医保接口调用异常:' + error});
- }
- });
- }
|