import{K as S,i as V,d as O,L as R,U,v as W,a0 as A,T as G}from"./element-plus-CFxTwCZ2.js";import{d as M}from"./dayjs-DG77mNTn.js";import{U as K}from"./@element-plus/icons-vue-cboVPb4D.js";import{C as Q}from"./tcm-CEDF0dA_.js";import{f as q,w as X,ak as a,I as o,a as y,aN as p,J as r,O as d,aP as Z,F as N,ap as B,G as h,H as Y}from"./@vue/runtime-core-C0pg79pw.js";import{y as w,o as v}from"./@vue/reactivity-BIbyPIZJ.js";import{o as tt,Q as l}from"./@vue/shared-mAAVTE9n.js";import{d as et}from"./index-DqzX0p3J.js";import"./@vue/runtime-dom-iFk_KP8y.js";import"./lodash-D3kF6u-c.js";import"./lodash-es-BADexyn7.js";import"./@popperjs/core-C5az9QE8.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";const st={class:"im-chat-record-panel"},it={class:"toolbar mb-3"},nt={class:"chat-wrap"},at={key:0,class:"chat-list"},ot={class:"meta"},rt={class:"name"},lt={class:"time"},mt={class:"bubble"},ct={key:0,class:"friendly-text"},ut={class:"friendly-main"},pt={key:0,class:"friendly-sub"},dt={key:1,class:"text-content"},_t={key:2,class:"text-content"},ft={key:3,class:"muted"},gt=q({__name:"ImChatRecordPanel",props:{diagnosisId:{}},setup(L,{expose:H}){const b=L,c=v(!1),_=v([]),T=v(""),I=v("");function j(t){if(t==null||!t)return"—";const s=t>1e12?Math.floor(t/1e3):t;return M.unix(s).format("YYYY-MM-DD HH:mm:ss")}function k(t){if(t==null||t==="")return;const s=typeof t=="string"&&/^\d+$/.test(t.trim())?parseInt(t.trim(),10):Number(t);if(!(!Number.isFinite(s)||s<=0))return s>1e12?M(s).format("YYYY-MM-DD HH:mm:ss"):M.unix(s).format("YYYY-MM-DD HH:mm:ss")}function z(t){const s=t.trim();if(!s.startsWith("{"))return null;let e;try{e=JSON.parse(s)}catch{return null}if(!("businessID"in e)&&!("cmd"in e))return null;if(e.businessID==="doctor_entered_consult_room")return{main:"医生已进入诊室",sub:k(e.time),tag:"诊室"};if(e.businessID==="patient_opened_chat"){const n=[];e.patientName&&n.push(`患者:${e.patientName}`),e.patientId!=null&&e.patientId!==""&&n.push(`患者 ID:${e.patientId}`),e.doctorId!=null&&e.doctorId!==""&&n.push(`关联医生:${e.doctorId}`);const u=k(e.time);return u&&n.push(u),{main:"患者进入聊天",sub:n.length?n.join(" · "):void 0,tag:"诊室"}}if(e.businessID==="user_typing_status")return{main:"对方正在输入…",tag:"状态"};if(e.businessID==="consultation_complete")return{main:"问诊已完成",sub:k(e.time),tag:"诊室"};if(e.businessID===1||e.businessID==="1"){let n=e.data;if(typeof n=="string")try{n=JSON.parse(n)}catch{return{main:"通话信令",sub:"内层数据解析失败",tag:"通话"}}return n&&typeof n=="object"?$(n):null}return e.businessID==="rtc_call"||e.cmd?$(e):null}function $(t){const s=t.call_type,e=s===2?"视频通话":s===1?"语音通话":"通话",n=String(t.cmd||""),f={hangup:"已结束",invite:"发起通话",linebusy:"对方忙线",cancel:"已取消",reject:"已拒绝",accept:"已接听",timeout:"无人接听"}[n]||(n?`状态:${n}`:""),x=f?`${e} · ${f}`:e,m=[];return t.inviter&&m.push(`发起方 ${t.inviter}`),t.invitee&&m.push(`对方 ${t.invitee}`),t.groupID&&m.push(`群组 ${t.groupID}`),{main:x,sub:m.length?m.join(","):void 0,tag:"通话"}}function C(t){const s=(t.text||"").trim();if(!s)return null;const e=s.startsWith("{")&&(/\bbusinessID\b/.test(s)||/\bcmd\b/.test(s));return t.msg_type==="custom"||e?z(s):null}function E(t){const s=C(t);return s!=null&&s.tag?s.tag:{text:"",image:"图片",file:"文件",sound:"语音",video:"视频",location:"位置",custom:"自定义",face:"表情",other:""}[t.msg_type]||(t.msg_type!=="other"?t.msg_type:"")}function F(t){return t.is_from_doctor?t.from_staff_name?`医生(${t.from_staff_name})`:"医生/员工":I.value?`患者(${I.value})`:"患者"}async function D(){if(b.diagnosisId){c.value=!0;try{const t=await Q({diagnosis_id:b.diagnosisId});_.value=(t==null?void 0:t.lists)||[],T.value=(t==null?void 0:t.patient_im_id)||"",I.value=(t==null?void 0:t.patient_name)||""}catch(t){console.error(t),_.value=[]}finally{c.value=!1}}}return X(()=>b.diagnosisId,()=>{D()},{immediate:!0}),H({refresh:D}),(t,s)=>{const e=S,n=O,u=V,f=U,x=W,m=A,J=G,P=R;return a(),o("div",st,[y(e,{type:"info","show-icon":"",closable:!1,class:"mb-4",title:"说明"},{default:p(()=>[...s[0]||(s[0]=[r("p",{class:"panel-tip"},[d(" 展示腾讯云 IM 单聊记录:已合并患者 与 "),r("strong",null,"所有医生 / 医助账号"),d("分别产生的会话,按时间排序。 数据来自 IM 漫游;若未开通漫游或某账号与该患者无会话,对应侧无消息。 ")],-1)])]),_:1}),r("div",it,[y(u,{type:"primary",link:"",loading:c.value,onClick:D},{default:p(()=>[y(n,{class:"mr-1"},{default:p(()=>[y(w(K))]),_:1}),s[1]||(s[1]=d(" 刷新 ",-1))]),_:1},8,["loading"])]),Z((a(),o("div",nt,[!c.value&&_.value.length?(a(),o("div",at,[(a(!0),o(N,null,B(_.value,i=>(a(),o("div",{key:i.msg_id,class:tt(["chat-row",i.is_from_doctor?"from-doctor":"from-patient"])},[r("div",ot,[r("span",rt,l(F(i)),1),r("span",lt,l(j(i.time)),1),E(i)?(a(),h(f,{key:0,size:"small",type:"info",class:"ml-2"},{default:p(()=>[d(l(E(i)),1)]),_:2},1024)):Y("",!0)]),r("div",mt,[i.msg_type==="image"&&i.image_url?(a(),h(x,{key:0,src:i.image_url,"preview-src-list":[i.image_url],fit:"contain",class:"chat-img"},null,8,["src","preview-src-list"])):(i.msg_type==="file"||i.msg_type==="sound"||i.msg_type==="video")&&i.file_url?(a(),h(m,{key:1,href:i.file_url,target:"_blank",type:"primary"},{default:p(()=>[d(l(i.file_name||"打开文件"),1)]),_:2},1032,["href"])):(a(!0),o(N,{key:2},B([C(i)],g=>(a(),o(N,{key:i.msg_id+"-body"},[g?(a(),o("div",ct,[r("div",ut,l(g.main),1),g.sub?(a(),o("div",pt,l(g.sub),1)):Y("",!0)])):i.msg_type==="text"&&i.text?(a(),o("div",dt,l(i.text),1)):i.text?(a(),o("div",_t,l(i.text),1)):(a(),o("span",ft,"(无法展示该消息类型)"))],64))),128))])],2))),128))])):c.value?Y("",!0):(a(),h(J,{key:1,description:"暂无 IM 聊天记录"}))])),[[P,c.value]])])}}}),ee=et(gt,[["__scopeId","data-v-faf4cfac"]]);export{ee as default};