"use strict";const e=require("../../common/vendor.js");require("../../common/libraries/request.js");const t=require("../../common/store/useWeAppAuthStore.js");require("../../common/store/useWorkStore.js");const o=require("./method.js"),a=require("./model.js"),n=require("../../common/libraries/userUserLogin.js");if(require("../../gen/Apis.js"),require("../../common/libraries/setTabBar.js"),require("../../common/libraries/apiLoading.js"),require("../../common/libraries/upload.js"),!Array){(e.resolveComponent("uni-icons")+e.resolveComponent("hs-empty")+e.resolveComponent("hs-button"))()}Math||(s+(()=>"../../uni_modules/uni-icons/components/uni-icons/uni-icons.js")+(()=>"../../components/hs-empty/hs-empty.js")+(()=>"../../components/hs-button/hs-button.js"))();const s=()=>"./components/HeaderPrologue.js",l=e.defineComponent({__name:"chat",setup(s){e.dayjs.extend(e.relativeTime),e.dayjs.locale("zh-cn");const l=t.useWeAppAuthStore(),r=e.ref(!1),i=e.ref(""),u=e.ref(!1),c=e.ref([]),m=e.ref(!1),d=e.ref("正在输入中...");let g=null,v=e.ref(!1);const p=e.ref(1),_=e.ref(10),f=e.ref(!0),y=e.ref(!1),h=e.ref(""),S=e.ref(0),k=e.ref({}),q=e.ref(""),C=()=>{e.index.navigateTo({url:"/pages/login"})},A=()=>{e.nextTick$1((()=>{e.index.pageScrollTo({scrollTop:999999,duration:300})}))},w=async(e=1)=>{var t,a,n;const s=null==(a=null==(t=l.data)?void 0:t.user)?void 0:a.phone;if(s){if(!y.value)try{y.value=!0;const t=(e-1)*_.value;S.value=t;const a=await(null==(n=o.method)?void 0:n.customRequest("public/customer/init",{platform:"property",platform_user_id:s,limit:_.value,offset:t}));if(200===a.statusCode){const t=a.data;let o=[];t.conversation&&t.conversation.id?(h.value=t.conversation.id,console.log("获取到会话ID:",h.value)):t.conversation_id?(h.value=t.conversation_id,console.log("获取到会话ID:",h.value)):t.conversations&&t.conversations.id&&(h.value=t.conversations.id,console.log("获取到会话ID:",h.value)),t.messages&&Array.isArray(t.messages)?(o=t.messages.map((e=>{const t={role:"customer"===e.sender_type?"user":"ai",content:e.message||e.content||"",created_at:e.created_at||e.timestamp||(new Date).toISOString()};e.message_type&&(t.message_type=e.message_type);let o=null;return e.image_url&&Array.isArray(e.image_url)?o=e.image_url:e.images&&Array.isArray(e.images)?o=e.images:e.metadata&&e.metadata.image_url&&Array.isArray(e.metadata.image_url)&&(o=e.metadata.image_url),o&&(t.image_url=o,t.images=o),e.metadata&&(t.metadata=e.metadata),t})),console.log("从messages字段获取到历史记录:",o.length)):t.data&&Array.isArray(t.data)?(o=t.data.map((e=>{const t={role:"customer"===e.sender_type?"user":"ai",content:e.message||e.content||"",created_at:e.created_at||e.timestamp||(new Date).toISOString()};e.message_type&&(t.message_type=e.message_type);let o=null;return e.image_url&&Array.isArray(e.image_url)?o=e.image_url:e.images&&Array.isArray(e.images)?o=e.images:e.metadata&&e.metadata.image_url&&Array.isArray(e.metadata.image_url)&&(o=e.metadata.image_url),o&&(t.image_url=o,t.images=o),e.metadata&&(t.metadata=e.metadata),t})),console.log("从data字段获取到历史记录:",o.length)):t.list&&Array.isArray(t.list)&&(o=t.list.map((e=>{const t={role:"customer"===e.sender_type?"user":"ai",content:e.message||e.content||"",created_at:e.created_at||e.timestamp||(new Date).toISOString()};e.message_type&&(t.message_type=e.message_type);let o=null;return e.image_url&&Array.isArray(e.image_url)?o=e.image_url:e.images&&Array.isArray(e.images)?o=e.images:e.metadata&&e.metadata.image_url&&Array.isArray(e.metadata.image_url)&&(o=e.metadata.image_url),o&&(t.image_url=o,t.images=o),e.metadata&&(t.metadata=e.metadata),t})),console.log("从list字段获取到历史记录:",o.length)),1===e?o.length>0?(c.value=o,console.log("第一页历史记录已加载,总共",o.length,"条消息")):(console.log("没有历史记录"),c.value=[]):o.length>0&&setTimeout((()=>{c.value.unshift(...o),console.log("加载更多历史记录,新增",o.length,"条消息,总共",c.value.length,"条")}),300);const n=t.total||t.count||t.total_count||0;f.value=n>c.value.length,p.value=e,1===e&&(setTimeout((()=>{A()}),100),console.log("[Customer] 历史记录加载完成,开始建立WebSocket连接"),I())}else console.error("获取历史记录失败,状态码:",a.statusCode)}catch(r){console.error("获取历史记录异常:",r)}finally{y.value=!1}}else console.log("用户未登录,无法获取历史记录")};e.onPullDownRefresh((async()=>{if(y.value||!f.value)return console.log("正在加载或没有更多数据"),void e.index.stopPullDownRefresh();console.log("触发下拉分页,加载更多历史记录");const t=p.value+1;try{await w(t),await new Promise((e=>setTimeout(e,500)))}catch(o){console.error("加载历史记录失败:",o)}finally{e.index.stopPullDownRefresh()}}));const I=()=>{var t;if(!g)try{const o=`${null==(t=a.useModel)?void 0:t.WS_BASE_URL}/ws/socket.io/?EIO=4&transport=websocket`;g=e.index.connectSocket({url:o,header:{"content-type":"application/json"}}),e.index.onSocketOpen((t=>{v.value=!0;e.index.sendSocketMessage({data:'40/customer,{"jwt":""}',success:()=>{h.value&&setTimeout((()=>{const t=`42/customer,["join_conversation",{"conversation_id":"${h.value}"}]`;console.log("[Customer] 加入会话房间:",t),e.index.sendSocketMessage({data:t,success:()=>{console.log("[Customer] 成功加入会话房间")},fail:e=>{console.error("[Customer] 加入会话房间失败:",e)}})}),200)},fail:e=>{console.error("[Customer] Socket.IO连接包发送失败:",e)}})})),e.index.onSocketError((e=>{console.error("[Customer] WebSocket error:",e),v.value=!1,g=null})),e.index.onSocketClose((e=>{console.log("[Customer] WebSocket disconnected",e),v.value=!1,g=null})),e.index.onSocketMessage((t=>{const o=t.data;if("string"==typeof o)if(o.startsWith("42/customer,")){const e=o.substring(12);try{const t=JSON.parse(e);console.log("解析Socket.IO事件:",t),b(t)}catch(a){console.error("解析Socket.IO数据失败:",a,"原始数据:",e)}}else if(o.startsWith("40/customer"))console.log("Socket.IO连接确认");else if(o.startsWith("2"))e.index.sendSocketMessage({data:"3"});else if(o.startsWith("0"))console.log("Socket.IO握手成功");else try{const e=JSON.parse(o);console.log("解析JSON消息:",e),x(e)}catch(a){console.log("非JSON格式的字符串消息:",o)}else"object"==typeof o?(console.log("收到对象类型消息:",o),j(o)):console.log("收到其他类型消息,类型:",typeof o)}))}catch(o){console.error("初始化Socket.IO异常:",o),v.value=!1,g=null}},b=e=>{if(Array.isArray(e)&&e.length>=2){const t=e[0],o=e[1];console.log("[Customer] Socket.IO事件类型:",t,"事件数据:",o),"new_message"===t?O(o):"join_conversation_response"===t?console.log("[Customer] Joined room:",o):"message"===t?O(o):"typing"===t?T(o):console.log("[Customer] 未处理的Socket.IO事件类型:",t)}},x=e=>{console.log("[Customer] 处理JSON消息:",e),"message"===e.type||"new_message"===e.event?O(e.data||e):"typing"===e.type||"typing"===e.event?T(e.data||e):e.message||e.content?O(e):console.log("[Customer] 未识别的JSON消息结构:",e)},j=e=>{console.log("[Customer] 处理对象消息:",e),e.message||e.content||e.text?O(e):void 0!==e.is_typing?T(e):console.log("[Customer] 未识别的对象消息结构:",e)},T=e=>{e.is_typing&&"staff"===e.user_type?(m.value=!0,d.value="客服正在输入..."):m.value=!1},O=e=>{if("customer"===e.sender_type||"user"===e.role)return;let t="";if(t="string"==typeof e?e:e.message||e.content||e.text||e.body||"收到回复","string"==typeof t&&(t=t.replace(/↵/g,"\n").replace(/\\n/g,"\n")),console.log("[Customer] 收到新消息内容:",t),t===q.value)return console.log("[Customer] 消息与HTTP返回的消息相同,跳过显示"),void(q.value="");m.value=!1;const o={role:"ai",content:t,created_at:e.created_at||e.timestamp||e.time||(new Date).toISOString()};e.suggested_questions&&Array.isArray(e.suggested_questions)&&e.suggested_questions.length>0?o.quickQuestions=e.suggested_questions:e.quickQuestions&&Array.isArray(e.quickQuestions)&&e.quickQuestions.length>0&&(o.quickQuestions=e.quickQuestions),void 0!==e.need_confirmation&&(o.needConfirmation=e.need_confirmation),void 0!==e.confirmation_type&&(o.confirmationType=e.confirmation_type),c.value.push(o),A()},M=e=>{Q({message:e})},Q=e=>{i.value=e.message,W()},D=(e,t)=>{void 0===e.selectedConfirmation&&(e.selectedConfirmation=t,setTimeout((()=>{i.value=t,W()}),300))},W=async()=>{var t,n,s,r,u,g,p,_,f,y,S,k;const C=i.value.trim(),w=(null==(s=null==(n=null==(t=a.useModel)?void 0:t.selectedImages)?void 0:n.value)?void 0:s.length)>0;if(!C&&!w||m.value)return;const b=null==(u=null==(r=l.data)?void 0:r.user)?void 0:u.phone,x=null==(p=null==(g=l.data)?void 0:g.selected_house)?void 0:p.asset_projects_id,j=null==(f=null==(_=l.data)?void 0:_.selected_house)?void 0:f.full_name;if(!b||!x)return void e.index.showToast({title:"请先登录并绑定房屋",icon:"none"});v.value||(I(),await new Promise((e=>setTimeout(e,1e3))));const T=(null==(S=null==(y=a.useModel)?void 0:y.selectedImages)?void 0:S.value)||[];let O="text";w&&C?O="mixed":w&&!C&&(O="image");const M={role:"user",content:C||"",created_at:(new Date).toISOString(),message_type:O,image_url:T.length>0?T:void 0,images:T.length>0?T:void 0};c.value.push(M),i.value="",a.useModel.selectedImages.value=[],A(),C&&C.includes("查询")?d.value="正在查询中请稍后...":d.value="正在输入中...",m.value=!0;try{const e=await(null==(k=o.method)?void 0:k.customRequest("public/chat",{platform:"property",message:C||"",tenant_project_id:x,message_type:O,tenant_project_name:j||"",conversation_id:h.value,image_url:T.length>0?T:void 0}));if(200!==e.statusCode)throw new Error("请求失败");{const t=e.data;console.log("[Customer] HTTP接口响应数据:",t);let o=null,a=[],n=!1,s=null;if(t.reply&&"string"==typeof t.reply?(o=t.reply,a=t.suggested_questions||[],n=t.need_confirmation||!1,s=t.confirmation_type||null):t.reply&&t.reply.message?(o=t.reply.message,a=t.reply.suggested_questions||t.suggested_questions||[],n=t.reply.need_confirmation||t.need_confirmation||!1,s=t.reply.confirmation_type||t.confirmation_type||null):t.reply&&t.reply.content?(o=t.reply.content,a=t.reply.suggested_questions||t.suggested_questions||[],n=t.reply.need_confirmation||t.need_confirmation||!1,s=t.reply.confirmation_type||t.confirmation_type||null):t.message?(o=t.message,a=t.suggested_questions||[],n=t.need_confirmation||!1,s=t.confirmation_type||null):t.content?(o=t.content,a=t.suggested_questions||[],n=t.need_confirmation||!1,s=t.confirmation_type||null):t.answer?(o=t.answer,a=t.suggested_questions||[],n=t.need_confirmation||!1,s=t.confirmation_type||null):t.response?(o=t.response,a=t.suggested_questions||[],n=t.need_confirmation||!1,s=t.confirmation_type||null):"string"==typeof t&&(o=t),o){console.log("[Customer] HTTP接口返回回答消息:",o),console.log("[Customer] 建议问题:",a),console.log("[Customer] 需要确认:",n,"确认类型:",s);let e=o;"string"==typeof e&&(e=e.replace(/↵/g,"\n").replace(/\\n/g,"\n")),q.value=e,m.value=!1,c.value.push({role:"ai",content:e,created_at:(new Date).toISOString(),quickQuestions:a.length>0?a:void 0,needConfirmation:n,confirmationType:s}),A()}else console.log("[Customer] 消息发送成功,等待WebSocket回复")}}catch(Q){console.error("发送消息失败:",Q),e.index.showToast({title:"发送失败,请稍后重试",icon:"none"}),c.value.push({role:"ai",content:"抱歉,网络连接出现问题,请稍后再试。"}),m.value=!1,A()}};return e.onUnmounted((()=>{(g||v.value)&&(e.index.closeSocket(),g=null,v.value=!1,console.log("页面卸载,WebSocket连接已关闭"))})),e.onLoad((async t=>{var a,s,l;await(null==(a=e.getCurrentInstance())?void 0:a.appContext.config.globalProperties.$onLaunched),(null==(s=n.getUserLogin)?void 0:s.getLoginStatus())?(r.value=!0,k.value=await(null==(l=o.method)?void 0:l.getQuickQuestions()),w(1),(null==t?void 0:t.message)&&Q(t)):(r.value=!1,c.value=[])})),(t,n)=>{var s,l,g,v,p,_,f,y,h,S,k,q,A,w,I,b,x,j,T,O,Q,P,z,F,J,L;return e.e({a:r.value},r.value?e.e({b:e.o(M),c:e.f(c.value,((t,a,n)=>{var s,l;return e.e({a:"ai"===t.role},(t.role,{}),{b:t.image_url&&t.image_url.length>0},t.image_url&&t.image_url.length>0?{c:e.f(t.image_url,((a,n,s)=>({a:a,b:e.o((n=>{var s;return null==(s=e.unref(o.method))?void 0:s.previewImage(a,t.image_url)}),n),c:n}))),d:1===t.image_url.length?"widthFix":"aspectFill",e:1===t.image_url.length?1:""}:t.images&&t.images.length>0?{g:e.f(t.images,((a,n,s)=>({a:a,b:e.o((n=>{var s;return null==(s=e.unref(o.method))?void 0:s.previewImage(a,t.images)}),n),c:n}))),h:1===t.images.length?"widthFix":"aspectFill",i:1===t.images.length?1:""}:t.metadata&&t.metadata.image_url&&t.metadata.image_url.length>0?{k:e.f(t.metadata.image_url,((a,n,s)=>({a:a,b:e.o((n=>{var s;return null==(s=e.unref(o.method))?void 0:s.previewImage(a,t.metadata.image_url)}),n),c:n}))),l:1===t.metadata.image_url.length?"widthFix":"aspectFill",m:1===t.metadata.image_url.length?1:""}:{},{f:t.images&&t.images.length>0,j:t.metadata&&t.metadata.image_url&&t.metadata.image_url.length>0,n:t.content&&t.content.trim()},t.content&&t.content.trim()?{o:e.f(null==(s=e.unref(o.method))?void 0:s.formatMessageContent(t.content),((t,o,a)=>({a:e.t(t),b:"text-"+o})))}:{},{p:t.quickQuestions&&t.quickQuestions.length>0},t.quickQuestions&&t.quickQuestions.length>0?{q:e.f(t.quickQuestions,((t,o,a)=>({a:e.t(t),b:o,c:e.o((e=>(e=>{i.value=e,W()})(t)),o)})))}:{},{r:t.needConfirmation},t.needConfirmation?{s:"是"===t.selectedConfirmation?1:"",t:void 0!==t.selectedConfirmation?1:"",v:e.o((e=>D(t,"是")),a),w:"否"===t.selectedConfirmation?1:"",x:void 0!==t.selectedConfirmation?1:"",y:e.o((e=>D(t,"否")),a)}:{},{z:t.created_at&&!t.quickQuestions},t.created_at&&!t.quickQuestions?e.e({A:"ai"===t.role},"ai"===t.role?{B:e.o((a=>{var n;return null==(n=e.unref(o.method))?void 0:n.copyMessage(t.content)}),a)}:{},{C:e.t(null==(l=e.unref(o.method))?void 0:l.formatTime(t.created_at)),D:"user"===t.role},"user"===t.role?{E:e.o((a=>{var n;return null==(n=e.unref(o.method))?void 0:n.copyMessage(t.content)}),a)}:{}):{},{F:a,G:`msg-${a}`,H:e.n("user"===t.role?"user-message":"ai-message")})})),d:m.value},m.value?{e:e.t(d.value)}:{},{f:(null==(g=null==(l=null==(s=e.unref(a.useModel))?void 0:s.selectedImages)?void 0:l.value)?void 0:g.length)>0},(null==(_=null==(p=null==(v=e.unref(a.useModel))?void 0:v.selectedImages)?void 0:p.value)?void 0:_.length)>0?e.e({g:e.f(null==(y=null==(f=e.unref(a.useModel))?void 0:f.selectedImages)?void 0:y.value,((t,a,n)=>({a:t,b:"25c36616-1-"+n,c:e.o((t=>{var n;return null==(n=e.unref(o.method))?void 0:n.removeImage(a)}),a),d:a}))),h:e.p({type:"closeempty",size:"14",color:"#fff"}),i:(null==(k=null==(S=null==(h=e.unref(a.useModel))?void 0:h.selectedImages)?void 0:S.value)?void 0:k.length)<9},(null==(w=null==(A=null==(q=e.unref(a.useModel))?void 0:q.selectedImages)?void 0:A.value)?void 0:w.length)<9?{j:e.p({type:"plus",size:"30",color:"#999"}),k:e.o((t=>{var a;return null==(a=e.unref(o.method))?void 0:a.chooseImage()}))}:{}):{},{l:e.o((e=>u.value=!0)),m:e.o((e=>u.value=!1)),n:e.o(W),o:i.value,p:e.o((e=>i.value=e.detail.value)),q:!i.value.trim()&&!u.value&&0===(null==(x=null==(b=null==(I=e.unref(a.useModel))?void 0:I.selectedImages)?void 0:b.value)?void 0:x.length)},i.value.trim()||u.value||0!==(null==(O=null==(T=null==(j=e.unref(a.useModel))?void 0:j.selectedImages)?void 0:T.value)?void 0:O.length)?{}:{r:e.p({type:"camera",size:"24",color:"#666"}),s:e.o((t=>{var a;return null==(a=e.unref(o.method))?void 0:a.chooseImage()}))},{t:(i.value.trim()||u.value||(null==(z=null==(P=null==(Q=e.unref(a.useModel))?void 0:Q.selectedImages)?void 0:P.value)?void 0:z.length)>0)&&!m.value},(i.value.trim()||u.value||(null==(L=null==(J=null==(F=e.unref(a.useModel))?void 0:F.selectedImages)?void 0:J.value)?void 0:L.length)>0)&&!m.value?{v:e.p({type:"paperplane-filled",size:"20",color:"#fff"}),w:e.o(W)}:{},{x:m.value},m.value?{y:e.p({type:"spinner-cycle",size:"20",color:"#ccc"})}:{}):{z:e.p({height:"20vh",baseStyle:{paddingTop:"35%"},text:"登录体验更多功能"}),A:e.o(C),B:e.p({label:"去登录",size:"md",type:"primary"})})}}});l.__runtimeHooks=1,wx.createPage(l);