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