3 lines
15 KiB
JavaScript
3 lines
15 KiB
JavaScript
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-oPzat6U0.js","assets/.pnpm-Dwh6tNxD.js","assets/.pnpm-B3v8nGpq.css","assets/file-CAEOOa9_.js","assets/index-CLwe6ftX.js","assets/index-D2fz263J.css","assets/patient-4QJ3YgMJ.js","assets/tcm-BzzBMfBw.js","assets/im-business-message-parse-CVnz1EnV.js","assets/dayjs-Cbxn44tS.js","assets/@tencentcloud/chat-BVcoXjFo.js","assets/@tencentcloud/chat-uikit-engine-DMWQjlY3.js","assets/tim-upload-plugin-DhGO84pK.js","assets/tim-profanity-filter-plugin-B2c46mgl.js","assets/@tencentcloud/call-engine-js-CipqHTHk.js","assets/rtc-detect-DyJ4vVvn.js","assets/index-CWwH04oR.css","assets/edit-DnkDUGqf.js","assets/perm-CHalL7pT.js","assets/DailyMatrix-ZEWps6O_.js","assets/picker-Dr1-lH_q.js","assets/index-De13kk0O.js","assets/index-B3imPWFk.css","assets/index-BhX1mXHA.js","assets/index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js","assets/index-DUJcOhOZ.js","assets/index-D0f1Mn00.css","assets/index-BWeecgSM.js","assets/index.vue_vue_type_script_setup_true_lang-Cxx3Fcm2.js","assets/usePaging-DOuAwzL9.js","assets/index-BYOmK9R5.css","assets/picker-XZbUgFct.css","assets/DiagnosisTodoList-CKk0eyoK.js","assets/DiagnosisTodoList-D0SBmTHG.css","assets/blood-thresholds-CJ1fqMjh.js","assets/DailyMatrix-DCZnxI8i.css","assets/CaseRecordList-DVkgVqIc.js","assets/CaseRecordList-Cl-c3q7S.css","assets/CallRecordPanel-DC7kL0ao.js","assets/RecordingPlaybackBlock-CMHUdU8f.js","assets/RecordingVideoPlayer-CDqcv1v9.js","assets/RecordingVideoPlayer-4DegHAwm.css","assets/RecordingPlaybackBlock-B3KYFgvg.css","assets/CallRecordPanel-TsjZtTO8.css","assets/ImChatRecordPanel-t8Pcf4Au.js","assets/ImChatRecordPanel-aX8zpWRQ.css","assets/AssignLogPanel-BQrh9goI.js","assets/AssignLogPanel-DkQMoEkX.css","assets/AppointmentRecordPanel-ujmTdXIZ.js","assets/doctor-CD6XYjKU.js","assets/AppointmentRecordPanel-DC22GDgn.css","assets/NoteTimeline-DnxvhcAH.js","assets/NoteTimeline-I2FSxX4s.css","assets/PatientOrderList-DG5y-bDo.js","assets/PrescriptionOrderDetailDrawer-Dsyy_M8b.js","assets/prescription-order-utils-B0fYlULc.js","assets/PrescriptionOrderDetailDrawer-DnrTcbh_.css","assets/PatientOrderList-D8-uh2iu.css","assets/index-DPHh7502.js","assets/index-Bptrs_vp.js","assets/medicine-K52GUWS-.js","assets/index-C_LxAEkS.css","assets/diabetes-discovery-display-B_wmGXQJ.js","assets/index-CfTj2vuk.js","assets/index-AnyUcdTT.css","assets/index-DV5JwFnL.css","assets/edit-DOd7Lhrw.css","assets/TrackingNoteTimeline-B9T8pFso.css"])))=>i.map(i=>d[i]);
|
|
import{o as Xe,R as Ze,ap as Je,n as et,aq as tt,be as at,q as r,r as h,s as l,T as k,u as a,ae as Q,v as d,D as v,w as nt,bA as st,b8 as lt,C as ue,b7 as ot,ac as F,bi as it,F as qe,G as ut,L as D,O as w,br as rt,P as q,aw as dt,b5 as ct,as as vt,a1 as ft,d8 as mt,bB as pt,K as gt,ab as _t,bt as ht,a4 as Ie,cb as xe,al as Re,M as i,p as Y}from"./.pnpm-Dwh6tNxD.js";import{r as Ne,n as yt,a as St,b as kt}from"./patient-4QJ3YgMJ.js";import bt from"./NoteTimeline-DnxvhcAH.js";import wt from"./PatientInfoCard-CL3Qv_AW.js";import Ct from"./PatientCaseCard-xuyd_867.js";import Et from"./DailyMatrix-ZEWps6O_.js";import{l as Dt}from"./doctor-CD6XYjKU.js";import{X as qt}from"./tcm-BzzBMfBw.js";import{i as g,_ as It}from"./index-CLwe6ftX.js";import{f as xt}from"./diag-display-DCz_VAqj.js";import"./picker-Dr1-lH_q.js";import"./index-De13kk0O.js";import"./index-BhX1mXHA.js";import"./index.vue_vue_type_script_setup_true_lang-D0KAQf1t.js";import"./index-DUJcOhOZ.js";import"./index-BWeecgSM.js";import"./file-CAEOOa9_.js";import"./index.vue_vue_type_script_setup_true_lang-Cxx3Fcm2.js";import"./usePaging-DOuAwzL9.js";import"./perm-CHalL7pT.js";import"./blood-thresholds-CJ1fqMjh.js";import"./diabetes-discovery-display-B_wmGXQJ.js";import"./DiagnosisTodoList-CKk0eyoK.js";const Rt={class:"reception-page"},Nt={class:"reception-header"},$t={class:"header-left"},Tt={class:"header-meta"},Pt={class:"header-right"},Vt={class:"live-pill"},Lt={class:"filter-shell"},Mt={class:"filter-tabs"},zt={class:"main-area"},At={class:"queue-col"},Bt={class:"queue-panel"},Ft={class:"queue-head"},Ot={class:"queue-title"},Ut={class:"queue-meta"},jt=["onClick"],Gt={class:"row-name"},Wt={class:"name-line"},Kt={class:"name-meta"},Qt={class:"time-line"},Yt=["disabled","onClick"],Ht=["onClick"],Xt={key:0},Zt={key:1,class:"no-more"},Jt={class:"sidebar"},ea={key:0,class:"placeholder-card"},ta={class:"card note-card"},aa={class:"card metric-card"},na={key:0,class:"float-bar"},re=5e3,de=15,sa=Xe({__name:"index",setup(la){const $e=xe(()=>Re(()=>import("./index-oPzat6U0.js"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]))),Te=xe(()=>Re(()=>import("./edit-DnkDUGqf.js"),__vite__mapDeps([17,1,2,7,4,5,18,19,20,21,22,23,24,25,26,27,3,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,9,8,45,46,47,48,49,50,51,6,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67]))),_=i(1),y=i([]),O=i(0),H=i(0),X=i(0),Z=i(1),U=i(!0),j=i(!1),G=i(!1),J=i(!1),c=i(null),m=i(null),ee=i(!1),b=i(""),P=i(!1),V=i(re/1e3),L=i(null);let I=null,x=null,te=!1,M=!1,C=null,W=0,R=0;const ae=i(null),K=i(null),ce=i(),ve=i(),N=i(!1),z=i(""),ne=i(!1),$=Y(()=>{var t;return((t=m.value)==null?void 0:t.appointment)||{}}),S=Y(()=>{var t;return((t=m.value)==null?void 0:t.diagnosis)||{}}),Pe=Y(()=>{var t;return((t=m.value)==null?void 0:t.doctor_notes)||[]}),Ve=Y(()=>{const t=new Date,e=["周日","周一","周二","周三","周四","周五","周六"][t.getDay()],n=o=>String(o).padStart(2,"0");return`${t.getFullYear()}-${n(t.getMonth()+1)}-${n(t.getDate())} ${e}`}),Le=()=>{const t=new Date,e=n=>String(n).padStart(2,"0");return`${t.getFullYear()}-${e(t.getMonth()+1)}-${e(t.getDate())}`},Me=t=>[xt(t.gender),t.age!=null?t.age+"岁":""].filter(n=>n&&n!=="—").join(" "),ze=t=>t?t.replace(/^(\d{2}:\d{2})(:\d{2})?$/,"$1"):"—",se=async(t,e,n)=>{const o=Le(),s=await kt({status:e??_.value,start_date:o,end_date:o,patient_name:(n??b.value)||void 0,page_no:t,page_size:de}),E=(s==null?void 0:s.lists)||(s==null?void 0:s.data)||[],f=Number((s==null?void 0:s.count)??(s==null?void 0:s.total)??0);return{list:E,count:f}},Ae=async(t,e,n)=>{const o=t===1?4:1;try{const{count:s}=await se(1,o,e||void 0);if(n!==W||_.value!==t||b.value!==e)return;o===1?H.value=s:X.value=s}catch{}},A=async t=>{const e=(t==null?void 0:t.silent)===!0;if(e&&te)return;const n=++W,o=_.value,s=b.value,E=(t==null?void 0:t.autoSelect)??!e;te=!0,e||(G.value=!0);try{Z.value=1;const{list:f,count:p}=await se(1,o,s||void 0);if(n!==W||_.value!==o||b.value!==s)return;y.value=f,O.value=p||f.length,o===1?H.value=p:X.value=p,U.value=f.length>=de&&y.value.length<(p||0),Ae(o,s,n),c.value&&!f.some(oe=>oe.id===c.value)&&(c.value=null,m.value=null),!c.value&&E&&f.length>0&&await fe(f[0])}catch(f){e||console.error("加载队列失败:",f)}finally{n===W&&(G.value=!1,te=!1)}},Be=async()=>{if(j.value||!U.value)return;const t=_.value,e=b.value;j.value=!0;try{const n=Z.value+1,{list:o,count:s}=await se(n,t,e||void 0);if(_.value!==t||b.value!==e)return;const E=new Set(y.value.map(p=>p.id)),f=o.filter(p=>!E.has(p.id));y.value=[...y.value,...f],Z.value=n,O.value=s||O.value,U.value=o.length>=de&&y.value.length<(s||0)}catch(n){console.error("加载更多失败:",n)}finally{j.value=!1}},Fe=async()=>{if(!c.value||M)return;const t=c.value,e=++R;M=!0;try{const n=await Ne({id:t});if(e!==R||c.value!==t)return;m.value=n||m.value}catch{}finally{e===R&&(M=!1)}},fe=async t=>{if(c.value===t.id)return;const e=t.id,n=++R;c.value=t.id,m.value=null,J.value=!0,M=!0,B();try{const o=await Ne({id:e});if(n!==R||c.value!==e)return;m.value=o||null}catch(o){console.error("加载详情失败:",o),g.msgError("加载患者详情失败")}finally{n===R&&(J.value=!1,M=!1)}},me=async t=>{_.value!==t&&(_.value=t,c.value=null,m.value=null,await A(),B())},pe=async()=>{c.value=null,m.value=null,await A(),B()},Oe=async t=>{var o;const e=Number(t.source_patient_id||0),n=Number(t.diagnosis_id||0);if(!e){g.msgWarning("患者信息不完整");return}if(!n){g.msgWarning("预约信息不完整,无法发起聊天");return}try{const s=await qt({patient_id:e,diagnosis_id:n});(o=ce.value)==null||o.open({patientId:e,patientName:t.patient_name,diagnosisId:n,signatureData:s})}catch(s){console.error("获取通话签名失败:",s),g.msgError((s==null?void 0:s.message)||"获取通话签名失败")}},Ue=async t=>{if(!L.value){L.value=t.id;try{await yt({id:t.id}),g.msgSuccess(`已通知医助 ${t.assistant_name||""}`),await T()}catch(e){g.msgError((e==null?void 0:e.message)||"通知失败")}finally{L.value=null}}},je=()=>{var t,e;(t=S.value)!=null&&t.patient_id&&((e=ve.value)==null||e.open("edit",S.value.patient_id))},Ge=async()=>{await T()},T=async()=>{const t=c.value;await A({silent:!0,autoSelect:!1}),t&&c.value===t&&await Fe(),B()},We=async()=>{var t;if((t=$.value)!=null&&t.id){try{await g.confirm("确认将该患者标记为「已完成接诊」?此操作不可撤销。")}catch{return}ee.value=!0;try{await Dt({id:$.value.id}),g.msgSuccess("已完成接诊"),c.value=null,m.value=null,await A({autoSelect:!0}),B()}catch(e){g.msgError((e==null?void 0:e.message)||"操作失败")}finally{ee.value=!1}}},Ke=async()=>{var n;const t=(n=S.value)==null?void 0:n.id;if(!t){g.msgWarning("当前患者无诊单,无法添加备注");return}const e=z.value.trim();if(!e){g.msgWarning("请输入备注内容");return}ne.value=!0;try{await St({diagnosis_id:t,content:e}),g.msgSuccess("备注保存成功"),z.value="",N.value=!1,await T()}catch(o){g.msgError((o==null?void 0:o.message)||"保存失败")}finally{ne.value=!1}},Qe=()=>{V.value=re/1e3},Ye=()=>{x&&clearInterval(x),Qe(),x=setInterval(()=>{P.value||(V.value>1?V.value-=1:V.value=1)},1e3)},ge=()=>{I&&clearTimeout(I),!P.value&&(Ye(),I=setTimeout(async()=>{await T()},re))},B=()=>{ge()},He=()=>{le(),ge()},le=()=>{I&&(clearTimeout(I),I=null),x&&(clearInterval(x),x=null)},_e=()=>{P.value=document.hidden,document.hidden?le():T()},he=t=>{var n;const e=String(((n=t==null?void 0:t.reason)==null?void 0:n.message)||(t==null?void 0:t.reason)||"");/Receiving end does not exist|Could not establish connection/i.test(e)&&t.preventDefault()},ye=()=>{!K.value||!ae.value||(C==null||C.disconnect(),C=new IntersectionObserver(t=>{for(const e of t)e.isIntersecting&&Be()},{root:ae.value,rootMargin:"80px",threshold:0}),C.observe(K.value))};return Ze(K,()=>ye()),Je(()=>{A(),He(),document.addEventListener("visibilitychange",_e),window.addEventListener("unhandledrejection",he),et(()=>ye())}),tt(()=>{le(),C==null||C.disconnect(),document.removeEventListener("visibilitychange",_e),window.removeEventListener("unhandledrejection",he)}),(t,e)=>{var ke,be,we,Ce,Ee;const n=nt,o=ot,s=rt,E=ft,f=pt,p=gt,oe=ht,Se=it,ie=at("perms");return r(),h("div",Rt,[l("div",Nt,[l("div",$t,[e[8]||(e[8]=l("h1",{class:"header-title"},"接诊台",-1)),l("div",Tt,k(a(Ve)),1)]),l("div",Pt,[l("div",Vt,[l("span",{class:Q(["live-dot",{paused:a(P)}])},null,2),l("span",null,k(a(P)?"已暂停":`${a(V)}s 后刷新`),1)])])]),l("div",Lt,[d(o,{modelValue:a(b),"onUpdate:modelValue":e[0]||(e[0]=u=>ue(b)?b.value=u:null),placeholder:"请输入患者姓名",clearable:"",size:"default",class:"search-input",onKeyup:lt(pe,["enter"]),onClear:pe},{prefix:v(()=>[d(n,null,{default:v(()=>[d(a(st))]),_:1})]),_:1},8,["modelValue"]),l("div",Mt,[l("span",{class:Q(["filter-tab",{active:a(_)===1}]),onClick:e[1]||(e[1]=u=>me(1))},"待接诊 "+k(a(H))+" 人",3),e[9]||(e[9]=l("span",{class:"filter-sep"},"·",-1)),l("span",{class:Q(["filter-tab",{active:a(_)===4}]),onClick:e[2]||(e[2]=u=>me(4))},"已过号 "+k(a(X))+" 人",3)])]),l("div",zt,[l("aside",At,[l("div",Bt,[l("div",Ft,[l("span",Ot,k(a(_)===1?"待接诊":"已过号"),1),l("span",Ut,k(a(O))+" 人",1)]),F((r(),h("div",{ref_key:"queueScrollRef",ref:ae,class:"queue-list"},[(r(!0),h(qe,null,ut(a(y),u=>(r(),h("div",{key:u.id,class:Q(["queue-row",{active:a(c)===u.id,passed:u.status===4}]),onClick:De=>fe(u)},[l("div",Gt,[l("div",Wt,[D(k(u.patient_name||"未命名")+" ",1),l("span",Kt,k(Me(u)),1),u.status===4?(r(),w(s,{key:0,size:"small",type:"warning",class:"ml-1"},{default:v(()=>[...e[10]||(e[10]=[D("已过号",-1)])]),_:1})):q("",!0)]),l("div",Qt,k(ze(u.appointment_time))+" · 医助 "+k(u.assistant_name||"—"),1)]),l("div",{class:"row-actions",onClick:e[3]||(e[3]=dt(()=>{},["stop"]))},[d(E,{content:"通知医助(企业微信)",placement:"top"},{default:v(()=>[l("button",{class:"row-icon-btn notify",disabled:a(L)===u.id,onClick:De=>Ue(u)},[a(L)===u.id?(r(),w(n,{key:0,class:"is-loading"},{default:v(()=>[d(a(ct))]),_:1})):(r(),w(n,{key:1},{default:v(()=>[d(a(vt))]),_:1}))],8,Yt)]),_:2},1024),d(E,{content:"发起通话",placement:"top"},{default:v(()=>[l("button",{class:"row-icon-btn call",onClick:De=>Oe(u)},[d(n,null,{default:v(()=>[d(a(mt))]),_:1})],8,Ht)]),_:2},1024)])],10,jt))),128)),a(y).length>0?(r(),h("div",{key:0,ref_key:"sentinelRef",ref:K,class:"scroll-sentinel"},[a(j)?(r(),h("span",Xt,"加载中…")):a(U)?q("",!0):(r(),h("span",Zt,"— 已全部加载 —"))],512)):q("",!0),!a(G)&&a(y).length===0?(r(),w(f,{key:1,description:"暂无待接诊患者","image-size":64})):q("",!0)])),[[Se,a(G)&&a(y).length===0]])])]),F((r(),h("section",Jt,[a(c)?a(m)?(r(),h(qe,{key:1},[d(wt,{apt:a($),diag:a(S)},null,8,["apt","diag"]),d(Ct,{apt:a($),diag:a(S)},null,8,["apt","diag"]),l("div",ta,[e[11]||(e[11]=l("div",{class:"card-title"},"医生备注 & 舌苔照片 & 检查报告",-1)),d(bt,{notes:a(Pe),"diagnosis-id":(ke=a(S))==null?void 0:ke.id,onRefresh:T},null,8,["notes","diagnosis-id"])]),l("div",aa,[e[12]||(e[12]=l("div",{class:"card-title"},"日常记录",-1)),d(Et,{"diagnosis-id":Number(((be=a(S))==null?void 0:be.id)??0),"patient-id":Number(((we=a(S))==null?void 0:we.patient_id)??0),age:((Ce=a(S))==null?void 0:Ce.age)??null,"patient-name":((Ee=a(S))==null?void 0:Ee.patient_name)||"","read-only":!0},null,8,["diagnosis-id","patient-id","age","patient-name"])])],64)):q("",!0):(r(),h("div",ea,[d(f,{description:"请从左侧选择一位待接诊患者"})]))])),[[Se,a(J)&&!a(m)]])]),d(_t,{name:"fade"},{default:v(()=>[a(c)&&a(m)?(r(),h("div",na,[F((r(),w(p,{class:"float-action note",size:"large",onClick:e[4]||(e[4]=u=>N.value=!0)},{default:v(()=>[...e[13]||(e[13]=[D(" 备注 ",-1)])]),_:1})),[[ie,["doctor.appointment/addDoctorNote"]]]),F((r(),w(p,{class:"float-action edit",size:"large",onClick:je},{default:v(()=>[...e[14]||(e[14]=[D(" 编辑病历 ",-1)])]),_:1})),[[ie,["tcm.diagnosis/edit"]]]),a($).status===1||a($).status===4?F((r(),w(p,{key:0,class:"float-action finish",size:"large",loading:a(ee),onClick:We},{default:v(()=>[...e[15]||(e[15]=[D(" 完成接诊 ",-1)])]),_:1},8,["loading"])),[[ie,["doctor.appointment/complete"]]]):q("",!0)])):q("",!0)]),_:1}),d(oe,{modelValue:a(N),"onUpdate:modelValue":e[7]||(e[7]=u=>ue(N)?N.value=u:null),title:"添加备注",width:"480px","append-to-body":""},{footer:v(()=>[d(p,{onClick:e[6]||(e[6]=u=>N.value=!1)},{default:v(()=>[...e[16]||(e[16]=[D("取消",-1)])]),_:1}),d(p,{type:"primary",loading:a(ne),onClick:Ke},{default:v(()=>[...e[17]||(e[17]=[D("保存",-1)])]),_:1},8,["loading"])]),default:v(()=>[d(o,{modelValue:a(z),"onUpdate:modelValue":e[5]||(e[5]=u=>ue(z)?z.value=u:null),type:"textarea",rows:4,placeholder:"输入今日备注...",maxlength:"500","show-word-limit":""},null,8,["modelValue"])]),_:1},8,["modelValue"]),(r(),w(Ie(a($e)),{ref_key:"chatDialogRef",ref:ce},null,512)),(r(),w(Ie(a(Te)),{ref_key:"diagnosisEditRef",ref:ve,onSuccess:Ge},null,544))])}}}),xa=It(sa,[["__scopeId","data-v-d392cd60"]]);export{xa as default};
|