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