2 lines
33 KiB
JavaScript
2 lines
33 KiB
JavaScript
import{i as qt,d as Wt,K as Zt,m as te,l as ee,a6 as se,F as ae,p as le,n as ie,o as oe,C as ne,B as de,T as re,M as ue,N as pe,a2 as ce,L as me,J as _e}from"./element-plus-BMTkHLHO.js";import{_ as ve}from"./index.vue_vue_type_script_setup_true_lang-C4EjxgJU.js";import{_ as ge}from"./index.vue_vue_type_script_setup_true_lang-D1qH-K_d.js";import{q as fe,w as ye,s as Mt}from"./@vue/runtime-dom-DVgibYoU.js";import{u as be}from"./usePaging-CPrBIeJ2.js";import{c as zt,d as ke,e as he,f as we}from"./doctor-DazyH8xe.js";import{a as bt,t as De,b as Ce,p as Ie}from"./tcm-SmjkhU9m.js";import{a as Nt,f as b,d as Yt,j as ft}from"./index-_HeSPmLP.js";import{E as Se,T as $e}from"./edit-B2y1U1F0.js";import{c as Ee,l as Ft,M as Ve,f as Te,N as xe,O as Pt,b as At,d as Me,e as Rt,g as Kt,u as ze,P as Pe,Q as Ae,R as Re,F as Lt}from"./@element-plus/icons-vue-BX5NvPi2.js";import{E as Ke}from"./@tencentcloud/chat-uikit-vue3-BvvEmLdc.js";import{T as Le}from"./@tencentcloud/chat-ChxDR3fu.js";import{u as Ue,F as yt,z as qe}from"./@tencentcloud/call-uikit-vue-BWwKaOEP.js";import{R as We}from"./@tencentcloud/uikit-base-component-vue3-CG74Nqga.js";import{u as Ne,C as Ye,M as Fe,a as Be,O as Xe,E as He,N as Oe,S as Qe,A as je,b as Ge}from"./tuikit-atomicx-vue3-BeemCT55.js";import{f as Bt,w as Xt,ak as c,G as f,aP as P,J as e,a,aN as i,I as k,H as y,O as _,T as Je,n as Ze,A as kt,as as ts,F as es}from"./@vue/runtime-core-D7eUgySO.js";import{Q as m,p as Ut}from"./@vue/shared-C75lBtbe.js";import{y as s,o as p,a as nt,r as ss}from"./@vue/reactivity-maRK_BBd.js";import{g as as}from"./weapp-LZ_TIOZs.js";import"./lodash-es-BADexyn7.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-BOuxpn4j.js";import"./nprogress-BpICrWuH.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-G5PuBoTt.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-CJXI7XhX.js";import"./pinia-BhomUS5m.js";import"./axios-C80V62Fs.js";import"./lodash-Ct9_CZb9.js";import"./@vueuse/core-DCeljLnb.js";import"./@vueuse/shared-B444yVpD.js";import"./css-color-function-BVb6B1lA.js";import"./balanced-match-BdS7OldZ.js";import"./color-B2zxaWkI.js";import"./clone-DBZ6_OiU.js";import"./color-convert-OrFsTA_V.js";import"./color-name-Dju3oUBS.js";import"./color-string-pUQDDJII.js";import"./ms-CzQ2E3wO.js";import"./vue-clipboard3-ChYu0NfX.js";import"./clipboard-Bmfw2kIN.js";import"./echarts-DYKKs4Al.js";import"./tslib-BDyQ-Jie.js";import"./zrender-CTTuYiLF.js";import"./highlight.js-jaPyNblr.js";import"./@highlightjs/vue-plugin-ASXrwou_.js";import"./picker-CZdl8TOk.js";import"./index-Bi8ZuWNg.js";import"./index-CcUcGwR5.js";import"./index-CKXnPZ-R.js";import"./index-D_m7ga9B.js";import"./index.vue_vue_type_script_setup_true_lang-DCcZRqCf.js";import"./vuedraggable-DoxySVw6.js";import"./vue-BWLcg9DT.js";import"./@vue/compiler-dom-Ddn9Zm90.js";import"./@vue/compiler-core-KYniu4wC.js";import"./sortablejs-BkVvOzsn.js";import"./BloodRecordList-BKkYZBfl.js";import"./CaseRecordList-ZnHRK7LY.js";import"./html2canvas-QH1iLAAe.js";import"./@tencentcloud/chat-uikit-engine-DgKjflbG.js";import"./tim-upload-plugin-gicpJEks.js";import"./tim-profanity-filter-plugin-B9dSjS4O.js";import"./@tencentcloud/call-engine-js-zVTLS5jL.js";import"./rtc-detect-DK8BLAXA.js";import"./@tencentcloud/tui-core-aciHwo_F.js";import"./@tencentcloud/tuiroom-engine-js-BDAeGN9D.js";import"./tcplayer.js-uAbklCQ0.js";const ls={class:"chat-window-title"},is={class:"chat-container"},os={key:0,class:"loading-container"},ns={key:1,class:"error-container"},ds={key:2,class:"chat-content"},rs={class:"chat-layout"},us={class:"message-toolbar"},ps={class:"call-kit-content"},cs=Bt({__name:"index",setup(Ht,{expose:dt}){const E=p(""),et=p(!1),u=p(!1),T=p(""),I=p(""),S=p(null),D=p(null),A=p("正在初始化..."),K=p(""),j=p(""),V=p(!1),L=p(!1),{login:$}=Ge(),{setActiveConversation:ht,createC2CConversation:wt,activeConversation:Dt}=je(),Ct=Nt(),rt=async(r,v)=>{try{if(!r){console.warn("头像 URL 为空,跳过更新");return}console.log("开始更新头像到 IM:",r);const C=await new Promise((l,t)=>{setTimeout(async()=>{try{const g=await Le.create({SDKAppID:v}).updateMyProfile({avatar:r});console.log("IM 头像更新成功:",g),l(g)}catch(o){console.error("更新头像异常:",o),l(null)}},500)})}catch(C){console.error("IM 头像更新失败:",C.message||C)}};Xt(()=>Dt.value,async r=>{if(r){if(I.value=r.getShowName()||I.value,console.log("会话切换:",r.conversationID,"名称:",I.value,r),r.userProfile.userID.includes("doctor"))console.log("当前会话是医生,跳过获取 assistant_id");else try{const v=await bt({patient_id:r.userProfile.userID.replace("patient_",""),diagnosis_id:D.value});K.value=v.patientUserId,E.value=v.assistant_id,console.log("会话切换后获取到 assistant_id:",E.value,"完整响应:",v)}catch(v){console.error("获取 assistant_id 失败:",v)}console.log("会话切换完成,userID:",r.userProfile.userID)}});const It=async r=>{et.value=!0,W.value=100,N.value=80,U.value=Math.max(0,(window.innerWidth-375)/2),F.value=Math.max(0,(window.innerHeight-667)/2),I.value=r.patientName,S.value=r.patientId,D.value=r.diagnosisId||null,T.value="",u.value=!1,V.value=!1,L.value=!1,A.value="正在获取签名...";try{const v=await bt({patient_id:r.patientId,diagnosis_id:r.diagnosisId||0});if(E.value=v.assistant_id,console.log("后端返回的签名数据:",v),console.log("assistant_id:",E.value),!v||!v.userSig)throw new Error("获取签名失败");v.assistant_id||console.warn("警告:后端未返回 assistant_id,群视频通话可能无法正常工作"),K.value=v.patientUserId||`patient_${r.patientId}`,A.value="正在登录聊天...",await $({sdkAppId:Number(v.sdkAppId),userId:v.userId,userSig:v.userSig,useUploadPlugin:!0});const C=Number(v.sdkAppId);if(!window.__TUICallKitInited__){A.value="正在初始化通话能力...";try{await yt.init({userID:v.userId,userSig:v.userSig,SDKAppID:C}),window.__TUICallKitInited__=!0}catch(l){console.warn("TUICallKit 初始化失败,聊天仍可用,音视频通话不可用:",(l==null?void 0:l.message)||l)}}V.value=!!window.__TUICallKitInited__,V.value&&yt.setCallback({beforeCalling:()=>{L.value=!0},afterCalling:()=>{L.value=!1}}),console.log("Chat UIKit 登录成功,患者用户ID:",K.value),A.value="加载聊天界面...",setTimeout(async()=>{var t;u.value=!0,await Ze(),await new Promise(o=>setTimeout(o,1e3));const l=(t=Ct.userInfo)==null?void 0:t.avatar;console.log("准备更新头像,avatar:",l),l&&await rt(l,C);try{const o=await wt(K.value);j.value=o.conversationID,console.log("已创建/获取会话:",j.value),ht(j.value),console.log("已激活会话")}catch(o){console.error("创建/激活会话失败:",o)}},800)}catch(v){console.error("初始化聊天失败:",v),T.value=v.message||"初始化聊天失败",b.msgError(T.value)}},G=async()=>{if(!V.value){b.msgWarning("通话服务初始化中,请稍后再试");return}if(!K.value){b.msgWarning("未找到患者通话ID,无法发起群视频");return}try{if(!E.value){console.warn("assistant_id 为空,尝试重新获取");const v=await bt({patient_id:S.value,diagnosis_id:D.value});E.value=v.assistant_id,console.log("重新获取 assistant_id:",E.value)}const r=[K.value,E.value].filter(v=>v);if(r.length<2){b.msgWarning("助理ID获取失败,无法发起群视频"),console.error("userIDList 不完整:",r,"assistant_ids:",E.value);return}console.log("发起群视频通话,参与者:",r),await yt.calls({userIDList:r,type:qe.VIDEO_CALL})}catch(r){console.error("发起群视频失败:",r),b.msgError((r==null?void 0:r.message)||"发起群视频失败")}},n=p(),W=p(100),N=p(80),J=p(!1),st=p(0),Y=p(0),ut=p(0),pt=p(0),at=p(),U=p(0),F=p(0),x=p(!1),B=p(0),X=p(0),H=p(0),ct=p(0),St=kt(()=>({left:`${U.value}px`,top:`${F.value}px`})),$t=r=>{x.value=!0,B.value=r.clientX,X.value=r.clientY,H.value=U.value,ct.value=F.value,document.addEventListener("mousemove",lt),document.addEventListener("mouseup",mt)},lt=r=>{x.value&&(U.value=Math.max(0,H.value+r.clientX-B.value),F.value=Math.max(0,ct.value+r.clientY-X.value))},mt=()=>{x.value=!1,document.removeEventListener("mousemove",lt),document.removeEventListener("mouseup",mt)},_t=kt(()=>({left:`${W.value}px`,top:`${N.value}px`})),it=r=>{r.target.closest(".chat-close-btn")||(J.value=!0,st.value=r.clientX,Y.value=r.clientY,ut.value=W.value,pt.value=N.value,document.addEventListener("mousemove",vt),document.addEventListener("mouseup",ot))},vt=r=>{J.value&&(W.value=Math.max(0,ut.value+r.clientX-st.value),N.value=Math.max(0,pt.value+r.clientY-Y.value))},ot=()=>{J.value=!1,document.removeEventListener("mousemove",vt),document.removeEventListener("mouseup",ot)},Et=async()=>{if(V.value&&L.value)try{await yt.hangup()}catch(r){console.warn("挂断通话时出错:",r)}et.value=!1,L.value=!1};return dt({open:It}),(r,v)=>{const C=Wt,l=qt,t=Zt;return c(),f(Je,{to:"body"},[P(e("div",{ref_key:"chatWindowRef",ref:n,class:"chat-floating-window",style:Ut(_t.value)},[e("div",{class:"chat-window-header",onMousedown:it},[e("span",ls,"与 "+m(I.value)+" 聊天",1),a(l,{type:"danger",link:"",class:"chat-close-btn",onClick:Et},{default:i(()=>[a(C,null,{default:i(()=>[a(s(Ee))]),_:1})]),_:1})],32),e("div",is,[u.value?T.value?(c(),k("div",ns,[a(t,{title:T.value,type:"error",closable:!1},null,8,["title"])])):(c(),k("div",ds,[a(s(We),{language:"zh-CN",theme:"light"},{default:i(()=>[e("div",rs,[a(s(Ne),{class:"conversation-list"}),a(s(Ke),{class:"chat-area"},{default:i(()=>[a(s(Ye),{conversationID:j.value},null,8,["conversationID"]),a(s(Fe),null,{headerToolbar:i(()=>[e("div",us,[a(s(Be)),a(s(Xe)),a(s(He)),V.value?(c(),f(s(Oe),{key:0})):y("",!0),V.value?(c(),f(s(Qe),{key:1})):y("",!0),V.value?(c(),f(l,{key:2,size:"small",type:"primary",onClick:G},{default:i(()=>[...v[0]||(v[0]=[_(" 群视频 ",-1)])]),_:1})):y("",!0)])]),_:1})]),_:1})])]),_:1})])):(c(),k("div",os,[a(C,{class:"is-loading"},{default:i(()=>[a(s(Ft))]),_:1}),e("span",null,m(A.value),1)]))]),V.value&&L.value?(c(),k("div",{key:0,ref_key:"callKitWrapperRef",ref:at,class:"chat-dialog-call-kit-wrapper",style:Ut(St.value)},[e("div",{class:"call-kit-drag-handle",onMousedown:$t},[v[1]||(v[1]=e("span",{class:"drag-handle-text"},"视频通话",-1)),a(C,{class:"drag-handle-icon"},{default:i(()=>[a(s(Ve))]),_:1})],32),e("div",ps,[a(s(Ue),{allowedMinimized:!0,allowedFullScreen:!0,class:"chat-dialog-call-kit"})])],4)):y("",!0)],4),[[fe,et.value]])])}}}),ms=Yt(cs,[["__scopeId","data-v-aa0e174b"]]),_s={class:"appointment-list"},vs={class:"list-toolbar"},gs={class:"tab-label tab-priority"},fs={class:"tab-label"},ys={class:"tab-label"},bs={class:"tab-label"},ks={class:"tab-label"},hs={class:"toolbar-actions"},ws={class:"filter-bar"},Ds={class:"filter-group"},Cs={class:"filter-group"},Is={class:"table-wrap"},Ss={class:"patient-cell"},$s={class:"patient-avatar"},Es={class:"patient-info"},Vs={class:"patient-name"},Ts={class:"patient-phone"},xs={class:"patient-extra"},Ms={class:"datetime-cell"},zs={class:"date-text"},Ps={class:"time-text"},As={class:"action-btns"},Rs={class:"flex justify-end py-4 px-4"},Ks={key:0,class:"detail-content"},Ls={class:"detail-section"},Us={class:"detail-section-title"},qs={class:"detail-grid"},Ws={class:"detail-item"},Ns={class:"detail-value"},Ys={class:"detail-item"},Fs={class:"detail-item"},Bs={class:"detail-value"},Xs={class:"detail-item"},Hs={class:"detail-value"},Os={class:"detail-item"},Qs={class:"detail-value"},js={class:"detail-item"},Gs={class:"detail-value"},Js={class:"detail-section"},Zs={class:"detail-section-title"},ta={class:"detail-grid"},ea={class:"detail-item"},sa={class:"detail-value"},aa={class:"detail-item"},la={class:"detail-value"},ia={class:"detail-item"},oa={class:"detail-value"},na={class:"detail-item"},da={class:"detail-value"},ra={class:"detail-item"},ua={class:"detail-value"},pa={class:"detail-item"},ca={class:"detail-value"},ma={class:"detail-item"},_a={class:"detail-value"},va={class:"detail-item"},ga={class:"detail-value"},fa={class:"detail-item"},ya={class:"detail-value"},ba={class:"detail-item"},ka={class:"detail-value"},ha={class:"detail-item"},wa={class:"detail-value"},Da={class:"detail-item"},Ca={class:"detail-value"},Ia={class:"detail-item"},Sa={class:"detail-value"},$a={class:"detail-item"},Ea={class:"detail-value"},Va={class:"detail-item"},Ta={class:"detail-value"},xa={class:"detail-item"},Ma={class:"detail-value"},za={key:0,class:"detail-section"},Pa={class:"detail-section-title"},Aa={class:"detail-grid"},Ra={key:0,class:"detail-item"},Ka={class:"detail-value"},La={key:1,class:"detail-item"},Ua={class:"detail-value"},qa={key:2,class:"detail-item detail-item-full"},Wa={class:"detail-value"},Na={key:3,class:"detail-item detail-item-full"},Ya={class:"detail-value"},Fa={key:1,class:"detail-section"},Ba={class:"detail-section-title"},Xa={class:"detail-grid"},Ha={key:0,class:"detail-item"},Oa={class:"detail-value"},Qa={key:1,class:"detail-item"},ja={class:"detail-value"},Ga={key:2,class:"detail-item detail-item-full"},Ja={class:"detail-value"},Za={key:3,class:"detail-item detail-item-full"},tl={class:"detail-value"},el={class:"detail-section"},sl={class:"detail-remark"},al={class:"qrcode-content"},ll={key:0,class:"qrcode-loading"},il={key:1,class:"qrcode-success"},ol={class:"qrcode-image-wrap"},nl=["src"],dl={class:"qrcode-info"},rl={class:"qrcode-patient"},ul={key:2,class:"qrcode-error"},pl=Bt({__name:"list",setup(Ht){const dt=Nt(),E=kt(()=>dt.userInfo),et=kt(()=>{const l=E.value.role_id;return Array.isArray(l)?!l.includes(1)&&!l.includes(2):l!==1&&l!==2}),u=ss({patient_name:"",doctor_name:"",status:"",start_date:"",end_date:"",date_preset:"today",diagnosis_confirmed:""}),T=p("1"),I=p(!1),S=p({1:0,2:0,3:0,4:0}),{pager:D,getLists:A,resetPage:K}=be({fetchFun:zt,params:u});Xt(()=>[u.start_date,u.end_date],([l,t])=>{if(!u.date_preset)return;const o=new Date,g=R=>String(R).padStart(2,"0"),w=`${o.getFullYear()}-${g(o.getMonth()+1)}-${g(o.getDate())}`,M=new Date(o);M.setDate(M.getDate()+1);const Z=`${M.getFullYear()}-${g(M.getMonth()+1)}-${g(M.getDate())}`,h=new Date(o);h.setDate(h.getDate()+2);const O=`${h.getFullYear()}-${g(h.getMonth()+1)}-${g(h.getDate())}`,gt=u.date_preset==="today"?w:u.date_preset==="tomorrow"?Z:O;(l||"").split(" ")[0]!==gt&&(u.date_preset="")});const j=async()=>{try{const l=[1,2,3,4].map(async o=>{const g=await zt({...u,status:o,page_no:1,page_size:1});return{status:o,count:g.count||0}});(await Promise.all(l)).forEach(({status:o,count:g})=>{S.value[o]=g})}catch(l){console.error("获取状态数量失败:",l)}},V=({row:l})=>l.status===1?"row-pending":"",L=l=>{l==="all"?u.status="":u.status=Number(l),K()},$=async()=>{await A(),await j()},ht=l=>{l==="customDate"?I.value=!0:l==="reset"&&It()},wt=()=>{u.date_preset="",I.value=!1,D.page=1,$()},Dt=()=>{D.page=1,$()},Ct=l=>{const t=String(l||"");if(!t){u.date_preset="",u.start_date="",u.end_date="",$();return}const o=new Date,g=Z=>String(Z).padStart(2,"0");let w;t==="today"?w=o:t==="tomorrow"?(w=new Date(o),w.setDate(w.getDate()+1)):(w=new Date(o),w.setDate(w.getDate()+2));const M=`${w.getFullYear()}-${g(w.getMonth()+1)}-${g(w.getDate())}`;u.date_preset=t,u.start_date=M,u.end_date=M,D.page=1,$()},rt=()=>{D.page=1,$()},It=()=>{T.value="1",u.patient_name="",u.doctor_name="",u.date_preset="today",u.diagnosis_confirmed="";const l=new Date,t=o=>String(o).padStart(2,"0");u.start_date=`${l.getFullYear()}-${t(l.getMonth()+1)}-${t(l.getDate())}`,u.end_date=u.start_date,u.status=1,D.page=1,$()},G=p(!1),n=p(null),W=p([]),N=p([]),J=p([]),st=p([]),Y=(l,t)=>{if(!t)return"-";const o=l.find(g=>g.value===t);return o?o.name:t},ut=l=>(Array.isArray(l)?l:typeof l=="string"?l.split(/[,,、]/):[]).map(o=>Y(st.value,o.trim())).filter(Boolean).join("、")||"-",pt=async()=>{try{const[l,t,o,g]=await Promise.all([ft({type:"diagnosis_type"}),ft({type:"syndrome_type"}),ft({type:"diabetes_type"}),ft({type:"past_history"})]);W.value=(l==null?void 0:l.diagnosis_type)||[],N.value=(t==null?void 0:t.syndrome_type)||[],J.value=(o==null?void 0:o.diabetes_type)||[],st.value=(g==null?void 0:g.past_history)||[]}catch(l){console.error("加载字典失败:",l)}},at=p(),U=p(),F=p(),x=p(!1),B=p(!1),X=p(""),H=p(null),ct=(l,t)=>{switch(l){case"edit":mt(t);break;case"complete":lt(t);break;case"chat":_t(t);break;case"qrcode":it(t);break;case"prescription":ot(t);break;case"cancel":$t(t);break}},St=async l=>{try{const t=await ke({id:l.id});if(n.value=t,t.patient_id)try{const o=await De({id:t.patient_id});n.value={...t,...o}}catch(o){console.warn("获取患者诊单详情失败:",o)}G.value=!0}catch(t){console.error("获取详情失败:",t)}},$t=async l=>{try{await b.confirm("确定要取消该挂号吗?"),await he({id:l.id}),b.msgSuccess("取消成功"),$()}catch{}},lt=async l=>{try{await b.confirm("确认患者已就诊完成?"),await we({id:l.id}),b.msgSuccess("操作成功"),$()}catch{}},mt=l=>{var t;if(!l.patient_id){b.msgWarning("该预约没有关联诊单信息");return}(t=at.value)==null||t.open("edit",l.patient_id)},_t=async l=>{var t;if(!l.patient_id){b.msgWarning("患者信息不完整");return}if(!l.diagnosis_id&&!l.id){b.msgWarning("预约信息不完整,无法发起聊天");return}try{const o=await bt({patient_id:l.patient_id,diagnosis_id:l.diagnosis_id||l.id});console.log("获取聊天签名成功:",o),(t=F.value)==null||t.open({patientId:l.patient_id,patientName:l.patient_name,diagnosisId:l.diagnosis_id||l.id,signatureData:o})}catch(o){console.error("获取聊天签名失败:",o),b.msgError(o.message||"获取聊天签名失败")}},it=async l=>{if(!l.patient_id){b.msgWarning("患者信息不完整");return}H.value=l,x.value=!0,B.value=!0,X.value="";try{const t=await as();if(!(t!=null&&t.app_id)){b.msgError("小程序未配置,请先配置小程序信息"),x.value=!1;return}const o=dt.userInfo,g=await Ce({diagnosis_id:l.doctor_id||"",patient_id:l.patient_id,share_user_id:(o==null?void 0:o.id)||"",mini_program_path:"pages/login/login"});g!=null&&g.qrcode_url?X.value=g.qrcode_url:b.msgError("二维码生成失败")}catch(t){console.error("生成小程序二维码失败:",t),b.msgError((t==null?void 0:t.msg)||"生成二维码失败,请重试")}finally{B.value=!1}},vt=()=>{var l,t;$(),(t=(l=at.value)==null?void 0:l.refreshCaseList)==null||t.call(l)},ot=l=>{var t;if(!l.diagnosis_id&&!l.patient_id){b.msgWarning("该预约缺少诊单信息,请先编辑患者");return}(t=U.value)==null||t.open(l)},Et=async l=>{var t;if(!l.id){b.msgWarning("预约信息不完整");return}try{const o=await Ie({appointment_id:l.id});o!=null&&o.id?(t=U.value)==null||t.openById(o.id):b.msgWarning("该预约暂无病历记录,请先开方")}catch(o){b.msgError((o==null?void 0:o.msg)||"获取病历失败")}},r=()=>{H.value&&it(H.value)},v=new Date,C=l=>String(l).padStart(2,"0");return u.start_date=`${v.getFullYear()}-${C(v.getMonth()+1)}-${C(v.getDate())}`,u.end_date=u.start_date,u.status=1,$(),pt(),(l,t)=>{const o=Wt,g=se,w=ee,M=te,Z=ae,h=qt,O=oe,gt=ie,Vt=le,R=de,xt=ne,Ot=ge,Tt=re,z=pe,tt=ce,Qt=ue,jt=ve,Gt=_e,q=ts("perms"),Jt=me;return c(),k("div",_s,[a(Gt,{class:"list-card !border-none",shadow:"never"},{default:i(()=>[e("div",vs,[a(M,{modelValue:s(T),"onUpdate:modelValue":t[0]||(t[0]=d=>nt(T)?T.value=d:null),onTabChange:L,class:"list-tabs"},{default:i(()=>[a(w,{name:"1"},{label:i(()=>[e("span",gs,[a(o,null,{default:i(()=>[a(s(Te))]),_:1}),t[15]||(t[15]=_("待接诊",-1)),s(S)[1]?(c(),f(g,{key:0,value:s(S)[1],class:"tab-badge tab-badge-success"},null,8,["value"])):y("",!0)])]),_:1}),a(w,{name:"all"},{label:i(()=>[e("span",fs,[a(o,null,{default:i(()=>[a(s(xe))]),_:1}),t[16]||(t[16]=_("全部",-1))])]),_:1}),a(w,{name:"4"},{label:i(()=>[e("span",ys,[a(o,null,{default:i(()=>[a(s(Pt))]),_:1}),t[17]||(t[17]=_("已过号",-1)),s(S)[4]?(c(),f(g,{key:0,value:s(S)[4],class:"tab-badge tab-badge-danger"},null,8,["value"])):y("",!0)])]),_:1}),a(w,{name:"2"},{label:i(()=>[e("span",bs,[a(o,null,{default:i(()=>[a(s(At))]),_:1}),t[18]||(t[18]=_("已取消",-1)),s(S)[2]?(c(),f(g,{key:0,value:s(S)[2],class:"tab-badge tab-badge-info"},null,8,["value"])):y("",!0)])]),_:1}),a(w,{name:"3"},{label:i(()=>[e("span",ks,[a(o,null,{default:i(()=>[a(s(Me))]),_:1}),t[19]||(t[19]=_("已完成",-1)),s(S)[3]?(c(),f(g,{key:0,value:s(S)[3],class:"tab-badge tab-badge-primary"},null,8,["value"])):y("",!0)])]),_:1})]),_:1},8,["modelValue"]),e("div",hs,[a(Z,{modelValue:s(u).patient_name,"onUpdate:modelValue":t[1]||(t[1]=d=>s(u).patient_name=d),placeholder:"患者姓名",clearable:"",size:"small",class:"action-input",onKeyup:ye(rt,["enter"])},null,8,["modelValue"]),a(h,{type:"primary",size:"small",onClick:rt},{default:i(()=>[...t[20]||(t[20]=[_("查询",-1)])]),_:1}),a(Vt,{trigger:"click",onCommand:ht},{dropdown:i(()=>[a(gt,null,{default:i(()=>[s(et)?(c(),f(O,{key:0,class:"dropdown-item-with-input",onClick:t[4]||(t[4]=Mt(()=>{},["stop"]))},{default:i(()=>[t[22]||(t[22]=e("span",{class:"dropdown-label"},"医生",-1)),a(Z,{modelValue:s(u).doctor_name,"onUpdate:modelValue":t[2]||(t[2]=d=>s(u).doctor_name=d),placeholder:"医生",size:"small",class:"dropdown-input",onClick:t[3]||(t[3]=Mt(()=>{},["stop"]))},null,8,["modelValue"])]),_:1})):y("",!0),a(O,{command:"customDate",divided:""},{default:i(()=>[a(o,null,{default:i(()=>[a(s(Kt))]),_:1}),t[23]||(t[23]=_(" 自定义日期 ",-1))]),_:1}),a(O,{command:"reset"},{default:i(()=>[a(o,null,{default:i(()=>[a(s(ze))]),_:1}),t[24]||(t[24]=_(" 重置 ",-1))]),_:1})]),_:1})]),default:i(()=>[a(h,{size:"small"},{default:i(()=>[t[21]||(t[21]=_("更多",-1)),a(o,{class:"el-icon--right"},{default:i(()=>[a(s(Rt))]),_:1})]),_:1})]),_:1})])]),e("div",ws,[e("div",Ds,[t[29]||(t[29]=e("span",{class:"filter-label"},"日期",-1)),a(xt,{modelValue:s(u).date_preset,"onUpdate:modelValue":t[5]||(t[5]=d=>s(u).date_preset=d),size:"small",onChange:Ct,class:"filter-radio"},{default:i(()=>[a(R,{value:"today"},{default:i(()=>[...t[25]||(t[25]=[_("当天挂号",-1)])]),_:1}),a(R,{value:"tomorrow"},{default:i(()=>[...t[26]||(t[26]=[_("明天挂号",-1)])]),_:1}),a(R,{value:"day_after"},{default:i(()=>[...t[27]||(t[27]=[_("后天挂号",-1)])]),_:1}),a(R,{value:""},{default:i(()=>[...t[28]||(t[28]=[_("不限",-1)])]),_:1})]),_:1},8,["modelValue"])]),e("div",Cs,[t[33]||(t[33]=e("span",{class:"filter-label"},"确认诊单",-1)),a(xt,{modelValue:s(u).diagnosis_confirmed,"onUpdate:modelValue":t[6]||(t[6]=d=>s(u).diagnosis_confirmed=d),size:"small",onChange:Dt,class:"filter-radio"},{default:i(()=>[a(R,{value:""},{default:i(()=>[...t[30]||(t[30]=[_("全部",-1)])]),_:1}),a(R,{value:"1"},{default:i(()=>[...t[31]||(t[31]=[_("已确认",-1)])]),_:1}),a(R,{value:"0"},{default:i(()=>[...t[32]||(t[32]=[_("未确认",-1)])]),_:1})]),_:1},8,["modelValue"])])]),a(Tt,{modelValue:s(I),"onUpdate:modelValue":t[10]||(t[10]=d=>nt(I)?I.value=d:null),title:"自定义日期",width:"400px","append-to-body":"","close-on-click-modal":!0},{footer:i(()=>[a(h,{onClick:t[9]||(t[9]=d=>I.value=!1)},{default:i(()=>[...t[34]||(t[34]=[_("取消",-1)])]),_:1}),a(h,{type:"primary",onClick:wt},{default:i(()=>[...t[35]||(t[35]=[_("确定",-1)])]),_:1})]),default:i(()=>[a(Ot,{startTime:s(u).start_date,"onUpdate:startTime":t[7]||(t[7]=d=>s(u).start_date=d),endTime:s(u).end_date,"onUpdate:endTime":t[8]||(t[8]=d=>s(u).end_date=d)},null,8,["startTime","endTime"])]),_:1},8,["modelValue"]),e("div",Is,[P((c(),f(Qt,{data:s(D).lists,size:"default",class:"appointment-table",stripe:"","row-class-name":V},{default:i(()=>[a(z,{label:"ID",prop:"id",width:"72",align:"center"}),a(z,{label:"患者信息","min-width":"140"},{default:i(({row:d})=>[e("div",Ss,[e("div",$s,m((d.patient_name||"患").charAt(0)),1),e("div",Es,[e("div",Vs,m(d.patient_name),1),e("div",Ts,m(d.patient_phone),1),e("div",xs,m([d.gender===1?"男":d.gender===0?"女":"",d.age!=null?d.age+"岁":"",d.height!=null?d.height+"cm":"",d.weight!=null?d.weight+"kg":""].filter(Boolean).join(" ")||"-"),1)])])]),_:1}),a(z,{label:"医生",prop:"doctor_name",width:"90","show-overflow-tooltip":""}),a(z,{label:"预约时间","min-width":"120"},{default:i(({row:d})=>[e("div",Ms,[e("div",zs,m(d.appointment_date),1),e("div",Ps,m(d.appointment_time),1)])]),_:1}),a(z,{label:"预约类型",prop:"appointment_type_desc",width:"100","show-overflow-tooltip":""}),a(z,{label:"确认诊单",width:"90",align:"center"},{default:i(({row:d})=>[d.diagnosis_confirmed?(c(),f(tt,{key:0,type:"success",size:"small",effect:"plain"},{default:i(()=>[...t[36]||(t[36]=[_("已确认",-1)])]),_:1})):(c(),f(tt,{key:1,type:"warning",size:"small",effect:"plain"},{default:i(()=>[...t[37]||(t[37]=[_("未确认",-1)])]),_:1}))]),_:1}),a(z,{label:"开方",width:"80",align:"center"},{default:i(({row:d})=>[d.has_prescription?(c(),f(tt,{key:0,type:"success",size:"small",effect:"plain"},{default:i(()=>[...t[38]||(t[38]=[_("已开方",-1)])]),_:1})):(c(),f(tt,{key:1,type:"info",size:"small",effect:"plain"},{default:i(()=>[...t[39]||(t[39]=[_("未开方",-1)])]),_:1}))]),_:1}),a(z,{label:"状态",width:"90",align:"center"},{default:i(({row:d})=>[a(tt,{type:d.status===1?"success":d.status===2?"info":d.status===3?"primary":"danger",size:"small",effect:"light",round:""},{default:i(()=>[_(m(d.status_desc),1)]),_:2},1032,["type"])]),_:1}),a(z,{label:"备注",prop:"remark","min-width":"120","show-overflow-tooltip":""}),a(z,{label:"操作",width:"380",fixed:"right",align:"left"},{default:i(({row:d})=>[e("div",As,[P((c(),f(h,{type:"primary",link:"",size:"small",onClick:Q=>St(d)},{default:i(()=>[...t[40]||(t[40]=[_(" 详情 ",-1)])]),_:1},8,["onClick"])),[[q,["doctor.appointment/detail"]]]),P((c(),f(h,{type:"primary",link:"",size:"small",onClick:Q=>Et(d)},{default:i(()=>[...t[41]||(t[41]=[_(" 病历 ",-1)])]),_:1},8,["onClick"])),[[q,["tcm.diagnosis/kaifang"]]]),d.status===1?(c(),k(es,{key:0},[P((c(),f(h,{type:"warning",link:"",size:"small",onClick:Q=>it(d),class:"action-qrcode"},{default:i(()=>[a(o,null,{default:i(()=>[a(s(Pe))]),_:1}),t[42]||(t[42]=_(" 视频二维码 ",-1))]),_:1},8,["onClick"])),[[q,["tcm.diagnosis/videoQr"]]]),P((c(),f(h,{type:"primary",link:"",size:"small",onClick:Q=>_t(d)},{default:i(()=>[...t[43]||(t[43]=[_(" 聊天 ",-1)])]),_:1},8,["onClick"])),[[q,["doctor.appointment/prescription"]]]),P((c(),f(h,{type:"success",link:"",size:"small",onClick:Q=>lt(d)},{default:i(()=>[...t[44]||(t[44]=[_(" 完成 ",-1)])]),_:1},8,["onClick"])),[[q,["doctor.appointment/complete"]]]),P((c(),f(h,{type:"primary",link:"",size:"small",onClick:Q=>ot(d)},{default:i(()=>[...t[45]||(t[45]=[_(" 开方 ",-1)])]),_:1},8,["onClick"])),[[q,["tcm.diagnosis/kaifang"]]])],64)):y("",!0),a(Vt,{trigger:"click",onCommand:Q=>ct(Q,d),placement:"bottom-end"},{dropdown:i(()=>[a(gt,null,{default:i(()=>[P((c(),f(O,{command:"edit"},{default:i(()=>[a(o,null,{default:i(()=>[a(s(Ae))]),_:1}),t[47]||(t[47]=_(" 编辑患者 ",-1))]),_:1})),[[q,["tcm.diagnosis/edit"]]]),d.status===1?P((c(),f(O,{key:0,command:"cancel",divided:""},{default:i(()=>[a(o,null,{default:i(()=>[a(s(At))]),_:1}),t[48]||(t[48]=e("span",{class:"text-danger"},"取消挂号",-1))]),_:1})),[[q,["doctor.appointment/cancel"]]]):y("",!0)]),_:2},1024)]),default:i(()=>[a(h,{type:"info",link:"",size:"small"},{default:i(()=>[t[46]||(t[46]=_(" 更多 ",-1)),a(o,{class:"el-icon--right"},{default:i(()=>[a(s(Rt))]),_:1})]),_:1})]),_:2},1032,["onCommand"])])]),_:1})]),_:1},8,["data"])),[[Jt,s(D).loading]]),e("div",Rs,[a(jt,{modelValue:s(D),"onUpdate:modelValue":t[11]||(t[11]=d=>nt(D)?D.value=d:null),onChange:s(A)},null,8,["modelValue","onChange"])])])]),_:1}),a(Tt,{modelValue:s(G),"onUpdate:modelValue":t[12]||(t[12]=d=>nt(G)?G.value=d:null),title:"挂号详情",width:"720px",class:"detail-dialog","destroy-on-close":""},{default:i(()=>[s(n)?(c(),k("div",Ks,[e("div",Ls,[e("div",Us,[a(o,null,{default:i(()=>[a(s(Kt))]),_:1}),t[49]||(t[49]=_(" 预约信息 ",-1))]),e("div",qs,[e("div",Ws,[t[50]||(t[50]=e("span",{class:"detail-label"},"挂号ID",-1)),e("span",Ns,m(s(n).id),1)]),e("div",Ys,[t[51]||(t[51]=e("span",{class:"detail-label"},"状态",-1)),a(tt,{type:s(n).status===1?"success":s(n).status===2?"info":s(n).status===3?"primary":"danger",size:"small",effect:"light"},{default:i(()=>[_(m(s(n).status_desc),1)]),_:1},8,["type"])]),e("div",Fs,[t[52]||(t[52]=e("span",{class:"detail-label"},"医生",-1)),e("span",Bs,m(s(n).doctor_name),1)]),e("div",Xs,[t[53]||(t[53]=e("span",{class:"detail-label"},"预约时间",-1)),e("span",Hs,m(s(n).appointment_date)+" "+m(s(n).appointment_time),1)]),e("div",Os,[t[54]||(t[54]=e("span",{class:"detail-label"},"时段",-1)),e("span",Qs,m(s(n).period==="morning"?"上午":"下午"),1)]),e("div",js,[t[55]||(t[55]=e("span",{class:"detail-label"},"预约类型",-1)),e("span",Gs,m(s(n).appointment_type_desc),1)])])]),e("div",Js,[e("div",Zs,[a(o,null,{default:i(()=>[a(s(Re))]),_:1}),t[56]||(t[56]=_(" 患者信息 ",-1))]),e("div",ta,[e("div",ea,[t[57]||(t[57]=e("span",{class:"detail-label"},"姓名",-1)),e("span",sa,m(s(n).patient_name||"-"),1)]),e("div",aa,[t[58]||(t[58]=e("span",{class:"detail-label"},"手机号",-1)),e("span",la,m(s(n).phone||s(n).patient_phone||"-"),1)]),e("div",ia,[t[59]||(t[59]=e("span",{class:"detail-label"},"身份证号",-1)),e("span",oa,m(s(n).id_card||"-"),1)]),e("div",na,[t[60]||(t[60]=e("span",{class:"detail-label"},"性别",-1)),e("span",da,m(s(n).gender===1?"男":s(n).gender===0?"女":"-"),1)]),e("div",ra,[t[61]||(t[61]=e("span",{class:"detail-label"},"年龄",-1)),e("span",ua,m(s(n).age!=null?s(n).age+"岁":"-"),1)]),e("div",pa,[t[62]||(t[62]=e("span",{class:"detail-label"},"诊断日期",-1)),e("span",ca,m(s(n).diagnosis_date||"-"),1)]),e("div",ma,[t[63]||(t[63]=e("span",{class:"detail-label"},"婚姻状态",-1)),e("span",_a,m(s(n).marital_status===0?"未婚":s(n).marital_status===1?"已婚":s(n).marital_status===2?"离异":"-"),1)]),e("div",va,[t[64]||(t[64]=e("span",{class:"detail-label"},"身高(cm)",-1)),e("span",ga,m(s(n).height??"-"),1)]),e("div",fa,[t[65]||(t[65]=e("span",{class:"detail-label"},"体重(kg)",-1)),e("span",ya,m(s(n).weight??"-"),1)]),e("div",ba,[t[66]||(t[66]=e("span",{class:"detail-label"},"地区",-1)),e("span",ka,m(s(n).region||"-"),1)]),e("div",ha,[t[67]||(t[67]=e("span",{class:"detail-label"},"收缩压(mmHg)",-1)),e("span",wa,m(s(n).systolic_pressure??"-"),1)]),e("div",Da,[t[68]||(t[68]=e("span",{class:"detail-label"},"舒张压(mmHg)",-1)),e("span",Ca,m(s(n).diastolic_pressure??"-"),1)]),e("div",Ia,[t[69]||(t[69]=e("span",{class:"detail-label"},"空腹血糖(mmol/L)",-1)),e("span",Sa,m(s(n).fasting_blood_sugar??"-"),1)]),e("div",$a,[t[70]||(t[70]=e("span",{class:"detail-label"},"诊断类型",-1)),e("span",Ea,m(Y(s(W),s(n).diagnosis_type)||"-"),1)]),e("div",Va,[t[71]||(t[71]=e("span",{class:"detail-label"},"证型",-1)),e("span",Ta,m(Y(s(N),s(n).syndrome_type)||"-"),1)]),e("div",xa,[t[72]||(t[72]=e("span",{class:"detail-label"},"糖尿病期数",-1)),e("span",Ma,m(Y(s(J),s(n).diabetes_type)||"-"),1)])])]),s(n).symptoms||s(n).local_hospital_name||s(n).past_history&&s(n).past_history.length?(c(),k("div",za,[e("div",Pa,[a(o,null,{default:i(()=>[a(s(Lt))]),_:1}),t[73]||(t[73]=_(" 病史信息 ",-1))]),e("div",Aa,[s(n).diabetes_discovery_year!=null?(c(),k("div",Ra,[t[74]||(t[74]=e("span",{class:"detail-label"},"发现糖尿病病史",-1)),e("span",Ka,m(s(n).diabetes_discovery_year)+"年",1)])):y("",!0),s(n).local_hospital_name?(c(),k("div",La,[t[75]||(t[75]=e("span",{class:"detail-label"},"当地就诊医院",-1)),e("span",Ua,m(s(n).local_hospital_name),1)])):y("",!0),s(n).symptoms?(c(),k("div",qa,[t[76]||(t[76]=e("span",{class:"detail-label"},"症状补充",-1)),e("span",Wa,m(s(n).symptoms),1)])):y("",!0),s(n).past_history&&s(n).past_history.length?(c(),k("div",Na,[t[77]||(t[77]=e("span",{class:"detail-label"},"既往史",-1)),e("span",Ya,m(ut(s(n).past_history)),1)])):y("",!0)])])):y("",!0),s(n).tongue_coating||s(n).pulse||s(n).treatment_principle||s(n).prescription?(c(),k("div",Fa,[e("div",Ba,[a(o,null,{default:i(()=>[a(s(Lt))]),_:1}),t[78]||(t[78]=_(" 诊断信息 ",-1))]),e("div",Xa,[s(n).tongue_coating?(c(),k("div",Ha,[t[79]||(t[79]=e("span",{class:"detail-label"},"舌苔",-1)),e("span",Oa,m(s(n).tongue_coating),1)])):y("",!0),s(n).pulse?(c(),k("div",Qa,[t[80]||(t[80]=e("span",{class:"detail-label"},"脉象",-1)),e("span",ja,m(s(n).pulse),1)])):y("",!0),s(n).treatment_principle?(c(),k("div",Ga,[t[81]||(t[81]=e("span",{class:"detail-label"},"治则",-1)),e("span",Ja,m(s(n).treatment_principle),1)])):y("",!0),s(n).prescription?(c(),k("div",Za,[t[82]||(t[82]=e("span",{class:"detail-label"},"处方",-1)),e("span",tl,m(s(n).prescription),1)])):y("",!0)])])):y("",!0),e("div",el,[t[83]||(t[83]=e("div",{class:"detail-section-title"},"备注",-1)),e("p",sl,m(s(n).remark||"无"),1)])])):y("",!0)]),_:1},8,["modelValue"]),a(Se,{ref_key:"editRef",ref:at,onSuccess:s(A)},null,8,["onSuccess"]),a($e,{ref_key:"prescriptionRef",ref:U,onSuccess:vt},null,512),a(ms,{ref_key:"chatDialogRef",ref:F},null,512),a(Tt,{modelValue:s(x),"onUpdate:modelValue":t[14]||(t[14]=d=>nt(x)?x.value=d:null),title:"小程序二维码",width:"380px","close-on-click-modal":!1,class:"qrcode-dialog"},{footer:i(()=>[a(h,{onClick:t[13]||(t[13]=d=>x.value=!1)},{default:i(()=>[...t[88]||(t[88]=[_("关闭",-1)])]),_:1}),s(B)?y("",!0):(c(),f(h,{key:0,type:"primary",onClick:r},{default:i(()=>[...t[89]||(t[89]=[_(" 重新生成 ",-1)])]),_:1}))]),default:i(()=>{var d;return[e("div",al,[s(B)?(c(),k("div",ll,[a(o,{class:"is-loading",size:48},{default:i(()=>[a(s(Ft))]),_:1}),t[84]||(t[84]=e("div",{class:"qrcode-loading-text"},"生成中...",-1))])):s(X)?(c(),k("div",il,[e("div",ol,[e("img",{src:s(X),alt:"小程序二维码",class:"qrcode-image"},null,8,nl)]),e("div",dl,[e("div",rl,"患者:"+m((d=s(H))==null?void 0:d.patient_name),1),t[85]||(t[85]=e("div",{class:"qrcode-tip"},"请使用微信扫描二维码",-1)),t[86]||(t[86]=e("div",{class:"qrcode-path"},"pages/login/login",-1))])])):(c(),k("div",ul,[a(o,{size:40},{default:i(()=>[a(s(Pt))]),_:1}),t[87]||(t[87]=e("div",null,"生成失败,请重试",-1))]))])]}),_:1},8,["modelValue"])])}}}),Ti=Yt(pl,[["__scopeId","data-v-f367bd6f"]]);export{Ti as default};
|