8 lines
196 KiB
JavaScript
8 lines
196 KiB
JavaScript
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)})("onShow",3),o="https://cloud.yuxindazhineng.com",l=async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${o}/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)}})})),s=async e=>new Promise(((t,a)=>{uni.request({url:`${o}/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)}})})),c=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${o}/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)}})})),i=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${o}/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)}})})),r=(e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${o}/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)||"删除工作区文件出错啦";l(e)}}else l(`删除工作区文件失败:${e.statusCode}`)}})})),u=(e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${o}/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)||"创建工作区文件夹出错啦";l(e)}}else l(`创建工作区文件夹失败:${e.statusCode}`)}})})),d=(e,t,a="/",n="")=>new Promise(((l,s)=>{uni.request({url:`${o}/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)l(t.data);else{const e=(null==t?void 0:t.error)||"获取工作区文件目录出错啦";s(e)}}else s(`获取工作区文件目录失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";s(t)}})})),m=async e=>new Promise(((t,a)=>{uni.request({url:`${o}/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)}})})),v=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${o}/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)}})})),p=(e,t,a,n)=>new Promise(((l,s)=>{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:`${o}/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)l(t.data);else if(Array.isArray(t))l(t);else{const e=(null==t?void 0:t.error)||"查看 个人/团队 数据库权限信息出错啦";s(e)}}else s(`查看 个人/团队 数据库权限信息失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";s(t)}})})),f=(e,t)=>{const a=e.__vccOpts||e;for(const[n,o]of t)a[n]=o;return a},h=f({__name:"Login",setup(a){const n=e.ref(""),l=e.ref(!1),s=e.ref(!1),c=()=>{l.value=!0,g.value=!1},i=()=>{l.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:`${o}/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 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),uni.showToast({title: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:169","读取登录信息失败",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:l.value,error:s.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-a8bd24d4"]]),g=[{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 w=f({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:g}),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"]]),k=()=>uni.getStorageSync("token"),y=()=>{const e=uni.getStorageSync("currentSessionId");return isNaN(Number(e))?e.replace(/-/g,""):e},E=()=>uni.getStorageSync("taskCallId"),N=()=>(t("log","at utils/user-info.js:50","用户Id(UserId)",uni.getStorageSync("userId")),uni.getStorageSync("userId")),C=f(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 c=n,i=o,r=e.toRef(c,"chatList");e.toRef(c,"showNewChatModal");const u=e.toRef(c,"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=k();await l(e,v.value),uni.showToast({title:"删除成功",icon:"success"}),v.value=[],m.value=!1,i("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=k(),t=r.value.map((e=>e._id));await l(e,t),uni.showToast({title:"已删除全部对话",icon:"success"}),i("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(c,"currentSessionId"),y=(e,a="")=>{t("log","at components/ChatSidebar.vue:259","选择的id是:",e),a&&uni.setStorageSync("receiverId",a),uni.setStorageSync("currentSessionId",e),i("update:currentSessionId",e)},E=()=>{t("log","at components/ChatSidebar.vue:270","点击了新建会话"),i("update:showNewChatModal",!0)},N=()=>{uni.navigateTo({url:"/pages/ContactPages/ContactPages"})},C=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=k();const e=await s(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"),w);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:N},[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:E})),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":C.value||b.value}])},[e.createVNode(o,{type:"search",class:e.normalizeClass([C.value||b.value?"chat-search-icon":"search-icon"])},null,8,["class"]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=e=>C.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,C.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):y(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):y(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):y(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-2a484f8a"]]);var b={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function V(e){return e.replace(RegExp("^"+(e.match(/^(\t| )+/)||"")[0],"gm"),"")}function _(e){return(e+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function B(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=b[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()+'"':"")+">"+V(_(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=o[6])?(s.match(/\./)&&(o[5]=o[5].replace(/^\d+/gm,"")),l=B(V(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="'+_(o[8])+'" alt="'+_(o[7])+'">':o[10]?(r=r.replace("<a>",'<a href="'+_(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))+">"+B(o[12]||o[15],u)+"</"+s+">":o[16]?a="<code>"+_(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 S;const x=e=>S=e,T=Symbol();function D(e){return e&&"object"==typeof e&&"[object Object]"===Object.prototype.toString.call(e)&&"function"!=typeof e.toJSON}var P,j;(j=P||(P={})).direct="direct",j.patchObject="patch object",j.patchFunction="patch function";const $=()=>{};function L(t,a,n,o=$){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 M(e,...t){e.slice().forEach((e=>{e(...t)}))}const I=e=>e();function z(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];D(l)&&D(o)&&t.hasOwnProperty(n)&&!e.isRef(o)&&!e.isReactive(o)?t[n]=z(l,o):t[n]=o}return t}const F=Symbol();const{assign:O}=Object;function A(t,a,n={},o,l,s){let c;const i=O({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:P.patchFunction,storeId:t,events:m}):(z(o.state.value[t],a),n={type:P.patchObject,payload:a,storeId:t,events:m});const l=h=Symbol();e.nextTick().then((()=>{h===l&&(u=!0)})),d=!0,M(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=>{O(e,t)}))}:$;function k(e,a){return function(){x(o);const n=Array.from(arguments),l=[],s=[];function c(e){l.push(e)}function i(e){s.push(e)}let r;M(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 M(s,u),u}return r instanceof Promise?r.then((e=>(M(l,e),e))).catch((e=>(M(s,e),Promise.reject(e)))):(M(l,r),r)}}const y={_p:o,$id:t,$onAction:L.bind(null,p),$patch:g,$reset:w,$subscribe(a,n={}){const l=L(v,a,n.detached,(()=>s())),s=c.run((()=>e.watch((()=>o.state.value[t]),(e=>{("sync"===n.flush?d:u)&&a({storeId:t,type:P.direct,events:m},e)}),O({},r,n))));return l},$dispose:function(){c.stop(),v=[],p=[],o._s.delete(t)}},E=e.reactive(y);o._s.set(t,E);const N=(o._a&&o._a.runWithContext||I)((()=>o._e.run((()=>(c=e.effectScope()).run(a)))));for(const V in N){const a=N[V];if(e.isRef(a)&&(b=a,!e.isRef(b)||!b.effect)||e.isReactive(a))s||(!f||D(C=a)&&C.hasOwnProperty(F)||(e.isRef(a)?a.value=f[V]:z(a,f[V])),o.state.value[t][V]=a);else if("function"==typeof a){const e=k(V,a);N[V]=e,i.actions[V]=a}}var C,b;return O(E,N),O(e.toRaw(E),N),Object.defineProperty(E,"$state",{get:()=>o.state.value[t],set:e=>{g((t=>{O(t,e)}))}}),o._p.forEach((e=>{O(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 U(t,a,n){let o,l;const s="function"==typeof a;function c(t,n){const c=e.hasInjectionContext();(t=t||(c?e.inject(T,null):null))&&x(t),(t=S)._s.has(o)||(s?A(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=A(t,(function(){i||(n.state.value[t]=l?l():{});const a=e.toRefs(n.state.value[t]);return O(a,s,Object.keys(c||{}).reduce(((a,o)=>(a[o]=e.markRaw(e.computed((()=>{x(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 q=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:193","发送的消息是:",o),this.ws.send({data:o,success:()=>a(),fail:e=>{t("error","at utils/socket.js:201","发送消息失败:",e),n(e)}})}))}reconnect(){this.reconnectTimer||(this.reconnectAttempts++,t("log","at utils/socket.js:227",`尝试重连 (${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:249","心跳发送失败,准备重连"),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:277","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:313","手动关闭 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:335","连接已关闭"),fail:e=>t("error","at utils/socket.js:336","关闭失败:",e)})}catch(e){t("error","at utils/socket.js:344","关闭连接出错:",e)}this.ws=null}this.reconnectAttempts=0}updateOptions(e){this.options={...this.options,...e}}},W=U("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,q.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:220","ai结束思考"),void(l.value=!1);if(!e||"object"!=typeof e)return;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:241","ai开始思考"),o.value="",l.value=!0);n&&(o.value+=n)}(c);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",q.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(){q.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 q.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]||"未知状态"}}})),R="http://chat.yuxindazhineng.com",J=async e=>new Promise(((a,n)=>{uni.request({url:`${R}/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)}})})),H=async e=>new Promise(((t,a)=>{uni.request({url:`${R}/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)}})})),G=e=>new Promise(((t,a)=>{uni.uploadFile({url:`${R}/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 X=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}}},K=U("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:N(),avatar:"",sessionId:"",message:"",callBackMessage:!1}};try{await X.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",X.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(){X.close(),a.value="disconnected",h("warn","已主动断开连接")},send:async function(e){if(!d.value)throw h("error","发送失败: 连接未建立"),new Error("连接未建立");try{return await X.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:Y,initUTSProxyClass:Q,initUTSProxyFunction:Z,initUTSPackageName:ee,initUTSIndexClassName:te,initUTSClassName:ae}=uni,ne="limeChooseFile",oe=Z(!1,{moduleName:"lime-choose-file 文件选择",moduleType:"",errMsg:"",main:!0,package:ee(ne,true),class:te(ne,true),name:"chooseFileByJs",keepAlive:!1,params:[{name:"options",type:"UTSSDKModulesLimeChooseFileChooseFileOptionJSONObject"}],return:""}),le=f({__name:"Chat",setup(l){const i=K(),r=()=>{i.isConnected||(te.value&&ae.value?i.connect({token:te.value,UserId:ae.value}):t("warn","at pages/Chat/Chat.vue:306","Token或UserId未准备好"))},u=W(),d=e.ref(0),m=(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},v=e=>{if(!e)return"";e=p(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(m(o,l)),o=[],l=[],n=!1),a.push(e)}return n&&o.length>0&&a.push(m(o,l)),a.join("\n")})(e);return B(e)}catch(a){return t("error","at pages/Chat/Chat.vue:404","解析失败",a),e}},p=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,"<").replace(/>/g,">"))).replace(/<\|[\w]+?\|>/g,(e=>e.replace(/</g,"<").replace(/>/g,">"))),t||a){return'<h2 style="color: red; font-weight: bold;">表单仅预览,不可操作!!!</h2>'+n}return n},f=e=>{uni.previewImage({urls:[e]})},h=e=>{uni.downloadFile({url:e,success:e=>{uni.openDocument({filePath:e.tempFilePath,showMenu:!0})}})},g=e=>e?e<1?(1024*e).toFixed(0)+"KB":e.toFixed(2)+"MB":"0KB",E=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:472","解析文件信息失败:",n),{textContent:e,files:[]}}},N=async()=>{try{const e="0123456789abcdef";let t="";for(let o=0;o<24;o++)t+=e[Math.floor(Math.random()*e.length)];const a=await(async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${o}/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)}})})))(te.value,t);if(!a)return void uni.showToast({title:"工作区创建失败",icon:"none"});const n=uni.getStorageSync("yxd_login_info");let l="";n&&(l=n.username||"");const s=await(async(e,t,a,n)=>new Promise(((l,s)=>{uni.request({url:`${o}/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)l(t);else{const t=e.data.error||"创建新对话id出错啦";s(t)}}else s(`创建新对话失败:${e.statusCode}`)}})})))(te.value,a,"新会话",l);if(!s)return void uni.showToast({title:"新会话创建失败",icon:"none"});se()}catch(e){t("error","at pages/Chat/Chat.vue:514","新建普通会话失败:",e),uni.showToast({title:"创建会话失败,请重试",icon:"none"})}},b=e.ref(!1),V=()=>{b.value=!1},_=e.ref(!1),S=()=>{_.value=!_.value},x=()=>{ee.value&&uni.setStorageSync("currentSessionId",ee.value),uni.navigateTo({url:"/pages/WorkSpace/WorkSpace"})},T=()=>{ee.value&&uni.setStorageSync("currentSessionId",ee.value),uni.navigateTo({url:"/pages/CloudDatabase/CloudDatabase"})},D=()=>{uni.reLaunch({url:"/pages/Login/Login"})},P=e.ref([]),j=()=>{t("log","at pages/Chat/Chat.vue:563","点击了拍照上传"),uni.chooseImage({count:1,sourceType:["camera","album"],success:e=>{const t=e.tempFiles,a=e.tempFilePaths;t.forEach(((e,t)=>{P.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:581","选择图片失败",e)}})},$=e.ref([]),L=e.ref(!1),M=e.ref(!1),I=e.ref([]),z=e.ref(!1),F=e.ref(""),O=()=>{z.value=!1,F.value=""},A=async()=>{if(Q.value.trim()||0!==P.value.length){if(P.value.length>0){M.value=!0,uni.showLoading({title:"上传文件中...",mask:!0});try{const e=[];for(const t of P.value){const a=await G(t.path);e.push(a)}I.value=e,P.value=[]}catch(e){return uni.hideLoading(),t("error","at pages/Chat/Chat.vue:699","文件上传失败:",e),uni.showToast({title:"文件上传失败,请重试",icon:"error"}),void(M.value=!1)}uni.hideLoading(),M.value=!1}0===d.value&&Y(),1===d.value&&U(),2===d.value&&q()}},U=async()=>{i.isConnecting||await r();const e=uni.getStorageSync("receiverId"),t=I.value.length>0,a={command:1,sender:ae.value,receiver:e,avatar:"",sessionId:ee.value,message:Q.value,callBackMessage:!1};t&&(a.contentType=1,a.uploadVos=I.value);const n={version:"1.1",body:a};i.send(n);const o={sender:ae.value,receiver:e,content:Q.value,taskId:null,avatar:null,createTime:"",messageType:"null",contentJson:t?JSON.stringify(I.value):"null"};ve.value=[...ve.value,o],Q.value="",I.value=[],setTimeout((()=>{we()}),1e3)},q=async()=>{i.isConnecting||await r();const e=I.value.length>0,t={command:9,groupId:ee.value,message:Q.value||"",callBackMessage:!e,messageType:e?1:0,sender:ae.value};e&&(t.uploadVos=I.value);const a={version:"1.1",body:t};i.send(a);const n={id:ve.value.length+1,message:Q.value,messageType:e?1:0,groupId:null,createTime:"",contentJson:e?JSON.stringify(I.value):"",sender:ae.value};ve.value=[...ve.value,n],Q.value="",I.value=[],setTimeout((()=>{ke()}),1e3)};let X=null;const Y=async()=>{try{await new Promise(((t,a)=>{if(u.isConnected)return t();const n=e.watch((()=>u.isConnected),(e=>{e&&(n(),t())})),o=e.watch((()=>u.connectionStatus),(e=>{"error"===e&&(n(),o(),a(new Error("连接失败")))}));u.connect({token:te.value,conversationId:ee.value})}));let t=Q.value;if(I.value.length){const e=JSON.stringify(I.value);t=t?`${t}\n[文件信息:${e}]`:`[文件信息:${e}]`}const a={type:"chat",conversation_id:ee.value,content:t};u.send(a),L.value=!0,X=setTimeout((()=>{uni.showToast({title:"AI回复超时,请重试",icon:"none"}),L.value=!1,Q.value="",I.value=[]}),6e5)}catch(t){L.value=!1,uni.showToast({title:`用户发送消息失败${t}`,icon:"error"})}};e.watch((()=>u.isThinking),((e,a)=>{t("log","at pages/Chat/Chat.vue:861","isThinking 变化:",a,"→",e),a&&!e&&u.messageString&&(clearTimeout(X),t("log","at pages/Chat/Chat.vue:865","ai返回的消息:",u.messageString),t("log","at pages/Chat/Chat.vue:866","AI回复结束,刷新消息列表"),ge(),L.value=!1,Q.value="",I.value=[])})),e.watch((()=>u.authFailReason),(t=>{"pc offline"===t&&(L.value=!1,u.authFailReason="",e.nextTick((()=>{uni.showModal({title:"提示",content:"PC端不在线,不可聊天",showCancel:!1,confirmText:"知道了"})})))}));const Q=e.ref(""),Z=e.ref([]),ee=e.ref(""),te=e.ref(""),ae=e.ref(""),ne=e.ref(""),le=e.ref(null),se=async()=>{try{te.value=k(),t("log","at pages/Chat/Chat.vue:918","token:",te.value),Z.value=await(async e=>new Promise(((t,a)=>{uni.request({url:`${o}/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)}})})))(te.value)||[];const e=y();e&&Z.value.some((t=>t._id===e))?ee.value=e:Z.value.length>0?ee.value=Z.value[0]._id:ee.value="",t("log","at pages/Chat/Chat.vue:930","保存会话id:",ee.value),uni.setStorageSync("currentSessionId",ee.value)}catch(e){uni.showToast({title:`获取会话列表失败${e}`,icon:"error"})}},ce=e.ref([]),ie=e=>{if(!e)return null;const t=ce.value.find((t=>t.receiver===e));return(null==t?void 0:t.avatar)||null},re=async e=>{if(!(null==e?void 0:e.length))return[];try{const t=e.map((e=>e.receiver)),a=await c(te.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:986","获取好友头像失败",a),e}},ue=e.ref([]),de=e.ref([]),me=e=>{if(!e)return null;const t=de.value.find((t=>t.groupContactId===e));return(null==t?void 0:t.avatar)||null},ve=e.ref([]),pe=e.ref("");e.ref(!1);const fe=e.ref(1),he=e.computed((()=>ve.value.slice(-100))),ge=async()=>{try{ve.value=await(async(e,a)=>new Promise(((n,l)=>{uni.request({url:`${o}/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:89","工作区id为:",a.workspace_id||"(无)"),a.workspace_id&&uni.setStorageSync("workspace_id",a.workspace_id),n(a.messages);else{const t=e.data.error||"获取消息出错啦";l(t)}}else l(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(te.value,ee.value)||[],Ne()}catch(e){uni.showToast({title:`获取ai会话内容失败${e}`,icon:"none"})}},we=async()=>{try{ve.value=await(async(e,a=1)=>(t("log","at utils/friend-api.js:88","请求的好友消息id:",e),new Promise(((t,n)=>{uni.request({url:`${R}/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)}})}))))(ee.value)||[],t("log","at pages/Chat/Chat.vue:1077","好友消息:",JSON.stringify(ve.value)),Ne()}catch(e){uni.showToast({title:`获取好友会话消息失败${e}`,icon:"none"})}},ke=async()=>{try{ve.value=await(async(e,a=1)=>(t("log","at utils/friend-api.js:134","请求的群聊消息id:",e),new Promise(((n,o)=>{uni.request({url:`${R}/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)}})}))))(ee.value)||[],t("log","at pages/Chat/Chat.vue:1090","群聊消息:",ve.value);const e=await(async e=>new Promise(((t,a)=>{uni.request({url:`${R}/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)}})})))(ee.value);t("log","at pages/Chat/Chat.vue:1093","获取到的群成员列表:",e),e&&e.length?(de.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:1015","请求头像的ID列表:",a);const n=await c(te.value,a);t("log","at pages/Chat/Chat.vue:1017","头像接口返回数据:",n);const o=new Map(n.map((e=>[e.user_id,e]))||[]);return t("log","at pages/Chat/Chat.vue:1020","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:1025",`查找 ${a} 的头像:`,n),{...e,avatar:(null==n?void 0:n.avatar)||null}}))}catch(a){return t("error","at pages/Chat/Chat.vue:1032","获取群成员头像失败",a),e}})(e),t("log","at pages/Chat/Chat.vue:1096","群成员列表(带头像):",de.value)):de.value=[],Ne()}catch(e){uni.showToast({title:`获取群聊会话失败${e}`,icon:"none"})}},ye=async()=>{if(t("log","at pages/Chat/Chat.vue:1111","加载更多信息"),ve.value.length>100*fe.value){fe.value+=1;const t=ve.value.slice(-100*fe.value),a=t.length-he.value.length;he.value=t,await e.nextTick(),pe.value="msg-"+(a+1)}},Ee=e=>{},Ne=async()=>{await e.nextTick(),he.value.length>0&&(pe.value="msg-"+(he.value.length-1))};return e.watch((()=>i.MessageReceived),(e=>{if(t("log","at pages/Chat/Chat.vue:1139","收到了好友消息"),e)switch(t("log","at pages/Chat/Chat.vue:1141","ChatType:",d.value),d.value){case 0:ge(),i.MessageReceived=!1;break;case 1:we(),i.MessageReceived=!1;break;case 2:ke(),i.MessageReceived=!1;break;default:t("log","at pages/Chat/Chat.vue:1157","default 分支"),i.MessageReceived=!1}}),{immediate:!0}),e.watch(ee,(e=>{if(e)switch(uni.setStorageSync("currentSessionId",ee.value),d.value){case 0:default:ge();break;case 1:we();break;case 2:ke()}}),{immediate:!0}),e.onMounted((()=>{})),n((async()=>{await(async()=>{try{te.value=k(),le.value=await s(te.value),ae.value=le.value._id,ne.value=le.value.avatar||"",t("log","at pages/Chat/Chat.vue:908","用户信息已加载:",ae.value,ne.value)}catch(e){t("error","at pages/Chat/Chat.vue:910","获取用户信息失败:",e)}})();const e=uni.getStorageSync("chatType");d.value=e;const a=y();a&&(ee.value=a),0===e?(await se(),ee.value&&ge()):1===e?(await(async()=>{try{t("log","at pages/Chat/Chat.vue:945","开始获取好友列表");const e=await J(ae.value);t("log","at pages/Chat/Chat.vue:948","friendList:",e),e&&e.length?ce.value=await re(e):(ce.value=[],t("log","at pages/Chat/Chat.vue:953","好友列表为空"))}catch(e){t("error","at pages/Chat/Chat.vue:956","获取好友列表失败:",e),ce.value=[]}finally{Z.value=ce.value}})(),we(),r()):2===e&&(await(async()=>{try{t("log","at pages/Chat/Chat.vue:996","开始获取群聊列表"),ue.value=await H(ae.value)}catch(e){t("error","at pages/Chat/Chat.vue:1001","获取群聊列表失败:",e),ue.value=[]}finally{Z.value=ue.value}})(),await r(),await ke())})),(n,o)=>{const l=a(e.resolveDynamicComponent("uni-icons"),w);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:V},[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:V})]),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),L.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"ncd-overlay",onClick:V},[e.createElementVNode("view",{class:"ncd-card ai-card",onClick:o[1]||(o[1]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"thinking-content"},[e.createElementVNode("view",{class:"loading-dots"},[e.createElementVNode("view",{class:"dot"}),e.createElementVNode("view",{class:"dot"}),e.createElementVNode("view",{class:"dot"})]),e.createElementVNode("text",{class:"thinking-text"},"AI 正在思考中...")])])])):e.createCommentVNode("",!0),z.value?(e.openBlock(),e.createElementBlock("view",{key:2,class:"ncd-overlay",onClick:O},[e.createElementVNode("view",{class:"ncd-card message-detail-card",onClick:o[2]||(o[2]=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:O})]),e.createElementVNode("scroll-view",{class:"message-detail-content","scroll-y":""},[e.createElementVNode("text",null,e.toDisplayString(F.value),1)])])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"chat-page page-container"},[_.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":_.value}])},[e.createVNode(C,{chatList:Z.value,showNewChatModal:b.value,"onUpdate:showNewChatModal":o[3]||(o[3]=e=>b.value=e),currentSessionId:ee.value,"onUpdate:currentSessionId":o[4]||(o[4]=e=>ee.value=e),chatType:d.value,"onUpdate:chatType":o[5]||(o[5]=e=>d.value=e),onRefreshConversations:se},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:x},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"})]),e.createElementVNode("view",{class:"head-btn",onClick:T},[e.createElementVNode("view",{class:"iconfont icon-cloud"})]),e.createElementVNode("view",{class:"head-btn log-out",onClick:D},[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":pe.value,onScrolltoupper:ye,"upper-threshold":0,"scroll-with-animation":!0,onScroll:Ee},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(he.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock(e.Fragment,{key:a},[0===d.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=le.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:le.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()?(e.openBlock(),e.createElementBlock("view",{key:1,class:e.normalizeClass(["chat-content",{"chat-content-user":"user"===t.role}]),onClick:e=>(e=>{F.value=e.content||"",z.value=!0})(t)},[E(t.content).textContent?(e.openBlock(),e.createElementBlock("view",{key:0,innerHTML:v(E(t.content).textContent)},null,8,["innerHTML"])):e.createCommentVNode("",!0),E(t.content).files.length>0?(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(E(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=>f(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>h(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(g(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],10,["onClick"])):e.createCommentVNode("",!0)],10,["id"])):e.createCommentVNode("",!0)],64)})),128)),1===d.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(he.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["chat-message",{"message-user":t.sender===ae.value}]),key:a,id:"msg-"+a},[e.createElementVNode("view",{class:e.normalizeClass(["chat-avatar",{"chat-avatar-user":t.sender===ae.value}])},[t.sender===ae.value&&(null==(n=le.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:le.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):ie(t.sender)?(e.openBlock(),e.createElementBlock("image",{key:1,src:ie(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===ae.value}])},[t.content&&""!==String(t.content).trim()?(e.openBlock(),e.createElementBlock("view",{key:0,innerHTML:v(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=>f(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>h(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(g(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],2)],10,["id"])})),128)):e.createCommentVNode("",!0),2===d.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(he.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["chat-message",{"message-user":t.sender===ae.value}]),key:a,id:"msg-"+a},[e.createElementVNode("view",{class:e.normalizeClass(["chat-avatar",{"chat-avatar-user":t.sender===ae.value}])},[t.sender===ae.value&&(null==(n=le.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:le.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):de.value.length>0&&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===ae.value}])},[t.message&&""!==String(t.message).trim()?(e.openBlock(),e.createElementBlock("view",{key:0,innerHTML:v(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=>f(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>h(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(g(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],2)],10,["id"])})),128)):e.createCommentVNode("",!0)],40,["scroll-into-view"]),e.createElementVNode("view",{class:"chat-interactive-container"},[e.createElementVNode("view",{class:"chat-interactive-group"},[e.createElementVNode("view",{class:"chat-interactive-btn",onClick:j},"拍照上传"),e.createElementVNode("view",{class:"chat-interactive-btn",onClick:o[6]||(o[6]=e=>(t("log","at pages/Chat/Chat.vue:604","点击了上传文件"),void oe({count:5,type:"all",success:e=>{t("log","at pages/Chat/Chat.vue:609","成功了"),$.value=e.tempFiles,P.value.push(...e.tempFiles),uni.showToast({title:`已选择 ${e.tempFiles.length} 个文件`,icon:"success"})},fail:e=>{t("error","at pages/Chat/Chat.vue:620","选择失败:",e),uni.showToast({title:"选择失败",icon:"error"})}})))},"上传文件")]),P.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:0,class:"image-list"},[e.createElementVNode("view",{class:"image-title"},"已选择: ("+e.toDisplayString(P.value.length)+")",1),e.createElementVNode("view",{class:"image-grid"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(P.value,((t,a)=>(e.openBlock(),e.createElementBlock("view",{class:"image-item",key:a},[e.createElementVNode("view",{class:"image-info"},[e.createElementVNode("text",{class:"image-name"},e.toDisplayString(t.name),1),e.createElementVNode("text",{class:"delete-btn",onClick:e.withModifiers((e=>(e=>{uni.showModal({title:"提示",content:"确定要删除这张图片吗?",success:t=>{t.confirm&&(P.value.splice(e,1),uni.showToast({title:"删除成功",icon:"success"}))}})})(a)),["stop"])},"删除",8,["onClick"])])])))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"chat-input-container"},[e.withDirectives(e.createElementVNode("textarea",{class:"message-input",placeholder:"输入消息...",onConfirm:A,"confirm-type":"send","onUpdate:modelValue":o[7]||(o[7]=e=>Q.value=e),"auto-height":""},null,544),[[e.vModelText,Q.value]]),e.createElementVNode("view",{class:"input-btn-group"},[e.createElementVNode("view",{class:"iconfont icon-tingzhi icon-btn"})])])])])])])],64)}}},[["__scopeId","data-v-0f1d768b"]]),se=f({__name:"WorkSpace",setup(n){const l=e.ref(""),s=e.ref(""),c=e.ref(""),i=e.ref("工作区"),d=e.ref(!1),m=e.ref([]),v=e.ref(!1),p=e.ref(!1),f=e.ref(""),h=()=>{v.value=!1,f.value=""},g=()=>{oe({count:10,type:"all",success:async e=>{const t=e.tempFiles||[];0!==t.length?await y(t):uni.showToast({title:"未选择文件",icon:"none"})},fail:e=>{t("error","at pages/WorkSpace/WorkSpace.vue:176","选择文件失败:",e)}})},y=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(((l,s)=>{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:588","uploadFileToShortStorage 参数:",{workspacesId:e,fileCount:c.length,filePath:n}),uni.uploadFile({url:`${o}/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:600","uploadFileToShortStorage 响应状态:",e.statusCode,"数据:",e.data),200===e.statusCode)try{const t=JSON.parse(e.data);if(Array.isArray(t)&&t.length>0)l(t);else if(t.success)l([{url:t.url||t.message,success:!0}]);else{const e=(null==t?void 0:t.error)||(null==t?void 0:t.message)||"上传文件(到短存云端)获取URL出错啦";s(e)}}catch(a){s("接口返回数据格式异常: "+e.data)}else s(`上传文件(到短存云端)获取URL失败:${e.statusCode} - ${e.data}`)},fail:e=>{const t=e.errMsg||"网络错误";s(t)}})})))(s.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(((l,s)=>{const c=Array.isArray(a)?a:a?[a]:[];uni.request({url:`${o}/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)l(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)||"上传文件到工作区出错啦";s(a)}}else s(`上传文件到工作区失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";s(t)}})})))(l.value,s.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"})}},E=e.computed((()=>0===M.value.length?"根目录":"/"+M.value.map((e=>e.name)).join("/"))),N=e.computed((()=>{const e=M.value.map((e=>e.name)).join("/"),t=f.value.trim();return t?e?`./${e}/${t}`:`./${t}`:e?`./${e}/`:"./"})),C=async()=>{const e=f.value.trim();if(e)try{const t=M.value.map((e=>e.name)).join("/"),a=t?`./${t}/${e}`:`./${e}`;await u(l.value,s.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=l.value,n=s.value,c=i,new Promise(((e,t)=>{uni.request({url:`${o}/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 r(l.value,s.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;s.value=uni.getStorageSync("workspace_id"),l.value=k(),t("log","at pages/WorkSpace/WorkSpace.vue:684","getWorkspaceId:",s.value),L.value=await(e=l.value,a=s.value,new Promise(((t,n)=>{uni.request({url:`${o}/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=()=>{d.value?m.value.length===I.value.length?m.value=[]:m.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"),w);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(E.value),1),e.createElementVNode("view",{class:"nf-path-label"},"路径预览"),e.createElementVNode("view",{class:"nf-path-preview"},e.toDisplayString(N.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:C},"确认")])])])):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(d.value?"全选":c.value),1)]),e.createElementVNode("view",{class:"navbar-title workspace-text"},e.toDisplayString(i.value),1),e.createElementVNode("view",{class:"navbar-right"},[d.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"navbar-right-text workspace-text",onClick:n[5]||(n[5]=e=>(d.value&&(m.value=[]),void(d.value=!d.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":m.value.includes(t.path)}]),key:t.path,onClick:e=>d.value?(e=>{const t=m.value.indexOf(e);-1!==t?m.value.splice(t,1):m.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=>{d.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-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"}[null==a?void 0:a.toLowerCase()]||"icon-qitawenjian")])},null,2)),e.createElementVNode("view",{class:"folder-name"},e.toDisplayString(t.name),1),d.value?(e.openBlock(),e.createElementBlock("view",{key:2,class:e.normalizeClass(["folder-checkbox",{"select-folder":m.value.includes(t.path)}])},[m.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)]),d.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:e.normalizeClass(["workspace-footer",{"folder-actions":m.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-02673744"]]),ce=f({__name:"UserProfileModal",setup(n){const l=()=>{t("log","at pages/UserProfileModal/UserProfileModal.vue:55","点击了返回"),uni.navigateBack({delta:1,fail(){uni.reLaunch({url:"/pages/Chat/Chat"})}})},c=async()=>{if(d.value.trim()){uni.showLoading({title:"保存中...",mask:!0});try{await(e=i.value,a=r.value,n=d.value.trim(),s=m.value.trim(),c=u.value,new Promise(((t,l)=>{uni.request({url:`${o}/cloud_api/update_user_profile`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,user_id:a,username:n,"email:":s,avatar:c},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)||"修改用户信息出错啦";l(e)}}else l(`修改用户信息失败:${e.statusCode}`)}})}))),uni.hideLoading(),uni.showToast({title:"保存成功",icon:"success"}),setTimeout((()=>{l()}),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,s,c}else uni.showToast({title:"用户名不能为空",icon:"none"})},i=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()=>{i.value=k();try{const e=await s(i.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 o=a(e.resolveDynamicComponent("uni-icons"),w);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:l},[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:c},[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(o,{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"]]),ie=f({__name:"ContactPages",setup(n){const o=K(),l=()=>{uni.navigateBack({delta:1,fail(){uni.reLaunch({url:"/pages/Chat/Chat"})}})},r=(e,t="")=>{uni.setStorageSync("chatType",e),t&&uni.setStorageSync("currentSessionId",t),uni.reLaunch({url:"/pages/Chat/Chat"})},u=e.ref(0),d=e.reactive([{name:"contacts",label:"通讯录",icon:"📞"},{name:"createGroup",label:"新建群聊",icon:"👥"},{name:"addFriend",label:"添加好友",icon:"➕"},{name:"friendRequest",label:"好友申请",icon:"📨"}]),m=e=>{u.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=k();const e=await s(v.value);p.value=e._id,t("log","at pages/ContactPages/ContactPages.vue:446","UserId.value:",p.value);const a=await J(p.value);t("log","at pages/ContactPages/ContactPages.vue:448","friendList:",a),a&&a.length?h.value=await y(a):(h.value=[],t("log","at pages/ContactPages/ContactPages.vue:453","好友列表为空"))}catch(e){t("error","at pages/ContactPages/ContactPages.vue:456","获取好友列表失败:",e),h.value=[]}},y=async e=>{if(!(null==e?void 0:e.length))return[];try{const t=e.map((e=>e.receiver)),a=await c(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 N(),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 E=e.ref([]),N=async()=>{try{t("log","at pages/ContactPages/ContactPages.vue:494","开始获取群聊列表"),v.value=k();const e=await s(v.value);p.value=e._id,t("log","at pages/ContactPages/ContactPages.vue:498","UserId.value:",p.value),E.value=await H(p.value)}catch(e){t("error","at pages/ContactPages/ContactPages.vue:501","获取群聊列表失败:",e),E.value=[]}},C=e.ref(""),b=e.ref(),V=async()=>{try{if(!C.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:C.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 N();const e=E.value.find((e=>e.id===o.groupId));e?(t("log","at pages/ContactPages/ContactPages.vue:618","✅ 新建群聊成功",e),B.value=[],u.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 i(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:`${R}/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 c(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:`${R}/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:`${R}/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 s=a(e.resolveDynamicComponent("uni-icons"),w);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(s,{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:u.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=>r(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(s,{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=>r(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(s,{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(s,{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(E.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"friend-card",key:t.id,onClick:e=>r(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(s,{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=>C.value=e)},null,512),[[e.vModelText,C.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(s,{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(s,{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(s,{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=>{u.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"]]),re=f({__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"]]),ue={__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}}},de=f({__name:"text2",setup(a){const n=W(),o=e.ref({token:k(),conversationId:y()}),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:E(),token:k(),conversation_id:y()}}}]),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:y()}):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:E(),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:E(),token:k(),conversation_id:y()}};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"]]),me=f({__name:"CloudDatabase",setup(n){const l=e.ref(""),c=e.ref(""),p=e.ref(""),f=e.ref("user"),h=e=>{f.value=e,T.value=[],M()},g=e.ref("云端数据"),y=e.ref(!1),E=e.ref(!1),N=e.ref([]),C=()=>{y.value=!y.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"===f.value?_.value:B.value;if(0===T.value.length)"user"===f.value?S.value=e:x.value=e;else{const e=T.value[T.value.length-1].children||[];"user"===f.value?S.value=e:x.value=e}},I=async()=>{try{l.value=k();const e=await s(l.value);c.value=e._id,p.value=uni.getStorageSync("workspace_id")||"";const t=await d(l.value,"user");_.value=t||[],"user"===f.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 d(l.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(E.value){const t=N.value.indexOf(e.id);return void(-1!==t?N.value.splice(t,1):N.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=l.value,n=e.id,new Promise(((e,t)=>{uni.request({url:`${o}/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(s){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:821","下载失败:",s),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=l.value,s=e.id,new Promise(((e,t)=>{uni.request({url:`${o}/cloud_api/file/delete`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:n,file_id:s},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(c){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1014","deleteCloudFile 失败,尝试 daleteWorkspace:",c);try{const t=e.path||"/"+e.name;p.value&&await r(l.value,p.value,t),uni.showToast({title:"删除成功",icon:"success"}),G()}catch(i){t("error","at pages/CloudDatabase/CloudDatabase.vue:1026","删除失败:",i),uni.showToast({title:"删除失败,请重试",icon:"error"})}}}var n,s}})},G=async()=>{"user"===f.value?await I():await z(Te.value)},X=e.ref(!1),K=e.ref(""),Y=()=>{X.value=!1,K.value=""},Q=async()=>{const e=K.value.trim();if(e)try{if(p.value){const t=("根目录 (/)"===$.value?"/":$.value)+e;await u(l.value,p.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,le()},le=()=>{oe({count:10,type:"all",success:e=>{const t=(e.tempFiles||[]).map((e=>({tempFilePath:e.path||e.tempFilePath,name:e.name})));0!==t.length?se(t):uni.showToast({title:"未选择文件",icon:"none"})},fail:e=>{t("error","at pages/CloudDatabase/CloudDatabase.vue:1133","选择文件失败:",e)}})},se=async e=>{uni.showLoading({title:"上传中..."});try{const t=ee.value.trim()||"/",a="user"===f.value?"user":"team",n="team"===f.value?Te.value:"";await((e,t,a,n,l)=>new Promise(((s,c)=>{const i=null==l?"":String(l);uni.uploadFile({url:`${o}/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)s(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)}})})))(l.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=k(),t=await(e=>new Promise(((t,a)=>{uni.request({url:`${o}/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=k();await((e,t)=>new Promise(((a,n)=>{uni.request({url:`${o}/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},Ne=()=>{oe({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"})}})},Ce=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=k();await((e,t)=>new Promise(((a,n)=>{const l="string"==typeof t?t:t.tempFilePath||t.path||t,s="string"==typeof t?t.split("/").pop()||"database.db":t.name||"database.db";uni.uploadFile({url:`${o}/cloud_api/database/upload/db`,method:"POST",header:{},formData:{access_token:e},file:{name:s,uri:l},files:[{name:"file",uri:l}],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=k();await((e,t)=>new Promise(((a,n)=>{uni.request({url:`${o}/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(!c.value||0===De.value.length)return"member";const e=De.value.find((e=>e.receiver===c.value||e.user_id===c.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=k(),t=await m(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=k(),a=await v(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=k(),t=await v(e,Te.value),a=(t||[]).find((e=>e.user_id===c.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)===c.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="",Ke.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=k();await((e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${o}/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)||"修改团队信息出错啦";l(e)}}else l(`修改团队信息失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(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=k(),n=e.receiver||e.user_id;await((e,t,a,n)=>new Promise(((l,s)=>{uni.request({url:`${o}/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)l(t.message);else{const e=(null==t?void 0:t.error)||"调整团员身份出错啦";s(e)}}else s(`调整团员身份失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";s(t)}})})))(t,Te.value,n,a),uni.hideLoading(),uni.showToast({title:"已"+("admin"===a?"设为管理员":"降为成员"),icon:"success"}),await Xe()}catch(l){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1516","调整成员身份失败:",l),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=k(),a=e.receiver||e.user_id;await((e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${o}/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)||"移除团队成员出错啦";l(e)}}else l(`移除团队成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(t,Te.value,[a]),uni.hideLoading(),uni.showToast({title:"已移除",icon:"success"}),await Xe()}catch(n){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1542","移除团队成员失败:",n),uni.showToast({title:"移除失败,请重试",icon:"error"})}}}})},Xe=async()=>{const e=k(),t=await v(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"}}))},Ke=e.ref([]),Ye=e.ref(!1),Qe=async()=>{const e=Pe.value.trim();if(e)try{const t=k(),a=await i(t,e);Ke.value=a||[],Ye.value=!0,Ke.value.length}catch(a){t("error","at pages/CloudDatabase/CloudDatabase.vue:1584","搜索用户失败:",a),Ke.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=k();await((e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${o}/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)||"添加团队成员出错啦";l(e)}}else l(`添加团队成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(t,Te.value,[e._id]),uni.hideLoading(),uni.showToast({title:"添加成功",icon:"success"}),Pe.value="",Ke.value=[],Ye.value=!1,await Xe()}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=l.value,n=Te.value,new Promise(((e,t)=>{uni.request({url:`${o}/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(s){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1644","删除团队失败:",s),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"),w);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)===c.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},"搜索")]),Ke.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:0,class:"search-result-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Ke.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),X.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"===f.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=>K.value=e),type:"text",placeholder:"输入目录名称"},null,512),[[e.vModelText,K.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:Ne},[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:Ce},"确认上传")])])])):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"}),y.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"menu-card"},[e.createElementVNode("view",{class:"menu-card-item",onClick:n[12]||(n[12]=e=>{E.value=!E.value,E.value||(N.value=[]),C()})},"选择"),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("view",{class:"menu-card-item",onClick:n[13]||(n[13]=e=>{X.value=!0,K.value="",C()})},"新建文件夹")])):e.createCommentVNode("",!0)]),e.createElementVNode("view",{class:"category-tabs"},[e.createElementVNode("view",{class:e.normalizeClass(["category-tab",{active:"user"===f.value}]),onClick:n[14]||(n[14]=e=>h("user"))}," 个人 ",2),e.createElementVNode("view",{class:e.normalizeClass(["category-tab",{active:"team"===f.value}]),onClick:n[15]||(n[15]=e=>h("team"))}," 团队 ",2)])]),e.createElementVNode("scroll-view",{class:"cloud-db-content","scroll-y":""},["user"===f.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"===f.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"]]),ve=f({__name:"CloudDbDetail",props:{databaseId:{type:String,default:""},databaseName:{type:String,default:""},teamId:{type:String,default:""}},setup(n){const l=n,s=e.ref(l.databaseId||""),c=e.ref(l.databaseName||""),i=e.ref(l.teamId||""),r=e.ref(2),u=e.ref(0),d=e.ref([]),v=e.ref(!1),f=e.ref(null),h=e.ref([]),g=e.computed((()=>{var e;if(h.value.length>0){const e=new Set;return h.value.forEach((t=>Object.keys(t).forEach((t=>e.add(t))))),Array.from(e).filter((e=>"_row_id"!==e&&"_id"!==e))}return(null==(e=f.value)?void 0:e.columns)?f.value.columns.map((e=>e.name)).filter((e=>"_row_id"!==e)):[]})),y=e.ref(!1),E=()=>{y.value=!y.value},C=()=>{uni.navigateBack()},b=async()=>{v.value=!0;try{const e=k(),t=await((e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${o}/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)||"获取用户可访问的数据库列表出错啦";l(e)}}else l(`获取用户可访问的数据库列表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(e,s.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{v.value=!1}},V=async e=>{f.value=e,h.value=[],uni.showLoading({title:"加载中..."});try{const t=k(),a=await((e,t,a,n="20",l="0")=>new Promise(((s,c)=>{uni.request({url:`${o}/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:l},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)s(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,s.value,e.table_name);h.value=a||[],uni.hideLoading()}catch(t){uni.hideLoading(),uni.showToast({title:"string"==typeof t?t:"加载表数据失败",icon:"none"}),h.value=[]}},_=e=>{uni.showModal({title:"删除表",content:`确定要删除表"${e.table_name}"吗?此操作不可恢复。`,success:async a=>{var n;if(a.confirm){uni.showLoading({title:"删除中..."});try{const t=k();await(async(e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${o}/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||"删除数据库中的表出错啦";l(e)}}else l(`删除数据库中的表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(t,s.value,e.table_name),uni.hideLoading(),uni.showToast({title:"删除成功",icon:"success"}),(null==(n=f.value)?void 0:n.table_name)===e.table_name&&(f.value=null,h.value=[]),await b()}catch(l){uni.hideLoading(),t("error","at pages/CloudDbDetail/CloudDbDetail.vue:335","删除表失败:",l),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 l=n[0];uni.showModal({title:`编辑 ${l}`,editable:!0,placeholderText:e[l]||"",content:"",success:async n=>{if(n.confirm&&void 0!==n.content){uni.showLoading({title:"更新中..."});try{const t=k();await((e,t,a,n,l)=>new Promise(((s,c)=>{uni.request({url:`${o}/cloud_api/database/table/update/by/id`,method:"POST",data:{access_token:e,database_id:t,table_name:a,where_data:n,update_data:l},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)s(t.message);else{const e=t.error||"更新表数据出错啦";c(e)}}else c(`更新表数据失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";c(t)}})})))(t,s.value,f.value.table_name,{_row_id:a},{[l]:n.content}),uni.hideLoading(),uni.showToast({title:"更新成功",icon:"success"}),e[l]=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=()=>{oe({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=k();await((e,t,a,n,l)=>new Promise(((s,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:`${o}/cloud_api/database/import`,method:"POST",header:{},formData:{access_token:e,force_overwrite:t,database_id:a,table_name:l},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)s(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,s.value,D.value,e),uni.hideLoading(),uni.showToast({title:"导入成功",icon:"success"}),P(),await b()}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=k();let t;t=i.value?await p(e,s.value,"team_id",i.value):await p(e,s.value,"user_id",N());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)||N(),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=k();await((e,t,a,n)=>new Promise(((l,s)=>{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:`${o}/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)l(t.message);else{const e=t.error||"删除 团队/用户 对数据库权限出错啦";s(e)}}else s(`删除 团队/用户 对数据库权限失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";s(t)}})})))(t,s.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 l=a.tapIndex;if(l!==n){uni.showLoading({title:"更新中..."});try{const t=k();await((e,t,a,n,l)=>new Promise(((s,c)=>{const i={access_token:e,database_id:t,access_level:l};"user_id"===a?i.user_id=n:"team_id"===a&&(i.team_id=n),uni.request({url:`${o}/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)s(t.message);else{const e=t.error||"修改/增加 团队/用户 对数据库权限出错啦";c(e)}}else c(`修改/增加 团队/用户 对数据库权限失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";c(t)}})})))(t,s.value,e.permType,e.id,l),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=k();await(async(e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${o}/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||"个人数据库移交团队出错啦";l(e)}}else l(`个人数据库移交团队失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(e,s.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||{};s.value=n.databaseId||"",c.value=decodeURIComponent(n.databaseName||"数据库详情"),i.value=n.teamId||"",s.value&&b()})),(n,o)=>{const l=a(e.resolveDynamicComponent("uni-icons"),w);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:E})])]),y.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="",E()})},"导入文件"),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("view",{class:"menu-card-item",onClick:o[5]||(o[5]=e=>{I(),E()})},"权限管理"),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=k(),t=await m(e);A.value=t||[]}catch(e){t("error","at pages/CloudDbDetail/CloudDbDetail.vue:632","获取团队列表失败:",e),A.value=[]}})(),E()})},"移交团队"))])):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"},[v.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))]))])]),f.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(f.value.table_name),1)]),e.createElementVNode("view",{class:"section-actions"},[e.createElementVNode("text",{class:"row-count"},e.toDisplayString(h.value.length)+" / "+e.toDisplayString(f.value.row_count||0)+" 条",1)])]),e.createElementVNode("view",{class:"section-body"},[0===h.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(h.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",h),__definePage("pages/Chat/Chat",le),__definePage("pages/WorkSpace/WorkSpace",se),__definePage("pages/UserProfileModal/UserProfileModal",ce),__definePage("pages/ContactPages/ContactPages",ie),__definePage("pages/WorkSpace/TemplateSpace/TemplateSpace",re),__definePage("pages/text/text",ue),__definePage("pages/text/text2",de),__definePage("pages/CloudDatabase/CloudDatabase",me),__definePage("pages/CloudDbDetail/CloudDbDetail",ve);const pe={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:fe,Vuex:he,Pinia:ge}=function(){const t=e.createVueApp(pe),a=function(){const t=e.effectScope(!0),a=t.run((()=>e.ref({})));let n=[],o=[];const l=e.markRaw({install(e){x(l),l._a=e,e.provide(T,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=he,uni.Pinia=ge,fe.provide("__globalStyles",__uniConfig.styles),fe._component.mpType="app",fe._component.render=()=>{},fe.mount("#app")}(Vue);
|