Files
zyt/server/public/admin/assets/index-5UljM3Lv.js
T
2026-07-02 11:57:54 +08:00

3 lines
15 KiB
JavaScript

const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-DhUuSgXW.js","assets/.pnpm-BGZW0UGg.js","assets/.pnpm-LiWq8Xu0.css","assets/file-BQ0rU-P3.js","assets/index-CTzEhZ24.js","assets/index-or10At3s.css","assets/patient-Ct5oLAzw.js","assets/tcm-DeT-_NhZ.js","assets/im-business-message-parse-_PY5JHD3.js","assets/dayjs-BnultS00.js","assets/@tencentcloud/chat-D7lWMW5B.js","assets/@tencentcloud/chat-uikit-engine-BfvTSCwg.js","assets/tim-upload-plugin-D37V_nOm.js","assets/tim-profanity-filter-plugin-u1eDZvJc.js","assets/@tencentcloud/call-engine-js-BqkBynoZ.js","assets/rtc-detect-zrHeVn3K.js","assets/index-BdeDEJMM.css","assets/edit-DPbnx36U.js","assets/perm-C9gXSi-v.js","assets/DailyMatrix---3xWvnk.js","assets/picker-uwVhCb3U.js","assets/index-B99pjMPF.js","assets/index-dh40Du6y.css","assets/index-BauW3iNq.js","assets/index.vue_vue_type_script_setup_true_lang-ByFSC-yR.js","assets/index-ag3Z2xAC.js","assets/index-BYMg0OFw.css","assets/index-DmJsTQNR.js","assets/index.vue_vue_type_script_setup_true_lang-DBx_F7yj.js","assets/usePaging-C4oc3vBq.js","assets/index-D6uL8V1j.css","assets/picker-CLzhBfnG.css","assets/DiagnosisTodoList-BgTpigGW.js","assets/DiagnosisTodoList-UCBTL4Nb.css","assets/blood-thresholds-CJ1fqMjh.js","assets/DailyMatrix--Ay5C05Q.css","assets/CaseRecordList-DB4qZkms.js","assets/CaseRecordList-DEgrl9PS.css","assets/CallRecordPanel-DbUdl0PG.js","assets/RecordingPlaybackBlock--Mu-M6Ci.js","assets/RecordingVideoPlayer-WDrHQRoE.js","assets/RecordingVideoPlayer-B6Ash5UQ.css","assets/RecordingPlaybackBlock-DLd92gGw.css","assets/CallRecordPanel-p7h_1hh9.css","assets/ImChatRecordPanel-DIjh3fGH.js","assets/ImChatRecordPanel-BRnJl8ir.css","assets/AssignLogPanel-PENkPosN.js","assets/AssignLogPanel-CbpABGSR.css","assets/AppointmentRecordPanel-DaBZRuvc.js","assets/doctor-DYDmUQ5e.js","assets/AppointmentRecordPanel-BWS3OyF0.css","assets/NoteTimeline-A8ax983w.js","assets/NoteTimeline-ICZA393r.css","assets/PatientOrderList-BB8grM6g.js","assets/PrescriptionOrderDetailDrawer-CYHYsxdL.js","assets/prescription-order-utils-70xOmaF9.js","assets/PrescriptionOrderDetailDrawer-BfXlTc79.css","assets/PatientOrderList-C04fcm0u.css","assets/index-CRUnxxNt.js","assets/index-CUIUX9Ep.js","assets/medicine-D6TZXfN9.js","assets/index-CWb8I_d4.css","assets/diabetes-discovery-display-B_wmGXQJ.js","assets/index-CkWEOp4j.css","assets/edit-CkG953ZQ.css","assets/TrackingNoteTimeline-C-2kS81H.css"])))=>i.map(i=>d[i]);
import{o as Ze,R as Je,ap as Xe,n as et,aq as tt,be as at,q as d,r as h,s,T as k,u as a,ae as W,v as r,D as v,w as nt,bA as st,b8 as lt,C as ue,b7 as it,ac as F,bi as ot,F as qe,G as ut,L as D,O as C,br as dt,P as q,aw as rt,b5 as ct,as as vt,a1 as ft,cP as pt,bB as mt,K as gt,ab as _t,bt as ht,a4 as Ie,cb as xe,al as Re,M as o,p as Y}from"./.pnpm-BGZW0UGg.js";import{r as $e,n as yt,a as St,b as kt}from"./patient-Ct5oLAzw.js";import bt from"./NoteTimeline-A8ax983w.js";import Ct from"./PatientInfoCard-DeNMlFUO.js";import wt from"./PatientCaseCard-DRo26BZD.js";import Et from"./DailyMatrix---3xWvnk.js";import{l as Dt}from"./doctor-DYDmUQ5e.js";import{N as qt}from"./tcm-DeT-_NhZ.js";import{i as g,_ as It}from"./index-CTzEhZ24.js";import{f as xt}from"./diag-display-DCz_VAqj.js";import"./picker-uwVhCb3U.js";import"./index-B99pjMPF.js";import"./index-BauW3iNq.js";import"./index.vue_vue_type_script_setup_true_lang-ByFSC-yR.js";import"./index-ag3Z2xAC.js";import"./index-DmJsTQNR.js";import"./file-BQ0rU-P3.js";import"./index.vue_vue_type_script_setup_true_lang-DBx_F7yj.js";import"./usePaging-C4oc3vBq.js";import"./perm-C9gXSi-v.js";import"./blood-thresholds-CJ1fqMjh.js";import"./diabetes-discovery-display-B_wmGXQJ.js";import"./DiagnosisTodoList-BgTpigGW.js";const Rt={class:"reception-page"},$t={class:"reception-header"},Nt={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"},Kt={class:"name-line"},Qt={class:"name-meta"},Wt={class:"time-line"},Yt=["disabled","onClick"],Ht=["onClick"],Zt={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"},de=5e3,re=15,sa=Ze({__name:"index",setup(la){const Ne=xe(()=>Re(()=>import("./index-DhUuSgXW.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-DPbnx36U.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]))),_=o(1),y=o([]),O=o(0),H=o(0),Z=o(0),J=o(1),U=o(!0),j=o(!1),G=o(!1),X=o(!1),c=o(null),p=o(null),ee=o(!1),b=o(""),P=o(!1),V=o(de/1e3),L=o(null);let I=null,x=null,te=!1,M=!1,w=null,K=0,R=0;const ae=o(null),Q=o(null),ce=o(),ve=o(),$=o(!1),z=o(""),ne=o(!1),N=Y(()=>{var e;return((e=p.value)==null?void 0:e.appointment)||{}}),S=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=l=>String(l).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=>[xt(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 l=Le(),i=await kt({status:t??_.value,start_date:l,end_date:l,patient_name:(n??b.value)||void 0,page_no:e,page_size:re}),E=(i==null?void 0:i.lists)||(i==null?void 0:i.data)||[],f=Number((i==null?void 0:i.count)??(i==null?void 0:i.total)??0);return{list:E,count:f}},Ae=async(e,t,n)=>{const l=e===1?4:1;try{const{count:i}=await se(1,l,t||void 0);if(n!==K||_.value!==e||b.value!==t)return;l===1?H.value=i:Z.value=i}catch{}},A=async e=>{const t=(e==null?void 0:e.silent)===!0;if(t&&te)return;const n=++K,l=_.value,i=b.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,l,i||void 0);if(n!==K||_.value!==l||b.value!==i)return;y.value=f,O.value=m||f.length,l===1?H.value=m:Z.value=m,U.value=f.length>=re&&y.value.length<(m||0),Ae(l,i,n),c.value&&!f.some(ie=>ie.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===K&&(G.value=!1,te=!1)}},Be=async()=>{if(j.value||!U.value)return;const e=_.value,t=b.value;j.value=!0;try{const n=J.value+1,{list:l,count:i}=await se(n,e,t||void 0);if(_.value!==e||b.value!==t)return;const E=new Set(y.value.map(m=>m.id)),f=l.filter(m=>!E.has(m.id));y.value=[...y.value,...f],J.value=n,O.value=i||O.value,U.value=l.length>=re&&y.value.length<(i||0)}catch(n){console.error("加载更多失败:",n)}finally{j.value=!1}},Fe=async()=>{if(!c.value||M)return;const e=c.value,t=++R;M=!0;try{const n=await $e({id:e});if(t!==R||c.value!==e)return;p.value=n||p.value}catch{}finally{t===R&&(M=!1)}},fe=async e=>{if(c.value===e.id)return;const t=e.id,n=++R;c.value=e.id,p.value=null,X.value=!0,M=!0,B();try{const l=await $e({id:t});if(n!==R||c.value!==t)return;p.value=l||null}catch(l){console.error("加载详情失败:",l),g.msgError("加载患者详情失败")}finally{n===R&&(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()},Oe=async e=>{var t;if(!e.patient_id){g.msgWarning("患者信息不完整");return}try{const n=await qt({patient_id:e.patient_id,diagnosis_id:e.diagnosis_id||e.id});(t=ce.value)==null||t.open({patientId:e.patient_id,patientName:e.patient_name,diagnosisId:e.diagnosis_id||e.id,signatureData:n})}catch(n){console.error("获取通话签名失败:",n),g.msgError((n==null?void 0:n.message)||"获取通话签名失败")}},Ue=async e=>{if(!L.value){L.value=e.id;try{await yt({id:e.id}),g.msgSuccess(`已通知医助 ${e.assistant_name||""}`),await T()}catch(t){g.msgError((t==null?void 0:t.message)||"通知失败")}finally{L.value=null}}},je=()=>{var e,t;(e=S.value)!=null&&e.patient_id&&((t=ve.value)==null||t.open("edit",S.value.patient_id))},Ge=async()=>{await T()},T=async()=>{const e=c.value;await A({silent:!0,autoSelect:!1}),e&&c.value===e&&await Fe(),B()},Ke=async()=>{var e;if((e=N.value)!=null&&e.id){try{await g.confirm("确认将该患者标记为「已完成接诊」?此操作不可撤销。")}catch{return}ee.value=!0;try{await Dt({id:N.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}}},Qe=async()=>{var n;const e=(n=S.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 St({diagnosis_id:e,content:t}),g.msgSuccess("备注保存成功"),z.value="",$.value=!1,await T()}catch(l){g.msgError((l==null?void 0:l.message)||"保存失败")}finally{ne.value=!1}},We=()=>{V.value=de/1e3},Ye=()=>{x&&clearInterval(x),We(),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()},de))},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=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=()=>{!Q.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(Q.value))};return Je(Q,()=>ye()),Xe(()=>{A(),He(),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 ke,be,Ce,we,Ee;const n=nt,l=it,i=dt,E=ft,f=mt,m=gt,ie=ht,Se=ot,oe=at("perms");return d(),h("div",Rt,[s("div",$t,[s("div",Nt,[t[8]||(t[8]=s("h1",{class:"header-title"},"接诊台",-1)),s("div",Tt,k(a(Ve)),1)]),s("div",Pt,[s("div",Vt,[s("span",{class:W(["live-dot",{paused:a(P)}])},null,2),s("span",null,k(a(P)?"已暂停":`${a(V)}s 后刷新`),1)])])]),s("div",Lt,[r(l,{modelValue:a(b),"onUpdate:modelValue":t[0]||(t[0]=u=>ue(b)?b.value=u:null),placeholder:"请输入患者姓名",clearable:"",size:"default",class:"search-input",onKeyup:lt(me,["enter"]),onClear:me},{prefix:v(()=>[r(n,null,{default:v(()=>[r(a(st))]),_:1})]),_:1},8,["modelValue"]),s("div",Mt,[s("span",{class:W(["filter-tab",{active:a(_)===1}]),onClick:t[1]||(t[1]=u=>pe(1))},"待接诊 "+k(a(H))+" 人",3),t[9]||(t[9]=s("span",{class:"filter-sep"},"·",-1)),s("span",{class:W(["filter-tab",{active:a(_)===4}]),onClick:t[2]||(t[2]=u=>pe(4))},"已过号 "+k(a(Z))+" 人",3)])]),s("div",zt,[s("aside",At,[s("div",Bt,[s("div",Ft,[s("span",Ot,k(a(_)===1?"待接诊":"已过号"),1),s("span",Ut,k(a(O))+" 人",1)]),F((d(),h("div",{ref_key:"queueScrollRef",ref:ae,class:"queue-list"},[(d(!0),h(qe,null,ut(a(y),u=>(d(),h("div",{key:u.id,class:W(["queue-row",{active:a(c)===u.id,passed:u.status===4}]),onClick:De=>fe(u)},[s("div",Gt,[s("div",Kt,[D(k(u.patient_name||"未命名")+" ",1),s("span",Qt,k(Me(u)),1),u.status===4?(d(),C(i,{key:0,size:"small",type:"warning",class:"ml-1"},{default:v(()=>[...t[10]||(t[10]=[D("已过号",-1)])]),_:1})):q("",!0)]),s("div",Wt,k(ze(u.appointment_time))+" · 医助 "+k(u.assistant_name||"—"),1)]),s("div",{class:"row-actions",onClick:t[3]||(t[3]=rt(()=>{},["stop"]))},[r(E,{content:"通知医助(企业微信)",placement:"top"},{default:v(()=>[s("button",{class:"row-icon-btn notify",disabled:a(L)===u.id,onClick:De=>Ue(u)},[a(L)===u.id?(d(),C(n,{key:0,class:"is-loading"},{default:v(()=>[r(a(ct))]),_:1})):(d(),C(n,{key:1},{default:v(()=>[r(a(vt))]),_:1}))],8,Yt)]),_:2},1024),r(E,{content:"发起通话",placement:"top"},{default:v(()=>[s("button",{class:"row-icon-btn call",onClick:De=>Oe(u)},[r(n,null,{default:v(()=>[r(a(pt))]),_:1})],8,Ht)]),_:2},1024)])],10,jt))),128)),a(y).length>0?(d(),h("div",{key:0,ref_key:"sentinelRef",ref:Q,class:"scroll-sentinel"},[a(j)?(d(),h("span",Zt,"加载中…")):a(U)?q("",!0):(d(),h("span",Jt,"— 已全部加载 —"))],512)):q("",!0),!a(G)&&a(y).length===0?(d(),C(f,{key:1,description:"暂无待接诊患者","image-size":64})):q("",!0)])),[[Se,a(G)&&a(y).length===0]])])]),F((d(),h("section",Xt,[a(c)?a(p)?(d(),h(qe,{key:1},[r(Ct,{apt:a(N),diag:a(S)},null,8,["apt","diag"]),r(wt,{apt:a(N),diag:a(S)},null,8,["apt","diag"]),s("div",ta,[t[11]||(t[11]=s("div",{class:"card-title"},"医生备注 & 舌苔照片 & 检查报告",-1)),r(bt,{notes:a(Pe),"diagnosis-id":(ke=a(S))==null?void 0:ke.id,onRefresh:T},null,8,["notes","diagnosis-id"])]),s("div",aa,[t[12]||(t[12]=s("div",{class:"card-title"},"日常记录",-1)),r(Et,{"diagnosis-id":Number(((be=a(S))==null?void 0:be.id)??0),"patient-id":Number(((Ce=a(S))==null?void 0:Ce.patient_id)??0),age:((we=a(S))==null?void 0:we.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):(d(),h("div",ea,[r(f,{description:"请从左侧选择一位待接诊患者"})]))])),[[Se,a(X)&&!a(p)]])]),r(_t,{name:"fade"},{default:v(()=>[a(c)&&a(p)?(d(),h("div",na,[F((d(),C(m,{class:"float-action note",size:"large",onClick:t[4]||(t[4]=u=>$.value=!0)},{default:v(()=>[...t[13]||(t[13]=[D(" 备注 ",-1)])]),_:1})),[[oe,["doctor.appointment/addDoctorNote"]]]),F((d(),C(m,{class:"float-action edit",size:"large",onClick:je},{default:v(()=>[...t[14]||(t[14]=[D(" 编辑病历 ",-1)])]),_:1})),[[oe,["tcm.diagnosis/edit"]]]),a(N).status===1||a(N).status===4?F((d(),C(m,{key:0,class:"float-action finish",size:"large",loading:a(ee),onClick:Ke},{default:v(()=>[...t[15]||(t[15]=[D(" 完成接诊 ",-1)])]),_:1},8,["loading"])),[[oe,["doctor.appointment/complete"]]]):q("",!0)])):q("",!0)]),_:1}),r(ie,{modelValue:a($),"onUpdate:modelValue":t[7]||(t[7]=u=>ue($)?$.value=u:null),title:"添加备注",width:"480px","append-to-body":""},{footer:v(()=>[r(m,{onClick:t[6]||(t[6]=u=>$.value=!1)},{default:v(()=>[...t[16]||(t[16]=[D("取消",-1)])]),_:1}),r(m,{type:"primary",loading:a(ne),onClick:Qe},{default:v(()=>[...t[17]||(t[17]=[D("保存",-1)])]),_:1},8,["loading"])]),default:v(()=>[r(l,{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"]),(d(),C(Ie(a(Ne)),{ref_key:"chatDialogRef",ref:ce},null,512)),(d(),C(Ie(a(Te)),{ref_key:"diagnosisEditRef",ref:ve,onSuccess:Ge},null,544))])}}}),xa=It(sa,[["__scopeId","data-v-bdcae43b"]]);export{xa as default};