PageSourceSearch

https://www.ego886.com/js/ChatRoom-hMMgbXE-.js

js ego886.com collected 2026-10-07 21:56:17 UTC 25,957 bytes, 2 lines download raw bytes

1var et=Object.defineProperty,tt=Object.defineProperties;var st=Object.getOwnPropertyDescriptors;var Se=Object.getOwnPropertySymbols;var at=Object.prototype.hasOwnProperty,nt=Object.prototype.propertyIsEnumerable;var Te=(_,k,x)=>k in _?et(_,k,{enumerable:!0,configurable:!0,writable:!0,value:x}):_[k]=x,J=(_,k)=>{for(var x in k||(k={}))at.call(k,x)&&Te(_,x,k[x]);if(Se)for(var x of Se(k))nt.call(k,x)&&Te(_,x,k[x]);return _},X=(_,k)=>tt(_,st(k));var I=(_,k,x)=>new Promise((A,ee)=>{var S=j=>{try{R(x.next(j))}catch(D){ee(D)}},le=j=>{try{R(x.throw(j))}catch(D){ee(D)}},R=j=>j.done?A(j.value):Promise.resolve(j.value).then(S,le);R((x=x.apply(_,k)).next())});import{r as v,c as ge,m as rt,p as lt,q as ot,e as d,j as s,f as M,u as K,k as O,t as b,y as Ne,z as Oe,D as Y,F as Z,E as re,O as it,A as Ae,B as fe,n as z,l as dt,g as c}from"./vue-vendor-BqEqlBN8.js";import{_ as ct,u as ut,a as mt,P as f,l as vt}from"./index-zKxGK1P5.js";import{c as E}from"./chatService-BdMjgNH-.js";import{u as pt}from"./imageUploadService-DQy10MQx.js";import{g as gt}from"./orderService-CQ5c6xZB.js";import{u as ft}from"./useMobileDetect-DY6eHhra.js";import{s as De,b as yt}from"./alertConfig-D3aG3kyc.js";import"./vendor-CgfLlPlq.js";import"./parse-hlf3C9cV.js";import"./query-mEIUYlNa.js";import"./cloudinary-B73r6PJ4.js";import"./ui-CkOmIgyG.js";const bt={class:"chat-room d-flex h-100"},xt={class:"sidebar-header d-flex justify-content-between align-items-center px-3 py-2 border-bottom"},ht={class:"d-flex align-items-center"},wt={key:0,class:"badge bg-danger rounded-pill ms-2 unread-total"},_t={class:"sidebar-search-area p-2 border-bottom"},kt={class:"input-group input-group-sm custom-search-group"},It={key:0,class:"text-center py-4"},Mt={key:1,class:"chat-list flex-grow-1 overflow-auto"},Ct=["onClick"],jt={class:"chat-avatar me-3 position-relative"},Ut=["src","onError"],St={key:1,class:"avatar-circle d-flex align-items-center justify-content-center",style:{backgroundColor:"#e0e0e0",color:"#666"}},Tt={key:2,class:"badge-dot"},Nt={class:"chat-info flex-grow-1 min-w-0"},Ot={class:"d-flex justify-content-between align-items-baseline mb-1"},At={class:"chat-name text-truncate"},Dt={class:"chat-time text-muted"},Lt={class:"d-flex justify-content-between"},Pt={class:"chat-preview text-truncate text-secondary"},$t={key:0,class:"badge bg-danger rounded-pill unread-badge"},Rt={key:0,class:"text-center text-muted py-4 small"},qt={key:0,class:"chat-header border-bottom px-3 py-2 d-flex align-items-center justify-content-between bg-white"},Kt={class:"d-flex align-items-center"},zt={class:"d-flex align-items-center"},Et={class:"mb-0 fw-bold fs-6"},Bt={class:"header-controls"},Wt={class:"chat-content flex-grow-1 d-flex flex-column position-relative bg-light"},Qt={key:0,class:"no-chat-selected d-flex align-items-center justify-content-center h-100"},Ft={key:0,class:"text-center py-4"},Vt={class:"text-muted"},Gt={key:0,class:"message-text"},Ht=["onClick"],Jt=["src"],Xt={key:2,class:"sticker-content"},Yt=["src"],Zt=["onClick"],es={class:"order-card-body"},ts={class:"order-product-info"},ss=["src"],as={class:"order-product-detail"},ns={class:"order-product-name"},rs={class:"order-id"},ls={class:"order-meta"},os={class:"order-status"},is={class:"order-total"},ds={class:"price"},cs={class:"message-meta text-end mt-1"},us={class:"message-time text-muted",style:{"font-size":"10px"}},ms={class:"chat-input-area bg-white"},vs={class:"chat-toolbar px-3 py-2 d-flex gap-3"},ps={key:0,class:"sticker-picker"},gs={class:"sticker-picker-header d-flex justify-content-between align-items-center px-3 py-2 border-bottom"},fs={class:"sticker-grid p-2"},ys=["onClick","title"],bs={class:"emoji"},xs={key:1,class:"order-picker"},hs={class:"order-picker-header d-flex justify-content-between align-items-center px-3 py-2 border-bottom"},ws={class:"order-list p-2"},_s={key:0,class:"text-center py-3"},ks={key:1,class:"text-center text-muted py-3"},Is=["onClick"],Ms={class:"order-item-img me-2"},Cs=["src"],js={class:"order-item-info flex-grow-1"},Us={class:"order-item-name text-truncate"},Ss={class:"order-item-id text-truncate small text-muted"},Ts={class:"order-item-status small"},Ns={class:"text-primary"},Os={class:"text-danger fw-bold"},As={key:2,class:"pending-image-preview px-3 py-2"},Ds={class:"pending-image-wrapper"},Ls=["src"],Ps={key:0,class:"uploading-overlay"},$s={class:"input-wrapper position-relative p-2"},Rs=["placeholder","onKeydown","disabled"],qs={class:"d-flex justify-content-end px-2 pb-1"},Ks=["disabled"],zs={class:"image-preview-content"},Es=["src"],Bs=1e3,Ws={__name:"ChatRoom",props:{isFullscreen:{type:Boolean,default:!1},initialSellerId:{type:String,default:""},initialSellerName:{type:String,default:""}},emits:["close"],setup(_,{emit:k}){const x=dt(),A=_,ee=k,{isMobile:S}=ft(),{setTimeout:le,setInterval:R,clearInterval:j}=ut();mt();const D=v(!0),oe=v(!1),L=v(!1),B=v(""),te=v("all"),N=v(""),p=v(null),T=v([]),m=v([]),se=v(""),U=v(null),W=v(null),ye=()=>{S.value&&(p.value=null)},q=v(!1),P=v(!1),ie=v(!1),ae=v([]),Q=v(null),ne=v(null),C=v(null),de=v(!1),be=v(0),Le=v([{id:1,name:"開心",emoji:"😄"},{id:2,name:"哭哭",emoji:"😭"},{id:3,name:"生氣",emoji:"😡"},{id:4,name:"愛心",emoji:"😍"},{id:5,name:"讚",emoji:"👍"},{id:6,name:"謝謝",emoji:"🙏"},{id:7,name:"OK",emoji:"👌"},{id:8,name:"加油",emoji:"💪"},{id:9,name:"抱抱",emoji:"🤗"},{id:10,name:"思考",emoji:"🤔"},{id:11,name:"無奈",emoji:"😒"},{id:12,name:"驚訝",emoji:"😮"},{id:13,name:"吃驚",emoji:"😱"},{id:14,name:"偷笑",emoji:"😏"},{id:15,name:"吃嗝",emoji:"🤤"},{id:16,name:"睡覺",emoji:"😴"},{id:17,name:"摆手",emoji:"👋"},{id:18,name:"愛心眼",emoji:"❤️"},{id:19,name:"火",emoji:"🔥"},{id:20,name:"歡呼",emoji:"🎉"},{id:21,name:"陕眼",emoji:"😉"},{id:22,name:"吃驚",emoji:"😳"},{id:23,name:"吃瓜",emoji:"🍉"},{id:24,name:"笑哭",emoji:"😂"}]),xe=ge(()=>{let a=T.value;if(te.value==="unread"&&(a=a.filter(e=>e.unread>0)),B.value.trim()){const e=B.value.toLowerCase();a=a.filter(t=>t.name.toLowerCase().includes(e)||t.lastMessage&&t.lastMessage.toLowerCase().includes(e))}return a.sort((e,t)=>
1{const n=e.lastMessageAt?new Date(e.lastMessageAt):new Date(0);return(t.lastMessageAt?new Date(t.lastMessageAt):new Date(0))-n})}),he=ge(()=>{const a=N.value.trim().length>0,e=C.value!==null;return(a||e)&&p.value&&!L.value}),ce=ge(()=>T.value.reduce((a,e)=>a+(e.unread||0),0)),we=a=>{const e=a.get("sellerStoreName")||a.get("storeName"),t=a.get("sellerName")||"";return(e||t||"").trim()||"賣家"},Pe=(a,e)=>{a.target.style.display="none",e.avatar=null},$e=a=>{if(!a)return"";const e=new Date(a),n=Math.floor((new Date-e)/(1e3*60*60*24));return n===0?e.toLocaleTimeString("zh-TW",{hour:"2-digit",minute:"2-digit",hour12:!1}):n===1?"昨天":n<7?`週${["日","一","二","三","四","五","六"][e.getDay()]}`:e.toLocaleDateString("zh-TW",{month:"2-digit",day:"2-digit"})},Re=a=>a?new Date(a).toLocaleTimeString("zh-TW",{hour:"2-digit",minute:"2-digit",hour12:!1}):"",ue=(...e)=>I(null,[...e],function*({showLoading:a=!0}={}){try{a&&(D.value=!0);const t=f.User.current();if(!t){vt.log("ChatRoom","未登入,無法載入聊天記錄");return}try{const i=f.Object.extend("tk_MemberData"),g=new f.Query(i),h=f.User.createWithoutData(t.id);g.equalTo("user",h);const y=yield g.first();y?se.value=y.get("displayName")||y.get("nickname")||"我":se.value=t.get("displayName")||t.get("nickname")||"我"}catch(i){se.value="我"}const n=f.Object.extend("tk_ChatConversation"),o=new f.Query(n);o.equalTo("buyerId",t.id),o.descending("lastMessageAt"),o.include("seller");const r=yield o.find(),l=[...new Set(r.map(i=>i.get("sellerId")).filter(Boolean))],u=new Map;if(l.length>0)try{const i=f.Object.extend("tk_MemberData"),g=new f.Query(i),h=l.map(w=>f.User.createWithoutData(w));g.containedIn("user",h),(yield g.find()).forEach(w=>{const Ue=w.get("user");Ue&&u.set(Ue.id,w)})}catch(i){}T.value=r.map(i=>{const g=i.get("sellerId");let h=we(i),y=null;if(g){const w=u.get(g);w&&(h==="賣家"&&(h=w.get("sellerStoreName")||w.get("storeName")||w.get("displayName")||w.get("nickname")||"賣家"),y=w.get("storeImage")||w.get("avatarUrl")||w.get("avatar")||null)}return y||(y=i.get("sellerAvatar")||null),{id:i.id,objectId:i.id,sellerId:g,name:h,avatar:y,lastMessage:i.get("lastMessage")||"",lastMessageAt:i.get("lastMessageAt"),unread:i.get("buyerUnreadCount")||0,online:!1}}),qe()}catch(t){}finally{a&&(D.value=!1)}});let F=null;const qe=()=>I(null,null,function*(){if(F===!1){_e();return}try{const a=f.User.current();if(!a)return;const e=f.Object.extend("tk_ChatConversation"),t=new f.Query(e);t.equalTo("buyerId",a.id),W.value=yield t.subscribe(),F=!0,W.value.on("update",n=>{const o=T.value.findIndex(r=>
1r.id===n.id);o!==-1&&(T.value[o]=X(J({},T.value[o]),{lastMessage:n.get("lastMessage")||"",lastMessageAt:n.get("lastMessageAt"),unread:n.get("buyerUnreadCount")||0}))}),W.value.on("create",n=>{T.value.unshift({id:n.id,objectId:n.id,sellerId:n.get("sellerId"),name:we(n),avatar:n.get("sellerAvatar")||null,lastMessage:n.get("lastMessage")||"",lastMessageAt:n.get("lastMessageAt"),unread:n.get("buyerUnreadCount")||0,online:!1})})}catch(a){F=!1,_e()}});let V=null;const _e=()=>{V||(V=R(()=>{ue({showLoading:!1})},3e4))},Ke=()=>{V&&(j(V),V=null)},me=a=>I(null,null,function*(){if(!(p.value&&p.value.id===a.id)){if(U.value){try{U.value.unsubscribe()}catch(e){}U.value=null}if(ve(),m.value=[],p.value=a,a.unread>0){a.unread=0;try{yield E.markAsRead(a.id)}catch(e){}}yield ze(a.id),Ee(a.id),z(()=>{$(),pe.value&&pe.value.focus()})}}),ze=a=>I(null,null,function*(){try{oe.value=!0;const e=f.Object.extend("tk_ChatMessage"),t=new f.Query(e);t.equalTo("conversationId",a),t.ascending("createdAt"),t.limit(100);const n=yield t.find(),o=f.User.current();m.value=n.map(r=>{const l=r.get("type")||"text",u=r.get("metadata")||{},i=r.get("content")||r.get("text")||"";return{id:r.id,text:i,type:l,createdAt:r.get("createdAt"),isOwn:r.get("senderId")===(o==null?void 0:o.id),read:r.get("read")||!1,imageUrl:l==="image"?u.imageUrl||u.url||i:null,stickerUrl:l==="sticker"?u.stickerUrl:null,orderId:l==="order"?u.orderId:null,orderStatus:l==="order"?u.orderStatus:null,orderStatusKey:l==="order"?u.orderStatusKey:null,orderTotal:l==="order"?u.orderTotal:null,productImage:l==="order"?u.productImage:null,productName:l==="order"?u.productName:null}})}catch(e){}finally{oe.value=!1}}),Ee=a=>I(null,null,function*(){if(U.value)try{U.value.unsubscribe()}catch(e){}if(ve(),F===!1){ke(a);return}try{const e=f.Object.extend("tk_ChatMessage"),t=new f.Query(e);t.equalTo("conversationId",a),U.value=yield t.subscribe(),U.value.on("create",n=>{const o=f.User.current(),r=n.get("type")||"text",l=n.get("metadata")||{},u=n.get("content")||n.get("text")||"",i={id:n.id,text:u,type:r,createdAt:n.get("createdAt"),isOwn:n.get("senderId")===(o==null?void 0:o.id),read:n.get("read")||!1,imageUrl:r==="image"?l.imageUrl||l.url||u:null,stickerUrl:r==="sticker"?l.stickerUrl:null,orderId:r==="order"?l.orderId:null,orderStatus:r==="order"?l.orderStatus:null,orderStatusKey:r==="order"?l.orderStatusKey:null,orderTotal:r==="order"?l.orderTotal:null,productImage:r==="order"?l.productImage:null,productName:r==="order"?l.productName:null};if(m.value.findIndex(h=>h.id===i.id)===-1){if(i.isOwn){const h=m.value.findIndex(y=>y.id.startsWith("temp_")&&y.type===i.type&&y.sending===!0);if(h!==-1){m.value[h]=i;return}}m.value.push(i),z(()=>$()),!i.isOwn&&p.value&&E.markAsRead(p.value.id).catch(console.error)}}),U.value.on("update",n=>{const o=m.value.findIndex(r=>
1r.id===n.id);o!==-1&&(m.value[o].read=n.get("read")||!1)})}catch(e){F=!1,ke(a)}});let G=null,H=null;const ke=a=>{G||(H=new Date,G=R(()=>I(null,null,function*(){try{const e=f.Object.extend("tk_ChatMessage"),t=new f.Query(e);t.equalTo("conversationId",a),H&&t.greaterThan("createdAt",H),t.ascending("createdAt");const n=yield t.find(),o=f.User.current();n.length>0&&(H=n[n.length-1].get("createdAt"),n.forEach(r=>{const l=r.get("type")||"text",u=r.get("metadata")||{},i=r.get("content")||r.get("text")||"",g={id:r.id,text:i,type:l,createdAt:r.get("createdAt"),isOwn:r.get("senderId")===(o==null?void 0:o.id),read:r.get("read")||!1,imageUrl:l==="image"?u.imageUrl||u.url||i:null,stickerUrl:l==="sticker"?u.stickerUrl:null,orderId:l==="order"?u.orderId:null,orderStatus:l==="order"?u.orderStatus:null,orderStatusKey:l==="order"?u.orderStatusKey:null,orderTotal:l==="order"?u.orderTotal:null,productImage:l==="order"?u.productImage:null,productName:l==="order"?u.productName:null};if(m.value.findIndex(y=>y.id===g.id)===-1){if(g.isOwn){const y=m.value.findIndex(w=>w.id.startsWith("temp_")&&w.type===g.type&&w.sending===!0);if(y!==-1){m.value[y]=g;return}}m.value.push(g)}}),z(()=>$()))}catch(e){}}),5e3))},ve=()=>{G&&(j(G),G=null),H=null},Ie=()=>I(null,null,function*(){if(!he.value)return;const a=Date.now();if(a-be.value<Bs)return;be.value=a;const e=N.value.trim(),t=C.value!==null;N.value="",L.value=!0;try{if(!f.User.current()||!p.value)return;if(t){const o=C.value.file,r=C.value.previewUrl,l="temp_image_"+Date.now(),u={id:l,text:e||"[圖片]",type:"image",imageUrl:r,createdAt:new Date,isOwn:!0,read:!1,sending:!0};m.value.push(u),z(()=>$()),C.value=null;try{de.value=!0;const i=yield pt(o),g=yield E.sendMessage(p.value.id,e||"[圖片]","image",{imageUrl:i,caption:e}),h=m.value.findIndex(y=>y.id===l);h!==-1&&(m.value[h]=X(J({},m.value[h]),{id:(g==null?void 0:g.id)||l,imageUrl:i,sending:!1})),URL.revokeObjectURL(r)}catch(i){m.value=m.value.filter(g=>g.id!==l),URL.revokeObjectURL(r),yt("圖片發送失敗:"+i.message)}finally{de.value=!1}}else if(e){const o="temp_"+Date.now(),r={id:o,text:e,type:"text",createdAt:new Date,isOwn:!0,read:!1,sending:!0};m.value.push(r),z(()=>$());try{const l=yield E.sendMessage(p.value.id,e),u=m.value.findIndex(i=>i.id===o);u!==-1&&(m.value[u]=X(J({},m.value[u]),{id:(l==null?void 0:l.id)||o,sending:!1}))}catch(l){m.value=m.value.filter(u=>u.id!==o),N.value=e}}}finally{L.value=!1}}),Be=()=>{N.value+=`
2`},$=()=>{const a=Ce.value;a&&le(()=>{a.scrollTop=a.scrollHeight},100)},We=()=>{q.value=!q.value,P.value=!1},Qe=a=>{N.value+=a.emoji,q.value=!1},Fe=()=>{const a=ne.value||document.querySelector('input[type="file"][accept="image/*"]');a&&a.click()},Ve=a=>{const e=a.target.files[0];if(!e||!p.value)return;if(!["image/jpeg","image/jpg","image/png","image/gif","image/webp"].includes(e.type)){De("只支援 JPG、PNG、GIF、WEBP 格式的圖片");return}if(e.size>10*1024*1024){De("圖片大小不能超過 10MB");return}const n=URL.createObjectURL(e);C.value={file:e,previewUrl:n},ne.value&&(ne.value.value="")},Ge=()=>{C.value&&(URL.revokeObjectURL(C.value.previewUrl),C.value=null)},He=a=>{Q.value=a},Je=()=>I(null,null,function*(){P.value=!P.value,q.value=!1,P.value&&ae.value.length===0&&(yield Xe())}),Xe=()=>I(null,null,function*(){ie.value=!0;try{const a=yield gt({limit:10});a&&a.orders&&(ae.value=a.orders.map(e=>{const n=(Array.isArray(e.items)?e.items:[])[0]||{};return{id:e.id,orderNumber:e.orderNumber||e.id,status:e.status,statusText:Me(e.status),total:e.totalAmount||0,productImage:n.productImage||"/placeholder.png",productName:n.productName||"商品"}}))}catch(a){}finally{ie.value=!1}}),Me=a=>({pending_payment:"待付款",pending:"待付款",paid:"待出貨",shipped:"待收貨",delivered:"已送達",completed:"已完成",cancelled:"已取消",refunded:"已退款"})[a]||a,Ye=a=>I(null,null,function*(){if(!p.value)return;P.value=!1,L.value=!0;const e=a.orderNumber||a.id,t="temp_order_"+Date.now(),n={id:t,text:"[訂單]",type:"order",orderId:e,orderStatus:a.statusText,orderStatusKey:a.status,orderTotal:a.total,productImage:a.productImage,productName:a.productName,createdAt:new Date,isOwn:!0,read:!1,sending:!0};m.value.push(n),z(()=>$());try{const o=yield E.sendMessage(p.value.id,"[訂單]","order",{orderId:e,orderStatus:a.statusText,orderStatusKey:a.status,orderTotal:a.total,productImage:a.productImage,productName:a.productName}),r=m.value.findIndex(l=>l.id===t);r!==-1&&(m.value[r]=X(J({},m.value[r]),{id:(o==null?void 0:o.id)||t,sending:!1}))}catch(o){m.value=m.value.filter(r=>r.id!==t)}finally{L.value=!1}}),Ze=a=>{a&&(ee("close"),x.push({path:"/member",query:{panel:"orders",search:a}}))},Ce=v(null),pe=v(null),je=(a,e)=>I(null,null,function*(){if(a)try{let t=T.value.find(n=>n.sellerId===a);if(t)yield me(t);else{const n=yield E.getOrCreateConversation(a);n&&(yield ue({showLoading:!1}),t=T.value.find(o=>o.id===n.id||o.sellerId===a),t&&(yield me(t)))}}catch(t){}});return rt(()=>A.initialSellerId,a=>I(null,null,function*(){a&&(yield je(a,A.initialSellerName))})),lt(()=>I(null,null,function*(){yield ue(),A.initialSellerId&&(yield je(A.initialSellerId,A.initialSellerName))})),ot(()=>{U.value&&U.value.unsubscribe(),W.value&&W.value.unsubscribe(),ve(),Ke()}),(a,e)=>(c(),d("div",{class:O(["chat-room-container",{"fullscreen-mode":_.isFullscreen,"floating-mode":!_.isFullscreen,"mobile-mode":K(S),"show-chat":K(S)&&p.value}])},[s("div",bt,[K(S)&&p.value?(c(),d("div",{key:0,class:"mobile-sidebar-overlay",onClick:ye})):M("",!0),s("aside",{class:O(["chat-sidebar d-flex flex-column",{"mobile-hidden":K(S)&&p.value}])},[s("div",xt,[s("div",ht,[e[9]||(e[9]=s("h6",{class:"mb-0 fw-bold"},"聊聊",-1)),ce.value>0?(c(),d("span",wt,b(ce.value>99?"99+":ce.value),1)):M("",!0)]),K(S)?(c(),d("button",{key:0,class:"btn btn-sm text-muted mobile-close-btn",onClick:e[0]||(e[0]=t=>a.$emit("close"))},[...e[10]||(e[10]=[s("i",{class:"fas fa-times"},null,-1)])])):M("",!0)]),s("div",_t,[s("div",kt,[e[12]||(e[12]=s("span",{class:"input-group-text bg-transparent border-0 pe-1"},[s("i",{class:"fas fa-search text-muted"})],-1)),Ne(s("input",{"onUpdate:modelValue":e[1]||(e[1]=t=>B.value=t),type:"text",class:"form-control bg-transparent border-0 shadow-none",placeholder:"搜尋名稱"},null,512),[[Oe,B.value]]),s("button",{class:"btn btn-link text-decoration-none text-muted border-start rounded-0 py-0",type:"button",style:{"font-size":"13px",color:"#666"},onClick:e[2]||(e[2]=t=>te.value=te.value==="all"?"unread":"all")},[Y(b(te.value==="all"?"全部":"未讀")+" ",1),e[11]||(e[11]=s("i",{class:"fas fa-chevron-down ms-1",style:{"font-size":"10px"}},null,-1))])])]),D.value?(c(),d("div",It,[...e[13]||(e[13]=[s("div",{class:"spinner-border spinner-border-sm text-secondary",role:"status"},null,-1)])])):(c(),d("div",Mt,[(c(!0),d(Z,null,re(xe.value,t=>(c(),d("div",{key:t.id,class:O(["chat-item d-flex align-items-center px-3 py-3",{active:p.value&&p.value.id===t.id}]),onClick:n=>me(t)},[s("div",jt,[t.avatar?(c(),d("img",{key:0,src:t.avatar,class:"avatar-img",onError:n=>Pe(n,t)},null,40,Ut)):(c(),d("div",St,[...e[14]||(e[14]=[s("i",{class:"fas fa-user"},null,-1)])])),t.unread>0?(c(),d("span",Tt)):M("",!0)]),s("div",Nt,[s("div",Ot,[s("span",At,b(t.name),1),s("small",Dt,b($e(t.lastMessageAt)),1)]),s("div",Lt,[s("div",Pt,b(t.lastMessage),1),t.unread>0?(c(),d("span",$t,b(t.unread>99?"99+":t.unread),1)):M("",!0)])])],10,Ct))),128)),xe.value.length===0?(c(),d("div",Rt,b(B.value?"沒有找到聊天記錄":"目前沒有聊天記錄"),1)):M("",!0)]))],2),s("main",{class:O(["chat-main d-flex flex-column",{"mobile-show":K(S)&&p.value}])},[p.value?(c(),d("div",qt,[s("div",Kt,[s("button",{class:"btn btn-sm btn-link text-decoration-none text-muted me-2 mobile-back-btn",onClick:ye},[...e[15]||(e[15]=[s("i",{class:"fas fa-arrow-left"},null,-1)])]),s("div",null,[s("div",zt,[s("h6",Et,b(p.value.name),1),e[16]||(e[16]=s("i",{class:"fas fa-chevron-down ms-2 text-muted d-none d-md-inline",style:{"font-size":"12px"}},null,-1))])])]),s("div",Bt,[_.isFullscreen?M("",!0):(c(),d("button",{key:0,class:"btn btn-sm text-muted d-none d-md-block",onClick:e[3]||(e[3]=t=>a.$emit("close"))},[...e[17]||(e[17]=[s("i",{class:"fas fa-times"},null,-1)])]))])])):M("",!0),s("div",Wt,[p.value?(c(),d(Z,{key:1},[oe.value?(c(),d("div",Ft,[...e[19]||(e[19]=[s("div",{class:"spinner-border spinner-border-sm text-secondary",role:"status"},null,-1)])])):(c(),d("div",{key:1,class:"messages-container flex-grow-1 p-3",ref_key:"messagesContainer",ref:Ce}
2,[e[24]||(e[24]=it('<div class="system-warning mb-4 p-3 rounded" data-v-33017ec4><div class="d-flex" data-v-33017ec4><i class="fas fa-exclamation-circle text-warning me-2 mt-1" data-v-33017ec4></i><div class="warning-text small text-secondary" style="font-size:12px;line-height:1.5;" data-v-33017ec4> 請將交易對話留在星星電商,買家請提高警覺 <span class="text-danger" data-v-33017ec4>小心詐騙佯裝「怎麼下不了、訂單不成立、加賴、未簽署金流協議」</span> 就是詐騙 !! *不加LINE、不點連結、不提前完成訂單 *不私下轉帳、不提供個人資料及驗證碼 *若有退貨需求,請透過平台申請,由客服協助審核。聯繫官網客服、撥打165反詐騙諮詢專線 <br data-v-33017ec4><a href="#" class="text-danger text-decoration-none" data-v-33017ec4>檢舉此用戶</a></div></div></div>',1)),(c(!0),d(Z,null,re(m.value,t=>{var n;return c(),d("div",{key:t.id,class:"message-wrapper mb-3"},[s("div",{class:O(["message-sender-name",{"text-end":t.isOwn}])},[s("small",Vt,b(t.isOwn?se.value||"我":((n=p.value)==null?void 0:n.name)||"賣家"),1)],2),s("div",{class:O(["message-row d-flex",{"justify-content-end":t.isOwn}])},[s("div",{class:O(["message-bubble shadow-sm",{"own-message":t.isOwn,"other-message":!t.isOwn,"image-message":t.type==="image","order-message":t.type==="order",sending:t.sending}])},[t.type==="text"||!t.type?(c(),d("div",Gt,b(t.text),1)):t.type==="image"?(c(),d("div",{key:1,class:"image-content",onClick:o=>He(t.imageUrl)},[s("img",{src:t.imageUrl,alt:"圖片",class:"chat-image",onLoad:$},null,40,Jt)],8,Ht)):t.type==="sticker"?(c(),d("div",Xt,[s("img",{src:t.stickerUrl,alt:"貼圖",class:"chat-sticker"},null,8,Yt)])):t.type==="order"?(c(),d("div",{key:3,class:"order-card",onClick:fe(o=>Ze(t.orderId),["stop"])},[e[22]||(e[22]=s("div",{class:"order-card-header"},[s("i",{class:"fas fa-receipt me-2"}),s("span",null,"訂單資訊")],-1)),s("div",es,[s("div",ts,[s("img",{src:t.productImage||"/placeholder.png",alt:"商品圖",class:"order-product-img"},null,8,ss),s("div",as,[s("div",ns,b(t.productName||"商品"),1),s("div",rs,"訂單編號:"+b(t.orderId),1)])]),s("div",ls,[s("div",os,[e[20]||(e[20]=Y("狀態:",-1)),s("span",{class:O("status-"+(t.orderStatusKey||"pending"))},b(Me(t.orderStatusKey)||t.orderStatus||"處理中"),3)]),s("div",is,[e[21]||(e[21]=Y("金額:",-1)),s("span",ds,"$"+b(t.orderTotal||0),1)])])]),e[23]||(e[23]=s("div",{class:"order-card-footer"},[s("span",{class:"view-order"},[Y("查看訂單 "),s("i",{class:"fas fa-chevron-right"})])],-1))],8,Zt)):M("",!0),s("div",cs,[s("small",us,b(Re(t.createdAt)),1)])],2)],2)
2])}),128))],512)),s("div",ms,[s("div",vs,[s("i",{class:"far fa-smile text-secondary cursor-pointer",title:"表情",onClick:We}),s("i",{class:"far fa-image text-secondary cursor-pointer",title:"圖片",onClick:Fe}),s("i",{class:"fas fa-clipboard-list text-secondary cursor-pointer",title:"訂單",onClick:Je}),s("input",{type:"file",ref_key:"imageInput",ref:ne,accept:"image/*",style:{display:"none"},onChange:Ve},null,544)]),q.value?(c(),d("div",ps,[s("div",gs,[e[25]||(e[25]=s("span",{class:"fw-bold"},"選擇表情",-1)),s("i",{class:"fas fa-times cursor-pointer",onClick:e[4]||(e[4]=t=>q.value=!1)})]),s("div",fs,[(c(!0),d(Z,null,re(Le.value,t=>(c(),d("div",{key:t.id,class:"sticker-item",onClick:n=>Qe(t),title:t.name},[s("span",bs,b(t.emoji),1)],8,ys))),128))])])):M("",!0),P.value?(c(),d("div",xs,[s("div",hs,[e[26]||(e[26]=s("span",{class:"fw-bold"},"選擇訂單",-1)),s("i",{class:"fas fa-times cursor-pointer",onClick:e[5]||(e[5]=t=>P.value=!1)})]),s("div",ws,[ie.value?(c(),d("div",_s,[...e[27]||(e[27]=[s("div",{class:"spinner-border spinner-border-sm text-secondary",role:"status"},null,-1)])])):ae.value.length===0?(c(),d("div",ks," 暫無訂單 ")):(c(!0),d(Z,{key:2},re(ae.value,t=>(c(),d("div",{key:t.id,class:"order-item d-flex align-items-center p-2",onClick:n=>Ye(t)},[s("div",Ms,[s("img",{src:t.productImage||"/placeholder.png",alt:"商品圖"},null,8,Cs)]),s("div",js,[s("div",Us,b(t.productName),1),s("div",Ss,b(t.orderNumber||t.id),1),s("div",Ts,[s("span",Ns,b(t.statusText),1),e[28]||(e[28]=Y(" · ",-1)),s("span",Os,"$"+b(t.total),1)])])],8,Is))),128))])])):M("",!0),C.value?(c(),d("div",As,[s("div",Ds,[s("img",{src:C.value.previewUrl,alt:"待發送圖片",class:"pending-image"},null,8,Ls),s("button",{class:"remove-pending-image",onClick:Ge,title:"移除圖片"},[...e[29]||(e[29]=[s("i",{class:"fas fa-times"},null,-1)])]),de.value?(c(),d("div",Ps,[...e[30]||(e[30]=[s("div",{class:"spinner-border spinner-border-sm text-light",role:"status"},null,-1)])])):M("",!0)])])):M("",!0),s("div",$s,[Ne(s("textarea",{"onUpdate:modelValue":e[6]||(e[6]=t=>N.value=t),class:"form-control border-0 shadow-none",rows:"2",placeholder:C.value?"輸入圖片說明(選填)...":"輸入文字",onKeydown:[Ae(fe(Ie,["exact","prevent"]),["enter"]),Ae(fe(Be,["shift","exact"]),["enter"])],ref_key:"messageInput",ref:pe,disabled:L.value,style:{resize:"none","font-size":"14px"}},null,40,Rs),[[Oe,N.value]]),s("div",qs,[s("button",{class:"btn btn-link text-decoration-none text-primary p-0",type:"button",disabled:!he.value||L.value,onClick:Ie},[...e[31]||(e[31]=[s("i",{class:"fas fa-paper-plane"},null,-1)])],8,Ks)])])])],64)):(c(),d("div",Qt,[...e[18]||(e[18]=[s("div",{class:"text-center text-muted"},[s("i",{class:"far fa-comments fa-3x mb-3 opacity-25"}),s("p",null,"請選擇一個聊天開始對話")],-1)])]))])],2),Q.value?(c(),d("div",{key:1,class:"image-preview-modal",onClick:e[8]||(e[8]=t=>Q.value=null)},[s("div",zs,[s("img",{src:Q.value,alt:"預覽圖片"},null,8,Es),s("button",{class:"close-preview",onClick:e[7]||(e[7]=t=>Q.value=null)},[...e[32]||(e[32]=[s("i",{class:"fas fa-times"},null,-1)])])])])):M("",!0)])],2))}},na=ct(Ws,[["__scopeId","data-v-33017ec4"]]);export{na as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.