2 lines
41 KiB
JavaScript
2 lines
41 KiB
JavaScript
import{i as be,d as he,K as $e,m as Me,l as Pe,a8 as xe,F as Ve,p as ze,n as Ke,o as Oe,C as Ne,B as We,Y as Be,M as He,N as qe,U as Fe,L as Ye,J as je}from"./element-plus-CFxTwCZ2.js";import{_ as Xe}from"./index.vue_vue_type_script_setup_true_lang-CaamePaH.js";import{_ as Ge}from"./index.vue_vue_type_script_setup_true_lang-G6LyA4hv.js";import{q as Je,s as Ct,w as Qe}from"./@vue/runtime-dom-iFk_KP8y.js";import{u as Ze}from"./usePaging-D4wPHtKU.js";import{c as re,d as ts,e as es}from"./doctor-CWMDoMqr.js";import{j as Nt,t as ss,k as as,l as ns,s as ls,m as os,n as is}from"./tcm-CEDF0dA_.js";import{a as Ce,f as w,d as we,j as Ot}from"./index-DqzX0p3J.js";import{E as rs,T as ds}from"./edit-CIb_NJzO.js";import{c as de,l as ke,N as us,O as cs,f as ps,P as ms,Q as ue,b as ce,d as _s,e as pe,g as me,u as fs,R as gs,F as Jt,S as vs}from"./@element-plus/icons-vue-cboVPb4D.js";import{u as ys}from"./index-CHkSemYM.js";import{E as bs}from"./@tencentcloud/chat-uikit-vue3-CHkog-Bq.js";import{T as Qt}from"./@tencentcloud/chat-AC2Y2r2A.js";import{u as hs,F as W,z as Cs,g as Dt,a as Tt,l as _t}from"./@tencentcloud/call-uikit-vue-D2RRvcD4.js";import{c as _e}from"./@tencentcloud/call-engine-js-BX2W9Lhf.js";import{R as ws}from"./@tencentcloud/uikit-base-component-vue3-j7nzpOcN.js";import{u as ks,C as Es,M as Is,a as Ss,O as Ds,E as Ts,N as Rs,S as As,A as Ls,b as Us}from"./tuikit-atomicx-vue3-DrGeCvj1.js";import{f as Ee,b as $s,d as Ms,w as Ie,ak as g,G as D,aP as tt,J as e,a as n,aN as i,I as A,H as T,O as v,T as Ps,n as Zt,A as Wt,as as xs}from"./@vue/runtime-core-C0pg79pw.js";import{Q as f,p as fe}from"./@vue/shared-mAAVTE9n.js";import{y as s,o as _,a as Rt,r as Vs}from"./@vue/reactivity-BIbyPIZJ.js";import{g as zs}from"./weapp-Dnx64MKA.js";import"./lodash-es-BADexyn7.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./lodash-D3kF6u-c.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-CYz6RFzi.js";import"./pinia-Ba_jX6-d.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-DIKi2bJB.js";import"./@vueuse/shared-D8934tfB.js";import"./css-color-function-DI01JAaZ.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-DByT_rEQ.js";import"./clipboard-CHgxszqY.js";import"./echarts-DYKKs4Al.js";import"./tslib-BDyQ-Jie.js";import"./zrender-CTTuYiLF.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-BVMzZUvF.js";import"./picker-DsltUfs3.js";import"./index-Dn-pwuas.js";import"./index-DrGLRjBU.js";import"./vuedraggable-C3E4D3Yv.js";import"./vue-tI-HfQaQ.js";import"./@vue/compiler-dom-CqayqxS7.js";import"./@vue/compiler-core-CvbQOXIO.js";import"./sortablejs-dsEAUXlE.js";import"./BloodRecordList-BS0mske4.js";import"./CaseRecordList-1NwayiPu.js";import"./CallRecordPanel-C_tba6F8.js";import"./ImChatRecordPanel-CJDxJ90z.js";import"./html2canvas-QH1iLAAe.js";import"./index-H3KMCy3k.js";import"./index.vue_vue_type_script_setup_true_lang-DNaQ2ceB.js";import"./@tencentcloud/chat-uikit-engine-HMtIAGRh.js";import"./tim-upload-plugin-HO4N4AW9.js";import"./tim-profanity-filter-plugin-DrEYKyVx.js";import"./@tencentcloud/tui-core-XR-Zaf-5.js";import"./rtc-detect-Chu-fZvE.js";import"./@tencentcloud/tuiroom-engine-js-Br9swJyU.js";import"./tcplayer.js-qpFBCYzN.js";async function Ks($){const E=Array.from($.querySelectorAll("video"));let C=null,L=0;for(const b of E){if(b.readyState<2)continue;const K=b.videoWidth||b.clientWidth,B=b.videoHeight||b.clientHeight,Q=K*B;Q>L&&(L=Q,C=b)}if(!C)return null;const p=C.videoWidth||C.clientWidth,V=C.videoHeight||C.clientHeight;if(!p||!V)return null;const U=document.createElement("canvas");U.width=p,U.height=V;const I=U.getContext("2d");if(!I)return null;try{I.drawImage(C,0,0,p,V)}catch{return null}return new Promise(b=>{U.toBlob(K=>b(K),"image/jpeg",.92)})}function Os($){const E=[];let C=$,L=0;for(;C!=null&&L<6;){if(typeof C=="string"){E.push(C);break}if(typeof C=="object"){const p=C;typeof p.message=="string"&&E.push(p.message),typeof p.name=="string"&&E.push(p.name),typeof p.code<"u"&&E.push(String(p.code)),C=p.cause}else{E.push(String(C));break}L++}return E.join(" ").toLowerCase()}const ge=-1001;function ht($){if($&&typeof $=="object"){const C=$,L=C.code??C.error_code;if(L===ge||L===String(ge))return!0}const E=Os($);return E.includes("does not support this ability")||E.includes("package you purchased")||E.includes("-1001")&&E.includes("does not support")}function Se(){return"套餐欠费或未开通该能力,请联系管理员在腾讯云续费或升级套餐。"}function Ns($,E="通话操作失败"){return ht($)?Se():$ instanceof Error?$.message||E:typeof $=="string"&&$||E}const Ws={class:"chat-window-title"},Bs={class:"chat-container"},Hs={key:0,class:"loading-container"},qs={key:1,class:"error-container"},Fs={key:2,class:"chat-content"},Ys={class:"chat-layout"},js={class:"message-toolbar"},Xs={class:"call-kit-drag-handle-actions"},te="idle",ve="calling",ee="connected",ye=40,Gs=100,Js=2600,Qs=Ee({__name:"index",setup($,{expose:E}){const C=_(""),L=_(!1),p=_(!1),V=_(""),U=_(""),I=_(null),b=_(null),K=_("正在初始化..."),B=_(""),Q=_(""),M=_(!1),F=_(!1),{login:O}=Us(),{setActiveConversation:Bt,createC2CConversation:Ht,activeConversation:qt}=Ls(),Ft=Ce(),et=_("");let Y=null,j=null,u=0;function At(){const a=Dt.getData(Tt.CALL,_t.ROOM_ID);if(a==null)return"";if(typeof a=="number")return a===0?"":String(a);const l=String(a).trim();return!l||l==="0"?"":l}function Lt(){var a,l;try{const o=(l=(a=W).getTUICallEngineInstance)==null?void 0:l.call(a);if(!o)return"";const m=[o.roomId,o.roomID,o._roomId,o._roomID,o.strRoomID];for(const y of m){if(y==null||y==="")continue;const k=String(y).trim();if(k&&k!=="0")return k}}catch{}return""}function ft(){return At()||Lt()}function rt(a,l){if(l!=null&&String(l).trim()!==""&&String(l)!=="0")return String(l).trim();if(typeof a=="number"&&a>0)return String(a);if(typeof a=="string"){const o=a.trim();if(o&&o!=="0")return o}return""}function dt(a){if(a==null||typeof a!="object")return"";const l=a,o=rt(l.roomID,l.strRoomID)||rt(l.roomId,l.strRoomId);if(o)return o;const m=l.data;if(m&&typeof m=="object"){const y=m,k=rt(y.roomID,y.strRoomID)||rt(y.roomId,y.strRoomId);if(k)return k}return""}function st(){j&&(clearTimeout(j),j=null),u=0}function Yt(){st();const a=()=>{j=null;const l=Dt.getData(Tt.CALL,_t.CALL_STATUS);if(l===te||l!==ve&&l!==ee)return;const o=ft();if(o){X(o);return}if(u++,u>=ye){console.warn("[chat-dialog] 仍未解析到有效房间号(已重试",ye,"次)");return}j=setTimeout(a,Gs)};j=setTimeout(a,0)}async function gt(a){if(!(I.value==null||b.value==null)){await Zt();for(let l=0;l<40;l++){const o=ft();if(o){await X(o);return}await new Promise(m=>setTimeout(m,50))}console.warn("[chat-dialog] 发起通话后仍未解析到房间号(API:",a,")")}}function wt(){var m,y;const a=window;if(a.__zytEngineRoomCapture__)return;const l=(y=(m=W).getTUICallEngineInstance)==null?void 0:y.call(m);if(!l||typeof l.calls!="function")return;a.__zytEngineRoomCapture__=!0,l.__zytEngineRoomCapture__=!0;const o=k=>{const z=l[k];typeof z=="function"&&(l[k]=async function(...Ue){const oe=await z.apply(l,Ue),ie=dt(oe);return ie&&X(ie),await gt("engine."+k),oe})};o("calls"),o("call"),o("groupCall")}let ut=[];function at(){var a,l;try{const o=(l=(a=W).getTUICallEngineInstance)==null?void 0:l.call(a),m=o==null?void 0:o.on;if(!o||typeof m!="function"||o.__zytRoomEvents)return;o.__zytRoomEvents=!0;const y=z=>{const it=dt(z);if(it){X(it);return}kt()},k=[_e.TUICallEvent.USER_ENTER,_e.TUICallEvent.ON_CALL_BEGIN];for(const z of k)m.call(o,z,y),ut.push({event:z,fn:y})}catch(o){console.warn("[chat-dialog] 绑定引擎房间事件失败",o)}}function vt(){var a,l;try{const o=(l=(a=W).getTUICallEngineInstance)==null?void 0:l.call(a);if(!(o!=null&&o.off)){ut=[];return}for(const{event:m,fn:y}of ut)o.off(m,y);o.__zytRoomEvents=!1}catch{}ut=[]}function yt(){const a=window;if(a.__zytTUICallRoomHooks__)return;a.__zytTUICallRoomHooks__=!0;const l=W,o=m=>{const y=l[m];typeof y=="function"&&(l[m]=async function(...z){const it=await y.apply(l,z);return await gt(m),it})};o("calls"),o("call"),o("groupCall")}async function X(a){if(I.value==null||b.value==null)return;const l=`${b.value}:${a}`;if(l===et.value){st();return}et.value=l;try{await ns({diagnosis_id:b.value,room_id:a}),st(),console.log("[chat-dialog] bindCallRoom 成功",{room_id:a})}catch(o){console.warn("[chat-dialog] bindCallRoom 失败",o),et.value=""}}async function kt(){if(I.value==null||b.value==null)return;const a=Dt.getData(Tt.CALL,_t.CALL_STATUS);if(a===te){st(),et.value="";return}if(a!==ve&&a!==ee)return;await Zt();const l=ft();if(l){await X(l);return}Yt()}async function jt(){if(!(I.value==null||b.value==null))try{await ls({diagnosis_id:b.value,patient_id:I.value,call_type:2})}catch(a){console.warn("[chat-dialog] startCall 记录失败",a)}}function Ut(){Y==null||Y();const a=o=>{if(o===te){st(),et.value="";return}o===ee&&kt()},l=()=>{kt()};Dt.watch(Tt.CALL,{[_t.CALL_STATUS]:a,[_t.ROOM_ID]:l}),Y=()=>{try{Dt.unwatch(Tt.CALL,{[_t.CALL_STATUS]:a,[_t.ROOM_ID]:l})}catch{}st(),Y=null}}let Et=0;function ct(){const a=Date.now();a-Et<Js||(Et=a,w.msgError(Se()),F.value=!1)}let nt=null,lt=!1,Z=null;function $t(){lt||(nt=console.error.bind(console),lt=!0,console.error=(...a)=>{if(nt(...a),!L.value||!M.value)return;const l=a.map(o=>{if(typeof o=="string")return o;if(o instanceof Error)return o.message;try{return JSON.stringify(o)}catch{return String(o)}}).join(" ");ht(l)&&ct()})}function Xt(){lt&&nt&&(console.error=nt),lt=!1,nt=null}function Gt(){var a,l,o;try{const m=(l=(a=W).getTUICallEngineInstance)==null?void 0:l.call(a);if(!(m!=null&&m.on))return;Z&&((o=m.off)==null||o.call(m,"error",Z)),Z=y=>{!L.value||!M.value||ht(y)&&ct()},m.on("error",Z)}catch(m){console.warn("绑定 TUICallEngine error 监听失败:",m)}}function It(){var a,l;try{const o=(l=(a=W).getTUICallEngineInstance)==null?void 0:l.call(a);o!=null&&o.off&&Z&&o.off("error",Z)}catch{}Z=null}async function Mt(a,l){try{const o=Qt.create({SDKAppID:a}),m={businessID:"doctor_entered_consult_room",time:Date.now()},y=o.createCustomMessage({to:l,conversationType:Qt.TYPES.CONV_C2C,payload:{data:JSON.stringify(m)}});await o.sendMessage(y),console.log("已发送医生进入诊室信令(患者端聊天列表不展示)")}catch(o){console.warn("发送医生进入诊室信令失败:",o)}}const r=a=>{!L.value||!M.value||ht(a.reason)&&ct()};$s(()=>{$t(),window.addEventListener("unhandledrejection",r)}),Ms(()=>{Y==null||Y(),vt(),Xt(),It(),window.removeEventListener("unhandledrejection",r)});const t=async(a,l)=>{try{if(!a){console.warn("头像 URL 为空,跳过更新");return}console.log("开始更新头像到 IM:",a);const o=await new Promise((m,y)=>{setTimeout(async()=>{try{const z=await Qt.create({SDKAppID:l}).updateMyProfile({avatar:a});console.log("IM 头像更新成功:",z),m(z)}catch(k){console.error("更新头像异常:",k),m(null)}},500)})}catch(o){console.error("IM 头像更新失败:",o.message||o)}};Ie(()=>qt.value,async a=>{if(a){if(U.value=a.getShowName()||U.value,console.log("会话切换:",a.conversationID,"名称:",U.value,a),a.userProfile.userID.includes("doctor"))console.log("当前会话是医生,跳过获取 assistant_id");else try{const l=await Nt({patient_id:a.userProfile.userID.replace("patient_",""),diagnosis_id:b.value});B.value=l.patientUserId,C.value=l.assistant_id,console.log("会话切换后获取到 assistant_id:",C.value,"完整响应:",l)}catch(l){console.error("获取 assistant_id 失败:",l)}console.log("会话切换完成,userID:",a.userProfile.userID)}});const d=async a=>{L.value=!0,P.value=100,H.value=80,x.value=Math.max(0,(window.innerWidth-375)/2),q.value=Math.max(0,(window.innerHeight-667)/2),U.value=a.patientName,I.value=a.patientId,b.value=a.diagnosisId||null,V.value="",p.value=!1,M.value=!1,F.value=!1,K.value="正在获取签名...";try{const l=await Nt({patient_id:a.patientId,diagnosis_id:a.diagnosisId||0});if(C.value=l.assistant_id,console.log("后端返回的签名数据:",l),console.log("assistant_id:",C.value),!l||!l.userSig)throw new Error("获取签名失败");l.assistant_id||console.warn("警告:后端未返回 assistant_id,群视频通话可能无法正常工作"),B.value=l.patientUserId||`patient_${a.patientId}`,K.value="正在登录聊天...",await O({sdkAppId:Number(l.sdkAppId),userId:l.userId,userSig:l.userSig,useUploadPlugin:!0});const o=Number(l.sdkAppId);if(!window.__TUICallKitInited__){K.value="正在初始化通话能力...";try{await W.init({userID:l.userId,userSig:l.userSig,SDKAppID:o}),window.__TUICallKitInited__=!0}catch(m){console.warn("TUICallKit 初始化失败,聊天仍可用,音视频通话不可用:",(m==null?void 0:m.message)||m),ht(m)&&ct()}}M.value=!!window.__TUICallKitInited__,M.value&&(W.setCallback({beforeCalling:()=>{F.value=!0,jt()},afterCalling:()=>{F.value=!1}}),yt(),wt(),at(),Ut(),Gt()),console.log("Chat UIKit 登录成功,患者用户ID:",B.value),K.value="加载聊天界面...",setTimeout(async()=>{var y;p.value=!0,await Zt(),await new Promise(k=>setTimeout(k,1e3));const m=(y=Ft.userInfo)==null?void 0:y.avatar;console.log("准备更新头像,avatar:",m),m&&await t(m,o);try{const k=await Ht(B.value);Q.value=k.conversationID,console.log("已创建/获取会话:",Q.value),Bt(Q.value),console.log("已激活会话"),await Mt(o,B.value)}catch(k){console.error("创建/激活会话失败:",k)}},800)}catch(l){console.error("初始化聊天失败:",l),V.value=l.message||"初始化聊天失败",w.msgError(V.value)}},h=async()=>{if(!M.value){w.msgWarning("通话服务初始化中,请稍后再试");return}if(!B.value){w.msgWarning("未找到患者通话ID,无法发起群视频");return}try{if(!C.value){console.warn("assistant_id 为空,尝试重新获取");const l=await Nt({patient_id:I.value,diagnosis_id:b.value});C.value=l.assistant_id,console.log("重新获取 assistant_id:",C.value)}const a=[B.value,C.value].filter(l=>l);if(a.length<2){w.msgWarning("助理ID获取失败,无法发起群视频"),console.error("userIDList 不完整:",a,"assistant_ids:",C.value);return}console.log("发起群视频通话,参与者:",a),await W.calls({userIDList:a,type:Cs.VIDEO_CALL})}catch(a){console.error("发起群视频失败:",a),ht(a)?ct():w.msgError(Ns(a,"发起群视频失败"))}},R=_(),P=_(100),H=_(80),S=_(!1),G=_(0),pt=_(0),bt=_(0),N=_(0),Pt=_(),xt=_(),mt=_(!1),x=_(0),q=_(0),St=_(!1),Vt=_(0),zt=_(0),J=_(0),Kt=_(0),c=Wt(()=>({left:`${x.value}px`,top:`${q.value}px`})),ot=a=>{St.value=!0,Vt.value=a.clientX,zt.value=a.clientY,J.value=x.value,Kt.value=q.value,document.addEventListener("mousemove",se),document.addEventListener("mouseup",ae)},se=a=>{St.value&&(x.value=Math.max(0,J.value+a.clientX-Vt.value),q.value=Math.max(0,Kt.value+a.clientY-zt.value))},ae=()=>{St.value=!1,document.removeEventListener("mousemove",se),document.removeEventListener("mouseup",ae)},De=async()=>{if(I.value==null){w.msgWarning("缺少患者信息,无法同步舌苔照片");return}const a=xt.value;if(a){mt.value=!0;try{const l=await Ks(a);if(!l){w.msgWarning("截屏失败,请确认视频画面已加载");return}const o=await ys(l,`callshot-${Date.now()}.jpg`),m=o.url||o.uri;if(!m){w.msgError("上传未返回图片路径");return}if(b.value==null){w.msgWarning("请先保存诊单后再从视频同步舌苔照片");return}const y=await ss({id:b.value});if(Number(y.patient_id)!==Number(I.value)){w.msgError("患者与当前诊单不匹配,无法同步");return}const k=[...y.tongue_images||[]];if(k.length>=9){w.msgWarning("舌苔照片已达上限 9 张");return}const z=[...k,m],it=JSON.parse(JSON.stringify(y));it.tongue_images=z,await as(it),w.msgSuccess("舌苔照片已同步到诊单")}catch(l){const o=l;console.error(o),w.msgError((o==null?void 0:o.message)||"上传失败")}finally{mt.value=!1}}},Te=async()=>{if(M.value)try{await W.hangup()}catch(a){console.warn("关闭视频窗口时挂断失败:",a)}F.value=!1},Re=Wt(()=>({left:`${P.value}px`,top:`${H.value}px`})),Ae=a=>{a.target.closest(".chat-close-btn")||(S.value=!0,G.value=a.clientX,pt.value=a.clientY,bt.value=P.value,N.value=H.value,document.addEventListener("mousemove",ne),document.addEventListener("mouseup",le))},ne=a=>{S.value&&(P.value=Math.max(0,bt.value+a.clientX-G.value),H.value=Math.max(0,N.value+a.clientY-pt.value))},le=()=>{S.value=!1,document.removeEventListener("mousemove",ne),document.removeEventListener("mouseup",le)},Le=async()=>{if(M.value&&F.value)try{await W.hangup()}catch(a){console.warn("挂断通话时出错:",a)}L.value=!1,F.value=!1};return E({open:d}),(a,l)=>{const o=he,m=be,y=$e;return g(),D(Ps,{to:"body"},[tt(e("div",{ref_key:"chatWindowRef",ref:R,class:"chat-floating-window",style:fe(Re.value)},[e("div",{class:"chat-window-header",onMousedown:Ae},[e("span",Ws,"与 "+f(U.value)+" 聊天",1),n(m,{type:"danger",link:"",class:"chat-close-btn",onClick:Le},{default:i(()=>[n(o,null,{default:i(()=>[n(s(de))]),_:1})]),_:1})],32),e("div",Bs,[p.value?V.value?(g(),A("div",qs,[n(y,{title:V.value,type:"error",closable:!1},null,8,["title"])])):(g(),A("div",Fs,[n(s(ws),{language:"zh-CN",theme:"light"},{default:i(()=>[e("div",Ys,[n(s(ks),{class:"conversation-list"}),n(s(bs),{class:"chat-area"},{default:i(()=>[n(s(Es),{conversationID:Q.value},null,8,["conversationID"]),n(s(Is),null,{headerToolbar:i(()=>[e("div",js,[n(s(Ss)),n(s(Ds)),n(s(Ts)),M.value?(g(),D(s(Rs),{key:0})):T("",!0),M.value?(g(),D(s(As),{key:1})):T("",!0),M.value?(g(),D(m,{key:2,size:"small",type:"primary",onClick:h},{default:i(()=>[...l[2]||(l[2]=[v(" 群视频 ",-1)])]),_:1})):T("",!0)])]),_:1})]),_:1})])]),_:1})])):(g(),A("div",Hs,[n(o,{class:"is-loading"},{default:i(()=>[n(s(ke))]),_:1}),e("span",null,f(K.value),1)]))]),M.value&&F.value?(g(),A("div",{key:0,ref_key:"callKitWrapperRef",ref:Pt,class:"chat-dialog-call-kit-wrapper",style:fe(c.value)},[e("div",{class:"call-kit-drag-handle",onMousedown:ot},[l[4]||(l[4]=e("span",{class:"drag-handle-text"},"视频通话",-1)),e("div",Xs,[n(m,{type:"primary",link:"",class:"call-kit-screenshot-btn",loading:mt.value,onMousedown:l[0]||(l[0]=Ct(()=>{},["stop"])),onClick:Ct(De,["stop"])},{default:i(()=>[n(o,null,{default:i(()=>[n(s(us))]),_:1}),l[3]||(l[3]=e("span",{class:"call-kit-screenshot-text"},"截屏",-1))]),_:1},8,["loading"]),n(m,{type:"danger",link:"",class:"call-kit-close-btn",onMousedown:l[1]||(l[1]=Ct(()=>{},["stop"])),onClick:Ct(Te,["stop"])},{default:i(()=>[n(o,null,{default:i(()=>[n(s(de))]),_:1})]),_:1}),n(o,{class:"drag-handle-icon"},{default:i(()=>[n(s(cs))]),_:1})])],32),e("div",{ref_key:"callKitContentRef",ref:xt,class:"call-kit-content"},[n(s(hs),{allowedMinimized:!0,allowedFullScreen:!0,class:"chat-dialog-call-kit"})],512)],4)):T("",!0)],4),[[Je,L.value]])])}}}),Zs=we(Qs,[["__scopeId","data-v-d2378537"]]),ta={class:"appointment-list"},ea={class:"list-toolbar"},sa={class:"tab-label tab-priority"},aa={class:"tab-label"},na={class:"tab-label"},la={class:"tab-label"},oa={class:"tab-label"},ia={class:"toolbar-actions"},ra={class:"filter-bar"},da={class:"filter-group"},ua={class:"filter-group"},ca={class:"table-wrap"},pa={class:"patient-cell"},ma={class:"patient-avatar"},_a={class:"patient-info"},fa={class:"patient-name"},ga={class:"patient-phone"},va={class:"patient-extra"},ya={class:"datetime-cell"},ba={class:"date-text"},ha={class:"time-text"},Ca={class:"action-btns"},wa={class:"flex justify-end py-4 px-4"},ka={key:0,class:"detail-content"},Ea={class:"detail-section"},Ia={class:"detail-section-title"},Sa={class:"detail-grid"},Da={class:"detail-item"},Ta={class:"detail-value"},Ra={class:"detail-item"},Aa={class:"detail-item"},La={class:"detail-value"},Ua={class:"detail-item"},$a={class:"detail-value"},Ma={class:"detail-item"},Pa={class:"detail-value"},xa={class:"detail-item"},Va={class:"detail-value"},za={class:"detail-section"},Ka={class:"detail-section-title"},Oa={class:"detail-grid"},Na={class:"detail-item"},Wa={class:"detail-value"},Ba={class:"detail-item"},Ha={class:"detail-value"},qa={class:"detail-item"},Fa={class:"detail-value"},Ya={class:"detail-item"},ja={class:"detail-value"},Xa={class:"detail-item"},Ga={class:"detail-value"},Ja={class:"detail-item"},Qa={class:"detail-value"},Za={class:"detail-item"},tn={class:"detail-value"},en={class:"detail-item"},sn={class:"detail-value"},an={class:"detail-item"},nn={class:"detail-value"},ln={class:"detail-item"},on={class:"detail-value"},rn={class:"detail-item"},dn={class:"detail-value"},un={class:"detail-item"},cn={class:"detail-value"},pn={class:"detail-item"},mn={class:"detail-value"},_n={class:"detail-item"},fn={class:"detail-value"},gn={class:"detail-item"},vn={class:"detail-value"},yn={class:"detail-item"},bn={class:"detail-value"},hn={key:0,class:"detail-section"},Cn={class:"detail-section-title"},wn={class:"detail-grid"},kn={key:0,class:"detail-item"},En={class:"detail-value"},In={key:1,class:"detail-item"},Sn={class:"detail-value"},Dn={key:2,class:"detail-item detail-item-full"},Tn={class:"detail-value"},Rn={key:3,class:"detail-item detail-item-full"},An={class:"detail-value"},Ln={key:1,class:"detail-section"},Un={class:"detail-section-title"},$n={class:"detail-grid"},Mn={key:0,class:"detail-item"},Pn={class:"detail-value"},xn={key:1,class:"detail-item"},Vn={class:"detail-value"},zn={key:2,class:"detail-item detail-item-full"},Kn={class:"detail-value"},On={key:3,class:"detail-item detail-item-full"},Nn={class:"detail-value"},Wn={class:"detail-section"},Bn={class:"detail-remark"},Hn={class:"qrcode-content"},qn={key:0,class:"qrcode-loading"},Fn={key:1,class:"qrcode-success"},Yn={class:"qrcode-image-wrap"},jn=["src"],Xn={class:"qrcode-info"},Gn={class:"qrcode-patient"},Jn={key:2,class:"qrcode-error"},Qn=Ee({__name:"list",setup($){const E=Ce(),C=Wt(()=>E.userInfo),L=Wt(()=>{const r=C.value.role_id;return Array.isArray(r)?!r.includes(1)&&!r.includes(2):r!==1&&r!==2}),p=Vs({patient_name:"",doctor_name:"",status:"",start_date:"",end_date:"",date_preset:"today",diagnosis_confirmed:""}),V=_("1"),U=_(!1),I=_({1:0,2:0,3:0,4:0}),{pager:b,getLists:K,resetPage:B}=Ze({fetchFun:re,params:p});Ie(()=>[p.start_date,p.end_date],([r,t])=>{if(!p.date_preset)return;const d=new Date,h=N=>String(N).padStart(2,"0"),R=`${d.getFullYear()}-${h(d.getMonth()+1)}-${h(d.getDate())}`,P=new Date(d);P.setDate(P.getDate()+1);const H=`${P.getFullYear()}-${h(P.getMonth()+1)}-${h(P.getDate())}`,S=new Date(d);S.setDate(S.getDate()+2);const G=`${S.getFullYear()}-${h(S.getMonth()+1)}-${h(S.getDate())}`,pt=p.date_preset==="today"?R:p.date_preset==="tomorrow"?H:G;(r||"").split(" ")[0]!==pt&&(p.date_preset="")});const Q=async()=>{try{const r=[1,2,3,4].map(async d=>{const h=await re({...p,status:d,page_no:1,page_size:1});return{status:d,count:h.count||0}});(await Promise.all(r)).forEach(({status:d,count:h})=>{I.value[d]=h})}catch(r){console.error("获取状态数量失败:",r)}},M=({row:r})=>r.status===1?"row-pending":"",F=r=>{r==="all"?p.status="":p.status=Number(r),B()},O=async()=>{await K(),await Q()},Bt=r=>{r==="customDate"?U.value=!0:r==="reset"&&Y()},Ht=()=>{p.date_preset="",U.value=!1,b.page=1,O()},qt=()=>{b.page=1,O()},Ft=r=>{const t=String(r||"");if(!t){p.date_preset="",p.start_date="",p.end_date="",O();return}const d=new Date,h=H=>String(H).padStart(2,"0");let R;t==="today"?R=d:t==="tomorrow"?(R=new Date(d),R.setDate(R.getDate()+1)):(R=new Date(d),R.setDate(R.getDate()+2));const P=`${R.getFullYear()}-${h(R.getMonth()+1)}-${h(R.getDate())}`;p.date_preset=t,p.start_date=P,p.end_date=P,b.page=1,O()},et=()=>{b.page=1,O()},Y=()=>{V.value="1",p.patient_name="",p.doctor_name="",p.date_preset="today",p.diagnosis_confirmed="";const r=new Date,t=d=>String(d).padStart(2,"0");p.start_date=`${r.getFullYear()}-${t(r.getMonth()+1)}-${t(r.getDate())}`,p.end_date=p.start_date,p.status=1,b.page=1,O()},j=_(!1),u=_(null),At=_([]),Lt=_([]),ft=_([]),rt=_([]),dt=(r,t)=>{if(!t)return"-";const d=r.find(h=>h.value===t);return d?d.name:t},st=r=>(Array.isArray(r)?r:typeof r=="string"?r.split(/[,,、]/):[]).map(d=>dt(rt.value,d.trim())).filter(Boolean).join("、")||"-",Yt=async()=>{try{const[r,t,d,h]=await Promise.all([Ot({type:"diagnosis_type"}),Ot({type:"syndrome_type"}),Ot({type:"diabetes_type"}),Ot({type:"past_history"})]);At.value=(r==null?void 0:r.diagnosis_type)||[],Lt.value=(t==null?void 0:t.syndrome_type)||[],ft.value=(d==null?void 0:d.diabetes_type)||[],rt.value=(h==null?void 0:h.past_history)||[]}catch(r){console.error("加载字典失败:",r)}},gt=_(),wt=_(),ut=_(),at=_(!1),vt=_(!1),yt=_(""),X=_(null),kt=(r,t)=>{switch(r){case"edit":Et(t);break;case"viewCase":Xt(t);break;case"complete":Ut(t);break;case"chat":nt(t);break;case"qrcode":lt(t);break;case"prescription":$t(t);break;case"cancel":jt(t);break}},jt=async r=>{try{await w.confirm("确定要取消该挂号吗?"),await ts({id:r.id}),w.msgSuccess("取消成功"),O()}catch{}},Ut=async r=>{try{await w.confirm("确认患者已就诊完成?"),await es({id:r.id}),w.msgSuccess("操作成功"),O()}catch{}},Et=r=>{var t;if(!r.patient_id){w.msgWarning("该预约没有关联诊单信息");return}(t=gt.value)==null||t.open("edit",r.patient_id)},ct=r=>{Et(r)},nt=async r=>{var t;if(!r.patient_id){w.msgWarning("患者信息不完整");return}if(!r.diagnosis_id&&!r.id){w.msgWarning("预约信息不完整,无法发起聊天");return}try{const d=await Nt({patient_id:r.patient_id,diagnosis_id:r.diagnosis_id||r.id});console.log("获取聊天签名成功:",d),(t=ut.value)==null||t.open({patientId:r.patient_id,patientName:r.patient_name,diagnosisId:r.diagnosis_id||r.id,signatureData:d})}catch(d){console.error("获取聊天签名失败:",d),w.msgError(d.message||"获取聊天签名失败")}},lt=async r=>{if(!r.patient_id){w.msgWarning("患者信息不完整");return}X.value=r,at.value=!0,vt.value=!0,yt.value="";try{const t=await zs();if(!(t!=null&&t.app_id)){w.msgError("小程序未配置,请先配置小程序信息"),at.value=!1;return}const d=E.userInfo,h=await os({diagnosis_id:r.doctor_id||"",patient_id:r.patient_id,share_user_id:(d==null?void 0:d.id)||"",mini_program_path:"pages/login/login"});h!=null&&h.qrcode_url?yt.value=h.qrcode_url:w.msgError("二维码生成失败")}catch(t){console.error("生成小程序二维码失败:",t),w.msgError((t==null?void 0:t.msg)||"生成二维码失败,请重试")}finally{vt.value=!1}},Z=()=>{var r,t;O(),(t=(r=gt.value)==null?void 0:r.refreshCaseList)==null||t.call(r)},$t=r=>{var t;if(!r.diagnosis_id&&!r.patient_id){w.msgWarning("该预约缺少诊单信息,请先编辑患者");return}(t=wt.value)==null||t.open(r)},Xt=async r=>{var t;if(!r.id){w.msgWarning("预约信息不完整");return}try{const d=await is({appointment_id:r.id});d!=null&&d.id?(t=wt.value)==null||t.openById(d.id):w.msgWarning("该预约暂无病历记录,请先开方")}catch(d){w.msgError((d==null?void 0:d.msg)||"获取病历失败")}},Gt=()=>{X.value&<(X.value)},It=new Date,Mt=r=>String(r).padStart(2,"0");return p.start_date=`${It.getFullYear()}-${Mt(It.getMonth()+1)}-${Mt(It.getDate())}`,p.end_date=p.start_date,p.status=1,O(),Yt(),(r,t)=>{const d=he,h=xe,R=Pe,P=Me,H=Ve,S=be,G=Oe,pt=Ke,bt=ze,N=We,Pt=Ne,xt=Ge,mt=Be,x=qe,q=Fe,St=He,Vt=Xe,zt=je,J=xs("perms"),Kt=Ye;return g(),A("div",ta,[n(zt,{class:"list-card !border-none",shadow:"never"},{default:i(()=>[e("div",ea,[n(P,{modelValue:s(V),"onUpdate:modelValue":t[0]||(t[0]=c=>Rt(V)?V.value=c:null),onTabChange:F,class:"list-tabs"},{default:i(()=>[n(R,{name:"1"},{label:i(()=>[e("span",sa,[n(d,null,{default:i(()=>[n(s(ps))]),_:1}),t[15]||(t[15]=v("待接诊",-1)),s(I)[1]?(g(),D(h,{key:0,value:s(I)[1],class:"tab-badge tab-badge-success"},null,8,["value"])):T("",!0)])]),_:1}),n(R,{name:"all"},{label:i(()=>[e("span",aa,[n(d,null,{default:i(()=>[n(s(ms))]),_:1}),t[16]||(t[16]=v("全部",-1))])]),_:1}),n(R,{name:"4"},{label:i(()=>[e("span",na,[n(d,null,{default:i(()=>[n(s(ue))]),_:1}),t[17]||(t[17]=v("已过号",-1)),s(I)[4]?(g(),D(h,{key:0,value:s(I)[4],class:"tab-badge tab-badge-danger"},null,8,["value"])):T("",!0)])]),_:1}),n(R,{name:"2"},{label:i(()=>[e("span",la,[n(d,null,{default:i(()=>[n(s(ce))]),_:1}),t[18]||(t[18]=v("已取消",-1)),s(I)[2]?(g(),D(h,{key:0,value:s(I)[2],class:"tab-badge tab-badge-info"},null,8,["value"])):T("",!0)])]),_:1}),n(R,{name:"3"},{label:i(()=>[e("span",oa,[n(d,null,{default:i(()=>[n(s(_s))]),_:1}),t[19]||(t[19]=v("已完成",-1)),s(I)[3]?(g(),D(h,{key:0,value:s(I)[3],class:"tab-badge tab-badge-primary"},null,8,["value"])):T("",!0)])]),_:1})]),_:1},8,["modelValue"]),e("div",ia,[n(H,{modelValue:s(p).patient_name,"onUpdate:modelValue":t[1]||(t[1]=c=>s(p).patient_name=c),placeholder:"患者姓名",clearable:"",size:"small",class:"action-input",onKeyup:Qe(et,["enter"])},null,8,["modelValue"]),n(S,{type:"primary",size:"small",onClick:et},{default:i(()=>[...t[20]||(t[20]=[v("查询",-1)])]),_:1}),n(bt,{trigger:"click",onCommand:Bt},{dropdown:i(()=>[n(pt,null,{default:i(()=>[s(L)?(g(),D(G,{key:0,class:"dropdown-item-with-input",onClick:t[4]||(t[4]=Ct(()=>{},["stop"]))},{default:i(()=>[t[22]||(t[22]=e("span",{class:"dropdown-label"},"医生",-1)),n(H,{modelValue:s(p).doctor_name,"onUpdate:modelValue":t[2]||(t[2]=c=>s(p).doctor_name=c),placeholder:"医生",size:"small",class:"dropdown-input",onClick:t[3]||(t[3]=Ct(()=>{},["stop"]))},null,8,["modelValue"])]),_:1})):T("",!0),n(G,{command:"customDate",divided:""},{default:i(()=>[n(d,null,{default:i(()=>[n(s(me))]),_:1}),t[23]||(t[23]=v(" 自定义日期 ",-1))]),_:1}),n(G,{command:"reset"},{default:i(()=>[n(d,null,{default:i(()=>[n(s(fs))]),_:1}),t[24]||(t[24]=v(" 重置 ",-1))]),_:1})]),_:1})]),default:i(()=>[n(S,{size:"small"},{default:i(()=>[t[21]||(t[21]=v("更多",-1)),n(d,{class:"el-icon--right"},{default:i(()=>[n(s(pe))]),_:1})]),_:1})]),_:1})])]),e("div",ra,[e("div",da,[t[29]||(t[29]=e("span",{class:"filter-label"},"日期",-1)),n(Pt,{modelValue:s(p).date_preset,"onUpdate:modelValue":t[5]||(t[5]=c=>s(p).date_preset=c),size:"small",onChange:Ft,class:"filter-radio"},{default:i(()=>[n(N,{value:"today"},{default:i(()=>[...t[25]||(t[25]=[v("当天挂号",-1)])]),_:1}),n(N,{value:"tomorrow"},{default:i(()=>[...t[26]||(t[26]=[v("明天挂号",-1)])]),_:1}),n(N,{value:"day_after"},{default:i(()=>[...t[27]||(t[27]=[v("后天挂号",-1)])]),_:1}),n(N,{value:""},{default:i(()=>[...t[28]||(t[28]=[v("不限",-1)])]),_:1})]),_:1},8,["modelValue"])]),e("div",ua,[t[33]||(t[33]=e("span",{class:"filter-label"},"确认诊单",-1)),n(Pt,{modelValue:s(p).diagnosis_confirmed,"onUpdate:modelValue":t[6]||(t[6]=c=>s(p).diagnosis_confirmed=c),size:"small",onChange:qt,class:"filter-radio"},{default:i(()=>[n(N,{value:""},{default:i(()=>[...t[30]||(t[30]=[v("全部",-1)])]),_:1}),n(N,{value:"1"},{default:i(()=>[...t[31]||(t[31]=[v("已确认",-1)])]),_:1}),n(N,{value:"0"},{default:i(()=>[...t[32]||(t[32]=[v("未确认",-1)])]),_:1})]),_:1},8,["modelValue"])])]),n(mt,{modelValue:s(U),"onUpdate:modelValue":t[10]||(t[10]=c=>Rt(U)?U.value=c:null),title:"自定义日期",width:"400px","append-to-body":"","close-on-click-modal":!0},{footer:i(()=>[n(S,{onClick:t[9]||(t[9]=c=>U.value=!1)},{default:i(()=>[...t[34]||(t[34]=[v("取消",-1)])]),_:1}),n(S,{type:"primary",onClick:Ht},{default:i(()=>[...t[35]||(t[35]=[v("确定",-1)])]),_:1})]),default:i(()=>[n(xt,{startTime:s(p).start_date,"onUpdate:startTime":t[7]||(t[7]=c=>s(p).start_date=c),endTime:s(p).end_date,"onUpdate:endTime":t[8]||(t[8]=c=>s(p).end_date=c)},null,8,["startTime","endTime"])]),_:1},8,["modelValue"]),e("div",ca,[tt((g(),D(St,{data:s(b).lists,size:"default",class:"appointment-table",stripe:"","row-class-name":M},{default:i(()=>[n(x,{label:"ID",prop:"id",width:"72",align:"center"}),n(x,{label:"患者信息","min-width":"140"},{default:i(({row:c})=>[e("div",pa,[e("div",ma,f((c.patient_name||"患").charAt(0)),1),e("div",_a,[e("div",fa,f(c.patient_name),1),e("div",ga,f(c.patient_phone),1),e("div",va,f([c.gender===1?"男":c.gender===0?"女":"",c.age!=null?c.age+"岁":"",c.height!=null?c.height+"cm":"",c.weight!=null?c.weight+"kg":""].filter(Boolean).join(" ")||"-"),1)])])]),_:1}),n(x,{label:"医生",prop:"doctor_name",width:"90","show-overflow-tooltip":""}),n(x,{label:"预约时间","min-width":"120"},{default:i(({row:c})=>[e("div",ya,[e("div",ba,f(c.appointment_date),1),e("div",ha,f(c.appointment_time),1)])]),_:1}),n(x,{label:"预约类型",prop:"appointment_type_desc",width:"100","show-overflow-tooltip":""}),n(x,{label:"确认诊单",width:"90",align:"center"},{default:i(({row:c})=>[c.diagnosis_confirmed?(g(),D(q,{key:0,type:"success",size:"small",effect:"plain"},{default:i(()=>[...t[36]||(t[36]=[v("已确认",-1)])]),_:1})):(g(),D(q,{key:1,type:"warning",size:"small",effect:"plain"},{default:i(()=>[...t[37]||(t[37]=[v("未确认",-1)])]),_:1}))]),_:1}),n(x,{label:"开方",width:"80",align:"center"},{default:i(({row:c})=>[c.has_prescription?(g(),D(q,{key:0,type:"success",size:"small",effect:"plain"},{default:i(()=>[...t[38]||(t[38]=[v("已开方",-1)])]),_:1})):(g(),D(q,{key:1,type:"info",size:"small",effect:"plain"},{default:i(()=>[...t[39]||(t[39]=[v("未开方",-1)])]),_:1}))]),_:1}),n(x,{label:"状态",width:"90",align:"center"},{default:i(({row:c})=>[n(q,{type:c.status===1?"success":c.status===2?"info":c.status===3?"primary":"danger",size:"small",effect:"light",round:""},{default:i(()=>[v(f(c.status_desc),1)]),_:2},1032,["type"])]),_:1}),n(x,{label:"备注",prop:"remark","min-width":"120","show-overflow-tooltip":""}),n(x,{label:"操作",width:"380",fixed:"right",align:"left"},{default:i(({row:c})=>[e("div",Ca,[tt((g(),D(S,{type:"primary",link:"",size:"small",onClick:ot=>ct(c)},{default:i(()=>[...t[40]||(t[40]=[v(" 编辑患者 ",-1)])]),_:1},8,["onClick"])),[[J,["tcm.diagnosis/edit"]]]),tt((g(),D(S,{type:"warning",link:"",size:"small",onClick:ot=>lt(c),class:"action-qrcode"},{default:i(()=>[n(d,null,{default:i(()=>[n(s(gs))]),_:1}),t[41]||(t[41]=v(" 视频二维码 ",-1))]),_:1},8,["onClick"])),[[J,["tcm.diagnosis/videoQr"]]]),tt((g(),D(S,{type:"primary",link:"",size:"small",onClick:ot=>nt(c)},{default:i(()=>[...t[42]||(t[42]=[v(" 聊天 ",-1)])]),_:1},8,["onClick"])),[[J,["doctor.appointment/prescription"]]]),tt((g(),D(S,{type:"success",link:"",size:"small",onClick:ot=>Ut(c)},{default:i(()=>[...t[43]||(t[43]=[v(" 完成 ",-1)])]),_:1},8,["onClick"])),[[J,["doctor.appointment/complete"]]]),tt((g(),D(S,{type:"primary",link:"",size:"small",onClick:ot=>$t(c)},{default:i(()=>[...t[44]||(t[44]=[v(" 开方 ",-1)])]),_:1},8,["onClick"])),[[J,["tcm.diagnosis/kaifang"]]]),n(bt,{trigger:"click",onCommand:ot=>kt(ot,c),placement:"bottom-end"},{dropdown:i(()=>[n(pt,null,{default:i(()=>[tt((g(),D(G,{command:"viewCase"},{default:i(()=>[n(d,null,{default:i(()=>[n(s(Jt))]),_:1}),t[46]||(t[46]=v(" 病历 ",-1))]),_:1})),[[J,["tcm.diagnosis/kaifang"]]]),c.status===1?tt((g(),D(G,{key:0,command:"cancel",divided:""},{default:i(()=>[n(d,null,{default:i(()=>[n(s(ce))]),_:1}),t[47]||(t[47]=e("span",{class:"text-danger"},"取消挂号",-1))]),_:1})),[[J,["doctor.appointment/cancel"]]]):T("",!0)]),_:2},1024)]),default:i(()=>[n(S,{type:"info",link:"",size:"small"},{default:i(()=>[t[45]||(t[45]=v(" 更多 ",-1)),n(d,{class:"el-icon--right"},{default:i(()=>[n(s(pe))]),_:1})]),_:1})]),_:2},1032,["onCommand"])])]),_:1})]),_:1},8,["data"])),[[Kt,s(b).loading]]),e("div",wa,[n(Vt,{modelValue:s(b),"onUpdate:modelValue":t[11]||(t[11]=c=>Rt(b)?b.value=c:null),onChange:s(K)},null,8,["modelValue","onChange"])])])]),_:1}),n(mt,{modelValue:s(j),"onUpdate:modelValue":t[12]||(t[12]=c=>Rt(j)?j.value=c:null),title:"挂号详情",width:"720px",class:"detail-dialog","destroy-on-close":""},{default:i(()=>[s(u)?(g(),A("div",ka,[e("div",Ea,[e("div",Ia,[n(d,null,{default:i(()=>[n(s(me))]),_:1}),t[48]||(t[48]=v(" 预约信息 ",-1))]),e("div",Sa,[e("div",Da,[t[49]||(t[49]=e("span",{class:"detail-label"},"挂号ID",-1)),e("span",Ta,f(s(u).id),1)]),e("div",Ra,[t[50]||(t[50]=e("span",{class:"detail-label"},"状态",-1)),n(q,{type:s(u).status===1?"success":s(u).status===2?"info":s(u).status===3?"primary":"danger",size:"small",effect:"light"},{default:i(()=>[v(f(s(u).status_desc),1)]),_:1},8,["type"])]),e("div",Aa,[t[51]||(t[51]=e("span",{class:"detail-label"},"医生",-1)),e("span",La,f(s(u).doctor_name),1)]),e("div",Ua,[t[52]||(t[52]=e("span",{class:"detail-label"},"预约时间",-1)),e("span",$a,f(s(u).appointment_date)+" "+f(s(u).appointment_time),1)]),e("div",Ma,[t[53]||(t[53]=e("span",{class:"detail-label"},"时段",-1)),e("span",Pa,f(s(u).period==="morning"?"上午":"下午"),1)]),e("div",xa,[t[54]||(t[54]=e("span",{class:"detail-label"},"预约类型",-1)),e("span",Va,f(s(u).appointment_type_desc),1)])])]),e("div",za,[e("div",Ka,[n(d,null,{default:i(()=>[n(s(vs))]),_:1}),t[55]||(t[55]=v(" 患者信息 ",-1))]),e("div",Oa,[e("div",Na,[t[56]||(t[56]=e("span",{class:"detail-label"},"姓名",-1)),e("span",Wa,f(s(u).patient_name||"-"),1)]),e("div",Ba,[t[57]||(t[57]=e("span",{class:"detail-label"},"手机号",-1)),e("span",Ha,f(s(u).phone||s(u).patient_phone||"-"),1)]),e("div",qa,[t[58]||(t[58]=e("span",{class:"detail-label"},"身份证号",-1)),e("span",Fa,f(s(u).id_card||"-"),1)]),e("div",Ya,[t[59]||(t[59]=e("span",{class:"detail-label"},"性别",-1)),e("span",ja,f(s(u).gender===1?"男":s(u).gender===0?"女":"-"),1)]),e("div",Xa,[t[60]||(t[60]=e("span",{class:"detail-label"},"年龄",-1)),e("span",Ga,f(s(u).age!=null?s(u).age+"岁":"-"),1)]),e("div",Ja,[t[61]||(t[61]=e("span",{class:"detail-label"},"诊断日期",-1)),e("span",Qa,f(s(u).diagnosis_date||"-"),1)]),e("div",Za,[t[62]||(t[62]=e("span",{class:"detail-label"},"婚姻状态",-1)),e("span",tn,f(s(u).marital_status===0?"未婚":s(u).marital_status===1?"已婚":s(u).marital_status===2?"离异":"-"),1)]),e("div",en,[t[63]||(t[63]=e("span",{class:"detail-label"},"身高(cm)",-1)),e("span",sn,f(s(u).height??"-"),1)]),e("div",an,[t[64]||(t[64]=e("span",{class:"detail-label"},"体重(kg)",-1)),e("span",nn,f(s(u).weight??"-"),1)]),e("div",ln,[t[65]||(t[65]=e("span",{class:"detail-label"},"地区",-1)),e("span",on,f(s(u).region||"-"),1)]),e("div",rn,[t[66]||(t[66]=e("span",{class:"detail-label"},"收缩压(mmHg)",-1)),e("span",dn,f(s(u).systolic_pressure??"-"),1)]),e("div",un,[t[67]||(t[67]=e("span",{class:"detail-label"},"舒张压(mmHg)",-1)),e("span",cn,f(s(u).diastolic_pressure??"-"),1)]),e("div",pn,[t[68]||(t[68]=e("span",{class:"detail-label"},"空腹血糖(mmol/L)",-1)),e("span",mn,f(s(u).fasting_blood_sugar??"-"),1)]),e("div",_n,[t[69]||(t[69]=e("span",{class:"detail-label"},"诊断类型",-1)),e("span",fn,f(dt(s(At),s(u).diagnosis_type)||"-"),1)]),e("div",gn,[t[70]||(t[70]=e("span",{class:"detail-label"},"证型",-1)),e("span",vn,f(dt(s(Lt),s(u).syndrome_type)||"-"),1)]),e("div",yn,[t[71]||(t[71]=e("span",{class:"detail-label"},"糖尿病期数",-1)),e("span",bn,f(dt(s(ft),s(u).diabetes_type)||"-"),1)])])]),s(u).symptoms||s(u).local_hospital_name||s(u).past_history&&s(u).past_history.length?(g(),A("div",hn,[e("div",Cn,[n(d,null,{default:i(()=>[n(s(Jt))]),_:1}),t[72]||(t[72]=v(" 病史信息 ",-1))]),e("div",wn,[s(u).diabetes_discovery_year!=null?(g(),A("div",kn,[t[73]||(t[73]=e("span",{class:"detail-label"},"发现糖尿病病史",-1)),e("span",En,f(s(u).diabetes_discovery_year)+"年",1)])):T("",!0),s(u).local_hospital_name?(g(),A("div",In,[t[74]||(t[74]=e("span",{class:"detail-label"},"当地就诊医院",-1)),e("span",Sn,f(s(u).local_hospital_name),1)])):T("",!0),s(u).symptoms?(g(),A("div",Dn,[t[75]||(t[75]=e("span",{class:"detail-label"},"症状补充",-1)),e("span",Tn,f(s(u).symptoms),1)])):T("",!0),s(u).past_history&&s(u).past_history.length?(g(),A("div",Rn,[t[76]||(t[76]=e("span",{class:"detail-label"},"既往史",-1)),e("span",An,f(st(s(u).past_history)),1)])):T("",!0)])])):T("",!0),s(u).tongue_coating||s(u).pulse||s(u).treatment_principle||s(u).prescription?(g(),A("div",Ln,[e("div",Un,[n(d,null,{default:i(()=>[n(s(Jt))]),_:1}),t[77]||(t[77]=v(" 诊断信息 ",-1))]),e("div",$n,[s(u).tongue_coating?(g(),A("div",Mn,[t[78]||(t[78]=e("span",{class:"detail-label"},"舌苔",-1)),e("span",Pn,f(s(u).tongue_coating),1)])):T("",!0),s(u).pulse?(g(),A("div",xn,[t[79]||(t[79]=e("span",{class:"detail-label"},"脉象",-1)),e("span",Vn,f(s(u).pulse),1)])):T("",!0),s(u).treatment_principle?(g(),A("div",zn,[t[80]||(t[80]=e("span",{class:"detail-label"},"治则",-1)),e("span",Kn,f(s(u).treatment_principle),1)])):T("",!0),s(u).prescription?(g(),A("div",On,[t[81]||(t[81]=e("span",{class:"detail-label"},"处方",-1)),e("span",Nn,f(s(u).prescription),1)])):T("",!0)])])):T("",!0),e("div",Wn,[t[82]||(t[82]=e("div",{class:"detail-section-title"},"备注",-1)),e("p",Bn,f(s(u).remark||"无"),1)])])):T("",!0)]),_:1},8,["modelValue"]),n(rs,{ref_key:"editRef",ref:gt,onSuccess:s(K)},null,8,["onSuccess"]),n(ds,{ref_key:"prescriptionRef",ref:wt,onSuccess:Z},null,512),n(Zs,{ref_key:"chatDialogRef",ref:ut},null,512),n(mt,{modelValue:s(at),"onUpdate:modelValue":t[14]||(t[14]=c=>Rt(at)?at.value=c:null),title:"小程序二维码",width:"380px","close-on-click-modal":!1,class:"qrcode-dialog"},{footer:i(()=>[n(S,{onClick:t[13]||(t[13]=c=>at.value=!1)},{default:i(()=>[...t[87]||(t[87]=[v("关闭",-1)])]),_:1}),s(vt)?T("",!0):(g(),D(S,{key:0,type:"primary",onClick:Gt},{default:i(()=>[...t[88]||(t[88]=[v(" 重新生成 ",-1)])]),_:1}))]),default:i(()=>{var c;return[e("div",Hn,[s(vt)?(g(),A("div",qn,[n(d,{class:"is-loading",size:48},{default:i(()=>[n(s(ke))]),_:1}),t[83]||(t[83]=e("div",{class:"qrcode-loading-text"},"生成中...",-1))])):s(yt)?(g(),A("div",Fn,[e("div",Yn,[e("img",{src:s(yt),alt:"小程序二维码",class:"qrcode-image"},null,8,jn)]),e("div",Xn,[e("div",Gn,"患者:"+f((c=s(X))==null?void 0:c.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))])])):(g(),A("div",Jn,[n(d,{size:40},{default:i(()=>[n(s(ue))]),_:1}),t[86]||(t[86]=e("div",null,"生成失败,请重试",-1))]))])]}),_:1},8,["modelValue"])])}}}),bo=we(Qn,[["__scopeId","data-v-485af97e"]]);export{bo as default};
|