Files
phone-app------test1-/unpackage/dist/build/app-plus/app-service.js
2026-07-17 17:14:12 +08:00

8 lines
198 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(e){const t=this.constructor;return this.then((a=>t.resolve(e()).then((()=>a))),(a=>t.resolve(e()).then((()=>{throw a}))))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){const e=uni.requireGlobal();ArrayBuffer=e.ArrayBuffer,Int8Array=e.Int8Array,Uint8Array=e.Uint8Array,Uint8ClampedArray=e.Uint8ClampedArray,Int16Array=e.Int16Array,Uint16Array=e.Uint16Array,Int32Array=e.Int32Array,Uint32Array=e.Uint32Array,Float32Array=e.Float32Array,Float64Array=e.Float64Array,BigInt64Array=e.BigInt64Array,BigUint64Array=e.BigUint64Array}uni.restoreGlobal&&uni.restoreGlobal(Vue,weex,plus,setTimeout,clearTimeout,setInterval,clearInterval),function(e){"use strict";function t(e,t,...a){uni.__log__?uni.__log__(e,t,...a):console[e].apply(console,[...a,t])}function a(e,t){return"string"==typeof e?t:e}const n=(t,a=0)=>(a,n=e.getCurrentInstance())=>{!e.isInSSRComponentSetup&&e.injectHook(t,a,n)},o=n("onShow",3),l=n("onUnload",2),s="https://cloud.yuxindazhineng.com",c=async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/delete_conversation`,method:"POST",data:{access_token:e,conversation_ids:t},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)a(t.message);else{const e=t.failed_ids.error||"删除对话出错啦";n(e)}}else n(`删除对话失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),i=async e=>new Promise(((t,a)=>{uni.request({url:`${s}/get_user_info`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e},success:e=>{var n,o;if(200===e.statusCode){const l=e.data;if(null==l?void 0:l._id)uni.setStorageSync("userId",l._id),t(l);else{const e=(null==(o=null==(n=null==l?void 0:l.detail)?void 0:n[0])?void 0:o.msg)||"获取用户信息出错啦";a(e)}}else a(`获取用户信息失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})),r=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/get_user_avatar`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,user_ids:t},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)a(t.users);else{const e=(null==t?void 0:t.error)||"获取用户头像出错啦";n(e)}}else n(`获取用户头像失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),u=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/search_users`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,keyword:t},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)a(t.users);else{const e=(null==t?void 0:t.error)||"通过用户名或邮箱来去查询用户出错啦";n(e)}}else n(`通过用户名或邮箱来去查询用户失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),d=(e,t,a)=>new Promise(((n,o)=>{uni.request({url:`${s}/cloud_api/phone/workspace/delete`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspaces_id:t,file_path:a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"删除工作区文件出错啦";o(e)}}else o(`删除工作区文件失败:${e.statusCode}`)}})})),m=(e,t,a)=>new Promise(((n,o)=>{uni.request({url:`${s}/cloud_api/phone/workspace/create`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspaces_id:t,dir_path:a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"创建工作区文件夹出错啦";o(e)}}else o(`创建工作区文件夹失败:${e.statusCode}`)}})})),v=(e,t,a="/",n="")=>new Promise(((o,l)=>{uni.request({url:`${s}/cloud_api/file/list`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,path:a,type:t,team_id:n},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)o(t.data);else{const e=(null==t?void 0:t.error)||"获取工作区文件目录出错啦";l(e)}}else l(`获取工作区文件目录失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})),p=async e=>new Promise(((t,a)=>{uni.request({url:`${s}/cloud_api/team/list`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_name:""},success:e=>{if(200===e.statusCode){const n=e.data;if(n.success){const e=n.teams.slice(1);t(e)}else{const t=e.data.error||"获取用户可访问的团队列表出错啦";a(t)}}else a(`获取用户可访问的团队列表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})),f=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/team/get_all_member`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_id:t},success:e=>{var t;if(200===e.statusCode){const o=e.data;if(o.success){const e=(null==(t=o.team)?void 0:t.result)||[];a(e)}else{const e=(null==o?void 0:o.error)||"获取团队全部成员出错啦";n(e)}}else n(`获取团队全部成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),h=(e,t,a,n)=>new Promise(((o,l)=>{const c={access_token:e,database_id:t};"user_id"===a?c.user_id=n:"team_id"===a&&(c.team_id=n),uni.request({url:`${s}/cloud_api/database/permission/info`,method:"POST",data:c,header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)o(t.data);else if(Array.isArray(t))o(t);else{const e=(null==t?void 0:t.error)||"查看 个人/团队 数据库权限信息出错啦";l(e)}}else l(`查看 个人/团队 数据库权限信息失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})),g=(e,t)=>{const a=e.__vccOpts||e;for(const[n,o]of t)a[n]=o;return a},w=g({__name:"Login",setup(a){const n=e.ref(""),o=e.ref(!1),l=e.ref(!1),c=()=>{o.value=!0,g.value=!1},i=()=>{o.value=!1},r=()=>{},u=e.ref(""),d=e.ref(!1),m=e.ref(!1),v=()=>{d.value=!0,g.value=!1},p=()=>{d.value=!1},f=e.reactive({username:e.computed((()=>n.value)),password:e.computed((()=>u.value)),remember:!0}),h=e.ref(!1),g=e.ref(!1),w=async()=>{if(k(),!g.value){h.value=!0;try{t("log","at pages/Login/Login.vue:119","有返回token",await(async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/login`,method:"POST",data:{username:e,password:t,login_type:"phone"},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data.access_token;if(t)uni.setStorageSync("token",t),a(t);else{const t=e.data.error||"检查用户名和密码";n(t)}}else String(e.statusCode).startsWith("5")?n({serverError:!0,code:e.statusCode,message:"服务器升级中,请稍后再试"}):n(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})))(n.value,u.value)),y(),uni.reLaunch({url:"/pages/Chat/Chat"})}catch(e){t("log","at pages/Login/Login.vue:125","登录失败",e),e&&"object"==typeof e&&e.serverError?uni.showModal({title:"提示",content:e.message,showCancel:!1,confirmText:"知道了"}):uni.showToast({title:(null==e?void 0:e.message)||e||"失败",icon:"error"})}finally{h.value=!1}}},k=()=>{n.value&&u.value||(g.value=!0)},y=()=>{if(f.remember){const e={username:f.username,password:f.password,remember:!0};uni.setStorageSync("login_info",e),uni.setStorageSync("chatType",0)}else uni.removeStorageSync("login_info")};return e.onMounted((()=>{(()=>{try{const e=uni.getStorageSync("login_info");e&&(n.value=e.username||"",u.value=e.password||"",f.remember=e.remember??!0)}catch(e){t("error","at pages/Login/Login.vue:178","读取登录信息失败",e)}})()})),(t,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),e.createElementVNode("view",{class:"login-container page-container"},[e.createElementVNode("view",{class:"login-card"},[e.createElementVNode("view",{class:"login-header"},[e.createElementVNode("view",{class:"login-header-logo"},[e.createElementVNode("view",{class:"icon-wrapper"},[e.createElementVNode("view",{class:"iconfont icon-brain-2-fill danao-style"})]),e.createElementVNode("text",null,"YXD")]),e.createElementVNode("view",{class:"sub-title"},"File Handling Chat")]),e.createElementVNode("view",{class:"form-wrapper"},[e.createElementVNode("view",{class:"form-item"},[e.createElementVNode("view",{class:"form-label"},[e.createElementVNode("text",null,"用户名")]),e.withDirectives(e.createElementVNode("input",{class:e.normalizeClass(["form-input",{focused:o.value,error:l.value}]),"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e),onFocus:c,onBlur:i,onInput:r,placeholder:"请输入用户名"},null,34),[[e.vModelText,n.value]])]),e.createElementVNode("view",{class:"form-item"},[e.createElementVNode("view",{class:"form-label"},[e.createElementVNode("text",null,"密码")]),e.withDirectives(e.createElementVNode("input",{type:"password",class:e.normalizeClass(["form-input",{focused:d.value,error:m.value}]),"onUpdate:modelValue":a[1]||(a[1]=e=>u.value=e),onFocus:v,onBlur:p,placeholder:"请输入密码"},null,34),[[e.vModelText,u.value]])]),g.value?(e.openBlock(),e.createElementBlock("text",{key:0,class:"error-info"},"用户名或密码不能为空")):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"form-option"},[e.createElementVNode("view",{class:"checkbox-wrapper",onClick:a[2]||(a[2]=e=>f.remember=!f.remember)},[e.createElementVNode("view",{class:e.normalizeClass(["checkbox",{checked:f.remember}])},[f.remember?(e.openBlock(),e.createElementBlock("text",{key:0},"✓")):e.createCommentVNode("",!0)],2),e.createElementVNode("text",{class:"checkbox-text"},"记住密码")]),e.createElementVNode("text",{class:"forget-pwd"},"忘记密码?")]),e.createElementVNode("button",{class:"login-btn",disabled:h.value,loading:h.value,onClick:w},e.toDisplayString(h.value?"Loading...":"登录"),9,["disabled","loading"])])])])],64))}},[["__scopeId","data-v-1f1e3d89"]]),k=[{font_class:"arrow-down",unicode:""},{font_class:"arrow-left",unicode:""},{font_class:"arrow-right",unicode:""},{font_class:"arrow-up",unicode:""},{font_class:"auth",unicode:""},{font_class:"auth-filled",unicode:""},{font_class:"back",unicode:""},{font_class:"bars",unicode:""},{font_class:"calendar",unicode:""},{font_class:"calendar-filled",unicode:""},{font_class:"camera",unicode:""},{font_class:"camera-filled",unicode:""},{font_class:"cart",unicode:""},{font_class:"cart-filled",unicode:""},{font_class:"chat",unicode:""},{font_class:"chat-filled",unicode:""},{font_class:"chatboxes",unicode:""},{font_class:"chatboxes-filled",unicode:""},{font_class:"chatbubble",unicode:""},{font_class:"chatbubble-filled",unicode:""},{font_class:"checkbox",unicode:""},{font_class:"checkbox-filled",unicode:""},{font_class:"checkmarkempty",unicode:""},{font_class:"circle",unicode:""},{font_class:"circle-filled",unicode:""},{font_class:"clear",unicode:""},{font_class:"close",unicode:""},{font_class:"closeempty",unicode:""},{font_class:"cloud-download",unicode:""},{font_class:"cloud-download-filled",unicode:""},{font_class:"cloud-upload",unicode:""},{font_class:"cloud-upload-filled",unicode:""},{font_class:"color",unicode:""},{font_class:"color-filled",unicode:""},{font_class:"compose",unicode:""},{font_class:"contact",unicode:""},{font_class:"contact-filled",unicode:""},{font_class:"down",unicode:""},{font_class:"bottom",unicode:""},{font_class:"download",unicode:""},{font_class:"download-filled",unicode:""},{font_class:"email",unicode:""},{font_class:"email-filled",unicode:""},{font_class:"eye",unicode:""},{font_class:"eye-filled",unicode:""},{font_class:"eye-slash",unicode:""},{font_class:"eye-slash-filled",unicode:""},{font_class:"fire",unicode:""},{font_class:"fire-filled",unicode:""},{font_class:"flag",unicode:""},{font_class:"flag-filled",unicode:""},{font_class:"folder-add",unicode:""},{font_class:"folder-add-filled",unicode:""},{font_class:"font",unicode:""},{font_class:"forward",unicode:""},{font_class:"gear",unicode:""},{font_class:"gear-filled",unicode:""},{font_class:"gift",unicode:""},{font_class:"gift-filled",unicode:""},{font_class:"hand-down",unicode:""},{font_class:"hand-down-filled",unicode:""},{font_class:"hand-up",unicode:""},{font_class:"hand-up-filled",unicode:""},{font_class:"headphones",unicode:""},{font_class:"heart",unicode:""},{font_class:"heart-filled",unicode:""},{font_class:"help",unicode:""},{font_class:"help-filled",unicode:""},{font_class:"home",unicode:""},{font_class:"home-filled",unicode:""},{font_class:"image",unicode:""},{font_class:"image-filled",unicode:""},{font_class:"images",unicode:""},{font_class:"images-filled",unicode:""},{font_class:"info",unicode:""},{font_class:"info-filled",unicode:""},{font_class:"left",unicode:""},{font_class:"link",unicode:""},{font_class:"list",unicode:""},{font_class:"location",unicode:""},{font_class:"location-filled",unicode:""},{font_class:"locked",unicode:""},{font_class:"locked-filled",unicode:""},{font_class:"loop",unicode:""},{font_class:"mail-open",unicode:""},{font_class:"mail-open-filled",unicode:""},{font_class:"map",unicode:""},{font_class:"map-filled",unicode:""},{font_class:"map-pin",unicode:""},{font_class:"map-pin-ellipse",unicode:""},{font_class:"medal",unicode:""},{font_class:"medal-filled",unicode:""},{font_class:"mic",unicode:""},{font_class:"mic-filled",unicode:""},{font_class:"micoff",unicode:""},{font_class:"micoff-filled",unicode:""},{font_class:"minus",unicode:""},{font_class:"minus-filled",unicode:""},{font_class:"more",unicode:""},{font_class:"more-filled",unicode:""},{font_class:"navigate",unicode:""},{font_class:"navigate-filled",unicode:""},{font_class:"notification",unicode:""},{font_class:"notification-filled",unicode:""},{font_class:"paperclip",unicode:""},{font_class:"paperplane",unicode:""},{font_class:"paperplane-filled",unicode:""},{font_class:"person",unicode:""},{font_class:"person-filled",unicode:""},{font_class:"personadd",unicode:""},{font_class:"personadd-filled",unicode:""},{font_class:"personadd-filled-copy",unicode:""},{font_class:"phone",unicode:""},{font_class:"phone-filled",unicode:""},{font_class:"plus",unicode:""},{font_class:"plus-filled",unicode:""},{font_class:"plusempty",unicode:""},{font_class:"pulldown",unicode:""},{font_class:"pyq",unicode:""},{font_class:"qq",unicode:""},{font_class:"redo",unicode:""},{font_class:"redo-filled",unicode:""},{font_class:"refresh",unicode:""},{font_class:"refresh-filled",unicode:""},{font_class:"refreshempty",unicode:""},{font_class:"reload",unicode:""},{font_class:"right",unicode:""},{font_class:"scan",unicode:""},{font_class:"search",unicode:""},{font_class:"settings",unicode:""},{font_class:"settings-filled",unicode:""},{font_class:"shop",unicode:""},{font_class:"shop-filled",unicode:""},{font_class:"smallcircle",unicode:""},{font_class:"smallcircle-filled",unicode:""},{font_class:"sound",unicode:""},{font_class:"sound-filled",unicode:""},{font_class:"spinner-cycle",unicode:""},{font_class:"staff",unicode:""},{font_class:"staff-filled",unicode:""},{font_class:"star",unicode:""},{font_class:"star-filled",unicode:""},{font_class:"starhalf",unicode:""},{font_class:"trash",unicode:""},{font_class:"trash-filled",unicode:""},{font_class:"tune",unicode:""},{font_class:"tune-filled",unicode:""},{font_class:"undo",unicode:""},{font_class:"undo-filled",unicode:""},{font_class:"up",unicode:""},{font_class:"top",unicode:""},{font_class:"upload",unicode:""},{font_class:"upload-filled",unicode:""},{font_class:"videocam",unicode:""},{font_class:"videocam-filled",unicode:""},{font_class:"vip",unicode:""},{font_class:"vip-filled",unicode:""},{font_class:"wallet",unicode:""},{font_class:"wallet-filled",unicode:""},{font_class:"weibo",unicode:""},{font_class:"weixin",unicode:""}];const y=g({name:"UniIcons",emits:["click"],props:{type:{type:String,default:""},color:{type:String,default:"#333333"},size:{type:[Number,String],default:16},customPrefix:{type:String,default:""},fontFamily:{type:String,default:""}},data:()=>({icons:k}),computed:{unicode(){let e=this.icons.find((e=>e.font_class===this.type));return e?e.unicode:""},iconSize(){return"number"==typeof(e=this.size)||/^[0-9]*$/g.test(e)?e+"px":e;var e},styleObj(){return""!==this.fontFamily?`color: ${this.color}; font-size: ${this.iconSize}; font-family: ${this.fontFamily};`:`color: ${this.color}; font-size: ${this.iconSize};`}},methods:{_onClick(e){this.$emit("click",e)}}},[["render",function(t,a,n,o,l,s){return e.openBlock(),e.createElementBlock("text",{style:e.normalizeStyle(s.styleObj),class:e.normalizeClass(["uni-icons",["uniui-"+n.type,n.customPrefix,n.customPrefix?n.type:""]]),onClick:a[0]||(a[0]=(...e)=>s._onClick&&s._onClick(...e))},[e.renderSlot(t.$slots,"default",{},void 0,!0)],6)}],["__scopeId","data-v-b25a9929"]]),E=()=>uni.getStorageSync("token"),C=()=>{const e=uni.getStorageSync("currentSessionId");return isNaN(Number(e))?e.replace(/-/g,""):e},N=()=>uni.getStorageSync("taskCallId"),b=()=>(t("log","at utils/user-info.js:50","用户IdUserId",uni.getStorageSync("userId")),uni.getStorageSync("userId")),V=g(Object.assign({name:"ChatSidebar"},{__name:"ChatSidebar",props:{chatList:{type:Array,required:!0},showNewChatModal:{type:Boolean,default:!1},currentSessionId:{type:[String,Number],required:!0},chatType:{type:Number,required:!0}},emits:["update:showNewChatModal","update:currentSessionId","refresh-conversations","update:chatType"],setup(n,{emit:o}){const l=n,s=o,r=e.toRef(l,"chatList");e.toRef(l,"showNewChatModal");const u=e.toRef(l,"chatType"),d=()=>{uni.navigateTo({url:"/pages/UserProfileModal/UserProfileModal"})},m=e.ref(!1),v=e.ref([]),p=()=>{0!==v.value.length&&uni.showModal({title:"确认删除",content:`确定要删除全部 ${v.value.length} 个对话吗?此操作不可恢复。`,confirmText:"确认删除",confirmColor:"#ff0000",success:async e=>{if(e.confirm)try{const e=E();await c(e,v.value),uni.showToast({title:"删除成功",icon:"success"}),v.value=[],m.value=!1,s("refresh-conversations")}catch(a){t("error","at components/ChatSidebar.vue:209","删除会话失败:",a),uni.showToast({title:"删除失败,请重试",icon:"none"})}}})},f=()=>{r.value.length?uni.showModal({title:"确认删除",content:`确定要删除全部 ${r.value.length} 个对话吗?此操作不可恢复。`,confirmText:"删除全部",confirmColor:"#ff0000",success:async e=>{if(e.confirm)try{const e=E(),t=r.value.map((e=>e._id));await c(e,t),uni.showToast({title:"已删除全部对话",icon:"success"}),s("refresh-conversations")}catch(a){t("error","at components/ChatSidebar.vue:241","清空全部对话失败:",a),uni.showToast({title:"删除失败,请重试",icon:"none"})}}}):uni.showToast({title:"没有可删除的会话",icon:"none"})},h=e.computed((()=>r.value.length>0&&v.value.length===r.value.length)),g=e.toRef(l,"currentSessionId"),w=(e,a="")=>{t("log","at components/ChatSidebar.vue:259","选择的id是",e),a&&uni.setStorageSync("receiverId",a),uni.setStorageSync("currentSessionId",e),s("update:currentSessionId",e)},k=()=>{t("log","at components/ChatSidebar.vue:270","点击了新建会话"),s("update:showNewChatModal",!0)},C=()=>{uni.navigateTo({url:"/pages/ContactPages/ContactPages"})},N=e.ref(""),b=e.ref(!1),V=()=>{m.value=!m.value,m.value||(v.value=[])},_=e=>{const t=v.value.indexOf(e);-1===t?v.value.push(e):v.value.splice(t,1)},B=()=>{h.value?v.value=[]:v.value=r.value.map((e=>e._id))},S=e.ref(""),x=e.ref(""),T=e.ref(""),D=(e,t=20)=>e?e.length>t?e.substring(0,t)+"...":e:"";return e.onMounted((async()=>{S.value=E();const e=await i(S.value);x.value=e.avatar||"",T.value=e.username||"",t("log","at components/ChatSidebar.vue:326","菜单收到的会话列表:",r.value)})),(t,n)=>{const o=a(e.resolveDynamicComponent("uni-icons"),y);return e.openBlock(),e.createElementBlock("view",{class:"chat-sidebar-container"},[e.createElementVNode("view",{class:"status-bar"}),e.createElementVNode("view",{class:"sidebar-header"},[e.createElementVNode("view",{class:"user-profile-card",onClick:d},[e.createElementVNode("view",{class:"left"},[x.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"avatar-preview"},[e.createElementVNode("image",{src:x.value,mode:"aspectFill"},null,8,["src"])])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"avatar-placeholder"},[e.createVNode(o,{type:"contact-filled",size:"50",color:"#007aff"})]))]),e.createElementVNode("view",{class:"center"},[e.createElementVNode("text",null,"欢迎回来"),e.createElementVNode("text",null,e.toDisplayString(T.value),1)]),e.createElementVNode("view",{class:"right"},[e.createElementVNode("view",{class:"status-dot"}),e.createElementVNode("view",{class:"status-text"},[e.createElementVNode("text",null,"在线")])])]),e.createElementVNode("view",{class:"new-chat-btn",onClick:C},[e.createElementVNode("text",null,"+ 聊天列表")])]),e.createElementVNode("view",{class:"chat-history"},[e.createElementVNode("view",{class:"history-header"},[e.createElementVNode("view",{class:"history-title-section"},[e.createElementVNode("text",null,"历史会话"),e.createElementVNode("text",null,e.toDisplayString(r.value.length)+"个对话",1)]),e.createElementVNode("view",{class:"history-management"},[m.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-management-btn iconfont icon-jia icon-jia-style",onClick:k})),m.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:1,class:"history-management-btn iconfont icon-duoxuan icon-duoxuan-style",onClick:V})),m.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:2,class:"history-management-btn iconfont icon-saochu icon-saochu-style",onClick:f})),m.value&&v.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:3,class:"history-management-btn iconfont icon-shanchu icon-shanchu-style",onClick:p})):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("view",{key:4,class:e.normalizeClass(["history-management-btn iconfont icon-total_selection icon-total_selection-style",{active:h.value}]),onClick:B},null,2)):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("view",{key:5,class:"history-management-btn iconfont icon-quxiao icon-quxiao-style",onClick:V})):e.createCommentVNode("",!0)])]),m.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-search-wrap"},[e.createElementVNode("view",{class:e.normalizeClass(["history-search-inner",{"has-value":N.value||b.value}])},[e.createVNode(o,{type:"search",class:e.normalizeClass([N.value||b.value?"chat-search-icon":"search-icon"])},null,8,["class"]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=e=>N.value=e),onFocus:n[1]||(n[1]=e=>b.value=!0),onBlur:n[2]||(n[2]=e=>b.value=!1),type:"text",placeholder:"搜索会话..."},null,544),[[e.vModelText,N.value]])],2)])),e.createElementVNode("view",{class:"chat-history-list"},[0===u.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(r.value,(t=>{var a;return e.openBlock(),e.createElementBlock("view",{key:t._id,"data-chat-id":t._id,class:e.normalizeClass(["chat-history-card",{"is-select-chat":g.value===t._id||v.value.includes(t._id)}]),onClick:e=>m.value?_(t._id):w(t._id)},[m.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[v.value.includes(t._id)?(e.openBlock(),e.createBlock(o,{key:0,type:"checkmarkempty",size:"20",color:"#007aff"})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"history-chat-avatar"},[e.createVNode(o,{type:"chat-filled",size:"26",color:"#007aff"})]),t.agent_id?(e.openBlock(),e.createElementBlock("view",{key:1},e.toDisplayString(D(null==(a=t.agent_data)?void 0:a.title)||"加载中"),1)):(e.openBlock(),e.createElementBlock("view",{key:2},e.toDisplayString(D(t.title)),1))],10,["data-chat-id","onClick"])})),128)):e.createCommentVNode("",!0),1===u.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(r.value,(t=>(e.openBlock(),e.createElementBlock("view",{key:t.sessionId,"data-chat-id":t.sessionId,class:e.normalizeClass(["chat-history-card",{"is-select-chat":g.value===t.sessionId||v.value.includes(t.sessionId)}]),onClick:e=>m.value?_(t.sessionId):w(t.sessionId,t.receiver)},[m.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[v.value.includes(t.sessionId)?(e.openBlock(),e.createBlock(o,{key:0,type:"checkmarkempty",size:"20",color:"#007aff"})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"history-chat-avatar"},[t.avatar?(e.openBlock(),e.createElementBlock("image",{key:0,src:t.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):e.createCommentVNode("",!0)]),e.createElementVNode("view",null,e.toDisplayString(t.friendNickName),1)],10,["data-chat-id","onClick"])))),128)):e.createCommentVNode("",!0),2===u.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(r.value,(t=>(e.openBlock(),e.createElementBlock("view",{key:t.id,"data-chat-id":t.id,class:e.normalizeClass(["chat-history-card",{"is-select-chat":g.value===t.id||v.value.includes(t.id)}]),onClick:e=>m.value?_(t.id):w(t.id)},[m.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[v.value.includes(t.id)?(e.openBlock(),e.createBlock(o,{key:0,type:"checkmarkempty",size:"20",color:"#007aff"})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"history-chat-avatar"},[e.createElementVNode("view",{class:"iconfont icon-qunliao",style:{"font-size":"80rpx",color:"#fff"}})]),e.createElementVNode("view",null,e.toDisplayString(t.name),1)],10,["data-chat-id","onClick"])))),128)):e.createCommentVNode("",!0)])])])}}}),[["__scopeId","data-v-eed4c646"]]);var _={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function B(e){return e.replace(RegExp("^"+(e.match(/^(\t| )+/)||"")[0],"gm"),"")}function S(e){return(e+"").replace(/"/g,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function x(e,t){var a,n,o,l,s,c=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,i=[],r="",u=t||{},d=0;function m(e){var t=_[e[1]||""],a=i[i.length-1]==e;return t?t[1]?(a?i.pop():i.push(e),t[0|a]):t[0]:e}function v(){for(var e="";i.length;)e+=m(i[i.length-1]);return e}for(e=e.replace(/^\[(.+?)\]:\s*(.+)$/gm,(function(e,t,a){return u[t.toLowerCase()]=a,""})).replace(/^\n+|\n+$/g,"");o=c.exec(e);)n=e.substring(d,o.index),d=c.lastIndex,a=o[0],n.match(/[^\\](\\\\)*\\$/)||((s=o[3]||o[4])?a='<pre class="code '+(o[4]?"poetry":o[2].toLowerCase())+'"><code'+(o[2]?' class="language-'+o[2].toLowerCase()+'"':"")+">"+B(S(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=o[6])?(s.match(/\./)&&(o[5]=o[5].replace(/^\d+/gm,"")),l=x(B(o[5].replace(/^\s*[>*+.-]/gm,""))),">"==s?s="blockquote":(s=s.match(/\./)?"ol":"ul",l=l.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),a="<"+s+">"+l+"</"+s+">"):o[8]?a='<img src="'+S(o[8])+'" alt="'+S(o[7])+'">':o[10]?(r=r.replace("<a>",'<a href="'+S(o[11]||u[n.toLowerCase()])+'">'),a=v()+"</a>"):o[9]?a="<a>":o[12]||o[14]?a="<"+(s="h"+(o[14]?o[14].length:o[13]>"="?1:2))+">"+x(o[12]||o[15],u)+"</"+s+">":o[16]?a="<code>"+S(o[16])+"</code>":(o[17]||o[1])&&(a=m(o[17]||"--"))),r+=n,r+=a;return(r+e.substring(d)+v()).replace(/^\n+|\n+$/g,"")}
/*!
* pinia v2.1.7
* (c) 2023 Eduardo San Martin Morote
* @license MIT
*/
let T;const D=e=>T=e,P=Symbol();function j(e){return e&&"object"==typeof e&&"[object Object]"===Object.prototype.toString.call(e)&&"function"!=typeof e.toJSON}var $,L;(L=$||($={})).direct="direct",L.patchObject="patch object",L.patchFunction="patch function";const M=()=>{};function I(t,a,n,o=M){t.push(a);const l=()=>{const e=t.indexOf(a);e>-1&&(t.splice(e,1),o())};return!n&&e.getCurrentScope()&&e.onScopeDispose(l),l}function z(e,...t){e.slice().forEach((e=>{e(...t)}))}const F=e=>e();function O(t,a){t instanceof Map&&a instanceof Map&&a.forEach(((e,a)=>t.set(a,e))),t instanceof Set&&a instanceof Set&&a.forEach(t.add,t);for(const n in a){if(!a.hasOwnProperty(n))continue;const o=a[n],l=t[n];j(l)&&j(o)&&t.hasOwnProperty(n)&&!e.isRef(o)&&!e.isReactive(o)?t[n]=O(l,o):t[n]=o}return t}const A=Symbol();const{assign:U}=Object;function q(t,a,n={},o,l,s){let c;const i=U({actions:{}},n),r={deep:!0};let u,d,m,v=[],p=[];const f=o.state.value[t];let h;function g(a){let n;u=d=!1,"function"==typeof a?(a(o.state.value[t]),n={type:$.patchFunction,storeId:t,events:m}):(O(o.state.value[t],a),n={type:$.patchObject,payload:a,storeId:t,events:m});const l=h=Symbol();e.nextTick().then((()=>{h===l&&(u=!0)})),d=!0,z(v,n,o.state.value[t])}s||f||(o.state.value[t]={}),e.ref({});const w=s?function(){const{state:e}=n,t=e?e():{};this.$patch((e=>{U(e,t)}))}:M;function k(e,a){return function(){D(o);const n=Array.from(arguments),l=[],s=[];function c(e){l.push(e)}function i(e){s.push(e)}let r;z(p,{args:n,name:e,store:E,after:c,onError:i});try{r=a.apply(this&&this.$id===t?this:E,n)}catch(u){throw z(s,u),u}return r instanceof Promise?r.then((e=>(z(l,e),e))).catch((e=>(z(s,e),Promise.reject(e)))):(z(l,r),r)}}const y={_p:o,$id:t,$onAction:I.bind(null,p),$patch:g,$reset:w,$subscribe(a,n={}){const l=I(v,a,n.detached,(()=>s())),s=c.run((()=>e.watch((()=>o.state.value[t]),(e=>{("sync"===n.flush?d:u)&&a({storeId:t,type:$.direct,events:m},e)}),U({},r,n))));return l},$dispose:function(){c.stop(),v=[],p=[],o._s.delete(t)}},E=e.reactive(y);o._s.set(t,E);const C=(o._a&&o._a.runWithContext||F)((()=>o._e.run((()=>(c=e.effectScope()).run(a)))));for(const V in C){const a=C[V];if(e.isRef(a)&&(b=a,!e.isRef(b)||!b.effect)||e.isReactive(a))s||(!f||j(N=a)&&N.hasOwnProperty(A)||(e.isRef(a)?a.value=f[V]:O(a,f[V])),o.state.value[t][V]=a);else if("function"==typeof a){const e=k(V,a);C[V]=e,i.actions[V]=a}}var N,b;return U(E,C),U(e.toRaw(E),C),Object.defineProperty(E,"$state",{get:()=>o.state.value[t],set:e=>{g((t=>{U(t,e)}))}}),o._p.forEach((e=>{U(E,c.run((()=>e({store:E,app:o._a,pinia:o,options:i}))))})),f&&s&&n.hydrate&&n.hydrate(E.$state,f),u=!0,d=!0,E}function W(t,a,n){let o,l;const s="function"==typeof a;function c(t,n){const c=e.hasInjectionContext();(t=t||(c?e.inject(P,null):null))&&D(t),(t=T)._s.has(o)||(s?q(o,a,l,t):function(t,a,n,o){const{state:l,actions:s,getters:c}=a,i=n.state.value[t];let r;r=q(t,(function(){i||(n.state.value[t]=l?l():{});const a=e.toRefs(n.state.value[t]);return U(a,s,Object.keys(c||{}).reduce(((a,o)=>(a[o]=e.markRaw(e.computed((()=>{D(n);const e=n._s.get(t);return c[o].call(e,e)}))),a)),{}))}),a,n,0,!0)}(o,l,t));return t._s.get(o)}return"string"==typeof t?(o=t,l=s?n:a):(l=t,o=t.id),c.$id=o,c}const R=new class{constructor(){this.ws=null,this.url="ws://cloud.yuxindazhineng.com/cloud_api/phone/app_ws",this.options={token:"",conversationId:"",onMessage:null,onError:null,onReconnect:null,onOpen:null,onClose:null},this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectDelay=3e3,this.reconnectTimer=null,this.heartbeatTimer=null,this.isManualClose=!1}connect(e={}){this.options={...this.options,...e},this.isManualClose=!1,this.ws&&this.close();try{this.ws=uni.connectSocket({url:this.url,success:()=>{t("log","at utils/socket.js:44","WebSocket 连接请求已发送")},fail:e=>{t("error","at utils/socket.js:47","WebSocket 连接失败:",e),this.handleError(e)}}),this.initEventHandlers()}catch(a){this.handleError(a)}}initEventHandlers(){this.ws&&(this.ws.onOpen((e=>{var a,n,o,l;t("log","at utils/socket.js:74","WebSocket 已连接"),this.reconnectAttempts>0&&(null==(n=(a=this.options).onReconnect)||n.call(a)),null==(l=(o=this.options).onOpen)||l.call(o,e),this.reconnectAttempts=0})),this.ws.onMessage((e=>{try{const a=JSON.parse(e.data);t("log","at utils/socket.js:87","收到了返回消息:",a),this.handleMessage(a)}catch(a){t("error","at utils/socket.js:91","消息解析失败:",a),uni.setStorageSync("currentSessionId",e.data.task_call_id)}})),this.ws.onError((e=>{t("error","at utils/socket.js:96","WebSocket 错误:",e),this.handleError(e)})),this.ws.onClose((e=>{var a,n;t("log","at utils/socket.js:100","WebSocket 已关闭:",e.code,e.reason),null==(n=(a=this.options).onClose)||n.call(a,e),this.stopHeartbeat(),!this.isManualClose&&this.reconnectAttempts<this.maxReconnectAttempts&&this.reconnect()})))}handleMessage(e){var a,n;null==(n=(a=this.options).onMessage)||n.call(a,e);const o=e.type;if("auth_ok"!==o)return"auth_fail"===o?("pc offline"===(null==e?void 0:e.reason)&&t("log","at utils/socket.js:169","pc端不在线不可聊天"),this.isManualClose=!0,void this.close()):void 0;t("log","at utils/socket.js:162","认证成功socket连接成功")}send(e){return new Promise(((a,n)=>{if(!this.isConnected())return void n(new Error("WebSocket 未连接"));const o=JSON.stringify(e);t("log","at utils/socket.js:199","发送的消息是:",o),this.ws.send({data:o,success:()=>a(),fail:e=>{t("error","at utils/socket.js:207","发送消息失败:",e),n(e)}})}))}reconnect(){this.reconnectTimer||(this.reconnectAttempts++,t("log","at utils/socket.js:233",`尝试重连 (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`),this.reconnectTimer=setTimeout((()=>{this.reconnectTimer=null,this.isManualClose||this.connect(this.options)}),this.reconnectDelay*this.reconnectAttempts))}startHeartbeat(){this.stopHeartbeat(),this.heartbeatTimer=setInterval((()=>{this.isConnected()?this.send({ws_event:"ping"}).catch((()=>{t("log","at utils/socket.js:255","心跳发送失败,准备重连"),this.reconnectTimer||this.isManualClose||this.reconnect()})):!this.isManualClose&&this.reconnectAttempts<this.maxReconnectAttempts&&this.reconnect()}),3e4)}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}handleError(e){var a,n;t("error","at utils/socket.js:283","WebSocket 错误处理:",JSON.stringify(e)),null==(n=(a=this.options).onError)||n.call(a,e)}isConnected(){return!!this.ws&&1===this.ws.readyState}getReadyState(){return this.ws?this.ws.readyState:3}close(){if(t("log","at utils/socket.js:319","手动关闭 WebSocket 连接"),this.isManualClose=!0,this.stopHeartbeat(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws){this.ws.onOpen&&this.ws.onOpen(null),this.ws.onMessage&&this.ws.onMessage(null),this.ws.onError&&this.ws.onError(null),this.ws.onClose&&this.ws.onClose(null);try{this.ws.close({success:()=>t("log","at utils/socket.js:341","连接已关闭"),fail:e=>t("error","at utils/socket.js:342","关闭失败:",e)})}catch(e){t("error","at utils/socket.js:350","关闭连接出错:",e)}this.ws=null}this.reconnectAttempts=0}updateOptions(e){this.options={...this.options,...e}}},J=W("socket",(()=>{const a=e.ref("disconnected"),n=e.ref([]),o=e.ref(""),l=e.ref(!1),s=e.ref({token:"",conversationId:""});e.ref("");const c=e.ref([]),i=e.ref(20),r=e.ref(""),u=e.computed((()=>"connected"===a.value)),d=e.computed((()=>"connecting"===a.value)),m=e.computed((()=>"disconnected"===a.value)),v=e.computed((()=>"error"===a.value)),p=e.computed((()=>n.value[n.value.length-1]));function f(e,a){const n=new Date,o=`${n.getHours().toString().padStart(2,"0")}:${n.getMinutes().toString().padStart(2,"0")}:${n.getSeconds().toString().padStart(2,"0")}`;c.value.push({type:e,connect:a,time:o}),c.value.length>i.value&&(c.value=c.value.slice(-i.value)),t("log","at stores/socket.js:54",`[${e.toUpperCase()}] ${a}`)}function h(){a.value="connected",f("success","连接成功!发送auth"),t("log","at stores/socket.js:117","连接成功!发送auth"),s.value.token,R.send({type:"auth",access_token:s.value.token})}function g(){"disconnected"!==a.value&&(a.value="disconnected",f("warn","连接已断开"))}function w(e){f("error",`Socket错误: ${JSON.stringify(e)}`),a.value="error"}function k(e){a.value="connecting",f("warn",`重连中... (${e}/5)`)}function y(e){f("receive",`收到: ${JSON.stringify(e)}`);const{type:a,conversation_id:n,message_id:s,data:c}=e||{};switch(t("log","at stores/socket.js:162",`[handleMessage] type = ${a}, data = ${JSON.stringify(c)}`),a){case"auth_ok":f("success","连接成功");break;case"auth_fail":l.value=!1,r.value=(null==c?void 0:c.reason)||(null==e?void 0:e.reason)||"unknown",f("error",`认证失败: ${r.value}`);break;case"chat_ack":f("warn","AI成功收到用户发送的消息");break;case"render":f("warn","AI正在回复信息"),function(e){if("exit"===e)return t("log","at stores/socket.js:224","ai结束思考"),void(l.value=!1);if(!e||"object"!=typeof e)return;if("event_callback"===e.cmd&&"中断成功"===e.info)return t("log","at stores/socket.js:234","后端确认中断成功"),f("warn",`中断确认: ${e.info}`),void(l.value=!1);const{role:a,chunk:n,message_role:s,meaasge_uuid:c,message_type:i,task_call_id:r}=e;l.value||!n&&"assistant"!==s||(t("log","at stores/socket.js:251","ai开始思考"),o.value="",l.value=!0);n&&(o.value+=n,l.value||(t("log","at stores/socket.js:260","修改状态为开始思考"),l.value=!0))}(c);break;case"pc_offline":f("warn","PC 端已离线");break;default:f("info",`未知事件类型: ${a}`)}}return{connectionStatus:a,messageString:o,isThinking:l,logs:c,config:s,authFailReason:r,isConnected:u,isConnecting:d,isDisconnected:m,isError:v,lastMessage:p,connect:function(e={}){n.value=[],o.value="",s.value={...s.value,...e},f("info",`准备连接WebSocket。Token:${s.value.token||"未设置"}。ConversationId: ${s.value.conversationId||"未设置"}`),s.value.token&&s.value.conversationId?(a.value="connecting",R.connect({token:s.value.token,conversationId:s.value.conversationId,onMessage:y,onError:w,onOpen:h,onClose:g,onReconnect:k}),setTimeout((()=>{"connecting"===a.value&&(a.value="error",f("error","连接超时(10s)"))}),1e4)):f("error","Token和ConversationId都不能为空")},disconnect:function(){R.close(),a.value="disconnected",f("warn","已主动断开连接")},send:async function(e){if(t("log","at stores/socket.js:98","检查到要发生消息为:",e),!u.value)throw f("error","发送失败: 连接未建立"),new Error("连接未建立");try{return await R.send(e),f("send","string"==typeof e?e:JSON.stringify(e)),!0}catch(a){throw f("error",`发送失败: ${a.message||a}`),a}},addLog:f,clearLogs:function(){c.value=[]},getStatusText:function(){return{connecting:"连接中",connected:"已连接",disconnected:"未连接",error:"连接错误"}[a.value]||"未知状态"}}})),H="http://chat.yuxindazhineng.com",G=async e=>new Promise(((a,n)=>{uni.request({url:`${H}/api/chatList/getChatFriend`,method:"POST",header:{"Content-Type":"application/json"},data:{size:500,current:1,sendId:e},success:e=>{var o;if(200===e.statusCode){const l=e.data;if(t("log","at utils/friend-api.js:20","获取到的好友列表消息",l),0===(null==l?void 0:l.code)||"成功"===(null==l?void 0:l.msg)){const e=null==(o=l.data)?void 0:o.records;if(e.length>0){const t=e[0].receiver;t&&uni.setStorageSync("receiverId",t)}a(e)}else{const t=e.data.error||"获取好友列表出错啦";n(t)}}else n(`获取好友列表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),K=async e=>new Promise(((t,a)=>{uni.request({url:`${H}/api/group/getGroup`,method:"POST",header:{"Content-Type":"application/json"},data:{size:500,current:1,contactId:e},success:e=>{var n;if(200===e.statusCode){const o=e.data;if(0===(null==o?void 0:o.code)||"成功"===(null==o?void 0:o.msg)){const e=null==(n=o.data)?void 0:n.records;t(e)}else{const t=e.data.error||"获取群聊列表出错啦";a(t)}}else a(`获取群聊列表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})),X=e=>new Promise(((t,a)=>{uni.uploadFile({url:`${H}/api/file/upload`,filePath:e,name:"file",success:e=>{const n=JSON.parse(e.data);0===n.code?t(n.data):a(n.msg||"上传失败")},fail:e=>{a(e.errMsg||"网络错误")}})}));const Y=new class{constructor(){this.ws=null,this.url="wss://wss.yuxindazhineng.com/ws",this.options={token:"",UserId:"",onMessage:null,onError:null,onReconnect:null,onOpen:null,onClose:null},this.reconnectAttempts=0,this.maxReconnectAttempts=5,this.reconnectDelay=3e3,this.reconnectTimer=null,this.heartbeatTimer=null,this.isManualClose=!1}connect(e={}){this.options={...this.options,...e},this.isManualClose=!1,this.ws&&(t("log","at utils/friend-socket.js:37","关闭现有连接"),this.close());try{this.ws=uni.connectSocket({url:this.url,success:()=>{t("log","at utils/friend-socket.js:45","WebSocket 连接请求已发送")},fail:e=>{t("error","at utils/friend-socket.js:48","WebSocket 连接失败:",e),this.handleError(e)}}),this.initEventHandlers()}catch(a){this.handleError(a)}}initEventHandlers(){this.ws&&(this.ws.onOpen((e=>{var a,n,o,l;t("log","at utils/friend-socket.js:75","WebSocket 已连接"),this.reconnectAttempts>0&&(null==(n=(a=this.options).onReconnect)||n.call(a)),null==(l=(o=this.options).onOpen)||l.call(o,e),this.reconnectAttempts=0})),this.ws.onMessage((e=>{try{const a=JSON.parse(e.data);t("log","at utils/friend-socket.js:88","收到了返回消息:",a),this.handleMessage(a)}catch(a){t("error","at utils/friend-socket.js:91","消息解析失败:",a),uni.setStorageSync("currentSessionId",e.data.task_call_id)}})),this.ws.onError((e=>{t("error","at utils/friend-socket.js:96","WebSocket 错误:",JSON.stringify(e)),this.handleError(e)})),this.ws.onClose((e=>{var a,n;t("log","at utils/friend-socket.js:100","WebSocket 已关闭:",e.code,e.reason),null==(n=(a=this.options).onClose)||n.call(a,e),!this.isManualClose&&this.reconnectAttempts<this.maxReconnectAttempts&&this.reconnect()})))}handleMessage(e){var t,a;null==(a=(t=this.options).onMessage)||a.call(t,e)}send(e){return new Promise(((a,n)=>{if(!this.isConnected())return void n(new Error("WebSocket 未连接"));const o=JSON.stringify(e);t("log","at utils/friend-socket.js:171","发送的消息是:",o),this.ws.send({data:o,success:()=>a(),fail:e=>{t("error","at utils/friend-socket.js:179","发送消息失败:",e),n(e)}})}))}reconnect(){this.reconnectTimer||(this.reconnectAttempts++,t("log","at utils/friend-socket.js:205",`尝试重连 (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`),this.reconnectTimer=setTimeout((()=>{this.reconnectTimer=null,this.isManualClose||this.connect(this.options)}),this.reconnectDelay*this.reconnectAttempts))}startHeartbeat(){this.stopHeartbeat(),this.heartbeatTimer=setInterval((()=>{this.isConnected()?this.send({ws_event:"ping"}).catch((()=>{t("log","at utils/friend-socket.js:227","心跳发送失败,准备重连"),this.reconnectTimer||this.isManualClose||this.reconnect()})):!this.isManualClose&&this.reconnectAttempts<this.maxReconnectAttempts&&this.reconnect()}),3e4)}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}handleError(e){var a,n;t("error","at utils/friend-socket.js:255","WebSocket 错误处理:",JSON.stringify(e)),null==(n=(a=this.options).onError)||n.call(a,e)}isConnected(){return!!this.ws&&1===this.ws.readyState}getReadyState(){return this.ws?this.ws.readyState:3}close(){if(t("log","at utils/friend-socket.js:291","手动关闭 WebSocket 连接"),this.isManualClose=!0,this.stopHeartbeat(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws){this.ws.onOpen((()=>{})),this.ws.onMessage((()=>{})),this.ws.onError((()=>{})),this.ws.onClose((()=>{}));try{this.ws.close({success:()=>t("log","at utils/friend-socket.js:314","连接已关闭"),fail:e=>t("error","at utils/friend-socket.js:315","关闭失败:",e)})}catch(e){t("error","at utils/friend-socket.js:323","关闭连接出错:",e)}this.ws=null}this.reconnectAttempts=0}updateOptions(e){this.options={...this.options,...e}}},Q=W("friendSocket",(()=>{const a=e.ref("disconnected"),n=e.ref([]),o=e.ref(""),l=e.ref({token:"",UserId:""});e.ref("");const s=e.ref(null),c=e.ref(null),i=e.ref(!1),r=e.ref([]),u=e.ref(20),d=e.computed((()=>"connected"===a.value)),m=e.computed((()=>"connecting"===a.value)),v=e.computed((()=>"disconnected"===a.value)),p=e.computed((()=>"error"===a.value)),f=e.computed((()=>n.value[n.value.length-1]));function h(e,a){const n=new Date,o=`${n.getHours().toString().padStart(2,"0")}:${n.getMinutes().toString().padStart(2,"0")}:${n.getSeconds().toString().padStart(2,"0")}`;r.value.push({type:e,connect:a,time:o}),r.value.length>u.value&&(r.value=r.value.slice(-u.value)),t("log","at stores/friend-socket.js:57",`[${e.toUpperCase()}] ${a}`)}function g(){a.value="connected",h("success","连接成功!"),async function(){const e={version:"1.1",body:{command:7,sender:b(),avatar:"",sessionId:"",message:"",callBackMessage:!1}};try{await Y.send(e),h("send","string"==typeof e?e:JSON.stringify(e))}catch(t){throw h("error",`发送验证失败: ${t.message||t}`),t}}()}function w(){"disconnected"!==a.value&&(a.value="disconnected",h("warn","连接已断开"))}function k(e){h("error",`Socket错误: ${JSON.stringify(e)}`),a.value="error"}function y(e){a.value="connecting",h("warn",`重连中... (${e}/5)`)}function E(e){h("receive",`收到: ${JSON.stringify(e)}`);const a=e.body||e,{callBackMessage:n,groupName:o,command:l,groupId:r}=a||{};switch(l){case 3:s.value=l,c.value=r;break;case 7:s.value=l;break;case 1:t("log","at stores/friend-socket.js:199","有好友消息"),i.value=!0;break;case 9:t("log","at stores/friend-socket.js:204","群消息发送成功/有新群消息"),i.value=!0;break;default:h("info","未知事件类型")}}return{connectionStatus:a,messageString:o,logs:r,config:l,command:s,groupId:c,MessageReceived:i,isConnected:d,isConnecting:m,isDisconnected:v,isError:p,lastMessage:f,connect:function(e={}){n.value=[],o.value="",l.value={...l.value,...e},h("info",`准备连接FriendsWebSocket。Token:${l.value.token||"未设置"}。UserId: ${l.value.UserId||"未设置"}`),l.value.token&&l.value.UserId?(a.value="connecting",Y.connect({token:l.value.token,UserId:l.value.UserId,onMessage:E,onError:k,onOpen:g,onClose:w,onReconnect:y}),setTimeout((()=>{"connecting"===a.value&&(a.value="error",h("error","连接超时(10s)"))}),1e4)):h("error","Token和UserId都不能为空")},disconnect:function(){Y.close(),a.value="disconnected",h("warn","已主动断开连接")},send:async function(e){if(!d.value)throw h("error","发送失败: 连接未建立"),new Error("连接未建立");try{return await Y.send(e),h("send","string"==typeof e?e:JSON.stringify(e)),!0}catch(t){throw h("error",`发送失败: ${t.message||t}`),t}},addLog:h,clearLogs:function(){r.value=[]},getStatusText:function(){return{connecting:"连接中",connected:"已连接",disconnected:"未连接",error:"连接错误"}[a.value]||"未知状态"}}})),{registerUTSInterface:Z,initUTSProxyClass:ee,initUTSProxyFunction:te,initUTSPackageName:ae,initUTSIndexClassName:ne,initUTSClassName:oe}=uni,le="limeChooseFile",se=te(!1,{moduleName:"lime-choose-file 文件选择",moduleType:"",errMsg:"",main:!0,package:ae(le,true),class:ne(le,true),name:"chooseFileByJs",keepAlive:!1,params:[{name:"options",type:"UTSSDKModulesLimeChooseFileChooseFileOptionJSONObject"}],return:""}),ce=g({__name:"Chat",setup(n){const c=Q(),u=()=>{c.isConnected||(le.value&&ce.value?c.connect({token:le.value,UserId:ce.value}):t("warn","at pages/Chat/Chat.vue:314","Token或UserId未准备好"))},d=J(),m=e.ref(0),v=(e,t)=>{let a='<table border="1" style="border-collapse:collapse;width:100%;margin:8px 0">';return e.forEach(((e,n)=>{const o=0===n?"th":"td",l=e.split("|").filter((e=>""!==e.trim()));a+="<tr>",l.forEach(((e,n)=>{const l=t[n]?` style="text-align:${t[n]}"`:"";a+=`<${o}${l} style="padding:6px 10px;border:1px solid #ddd">${e.trim()}</${o}>`})),a+="</tr>"})),a+="</table>",a},p=e=>{if(!e)return"";e=f(e);try{e=(e=>{const t=e.split("\n");let a=[],n=!1,o=[],l=[];for(let s=0;s<t.length;s++){const e=t[s].trim();if(/^\|.+|$/.test(e)&&e.includes("|")){if(/^\|[\s\-:]+\|[\s\-:|]+\|$/.test(e)){l=e.split("|").filter((e=>e.trim())).map((e=>e.trim().startsWith(":")&&e.trim().endsWith(":")?"center":e.trim().endsWith(":")?"right":"left"));continue}o.push(e),n=!0}else n&&o.length>0&&(a.push(v(o,l)),o=[],l=[],n=!1),a.push(e)}return n&&o.length>0&&a.push(v(o,l)),a.join("\n")})(e);return x(e)}catch(a){return t("error","at pages/Chat/Chat.vue:413","解析失败",a),e}},f=e=>{const t=/<script\b[^>]*>([\s\S]*?)<\/script>/i.test(e),a=/<(form|input|select|textarea|button)\b[^>]*>/i.test(e);let n=e.replace(/<script\b[^>]*>([\s\S]*?)<\/script>/gi,"");if(n=n.replace(/<\/?minimax:tool_call>/g,(e=>e.replace(/</g,"&lt;").replace(/>/g,"&gt;"))).replace(/<\|[\w]+?\|>/g,(e=>e.replace(/</g,"&lt;").replace(/>/g,"&gt;"))),t||a){return'<h2 style="color: red; font-weight: bold;">表单仅预览,不可操作!!!</h2>'+n}return n},h=e=>{uni.previewImage({urls:[e]})},g=e=>{uni.downloadFile({url:e,success:e=>{uni.openDocument({filePath:e.tempFilePath,showMenu:!0})}})},w=e=>e?e<1?(1024*e).toFixed(0)+"KB":e.toFixed(2)+"MB":"0KB",k=e=>{if(!e||"string"!=typeof e)return{textContent:e||"",files:[]};const a=e.match(/\[文件信息:(\[.*?\])\]/);if(!a)return{textContent:e,files:[]};try{const t=JSON.parse(a[1]);return{textContent:e.replace(a[0],"").trim(),files:t}}catch(n){return t("error","at pages/Chat/Chat.vue:490","解析文件信息失败:",n),{textContent:e,files:[]}}},N=async()=>{try{const e="0123456789abcdef";let t="";for(let s=0;s<24;s++)t+=e[Math.floor(Math.random()*e.length)];const a=await(async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/create_workspace`,method:"POST",data:{access_token:e,name:t},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data.workspace_id;if(t)a(t);else{const t=e.data.error||"创建工作区id出错啦";n(t)}}else n(`创建工作区id失败${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})))(le.value,t);if(!a)return void uni.showToast({title:"工作区创建失败",icon:"none"});const n=uni.getStorageSync("yxd_login_info");let o="";n&&(o=n.username||"");const l=await(async(e,t,a,n)=>new Promise(((o,l)=>{uni.request({url:`${s}/create_conversation`,method:"POST",data:{access_token:e,workspace_id:t,title:a,sender:n},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data.conversation_id;if(t)o(t);else{const t=e.data.error||"创建新对话id出错啦";l(t)}}else l(`创建新对话失败:${e.statusCode}`)}})})))(le.value,a,"新会话",o);if(!l)return void uni.showToast({title:"新会话创建失败",icon:"none"});ue()}catch(e){t("error","at pages/Chat/Chat.vue:535","新建普通会话失败:",e),uni.showToast({title:"创建会话失败,请重试",icon:"none"})}},b=e.ref(!1),_=()=>{b.value=!1},B=e.ref(!1),S=()=>{B.value=!B.value},T=()=>{oe.value&&uni.setStorageSync("currentSessionId",oe.value),uni.navigateTo({url:"/pages/WorkSpace/WorkSpace"})},D=()=>{oe.value&&uni.setStorageSync("currentSessionId",oe.value),uni.navigateTo({url:"/pages/CloudDatabase/CloudDatabase"})},P=()=>{uni.reLaunch({url:"/pages/Login/Login"})},j=e.ref([]),$=e.ref([]),L=()=>new Promise(((t,a)=>{if(d.isConnected)return t();const n=e.watch((()=>d.isConnected),(e=>{e&&(n(),t())})),o=e.watch((()=>d.connectionStatus),(e=>{"error"===e&&(n(),o(),a(new Error("连接失败")))}));d.connect({token:le.value,conversationId:oe.value})})),M=e.ref(!1),I=e.ref(!1),z=e.ref(!1),F=e.ref([]),O=e.ref(null),A=e.ref(!1),U=e.ref(""),q=e.ref([]),W=e=>{U.value=e.content||"",q.value=(e=>{const t=e.match(/https?:\/\/[^\s<>"{}|\\^`[\]]+/gi);return t?[...new Set(t)]:[]})(U.value),A.value=!0},R=()=>{A.value=!1,U.value="",q.value=[]},Y=async()=>{c.isConnecting||await u();const e=uni.getStorageSync("receiverId"),t=F.value.length>0,a={command:1,sender:ce.value,receiver:e,avatar:"",sessionId:oe.value,message:ae.value,callBackMessage:!1};t&&(a.contentType=1,a.uploadVos=F.value);const n={version:"1.1",body:a};c.send(n);const o={sender:ce.value,receiver:e,content:ae.value,taskId:null,avatar:null,createTime:"",messageType:"null",contentJson:t?JSON.stringify(F.value):"null"};ge.value=[...ge.value,o],ae.value="",F.value=[],setTimeout((()=>{Ce()}),1e3)},Z=async()=>{c.isConnecting||await u();const e=F.value.length>0,t={command:9,groupId:oe.value,message:ae.value||"",callBackMessage:!e,messageType:e?1:0,sender:ce.value};e&&(t.uploadVos=F.value);const a={version:"1.1",body:t};c.send(a);const n={id:ge.value.length+1,message:ae.value,messageType:e?1:0,groupId:null,createTime:"",contentJson:e?JSON.stringify(F.value):"",sender:ce.value};ge.value=[...ge.value,n],ae.value="",F.value=[],setTimeout((()=>{Ne()}),1e3)},ee=async()=>{try{await L();let e=ae.value;if(F.value.length){const t=JSON.stringify(F.value);e=e?`${e}\n[文件信息:${t}]`:`[文件信息:${t}]`}const t={type:"chat",conversation_id:oe.value,content:e};d.send(t),M.value=!0,I.value=!0,ge.value=[...ge.value,{role:"user",content:e}],O.value="streaming-"+Date.now(),ge.value=[...ge.value,{role:"assistant",content:"",_streaming:!0,_id:O.value}],ae.value="",F.value=[],Ve()}catch(e){M.value=!1,uni.showToast({title:`用户发送消息失败${e}`,icon:"error"})}},te=async()=>{t("log","at pages/Chat/Chat.vue:895","中断对话 - 当前会话ID:",oe.value);try{await d.send({type:"stop",conversation_id:oe.value}),t("log","at pages/Chat/Chat.vue:901","中断指令已发送成功")}catch(e){t("error","at pages/Chat/Chat.vue:903","中断指令发送失败:",e)}O.value&&(ge.value=ge.value.filter((e=>e._id!==O.value)),O.value=null),M.value=!1,d.isThinking=!1,I.value=!1,ae.value="",F.value=[],uni.showToast({title:"已中断",icon:"none",duration:1500})};e.watch((()=>d.isThinking),((e,a)=>{if(t("log","at pages/Chat/Chat.vue:927","isThinking 变化:",a,"→",e,"messageString:",d.messageString),!a&&e)return t("log","at pages/Chat/Chat.vue:930","AI开始回复跨设备同步锁定输入框"),M.value=!0,void(O.value||(O.value="streaming-"+Date.now(),ge.value=[...ge.value,{role:"assistant",content:"",_streaming:!0,_id:O.value}]));a&&!e&&(t("log","at pages/Chat/Chat.vue:946","AI回复结束正常/中断),解锁并刷新消息列表"),O.value&&(ge.value=ge.value.filter((e=>e._id!==O.value)),O.value=null),Ee(),M.value=!1,I.value=!1,ae.value="",F.value=[])})),e.watch((()=>d.authFailReason),(t=>{"pc offline"===t&&(M.value=!1,d.authFailReason="",e.nextTick((()=>{uni.showModal({title:"提示",content:"PC端不在线不可聊天",showCancel:!1,confirmText:"知道了"})})))})),e.watch((()=>d.messageString),(e=>{if(!O.value||!d.isThinking)return;const t=ge.value.findIndex((e=>e._id===O.value));if(t>=0){const a={...ge.value[t],content:e};ge.value.splice(t,1,a),Ve()}}));const ae=e.ref(""),ne=e.ref([]),oe=e.ref(""),le=e.ref(""),ce=e.ref(""),ie=e.ref(""),re=e.ref(null),ue=async()=>{try{le.value=E(),t("log","at pages/Chat/Chat.vue:1020","token:",le.value),ne.value=await(async e=>new Promise(((t,a)=>{uni.request({url:`${s}/get_user_conversations`,method:"POST",data:{access_token:e},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const a=e.data.conversations;t(a)}else a(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})))(le.value)||[];const e=C();e&&ne.value.some((t=>t._id===e))?oe.value=e:ne.value.length>0?oe.value=ne.value[0]._id:oe.value="",t("log","at pages/Chat/Chat.vue:1032","保存会话id",oe.value),uni.setStorageSync("currentSessionId",oe.value)}catch(e){uni.showToast({title:`获取会话列表失败${e}`,icon:"error"})}},de=e.ref([]),me=e=>{if(!e)return null;const t=de.value.find((t=>t.receiver===e));return(null==t?void 0:t.avatar)||null},ve=async e=>{if(!(null==e?void 0:e.length))return[];try{const t=e.map((e=>e.receiver)),a=await r(le.value,t),n=new Map(a.map((e=>[e.user_id,e]))||[]);return e.map((e=>{const t=n.get(e.receiver);return{...e,avatar:(null==t?void 0:t.avatar)||null}}))}catch(a){return t("error","at pages/Chat/Chat.vue:1088","获取好友头像失败",a),e}},pe=e.ref([]),fe=e.ref([]),he=e=>{if(!e)return null;const t=fe.value.find((t=>t.groupContactId===e));return(null==t?void 0:t.avatar)||null},ge=e.ref([]),we=e.ref(""),ke=e.ref(!1);e.ref(!1),e.ref(1);const ye=e.computed((()=>ge.value)),Ee=async()=>{try{ge.value=await(async(e,a)=>new Promise(((n,o)=>{uni.request({url:`${s}/get_conversation_messages`,method:"POST",data:{access_token:e,login_type:"phone",conversation_id:a},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const a=e.data;if(a){t("log","at utils/cloud-api.js:93","工作区id为",a.workspace_id||"(无)"),a.workspace_id&&uni.setStorageSync("workspace_id",a.workspace_id);const e=(a.messages||[]).filter((e=>"tool"!==e.role));n(e)}else{const t=e.data.error||"获取消息出错啦";o(t)}}else o(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(le.value,oe.value)||[],Ve()}catch(e){uni.showToast({title:`获取ai会话内容失败${e}`,icon:"none"})}},Ce=async()=>{try{ge.value=await(async(e,a=1)=>(t("log","at utils/friend-api.js:88","请求的好友消息id",e),new Promise(((t,n)=>{uni.request({url:`${H}/api/message/list`,method:"POST",data:{sessionId:e,size:100,current:a,beginTime:"",endTime:""},header:{"Content-Type":"application/json"},success:e=>{var a;if(200===e.statusCode){const o=e.data;if(0===o.code){const e=((null==(a=null==o?void 0:o.data)?void 0:a.records)||[]).reverse();t(e)}else{const t=e.data.error||"获取好友消息出错啦";n(t)}}else n(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})}))))(oe.value)||[],t("log","at pages/Chat/Chat.vue:1181","好友消息:",JSON.stringify(ge.value)),Ve()}catch(e){uni.showToast({title:`获取好友会话消息失败${e}`,icon:"none"})}},Ne=async()=>{try{ge.value=await(async(e,a=1)=>(t("log","at utils/friend-api.js:134","请求的群聊消息id",e),new Promise(((n,o)=>{uni.request({url:`${H}/api/group/getGroupList`,method:"POST",data:{current:a,size:100,groupId:e,beginTime:"",endTime:""},header:{"Content-Type":"application/json"},success:e=>{var a;if(200===e.statusCode){const l=e.data;if(t("log","at utils/friend-api.js:152","获取到的群聊信息:",l),0===l.code){const e=((null==(a=null==l?void 0:l.data)?void 0:a.records)||[]).reverse();n(e)}else{const t=e.data.error||"获取群聊消息出错啦";o(t)}}else o(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})}))))(oe.value)||[],t("log","at pages/Chat/Chat.vue:1194","群聊消息:",ge.value);const e=await(async e=>new Promise(((t,a)=>{uni.request({url:`${H}/api/group/getGroupMemberList`,method:"POST",header:{"Content-Type":"application/json"},data:{groupId:e,current:1,size:100},success:e=>{if(200===e.statusCode){const n=e.data;if(0===n.code){const e=n.data.records;t(e)}else{const t=e.data.error||"获取群成员出错啦";a(t)}}else a(`请求群成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})))(oe.value);t("log","at pages/Chat/Chat.vue:1197","获取到的群成员列表:",e),e&&e.length?(fe.value=await(async e=>{if(!(null==e?void 0:e.length))return[];try{const a=e.map((e=>e.groupContactId));t("log","at pages/Chat/Chat.vue:1117","请求头像的ID列表:",a);const n=await r(le.value,a);t("log","at pages/Chat/Chat.vue:1119","头像接口返回数据:",n);const o=new Map(n.map((e=>[e.user_id,e]))||[]);return t("log","at pages/Chat/Chat.vue:1122","userMap的keys:",Array.from(o.keys())),e.map((e=>{const a=e.groupContactId,n=o.get(a);return t("log","at pages/Chat/Chat.vue:1127",`查找 ${a} 的头像:`,n),{...e,avatar:(null==n?void 0:n.avatar)||null}}))}catch(a){return t("error","at pages/Chat/Chat.vue:1134","获取群成员头像失败",a),e}})(e),t("log","at pages/Chat/Chat.vue:1200","群成员列表(带头像):",fe.value)):fe.value=[],Ve()}catch(e){uni.showToast({title:`获取群聊会话失败${e}`,icon:"none"})}},be=e=>{},Ve=async()=>{await e.nextTick(),ye.value.length>0&&(ke.value=!ke.value,we.value=ke.value?"chat-bottom-a":"chat-bottom-b")};return e.watch((()=>c.MessageReceived),(e=>{if(t("log","at pages/Chat/Chat.vue:1245","收到了好友消息"),e)switch(t("log","at pages/Chat/Chat.vue:1247","ChatType:",m.value),m.value){case 0:Ee(),c.MessageReceived=!1;break;case 1:Ce(),c.MessageReceived=!1;break;case 2:Ne(),c.MessageReceived=!1;break;default:t("log","at pages/Chat/Chat.vue:1263","default 分支"),c.MessageReceived=!1}}),{immediate:!0}),e.watch(oe,(e=>{if(e)switch(uni.setStorageSync("currentSessionId",oe.value),m.value){case 0:Ee(),d.disconnect(),L();break;case 1:Ce();break;case 2:Ne();break;default:Ee()}}),{immediate:!0}),e.onMounted((()=>{})),o((async()=>{await(async()=>{try{le.value=E(),re.value=await i(le.value),ce.value=re.value._id,ie.value=re.value.avatar||"",t("log","at pages/Chat/Chat.vue:1010","用户信息已加载:",ce.value,ie.value)}catch(e){t("error","at pages/Chat/Chat.vue:1012","获取用户信息失败:",e)}})();const e=uni.getStorageSync("chatType");m.value=e;const a=C();a&&(oe.value=a),0===e?(await ue(),oe.value&&Ee(),le.value&&oe.value&&!d.isConnected&&L()):1===e?(await(async()=>{try{t("log","at pages/Chat/Chat.vue:1047","开始获取好友列表");const e=await G(ce.value);t("log","at pages/Chat/Chat.vue:1050","friendList:",e),e&&e.length?de.value=await ve(e):(de.value=[],t("log","at pages/Chat/Chat.vue:1055","好友列表为空"))}catch(e){t("error","at pages/Chat/Chat.vue:1058","获取好友列表失败:",e),de.value=[]}finally{ne.value=de.value}})(),Ce(),u()):2===e&&(await(async()=>{try{t("log","at pages/Chat/Chat.vue:1098","开始获取群聊列表"),pe.value=await K(ce.value)}catch(e){t("error","at pages/Chat/Chat.vue:1103","获取群聊列表失败:",e),pe.value=[]}finally{ne.value=pe.value}})(),await u(),await Ne())})),l((()=>{d.disconnect()})),(n,o)=>{const l=a(e.resolveDynamicComponent("uni-icons"),y);return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),b.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"ncd-overlay",onClick:_},[e.createElementVNode("view",{class:"ncd-card",onClick:o[0]||(o[0]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"ncd-header"},[e.createElementVNode("view",{class:"ncd-title-eng"},[e.createElementVNode("text",null,"NEW")]),e.createElementVNode("text",{class:"ncd-title-zh"},"创建对话"),e.createVNode(l,{type:"closeempty",color:"#ff0000",size:"24",onClick:_})]),e.createElementVNode("text",null,"选择对话类型,开启全新会话体验"),e.createElementVNode("view",{class:"ncd-options"},[e.createElementVNode("view",{class:"ncd-option ncd-normal"},[e.createElementVNode("view",{class:"ncd-opt-icon"},[e.createVNode(l,{type:"chat",color:"#000000",size:"30"})]),e.createElementVNode("view",{class:"ncd-opt-title",onClick:N},[e.createElementVNode("view",{class:"ncd-opt-title-1"},"普通会话"),e.createElementVNode("view",{class:"ncd-opt-title-2"},"与AI自由对话,探索任何话题")]),e.createVNode(l,{type:"arrow-right",class:"arrow-right-style"})]),e.createElementVNode("view",{class:"ncd-option ncd-intelligence"},[e.createElementVNode("view",{class:"ncd-opt-icon"},[e.createVNode(l,{type:"star",color:"#ffffff",size:"30"})]),e.createElementVNode("view",{class:"ncd-opt-title"},[e.createElementVNode("view",{class:"ncd-opt-title-1"},"智能体会话"),e.createElementVNode("view",{class:"ncd-opt-title-2"},"选择专属智能体,获得精准专业服务")]),e.createVNode(l,{type:"arrow-right",class:"arrow-right-style"})])])])])):e.createCommentVNode("",!0),A.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"ncd-overlay",onClick:R},[e.createElementVNode("view",{class:"ncd-card message-detail-card",onClick:o[1]||(o[1]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"ncd-header"},[e.createElementVNode("text",{class:"ncd-title-zh"},"消息详情"),e.createVNode(l,{type:"closeempty",color:"#ff0000",size:"24",onClick:R})]),e.createElementVNode("scroll-view",{class:"message-detail-content","scroll-y":""},[e.createElementVNode("text",null,e.toDisplayString(U.value),1),q.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"detail-links-section"},[e.createElementVNode("view",{class:"detail-links-title"},"链接 ("+e.toDisplayString(q.value.length)+")",1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(q.value,((t,a)=>(e.openBlock(),e.createElementBlock("view",{key:a,class:"detail-link-item",onClick:e=>{return a=t,void plus.runtime.openURL(a);var a}},[e.createElementVNode("text",{class:"link-text"},e.toDisplayString(t),1)],8,["onClick"])))),128))])):e.createCommentVNode("",!0)])])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"chat-page page-container"},[B.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"mask",onClick:S})):e.createCommentVNode("",!0),e.createElementVNode("view",{class:e.normalizeClass(["chat-sidebar",{"sidebar-show":B.value}])},[e.createVNode(V,{chatList:ne.value,showNewChatModal:b.value,"onUpdate:showNewChatModal":o[2]||(o[2]=e=>b.value=e),currentSessionId:oe.value,"onUpdate:currentSessionId":o[3]||(o[3]=e=>oe.value=e),chatType:m.value,"onUpdate:chatType":o[4]||(o[4]=e=>m.value=e),onRefreshConversations:ue},null,8,["chatList","showNewChatModal","currentSessionId","chatType"])],2),e.createElementVNode("view",{class:"chat-wrapper"},[e.createElementVNode("view",{class:"chat-hearder"},[e.createElementVNode("view",{class:"chat-btn-group"},[e.createElementVNode("view",{class:"head-btn",onClick:S},[e.createElementVNode("view",{class:"iconfont icon-caidan"})]),e.createElementVNode("view",{class:"head-btn",onClick:T},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"})]),e.createElementVNode("view",{class:"head-btn",onClick:D},[e.createElementVNode("view",{class:"iconfont icon-cloud"})]),e.createElementVNode("view",{class:"head-btn log-out",onClick:P},[e.createElementVNode("view",{class:"iconfont icon-tuichu"})])])]),e.createElementVNode("view",{class:"main-chat"},[e.createElementVNode("scroll-view",{class:"chat-messages",direction:"vertical","scroll-y":"","scroll-into-view":we.value,"upper-threshold":0,"scroll-with-animation":!0,onScroll:be},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ye.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock(e.Fragment,{key:a},[0===m.value&&"tool"!==t.role?(e.openBlock(),e.createElementBlock("view",{key:0,class:e.normalizeClass(["chat-message",{"message-user":"user"===t.role}]),id:"msg-"+a},["user"===t.role?(e.openBlock(),e.createElementBlock("view",{key:0,class:e.normalizeClass(["chat-avatar",{"chat-avatar-user":"user"===t.role}])},["user"===t.role&&(null==(n=re.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:re.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"iconfont icon-yonghuziliao"}))],2)):e.createCommentVNode("",!0),t.content&&""!==String(t.content).trim()||t._streaming?(e.openBlock(),e.createElementBlock("view",{key:1,class:e.normalizeClass(["chat-content",{"chat-content-user":"user"===t.role,"chat-content-assistant":"assistant"===t.role}]),onClick:e=>W(t)},[!t._streaming||t.content&&""!==String(t.content).trim()?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"bubble-loading-dots"},[e.createElementVNode("view",{class:"bubble-dot"}),e.createElementVNode("view",{class:"bubble-dot"}),e.createElementVNode("view",{class:"bubble-dot"})])),k(t.content).textContent?(e.openBlock(),e.createElementBlock("view",{key:1,innerHTML:p(k(t.content).textContent)},null,8,["innerHTML"])):e.createCommentVNode("",!0),k(t.content).files.length>0?(e.openBlock(),e.createElementBlock("view",{key:2,class:"message-file-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k(t.content).files,((t,a)=>(e.openBlock(),e.createElementBlock("view",{key:a,class:"file-item"},[["jpg","jpeg","png","gif","webp","bmp"].includes(t.extendName.toLowerCase())?(e.openBlock(),e.createElementBlock("image",{key:0,src:t.url,mode:"widthFix",class:"message-image",onClick:e=>h(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>g(t.url)},[e.createElementVNode("view",{class:"file-icon"},"📄"),e.createElementVNode("view",{class:"file-name"},e.toDisplayString(t.name),1),e.createElementVNode("view",{class:"file-size"},e.toDisplayString(w(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],10,["onClick"])):e.createCommentVNode("",!0)],10,["id"])):e.createCommentVNode("",!0)],64)})),128)),1===m.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(ye.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["chat-message",{"message-user":t.sender===ce.value}]),key:a,id:"msg-"+a},[e.createElementVNode("view",{class:e.normalizeClass(["chat-avatar",{"chat-avatar-user":t.sender===ce.value}])},[t.sender===ce.value&&(null==(n=re.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:re.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):me(t.sender)?(e.openBlock(),e.createElementBlock("image",{key:1,src:me(t.sender),class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:2,class:"iconfont icon-yonghuziliao"}))],2),e.createElementVNode("view",{class:e.normalizeClass(["chat-content",{"chat-content-user":t.sender===ce.value}])},[t.content&&""!==String(t.content).trim()?(e.openBlock(),e.createElementBlock("view",{key:0,innerHTML:p(t.content)},null,8,["innerHTML"])):e.createCommentVNode("",!0),t.contentJson?(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(JSON.parse(t.contentJson),((t,a)=>(e.openBlock(),e.createElementBlock("view",{key:a,class:"file-item"},[["jpg","jpeg","png","gif","webp","bmp"].includes(t.extendName.toLowerCase())?(e.openBlock(),e.createElementBlock("image",{key:0,src:t.url,mode:"widthFix",class:"message-image",onClick:e=>h(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>g(t.url)},[e.createElementVNode("view",{class:"file-icon"},"📄"),e.createElementVNode("view",{class:"file-name"},e.toDisplayString(t.name),1),e.createElementVNode("view",{class:"file-size"},e.toDisplayString(w(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],2)],10,["id"])})),128)):e.createCommentVNode("",!0),2===m.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(ye.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["chat-message",{"message-user":t.sender===ce.value}]),key:a,id:"msg-"+a},[e.createElementVNode("view",{class:e.normalizeClass(["chat-avatar",{"chat-avatar-user":t.sender===ce.value}])},[t.sender===ce.value&&(null==(n=re.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:re.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):fe.value.length>0&&he(t.sender)?(e.openBlock(),e.createElementBlock("image",{key:1,src:he(t.sender),class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:2,class:"iconfont icon-yonghuziliao"}))],2),e.createElementVNode("view",{class:e.normalizeClass(["chat-content",{"chat-content-user":t.sender===ce.value}])},[t.message&&""!==String(t.message).trim()?(e.openBlock(),e.createElementBlock("view",{key:0,innerHTML:p(t.message)},null,8,["innerHTML"])):e.createCommentVNode("",!0),t.contentJson?(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(JSON.parse(t.contentJson),((t,a)=>(e.openBlock(),e.createElementBlock("view",{key:a,class:"file-item"},[["jpg","jpeg","png","gif","webp","bmp"].includes(t.extendName.toLowerCase())?(e.openBlock(),e.createElementBlock("image",{key:0,src:t.url,mode:"widthFix",class:"message-image",onClick:e=>h(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>g(t.url)},[e.createElementVNode("view",{class:"file-icon"},"📄"),e.createElementVNode("view",{class:"file-name"},e.toDisplayString(t.name),1),e.createElementVNode("view",{class:"file-size"},e.toDisplayString(w(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],2)],10,["id"])})),128)):e.createCommentVNode("",!0),e.createElementVNode("view",{id:"chat-bottom-a",style:{height:"1rpx"}}),e.createElementVNode("view",{id:"chat-bottom-b",style:{height:"1rpx"}})],40,["scroll-into-view"]),e.createElementVNode("view",{class:e.normalizeClass(["chat-interactive-container",{"interactive-disabled":M.value}])},[e.createElementVNode("view",{class:"chat-interactive-group"},[e.createElementVNode("view",{class:e.normalizeClass(["chat-interactive-btn",{disabled:M.value}]),onClick:o[5]||(o[5]=e=>!M.value&&(t("log","at pages/Chat/Chat.vue:584","点击了拍照上传"),void uni.chooseImage({count:1,sourceType:["camera","album"],success:e=>{const t=e.tempFiles,a=e.tempFilePaths;t.forEach(((e,t)=>{j.value.push({path:a[t],name:e.name||`photo_${Date.now()}_${t}.jpg`,size:e.size,type:"image",tempFile:e})}))},fail:e=>{t("error","at pages/Chat/Chat.vue:602","选择图片失败",e)}})))},"拍照上传",2),e.createElementVNode("view",{class:e.normalizeClass(["chat-interactive-btn",{disabled:M.value}]),onClick:o[6]||(o[6]=e=>!M.value&&(t("log","at pages/Chat/Chat.vue:613","点击了上传文件"),void se({count:5,type:"all",success:e=>{t("log","at pages/Chat/Chat.vue:618","成功了"),$.value=e.tempFiles,j.value.push(...e.tempFiles),uni.showToast({title:`已选择 ${e.tempFiles.length} 个文件`,icon:"success"})},fail:e=>{t("error","at pages/Chat/Chat.vue:629","选择失败:",e),uni.showToast({title:"选择失败",icon:"error"})}})))},"上传文件",2)]),j.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:0,class:"image-list"},[e.createElementVNode("view",{class:"image-tags"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(j.value,((t,a)=>(e.openBlock(),e.createElementBlock("view",{class:"image-tag",key:a},[e.createElementVNode("text",{class:"tag-name"},e.toDisplayString(t.name),1),e.createElementVNode("text",{class:"tag-close",onClick:e.withModifiers((e=>(e=>{j.value.splice(e,1)})(a)),["stop"])},"×",8,["onClick"])])))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:e.normalizeClass(["chat-input-container",{"input-disabled":M.value}])},[e.withDirectives(e.createElementVNode("textarea",{class:"message-input",placeholder:M.value?I.value?"AI 正在回复中...":"电脑正在运行,请稍后":"输入消息...",disabled:M.value,"onUpdate:modelValue":o[7]||(o[7]=e=>ae.value=e),"auto-height":""},null,8,["placeholder","disabled"]),[[e.vModelText,ae.value]]),M.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"input-btn-group stop-message-btn",onClick:te},[e.createElementVNode("view",{class:"iconfont icon-tingzhi"})])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"input-btn-group send-message-btn",onClick:o[8]||(o[8]=e=>(async()=>{if(ae.value.trim()||0!==j.value.length){if(j.value.length>0){z.value=!0,uni.showLoading({title:"上传文件中...",mask:!0});try{const e=[];for(const t of j.value){const a=await X(t.path);e.push(a)}F.value=e,j.value=[]}catch(e){return uni.hideLoading(),t("error","at pages/Chat/Chat.vue:726","文件上传失败:",e),uni.showToast({title:"文件上传失败,请重试",icon:"error"}),void(z.value=!1)}uni.hideLoading(),z.value=!1}0===m.value&&ee(),1===m.value&&Y(),2===m.value&&Z()}})())},[e.createElementVNode("view",{class:"iconfont icon-fasong"})]))],2)],2)])])])],64)}}},[["__scopeId","data-v-af7545bf"]]),ie=g({__name:"WorkSpace",setup(n){const o=e.ref(""),l=e.ref(""),c=e.ref(""),i=e.ref("工作区"),r=e.ref(!1),u=e.ref([]),v=e.ref(!1),p=e.ref(!1),f=e.ref(""),h=()=>{v.value=!1,f.value=""},g=()=>{se({count:10,type:"all",success:async e=>{const t=e.tempFiles||[];0!==t.length?await w(t):uni.showToast({title:"未选择文件",icon:"none"})},fail:e=>{t("error","at pages/WorkSpace/WorkSpace.vue:176","选择文件失败:",e)}})},w=async e=>{uni.showLoading({title:"上传中..."});try{const a=M.value.length>0?"./"+M.value.map((e=>e.name)).join("/")+"/":"/",n=await((e,a,n)=>new Promise(((o,l)=>{const c=(Array.isArray(a)?a:[a]).map((e=>({name:"files",uri:"string"==typeof e?e:e.tempFilePath||e.path||e})));t("log","at utils/cloud-api.js:595","uploadFileToShortStorage 参数:",{workspacesId:e,fileCount:c.length,filePath:n}),uni.uploadFile({url:`${s}/cloud_api/file/temp/upload`,method:"POST",formData:{workspaces_id:e,file_path:n||"/",overwrite:"true"},files:c,success:e=>{if(t("log","at utils/cloud-api.js:607","uploadFileToShortStorage 响应状态:",e.statusCode,"数据:",e.data),200===e.statusCode)try{const t=JSON.parse(e.data);if(Array.isArray(t)&&t.length>0)o(t);else if(t.success)o([{url:t.url||t.message,success:!0}]);else{const e=(null==t?void 0:t.error)||(null==t?void 0:t.message)||"上传文件到短存云端获取URL出错啦";l(e)}}catch(a){l("接口返回数据格式异常: "+e.data)}else l(`上传文件到短存云端获取URL失败${e.statusCode} - ${e.data}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(l.value,e,a),c=n.filter((e=>e.success)).map((e=>e.url));if(0===c.length){const e=n.filter((e=>!e.success)).map((e=>e.error)).join("; ");throw new Error(e||"所有文件上传失败")}await((e,t,a,n)=>new Promise(((o,l)=>{const c=Array.isArray(a)?a:a?[a]:[];uni.request({url:`${s}/cloud_api/phone/workspace/upload`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspaces_id:t,dir_path:n||"/",urls:c},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)o(t);else{const e=(t.results||[]).filter((e=>!e.success)).map((e=>e.error||"未知错误")),a=e.length>0?`上传失败 ${t.failed_count}/${t.total_files}${e[0]}`:t.summary||(null==t?void 0:t.error)||"上传文件到工作区出错啦";l(a)}}else l(`上传文件到工作区失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(o.value,l.value,c,a),uni.hideLoading();const i=e.length,r=i-c.length,u=r>0?`上传完成:成功 ${c.length},失败 ${r}`:`成功上传 ${i} 个文件`;uni.showToast({title:u,icon:c.length>0?"success":"error"}),F()}catch(a){uni.hideLoading(),t("error","at pages/WorkSpace/WorkSpace.vue:229","上传文件失败:",a),uni.showToast({title:"string"==typeof a?a:"上传失败,请重试",icon:"error"})}},k=e.computed((()=>0===M.value.length?"根目录":"/"+M.value.map((e=>e.name)).join("/"))),C=e.computed((()=>{const e=M.value.map((e=>e.name)).join("/"),t=f.value.trim();return t?e?`./${e}/${t}`:`./${t}`:e?`./${e}/`:"./"})),N=async()=>{const e=f.value.trim();if(e)try{const t=M.value.map((e=>e.name)).join("/"),a=t?`./${t}/${e}`:`./${e}`;await m(o.value,l.value,a),uni.showToast({title:"创建成功",icon:"success"}),h(),F()}catch(a){t("error","at pages/WorkSpace/WorkSpace.vue:275","创建文件夹失败:",a),uni.showToast({title:"创建失败,请重试",icon:"error"})}else uni.showToast({title:"请输入目录名称",icon:"none"})},b=async e=>{var a,n,c;if("directory"!==e.type)try{uni.showLoading({title:"获取下载链接..."});const i=e.path.startsWith("./")?e.path.slice(2):e.path,r=await(a=o.value,n=l.value,c=i,new Promise(((e,t)=>{uni.request({url:`${s}/cloud_api/phone/workspace/downloadFile`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:a,workspaces_id:n,file_path:c},success:a=>{if(200===a.statusCode){const n=a.data;if(n.success)e(n.message||n.data);else if(Array.isArray(n))e(n);else{const e=(null==n?void 0:n.error)||"获取工作区文URL出错啦";t(e)}}else t(`获取工作区文URL失败${a.statusCode}`)}})})));uni.hideLoading();const u=Array.isArray(r)?r[0]:r;if(!u||!u.url)return void uni.showToast({title:"获取下载链接失败",icon:"error"});const d=u.url,m=e.name;uni.showLoading({title:"下载中..."}),uni.downloadFile({url:d,name:m,success:e=>{if(uni.hideLoading(),200===e.statusCode){const t=e.tempFilePath;V(m,t)}else uni.showToast({title:"下载失败",icon:"error"})},fail:e=>{uni.hideLoading(),t("error","at pages/WorkSpace/WorkSpace.vue:406","下载文件失败:",e),uni.showToast({title:"下载失败,请重试",icon:"error"})}})}catch(i){uni.hideLoading(),t("error","at pages/WorkSpace/WorkSpace.vue:415","获取下载链接失败:",i),uni.showToast({title:"获取下载链接失败,请重试",icon:"error"})}else uni.showToast({title:"暂不支持下载目录",icon:"none"})},V=(e,a)=>{const n="/storage/emulated/0/yxd/";var o;o=o=>{plus.io.resolveLocalFileSystemURL(a,(l=>{l.copyTo(o,e,(()=>{const a=n+e;t("log","at pages/WorkSpace/WorkSpace.vue:464","文件已保存到:",a),_(e,a)}),(n=>{t("error","at pages/WorkSpace/WorkSpace.vue:468","复制文件失败:",JSON.stringify(n)),_(e,a)}))}),(n=>{t("error","at pages/WorkSpace/WorkSpace.vue:473","读取临时文件失败:",JSON.stringify(n)),_(e,a)}))},plus.io.resolveLocalFileSystemURL(n,(e=>{o(e)}),(()=>{plus.io.resolveLocalFileSystemURL("/storage/emulated/0/",(n=>{n.getDirectory("yxd",{create:!0},(e=>{o(e)}),(n=>{t("error","at pages/WorkSpace/WorkSpace.vue:439","创建 yxd 目录失败:",JSON.stringify(n)),uni.showToast({title:"创建目录失败",icon:"error"}),_(e,a)}))}),(n=>{t("error","at pages/WorkSpace/WorkSpace.vue:447","访问外部存储根目录失败:",JSON.stringify(n)),uni.showToast({title:"无法访问存储目录",icon:"error"}),_(e,a)}))}))},_=(e,t)=>{uni.showActionSheet({title:`${e} 下载完成`,itemList:["打开文件","选择其他应用打开","仅保存"],success:e=>{switch(e.tapIndex){case 0:B(t);break;case 1:S(t);break;case 2:uni.showToast({title:"文件已保存到 yxd 目录",icon:"success"})}},fail:()=>{uni.showToast({title:"文件已保存到 yxd 目录",icon:"success"})}})},B=e=>{uni.openDocument({filePath:e,success:()=>uni.showToast({title:"打开成功",icon:"success"}),fail:e=>{t("error","at pages/WorkSpace/WorkSpace.vue:530","打开文件失败:",e),uni.showToast({title:"无法打开此文件",icon:"error"})}})},S=e=>{uni.openDocument({filePath:e,showMenu:!0,success:()=>uni.showToast({title:"打开成功",icon:"success"}),fail:e=>{t("error","at pages/WorkSpace/WorkSpace.vue:549","打开文件失败:",e),uni.showToast({title:"无法打开此文件",icon:"error"})}})},x=e=>{uni.showModal({title:"提示",content:`确定要删除"${e.name}"吗?`,success:async a=>{if(a.confirm)try{const a=`./${e.path}`;t("log","at pages/WorkSpace/WorkSpace.vue:568","删除的是:",a),await d(o.value,l.value,a),uni.showToast({title:"删除成功",icon:"success"}),F()}catch(n){t("error","at pages/WorkSpace/WorkSpace.vue:576","删除失败:",n),uni.showToast({title:"删除失败,请重试",icon:"error"})}}})},T=e.ref(!1),D=()=>{T.value=!T.value},P=e.ref(""),j=e.ref(!1),$=()=>{j.value=!j.value},L=e.ref({}),M=e.ref([]),I=e.ref([]),z=()=>{var e,a;t("log","at pages/WorkSpace/WorkSpace.vue:657","当前路径为:",JSON.stringify(M.value));const n=M.value.length>0?M.value[M.value.length-1].path:".";if("."===n)return(null==(e=L.value)?void 0:e.children)||[];const o=(e,t)=>{var a;for(const n of e){if(n.path===t)return n;if("directory"===n.type&&(null==(a=n.children)?void 0:a.length)){const e=o(n.children,t);if(e)return e}}return null},l=o((null==(a=L.value)?void 0:a.children)||[],n);return l?l.children:[]},F=async()=>{var e,a;l.value=uni.getStorageSync("workspace_id"),o.value=E(),t("log","at pages/WorkSpace/WorkSpace.vue:684","getWorkspaceId:",l.value),L.value=await(e=o.value,a=l.value,new Promise(((t,n)=>{uni.request({url:`${s}/cloud_api/phone/workspace/list`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspaces_id:a,format:"tree",parent_path:"",filter_type:""},success:e=>{if(200===e.statusCode){const a=e.data;if(a.success)t(a.data);else{const e=(null==a?void 0:a.error)||"获取工作区文件目录出错啦";n(e)}}else n(`获取工作区文件目录失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})}))),I.value=z()},O=()=>{r.value?u.value.length===I.value.length?u.value=[]:u.value=I.value.map((e=>e.path)):M.value.length>0?(M.value.pop(),0===M.value.length?(i.value="工作区",c.value=null):(i.value=M.value[M.value.length-1].name,c.value=M.value.length>1?M.value[M.value.length-2].name:"工作区"),F(),P.value="",j.value=!1):uni.navigateBack({delta:1,fail(){t("log","at pages/WorkSpace/WorkSpace.vue:741","返回失败,进入兜底跳转"),uni.reLaunch({url:"/pages/Chat/Chat"})}})};return e.onMounted((()=>{F()})),(t,n)=>{const o=a(e.resolveDynamicComponent("uni-icons"),y);return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),v.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"popup-overlay",onClick:h},[e.createElementVNode("view",{class:"popup-card",onClick:n[3]||(n[3]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:h},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"新建工作区目录"),e.createElementVNode("view",{class:"new-folder-name"},"目录名称"),e.createElementVNode("view",{class:e.normalizeClass(["create-folder-name",{"has-value":p.value||f.value}])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=e=>f.value=e),onFocus:n[1]||(n[1]=e=>p.value=!0),onBlur:n[2]||(n[2]=e=>p.value=!1),type:"text",placeholder:"输入目录名称,如:项目资料/设计图"},null,544),[[e.vModelText,f.value]])],2),e.createElementVNode("view",{class:"nf-path-label"},"当前路径"),e.createElementVNode("view",{class:"nf-path-display"},e.toDisplayString(k.value),1),e.createElementVNode("view",{class:"nf-path-label"},"路径预览"),e.createElementVNode("view",{class:"nf-path-preview"},e.toDisplayString(C.value),1),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:h},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:N},"确认")])])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"workspace-container page-container"},[e.createElementVNode("view",{class:"workspace-header"},[e.createElementVNode("view",{class:"custom-navbar"},[e.createElementVNode("view",{class:"navbar-left",onClick:n[4]||(n[4]=(...e)=>O&&O(...e))},[e.createElementVNode("view",{class:"iconfont icon-fanhui custom-navbar-icon"}),e.createElementVNode("view",{class:"navbar-before-title workspace-text"},e.toDisplayString(r.value?"全选":c.value),1)]),e.createElementVNode("view",{class:"navbar-title workspace-text"},e.toDisplayString(i.value),1),e.createElementVNode("view",{class:"navbar-right"},[r.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"navbar-right-text workspace-text",onClick:n[5]||(n[5]=e=>(r.value&&(u.value=[]),void(r.value=!r.value)))}," 完成")):(e.openBlock(),e.createElementBlock("view",{key:1,class:e.normalizeClass(["iconfont icon-gengduo",T.value?"menu-open":"custom-navbar-icon"]),onClick:D},null,2))]),T.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"menu-card"},[e.createElementVNode("view",{class:"menu-card-item",onClick:n[6]||(n[6]=e=>{g(),D()})},"上传文件"),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("view",{class:"menu-card-item",onClick:n[7]||(n[7]=e=>{v.value=!0,D()})},"新建文件夹")])):e.createCommentVNode("",!0)]),e.createElementVNode("view",{class:"search-file-warpper"},[e.createElementVNode("view",{class:"search-file"},[e.createElementVNode("view",{class:"iconfont icon-sousuo"}),e.withDirectives(e.createElementVNode("input",{class:"search-file-input",placeholder:"搜索",onFocus:$,"onUpdate:modelValue":n[8]||(n[8]=e=>P.value=e)},null,544),[[e.vModelText,P.value]])]),j.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"cancel-search",onClick:$},"取消")):e.createCommentVNode("",!0)])]),e.createElementVNode("view",{class:"workspace-content"},[0===I.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"folder-null"},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"}),e.createTextVNode(" 文件夹为空 ")])):e.createCommentVNode("",!0),I.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:1,class:"folder-grid"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.value,(t=>{return e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["folder-item",{"select-folder":u.value.includes(t.path)}]),key:t.path,onClick:e=>r.value?(e=>{const t=u.value.indexOf(e);-1!==t?u.value.splice(t,1):u.value.push(e)})(t.path):(e=>{"directory"===e.type&&(M.value.push({path:e.path,name:e.name}),i.value=e.name,c.value=M.value.length>1?M.value[M.value.length-2].name:"工作区",I.value=z(),P.value="",j.value=!1)})(t),onLongpress:e=>(e=>{r.value||uni.showActionSheet({itemList:["下载","删除"],success:t=>{switch(t.tapIndex){case 0:b(e);break;case 1:x(e)}}})})(t)},["directory"===t.type?(e.openBlock(),e.createElementBlock("view",{key:0,class:"iconfont icon-a-wenjianjiawenjian folder-item-style"})):(e.openBlock(),e.createElementBlock("view",{key:1,class:e.normalizeClass(["iconfont folder-item-style",(a=t.extension,{".png":"icon-wenjiantupian",".jpg":"icon-wenjiantupian",".jpeg":"icon-wenjiantupian",".gif":"icon-wenjiantupian",".svg":"icon-SVG",".bmp":"icon-wenjiantupian",".webp":"icon-wenjiantupian",".mp4":"icon-wenjianshipin",".avi":"icon-wenjianshipin",".mov":"icon-wenjianshipin",".wmv":"icon-wenjianshipin",".flv":"icon-wenjianshipin",".mkv":"icon-wenjianshipin",".mp3":"icon-wenjianyinpin",".wav":"icon-wenjianyinpin",".flac":"icon-wenjianyinpin",".aac":"icon-wenjianyinpin",".pdf":"icon-PDF1",".doc":"icon-word",".docx":"icon-word",".xls":"icon-execl",".xlsx":"icon-execl",".ppt":"icon-PPT1",".pptx":"icon-PPT1",".txt":"icon-TXT1",".md":"icon-file-markdown-fill",".zip":"icon-wenjianyasuo",".rar":"icon-wenjianyasuo",".7z":"icon-wenjianyasuo",".tar":"icon-wenjianyasuo",".gz":"icon-wenjianyasuo",".js":"icon-JS",".ts":"icon-daimawenjia",".vue":"icon-daimawenjia",".html":"icon-HTML",".css":"icon-CSS",".py":"icon-daima",".java":"icon-daima",".json":"icon-JSON"}[null==a?void 0:a.toLowerCase()]||"icon-qitalingyu")])},null,2)),e.createElementVNode("view",{class:"folder-name"},e.toDisplayString(t.name),1),r.value?(e.openBlock(),e.createElementBlock("view",{key:2,class:e.normalizeClass(["folder-checkbox",{"select-folder":u.value.includes(t.path)}])},[u.value.includes(t.path)?(e.openBlock(),e.createBlock(o,{key:0,type:"checkmarkempty",color:"#fff"})):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],42,["onClick","onLongpress"]);var a})),128))])):e.createCommentVNode("",!0)]),r.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:e.normalizeClass(["workspace-footer",{"folder-actions":u.value.length>0}])},[e.createElementVNode("view",{class:"iconfont icon-shangchuan",onClick:g}),e.createElementVNode("view",{class:"iconfont icon-del"})],2)):e.createCommentVNode("",!0)])],64)}}},[["__scopeId","data-v-8cbb38c0"]]),re=g({__name:"UserProfileModal",setup(n){const o=()=>{t("log","at pages/UserProfileModal/UserProfileModal.vue:55","点击了返回"),uni.navigateBack({delta:1,fail(){uni.reLaunch({url:"/pages/Chat/Chat"})}})},l=async()=>{if(d.value.trim()){uni.showLoading({title:"保存中...",mask:!0});try{await(e=c.value,a=r.value,n=d.value.trim(),l=m.value.trim(),i=u.value,new Promise(((t,o)=>{uni.request({url:`${s}/cloud_api/update_user_profile`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,user_id:a,username:n,"email:":l,avatar:i},success:e=>{if(200===e.statusCode){const a=e.data;if(a.success)t(a.message);else{const e=(null==a?void 0:a.error)||"修改用户信息出错啦";o(e)}}else o(`修改用户信息失败:${e.statusCode}`)}})}))),uni.hideLoading(),uni.showToast({title:"保存成功",icon:"success"}),setTimeout((()=>{o()}),800)}catch(v){uni.hideLoading();const e="string"==typeof v?v:"保存失败,请稍后重试";uni.showToast({title:e,icon:"none"}),t("error","at pages/UserProfileModal/UserProfileModal.vue:93","保存用户信息失败:",v)}var e,a,n,l,i}else uni.showToast({title:"用户名不能为空",icon:"none"})},c=e.ref(""),r=e.ref(""),u=e.ref(""),d=e.ref(""),m=e.ref(""),v=e.ref(!1),p=e.ref(!1),f=()=>{uni.chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:e=>{const t=e.tempFilePaths[0];h(t)},fail:e=>{t("log","at pages/UserProfileModal/UserProfileModal.vue:116","选择图片失败",e)}})},h=e=>{u.value=e};return e.onMounted((async()=>{c.value=E();try{const e=await i(c.value);r.value=e._id||"",u.value=e.avatar||"",d.value=e.username||"",m.value=e.email||""}catch(e){t("error","at pages/UserProfileModal/UserProfileModal.vue:135","获取用户信息失败:",e),uni.showToast({title:"加载用户信息失败",icon:"none"})}})),(t,n)=>{const s=a(e.resolveDynamicComponent("uni-icons"),y);return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),e.createElementVNode("view",{class:"user-profile page-container"},[e.createElementVNode("view",{class:"modal-header"},[e.createElementVNode("view",{class:"modal-left",onClick:o},[e.createElementVNode("view",{class:"iconfont icon-fanhui custom-navbar-icon"})]),e.createElementVNode("view",{class:"modal-title"},[e.createElementVNode("view",{class:"title-text"},"编辑资料")]),e.createElementVNode("view",{class:"modal-right",onClick:l},[e.createElementVNode("view",{class:"save-btn"},"保存")])]),e.createElementVNode("view",{class:"modal-body"},[e.createElementVNode("view",{class:"avatar-upload-section",onClick:f},[e.createElementVNode("view",{class:"avatar-upload-container"},[u.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"avatar-preview"},[e.createElementVNode("image",{src:u.value,mode:"aspectFill"},null,8,["src"])])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"avatar-placeholder"},[e.createVNode(s,{type:"person-filled",size:"100rpx",color:"#ffffff"})]))])]),e.createElementVNode("view",{class:"form-card"},[e.createElementVNode("view",{class:"form-field"},[e.createElementVNode("view",{class:"form-text"},"用户名"),e.withDirectives(e.createElementVNode("input",{"adjust-position":"false",class:e.normalizeClass(["form-field-input form-field-username",{"edit-input-focus":v.value}]),"onUpdate:modelValue":n[0]||(n[0]=e=>d.value=e),onFocus:n[1]||(n[1]=e=>v.value=!0),onBlur:n[2]||(n[2]=e=>v.value=!1)},null,34),[[e.vModelText,d.value]])]),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("view",{class:"form-field"},[e.createElementVNode("view",{class:"form-text"},"邮箱"),e.withDirectives(e.createElementVNode("input",{"adjust-position":"false",class:e.normalizeClass(["form-field-input form-field-emile",{"edit-input-focus":p.value}]),"onUpdate:modelValue":n[3]||(n[3]=e=>m.value=e),onFocus:n[4]||(n[4]=e=>p.value=!0),onBlur:n[5]||(n[5]=e=>p.value=!1)},null,34),[[e.vModelText,m.value]])])]),e.createElementVNode("view",{class:"prompt-content"},"*保存后再返回哟")])])],64)}}},[["__scopeId","data-v-8fad524d"]]),ue=g({__name:"ContactPages",setup(n){const o=Q(),l=()=>{uni.navigateBack({delta:1,fail(){uni.reLaunch({url:"/pages/Chat/Chat"})}})},s=(e,t="")=>{uni.setStorageSync("chatType",e),t&&uni.setStorageSync("currentSessionId",t),uni.reLaunch({url:"/pages/Chat/Chat"})},c=e.ref(0),d=e.reactive([{name:"contacts",label:"通讯录",icon:"📞"},{name:"createGroup",label:"新建群聊",icon:"👥"},{name:"addFriend",label:"添加好友",icon:""},{name:"friendRequest",label:"好友申请",icon:"📨"}]),m=e=>{c.value=e.detail.current},v=e.ref(""),p=e.ref(""),f="宇恒一号",h=e.ref([]),g=async()=>{try{t("log","at pages/ContactPages/ContactPages.vue:442","开始获取好友列表"),v.value=E();const e=await i(v.value);p.value=e._id,t("log","at pages/ContactPages/ContactPages.vue:446","UserId.value",p.value);const a=await G(p.value);t("log","at pages/ContactPages/ContactPages.vue:448","friendList:",a),a&&a.length?h.value=await w(a):(h.value=[],t("log","at pages/ContactPages/ContactPages.vue:453","好友列表为空"))}catch(e){t("error","at pages/ContactPages/ContactPages.vue:456","获取好友列表失败:",e),h.value=[]}},w=async e=>{if(!(null==e?void 0:e.length))return[];try{const t=e.map((e=>e.receiver)),a=await r(v.value,t),n=new Map(a.map((e=>[e.user_id,e]))||[]);return e.map((e=>{const t=n.get(e.receiver);return{...e,avatar:(null==t?void 0:t.avatar)||null}}))}catch(a){return t("error","at pages/ContactPages/ContactPages.vue:477","获取好友头像失败",a),e}};e.onMounted((async()=>{await g(),await C(),await z(),o.isConnected||(v.value&&p.value?o.connect({token:v.value,UserId:p.value}):t("warn","at pages/ContactPages/ContactPages.vue:341","Token或UserId未准备好"))}));const k=e.ref([]),C=async()=>{try{t("log","at pages/ContactPages/ContactPages.vue:494","开始获取群聊列表"),v.value=E();const e=await i(v.value);p.value=e._id,t("log","at pages/ContactPages/ContactPages.vue:498","UserId.value",p.value),k.value=await K(p.value)}catch(e){t("error","at pages/ContactPages/ContactPages.vue:501","获取群聊列表失败:",e),k.value=[]}},N=e.ref(""),b=e.ref(),V=async()=>{try{if(!N.value)return void uni.showToast({title:"群名称不能为空",icon:"none"});if(0===B.value.length)return void uni.showToast({title:"请选择群成员",icon:"none"});await new Promise(((e,a)=>{if(o.isConnected)return void e();if(!v.value||!p.value)return void a(new Error("Token或UserId未准备好"));t("log","at pages/ContactPages/ContactPages.vue:522","friendSocket 未连接,正在建立连接..."),o.connect({token:v.value,UserId:p.value});const n=setInterval((()=>{o.isConnected&&(clearInterval(n),t("log","at pages/ContactPages/ContactPages.vue:531","friendSocket 连接已建立"),e())}),100);setTimeout((()=>{clearInterval(n),o.isConnected||a(new Error("连接超时"))}),1e4)}));const e=B.value.map((e=>e.id));b.value={version:"1.1",body:{command:3,userIds:e,message:"我来邀请你们了",sender:p.value,callBackMessage:!0,groupName:N.value,teamCreateReq:{access_token:v.value}}};await o.send(b.value)?await _():t("log","at pages/ContactPages/ContactPages.vue:587","发送新建群聊消息失败")}catch(e){t("log","at pages/ContactPages/ContactPages.vue:590",e),uni.showToast({title:`新建群聊失败${e}`,icon:"none"})}},_=()=>new Promise(((a,n)=>{const l=setTimeout((()=>{n(new Error("超时未返回群聊创建结果"))}),18e4),s=e.watch((()=>o.command),(async e=>{if(t("log","at pages/ContactPages/ContactPages.vue:609","创建一个一次性监听器"),e&&3===o.command){t("log","at pages/ContactPages/ContactPages.vue:611","监听到command的值是3,检查群聊是否创建成功",o.command);try{await C();const e=k.value.find((e=>e.id===o.groupId));e?(t("log","at pages/ContactPages/ContactPages.vue:618","✅ 新建群聊成功",e),B.value=[],c.value=0):t("log","at pages/ContactPages/ContactPages.vue:623","❌ 新建群聊失败 / 群组不存在")}catch(a){t("error","at pages/ContactPages/ContactPages.vue:627","保存AI回复失败",a),n(a)}finally{o.command=null,o.groupId=null,s(),clearTimeout(l)}}}))})),B=e.ref([]),S=e.ref(!1),x=e.ref(""),T=e.ref([]),D=async()=>{if(!x.value.trim())return void(T.value=[]);const e=x.value.toLowerCase().trim();T.value=await u(v.value,e),t("log","at pages/ContactPages/ContactPages.vue:676","searchResultList.value",JSON.stringify(T.value))},P=()=>{S.value=!S.value},j=e.ref(null),$=()=>{j.value=null,M.value=!1},L=e.ref("");e.ref(!1),e.ref(!1);const M=e.ref(!1),I=e.ref([]),z=async()=>{try{if(!p.value)return;const e=await(async e=>new Promise(((t,a)=>{uni.request({url:`${H}/api/friendship/getFriendship`,method:"POST",data:{current:1,size:100,sendId:e},success:e=>{var n;if(200===e.statusCode){const o=e.data;if(0===(null==o?void 0:o.code)||"成功"===(null==o?void 0:o.msg)){const e=(null==(n=null==o?void 0:o.data)?void 0:n.records)||[];t(e)}else{const t=e.data.msg||"获取添加我的好友出错啦";a(t)}}else a(`获取添加我的好友失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})))(p.value);e&&e.length?I.value=await F(e):I.value=[]}catch(e){t("error","at pages/ContactPages/ContactPages.vue:732","获取好友申请列表失败:",e),I.value=[]}},F=async e=>{if(!(null==e?void 0:e.length))return[];try{const t=e.map((e=>e.sendId)),a=await r(v.value,t),n=new Map(a.map((e=>[e.user_id,e]))||[]);return e.map((e=>{const t=n.get(e.sendId);return{...e,avatar:(null==t?void 0:t.avatar)||null}}))}catch(a){return t("error","at pages/ContactPages/ContactPages.vue:751","获取申请人头像失败",a),e}},O=async()=>{if(M.value)try{const e=j.value.sendId,t=L.value||j.value.friendNickName||"",a=j.value.sessionId||Date.now(),n=j.value.id;await(async e=>new Promise(((t,a)=>{uni.request({url:`${H}/api/chatList/save`,method:"POST",header:{"Content-Type":"application/json"},data:e,success:e=>{if(200===e.statusCode){const n=e.data;if(0===(null==n?void 0:n.code)||"成功"===(null==n?void 0:n.msg))t("保存好友成功");else{const e=(null==n?void 0:n.msg)||"保存好友出错啦";a(e)}}else a(`保存好友失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})))([{friendNickName:t,sender:p.value,receiver:e,sessionId:a,friendRelationshipId:n},{friendNickName:"",sender:e,receiver:p.value,sessionId:a,friendRelationshipId:n}]),uni.showToast({title:"已同意好友申请",icon:"none"});const o=I.value.find((t=>t.sendId===e));o&&(o.status=1),$(),await g()}catch(e){t("error","at pages/ContactPages/ContactPages.vue:795","同意好友申请失败:",e),uni.showToast({title:"操作失败",icon:"none"})}else try{const e=j.value._id,a=await(async(e,a,n)=>new Promise(((o,l)=>{t("log","at utils/friend-api.js:239","进入sendFriendRequest"),uni.request({url:`${H}/api/friendship/saveShip`,method:"POST",data:{sendId:e,friendNickName:a,recipientId:n},success:e=>{if(200===e.statusCode){const t=e.data;if(0===(null==t?void 0:t.code)||"成功"===(null==t?void 0:t.msg))o("已成功发送好友申请");else{const t=e.data.msg||"发送好友申请出错啦";l(t)}}else l(`发送好友申请失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(p.value,L.value,e);uni.showToast({title:a,icon:"none"}),$()}catch(e){t("error","at pages/ContactPages/ContactPages.vue:806","发送好友申请失败:",e),uni.showToast({title:"发送申请失败",icon:"none"})}};return(n,o)=>{const i=a(e.resolveDynamicComponent("uni-icons"),y);return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),j.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"popup-overlay"},[e.createElementVNode("view",{class:"popup-card"},[e.createElementVNode("view",{class:"close-popup-card",onClick:$},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},e.toDisplayString(M.value?"通过好友申请":"申请添加朋友"),1),e.createElementVNode("view",{class:"friend-card"},[e.createElementVNode("view",{class:"friend-card-left"},[j.value.avatar?(e.openBlock(),e.createElementBlock("image",{key:0,src:j.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"friend-avatar"},[e.createVNode(i,{type:"person-filled",size:"100rpx",color:"#ffffff"})]))]),e.createElementVNode("view",{class:"friend-card-middle"},[e.createElementVNode("view",{class:"friend-name"},e.toDisplayString(j.value.username),1),e.createElementVNode("view",{class:"friend-label"},e.toDisplayString(j.value.sessionId),1)])]),e.createElementVNode("view",{class:"nickname-wrapper"},[e.createElementVNode("view",null,"好友备注"),e.withDirectives(e.createElementVNode("input",{class:"input-nickname",placeholder:"请输入好友名称","onUpdate:modelValue":o[0]||(o[0]=e=>L.value=e)},null,512),[[e.vModelText,L.value]])]),e.createElementVNode("view",{class:"text-btn confirm-btn",onClick:O},e.toDisplayString(M.value?"确认通过":"发送申请"),1)])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"tabbar-page page-container"},[e.createElementVNode("swiper",{class:"content-swiper",current:c.value,duration:300,onChange:m},[e.createElementVNode("swiper-item",{class:"content-swiper-item"},[e.createElementVNode("view",{class:"tabpage-containner"},[e.createElementVNode("view",{class:"tabpage-header"},[e.createElementVNode("view",{class:"iconfont icon-fanhui",onClick:l}),e.createElementVNode("view",{class:"tabpage-title"},"通讯录")]),e.createElementVNode("view",{class:"tabpage-body"},[e.createElementVNode("scroll-view",{class:"group-member",direction:"vertical","scroll-y":"true"},[e.createElementVNode("view",{class:"friend-list"},[e.createElementVNode("view",{class:"friend-card",onClick:o[1]||(o[1]=e=>s(0))},[e.createElementVNode("view",{class:"friend-card-left"},[e.createElementVNode("view",{class:"friend-avatar",style:{"background-color":"#38bdf8"}},[e.createElementVNode("view",{class:"iconfont icon-Robot",style:{"font-size":"80rpx",color:"#fff"}})])]),e.createElementVNode("view",{class:"friend-card-middle"},[e.createElementVNode("view",{class:"friend-name"},e.toDisplayString(f),1),e.createElementVNode("view",{class:"friend-label"})]),e.createElementVNode("view",{class:"friend-card-right"},[e.createVNode(i,{type:"right"})])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"friend-card",key:t.sessionId,onClick:e=>s(t.type,t.sessionId)},[e.createElementVNode("view",{class:"friend-card-left"},[t.avatar?(e.openBlock(),e.createElementBlock("image",{key:0,src:t.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"friend-avatar"},[e.createVNode(i,{type:"person-filled",size:"100rpx",color:"#ffffff"})]))]),e.createElementVNode("view",{class:"friend-card-middle"},[e.createElementVNode("view",{class:"friend-name"},e.toDisplayString(t.friendNickName),1),e.createElementVNode("view",{class:"friend-label"},e.toDisplayString(t.sessionId),1)]),e.createElementVNode("view",{class:"friend-card-right"},[e.createVNode(i,{type:"right"})])],8,["onClick"])))),128)),e.createElementVNode("view",null,"群聊"),e.createElementVNode("view",{class:"solid-line"}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"friend-card",key:t.id,onClick:e=>s(t.type,t.id)},[e.createElementVNode("view",{class:"friend-card-left"},[e.createElementVNode("view",{class:"friend-avatar",style:{"background-color":"#ffaaff"}},[e.createElementVNode("view",{class:"iconfont icon-qunliao",style:{"font-size":"80rpx",color:"#fff"}})])]),e.createElementVNode("view",{class:"friend-card-middle"},[e.createElementVNode("view",{class:"friend-name"},e.toDisplayString(t.name),1),e.createElementVNode("view",{class:"friend-label"},e.toDisplayString(t.createTime),1)]),e.createElementVNode("view",{class:"friend-card-right"},[e.createVNode(i,{type:"right"})])],8,["onClick"])))),128))])])])])]),e.createElementVNode("swiper-item",{class:"content-swiper-item"},[e.createElementVNode("view",{class:"tabpage-containner"},[e.createElementVNode("view",{class:"tabpage-header"},[e.createElementVNode("view",{class:"iconfont icon-fanhui",onClick:l}),e.createElementVNode("view",{class:"tabpage-title"},"新建群聊")]),e.createElementVNode("view",{class:"tabpage-body"},[e.createElementVNode("view",{class:"group-info"},[e.createElementVNode("view",{class:"group-name"},[e.createElementVNode("view",null,"群名称"),e.withDirectives(e.createElementVNode("input",{class:"input",placeholder:"请输入群名称","onUpdate:modelValue":o[2]||(o[2]=e=>N.value=e)},null,512),[[e.vModelText,N.value]])]),e.createElementVNode("view",{class:"group-member-wrapper"},[e.createElementVNode("view",{class:"member-title"},"群成员"),e.createElementVNode("view",{class:"group-ismember-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(B.value,((t,a)=>(e.openBlock(),e.createElementBlock("view",{class:"group-ismember-info",key:a},[e.createElementVNode("view",{class:"group-ismember-name"},e.toDisplayString(t.friendNickName),1)])))),128))])]),e.createElementVNode("view",{class:"create-group-btn",onClick:V},"创建群聊")]),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("scroll-view",{class:"group-member",direction:"vertical","scroll-y":"true"},[e.createElementVNode("view",{class:"friend-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.value,(a=>{var n;return e.openBlock(),e.createElementBlock("view",{class:"friend-card",key:a.receiver},[e.createElementVNode("view",{class:"friend-card-left"},[a.avatar?(e.openBlock(),e.createElementBlock("image",{key:0,src:a.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"friend-avatar"},[e.createVNode(i,{type:"person-filled",size:"100rpx",color:"#ffffff"})]))]),e.createElementVNode("view",{class:"friend-card-middle"},[e.createElementVNode("view",{class:"friend-name"},e.toDisplayString(a.friendNickName),1),e.createElementVNode("view",{class:"friend-label"},e.toDisplayString(a.email),1)]),e.createElementVNode("view",{class:"friend-card-right",onClick:e=>(e=>{t("log","at pages/ContactPages/ContactPages.vue:648","选择的好友id",e),t("log","at pages/ContactPages/ContactPages.vue:649","selectGroupMember.value=",JSON.stringify(B.value));const a=B.value.findIndex((t=>t.id===e));if(-1===a){const t=h.value.find((t=>t.receiver===e));t&&B.value.push({id:t.receiver,friendNickName:t.friendNickName})}else B.value.splice(a,1)})(a.receiver)},[e.createElementVNode("view",{class:"friend-checkbox"},[(null==(n=B.value)?void 0:n.find((e=>e.id===a.receiver)))?(e.openBlock(),e.createBlock(i,{key:0,type:"checkmarkempty"})):e.createCommentVNode("",!0)])],8,["onClick"])])})),128))])])])])]),e.createElementVNode("swiper-item",{class:"content-swiper-item"},[e.createElementVNode("view",{class:"tabpage-containner"},[e.createElementVNode("view",{class:"tabpage-header"},[e.createElementVNode("view",{class:"iconfont icon-fanhui",onClick:l}),e.createElementVNode("view",{class:"tabpage-title"},"添加好友")]),e.createElementVNode("view",{class:"tabpage-body"},[e.createElementVNode("view",{class:"search-warpper"},[e.withDirectives(e.createElementVNode("input",{class:e.normalizeClass(["search-file-input",{active:S.value}]),onFocus:P,onBlur:P,"onUpdate:modelValue":o[3]||(o[3]=e=>x.value=e),"confirm-type":"search",onConfirm:D},null,34),[[e.vModelText,x.value]]),e.createElementVNode("view",{class:"iconfont icon-sousuo",onClick:D})]),x.value?T.value.length?(e.openBlock(),e.createElementBlock("view",{key:1,class:"search-result"},[e.createElementVNode("scroll-view",{class:"group-member",direction:"vertical","scroll-y":"true"},[e.createElementVNode("view",{class:"friend-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(T.value,(a=>(e.openBlock(),e.createElementBlock("view",{class:"friend-card",key:a.id},[e.createElementVNode("view",{class:"friend-card-left"},[e.createElementVNode("view",{class:"friend-avatar"},[e.createElementVNode("image",{class:"friend-avatar",src:a.avatar,mode:"aspectFill"},null,8,["src"])])]),e.createElementVNode("view",{class:"friend-card-middle"},[e.createElementVNode("view",{class:"friend-name"},e.toDisplayString(a.nickname),1),e.createElementVNode("view",{class:"friend-label"},e.toDisplayString(a.email),1)]),e.createElementVNode("view",{class:"friend-card-right",onClick:e=>(e=>{const a=T.value.find((t=>t._id===e));a?j.value={...a}:(t("warn","at pages/ContactPages/ContactPages.vue:697","未找到该好友"),j.value=null)})(a._id)},[e.createElementVNode("view",{class:"add-btn text-btn"},"添加")],8,["onClick"])])))),128))])])])):(e.openBlock(),e.createElementBlock("view",{key:2,class:"no-result"},"未找到相关用户,请尝试其他关键词")):(e.openBlock(),e.createElementBlock("view",{key:0,class:"search-tip"},"请输入用户名或邮箱进行搜索"))])])]),e.createElementVNode("swiper-item",{class:"content-swiper-item"},[e.createElementVNode("view",{class:"tabpage-containner"},[e.createElementVNode("view",{class:"tabpage-header"},[e.createElementVNode("view",{class:"iconfont icon-fanhui",onClick:l}),e.createElementVNode("view",{class:"tabpage-title"},"好友申请")]),e.createElementVNode("view",{class:"tabpage-body"},[I.value.length?(e.openBlock(),e.createElementBlock("scroll-view",{key:1,class:"group-member",direction:"vertical","scroll-y":"true"},[e.createElementVNode("view",{class:"friend-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"friend-card",key:t.id},[e.createElementVNode("view",{class:"friend-card-left"},[t.avatar?(e.openBlock(),e.createElementBlock("image",{key:0,src:t.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"friend-avatar"},[e.createVNode(i,{type:"person-filled",size:"100rpx",color:"#ffffff"})]))]),e.createElementVNode("view",{class:"friend-card-middle"},[e.createElementVNode("view",{class:"friend-name"},e.toDisplayString(t.friendNickName||t.sendId),1),e.createElementVNode("view",{class:"friend-label"},e.toDisplayString(t.message||"请求添加你为好友"),1)]),e.createElementVNode("view",{class:"friend-card-right"},[0===t.state?(e.openBlock(),e.createElementBlock("view",{key:0,class:"friend-option"},[e.createElementVNode("view",{class:"agree-btn text-btn",onClick:e=>(e=>{M.value=!0,j.value={...e,username:e.friendNickName||e.sendId}})(t)},"同意",8,["onClick"])])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"friend-status agreed"},"已同意"))])])))),128))])])):(e.openBlock(),e.createElementBlock("view",{key:0,class:"no-result"},"暂无好友申请"))])])])],40,["current"]),e.createElementVNode("view",{class:"bottom-tabbar"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d,((t,a)=>(e.openBlock(),e.createElementBlock("view",{key:t.name,onClick:e=>(e=>{c.value=e})(a),class:"tab-item"},[e.createElementVNode("view",{class:"tab-icon"},e.toDisplayString(t.icon),1),e.createElementVNode("view",{class:"tab-label"},e.toDisplayString(t.label),1)],8,["onClick"])))),128))])])],64)}}},[["__scopeId","data-v-d6fd7c06"]]),de=g({__name:"TemplateSpace",setup(a){const n=e=>{if(!e)return"";const t=Math.floor(e),a=new Date(1e3*t);return`${a.getFullYear()}-${(a.getMonth()+1).toString().padStart(2,"0")}-${a.getDate().toString().padStart(2,"0")} ${a.getHours().toString().padStart(2,"0")}:${a.getMinutes().toString().padStart(2,"0")}:${a.getSeconds().toString().padStart(2,"0")}`},o=e=>{if(!e||0===e)return"0 B";const t=["B","KB","MB","GB","TB"];let a=e,n=0;for(;a>=1024&&n<t.length-1;)a/=1024,n++;return`${a.toFixed(1)} ${t[n]}`},l=e.ref("aaa"),s=()=>{t("log","at pages/WorkSpace/TemplateSpace/TemplateSpace.vue:188","点击了编辑模板")},c=e.ref(""),i=e.ref([]),r=e=>{c.value=e,"all"===e&&(d.value="全部模板",i.value=y.value),"like"===e&&(d.value="收藏模板",i.value=y.value.filter((e=>!0===e.is_favorite)))},u=e.ref(""),d=e.ref("模板区"),m=e.ref(!1),v=e.ref([]),p=()=>{m.value&&(v.value=[]),m.value=!m.value},f=e.ref(!1),h=()=>{f.value=!f.value},g=e.ref(""),w=e.ref(!1),k=()=>{w.value=!w.value},y=e.ref([{name:"SKILL.md",type:"file",path:"SKILL.md",children:[],file_count:0,directory_count:0,size:4768,modified_time:1776827361.9123552,extension:".md",is_favorite:!1,usage_count:0,sort:0,content:"khgvshbbthvgbihepiubjhrviifdhiuhrviuehrviuawhiuvrhy"},{name:"222.md",type:"file",path:"222.md",children:[],file_count:0,directory_count:0,size:5558,modified_time:1776827666.9123552,extension:".md",is_favorite:!1,usage_count:0,sort:0,content:"khgvshbbthvgbihepiubjhiuvrhy"},{name:"222.md",type:"file",path:"222.md",children:[],file_count:0,directory_count:0,size:5558,modified_time:1776827666.9123552,extension:".md",is_favorite:!1,usage_count:0,sort:0,content:"该回家看了的法国红酒看来法帝国海军快来尝尝v吧给v复仇计划曝光vi计划日方提供与i哦的风格和健康"},{name:"222.md",type:"file",path:"222.md",children:[],file_count:0,directory_count:0,size:5558,modified_time:1776827666.9123552,extension:".md",is_favorite:!1,usage_count:0,sort:0,content:"的法国红酒看来法帝国海军快来尝尝v吧给"},{name:"222.md",type:"file",path:"222.md",children:[],file_count:0,directory_count:0,size:5558,modified_time:1776827666.9123552,extension:".md",is_favorite:!1,usage_count:0,sort:0,content:""},{name:"222.md",type:"file",path:"222.md",children:[],file_count:0,directory_count:0,size:5558,modified_time:1776827666.9123552,extension:".md",is_favorite:!1,usage_count:0,sort:0,content:"khgvshbbthvgbihepiubjhrviifdhiuhrviuehrviuawhiuvrhy"},{name:"222.md",type:"file",path:"222.md",children:[],file_count:0,directory_count:0,size:5558,modified_time:1776827666.9123552,extension:".md",is_favorite:!1,usage_count:0,sort:0,content:"khgvshbbthvgbihepiubjhrviifdhiuhrviuehrviuawhiuvrhy"},{name:"222.md",type:"file",path:"222.md",children:[],file_count:0,directory_count:0,size:5558,modified_time:1776827666.9123552,extension:".md",is_favorite:!1,usage_count:0,sort:0,content:"khgvshbbthvgbihepiubjhrviifdhiuhrviuehrviuawhiuvrhy"},{name:"222.md",type:"file",path:"222.md",children:[],file_count:0,directory_count:0,size:5558,modified_time:1776827666.9123552,extension:".md",is_favorite:!1,usage_count:0,sort:0,content:"khgvshbbthvgbihepiubjhrviifdhiuhrviuehrviuawhiuvrhy"}]),E=()=>{m.value?v.value.length===i.value.length?v.value=[]:v.value=i.value.map((e=>e.id)):(!m.value&&i.value&&(i.value=[],c.value="",d.value="模板区"),m.value||i.value||uni.navigateBack({delta:1,fail(){t("log","at pages/WorkSpace/TemplateSpace/TemplateSpace.vue:468","返回失败,进入兜底跳转"),uni.reLaunch({url:"/pages/Chat/Chat"})}}))};return(t,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),e.createElementVNode("view",{class:"popup-overlay"},[e.createElementVNode("view",{class:"popup-card"},[e.createElementVNode("view",{class:"close-popup-card"},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"编辑模板"),e.createElementVNode("view",{class:"edit-template-wrapper"},[e.createElementVNode("view",{class:"edit-template-name"},[e.createElementVNode("view",null,"模板名称"),e.withDirectives(e.createElementVNode("input",{"placeholder-style":"请输入模板名称","onUpdate:modelValue":a[0]||(a[0]=e=>l.value=e)},null,512),[[e.vModelText,l.value]])]),e.createElementVNode("view",{class:"edit-template-name"},[e.createElementVNode("view",null,"模板内容"),e.createElementVNode("view",{class:"markdown-editor-pane"},[e.createElementVNode("view",{class:"markdown-pane-header"}," 编辑 "),e.createElementVNode("textarea")]),e.createElementVNode("view",{class:"markdown-preview-pane"},[e.createElementVNode("view",{class:"markdown-pane-header"}," 预览 "),e.createElementVNode("view")])])])])]),e.createElementVNode("view",{class:"workspace-container page-container"},[e.createElementVNode("view",{class:"workspace-header"},[e.createElementVNode("view",{class:"custom-navbar"},[e.createElementVNode("view",{class:"navbar-left",onClick:a[1]||(a[1]=(...e)=>E&&E(...e))},[e.createElementVNode("view",{class:"iconfont icon-fanhui custom-navbar-icon"}),e.createElementVNode("view",{class:"navbar-before-title workspace-text"},e.toDisplayString(m.value?"全选":u.value),1)]),e.createElementVNode("view",{class:"navbar-title workspace-text"},e.toDisplayString(d.value),1),c.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"navbar-right"},[m.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"navbar-right-text workspace-text",onClick:a[2]||(a[2]=e=>p())}," 完成")):(e.openBlock(),e.createElementBlock("view",{key:1,class:e.normalizeClass(["iconfont icon-gengduo",f.value?"menu-open":"custom-navbar-icon"]),onClick:h},null,2))])):e.createCommentVNode("",!0),f.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"menu-card"},[e.createElementVNode("view",{class:"menu-card-item",onClick:a[3]||(a[3]=e=>{p(),h()})},"选择"),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("view",{class:"menu-card-item"},"新建模板"),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("view",{class:"menu-card-item"},"上传模板")])):e.createCommentVNode("",!0)]),e.createElementVNode("view",{class:"search-file-warpper"},[e.createElementVNode("view",{class:"search-file"},[e.createElementVNode("view",{class:"iconfont icon-sousuo"}),e.withDirectives(e.createElementVNode("input",{class:"search-file-input",placeholder:"搜索",onFocus:k,"onUpdate:modelValue":a[4]||(a[4]=e=>g.value=e)},null,544),[[e.vModelText,g.value]])]),w.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"cancel-search",onClick:k},"取消")):e.createCommentVNode("",!0)])]),c.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"folder-grid"},[e.createElementVNode("view",{class:"folder-item",onClick:a[5]||(a[5]=e=>r("all"))},[e.createElementVNode("view",{class:"iconfont icon-a-wenjianjiawenjian folder-item-style"}),e.createElementVNode("view",{class:"folder-name"},"全部模板")]),e.createElementVNode("view",{class:"folder-item",onClick:a[6]||(a[6]=e=>r("like"))},[e.createElementVNode("view",{class:"iconfont icon-a-wenjianjiawenjian folder-item-style"}),e.createElementVNode("view",{class:"folder-name"},"收藏模板")])])),c.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"workspace-content"},[0===i.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"folder-null"},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"}),e.createTextVNode(" 暂无模板 ")])):e.createCommentVNode("",!0),i.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:1,class:"template-grid"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(i.value,((t,a)=>(e.openBlock(),e.createElementBlock("view",{class:"template-card",key:a},[e.createElementVNode("view",{class:"template-name"},e.toDisplayString(t.name),1),e.createElementVNode("view",{class:"template-content"},[e.createElementVNode("view",{class:"template-content-text"},e.toDisplayString(t.content),1)]),e.createElementVNode("view",{class:"template-info-wrapper"},[e.createElementVNode("view",{class:"template-item"},[e.createElementVNode("view",{class:"template-time background-style"},e.toDisplayString(n(t.modified_time)),1),e.createElementVNode("view",{class:"template-cache background-style"},e.toDisplayString(o(t.size)),1)]),e.createElementVNode("view",{class:"template-option"},[e.createElementVNode("view",{class:e.normalizeClass(["iconfont",t.is_favorite?"icon-favorite-fill":"icon-favorite"]),onClick:e=>(e=>{let t;"all"===c.value?t=y.value[e]:"like"===c.value&&(t=y.value.filter((e=>e.is_favorite))[e]);t&&(t.is_favorite=!t.is_favorite),"all"===c.value?i.value=[...y.value]:i.value=y.value.filter((e=>e.is_favorite))})(a)},null,10,["onClick"]),e.createElementVNode("view",{class:"iconfont icon-edit-fill",onClick:s}),e.createElementVNode("view",{class:"iconfont icon-choose-fill"})])])])))),128))])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),m.value?(e.openBlock(),e.createElementBlock("view",{key:2,class:e.normalizeClass(["workspace-footer",{"folder-actions":v.value.length>0}])},[e.createElementVNode("view",{class:"iconfont icon-shangchuan"}),e.createElementVNode("view",{class:"iconfont icon-fuzhi"}),e.createElementVNode("view",{class:"iconfont icon-wenjian"}),e.createElementVNode("view",{class:"iconfont icon-del"}),e.createElementVNode("view",{class:"iconfont icon-gengduo"})],2)):e.createCommentVNode("",!0)])],64))}},[["__scopeId","data-v-2acd55d4"]]),me={__name:"text",setup(t){const a=e.ref("");return e.onMounted((()=>{a.value='\n明白了您希望在我的回复中直接嵌入可编辑的表单卡片。让我试试\n\n---\n\n<div style="background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); border-radius: 20px; padding: 28px; color: white; font-family: \'Microsoft YaHei\', sans-serif; box-shadow: 0 10px 40px rgba(0,0,0,0.25); margin: 20px 0;">\n<h2 style="margin: 0 0 20px 0; font-size: 20px; display: flex; align-items: center; gap: 12px;">\n<span style="font-size: 26px;">✏️</span> 直接在下方编辑任务\n</h2>\n\n<form id="inlineTaskForm" style="background: rgba(255,255,255,0.1); border-radius: 16px; padding: 24px;">\n<div style="margin-bottom: 18px;">\n<label style="display: block; font-size: 12px; opacity: 0.8; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 1px;">任务名称</label>\n<input type="text" id="inlineTitle" placeholder="输入任务名称..." style="width: 100%; padding: 14px 16px; background: #1e1e2e; border: 2px solid rgba(255,255,255,0.2); border-radius: 10px; color: #fff; font-size: 15px;">\n</div>\n\n<div style="margin-bottom: 18px;">\n<label style="display: block; font-size: 12px; opacity: 0.8; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 1px;">任务描述</label>\n<textarea id="inlineDesc" placeholder="输入详细描述..." style="width: 100%; padding: 14px 16px; background: #1e1e2e; border: 2px solid rgba(255,255,255,0.2); border-radius: 10px; color: #fff; font-size: 14px; resize: vertical; min-height: 60px;"></textarea>\n</div>\n\n<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-bottom: 18px;">\n<div>\n<label style="display: block; font-size: 12px; opacity: 0.8; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 1px;">开始日期</label>\n<input type="date" id="inlineStart" style="width: 100%; padding: 14px 16px; background: #1e1e2e; border: 2px solid rgba(255,255,255,0.2); border-radius: 10px; color: #fff; font-size: 15px;">\n</div>\n<div>\n<label style="display: block; font-size: 12px; opacity: 0.8; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 1px;">截止日期</label>\n<input type="date" id="inlineEnd" style="width: 100%; padding: 14px 16px; background: #1e1e2e; border: 2px solid rgba(255,255,255,0.2); border-radius: 10px; color: #fff; font-size: 15px;">\n</div>\n</div>\n\n<div style="margin-bottom: 18px;">\n<label style="display: block; font-size: 12px; opacity: 0.8; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 1px;">时间</label>\n<input type="time" id="inlineTime" value="09:00" style="width: 100%; padding: 14px 16px; background: #1e1e2e; border: 2px solid rgba(255,255,255,0.2); border-radius: 10px; color: #fff; font-size: 15px;">\n</div>\n\n<div style="margin-bottom: 18px;">\n<label style="display: block; font-size: 12px; opacity: 0.8; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 1px;">优先级</label>\n<div style="display: flex; gap: 10px;">\n<label style="flex: 1; text-align: center; padding: 12px; background: rgba(254, 215, 215, 0.2); border: 2px solid transparent; border-radius: 10px; cursor: pointer; transition: all 0.3s;" onclick="selectPriority(this, \'high\')">\n🔴 高\n<input type="radio" name="priority" value="high" checked style="display: none;">\n</label>\n<label style="flex: 1; text-align: center; padding: 12px; background: rgba(254, 235, 200, 0.2); border: 2px solid transparent; border-radius: 10px; cursor: pointer; transition: all 0.3s;" onclick="selectPriority(this, \'medium\')">\n🟡 中\n<input type="radio" name="priority" value="medium" style="display: none;">\n</label>\n<label style="flex: 1; text-align: center; padding: 12px; background: rgba(198, 246, 213, 0.2); border: 2px solid transparent; border-radius: 10px; cursor: pointer; transition: all 0.3s;" onclick="selectPriority(this, \'low\')">\n🟢 低\n<input type="radio" name="priority" value="low" style="display: none;">\n</label>\n</div>\n</div>\n\n<div style="margin-bottom: 20px;">\n<label style="display: block; font-size: 12px; opacity: 0.8; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 1px;">分类</label>\n<div style="display: flex; gap: 10px; flex-wrap: wrap;">\n<label style="padding: 10px 16px; background: rgba(233, 216, 253, 0.2); border: 2px solid #667eea; border-radius: 20px; cursor: pointer; font-size: 13px;" onclick="selectCategory(this, \'work\')">\n💼 工作\n<input type="radio" name="category" value="work" checked style="display: none;">\n</label>\n<label style="padding: 10px 16px; background: rgba(190, 227, 248, 0.2); border: 2px solid transparent; border-radius: 20px; cursor: pointer; font-size: 13px;" onclick="selectCategory(this, \'life\')">\n🏠 生活\n<input type="radio" name="category" value="life" style="display: none;">\n</label>\n<label style="padding: 10px 16px; background: rgba(254, 215, 226, 0.2); border: 2px solid transparent; border-radius: 20px; cursor: pointer; font-size: 13px;" onclick="selectCategory(this, \'study\')">\n📚 学习\n<input type="radio" name="category" value="study" style="display: none;">\n</label>\n<label style="padding: 10px 16px; background: rgba(198, 246, 213, 0.2); border: 2px solid transparent; border-radius: 20px; cursor: pointer; font-size: 13px;" onclick="selectCategory(this, \'health\')">\n💪 健康\n<input type="radio" name="category" value="health" style="display: none;">\n</label>\n</div>\n</div>\n\n<div style="display: flex; gap: 12px;">\n<button type="button" onclick="clearInlineForm()" style="flex: 1; padding: 14px; background: rgba(255,255,255,0.2); border: none; border-radius: 12px; color: white; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.3s;">\n清空\n</button>\n<button type="button" onclick="submitInlineForm()" style="flex: 2; padding: 14px; background: white; border: none; border-radius: 12px; color: #667eea; font-size: 14px; font-weight: 600; cursor: pointer; transition: all 0.3s;">\n✅ 添加任务\n</button>\n</div>\n</form>\n</div>\n\n\n\n---\n\n**✅ 您现在可以直接在上方的卡片中填写任务信息,点击"添加任务"即可!**\n\n填写完成后告诉我"已填好"或"添加",我会帮您确认是否成功!\n'})),(t,n)=>{return e.openBlock(),e.createElementBlock("view",null,[e.createElementVNode("view",{innerHTML:(o=a.value,o.replace(/<\/?script>/gi,(e=>{let t="";for(let a=0;a<e.length;a++)t+="\\u"+e.charCodeAt(a).toString(16).padStart(4,"0");return t})))},null,8,["innerHTML"])]);var o}}},ve=g({__name:"text2",setup(a){const n=J(),o=e.ref({token:E(),conversationId:C()}),l=e.ref(""),s=e.ref([{label:"Ping",data:{ws_event:"ping"}},{label:"认证",data:{ws_event:"auth",data:{token:"",conversation_id:""}}},{label:"测试消息",data:{ws_event:"message",data:{task_call_id:N(),token:E(),conversation_id:C()}}}]),c=e.computed((()=>{const e=n.connectionStatus;return{"status-connected":"connected"===e,"status-connecting":"connecting"===e,"status-error":"error"===e,"status-disconnected":"disconnected"===e}})),i=()=>{o.value.token?n.connect({token:o.value.token,conversationId:C()}):uni.showToast({title:"请输入Token",icon:"none"})},r=()=>{n.disconnect()},u=async()=>{try{await n.sendPing()}catch(e){uni.showToast({title:"发送失败",icon:"none"})}},d=async()=>{if(l.value.trim())try{const e={ws_event:"message",data:{task_call_id:N(),result:{tools:[]}}};await n.send(e),l.value=""}catch(e){uni.showToast({title:"发送失败",icon:"none"})}},m=()=>{if(l.value.trim())try{const e=JSON.parse(l.value);l.value=JSON.stringify(e,null,2)}catch{uni.showToast({title:"不是有效的JSON",icon:"none"})}},v=()=>{};return e.watch((()=>n.isDisconnected),(e=>{e&&n.messageString&&t("log","at pages/text/text2.vue:253",n.messageString)})),e.onMounted((()=>{n.addLog("info","=== Socket测试页面 ==="),n.addLog("info","页面已加载"),n.isConnected&&n.addLog("info","当前已处于连接状态")})),e.onUnmounted((()=>{n.addLog("info","页面卸载")})),(t,a)=>(e.openBlock(),e.createElementBlock("view",{class:"container"},[e.createElementVNode("view",{class:"status-card"},[e.createElementVNode("text",{class:"status-label"},"连接状态"),e.createElementVNode("view",{class:e.normalizeClass(["status-value",c.value])},[e.createElementVNode("text",null,e.toDisplayString(e.unref(n).getStatusText()),1)],2),e.unref(n).reconnectAttempts>0?(e.openBlock(),e.createElementBlock("view",{key:0,class:"status-info"},[e.createElementVNode("text",{class:"reconnect-info"},"重连次数: "+e.toDisplayString(e.unref(n).reconnectAttempts),1)])):e.createCommentVNode("",!0)]),e.createElementVNode("view",{class:"config-card"},[e.createElementVNode("text",{class:"section-title"},"连接配置"),e.createElementVNode("view",{class:"input-group"},[e.createElementVNode("text",{class:"input-label"},"Token"),e.withDirectives(e.createElementVNode("input",{class:"input-field","onUpdate:modelValue":a[0]||(a[0]=e=>o.value.token=e),placeholder:"请输入Token"},null,512),[[e.vModelText,o.value.token]])]),e.createElementVNode("view",{class:"input-group"},[e.createElementVNode("text",{class:"input-label"},"Conversation ID"),e.withDirectives(e.createElementVNode("input",{class:"input-field","onUpdate:modelValue":a[1]||(a[1]=e=>o.value.conversationId=e),placeholder:"请输入会话ID(可选)"},null,512),[[e.vModelText,o.value.conversationId]])])]),e.createElementVNode("view",{class:"control-card"},[e.createElementVNode("button",{class:"btn btn-primary",disabled:e.unref(n).isConnected||e.unref(n).isConnecting,onClick:i},e.toDisplayString(e.unref(n).isConnecting?"连接中...":"连接"),9,["disabled"]),e.createElementVNode("button",{class:"btn btn-danger",disabled:!e.unref(n).isConnected,onClick:r}," 断开 ",8,["disabled"]),e.createElementVNode("button",{class:"btn btn-secondary",onClick:u,disabled:!e.unref(n).isConnected}," Ping ",8,["disabled"])]),e.createElementVNode("view",{class:"send-card"},[e.createElementVNode("text",{class:"section-title"},"发送消息"),e.createElementVNode("view",{class:"send-input-wrapper"},[e.withDirectives(e.createElementVNode("textarea",{class:"send-input","onUpdate:modelValue":a[2]||(a[2]=e=>l.value=e),placeholder:"输入要发送的消息(JSON格式)",disabled:!e.unref(n).isConnected},null,8,["disabled"]),[[e.vModelText,l.value]]),e.createElementVNode("view",{class:"send-buttons"},[e.createElementVNode("button",{class:"btn btn-primary btn-small",disabled:!e.unref(n).isConnected||!l.value.trim(),onClick:d}," 发送 ",8,["disabled"]),e.createElementVNode("button",{class:"btn btn-outline btn-small",disabled:!l.value.trim(),onClick:m}," 格式化 ",8,["disabled"])])]),e.createElementVNode("view",{class:"quick-messages"},[e.createElementVNode("text",{class:"quick-label"},"快捷消息:"),e.createElementVNode("view",{class:"quick-btns"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(s.value,(t=>(e.openBlock(),e.createElementBlock("button",{key:t.label,class:"quick-btn",disabled:!e.unref(n).isConnected,onClick:e=>(async e=>{const t={ws_event:"message",data:{task_call_id:N(),token:E(),conversation_id:C()}};try{await n.send(t)}catch(a){uni.showToast({title:"发送失败",icon:"none"})}})(t.data)},e.toDisplayString(t.label),9,["disabled","onClick"])))),128))])])]),e.createElementVNode("view",{class:"log-card"},[e.createElementVNode("view",{class:"log-header"},[e.createElementVNode("view",{class:"log-title-wrapper"},[e.createElementVNode("text",{class:"section-title"},"日志"),e.createElementVNode("text",{class:"log-count"},"("+e.toDisplayString(e.unref(n).logs.length)+")",1)]),e.createElementVNode("view",{class:"log-actions"},[e.createElementVNode("button",{class:"btn btn-small btn-secondary",onClick:a[3]||(a[3]=(...t)=>e.unref(n).clearLogs&&e.unref(n).clearLogs(...t))},"清空")])]),e.createElementVNode("scroll-view",{class:"log-list","scroll-y":"",onScrolltoupper:v},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(n).logs,((t,a)=>(e.openBlock(),e.createElementBlock("view",{key:a,class:e.normalizeClass(["log-item","log-"+t.type])},[e.createElementVNode("text",{class:"log-time"},e.toDisplayString(t.time),1),e.createElementVNode("text",{class:"log-content"},e.toDisplayString(t.content),1)],2)))),128))],32)])]))}},[["__scopeId","data-v-939e1d1d"]]),pe=g({__name:"CloudDatabase",setup(n){const o=e.ref(""),l=e.ref(""),c=e.ref(""),r=e.ref("user"),h=e=>{r.value=e,T.value=[],M()},g=e.ref("云端数据"),w=e.ref(!1),k=e.ref(!1),C=e.ref([]),N=()=>{w.value=!w.value},b=e.computed((()=>{var e;return 0===T.value.length?"":1===T.value.length?"云端数据":(null==(e=T.value[T.value.length-2])?void 0:e.name)||"云端数据"})),V=()=>{T.value.length>0?(T.value.pop(),g.value=T.value.length>0?T.value[T.value.length-1].name:"云端数据",M()):uni.navigateBack({delta:1,fail(){uni.reLaunch({url:"/pages/Chat/Chat"})}})},_=e.ref([]),B=e.ref([]),S=e.ref([]),x=e.ref([]),T=e.ref([]),D=e=>"folder"===e.type,P=e=>{if(D(e))return"icon-a-wenjianjiawenjian";const t=(e=>{if(D(e))return"folder";const t=e.name||"",a=t.lastIndexOf(".");return-1===a?"":t.slice(a).toLowerCase()})(e),a=(e.type||"").toLowerCase(),n={".png":"icon-wenjiantupian",".jpg":"icon-wenjiantupian",".jpeg":"icon-wenjiantupian",".gif":"icon-wenjiantupian",".svg":"icon-SVG",".bmp":"icon-wenjiantupian",".webp":"icon-wenjiantupian",".mp4":"icon-wenjianshipin",".avi":"icon-wenjianshipin",".mov":"icon-wenjianshipin",".wmv":"icon-wenjianshipin",".flv":"icon-wenjianshipin",".mkv":"icon-wenjianshipin",".mp3":"icon-wenjianyinpin",".wav":"icon-wenjianyinpin",".flac":"icon-wenjianyinpin",".aac":"icon-wenjianyinpin",".pdf":"icon-PDF",".doc":"icon-DOC",".docx":"icon-DOC",".xls":"icon-XLS",".xlsx":"icon-XLS",".ppt":"icon-PPT",".pptx":"icon-PPT",".txt":"icon-TXT",".md":"icon-file-markdown-fill",".zip":"icon-wenjianyasuo",".rar":"icon-wenjianyasuo",".7z":"icon-wenjianyasuo",".tar":"icon-wenjianyasuo",".gz":"icon-wenjianyasuo",".js":"icon-JS",".ts":"icon-daimawenjia",".vue":"icon-daimawenjia",".html":"icon-HTML",".css":"icon-CSS",".py":"icon-daimawenjian",".java":"icon-daimawenjian",".json":"icon-JSON"};return t&&n[t]?n[t]:a.startsWith("image/")?"icon-wenjiantupian":a.startsWith("video/")?"icon-wenjianshipin":a.startsWith("audio/")?"icon-wenjianyinpin":a.includes("spreadsheet")||a.includes("excel")?"icon-XLS":a.includes("document")||a.includes("word")?"icon-DOC":a.includes("presentation")||a.includes("powerpoint")?"icon-PPT":a.includes("pdf")?"icon-PDF":a.includes("zip")||a.includes("rar")||a.includes("tar")||a.includes("gzip")?"icon-wenjianyasuo":"icon-qitawenjian"},j=e=>e?e<1024?e+" B":e<1048576?(e/1024).toFixed(1)+" KB":(e/1048576).toFixed(1)+" MB":"",$=e.computed((()=>0===T.value.length?"根目录 (/)":"/"+T.value.map((e=>e.name)).join("/"))),L=e.computed((()=>_.value.length)),M=()=>{const e="user"===r.value?_.value:B.value;if(0===T.value.length)"user"===r.value?S.value=e:x.value=e;else{const e=T.value[T.value.length-1].children||[];"user"===r.value?S.value=e:x.value=e}},I=async()=>{try{o.value=E();const e=await i(o.value);l.value=e._id,c.value=uni.getStorageSync("workspace_id")||"";const t=await v(o.value,"user");_.value=t||[],"user"===r.value&&(S.value=t||[])}catch(e){t("error","at pages/CloudDatabase/CloudDatabase.vue:689","获取文件列表失败:",e),_.value=[],S.value=[]}},z=async e=>{try{e=null==e?"":String(e);const a=await v(o.value,"team","/",e);t("log","at pages/CloudDatabase/CloudDatabase.vue:700","团队云端文件:",JSON.stringify(a)),B.value=a||[],x.value=a||[]}catch(a){t("error","at pages/CloudDatabase/CloudDatabase.vue:704","获取团队文件列表失败:",a),B.value=[],x.value=[]}},F=e=>{D(e)?(T.value.push({path:e.path,name:e.name,children:e.children||[]}),g.value=e.name,M()):A(e)},O=e=>{if(k.value){const t=C.value.indexOf(e.id);return void(-1!==t?C.value.splice(t,1):C.value.push(e.id))}const t=D(e)?["重命名","删除"]:["下载","重命名","删除"];uni.showActionSheet({itemList:t,success:t=>{if(D(e))switch(t.tapIndex){case 0:J(e);break;case 1:H(e)}else switch(t.tapIndex){case 0:A(e);break;case 1:J(e);break;case 2:H(e)}}})},A=async e=>{var a,n;if(D(e))uni.showToast({title:"暂不支持下载目录",icon:"none"});else try{uni.showLoading({title:"获取下载链接..."});const t=await(a=o.value,n=e.id,new Promise(((e,t)=>{uni.request({url:`${s}/cloud_api/file/download`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:a,file_id:n},success:a=>{if(200===a.statusCode){const n=a.data;if(n.success)e(n.data.download_url);else{const e=(null==n?void 0:n.error)||"获取云端文件url出错啦";t(e)}}else t(`获取云端文件url失败${a.statusCode}`)},fail:e=>{const a=e.errMsg||"网络错误";t(a)}})})));if(uni.hideLoading(),!t)return void uni.showToast({title:"获取下载链接失败",icon:"error"});uni.showLoading({title:"下载中..."}),uni.downloadFile({url:t,success:t=>{if(uni.hideLoading(),200===t.statusCode){const a=t.tempFilePath;U(e.name,a)}else uni.showToast({title:"下载失败",icon:"error"})},fail:()=>{uni.hideLoading(),uni.showToast({title:"下载失败,请重试",icon:"error"})}})}catch(l){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:821","下载失败:",l),uni.showToast({title:"下载失败,请重试",icon:"error"})}},U=(e,a)=>{const n="/storage/emulated/0/yxd/";var o;o=o=>{plus.io.resolveLocalFileSystemURL(a,(l=>{l.copyTo(o,e,(()=>{const a=n+e;t("log","at pages/CloudDatabase/CloudDatabase.vue:864","文件已保存到:",a),q(e,a)}),(n=>{t("error","at pages/CloudDatabase/CloudDatabase.vue:868","复制文件失败:",JSON.stringify(n)),q(e,a)}))}),(n=>{t("error","at pages/CloudDatabase/CloudDatabase.vue:873","读取临时文件失败:",JSON.stringify(n)),q(e,a)}))},plus.io.resolveLocalFileSystemURL(n,(e=>{o(e)}),(()=>{plus.io.resolveLocalFileSystemURL("/storage/emulated/0/",(n=>{n.getDirectory("yxd",{create:!0},(e=>{o(e)}),(n=>{t("error","at pages/CloudDatabase/CloudDatabase.vue:845","创建 yxd 目录失败:",JSON.stringify(n)),uni.showToast({title:"创建目录失败",icon:"error"}),q(e,a)}))}),(n=>{t("error","at pages/CloudDatabase/CloudDatabase.vue:850","访问外部存储根目录失败:",JSON.stringify(n)),uni.showToast({title:"无法访问存储目录",icon:"error"}),q(e,a)}))}))},q=(e,t)=>{uni.showActionSheet({title:`${e} 下载完成`,itemList:["打开文件","选择其他应用打开","仅保存"],success:e=>{switch(e.tapIndex){case 0:W(t);break;case 1:R(t);break;case 2:uni.showToast({title:"文件已保存到 yxd 目录",icon:"success"})}},fail:()=>{uni.showToast({title:"文件已保存到 yxd 目录",icon:"success"})}})},W=e=>{uni.openDocument({filePath:e,success:()=>uni.showToast({title:"打开成功",icon:"success"}),fail:a=>{t("error","at pages/CloudDatabase/CloudDatabase.vue:936","打开文件失败:",a),R(e)}})},R=e=>{plus.runtime.openFile(e,{},(e=>{t("log","at pages/CloudDatabase/CloudDatabase.vue:948","文件打开成功")}))},J=e=>{uni.showModal({title:"重命名",content:"请输入新名称",editable:!0,placeholderText:e.name,success:e=>{e.confirm&&e.content&&(uni.showToast({title:"重命名成功",icon:"success"}),G())}})},H=e=>{const a=D(e)?`确定要删除目录"${e.name}"吗?目录内所有文件将被一并删除。`:`确定要删除文件"${e.name}"吗?`;uni.showModal({title:"删除确认",content:a,confirmText:"删除",confirmColor:"#e74c3c",success:async a=>{if(a.confirm){uni.showLoading({title:"删除中..."});try{await(n=o.value,l=e.id,new Promise(((e,t)=>{uni.request({url:`${s}/cloud_api/file/delete`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:n,file_id:l},success:a=>{if(200===a.statusCode){const n=a.data;if(n.success)e(n.message);else{const e=(null==n?void 0:n.error)||"删除云端文件出错啦";t(e)}}else t(`删除云端文件失败:${a.statusCode}`)},fail:e=>{const a=e.errMsg||"网络错误";t(a)}})}))),uni.hideLoading(),uni.showToast({title:"删除成功",icon:"success"}),G()}catch(i){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1014","deleteCloudFile 失败,尝试 daleteWorkspace",i);try{const t=e.path||"/"+e.name;c.value&&await d(o.value,c.value,t),uni.showToast({title:"删除成功",icon:"success"}),G()}catch(r){t("error","at pages/CloudDatabase/CloudDatabase.vue:1026","删除失败:",r),uni.showToast({title:"删除失败,请重试",icon:"error"})}}}var n,l}})},G=async()=>{"user"===r.value?await I():await z(Te.value)},K=e.ref(!1),X=e.ref(""),Y=()=>{K.value=!1,X.value=""},Q=async()=>{const e=X.value.trim();if(e)try{if(c.value){const t=("根目录 (/)"===$.value?"/":$.value)+e;await m(o.value,c.value,t)}uni.showToast({title:"创建成功",icon:"success"}),Y(),G()}catch(a){t("error","at pages/CloudDatabase/CloudDatabase.vue:1083","创建文件夹失败:",a),uni.showToast({title:"创建失败,请重试",icon:"error"})}else uni.showToast({title:"请输入目录名称",icon:"none"})},Z=e.ref(!1),ee=e.ref("/"),te=()=>{Z.value=!0,ee.value="/"},ae=()=>{Z.value=!1},ne=()=>{ee.value.trim()||(ee.value="/"),Z.value=!1,oe()},oe=()=>{se({count:10,type:"all",success:e=>{const t=(e.tempFiles||[]).map((e=>({tempFilePath:e.path||e.tempFilePath,name:e.name})));0!==t.length?le(t):uni.showToast({title:"未选择文件",icon:"none"})},fail:e=>{t("error","at pages/CloudDatabase/CloudDatabase.vue:1133","选择文件失败:",e)}})},le=async e=>{uni.showLoading({title:"上传中..."});try{const t=ee.value.trim()||"/",a="user"===r.value?"user":"team",n="team"===r.value?Te.value:"";await((e,t,a,n,o)=>new Promise(((l,c)=>{const i=null==o?"":String(o);uni.uploadFile({url:`${s}/cloud_api/file/upload`,method:"POST",header:{},formData:{access_token:e,path:a||"/",type:t,team_id:i},files:n.map((e=>({uri:e.tempFilePath,name:"files"}))),success:e=>{if(200===e.statusCode)try{const t=JSON.parse(e.data);if(t.success)l(t.message);else{const e=(null==t?void 0:t.error)||"获取云端文件url出错啦";c(e)}}catch(t){c("接口返回数据格式异常")}else c(`获取云端文件url失败${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";c(t)}})})))(o.value,a,t,e,n),uni.hideLoading(),uni.showToast({title:"上传成功",icon:"success"}),G()}catch(a){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1159","上传文件失败:",a),uni.showToast({title:"上传失败,请重试",icon:"error"})}},ce=e.ref([]),ie=e.ref(!1),re=e.computed((()=>ce.value)),ue=e.computed((()=>ce.value.filter((e=>e.team_id&&String(e.team_id)===String(Te.value))))),de=e.ref(!1),me=e.ref(""),ve=async()=>{ie.value=!0;try{const e=E(),t=await(e=>new Promise(((t,a)=>{uni.request({url:`${s}/cloud_api/database/list`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e},success:e=>{if(200===e.statusCode){const n=e.data;if(n.success)t(n.databases);else{const e=(null==n?void 0:n.error)||"获取用户可访问的数据库列表出错啦";a(e)}}else a(`获取用户可访问的数据库列表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})))(e);ce.value=t||[]}catch(e){t("error","at pages/CloudDatabase/CloudDatabase.vue:1185","获取数据库列表失败:",e),ce.value=[]}finally{ie.value=!1}},pe=()=>{de.value=!0,me.value=""},fe=()=>{de.value=!1,me.value=""},he=async()=>{const e=me.value.trim();if(e){uni.showLoading({title:"创建中..."});try{const t=E();await((e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/database/create`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,database_name:t},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)a(t.message);else{const e=(null==t?void 0:t.error)||"创建数据库出错啦";n(e)}}else n(`创建数据库失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})))(t,e),uni.hideLoading(),uni.showToast({title:"创建成功",icon:"success"}),fe(),await ve()}catch(a){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1216","创建数据库失败:",a),uni.showToast({title:"创建失败,请重试",icon:"error"})}}else uni.showToast({title:"请输入数据库名称",icon:"none"})},ge=e.ref(!1),we=e.ref(""),ke=e.ref(""),ye=()=>{ge.value=!0,we.value="",ke.value=""},Ee=()=>{ge.value=!1},Ce=()=>{se({count:1,type:"all",success:e=>{const t=e.tempFiles[0];we.value=t.name||"unknown",ke.value=t.path},fail:e=>{t("error","at pages/CloudDatabase/CloudDatabase.vue:1245","选择文件失败:",e),uni.showToast({title:"选择文件失败",icon:"none"})}})},Ne=async()=>{var e;if(!ke.value)return void uni.showToast({title:"请选择数据库文件",icon:"none"});const a=null==(e=we.value.split(".").pop())?void 0:e.toLowerCase();if(["db","sqlite","sqlite3"].includes(a)){uni.showLoading({title:"上传中..."});try{const e=E();await((e,t)=>new Promise(((a,n)=>{const o="string"==typeof t?t:t.tempFilePath||t.path||t,l="string"==typeof t?t.split("/").pop()||"database.db":t.name||"database.db";uni.uploadFile({url:`${s}/cloud_api/database/upload/db`,method:"POST",header:{},formData:{access_token:e},file:{name:l,uri:o},files:[{name:"file",uri:o}],success:e=>{if(200===e.statusCode)try{const t=JSON.parse(e.data);if(t.success)a(t.message);else{const e=(null==t?void 0:t.error)||"上传db出错啦";n(e)}}catch(t){n("接口返回数据格式异常")}else n(`上传db失败${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})))(e,ke.value),uni.hideLoading(),uni.showToast({title:"上传成功",icon:"success"}),Ee(),await ve()}catch(n){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1273","上传数据库失败:",n),uni.showToast({title:"上传失败,请重试",icon:"error"})}}else uni.showToast({title:"仅支持 .db / .sqlite / .sqlite3 文件",icon:"none"})},be=e=>{uni.showModal({title:"删除数据库",content:`确定要删除数据库"${e.database_name}"吗?此操作不可恢复。`,success:async a=>{if(a.confirm){uni.showLoading({title:"删除中..."});try{const t=E();await((e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/database/delete`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,database_id:t},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)a(t.message);else{const e=(null==t?void 0:t.error)||"删除数据库出错啦";n(e)}}else n(`删除数据库失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})))(t,e.database_id),uni.hideLoading(),uni.showToast({title:"删除成功",icon:"success"}),await ve()}catch(n){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1293","删除数据库失败:",n),uni.showToast({title:"删除失败,请重试",icon:"error"})}}}})},Ve=e=>{uni.navigateTo({url:`/pages/CloudDbDetail/CloudDbDetail?databaseId=${e.database_id}&databaseName=${encodeURIComponent(e.database_name)}&teamId=${e.team_id||""}`})},_e=e=>{if(!e)return"";const t=new Date(1e3*e);return`${t.getFullYear()}-${String(t.getMonth()+1).padStart(2,"0")}-${String(t.getDate()).padStart(2,"0")}`},Be=e=>({0:"无权限",1:"只读",2:"读写",3:"管理"}[e]||"未知"),Se=e.ref(!1),xe=e.ref([]),Te=e.ref(""),De=e.ref([]),Pe=e.ref(""),je=e.computed((()=>{if(!Te.value)return"";const e=xe.value.find((e=>e.id===Te.value));return(null==e?void 0:e.description)||""})),$e=e.computed((()=>{if(!Te.value)return"";const e=xe.value.find((e=>e.id===Te.value));return(null==e?void 0:e.type)||""})),Le=e.computed((()=>{if(!l.value||0===De.value.length)return"member";const e=De.value.find((e=>e.receiver===l.value||e.user_id===l.value));return(null==e?void 0:e.role)||"member"}));e.computed((()=>{const e=Le.value;return"admin"===e||"owner"===e}));const Me=async()=>{try{const e=E(),t=await p(e);xe.value=t||[]}catch(e){t("error","at pages/CloudDatabase/CloudDatabase.vue:1362","获取团队列表失败:",e),xe.value=[]}},Ie=async e=>{t("log","at pages/CloudDatabase/CloudDatabase.vue:1368","团队id为",e),Te.value=e;try{const t=E(),a=await f(t,e);De.value=(a||[]).map((e=>{var t,a,n,o,l;return{id:e._id,receiver:e.user_id,user_id:e.user_id,friendNickName:(null==(t=e.user)?void 0:t.username)||"",username:(null==(a=e.user)?void 0:a.username)||"",avatar:(null==(n=e.user)?void 0:n.avatar)||"",email:(null==(o=e.user)?void 0:o.email)||"",role:e.role||(null==(l=e.user)?void 0:l.role)||"member"}}))}catch(a){t("error","at pages/CloudDatabase/CloudDatabase.vue:1385","获取团队成员失败:",a),De.value=[]}T.value=[],g.value="云端数据",await z(e)},ze=async()=>{if(Te.value)try{const e=E(),t=await f(e,Te.value),a=(t||[]).find((e=>e.user_id===l.value)),n=(null==a?void 0:a.role)||"member";if("admin"!==n&&"owner"!==n)return void uni.showToast({title:"仅管理员可管理团队",icon:"none"});De.value=(t||[]).map((e=>{var t,a,n,o,l;return{id:e._id,receiver:e.user_id,user_id:e.user_id,friendNickName:(null==(t=e.user)?void 0:t.username)||"",username:(null==(a=e.user)?void 0:a.username)||"",avatar:(null==(n=e.user)?void 0:n.avatar)||"",email:(null==(o=e.user)?void 0:o.email)||"",role:e.role||(null==(l=e.user)?void 0:l.role)||"member"}}))}catch(e){return t("error","at pages/CloudDatabase/CloudDatabase.vue:1419","获取团队成员失败:",e),void uni.showToast({title:"获取团队信息失败",icon:"none"})}else if(xe.value.length>0){await Ie(xe.value[0].id),Se.value=!0;const e=De.value.find((e=>(e.receiver||e.user_id)===l.value)),t=(null==e?void 0:e.role)||"member";if("admin"!==t&&"owner"!==t)return Se.value=!1,void uni.showToast({title:"仅管理员可管理团队",icon:"none"})}Se.value=!0},Fe=()=>{Se.value=!1,Pe.value="",Xe.value=[],Ye.value=!1},Oe=e.ref(!1),Ae=e.ref(""),Ue=e.ref(""),qe=e.ref(""),We=()=>{const e=xe.value.find((e=>e.id===Te.value));e?(Ae.value=e.name||"",Ue.value=e.description||"",qe.value=e.type||"",Oe.value=!0):uni.showToast({title:"请先选择团队",icon:"none"})},Re=()=>{Oe.value=!1},Je=async()=>{const e=Ae.value.trim();if(e){uni.showLoading({title:"修改中..."});try{const t=E();await((e,t,a)=>new Promise(((n,o)=>{uni.request({url:`${s}/cloud_api/team/update`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_id:t,...a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"修改团队信息出错啦";o(e)}}else o(`修改团队信息失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(t,Te.value,{team_name:e,team_description:Ue.value.trim(),team_type:qe.value.trim()}),uni.hideLoading(),uni.showToast({title:"修改成功",icon:"success"}),Re(),await Me(),Te.value=Te.value}catch(a){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1491","修改团队信息失败:",a),uni.showToast({title:"修改失败,请重试",icon:"error"})}}else uni.showToast({title:"请输入团队名称",icon:"none"})},He=async(e,a)=>{const n=e.friendNickName||e.username||e.name;uni.showModal({title:"admin"===a?"设为管理员":"降为成员",content:`确定将"${n}"${"admin"===a?"设为管理员":"降为普通成员"}吗?`,success:async n=>{if(n.confirm){uni.showLoading({title:"操作中..."});try{const t=E(),n=e.receiver||e.user_id;await((e,t,a,n)=>new Promise(((o,l)=>{uni.request({url:`${s}/cloud_api/team/adjust_member_role`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_id:t,user_id:a,role:n},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)o(t.message);else{const e=(null==t?void 0:t.error)||"调整团员身份出错啦";l(e)}}else l(`调整团员身份失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(t,Te.value,n,a),uni.hideLoading(),uni.showToast({title:"已"+("admin"===a?"设为管理员":"降为成员"),icon:"success"}),await Ke()}catch(o){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1516","调整成员身份失败:",o),uni.showToast({title:"操作失败,请重试",icon:"error"})}}}})},Ge=async e=>{const a=e.friendNickName||e.username||e.name;uni.showModal({title:"移除成员",content:`确定要移除"${a}"吗?`,success:async a=>{if(a.confirm){uni.showLoading({title:"移除中..."});try{const t=E(),a=e.receiver||e.user_id;await((e,t,a)=>new Promise(((n,o)=>{uni.request({url:`${s}/cloud_api/team/remove_member`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_id:t,user_ids:a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"移除团队成员出错啦";o(e)}}else o(`移除团队成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(t,Te.value,[a]),uni.hideLoading(),uni.showToast({title:"已移除",icon:"success"}),await Ke()}catch(n){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1542","移除团队成员失败:",n),uni.showToast({title:"移除失败,请重试",icon:"error"})}}}})},Ke=async()=>{const e=E(),t=await f(e,Te.value);De.value=(t||[]).map((e=>{var t,a,n,o;return{id:e._id,receiver:e.user_id,user_id:e.user_id,friendNickName:(null==(t=e.user)?void 0:t.username)||"",username:(null==(a=e.user)?void 0:a.username)||"",avatar:(null==(n=e.user)?void 0:n.avatar)||"",email:(null==(o=e.user)?void 0:o.email)||"",role:e.role||"member"}}))},Xe=e.ref([]),Ye=e.ref(!1),Qe=async()=>{const e=Pe.value.trim();if(e)try{const t=E(),a=await u(t,e);Xe.value=a||[],Ye.value=!0,Xe.value.length}catch(a){t("error","at pages/CloudDatabase/CloudDatabase.vue:1584","搜索用户失败:",a),Xe.value=[],Ye.value=!0}else uni.showToast({title:"请输入用户名或邮箱",icon:"none"})},Ze=e=>{uni.showModal({title:"添加成员",content:`确定将"${e.username}"添加到当前团队吗?`,success:async a=>{if(a.confirm){uni.showLoading({title:"添加中..."});try{const t=E();await((e,t,a)=>new Promise(((n,o)=>{uni.request({url:`${s}/cloud_api/team/add_member`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_id:t,user_ids:a,role:"admin"},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"添加团队成员出错啦";o(e)}}else o(`添加团队成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(t,Te.value,[e._id]),uni.hideLoading(),uni.showToast({title:"添加成功",icon:"success"}),Pe.value="",Xe.value=[],Ye.value=!1,await Ke()}catch(n){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1610","添加团队成员失败:",n),uni.showToast({title:"添加失败,请重试",icon:"error"})}}}})},et=()=>{const e=xe.value.find((e=>e.id===Te.value)),a=e?e.name:"当前团队";uni.showModal({title:"删除团队",content:`确定要删除团队"${a}"吗?此操作不可撤销,团队内所有文件和数据将被永久删除。`,confirmText:"删除",confirmColor:"#e74c3c",success:async e=>{if(e.confirm){uni.showLoading({title:"删除中..."});try{await(a=o.value,n=Te.value,new Promise(((e,t)=>{uni.request({url:`${s}/cloud_api/team/delete`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:a,team_id:n},success:a=>{if(200===a.statusCode){const n=a.data;if(n.success)e(n.message);else{const e=(null==n?void 0:n.error)||"删除团队出错啦";t(e)}}else t(`删除团队失败:${a.statusCode}`)},fail:e=>{const a=e.errMsg||"网络错误";t(a)}})}))),uni.hideLoading(),uni.showToast({title:"团队已删除",icon:"success"}),Te.value="",De.value=[],x.value=[],T.value=[],g.value="云端数据",await Me(),Fe()}catch(l){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1644","删除团队失败:",l),uni.showToast({title:"删除失败,请重试",icon:"error"})}}var a,n}})};return e.onMounted((async()=>{await I(),await Me(),await ve()})),(t,n)=>{const o=a(e.resolveDynamicComponent("uni-icons"),y);return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),Se.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"popup-overlay",onClick:Fe},[e.createElementVNode("view",{class:"popup-card",onClick:n[1]||(n[1]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:Fe},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"团队管理"),e.createElementVNode("scroll-view",{class:"team-manage-body","scroll-y":""},[0===De.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"folder-null"},"暂无团队成员")):(e.openBlock(),e.createElementBlock("view",{key:1,class:"member-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(De.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"member-item",key:t._id||t.receiver},[e.createElementVNode("view",{class:"member-avatar"},[t.avatar?(e.openBlock(),e.createElementBlock("image",{key:0,src:t.avatar,mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"default-avatar"},[e.createVNode(o,{type:"person-filled",size:"60rpx",color:"#ffffff"})]))]),e.createElementVNode("view",{class:"member-info"},[e.createElementVNode("view",{class:"member-name"},e.toDisplayString(t.friendNickName||t.username||t.name),1),e.createElementVNode("view",{class:"member-label"},e.toDisplayString(t.email||t.sessionId||""),1)]),e.createElementVNode("view",{class:"member-actions"},[(t.receiver||t.user_id)===l.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:e.normalizeClass(["member-role",Le.value])},e.toDisplayString("owner"===Le.value?"创建者":"管理员"),3)):"owner"===t.role?(e.openBlock(),e.createElementBlock("view",{key:1,class:"member-role owner"},"创建者")):"admin"===t.role?(e.openBlock(),e.createElementBlock("view",{key:2,class:"member-actions-right"},[e.createElementVNode("view",{class:"member-action-btn demote-admin",onClick:e=>He(t,"member")},"降为成员",8,["onClick"]),e.createElementVNode("view",{class:"member-action-btn remove-member",onClick:e=>Ge(t)},"移除",8,["onClick"])])):(e.openBlock(),e.createElementBlock("view",{key:3,class:"member-actions-right"},[e.createElementVNode("view",{class:"member-action-btn set-admin",onClick:e=>He(t,"admin")},"设为管理",8,["onClick"]),e.createElementVNode("view",{class:"member-action-btn remove-member",onClick:e=>Ge(t)},"移除",8,["onClick"])]))])])))),128))]))]),e.createElementVNode("view",{class:"invite-section"},[e.createElementVNode("view",{class:"invite-input-wrapper"},[e.withDirectives(e.createElementVNode("input",{class:"invite-input",placeholder:"输入用户名或邮箱搜索","onUpdate:modelValue":n[0]||(n[0]=e=>Pe.value=e),onConfirm:Qe},null,544),[[e.vModelText,Pe.value]]),e.createElementVNode("view",{class:"invite-btn text-btn",onClick:Qe},"搜索")]),Xe.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:0,class:"search-result-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Xe.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"search-result-item",key:t._id,onClick:e=>Ze(t)},[t.avatar?(e.openBlock(),e.createElementBlock("image",{key:0,src:t.avatar,class:"result-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"result-default-avatar"},[e.createVNode(o,{type:"person-filled",size:"40rpx",color:"#fff"})])),e.createElementVNode("view",{class:"result-info"},[e.createElementVNode("text",{class:"result-name"},e.toDisplayString(t.username),1),e.createElementVNode("text",{class:"result-email"},e.toDisplayString(t.email),1)]),e.createElementVNode("view",{class:"result-add-btn"},"添加")],8,["onClick"])))),128))])):Pe.value&&Ye.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"search-empty"},"未找到匹配用户")):e.createCommentVNode("",!0)]),e.createElementVNode("view",{class:"edit-team-section"},[e.createElementVNode("view",{class:"edit-team-btn",onClick:We},"修改团队信息")]),e.createElementVNode("view",{class:"delete-team-section"},[e.createElementVNode("view",{class:"delete-team-btn",onClick:et},"删除团队")])])])):e.createCommentVNode("",!0),Oe.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"popup-overlay",onClick:Re},[e.createElementVNode("view",{class:"popup-card",onClick:n[4]||(n[4]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:Re},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"修改团队信息"),e.createElementVNode("view",{class:"edit-team-form"},[e.createElementVNode("view",{class:"form-label"},"团队名称"),e.createElementVNode("view",{class:"create-folder-name"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[2]||(n[2]=e=>Ae.value=e),type:"text",placeholder:"输入团队名称"},null,512),[[e.vModelText,Ae.value]])]),e.createElementVNode("view",{class:"form-label"},"团队描述"),e.createElementVNode("view",{class:"create-folder-name"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[3]||(n[3]=e=>Ue.value=e),type:"text",placeholder:"输入团队描述"},null,512),[[e.vModelText,Ue.value]])])]),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:Re},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:Je},"确认修改")])])])):e.createCommentVNode("",!0),K.value?(e.openBlock(),e.createElementBlock("view",{key:2,class:"popup-overlay",onClick:Y},[e.createElementVNode("view",{class:"popup-card",onClick:n[6]||(n[6]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:Y},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"新建"+e.toDisplayString("user"===r.value?"个人":"团队")+"目录",1),e.createElementVNode("view",{class:"new-folder-name"},"目录名称"),e.createElementVNode("view",{class:"create-folder-name"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[5]||(n[5]=e=>X.value=e),type:"text",placeholder:"输入目录名称"},null,512),[[e.vModelText,X.value]])]),e.createElementVNode("view",{class:"nf-path-label"},"当前路径"),e.createElementVNode("view",{class:"nf-path-display"},e.toDisplayString($.value),1),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:Y},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:Q},"确认")])])])):e.createCommentVNode("",!0),Z.value?(e.openBlock(),e.createElementBlock("view",{key:3,class:"popup-overlay",onClick:ae},[e.createElementVNode("view",{class:"popup-card",onClick:n[8]||(n[8]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:ae},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"上传文件"),e.createElementVNode("view",{class:"upload-path-label"},"上传路径"),e.createElementVNode("view",{class:"create-folder-name"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[7]||(n[7]=e=>ee.value=e),type:"text",placeholder:"输入上传路径,如:/myfolder"},null,512),[[e.vModelText,ee.value]])]),e.createElementVNode("view",{class:"upload-path-hint"},"默认为根目录 /,后端会自动创建不存在的文件夹"),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:ae},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:ne},"确认上传")])])])):e.createCommentVNode("",!0),de.value?(e.openBlock(),e.createElementBlock("view",{key:4,class:"popup-overlay",onClick:fe},[e.createElementVNode("view",{class:"popup-card",onClick:n[10]||(n[10]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:fe},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"新建个人数据库"),e.createElementVNode("view",{class:"new-folder-name"},"数据库名称"),e.createElementVNode("view",{class:"create-folder-name"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[9]||(n[9]=e=>me.value=e),type:"text",placeholder:"输入数据库名称"},null,512),[[e.vModelText,me.value]])]),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:fe},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:he},"确认")])])])):e.createCommentVNode("",!0),ge.value?(e.openBlock(),e.createElementBlock("view",{key:5,class:"popup-overlay",onClick:Ee},[e.createElementVNode("view",{class:"popup-card",onClick:n[11]||(n[11]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:Ee},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"上传数据库文件"),e.createElementVNode("view",{class:"upload-db-hint"},"支持 .db / .sqlite / .sqlite3 格式的 SQLite 数据库文件"),e.createElementVNode("view",{class:"upload-file-area",onClick:Ce},[we.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"selected-file"},e.toDisplayString(we.value),1)):(e.openBlock(),e.createElementBlock("view",{key:1,class:"upload-hint"},"点击选择数据库文件"))]),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:Ee},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:Ne},"确认上传")])])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"cloud-db-container page-container"},[e.createElementVNode("view",{class:"cloud-db-header"},[e.createElementVNode("view",{class:"custom-navbar"},[e.createElementVNode("view",{class:"navbar-left",onClick:V},[e.createElementVNode("view",{class:"iconfont icon-fanhui custom-navbar-icon"}),T.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:0,class:"navbar-before-title"},e.toDisplayString(b.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("view",{class:"navbar-title"},e.toDisplayString(g.value),1),e.createElementVNode("view",{class:"navbar-right"}),w.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"menu-card"},[e.createElementVNode("view",{class:"menu-card-item",onClick:n[12]||(n[12]=e=>{k.value=!k.value,k.value||(C.value=[]),N()})},"选择"),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("view",{class:"menu-card-item",onClick:n[13]||(n[13]=e=>{K.value=!0,X.value="",N()})},"新建文件夹")])):e.createCommentVNode("",!0)]),e.createElementVNode("view",{class:"category-tabs"},[e.createElementVNode("view",{class:e.normalizeClass(["category-tab",{active:"user"===r.value}]),onClick:n[14]||(n[14]=e=>h("user"))}," 个人 ",2),e.createElementVNode("view",{class:e.normalizeClass(["category-tab",{active:"team"===r.value}]),onClick:n[15]||(n[15]=e=>h("team"))}," 团队 ",2)])]),e.createElementVNode("scroll-view",{class:"cloud-db-content","scroll-y":""},["user"===r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[e.createElementVNode("view",{class:"section-block"},[e.createElementVNode("view",{class:"section-header"},[e.createElementVNode("view",{class:"section-title"},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"}),e.createElementVNode("text",null,"云端文件"),e.createElementVNode("text",{class:"file-count"},e.toDisplayString(L.value>0?"("+L.value+")":""),1)]),e.createElementVNode("view",{class:"section-actions"},[e.createElementVNode("view",{class:"action-btn",onClick:te},[e.createVNode(o,{type:"upload",size:"16"}),e.createElementVNode("text",null,"上传文件")])])]),e.createElementVNode("view",{class:"section-body"},[0===S.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"empty-tip"},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"}),e.createElementVNode("text",null,"暂无云端文件")])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"file-grid"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(S.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"file-item",key:t.id,onClick:e=>F(t),onLongpress:e=>O(t)},[e.createElementVNode("view",{class:e.normalizeClass(["file-icon",D(t)?"is-directory":"is-file"])},[e.createElementVNode("view",{class:e.normalizeClass(["iconfont",P(t)])},null,2)],2),e.createElementVNode("view",{class:"file-name"},e.toDisplayString(t.name),1),e.createElementVNode("view",{class:"file-meta"},[e.createElementVNode("text",{class:"file-type-tag"},e.toDisplayString(D(t)?"目录":"文件"),1),t.size?(e.openBlock(),e.createElementBlock("text",{key:0,class:"file-size"},e.toDisplayString(j(t.size)),1)):e.createCommentVNode("",!0)])],40,["onClick","onLongpress"])))),128))]))])]),e.createElementVNode("view",{class:"section-divider"}),e.createElementVNode("view",{class:"section-block"},[e.createElementVNode("view",{class:"section-header"},[e.createElementVNode("view",{class:"section-title"},[e.createElementVNode("view",{class:"iconfont icon-shujuku"}),e.createElementVNode("text",null,"云端数据库"),e.createElementVNode("text",{class:"file-count"},e.toDisplayString(!ie.value&&re.value.length>0?"("+re.value.length+")":""),1)]),e.createElementVNode("view",{class:"section-actions"},[e.createElementVNode("view",{class:"action-btn",onClick:ye},[e.createVNode(o,{type:"upload",size:"16"}),e.createElementVNode("text",null,"上传数据库")]),e.createElementVNode("view",{class:"action-btn",onClick:pe},[e.createVNode(o,{type:"plus",size:"16"}),e.createElementVNode("text",null,"新建数据库")])])]),e.createElementVNode("view",{class:"section-body"},[ie.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"loading-area"},[e.createElementVNode("view",{class:"loading-spinner"}),e.createElementVNode("text",{class:"loading-text"},"加载中...")])):0===re.value.length?(e.openBlock(),e.createElementBlock("view",{key:1,class:"empty-tip"},[e.createElementVNode("view",{class:"iconfont icon-shujuku"}),e.createElementVNode("text",null,"暂无数据库")])):(e.openBlock(),e.createElementBlock("view",{key:2,class:"table-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(re.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"table-item",key:t.database_id,onClick:e=>Ve(t),onLongpress:e=>be(t)},[e.createElementVNode("view",{class:"table-icon"},[e.createVNode(o,{type:"compose",size:"22",color:"#3b86ff"})]),e.createElementVNode("view",{class:"table-info"},[e.createElementVNode("view",{class:"table-name"},[e.createTextVNode(e.toDisplayString(t.database_name)+" ",1),e.createElementVNode("text",{class:e.normalizeClass(["db-tag",t.team_id?"tag-team":"tag-personal"])},e.toDisplayString(t.team_id?"团队共享":"个人私有"),3)]),e.createElementVNode("view",{class:"table-desc"},e.toDisplayString(t.table_count||0)+" 张表 · "+e.toDisplayString(Be(t.access_level)),1)]),e.createElementVNode("view",{class:"table-meta"},[e.createElementVNode("text",{class:"table-rows"},e.toDisplayString(_e(t.modified_time)),1),e.createVNode(o,{type:"right",size:"14",color:"#999"})])],40,["onClick","onLongpress"])))),128))]))])])],64)):e.createCommentVNode("",!0),"team"===r.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("view",{class:"section-block team-manage-block",onClick:ze},[e.createElementVNode("view",{class:"section-header"},[e.createElementVNode("view",{class:"section-title"},[e.createElementVNode("view",{class:"iconfont icon-qunliao"}),e.createElementVNode("text",null,"团队管理")]),e.createElementVNode("view",{class:"section-actions"},[e.createElementVNode("text",{class:"team-count"},e.toDisplayString(xe.value.length)+" 个团队",1),e.createVNode(o,{type:"right",size:"14",color:"#999"})])])]),e.createElementVNode("view",{class:"section-divider"}),xe.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:0,class:"team-selector"},[e.createElementVNode("scroll-view",{"scroll-x":"",class:"team-scroll"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(xe.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["team-chip",{active:Te.value===t.id}]),key:t.id,onClick:e=>Ie(t.id)},e.toDisplayString(t.name),11,["onClick"])))),128))]),$e.value||je.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"team-info"},[$e.value?(e.openBlock(),e.createElementBlock("text",{key:0,class:"team-type-tag"},e.toDisplayString($e.value),1)):e.createCommentVNode("",!0),je.value?(e.openBlock(),e.createElementBlock("text",{key:1,class:"team-desc-text"},e.toDisplayString(je.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),!Te.value&&xe.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:1,class:"empty-tip select-team-tip"},[e.createElementVNode("view",{class:"iconfont icon-qunliao"}),e.createElementVNode("text",null,"请选择一个团队")])):e.createCommentVNode("",!0),Te.value?(e.openBlock(),e.createElementBlock("view",{key:2,class:"section-block"},[e.createElementVNode("view",{class:"section-header"},[e.createElementVNode("view",{class:"section-title"},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"}),e.createElementVNode("text",null,"团队云端文件")]),e.createElementVNode("view",{class:"section-actions"},[e.createElementVNode("view",{class:"action-btn",onClick:te},[e.createVNode(o,{type:"upload",size:"16"}),e.createElementVNode("text",null,"上传文件")])])]),e.createElementVNode("view",{class:"section-body"},[0===x.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"empty-tip"},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"}),e.createElementVNode("text",null,"暂无团队云端文件")])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"file-grid"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(x.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"file-item",key:t.id,onClick:e=>F(t),onLongpress:e=>O(t)},[e.createElementVNode("view",{class:e.normalizeClass(["file-icon",D(t)?"is-directory":"is-file"])},[e.createElementVNode("view",{class:e.normalizeClass(["iconfont",P(t)])},null,2)],2),e.createElementVNode("view",{class:"file-name"},e.toDisplayString(t.name),1),e.createElementVNode("view",{class:"file-meta"},[e.createElementVNode("text",{class:"file-type-tag"},e.toDisplayString(D(t)?"目录":"文件"),1),t.size?(e.openBlock(),e.createElementBlock("text",{key:0,class:"file-size"},e.toDisplayString(j(t.size)),1)):e.createCommentVNode("",!0)])],40,["onClick","onLongpress"])))),128))]))])])):e.createCommentVNode("",!0),Te.value?(e.openBlock(),e.createElementBlock("view",{key:3,class:"section-divider"})):e.createCommentVNode("",!0),Te.value?(e.openBlock(),e.createElementBlock("view",{key:4,class:"section-block"},[e.createElementVNode("view",{class:"section-header"},[e.createElementVNode("view",{class:"section-title"},[e.createElementVNode("view",{class:"iconfont icon-shujuku"}),e.createElementVNode("text",null,"团队云端数据库")])]),e.createElementVNode("view",{class:"section-body"},[ie.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"loading-area"},[e.createElementVNode("view",{class:"loading-spinner"}),e.createElementVNode("text",{class:"loading-text"},"加载中...")])):0===ue.value.length?(e.openBlock(),e.createElementBlock("view",{key:1,class:"empty-tip"},[e.createElementVNode("view",{class:"iconfont icon-shujuku"}),e.createElementVNode("text",null,"暂无团队数据库")])):(e.openBlock(),e.createElementBlock("view",{key:2,class:"table-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(ue.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"table-item",key:t.database_id,onClick:e=>Ve(t)},[e.createElementVNode("view",{class:"table-icon"},[e.createVNode(o,{type:"compose",size:"22",color:"#3b86ff"})]),e.createElementVNode("view",{class:"table-info"},[e.createElementVNode("view",{class:"table-name"},[e.createTextVNode(e.toDisplayString(t.database_name)+" ",1),e.createElementVNode("text",{class:"db-tag tag-team"},"团队共享")]),e.createElementVNode("view",{class:"table-desc"},e.toDisplayString(t.table_count||0)+" 张表 · "+e.toDisplayString(Be(t.access_level)),1)]),e.createElementVNode("view",{class:"table-meta"},[e.createElementVNode("text",{class:"table-rows"},e.toDisplayString(_e(t.modified_time)),1),e.createVNode(o,{type:"right",size:"14",color:"#999"})])],8,["onClick"])))),128))]))])])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)])])],64)}}},[["__scopeId","data-v-2d96f7d1"]]),fe=g({__name:"CloudDbDetail",props:{databaseId:{type:String,default:""},databaseName:{type:String,default:""},teamId:{type:String,default:""}},setup(n){const o=n,l=e.ref(o.databaseId||""),c=e.ref(o.databaseName||""),i=e.ref(o.teamId||""),r=e.ref(2),u=e.ref(0),d=e.ref([]),m=e.ref(!1),v=e.ref(null),f=e.ref([]),g=e.computed((()=>{var e;if(f.value.length>0){const e=new Set;return f.value.forEach((t=>Object.keys(t).forEach((t=>e.add(t))))),Array.from(e).filter((e=>"_row_id"!==e&&"_id"!==e))}return(null==(e=v.value)?void 0:e.columns)?v.value.columns.map((e=>e.name)).filter((e=>"_row_id"!==e)):[]})),w=e.ref(!1),k=()=>{w.value=!w.value},C=()=>{uni.navigateBack()},N=async()=>{m.value=!0;try{const e=E(),t=await((e,t,a)=>new Promise(((n,o)=>{uni.request({url:`${s}/cloud_api/database/tables`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,database_id:t,is_detail:a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.tables);else{const e=(null==t?void 0:t.error)||"获取用户可访问的数据库列表出错啦";o(e)}}else o(`获取用户可访问的数据库列表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(e,l.value,!0);d.value=(t||[]).map((e=>({table_name:e.name,row_count:e.row_count||0,columns:e.columns||[]}))),u.value=d.value.length}catch(e){t("error","at pages/CloudDbDetail/CloudDbDetail.vue:282","获取表列表失败:",e),d.value=[]}finally{m.value=!1}},V=async e=>{v.value=e,f.value=[],uni.showLoading({title:"加载中..."});try{const t=E(),a=await((e,t,a,n="20",o="0")=>new Promise(((l,c)=>{uni.request({url:`${s}/cloud_api/database/table/data`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,database_id:t,table_name:a,limit:n,offset:o},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)l(t.data);else{const e=(null==t?void 0:t.error)||"获取表数据出错啦";c(e)}}else c(`获取表数据失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";c(t)}})})))(t,l.value,e.table_name);f.value=a||[],uni.hideLoading()}catch(t){uni.hideLoading(),uni.showToast({title:"string"==typeof t?t:"加载表数据失败",icon:"none"}),f.value=[]}},_=e=>{uni.showModal({title:"删除表",content:`确定要删除表"${e.table_name}"吗?此操作不可恢复。`,success:async a=>{var n;if(a.confirm){uni.showLoading({title:"删除中..."});try{const t=E();await(async(e,t,a)=>new Promise(((n,o)=>{uni.request({url:`${s}/cloud_api/database/table/drop`,method:"POST",data:{access_token:e,database_id:t,table_name:a},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)n(t.message);else{const e=t.error||"删除数据库中的表出错啦";o(e)}}else o(`删除数据库中的表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(t,l.value,e.table_name),uni.hideLoading(),uni.showToast({title:"删除成功",icon:"success"}),(null==(n=v.value)?void 0:n.table_name)===e.table_name&&(v.value=null,f.value=[]),await N()}catch(o){uni.hideLoading(),t("error","at pages/CloudDbDetail/CloudDbDetail.vue:335","删除表失败:",o),uni.showToast({title:"删除失败,请重试",icon:"error"})}}}})},B=e=>{const a=e._row_id||e._id;if(!a)return void uni.showToast({title:"无法识别该行",icon:"none"});const n=g.value;if(0===n.length)return void uni.showToast({title:"无可用列",icon:"none"});const o=n[0];uni.showModal({title:`编辑 ${o}`,editable:!0,placeholderText:e[o]||"",content:"",success:async n=>{if(n.confirm&&void 0!==n.content){uni.showLoading({title:"更新中..."});try{const t=E();await((e,t,a,n,o)=>new Promise(((l,c)=>{uni.request({url:`${s}/cloud_api/database/table/update/by/id`,method:"POST",data:{access_token:e,database_id:t,table_name:a,where_data:n,update_data:o},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)l(t.message);else{const e=t.error||"更新表数据出错啦";c(e)}}else c(`更新表数据失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";c(t)}})})))(t,l.value,v.value.table_name,{_row_id:a},{[o]:n.content}),uni.hideLoading(),uni.showToast({title:"更新成功",icon:"success"}),e[o]=n.content}catch(c){uni.hideLoading(),t("error","at pages/CloudDbDetail/CloudDbDetail.vue:397","更新失败:",c),uni.showToast({title:c,icon:"error"})}}}})},S=e.ref(!1),x=e.ref(""),T=e.ref(""),D=e.ref(""),P=()=>{S.value=!1},j=()=>{se({count:1,type:"all",success:e=>{const t=e.tempFiles[0];T.value=t.name||"unknown",D.value=t.path},fail:e=>{t("error","at pages/CloudDbDetail/CloudDbDetail.vue:434","选择文件失败:",e),uni.showToast({title:"选择文件失败",icon:"none"})}})},$=async()=>{const e=x.value.trim()||"";if(D.value){uni.showLoading({title:"导入中..."});try{const t=E();await((e,t,a,n,o)=>new Promise(((l,c)=>{const i="string"==typeof n?n:n.tempFilePath||n.path||n,r="string"==typeof n?n.split("/").pop()||"file":n.name||"file";uni.uploadFile({url:`${s}/cloud_api/database/import`,method:"POST",header:{},formData:{access_token:e,force_overwrite:t,database_id:a,table_name:o},file:{name:r,uri:i},files:[{name:"file",uri:i}],success:e=>{if(200===e.statusCode)try{const t=JSON.parse(e.data);if(t.success)l(t.message);else{const e=(null==t?void 0:t.error)||"导入文件到数据库出错啦";c(e)}}catch(t){c("接口返回数据格式异常")}else c(`导入文件到数据库失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";c(t)}})})))(t,!1,l.value,D.value,e),uni.hideLoading(),uni.showToast({title:"导入成功",icon:"success"}),P(),await N()}catch(a){uni.hideLoading(),t("error","at pages/CloudDbDetail/CloudDbDetail.vue:474","导入失败:",a),"table_exists"===a?uni.showToast({title:"文件已存在",icon:"error"}):uni.showToast({title:"导入失败,请重试",icon:"error"})}}else uni.showToast({title:"请选择文件",icon:"none"})},L=e.ref(!1),M=e.ref([]),I=async()=>{L.value=!0,uni.showLoading({title:"加载中..."});try{const e=E();let t;t=i.value?await h(e,l.value,"team_id",i.value):await h(e,l.value,"user_id",b());const a=Array.isArray(t)?t:[];M.value=a.map((e=>{var t,a,n;return e.team?{_id:e._id,database_id:e.database_id,access_level:e.access_level,permType:"team_id",id:e.team._id||e.team.id,name:e.team.name}:e.team_id?{database_id:e.database_id,access_level:e.access_level,permType:"team_id",id:e.team_id,name:(null==(t=e.database)?void 0:t.database_name)||""}:{database_id:e.database_id,access_level:e.access_level,permType:"user_id",id:e.user_id||(null==(a=e.database)?void 0:a.user_id)||b(),name:(null==(n=e.database)?void 0:n.database_name)||""}}))}catch(e){t("error","at pages/CloudDbDetail/CloudDbDetail.vue:544","获取权限失败:",e),M.value=[]}uni.hideLoading()},z=()=>{L.value=!1},F=(e,a)=>{if("delete"===a)uni.showModal({title:"移除权限",content:`确定要移除"${e.name}"的权限吗?`,success:async a=>{if(a.confirm){uni.showLoading({title:"移除中..."});try{const t=E();await((e,t,a,n)=>new Promise(((o,l)=>{const c={access_token:e,database_id:t};"user_id"===a?c.user_id=n:"team_id"===a&&(c.team_id=n),uni.request({url:`${s}/cloud_api/database/permission/delete`,method:"POST",data:c,header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)o(t.message);else{const e=t.error||"删除 团队/用户 对数据库权限出错啦";l(e)}}else l(`删除 团队/用户 对数据库权限失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(t,l.value,e.permType,e.id),uni.hideLoading(),uni.showToast({title:"已移除",icon:"success"}),await I()}catch(n){uni.hideLoading(),t("error","at pages/CloudDbDetail/CloudDbDetail.vue:574","移除权限失败:",n),uni.showToast({title:"操作失败,请重试",icon:"error"})}}}});else{const a=["无权限访问","仅访问","管理员完全控制","团队完全控制"],n=e.access_level||0;uni.showActionSheet({title:"选择权限级别",itemList:a.map(((e,t)=>`${t}. ${e}`)),success:async a=>{const o=a.tapIndex;if(o!==n){uni.showLoading({title:"更新中..."});try{const t=E();await((e,t,a,n,o)=>new Promise(((l,c)=>{const i={access_token:e,database_id:t,access_level:o};"user_id"===a?i.user_id=n:"team_id"===a&&(i.team_id=n),uni.request({url:`${s}/cloud_api/database/permission/update`,method:"POST",data:i,header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)l(t.message);else{const e=t.error||"修改/增加 团队/用户 对数据库权限出错啦";c(e)}}else c(`修改/增加 团队/用户 对数据库权限失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";c(t)}})})))(t,l.value,e.permType,e.id,o),uni.hideLoading(),uni.showToast({title:"已更新",icon:"success"}),await I()}catch(c){uni.hideLoading(),t("error","at pages/CloudDbDetail/CloudDbDetail.vue:608","更新权限失败:",c),uni.showToast({title:"操作失败,请重试",icon:"error"})}}}})}},O=e.ref(!1),A=e.ref([]),U=e.ref(""),q=()=>{O.value=!1},W=async()=>{U.value?uni.showModal({title:"确认移交",content:"移交后数据库将归属于该团队,确定继续吗?",success:async e=>{if(e.confirm){uni.showLoading({title:"移交中..."});try{const e=E();await(async(e,t,a)=>new Promise(((n,o)=>{uni.request({url:`${s}/cloud_api/database/transfer_to_team`,method:"POST",data:{access_token:e,database_id:t,team_id:a},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)n(t.message);else{const e=t.error||"个人数据库移交团队出错啦";o(e)}}else o(`个人数据库移交团队失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(e,l.value,U.value),uni.hideLoading(),uni.showToast({title:"移交成功",icon:"success"}),q(),setTimeout((()=>{uni.navigateBack()}),1e3)}catch(a){uni.hideLoading(),t("error","at pages/CloudDbDetail/CloudDbDetail.vue:670","移交失败:",a),uni.showToast({title:"移交失败,请重试",icon:"error"})}}}}):uni.showToast({title:"请选择目标团队",icon:"none"})},R=e=>({0:"无权限访问",1:"仅访问",2:"管理员完全控制",3:"团队完全控制"}[e]||"未知");return e.onMounted((()=>{var e;const t=getCurrentPages(),a=t[t.length-1],n=(null==(e=a.$page)?void 0:e.options)||a.options||{};l.value=n.databaseId||"",c.value=decodeURIComponent(n.databaseName||"数据库详情"),i.value=n.teamId||"",l.value&&N()})),(n,o)=>{const l=a(e.resolveDynamicComponent("uni-icons"),y);return e.openBlock(),e.createElementBlock("view",{class:"cloud-db-detail-wrapper"},[e.createElementVNode("view",{class:"status-bar"}),S.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"popup-overlay",onClick:P},[e.createElementVNode("view",{class:"popup-card",onClick:o[1]||(o[1]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:P},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"导入文件到数据库"),e.createElementVNode("view",{class:"new-folder-name"},"表名称"),e.createElementVNode("view",{class:"create-folder-name"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":o[0]||(o[0]=e=>x.value=e),type:"text",placeholder:"输入表名称"},null,512),[[e.vModelText,x.value]])]),e.createElementVNode("view",{class:"new-folder-name"},"文件"),e.createElementVNode("view",{class:"upload-file-area",onClick:j},[T.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"selected-file"},e.toDisplayString(T.value),1)):(e.openBlock(),e.createElementBlock("view",{key:1,class:"upload-hint"},"点击选择文件(支持 CSV/Excel/SQLite"))]),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:P},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:$},"确认导入")])])])):e.createCommentVNode("",!0),L.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"popup-overlay",onClick:z},[e.createElementVNode("view",{class:"popup-card",onClick:o[2]||(o[2]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:z},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"权限管理"),e.createElementVNode("scroll-view",{class:"permission-body","scroll-y":""},[0===M.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"folder-null"},"暂无权限记录")):(e.openBlock(),e.createElementBlock("view",{key:1,class:"permission-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(M.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"permission-item",key:t._id||t.id},[e.createElementVNode("view",{class:"perm-info"},[e.createElementVNode("text",{class:"perm-type"},e.toDisplayString("team_id"===t.permType?"团队":"个人"),1)]),e.createElementVNode("view",{class:"perm-level"},e.toDisplayString(R(t.access_level)),1),e.createElementVNode("view",{class:"perm-actions"},[e.createElementVNode("view",{class:"perm-action-btn",onClick:e=>F(t,"change")},"修改",8,["onClick"]),e.createElementVNode("view",{class:"perm-action-btn delete",onClick:e=>F(t,"delete")},"移除",8,["onClick"])])])))),128))]))]),e.createElementVNode("view",{class:"close-permission-btn",onClick:z},"关闭")])])):e.createCommentVNode("",!0),O.value?(e.openBlock(),e.createElementBlock("view",{key:2,class:"popup-overlay",onClick:q},[e.createElementVNode("view",{class:"popup-card",onClick:o[3]||(o[3]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:q},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"移交数据库到团队"),e.createElementVNode("scroll-view",{class:"transfer-body","scroll-y":""},[0===A.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"folder-null"},"暂无可用团队")):(e.openBlock(),e.createElementBlock("view",{key:1,class:"transfer-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(A.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["transfer-item",{active:U.value===t.id}]),key:t.id,onClick:e=>U.value=t.id},[e.createElementVNode("text",{class:"transfer-name"},e.toDisplayString(t.name),1),U.value===t.id?(e.openBlock(),e.createBlock(l,{key:0,type:"checkmarkempty",size:"20",color:"#3b86ff"})):e.createCommentVNode("",!0)],10,["onClick"])))),128))]))]),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:q},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:W},"确认移交")])])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"cloud-db-detail page-container"},[e.createElementVNode("view",{class:"cloud-db-header"},[e.createElementVNode("view",{class:"custom-navbar"},[e.createElementVNode("view",{class:"navbar-left",onClick:C},[e.createElementVNode("view",{class:"iconfont icon-fanhui custom-navbar-icon"})]),e.createElementVNode("view",{class:"navbar-title"},e.toDisplayString(c.value),1),e.createElementVNode("view",{class:"navbar-right"},[e.createElementVNode("view",{class:"iconfont icon-gengduo custom-navbar-icon",onClick:k})])]),w.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"menu-card"},[e.createElementVNode("view",{class:"menu-card-item",onClick:o[4]||(o[4]=e=>{S.value=!0,x.value="",T.value="",D.value="",k()})},"导入文件"),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("view",{class:"menu-card-item",onClick:o[5]||(o[5]=e=>{I(),k()})},"权限管理"),i.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"solid-line"})),i.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:1,class:"menu-card-item",onClick:o[6]||(o[6]=e=>{(async()=>{O.value=!0,U.value="";try{const e=E(),t=await p(e);A.value=t||[]}catch(e){t("error","at pages/CloudDbDetail/CloudDbDetail.vue:632","获取团队列表失败:",e),A.value=[]}})(),k()})},"移交团队"))])):e.createCommentVNode("",!0)]),e.createElementVNode("scroll-view",{class:"cloud-db-content","scroll-y":""},[e.createElementVNode("view",{class:"db-info-bar"},[e.createElementVNode("text",{class:"db-info-text"},e.toDisplayString(u.value)+" 张表",1),e.createElementVNode("text",{class:"db-info-text"},"权限:"+e.toDisplayString(R(r.value)),1)]),e.createElementVNode("view",{class:"section-block"},[e.createElementVNode("view",{class:"section-header"},[e.createElementVNode("view",{class:"section-title"},[e.createElementVNode("view",{class:"iconfont icon-biaoge"}),e.createElementVNode("text",null,"数据表")])]),e.createElementVNode("view",{class:"section-body"},[m.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"loading-area"},[e.createElementVNode("view",{class:"loading-spinner"}),e.createElementVNode("text",{class:"loading-text"},"加载中...")])):0===d.value.length?(e.openBlock(),e.createElementBlock("view",{key:1,class:"empty-tip"},[e.createElementVNode("view",{class:"iconfont icon-shujuku"}),e.createElementVNode("text",null,"暂无数据表")])):(e.openBlock(),e.createElementBlock("view",{key:2,class:"table-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(d.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"table-item",key:t.table_name,onClick:e=>V(t),onLongpress:e=>_(t)},[e.createElementVNode("view",{class:"table-icon"},[e.createVNode(l,{type:"compose",size:"22",color:"#3b86ff"})]),e.createElementVNode("view",{class:"table-info"},[e.createElementVNode("view",{class:"table-name"},e.toDisplayString(t.table_name),1),e.createElementVNode("view",{class:"table-desc"},e.toDisplayString(t.row_count||0)+" 条记录",1)]),e.createElementVNode("view",{class:"table-meta"},[e.createVNode(l,{type:"right",size:"14",color:"#999"})])],40,["onClick","onLongpress"])))),128))]))])]),v.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"section-block"},[e.createElementVNode("view",{class:"section-divider"}),e.createElementVNode("view",{class:"section-header"},[e.createElementVNode("view",{class:"section-title"},[e.createElementVNode("view",{class:"iconfont icon-biaoge"}),e.createElementVNode("text",null,e.toDisplayString(v.value.table_name),1)]),e.createElementVNode("view",{class:"section-actions"},[e.createElementVNode("text",{class:"row-count"},e.toDisplayString(f.value.length)+" / "+e.toDisplayString(v.value.row_count||0)+" 条",1)])]),e.createElementVNode("view",{class:"section-body"},[0===f.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"empty-tip"},[e.createElementVNode("text",null,"暂无数据")])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"data-table-wrapper"},[e.createElementVNode("scroll-view",{"scroll-x":"",class:"data-table-scroll"},[e.createElementVNode("view",{class:"data-table"},[e.createElementVNode("view",{class:"data-row data-header"},[e.createElementVNode("view",{class:"data-cell index-cell"},"#"),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,(t=>(e.openBlock(),e.createElementBlock("view",{key:t,class:"data-cell"},e.toDisplayString(t),1)))),128))]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,((t,a)=>(e.openBlock(),e.createElementBlock("view",{class:"data-row",key:t._row_id||a,onClick:e=>B(t)},[e.createElementVNode("view",{class:"data-cell index-cell"},e.toDisplayString(a+1),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,(a=>{return e.openBlock(),e.createElementBlock("view",{key:a,class:"data-cell"},e.toDisplayString(null==(n=t[a])?"":"object"==typeof n?JSON.stringify(n):String(n)),1);var n})),128))],8,["onClick"])))),128))])])]))])])):e.createCommentVNode("",!0)])])])}}},[["__scopeId","data-v-144a6cf9"]]);__definePage("pages/Login/Login",w),__definePage("pages/Chat/Chat",ce),__definePage("pages/WorkSpace/WorkSpace",ie),__definePage("pages/UserProfileModal/UserProfileModal",re),__definePage("pages/ContactPages/ContactPages",ue),__definePage("pages/WorkSpace/TemplateSpace/TemplateSpace",de),__definePage("pages/text/text",me),__definePage("pages/text/text2",ve),__definePage("pages/CloudDatabase/CloudDatabase",pe),__definePage("pages/CloudDbDetail/CloudDbDetail",fe);const he={onLaunch:function(){t("log","at App.vue:4","App Launch")},onShow:function(){t("log","at App.vue:7","App Show")},onHide:function(){t("log","at App.vue:10","App Hide")}};const{app:ge,Vuex:we,Pinia:ke}=function(){const t=e.createVueApp(he),a=function(){const t=e.effectScope(!0),a=t.run((()=>e.ref({})));let n=[],o=[];const l=e.markRaw({install(e){D(l),l._a=e,e.provide(P,l),e.config.globalProperties.$pinia=l,o.forEach((e=>n.push(e))),o=[]},use(e){return this._a?n.push(e):o.push(e),this},_p:n,_a:null,_e:t,_s:new Map,state:a});return l}();return t.use(a),{app:t,pinia:a}}();uni.Vuex=we,uni.Pinia=ke,ge.provide("__globalStyles",__uniConfig.styles),ge._component.mpType="app",ge._component.render=()=>{},ge.mount("#app")}(Vue);