2 lines
9.2 KiB
JavaScript
2 lines
9.2 KiB
JavaScript
import{E as a,K as H,i as Q,d as $,W as X,J as Y,b as M}from"./element-plus-Bolc0EfP.js";import{a8 as K}from"./@element-plus/icons-vue-B0jSCQ-G.js";import{F as C,u as O,g as k,a as L,l as E,r as Z,y as T}from"./@tencentcloud/call-uikit-vue-DB7vt9Ht.js";import{u as ee,r as te,_ as oe}from"./index-Cdd_xMRl.js";import{f as le,b as ae,n as V,d as ne,ak as m,I as d,a as r,aN as c,J as n,O as f,G as z,H as h,A as se}from"./@vue/runtime-core-C6bnekPw.js";import{Q as w,o as ie}from"./@vue/shared-mAAVTE9n.js";import{y as A,n as y}from"./@vue/reactivity-DiY1c2vO.js";import"./@vue/runtime-dom-DDAG46FW.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-C2A-Pj28.js";import"./@popperjs/core-C5az9QE8.js";import"./dayjs-DG77mNTn.js";import"./@ctrl/tinycolor-BuyEbX8F.js";import"./async-validator-CFA_igpM.js";import"./normalize-wheel-es-BQoi3Ox2.js";import"./@tencentcloud/call-engine-js-BX2W9Lhf.js";import"./@tencentcloud/chat-AC2Y2r2A.js";import"./rtc-detect-Chu-fZvE.js";import"./@tencentcloud/tui-core-8M7p1XHw.js";import"./tim-upload-plugin-HO4N4AW9.js";import"./tim-profanity-filter-plugin-Dn_Cf-mP.js";import"./jspdf-BsthCvR5.js";import"./@babel/runtime-BanGtE2-.js";import"./fflate-_ayOYiT1.js";import"./vue-router-QlpZ4wdW.js";import"./pinia-B8cvXbiZ.js";import"./axios-C80V62Fs.js";import"./@vueuse/core-1S4fJlii.js";import"./@vueuse/shared-Cl3lVqjz.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-CNLwa9wG.js";import"./tslib-BDyQ-Jie.js";import"./zrender-DRNXw7y3.js";import"./highlight.js-Bxt7hFFy.js";import"./@highlightjs/vue-plugin-C4onkBvW.js";const re={class:"patient-test"},ce={key:0,class:"init-section"},ue={key:1,class:"status"},pe={class:"flex items-center"},me={class:"mt-2"},fe={key:0},ve={key:0,class:"call-actions mt-4"},de={key:2,id:"call-container",class:"call-container phone-call-shell"},ge={key:3,class:"waiting-container"},Ie={key:4,class:"phone-call-kit-host phone-call-kit-host--offscreen","aria-hidden":"true"},_e=le({__name:"patient-call",setup(Ce){const B=ee(),S=se(()=>B.userInfo),U=y(!1),g=y(!1),D=y(""),o=y(!1),s=y(!1),p=y(null),v=y(null);let I=null;ae(()=>{G()});function b(t){try{const e=k.getData(L.CALL,E.CALL_STATUS),u=k.getData(L.CALL,E.CALL_ROLE),i=!!k.getData(L.CALL,E.IS_GROUP),_=o.value;if(e==="calling"&&u===Z.CALLEE){o.value=!0,p.value={isGroup:i,from:t},_||(a.info("检测到待接听的来电,请点击接听"),M({title:"来电提醒",message:"有待接听的视频通话",type:"warning",duration:0,position:"top-right"})),s.value=!1;return}if(e==="connected"){o.value=!1,p.value=null,s.value=!0;return}e==="idle"&&(o.value||s.value)&&(o.value=!1,s.value=!1,p.value=null)}catch(e){console.warn("syncIncomingFromTUIStore:",t,e)}}function x(){b("watch")}function P(){I&&(I(),I=null);const t={[E.CALL_STATUS]:x,[E.CALL_ROLE]:x};try{k.watch(L.CALL,t),I=()=>{try{k.unwatch(L.CALL,t)}catch{}}}catch(e){console.warn("TUIStore.watch 失败:",e)}}const R=()=>{v.value&&clearInterval(v.value);let t=0;const e=90;v.value=setInterval(()=>{t+=1,b("poll"),t>=e&&v.value&&(clearInterval(v.value),v.value=null)},500)},F=({oldStatus:t,newStatus:e})=>{console.log("========================================"),console.log("=== 通话状态变化回调触发 ==="),console.log("oldStatus:",t),console.log("newStatus:",e),console.log("STATUS 常量:",T),console.log("========================================"),e===T.BE_INVITED&&(console.log(">>> 收到来电邀请"),o.value=!0,p.value={oldStatus:t,newStatus:e},M({title:"来电提醒",message:"收到视频通话请求",type:"info",duration:0,position:"top-right"}),a.success("收到来电,请点击接听按钮")),(e===T.CALLING_C2C_VIDEO||e===T.CALLING_GROUP_VIDEO)&&(console.log(">>> 通话已接通"),a.success("通话已接通"),o.value=!1,s.value=!0),e===T.IDLE&&(o.value||s.value)&&(console.log(">>> 通话已结束"),o.value=!1,s.value=!1,p.value=null,a.info("通话已结束"))},G=async()=>{try{U.value=!0;const t=S.value.id;if(!t)throw new Error("未获取到当前用户ID,请重新登录");console.log("=== 开始初始化医疗助理端 ==="),console.log("当前用户ID:",t),a.info("正在获取签名...");const e=await te.get({url:"/tcm.diagnosis/getDoctorSignature",params:{patient_id:t}});if(!e)throw new Error("获取签名失败");const{sdkAppId:u,userId:i,userSig:_}=e;if(D.value=i,console.log("医疗助理签名获取成功:",{userId:i,sdkAppId:u,userSigLength:_.length}),console.log("完整签名信息:",e),a.info("正在初始化通话组件..."),console.log("=== 开始调用 TUICallKitServer.init ==="),!C||typeof C.init!="function")throw new Error("TUICallKitServer 未正确加载,请刷新页面重试");try{await C.init({userID:i,userSig:_,SDKAppID:Number(u)})}catch(l){console.warn("TUICallKitServer.init 出现错误,但继续执行:",l)}console.log("=== TUICallKitServer.init 完成 ===");const N={statusChanged:F,onError:l=>{console.error("=== TUICallKit 错误回调 ===",l),a.error(`通话错误: ${(l==null?void 0:l.message)||"未知错误"}`)},onInvited:l=>{console.log("=== 收到邀请回调 (onInvited) ===",l),a.info("收到通话邀请 (onInvited)")},afterCalling:()=>{console.log("=== afterCalling 回调 ===")}};try{C.setCallback(N)}catch(l){console.warn("设置回调时出现错误,但继续执行:",l)}console.log("回调设置完成"),a.info("等待初始化完成..."),await new Promise(l=>setTimeout(l,2e3)),g.value=!0,await V(),await new Promise(l=>setTimeout(l,300)),P(),b("post-init"),R(),a.success("医疗助理端初始化成功,等待来电..."),console.log("=== 医疗助理端初始化完成 ==="),console.log("userId:",i),console.log("等待来电中..."),console.log("请在医生端发起群组通话,目标用户ID应该是:",i)}catch(t){console.error("=== 初始化失败 ===",t),a.error(t.message||"初始化失败")}finally{U.value=!1}};async function j(){var t;await V(),await new Promise(e=>setTimeout(e,400));try{const e=C;if(typeof e.closeMicrophone=="function")return await e.closeMicrophone(),!0;const u=(t=e.getTUICallEngineInstance)==null?void 0:t.call(e);if(u&&typeof u.closeMicrophone=="function")return await u.closeMicrophone(),!0}catch(e){console.warn("接听后关闭麦克风失败(可在通话条手动关麦):",e)}return!1}const J=async()=>{try{console.log("接听来电"),await C.accept(),a.success("已接听通话"),o.value=!1,s.value=!0,await j()&&a.info("已关闭本地麦克风")}catch(t){console.error("接听失败:",t),a.error(t.message||"接听失败")}},W=async()=>{try{console.log("拒绝来电"),await C.reject(),a.info("已拒绝通话"),o.value=!1,p.value=null}catch(t){console.error("拒绝失败:",t),a.error(t.message||"拒绝失败")}},q=()=>{g.value=!1,D.value="",o.value=!1,s.value=!1,p.value=null};return ne(()=>{v.value&&(clearInterval(v.value),v.value=null),I&&(I(),I=null),g.value&&(o.value=!1,s.value=!1,p.value=null)}),(t,e)=>{const u=H,i=Q,_=$,N=X,l=Y;return m(),d("div",re,[r(l,null,{header:c(()=>[...e[0]||(e[0]=[n("div",{class:"card-header"},[n("span",null,"医疗助理端 - 接听来电")],-1)])]),default:c(()=>[g.value?h("",!0):(m(),d("div",ce,[r(u,{type:"info",closable:!1,class:"mb-4"},{default:c(()=>[n("p",null,[e[1]||(e[1]=n("strong",null,"当前登录用户:",-1)),f(" "+w(S.value.nickname||S.value.name||"未知"),1)]),n("p",null,[e[2]||(e[2]=n("strong",null,"用户ID:",-1)),f(" "+w(S.value.id||"未获取"),1)]),e[3]||(e[3]=n("p",null,[n("strong",null,"状态:"),f(" 正在初始化...")],-1))]),_:1}),U.value?h("",!0):(m(),z(i,{key:0,type:"primary",onClick:G,loading:U.value,size:"large"},{default:c(()=>[...e[4]||(e[4]=[f(" 重新初始化 ",-1)])]),_:1},8,["loading"]))])),g.value?(m(),d("div",ue,[r(u,{type:o.value?"warning":"success",closable:!1},{title:c(()=>[n("div",pe,[r(_,{class:ie(["mr-2",{"animate-pulse":o.value}])},{default:c(()=>[r(A(K))]),_:1},8,["class"]),n("span",null,w(o.value?"收到来电!":"医疗助理端已初始化,等待来电..."),1)])]),default:c(()=>[n("div",me,[n("p",null,[e[5]||(e[5]=n("strong",null,"医疗助理ID:",-1)),f(" "+w(D.value),1)]),n("p",null,[e[6]||(e[6]=n("strong",null,"状态:",-1)),f(" "+w(o.value?"来电中":"在线"),1)]),o.value&&p.value?(m(),d("p",fe,[e[7]||(e[7]=n("strong",null,"通话类型:",-1)),f(" "+w(p.value.isGroup?"群组视频通话":"视频通话"),1)])):h("",!0)])]),_:1},8,["type"]),o.value?(m(),d("div",ve,[r(i,{type:"success",size:"large",onClick:J,icon:A(K)},{default:c(()=>[...e[8]||(e[8]=[f(" 接听 ",-1)])]),_:1},8,["icon"]),r(i,{type:"danger",size:"large",onClick:W},{default:c(()=>[...e[9]||(e[9]=[f(" 拒绝 ",-1)])]),_:1})])):(m(),z(i,{key:1,type:"danger",onClick:q,class:"mt-4"},{default:c(()=>[...e[10]||(e[10]=[f(" 重置 ",-1)])]),_:1}))])):h("",!0),o.value||s.value?(m(),d("div",de,[r(A(O),{class:"TUICallKit-mobile"})])):g.value?(m(),d("div",ge,[r(N,{description:"等待来电中..."},{image:c(()=>[r(_,{size:80,color:"#909399"},{default:c(()=>[r(A(K))]),_:1})]),_:1})])):h("",!0),g.value&&!o.value&&!s.value?(m(),d("div",Ie,[r(A(O),{class:"TUICallKit-mobile"})])):h("",!0)]),_:1})])}}}),ut=oe(_e,[["__scopeId","data-v-56c22385"]]);export{ut as default};
|