import{ak as e,U as a,l as t,az as s,aZ as l,a2 as o,o as r,e as n,w as u,W as i,a_ as c,j as v,f as d,g as m,q as _,v as p,F as f,i as y,O as g,aN as h,r as b,b as k,z as w,k as I,Q as S,t as j}from"./index-d0750414.js";import{_ as z}from"./u-icon.a5146a33.js";import{_ as W}from"./u-navbar.d391c4c1.js";import{_ as x}from"./u-action-sheet.60fb1133.js";import{_ as C}from"./u-avatar.f288e617.js";import{_ as D}from"./u-input.bca78444.js";import{_ as N}from"./u-button.2adf8624.js";import{_ as q}from"./_plugin-vue_export-helper.1b428a4d.js";import"./u-popup.508f1b55.js";import"./emitter.1571a5d9.js";const O=q({__name:"index",setup(q){const O=i(),T=a(),$=t([]),V=t(""),J=t(0),M=t(null),U=t(""),Z=t(0),A=t(0),E=t(!1),F=t(!1),H=t(0),P=t(null),Q=t({avatar:"/static/default-avatar.png",nickname:"用户"}),R=t({avatar:T.userInfo.avatar,nickname:T.userInfo.nickname}),B=t("在线聊天"),G=t(!1),K=t([{name:"查看用户信息"},{name:"清除聊天记录"},{name:"投诉用户"}]),L=e=>{if(!e)return"";const a=new Date(e);return`${a.getHours()}:${a.getMinutes().toString().padStart(2,"0")}`},X=async()=>{if(U.value){E.value=!0;try{const t=await(a={conversation_id:U.value,page:1,page_size:99999},e.get({url:"/chat/history",data:a}));$.value=t.list.filter(e=>null!=e),oe()}catch(t){console.error("加载聊天历史失败",t)}finally{E.value=!1}var a}},Y=async()=>{if(!V.value.trim()||!U.value)return;const e=V.value.trim();try{ue(e);const a={id:Date.now(),conversation_id:U.value,sender_id:T.userInfo.id,sender_type:1,receiver_id:Z.value,receiver_type:2,content:e,message_type:1,read_status:0,create_time:(new Date).toISOString(),order_id:A.value,user:{avatar:T.userInfo.avatar},isTemp:!0};$.value.push(a),V.value="",oe()}catch(a){console.error("发送消息失败",a),l({title:"发送消息失败",icon:"error"})}},ee=async()=>{var a;if(U.value)try{await(a={conversation_id:U.value,user_id:T.userInfo.id},e.post({url:"/chat/markAsRead",data:a})),J.value=0}catch(t){console.error("标记已读失败",t)}},ae=async()=>{try{const a=await e.get({url:"/chat/unreadCount"});J.value=a.count}catch(a){console.error("获取未读消息失败",a)}},te=async()=>{try{const t=await(a={conversation_id:U.value},e.get({url:"/chat/lastMessage",data:a}));M.value=t.data}catch(t){console.error("获取最后一条消息失败",t)}var a},se=async()=>{try{const t=await(a=Z.value,e.get({url:"/user/info",data:{id:a}}));200===t.code&&(Q.value=t.data,B.value=Q.value.nickname)}catch(t){console.error("获取用户信息失败",t)}var a},le=async()=>{try{const a=await(a=>e.get({url:"/chat/info",data:{id:a}}))(Z.value);200===a.code&&(R.value=a.data)}catch(a){console.error("获取技师信息失败",a)}},oe=()=>{c(()=>{H.value=H.value+1,setTimeout(()=>{H.value=999999},100)})},re=()=>{const e=T.token;T.userInfo.id;P.value=new WebSocket(`ws://laowoanmo.heibaokeji.com:9501?token=${e}&type=1`),P.value.onopen=()=>{console.log("WebSocket连接成功")},P.value.onmessage=e=>{const a=JSON.parse(e.data);"new"===a.action&&ne(a.data)},P.value.onerror=e=>{console.error("WebSocket错误",e)},P.value.onclose=()=>{console.log("WebSocket连接关闭"),setTimeout(re,3e3)}},ne=e=>{if(e.conversation_id===U.value){if(1===e.sender_type){const a=$.value.findIndex(a=>a.isTemp&&a.content===e.content);-1!==a?$.value.splice(a,1,e):$.value.push(e)}else 2===e.sender_type&&$.value.push(e);oe()}},ue=e=>{if(!P.value||P.value.readyState!==WebSocket.OPEN)return;const a={action:"send",conversation_id:U.value,sender_id:T.userInfo.id,sender_type:1,receiver_id:Z.value,receiver_type:2,content:e,order_id:A.value};P.value.send(JSON.stringify(a))},ie=e=>{switch(G.value=!1,e.name){case"查看用户信息":g({url:`/pages/user/detail?id=${Z.value}`});break;case"清除聊天记录":h({title:"提示",content:"确定要清除聊天记录吗?",success:e=>{e.confirm&&($.value=[])}});break;case"投诉用户":g({url:"/pages/complaint/create?target_id="+Z.value})}},ce=async()=>{F.value=!0;try{const t=await(a={tech_id:Z.value},e.get({url:"/chat/conversation_id",data:{user_id:a.user_id,tech_id:a.tech_id}}));U.value=t.conversation_id,console.log("获取会话ID成功:",U.value)}catch(t){console.error("获取会话ID失败",t),l({title:"获取会话失败",icon:"error"})}finally{F.value=!1}var a};return s(async()=>{if(Z.value=parseInt(O.query.tech_id),A.value=parseInt(O.query.order_id||0),isNaN(Z.value))return console.error("无效的技师ID:",O.query.tech_id),void l({title:"参数错误",icon:"error"});await ce(),U.value&&(await se(),await le(),await X(),await ae(),await te(),await ee(),re())}),o(()=>{P.value&&(P.value.close(),P.value=null)}),(e,a)=>{const t=b(k("u-icon"),z),s=b(k("u-navbar"),W),l=b(k("u-action-sheet"),x),o=w("u-loading-icon"),i=I,c=v,g=b(k("u-avatar"),C),h=S,q=b(k("u-input"),D),O=b(k("u-button"),N);return r(),n(c,{class:"chat-container"},{default:u(()=>[d(s,{title:B.value,"is-back":!0,"border-bottom":!1,"title-color":"#000","back-icon-color":"#000"},{right:u(()=>[d(t,{name:"more-dot-fill",size:"22",color:"#000",onClick:a[0]||(a[0]=e=>G.value=!0)})]),_:1},8,["title"]),d(l,{show:G.value,actions:K.value,onClose:a[1]||(a[1]=e=>G.value=!1),onSelect:ie},null,8,["show","actions"]),F.value?(r(),n(c,{key:0,class:"loading-conversation"},{default:u(()=>[d(o),d(i,{class:"ml-2"},{default:u(()=>[m("加载会话中...")]),_:1})]),_:1})):(r(),n(h,{key:1,"scroll-y":"true",class:"chat-messages","scroll-top":H.value,onScrolltolower:X},{default:u(()=>[(r(!0),_(f,null,p($.value,(e,a)=>(r(),n(c,{key:a,class:"message-item"},{default:u(()=>[2===e.sender_type?(r(),n(c,{key:0,class:"message-other"},{default:u(()=>[d(g,{src:Q.value.avatar,size:"40"},null,8,["src"]),d(c,{class:"message-content"},{default:u(()=>[d(c,{class:"message-bubble"},{default:u(()=>[m(j(e.content),1)]),_:2},1024),d(c,{class:"message-time"},{default:u(()=>[m(j(L(e.create_time)),1)]),_:2},1024)]),_:2},1024)]),_:2},1024)):(r(),n(c,{key:1,class:"message-me"},{default:u(()=>[d(c,{class:"message-content"},{default:u(()=>[d(c,{class:"message-bubble"},{default:u(()=>[m(j(e.content),1)]),_:2},1024),d(c,{class:"message-time"},{default:u(()=>[m(j(L(e.create_time)),1)]),_:2},1024)]),_:2},1024),d(g,{src:R.value.avatar,size:"40"},null,8,["src"])]),_:2},1024))]),_:2},1024))),128)),E.value?(r(),n(c,{key:0,class:"loading-more"},{default:u(()=>[d(o),d(i,{class:"ml-2"},{default:u(()=>[m("加载中...")]),_:1})]),_:1})):y("",!0)]),_:1},8,["scroll-top"])),d(c,{class:"input-area"},{default:u(()=>[d(q,{modelValue:V.value,"onUpdate:modelValue":a[2]||(a[2]=e=>V.value=e),placeholder:"输入消息...",border:"none",class:"input-box",disabled:!U.value||F.value,onConfirm:Y},null,8,["modelValue","disabled"]),d(O,{type:"primary",size:"mini",disabled:!V.value.trim()||!U.value||F.value,onClick:Y},{default:u(()=>[m(" 发送 ")]),_:1},8,["disabled"])]),_:1})]),_:1})}}},[["__scopeId","data-v-35f78875"]]);export{O as default};