8 lines
292 KiB
JavaScript
8 lines
292 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)},l=n("onShow",3),o=n("onUnload",2),s="https://cloud.yuxindazhineng.com",i=async e=>new Promise(((t,a)=>{uni.request({url:`${s}/get_user_conversations`,method:"POST",data:{access_token:e},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const a=e.data.conversations;t(a)}else a(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})),c=async(e,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/get_conversation_messages`,method:"POST",data:{access_token:e,login_type:"phone",conversation_id:a},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const a=e.data;if(a){t("log","at utils/cloud-api.js:93","工作区id为:",a.workspace_id||"(无)"),a.workspace_id&&uni.setStorageSync("workspace_id",a.workspace_id);const e=(a.messages||[]).filter((e=>"tool"!==e.role));n(e)}else{const t=e.data.error||"获取消息出错啦";l(t)}}else l(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})),r=async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/create_workspace`,method:"POST",data:{access_token:e,name:t},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data.workspace_id;if(t)a(t);else{const t=e.data.error||"创建工作区id出错啦";n(t)}}else n(`创建工作区id失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),u=async(e,t,a,n)=>new Promise(((l,o)=>{uni.request({url:`${s}/create_conversation`,method:"POST",data:{access_token:e,workspace_id:t,title:a,sender:n},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data.conversation_id;if(t)l(t);else{const t=e.data.error||"创建新对话id出错啦";o(t)}}else o(`创建新对话失败:${e.statusCode}`)}})})),d=async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/delete_conversation`,method:"POST",data:{access_token:e,conversation_ids:t},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)a(t.message);else{const e=t.failed_ids.error||"删除对话出错啦";n(e)}}else n(`删除对话失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),p=async e=>new Promise(((t,a)=>{uni.request({url:`${s}/get_user_info`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e},success:e=>{var n,l;if(200===e.statusCode){const o=e.data;if(null==o?void 0:o._id)uni.setStorageSync("userId",o._id),t(o);else{const e=(null==(l=null==(n=null==o?void 0:o.detail)?void 0:n[0])?void 0:l.msg)||"获取用户信息出错啦";a(e)}}else a(`获取用户信息失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})),m=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/get_user_avatar`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,user_ids:t},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)a(t.users);else{const e=(null==t?void 0:t.error)||"获取用户头像出错啦";n(e)}}else n(`获取用户头像失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),v=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/search_users`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,keyword:t},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)a(t.users);else{const e=(null==t?void 0:t.error)||"通过用户名或邮箱来去查询用户出错啦";n(e)}}else n(`通过用户名或邮箱来去查询用户失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),h=(e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/cloud_api/phone/workspace/delete`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspaces_id:t,file_path:a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"删除工作区文件出错啦";l(e)}}else l(`删除工作区文件失败:${e.statusCode}`)}})})),g=(e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/cloud_api/phone/workspace/create`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspaces_id:t,dir_path:a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"创建工作区文件夹出错啦";l(e)}}else l(`创建工作区文件夹失败:${e.statusCode}`)}})})),f=(e,t,a="/",n="")=>new Promise(((l,o)=>{uni.request({url:`${s}/cloud_api/file/list`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,path:a,type:t,team_id:n},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)l(t.data);else{const e=(null==t?void 0:t.error)||"获取工作区文件目录出错啦";o(e)}}else o(`获取工作区文件目录失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})),w=async e=>new Promise(((t,a)=>{uni.request({url:`${s}/cloud_api/team/list`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_name:""},success:e=>{if(200===e.statusCode){const n=e.data;if(n.success){const e=n.teams.slice(1);t(e)}else{const t=e.data.error||"获取用户可访问的团队列表出错啦";a(t)}}else a(`获取用户可访问的团队列表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})),k=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/team/get_all_member`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_id:t},success:e=>{var t;if(200===e.statusCode){const l=e.data;if(l.success){const e=(null==(t=l.team)?void 0:t.result)||[];a(e)}else{const e=(null==l?void 0:l.error)||"获取团队全部成员出错啦";n(e)}}else n(`获取团队全部成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),y=(e,t,a,n)=>new Promise(((l,o)=>{const i={access_token:e,database_id:t};"user_id"===a?i.user_id=n:"team_id"===a&&(i.team_id=n),uni.request({url:`${s}/cloud_api/database/permission/info`,method:"POST",data:i,header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)l(t.data);else if(Array.isArray(t))l(t);else{const e=(null==t?void 0:t.error)||"查看 个人/团队 数据库权限信息出错啦";o(e)}}else o(`查看 个人/团队 数据库权限信息失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})),E=(e,a,n)=>new Promise(((l,o)=>{uni.request({url:`${s}/cloud_api/phone/conversation/message/download`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspace_id:a,url:n},success:e=>{if(200===e.statusCode){const a=e.data;if(t("log","at utils/cloud-api.js:1703",a),a.local_success)l(a.url||a.download_url||a.data||a);else{o("下载消息文件出错啦")}}else o(`下载消息文件失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})),C=(e,t)=>{const a=e.__vccOpts||e;for(const[n,l]of t)a[n]=l;return a},N=C({__name:"Login",setup(a){const n=e.ref(""),l=e.ref(!1),o=e.ref(!1),i=()=>{l.value=!0,f.value=!1},c=()=>{l.value=!1},r=()=>{},u=e.ref(""),d=e.ref(!1),p=e.ref(!1),m=()=>{d.value=!0,f.value=!1},v=()=>{d.value=!1},h=e.reactive({username:e.computed((()=>n.value)),password:e.computed((()=>u.value)),remember:!0}),g=e.ref(!1),f=e.ref(!1),w=async()=>{if(k(),!f.value){g.value=!0;try{t("log","at pages/Login/Login.vue:119","有返回token:",await(async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/login`,method:"POST",data:{username:e,password:t,login_type:"phone"},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data.access_token;if(t)uni.setStorageSync("token",t),a(t);else{const t=e.data.error||"检查用户名和密码";n(t)}}else String(e.statusCode).startsWith("5")?n({serverError:!0,code:e.statusCode,message:"服务器升级中,请稍后再试"}):n(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})))(n.value,u.value)),y(),uni.reLaunch({url:"/pages/Chat/Chat"})}catch(e){t("log","at pages/Login/Login.vue:125","登录失败",e),e&&"object"==typeof e&&e.serverError?uni.showModal({title:"提示",content:e.message,showCancel:!1,confirmText:"知道了"}):uni.showToast({title:(null==e?void 0:e.message)||e||"失败",icon:"error"})}finally{g.value=!1}}},k=()=>{n.value&&u.value||(f.value=!0)},y=()=>{if(h.remember){const e={username:h.username,password:h.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||"",h.remember=e.remember??!0)}catch(e){t("error","at pages/Login/Login.vue:178","读取登录信息失败",e)}})()})),(t,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),e.createElementVNode("view",{class:"login-container page-container"},[e.createElementVNode("view",{class:"login-card"},[e.createElementVNode("view",{class:"login-header"},[e.createElementVNode("view",{class:"login-header-logo"},[e.createElementVNode("view",{class:"icon-wrapper"},[e.createElementVNode("view",{class:"iconfont icon-brain-2-fill danao-style"})]),e.createElementVNode("text",null,"YXD")]),e.createElementVNode("view",{class:"sub-title"},"File Handling Chat")]),e.createElementVNode("view",{class:"form-wrapper"},[e.createElementVNode("view",{class:"form-item"},[e.createElementVNode("view",{class:"form-label"},[e.createElementVNode("text",null,"用户名")]),e.withDirectives(e.createElementVNode("input",{class:e.normalizeClass(["form-input",{focused:l.value,error:o.value}]),"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e),onFocus:i,onBlur:c,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:p.value}]),"onUpdate:modelValue":a[1]||(a[1]=e=>u.value=e),onFocus:m,onBlur:v,placeholder:"请输入密码"},null,34),[[e.vModelText,u.value]])]),f.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=>h.remember=!h.remember)},[e.createElementVNode("view",{class:e.normalizeClass(["checkbox",{checked:h.remember}])},[h.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:g.value,loading:g.value,onClick:w},e.toDisplayString(g.value?"Loading...":"登录"),9,["disabled","loading"])])])])],64))}},[["__scopeId","data-v-1f1e3d89"]]),V=[{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 b=C({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:V}),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,l,o,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"]]),_=()=>uni.getStorageSync("token"),B=()=>{const e=uni.getStorageSync("currentSessionId");return isNaN(Number(e))?e.replace(/-/g,""):e},S=()=>(t("log","at utils/user-info.js:50","用户Id(UserId)",uni.getStorageSync("userId")),uni.getStorageSync("userId")),x=()=>uni.getStorageSync("chatType"),T=()=>uni.getStorageSync("receiverId"),D=C(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:l}){const o=n,s=l,i=e.toRef(o,"chatList");e.toRef(o,"showNewChatModal");const c=e.toRef(o,"chatType"),r=()=>{uni.navigateTo({url:"/pages/UserProfileModal/UserProfileModal"})},u=e.ref(!1),m=e.ref([]),v=()=>{0!==m.value.length&&uni.showModal({title:"确认删除",content:`确定要删除全部 ${m.value.length} 个对话吗?此操作不可恢复。`,confirmText:"确认删除",confirmColor:"#ff0000",success:async e=>{if(e.confirm)try{const e=_();await d(e,m.value),uni.showToast({title:"删除成功",icon:"success"}),m.value=[],u.value=!1,s("refresh-conversations")}catch(a){t("error","at components/ChatSidebar.vue:209","删除会话失败:",a),uni.showToast({title:"删除失败,请重试",icon:"none"})}}})},h=()=>{i.value.length?uni.showModal({title:"确认删除",content:`确定要删除全部 ${i.value.length} 个对话吗?此操作不可恢复。`,confirmText:"删除全部",confirmColor:"#ff0000",success:async e=>{if(e.confirm)try{const e=_(),t=i.value.map((e=>e._id));await d(e,t),uni.showToast({title:"已删除全部对话",icon:"success"}),s("refresh-conversations")}catch(a){t("error","at components/ChatSidebar.vue:241","清空全部对话失败:",a),uni.showToast({title:"删除失败,请重试",icon:"none"})}}}):uni.showToast({title:"没有可删除的会话",icon:"none"})},g=e.computed((()=>i.value.length>0&&m.value.length===i.value.length)),f=e.toRef(o,"currentSessionId"),w=(e,a="")=>{t("log","at components/ChatSidebar.vue:259","选择的id是:",e),a&&uni.setStorageSync("receiverId",a),uni.setStorageSync("currentSessionId",e),s("update:currentSessionId",e)},k=()=>{t("log","at components/ChatSidebar.vue:270","点击了新建会话"),s("update:showNewChatModal",!0)},y=()=>{uni.navigateTo({url:"/pages/ContactPages/ContactPages"})},E=e.ref(""),C=e.ref(!1),N=()=>{u.value=!u.value,u.value||(m.value=[])},V=e=>{const t=m.value.indexOf(e);-1===t?m.value.push(e):m.value.splice(t,1)},B=()=>{g.value?m.value=[]:m.value=i.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=_();const e=await p(S.value);x.value=e.avatar||"",T.value=e.username||"",t("log","at components/ChatSidebar.vue:326","菜单收到的会话列表:",i.value)})),(t,n)=>{const l=a(e.resolveDynamicComponent("uni-icons"),b);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:r},[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(l,{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:y},[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(i.value.length)+"个对话",1)]),e.createElementVNode("view",{class:"history-management"},[u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-management-btn iconfont icon-jia icon-jia-style",onClick:k})),u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:1,class:"history-management-btn iconfont icon-duoxuan icon-duoxuan-style",onClick:N})),u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:2,class:"history-management-btn iconfont icon-saochu icon-saochu-style",onClick:h})),u.value&&m.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:3,class:"history-management-btn iconfont icon-shanchu icon-shanchu-style",onClick:v})):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("view",{key:4,class:e.normalizeClass(["history-management-btn iconfont icon-total_selection icon-total_selection-style",{active:g.value}]),onClick:B},null,2)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("view",{key:5,class:"history-management-btn iconfont icon-quxiao icon-quxiao-style",onClick:N})):e.createCommentVNode("",!0)])]),u.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":E.value||C.value}])},[e.createVNode(l,{type:"search",class:e.normalizeClass([E.value||C.value?"chat-search-icon":"search-icon"])},null,8,["class"]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=e=>E.value=e),onFocus:n[1]||(n[1]=e=>C.value=!0),onBlur:n[2]||(n[2]=e=>C.value=!1),type:"text",placeholder:"搜索会话..."},null,544),[[e.vModelText,E.value]])],2)])),e.createElementVNode("view",{class:"chat-history-list"},[0===c.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.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":f.value===t._id||m.value.includes(t._id)}]),onClick:e=>u.value?V(t._id):w(t._id)},[u.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[m.value.includes(t._id)?(e.openBlock(),e.createBlock(l,{key:0,type:"checkmarkempty",size:"20",color:"#007aff"})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"history-chat-avatar"},[e.createVNode(l,{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===c.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(i.value,(t=>(e.openBlock(),e.createElementBlock("view",{key:t.sessionId,"data-chat-id":t.sessionId,class:e.normalizeClass(["chat-history-card",{"is-select-chat":f.value===t.sessionId||m.value.includes(t.sessionId)}]),onClick:e=>u.value?V(t.sessionId):w(t.sessionId,t.receiver)},[u.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[m.value.includes(t.sessionId)?(e.openBlock(),e.createBlock(l,{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===c.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(i.value,(t=>(e.openBlock(),e.createElementBlock("view",{key:t.id,"data-chat-id":t.id,class:e.normalizeClass(["chat-history-card",{"is-select-chat":f.value===t.id||m.value.includes(t.id)}]),onClick:e=>u.value?V(t.id):w(t.id)},[u.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[m.value.includes(t.id)?(e.openBlock(),e.createBlock(l,{key:0,type:"checkmarkempty",size:"20",color:"#007aff"})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"history-chat-avatar"},[e.createElementVNode("view",{class:"iconfont icon-qunliao",style:{"font-size":"80rpx",color:"#fff"}})]),e.createElementVNode("view",null,e.toDisplayString(t.name),1)],10,["data-chat-id","onClick"])))),128)):e.createCommentVNode("",!0)])])])}}}),[["__scopeId","data-v-eed4c646"]]);var P={"":["<em>","</em>"],_:["<strong>","</strong>"],"*":["<strong>","</strong>"],"~":["<s>","</s>"],"\n":["<br />"]," ":["<br />"],"-":["<hr />"]};function $(e){return e.replace(RegExp("^"+(e.match(/^(\t| )+/)||"")[0],"gm"),"")}function j(e){return(e+"").replace(/"/g,""").replace(/</g,"<").replace(/>/g,">")}function M(e,t){var a,n,l,o,s,i=/((?:^|\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,c=[],r="",u=t||{},d=0;function p(e){var t=P[e[1]||""],a=c[c.length-1]==e;return t?t[1]?(a?c.pop():c.push(e),t[0|a]):t[0]:e}function m(){for(var e="";c.length;)e+=p(c[c.length-1]);return e}for(e=e.replace(/^\[(.+?)\]:\s*(.+)$/gm,(function(e,t,a){return u[t.toLowerCase()]=a,""})).replace(/^\n+|\n+$/g,"");l=i.exec(e);)n=e.substring(d,l.index),d=i.lastIndex,a=l[0],n.match(/[^\\](\\\\)*\\$/)||((s=l[3]||l[4])?a='<pre class="code '+(l[4]?"poetry":l[2].toLowerCase())+'"><code'+(l[2]?' class="language-'+l[2].toLowerCase()+'"':"")+">"+$(j(s).replace(/^\n+|\n+$/g,""))+"</code></pre>":(s=l[6])?(s.match(/\./)&&(l[5]=l[5].replace(/^\d+/gm,"")),o=M($(l[5].replace(/^\s*[>*+.-]/gm,""))),">"==s?s="blockquote":(s=s.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"<li>$1</li>")),a="<"+s+">"+o+"</"+s+">"):l[8]?a='<img src="'+j(l[8])+'" alt="'+j(l[7])+'">':l[10]?(r=r.replace("<a>",'<a href="'+j(l[11]||u[n.toLowerCase()])+'">'),a=m()+"</a>"):l[9]?a="<a>":l[12]||l[14]?a="<"+(s="h"+(l[14]?l[14].length:l[13]>"="?1:2))+">"+M(l[12]||l[15],u)+"</"+s+">":l[16]?a="<code>"+j(l[16])+"</code>":(l[17]||l[1])&&(a=p(l[17]||"--"))),r+=n,r+=a;return(r+e.substring(d)+m()).replace(/^\n+|\n+$/g,"")}
|
||
/*!
|
||
* pinia v2.1.7
|
||
* (c) 2023 Eduardo San Martin Morote
|
||
* @license MIT
|
||
*/
|
||
let I;const L=e=>I=e,z=Symbol();function F(e){return e&&"object"==typeof e&&"[object Object]"===Object.prototype.toString.call(e)&&"function"!=typeof e.toJSON}var O,A;(A=O||(O={})).direct="direct",A.patchObject="patch object",A.patchFunction="patch function";const U=()=>{};function q(t,a,n,l=U){t.push(a);const o=()=>{const e=t.indexOf(a);e>-1&&(t.splice(e,1),l())};return!n&&e.getCurrentScope()&&e.onScopeDispose(o),o}function R(e,...t){e.slice().forEach((e=>{e(...t)}))}const W=e=>e();function J(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 l=a[n],o=t[n];F(o)&&F(l)&&t.hasOwnProperty(n)&&!e.isRef(l)&&!e.isReactive(l)?t[n]=J(o,l):t[n]=l}return t}const H=Symbol();const{assign:X}=Object;function K(t,a,n={},l,o,s){let i;const c=X({actions:{}},n),r={deep:!0};let u,d,p,m=[],v=[];const h=l.state.value[t];let g;function f(a){let n;u=d=!1,"function"==typeof a?(a(l.state.value[t]),n={type:O.patchFunction,storeId:t,events:p}):(J(l.state.value[t],a),n={type:O.patchObject,payload:a,storeId:t,events:p});const o=g=Symbol();e.nextTick().then((()=>{g===o&&(u=!0)})),d=!0,R(m,n,l.state.value[t])}s||h||(l.state.value[t]={}),e.ref({});const w=s?function(){const{state:e}=n,t=e?e():{};this.$patch((e=>{X(e,t)}))}:U;function k(e,a){return function(){L(l);const n=Array.from(arguments),o=[],s=[];function i(e){o.push(e)}function c(e){s.push(e)}let r;R(v,{args:n,name:e,store:E,after:i,onError:c});try{r=a.apply(this&&this.$id===t?this:E,n)}catch(u){throw R(s,u),u}return r instanceof Promise?r.then((e=>(R(o,e),e))).catch((e=>(R(s,e),Promise.reject(e)))):(R(o,r),r)}}const y={_p:l,$id:t,$onAction:q.bind(null,v),$patch:f,$reset:w,$subscribe(a,n={}){const o=q(m,a,n.detached,(()=>s())),s=i.run((()=>e.watch((()=>l.state.value[t]),(e=>{("sync"===n.flush?d:u)&&a({storeId:t,type:O.direct,events:p},e)}),X({},r,n))));return o},$dispose:function(){i.stop(),m=[],v=[],l._s.delete(t)}},E=e.reactive(y);l._s.set(t,E);const C=(l._a&&l._a.runWithContext||W)((()=>l._e.run((()=>(i=e.effectScope()).run(a)))));for(const b in C){const a=C[b];if(e.isRef(a)&&(V=a,!e.isRef(V)||!V.effect)||e.isReactive(a))s||(!h||F(N=a)&&N.hasOwnProperty(H)||(e.isRef(a)?a.value=h[b]:J(a,h[b])),l.state.value[t][b]=a);else if("function"==typeof a){const e=k(b,a);C[b]=e,c.actions[b]=a}}var N,V;return X(E,C),X(e.toRaw(E),C),Object.defineProperty(E,"$state",{get:()=>l.state.value[t],set:e=>{f((t=>{X(t,e)}))}}),l._p.forEach((e=>{X(E,i.run((()=>e({store:E,app:l._a,pinia:l,options:c}))))})),h&&s&&n.hydrate&&n.hydrate(E.$state,h),u=!0,d=!0,E}function G(t,a,n){let l,o;const s="function"==typeof a;function i(t,n){const i=e.hasInjectionContext();(t=t||(i?e.inject(z,null):null))&&L(t),(t=I)._s.has(l)||(s?K(l,a,o,t):function(t,a,n,l){const{state:o,actions:s,getters:i}=a,c=n.state.value[t];let r;r=K(t,(function(){c||(n.state.value[t]=o?o():{});const a=e.toRefs(n.state.value[t]);return X(a,s,Object.keys(i||{}).reduce(((a,l)=>(a[l]=e.markRaw(e.computed((()=>{L(n);const e=n._s.get(t);return i[l].call(e,e)}))),a)),{}))}),a,n,0,!0)}(l,o,t));return t._s.get(l)}return"string"==typeof t?(l=t,o=s?n:a):(o=t,l=t.id),i.$id=l,i}const Y=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,l,o;t("log","at utils/socket.js:74","WebSocket 已连接"),this.reconnectAttempts>0&&(null==(n=(a=this.options).onReconnect)||n.call(a)),null==(o=(l=this.options).onOpen)||o.call(l,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 l=e.type;if("auth_ok"!==l)return"auth_fail"===l?("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 l=JSON.stringify(e);t("log","at utils/socket.js:199","发送的消息是:",l),this.ws.send({data:l,success:()=>a(),fail:e=>{t("error","at utils/socket.js:207","发送消息失败:",e),n(e)}})}))}reconnect(){this.reconnectTimer||(this.reconnectAttempts++,t("log","at utils/socket.js:233",`尝试重连 (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`),this.reconnectTimer=setTimeout((()=>{this.reconnectTimer=null,this.isManualClose||this.connect(this.options)}),this.reconnectDelay*this.reconnectAttempts))}startHeartbeat(){this.stopHeartbeat(),this.heartbeatTimer=setInterval((()=>{this.isConnected()?this.send({ws_event:"ping"}).catch((()=>{t("log","at utils/socket.js:255","心跳发送失败,准备重连"),this.reconnectTimer||this.isManualClose||this.reconnect()})):!this.isManualClose&&this.reconnectAttempts<this.maxReconnectAttempts&&this.reconnect()}),3e4)}stopHeartbeat(){this.heartbeatTimer&&(clearInterval(this.heartbeatTimer),this.heartbeatTimer=null)}handleError(e){var a,n;t("error","at utils/socket.js:283","WebSocket 错误处理:",JSON.stringify(e)),null==(n=(a=this.options).onError)||n.call(a,e)}isConnected(){return!!this.ws&&1===this.ws.readyState}getReadyState(){return this.ws?this.ws.readyState:3}close(){if(t("log","at utils/socket.js:319","手动关闭 WebSocket 连接"),this.isManualClose=!0,this.stopHeartbeat(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws){this.ws.onOpen&&this.ws.onOpen(null),this.ws.onMessage&&this.ws.onMessage(null),this.ws.onError&&this.ws.onError(null),this.ws.onClose&&this.ws.onClose(null);try{this.ws.close({success:()=>t("log","at utils/socket.js:341","连接已关闭"),fail:e=>t("error","at utils/socket.js:342","关闭失败:",e)})}catch(e){t("error","at utils/socket.js:350","关闭连接出错:",e)}this.ws=null}this.reconnectAttempts=0}updateOptions(e){this.options={...this.options,...e}}},Q=G("socket",(()=>{const a=e.ref("disconnected"),n=e.ref([]),l=e.ref(""),o=e.ref(!1),s=e.ref({token:"",conversationId:""});e.ref("");const i=e.ref([]),c=e.ref(20),r=e.ref(""),u=e.computed((()=>"connected"===a.value)),d=e.computed((()=>"connecting"===a.value)),p=e.computed((()=>"disconnected"===a.value)),m=e.computed((()=>"error"===a.value)),v=e.computed((()=>n.value[n.value.length-1]));function h(e,a){const n=new Date,l=`${n.getHours().toString().padStart(2,"0")}:${n.getMinutes().toString().padStart(2,"0")}:${n.getSeconds().toString().padStart(2,"0")}`;i.value.push({type:e,connect:a,time:l}),i.value.length>c.value&&(i.value=i.value.slice(-c.value)),t("log","at stores/socket.js:54",`[${e.toUpperCase()}] ${a}`)}function g(){a.value="connected",h("success","连接成功!发送auth"),t("log","at stores/socket.js:117","连接成功!发送auth"),s.value.token,Y.send({type:"auth",access_token:s.value.token})}function f(){"disconnected"!==a.value&&(a.value="disconnected",h("warn","连接已断开"))}function w(e){h("error",`Socket错误: ${JSON.stringify(e)}`),a.value="error"}function k(e){a.value="connecting",h("warn",`重连中... (${e}/5)`)}function y(e){h("receive",`收到: ${JSON.stringify(e)}`);const{type:a,conversation_id:n,message_id:s,data:i}=e||{};switch(t("log","at stores/socket.js:162",`[handleMessage] type = ${a}, data = ${JSON.stringify(i)}`),a){case"auth_ok":h("success","连接成功");break;case"auth_fail":o.value=!1,r.value=(null==i?void 0:i.reason)||(null==e?void 0:e.reason)||"unknown",h("error",`认证失败: ${r.value}`);break;case"chat_ack":h("warn","AI成功收到用户发送的消息");break;case"render":h("warn","AI正在回复信息"),function(e){if("exit"===e)return t("log","at stores/socket.js:224","ai结束思考"),void(o.value=!1);if(!e||"object"!=typeof e)return;if("event_callback"===e.cmd&&"中断成功"===e.info)return t("log","at stores/socket.js:234","后端确认中断成功"),h("warn",`中断确认: ${e.info}`),void(o.value=!1);const{role:a,chunk:n,message_role:s,meaasge_uuid:i,message_type:c,task_call_id:r}=e;o.value||!n&&"assistant"!==s||(t("log","at stores/socket.js:251","ai开始思考"),l.value="",o.value=!0);n&&(l.value+=n,o.value||(t("log","at stores/socket.js:260","修改状态为开始思考"),o.value=!0))}(i);break;case"pc_offline":h("warn","PC 端已离线");break;default:h("info",`未知事件类型: ${a}`)}}return{connectionStatus:a,messageString:l,isThinking:o,logs:i,config:s,authFailReason:r,isConnected:u,isConnecting:d,isDisconnected:p,isError:m,lastMessage:v,connect:function(e={}){n.value=[],l.value="",s.value={...s.value,...e},h("info",`准备连接WebSocket。Token:${s.value.token||"未设置"}。ConversationId: ${s.value.conversationId||"未设置"}`),s.value.token&&s.value.conversationId?(a.value="connecting",Y.connect({token:s.value.token,conversationId:s.value.conversationId,onMessage:y,onError:w,onOpen:g,onClose:f,onReconnect:k}),setTimeout((()=>{"connecting"===a.value&&(a.value="error",h("error","连接超时(10s)"))}),1e4)):h("error","Token和ConversationId都不能为空")},disconnect:function(){Y.close(),a.value="disconnected",h("warn","已主动断开连接")},send:async function(e){if(t("log","at stores/socket.js:98","检查到要发生消息为:",e),!u.value)throw h("error","发送失败: 连接未建立"),new Error("连接未建立");try{return await Y.send(e),h("send","string"==typeof e?e:JSON.stringify(e)),!0}catch(a){throw h("error",`发送失败: ${a.message||a}`),a}},addLog:h,clearLogs:function(){i.value=[]},getStatusText:function(){return{connecting:"连接中",connected:"已连接",disconnected:"未连接",error:"连接错误"}[a.value]||"未知状态"}}})),Z="http://chat.yuxindazhineng.com",ee=async e=>new Promise(((a,n)=>{uni.request({url:`${Z}/api/chatList/getChatFriend`,method:"POST",header:{"Content-Type":"application/json"},data:{size:500,current:1,sendId:e},success:e=>{var l;if(200===e.statusCode){const o=e.data;if(t("log","at utils/friend-api.js:20","获取到的好友列表消息",o),0===(null==o?void 0:o.code)||"成功"===(null==o?void 0:o.msg)){const e=null==(l=o.data)?void 0:l.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)}})})),te=async e=>new Promise(((t,a)=>{uni.request({url:`${Z}/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 l=e.data;if(0===(null==l?void 0:l.code)||"成功"===(null==l?void 0:l.msg)){const e=null==(n=l.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)}})})),ae=async(e,a=1)=>(t("log","at utils/friend-api.js:88","请求的好友消息id:",e),new Promise(((t,n)=>{uni.request({url:`${Z}/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 l=e.data;if(0===l.code){const e=((null==(a=null==l?void 0:l.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)}})}))),ne=async(e,a=1)=>(t("log","at utils/friend-api.js:134","请求的群聊消息id:",e),new Promise(((n,l)=>{uni.request({url:`${Z}/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 o=e.data;if(t("log","at utils/friend-api.js:152","获取到的群聊信息:",o),0===o.code){const e=((null==(a=null==o?void 0:o.data)?void 0:a.records)||[]).reverse();n(e)}else{const t=e.data.error||"获取群聊消息出错啦";l(t)}}else l(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})}))),le=async e=>new Promise(((t,a)=>{uni.request({url:`${Z}/api/group/getGroupMemberList`,method:"POST",header:{"Content-Type":"application/json"},data:{groupId:e,current:1,size:100},success:e=>{if(200===e.statusCode){const n=e.data;if(0===n.code){const e=n.data.records;t(e)}else{const t=e.data.error||"获取群成员出错啦";a(t)}}else a(`请求群成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})),oe=e=>new Promise(((t,a)=>{uni.uploadFile({url:`${Z}/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 se=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,l,o;t("log","at utils/friend-socket.js:75","WebSocket 已连接"),this.reconnectAttempts>0&&(null==(n=(a=this.options).onReconnect)||n.call(a)),null==(o=(l=this.options).onOpen)||o.call(l,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 l=JSON.stringify(e);t("log","at utils/friend-socket.js:171","发送的消息是:",l),this.ws.send({data:l,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}}},ie=G("friendSocket",(()=>{const a=e.ref("disconnected"),n=e.ref([]),l=e.ref(""),o=e.ref({token:"",UserId:""});e.ref("");const s=e.ref(null),i=e.ref(null),c=e.ref(!1),r=e.ref([]),u=e.ref(20),d=e.computed((()=>"connected"===a.value)),p=e.computed((()=>"connecting"===a.value)),m=e.computed((()=>"disconnected"===a.value)),v=e.computed((()=>"error"===a.value)),h=e.computed((()=>n.value[n.value.length-1]));function g(e,a){const n=new Date,l=`${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:l}),r.value.length>u.value&&(r.value=r.value.slice(-u.value)),t("log","at stores/friend-socket.js:57",`[${e.toUpperCase()}] ${a}`)}function f(){a.value="connected",g("success","连接成功!"),async function(){const e={version:"1.1",body:{command:7,sender:S(),avatar:"",sessionId:"",message:"",callBackMessage:!1}};try{await se.send(e),g("send","string"==typeof e?e:JSON.stringify(e))}catch(t){throw g("error",`发送验证失败: ${t.message||t}`),t}}()}function w(){"disconnected"!==a.value&&(a.value="disconnected",g("warn","连接已断开"))}function k(e){g("error",`Socket错误: ${JSON.stringify(e)}`),a.value="error"}function y(e){a.value="connecting",g("warn",`重连中... (${e}/5)`)}function E(e){g("receive",`收到: ${JSON.stringify(e)}`);const a=e.body||e,{callBackMessage:n,groupName:l,command:o,groupId:r}=a||{};switch(o){case 3:s.value=o,i.value=r;break;case 7:s.value=o;break;case 1:t("log","at stores/friend-socket.js:199","有好友消息"),c.value=!0;break;case 9:t("log","at stores/friend-socket.js:204","群消息发送成功/有新群消息"),c.value=!0;break;default:g("info","未知事件类型")}}return{connectionStatus:a,messageString:l,logs:r,config:o,command:s,groupId:i,MessageReceived:c,isConnected:d,isConnecting:p,isDisconnected:m,isError:v,lastMessage:h,connect:function(e={}){n.value=[],l.value="",o.value={...o.value,...e},g("info",`准备连接FriendsWebSocket。Token:${o.value.token||"未设置"}。UserId: ${o.value.UserId||"未设置"}`),o.value.token&&o.value.UserId?(a.value="connecting",se.connect({token:o.value.token,UserId:o.value.UserId,onMessage:E,onError:k,onOpen:f,onClose:w,onReconnect:y}),setTimeout((()=>{"connecting"===a.value&&(a.value="error",g("error","连接超时(10s)"))}),1e4)):g("error","Token和UserId都不能为空")},disconnect:function(){se.close(),a.value="disconnected",g("warn","已主动断开连接")},send:async function(e){if(!d.value)throw g("error","发送失败: 连接未建立"),new Error("连接未建立");try{return await se.send(e),g("send","string"==typeof e?e:JSON.stringify(e)),!0}catch(t){throw g("error",`发送失败: ${t.message||t}`),t}},addLog:g,clearLogs:function(){r.value=[]},getStatusText:function(){return{connecting:"连接中",connected:"已连接",disconnected:"未连接",error:"连接错误"}[a.value]||"未知状态"}}})),{registerUTSInterface:ce,initUTSProxyClass:re,initUTSProxyFunction:ue,initUTSPackageName:de,initUTSIndexClassName:pe,initUTSClassName:me}=uni,ve="limeChooseFile",he=ue(!1,{moduleName:"lime-choose-file 文件选择",moduleType:"",errMsg:"",main:!0,package:de(ve,true),class:pe(ve,true),name:"chooseFileByJs",keepAlive:!1,params:[{name:"options",type:"UTSSDKModulesLimeChooseFileChooseFileOptionJSONObject"}],return:""}),ge=C({__name:"Chat",setup(n){const s=ie(),d=()=>{s.isConnected||(ye.value&&Ee.value?s.connect({token:ye.value,UserId:Ee.value}):t("warn","at pages/Chat/Chat.vue:334","Token或UserId未准备好"))},v=Q(),h=e.ref(0),g=(e,t)=>{let a='<table border="1" style="border-collapse:collapse;width:100%;margin:8px 0">';return e.forEach(((e,n)=>{const l=0===n?"th":"td",o=e.split("|").filter((e=>""!==e.trim()));a+="<tr>",o.forEach(((e,n)=>{const o=t[n]?` style="text-align:${t[n]}"`:"";let s=e.trim();s=s.replace(/\*\*(.+?)\*\*/g,"<strong>$1</strong>"),s=s.replace(/\*(.+?)\*/g,"<em>$1</em>"),s=s.replace(/_/g,"_").replace(/\*/g,"*"),a+=`<${l}${o} style="padding:6px 10px;border:1px solid #ddd">${s}</${l}>`})),a+="</tr>"})),a+="</table>",a},f=e=>{if(!e)return"";e=w(e);try{let t=M(e=(e=>{const t=e.split("\n");let a=[],n=!1,l=[],o=[];for(let s=0;s<t.length;s++){const e=t[s].trim();if(/^\|.+\|$/.test(e)){if(/^\|[\s\-:]+\|[\s\-:]+\|$/.test(e)){o=e.split("|").filter((e=>e.trim())).map((e=>e.trim().startsWith(":")&&e.trim().endsWith(":")?"center":e.trim().endsWith(":")?"right":"left"));continue}l.push(e),n=!0}else n&&l.length>0&&(a.push(g(l,o)),l=[],o=[],n=!1),a.push(e)}return n&&l.length>0&&a.push(g(l,o)),a.join("\n")})(e=e.replace(/__/g,"\0\0").replace(/_/g,"_").replace(/\x00\x00/g,"__")));return t=t.replace(/<a\s+href="([^"]*)"[^>]*>(.*?)<\/a>/gi,'<span class="chat-inline-link" data-url="$1">$2</span>'),t}catch(a){return t("error","at pages/Chat/Chat.vue:460","解析失败",a),e}},w=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},k=e=>{uni.previewImage({urls:[e]})},y=e=>{uni.downloadFile({url:e,success:e=>{uni.openDocument({filePath:e.tempFilePath,showMenu:!0})}})},C=e=>e?e<1?(1024*e).toFixed(0)+"KB":e.toFixed(2)+"MB":"0KB",N=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:537","解析文件信息失败:",n),{textContent:e,files:[]}}},V=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 r(ye.value,t);if(!a)return void uni.showToast({title:"工作区创建失败",icon:"none"});const n=uni.getStorageSync("yxd_login_info");let l="";n&&(l=n.username||"");if(!(await u(ye.value,a,"新会话",l)))return void uni.showToast({title:"新会话创建失败",icon:"none"});Ve()}catch(e){t("error","at pages/Chat/Chat.vue:582","新建普通会话失败:",e),uni.showToast({title:"创建会话失败,请重试",icon:"none"})}},S=e.ref(!1),P=()=>{S.value=!1},$=e.ref(!1),j=()=>{$.value=!$.value},I=()=>{ke.value&&uni.setStorageSync("currentSessionId",ke.value),uni.navigateTo({url:"/pages/WorkSpace/WorkSpace"})},L=()=>{ke.value&&uni.setStorageSync("currentSessionId",ke.value),uni.navigateTo({url:"/pages/CloudDatabase/CloudDatabase"})},z=()=>{uni.reLaunch({url:"/pages/Login/Login"})},F=e.ref([]),O=e.ref([]),A=()=>new Promise(((t,a)=>{if(v.isConnected)return t();const n=e.watch((()=>v.isConnected),(e=>{e&&(n(),t())})),l=e.watch((()=>v.connectionStatus),(e=>{"error"===e&&(n(),l(),a(new Error("连接失败")))}));v.connect({token:ye.value,conversationId:ke.value})})),U=e.ref(!1),q=e.ref(!1),R=e.ref(!1),W=e.ref([]),J=e.ref(null),H=e.ref(!1),X=e.ref([]),K=(e,t)=>{let a=e.target;for(;a&&a.classList;){if(a.classList.contains("chat-inline-link")){const e=a.getAttribute("data-url")||a.dataset&&a.dataset.url;return void(e&&ue(e))}a=a.parentElement}t.role&&Y(t)},G=e=>{try{const t=new URL(e).pathname.split("/").filter((e=>e));if(t.length>0)return decodeURIComponent(t[t.length-1])}catch(a){}const t=e.split("/").filter((e=>e));if(t.length>0){const e=t[t.length-1],a=e.indexOf("?");return a>-1?e.substring(0,a):e}return e},Y=e=>{X.value=(e=>{const t=new Set,a=[],n=/\[([^\]]*)\]\((https?:\/\/[^\s<>"{}|\\^`\[\]()]+)\)/gi;[...e.matchAll(n)].forEach((e=>{const n=e[1].trim(),l=e[2];t.has(l)||(t.add(l),a.push({url:l,name:n||l}))}));const l=e.replace(n,"").match(/https?:\/\/[^\s<>"{}|\\^`\[\]()]+/gi);return l&&l.forEach((e=>{t.has(e)||(t.add(e),a.push({url:e,name:G(e)}))})),a})(e.content||""),H.value=!0},Z=()=>{H.value=!1,X.value=[]},se=e.ref({show:!1,type:"loading",message:""});let ce=null;const re=(e,t,a)=>{ce&&clearTimeout(ce),se.value={show:!0,type:e,message:t},a>0&&(ce=setTimeout((()=>{se.value={show:!1,type:"loading",message:""}}),a))},ue=e=>{de(e)},de=async e=>{try{re("loading","下载中...",0);const t=uni.getStorageSync("workspace_id")||"",a=await E(ye.value,t,e),n="string"==typeof a?a:(null==a?void 0:a.url)||(null==a?void 0:a.download_url)||"";if(!n)return void re("error","获取下载地址失败",2500);uni.downloadFile({url:n,success:e=>{200===e.statusCode?(ce&&clearTimeout(ce),se.value={show:!1,type:"loading",message:""},uni.openDocument({filePath:e.tempFilePath,showMenu:!0,fail:()=>{re("error","无法打开此文件",2500)}})):re("error","下载失败",2500)},fail:()=>{re("error","下载失败",2500)}})}catch(t){re("error","下载失败: "+(t.message||t),2500)}},pe=async()=>{s.isConnecting||await d();const e=T(),t=W.value.length>0,a={command:1,sender:Ee.value,receiver:e,avatar:"",sessionId:ke.value,message:fe.value,callBackMessage:!1};t&&(a.contentType=1,a.uploadVos=W.value);const n={version:"1.1",body:a};s.send(n);const l={sender:Ee.value,receiver:e,content:fe.value,taskId:null,avatar:null,createTime:"",messageType:"null",contentJson:t?JSON.stringify(W.value):"null"};De.value=[...De.value,l],fe.value="",W.value=[],setTimeout((()=>{Ie()}),1e3)},me=async()=>{s.isConnecting||await d();const e=W.value.length>0,t={command:9,groupId:ke.value,message:fe.value||"",callBackMessage:!e,messageType:e?1:0,sender:Ee.value};e&&(t.uploadVos=W.value);const a={version:"1.1",body:t};s.send(a);const n={id:De.value.length+1,message:fe.value,messageType:e?1:0,groupId:null,createTime:"",contentJson:e?JSON.stringify(W.value):"",sender:Ee.value};De.value=[...De.value,n],fe.value="",W.value=[],setTimeout((()=>{Le()}),1e3)},ve=async()=>{try{await A();let e=fe.value;if(W.value.length){const t=JSON.stringify(W.value);e=e?`${e}\n[文件信息:${t}]`:`[文件信息:${t}]`}const t={type:"chat",conversation_id:ke.value,content:e};v.send(t),U.value=!0,q.value=!0,De.value=[...De.value,{role:"user",content:e}],J.value="streaming-"+Date.now(),De.value=[...De.value,{role:"assistant",content:"",_streaming:!0,_id:J.value}],fe.value="",W.value=[],Fe()}catch(e){U.value=!1,uni.showToast({title:`用户发送消息失败${e}`,icon:"error"})}},ge=async()=>{t("log","at pages/Chat/Chat.vue:1069","中断对话 - 当前会话ID:",ke.value);try{await v.send({type:"stop",conversation_id:ke.value}),t("log","at pages/Chat/Chat.vue:1075","中断指令已发送成功")}catch(e){t("error","at pages/Chat/Chat.vue:1077","中断指令发送失败:",e)}J.value&&(De.value=De.value.filter((e=>e._id!==J.value)),J.value=null),U.value=!1,v.isThinking=!1,q.value=!1,fe.value="",W.value=[],uni.showToast({title:"已中断",icon:"none",duration:1500})};e.watch((()=>v.isThinking),((e,a)=>{if(t("log","at pages/Chat/Chat.vue:1101","isThinking 变化:",a,"→",e,"messageString:",v.messageString),!a&&e)return t("log","at pages/Chat/Chat.vue:1104","AI开始回复(跨设备同步),锁定输入框"),U.value=!0,void(J.value||(J.value="streaming-"+Date.now(),De.value=[...De.value,{role:"assistant",content:"",_streaming:!0,_id:J.value}]));a&&!e&&(t("log","at pages/Chat/Chat.vue:1120","AI回复结束(正常/中断),解锁并刷新消息列表"),J.value&&(De.value=De.value.filter((e=>e._id!==J.value)),J.value=null),Me(),U.value=!1,q.value=!1,fe.value="",W.value=[])})),e.watch((()=>v.authFailReason),(t=>{"pc offline"===t&&(U.value=!1,v.authFailReason="",e.nextTick((()=>{uni.showModal({title:"提示",content:"PC端不在线,不可聊天",showCancel:!1,confirmText:"知道了"})})))})),e.watch((()=>v.messageString),(e=>{if(!J.value||!v.isThinking)return;const t=De.value.findIndex((e=>e._id===J.value));if(t>=0){const a={...De.value[t],content:e};De.value.splice(t,1,a),Fe()}}));const fe=e.ref(""),we=e.ref([]),ke=e.ref(""),ye=e.ref(""),Ee=e.ref(""),Ce=e.ref(""),Ne=e.ref(null),Ve=async()=>{try{ye.value=_(),t("log","at pages/Chat/Chat.vue:1194","token:",ye.value),we.value=await i(ye.value)||[];const e=B();e&&we.value.some((t=>t._id===e))?ke.value=e:we.value.length>0?ke.value=we.value[0]._id:ke.value="",t("log","at pages/Chat/Chat.vue:1206","保存会话id:",ke.value),uni.setStorageSync("currentSessionId",ke.value)}catch(e){uni.showToast({title:`获取会话列表失败${e}`,icon:"error"})}},be=e.ref([]),_e=e=>{if(!e)return null;const t=be.value.find((t=>t.receiver===e));return(null==t?void 0:t.avatar)||null},Be=async e=>{if(!(null==e?void 0:e.length))return[];try{const t=e.map((e=>e.receiver)),a=await m(ye.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:1262","获取好友头像失败",a),e}},Se=e.ref([]),xe=e.ref([]),Te=e=>{if(!e)return null;const t=xe.value.find((t=>t.groupContactId===e));return(null==t?void 0:t.avatar)||null},De=e.ref([]),Pe=e.ref(""),$e=e.ref(!1);e.ref(!1),e.ref(1);const je=e.computed((()=>De.value)),Me=async()=>{try{De.value=await c(ye.value,ke.value)||[],Fe()}catch(e){uni.showToast({title:`获取ai会话内容失败${e}`,icon:"none"})}},Ie=async()=>{try{De.value=await ae(ke.value)||[],Fe()}catch(e){uni.showToast({title:`获取好友会话消息失败${e}`,icon:"none"})}},Le=async()=>{try{De.value=await ne(ke.value)||[],t("log","at pages/Chat/Chat.vue:1368","群聊消息:",De.value);const e=await le(ke.value);t("log","at pages/Chat/Chat.vue:1371","获取到的群成员列表:",e),e&&e.length?(xe.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:1291","请求头像的ID列表:",a);const n=await m(ye.value,a);t("log","at pages/Chat/Chat.vue:1293","头像接口返回数据:",n);const l=new Map(n.map((e=>[e.user_id,e]))||[]);return t("log","at pages/Chat/Chat.vue:1296","userMap的keys:",Array.from(l.keys())),e.map((e=>{const a=e.groupContactId,n=l.get(a);return t("log","at pages/Chat/Chat.vue:1301",`查找 ${a} 的头像:`,n),{...e,avatar:(null==n?void 0:n.avatar)||null}}))}catch(a){return t("error","at pages/Chat/Chat.vue:1308","获取群成员头像失败",a),e}})(e),t("log","at pages/Chat/Chat.vue:1374","群成员列表(带头像):",xe.value)):xe.value=[],Fe()}catch(e){uni.showToast({title:`获取群聊会话失败${e}`,icon:"none"})}},ze=e=>{},Fe=async()=>{await e.nextTick(),je.value.length>0&&($e.value=!$e.value,Pe.value=$e.value?"chat-bottom-a":"chat-bottom-b")};return e.watch((()=>s.MessageReceived),(e=>{if(t("log","at pages/Chat/Chat.vue:1419","收到了好友消息"),e)switch(t("log","at pages/Chat/Chat.vue:1421","ChatType:",h.value),h.value){case 0:Me(),s.MessageReceived=!1;break;case 1:Ie(),s.MessageReceived=!1;break;case 2:Le(),s.MessageReceived=!1;break;default:t("log","at pages/Chat/Chat.vue:1437","default 分支"),s.MessageReceived=!1}}),{immediate:!0}),e.watch(ke,(e=>{if(e)switch(uni.setStorageSync("currentSessionId",ke.value),h.value){case 0:Me(),v.disconnect(),A();break;case 1:Ie();break;case 2:Le();break;default:Me()}}),{immediate:!0}),e.onMounted((()=>{})),l((async()=>{await(async()=>{try{ye.value=_(),Ne.value=await p(ye.value),Ee.value=Ne.value._id,Ce.value=Ne.value.avatar||"",t("log","at pages/Chat/Chat.vue:1184","用户信息已加载:",Ee.value,Ce.value)}catch(e){t("error","at pages/Chat/Chat.vue:1186","获取用户信息失败:",e)}})();const e=x();h.value=e;const a=B();a&&(ke.value=a),0===e?(await Ve(),ke.value&&Me(),ye.value&&ke.value&&!v.isConnected&&A()):1===e?(await(async()=>{try{t("log","at pages/Chat/Chat.vue:1221","开始获取好友列表");const e=await ee(Ee.value);t("log","at pages/Chat/Chat.vue:1224","friendList:",e),e&&e.length?be.value=await Be(e):(be.value=[],t("log","at pages/Chat/Chat.vue:1229","好友列表为空"))}catch(e){t("error","at pages/Chat/Chat.vue:1232","获取好友列表失败:",e),be.value=[]}finally{we.value=be.value}})(),Ie(),d()):2===e&&(await(async()=>{try{t("log","at pages/Chat/Chat.vue:1272","开始获取群聊列表"),Se.value=await te(Ee.value)}catch(e){t("error","at pages/Chat/Chat.vue:1277","获取群聊列表失败:",e),Se.value=[]}finally{we.value=Se.value}})(),await d(),await Le())})),o((()=>{v.disconnect()})),(n,l)=>{const o=a(e.resolveDynamicComponent("uni-icons"),b);return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),S.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"ncd-overlay",onClick:P},[e.createElementVNode("view",{class:"ncd-card",onClick:l[0]||(l[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(o,{type:"closeempty",color:"#ff0000",size:"24",onClick:P})]),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(o,{type:"chat",color:"#000000",size:"30"})]),e.createElementVNode("view",{class:"ncd-opt-title",onClick:V},[e.createElementVNode("view",{class:"ncd-opt-title-1"},"普通会话"),e.createElementVNode("view",{class:"ncd-opt-title-2"},"与AI自由对话,探索任何话题")]),e.createVNode(o,{type:"arrow-right",class:"arrow-right-style"})]),e.createElementVNode("view",{class:"ncd-option ncd-intelligence"},[e.createElementVNode("view",{class:"ncd-opt-icon"},[e.createVNode(o,{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(o,{type:"arrow-right",class:"arrow-right-style"})])])])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"chat-page page-container"},[$.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"mask",onClick:j})):e.createCommentVNode("",!0),e.createElementVNode("view",{class:e.normalizeClass(["chat-sidebar",{"sidebar-show":$.value}])},[e.createVNode(D,{chatList:we.value,showNewChatModal:S.value,"onUpdate:showNewChatModal":l[1]||(l[1]=e=>S.value=e),currentSessionId:ke.value,"onUpdate:currentSessionId":l[2]||(l[2]=e=>ke.value=e),chatType:h.value,"onUpdate:chatType":l[3]||(l[3]=e=>h.value=e),onRefreshConversations:Ve},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:j},[e.createElementVNode("view",{class:"iconfont icon-caidan"})]),e.createElementVNode("view",{class:"head-btn",onClick:I},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"})]),e.createElementVNode("view",{class:"head-btn",onClick:L},[e.createElementVNode("view",{class:"iconfont icon-cloud"})]),e.createElementVNode("view",{class:"head-btn log-out",onClick:z},[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,"upper-threshold":0,"scroll-with-animation":!0,onScroll:ze},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(je.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock(e.Fragment,{key:a},[0===h.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=Ne.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:Ne.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"iconfont icon-yonghuziliao"}))],2)):e.createCommentVNode("",!0),t.content&&""!==String(t.content).trim()||t._streaming?(e.openBlock(),e.createElementBlock("view",{key:1,class:e.normalizeClass(["chat-content",{"chat-content-user":"user"===t.role,"chat-content-assistant":"assistant"===t.role}]),onClick:e=>K(e,t)},[!t._streaming||t.content&&""!==String(t.content).trim()?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"bubble-loading-dots"},[e.createElementVNode("view",{class:"bubble-dot"}),e.createElementVNode("view",{class:"bubble-dot"}),e.createElementVNode("view",{class:"bubble-dot"})])),N(t.content).textContent?(e.openBlock(),e.createElementBlock("view",{key:1,innerHTML:f(N(t.content).textContent)},null,8,["innerHTML"])):e.createCommentVNode("",!0),N(t.content).files.length>0?(e.openBlock(),e.createElementBlock("view",{key:2,class:"message-file-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N(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=>k(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>y(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(C(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],10,["onClick"])):e.createCommentVNode("",!0)],10,["id"])):e.createCommentVNode("",!0)],64)})),128)),1===h.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(je.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["chat-message",{"message-user":t.sender===Ee.value}]),key:a,id:"msg-"+a},[e.createElementVNode("view",{class:e.normalizeClass(["chat-avatar",{"chat-avatar-user":t.sender===Ee.value}])},[t.sender===Ee.value&&(null==(n=Ne.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:Ne.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):_e(t.sender)?(e.openBlock(),e.createElementBlock("image",{key:1,src:_e(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===Ee.value}]),onClick:e=>K(e,t)},[t.content&&""!==String(t.content).trim()?(e.openBlock(),e.createElementBlock("view",{key:0,innerHTML:f(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=>k(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>y(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(C(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],10,["onClick"])],10,["id"])})),128)):e.createCommentVNode("",!0),2===h.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(je.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["chat-message",{"message-user":t.sender===Ee.value}]),key:a,id:"msg-"+a},[e.createElementVNode("view",{class:e.normalizeClass(["chat-avatar",{"chat-avatar-user":t.sender===Ee.value}])},[t.sender===Ee.value&&(null==(n=Ne.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:Ne.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):xe.value.length>0&&Te(t.sender)?(e.openBlock(),e.createElementBlock("image",{key:1,src:Te(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===Ee.value}]),onClick:e=>K(e,t)},[t.message&&""!==String(t.message).trim()?(e.openBlock(),e.createElementBlock("view",{key:0,innerHTML:f(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=>k(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>y(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(C(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],10,["onClick"])],10,["id"])})),128)):e.createCommentVNode("",!0),e.createElementVNode("view",{id:"chat-bottom-a",style:{height:"1rpx"}}),e.createElementVNode("view",{id:"chat-bottom-b",style:{height:"1rpx"}})],40,["scroll-into-view"]),e.createElementVNode("view",{class:e.normalizeClass(["chat-interactive-container",{"interactive-disabled":U.value}])},[e.createElementVNode("view",{class:"chat-interactive-group"},[e.createElementVNode("view",{class:e.normalizeClass(["chat-interactive-btn",{disabled:U.value}]),onClick:l[4]||(l[4]=e=>!U.value&&(t("log","at pages/Chat/Chat.vue:631","点击了拍照上传"),void uni.chooseImage({count:1,sourceType:["camera","album"],success:e=>{const t=e.tempFiles,a=e.tempFilePaths;t.forEach(((e,t)=>{F.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:649","选择图片失败",e)}})))},"拍照上传",2),e.createElementVNode("view",{class:e.normalizeClass(["chat-interactive-btn",{disabled:U.value}]),onClick:l[5]||(l[5]=e=>!U.value&&(t("log","at pages/Chat/Chat.vue:660","点击了上传文件"),void he({count:5,type:"all",success:e=>{t("log","at pages/Chat/Chat.vue:665","成功了"),O.value=e.tempFiles,F.value.push(...e.tempFiles),uni.showToast({title:`已选择 ${e.tempFiles.length} 个文件`,icon:"success"})},fail:e=>{t("error","at pages/Chat/Chat.vue:676","选择失败:",e),uni.showToast({title:"选择失败",icon:"error"})}})))},"上传文件",2)]),F.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:0,class:"image-list"},[e.createElementVNode("view",{class:"image-tags"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(F.value,((t,a)=>(e.openBlock(),e.createElementBlock("view",{class:"image-tag",key:a},[e.createElementVNode("text",{class:"tag-name"},e.toDisplayString(t.name),1),e.createElementVNode("text",{class:"tag-close",onClick:e.withModifiers((e=>(e=>{F.value.splice(e,1)})(a)),["stop"])},"×",8,["onClick"])])))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:e.normalizeClass(["chat-input-container",{"input-disabled":U.value}])},[e.withDirectives(e.createElementVNode("textarea",{class:"message-input",placeholder:U.value?q.value?"AI 正在回复中...":"电脑正在运行,请稍后":"输入消息...",disabled:U.value,"onUpdate:modelValue":l[6]||(l[6]=e=>fe.value=e),"auto-height":""},null,8,["placeholder","disabled"]),[[e.vModelText,fe.value]]),U.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"input-btn-group stop-message-btn",onClick:ge},[e.createElementVNode("view",{class:"iconfont icon-tingzhi"})])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"input-btn-group send-message-btn",onClick:l[7]||(l[7]=e=>(async()=>{if(fe.value.trim()||0!==F.value.length){if(F.value.length>0){R.value=!0,uni.showLoading({title:"上传文件中...",mask:!0});try{const e=[];for(const t of F.value){const a=await oe(t.path);e.push(a)}W.value=e,F.value=[]}catch(e){return uni.hideLoading(),t("error","at pages/Chat/Chat.vue:900","文件上传失败:",e),uni.showToast({title:"文件上传失败,请重试",icon:"error"}),void(R.value=!1)}uni.hideLoading(),R.value=!1}0===h.value&&ve(),1===h.value&&pe(),2===h.value&&me()}})())},[e.createElementVNode("view",{class:"iconfont icon-fasong"})]))],2)],2)])])]),H.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"ncd-overlay",onClick:Z},[e.createElementVNode("view",{class:"ncd-card message-detail-card",onClick:l[8]||(l[8]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"ncd-header"},[e.createElementVNode("text",{class:"ncd-title-zh"},"消息详情"),e.createVNode(o,{type:"closeempty",color:"#ff0000",size:"24",onClick:Z})]),e.createElementVNode("scroll-view",{class:"message-detail-content","scroll-y":""},[X.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"detail-links-section"},[e.createElementVNode("view",{class:"detail-links-title"},"文件 ("+e.toDisplayString(X.value.length)+")",1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(X.value,((t,a)=>(e.openBlock(),e.createElementBlock("view",{key:a,class:"detail-link-item",onClick:e=>ue(t.url)},[e.createElementVNode("text",{class:"link-text"},e.toDisplayString(t.name),1)],8,["onClick"])))),128))])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"detail-empty"},[e.createElementVNode("text",null,"无可下载文件")]))])])])):e.createCommentVNode("",!0),se.value.show?(e.openBlock(),e.createElementBlock("view",{key:2,class:e.normalizeClass(["download-toast-overlay",(se.value.show,"")])},[e.createElementVNode("view",{class:e.normalizeClass(["download-toast-card","download-toast-"+se.value.type])},["loading"===se.value.type?(e.openBlock(),e.createElementBlock("view",{key:0,class:"download-toast-icon"},[e.createElementVNode("view",{class:"toast-dot"}),e.createElementVNode("view",{class:"toast-dot"}),e.createElementVNode("view",{class:"toast-dot"})])):(e.openBlock(),e.createElementBlock("text",{key:1,class:"download-toast-icon"},e.toDisplayString("success"===se.value.type?"✓":"✕"),1)),e.createElementVNode("text",{class:"download-toast-text"},e.toDisplayString(se.value.message),1)],2)],2)):e.createCommentVNode("",!0)],64)}}},[["__scopeId","data-v-efd33b40"]]),fe=C({__name:"WorkSpace",setup(n){const l=e.ref(""),o=e.ref(""),i=e.ref(""),c=e.ref("工作区"),r=e.ref(!1),u=e.ref([]),d=e.ref(!1),p=e.ref(!1),m=e.ref(""),v=()=>{d.value=!1,m.value=""},f=()=>{he({count:10,type:"all",success:async e=>{const t=e.tempFiles||[];0!==t.length?await w(t):uni.showToast({title:"未选择文件",icon:"none"})},fail:e=>{t("error","at pages/WorkSpace/WorkSpace.vue:176","选择文件失败:",e)}})},w=async e=>{uni.showLoading({title:"上传中..."});try{const a=$.value.length>0?"./"+$.value.map((e=>e.name)).join("/")+"/":"/",n=await((e,a,n)=>new Promise(((l,o)=>{const i=(Array.isArray(a)?a:[a]).map((e=>({name:"files",uri:"string"==typeof e?e:e.tempFilePath||e.path||e})));t("log","at utils/cloud-api.js:595","uploadFileToShortStorage 参数:",{workspacesId:e,fileCount:i.length,filePath:n}),uni.uploadFile({url:`${s}/cloud_api/file/temp/upload`,method:"POST",formData:{workspaces_id:e,file_path:n||"/",overwrite:"true"},files:i,success:e=>{if(t("log","at utils/cloud-api.js:607","uploadFileToShortStorage 响应状态:",e.statusCode,"数据:",e.data),200===e.statusCode)try{const t=JSON.parse(e.data);if(Array.isArray(t)&&t.length>0)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出错啦";o(e)}}catch(a){o("接口返回数据格式异常: "+e.data)}else o(`上传文件(到短存云端)获取URL失败:${e.statusCode} - ${e.data}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(o.value,e,a),i=n.filter((e=>e.success)).map((e=>e.url));if(0===i.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,o)=>{const i=Array.isArray(a)?a:a?[a]:[];uni.request({url:`${s}/cloud_api/phone/workspace/upload`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspaces_id:t,dir_path:n||"/",urls:i},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)||"上传文件到工作区出错啦";o(a)}}else o(`上传文件到工作区失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(l.value,o.value,i,a),uni.hideLoading();const c=e.length,r=c-i.length,u=r>0?`上传完成:成功 ${i.length},失败 ${r}`:`成功上传 ${c} 个文件`;uni.showToast({title:u,icon:i.length>0?"success":"error"}),I()}catch(a){uni.hideLoading(),t("error","at pages/WorkSpace/WorkSpace.vue:229","上传文件失败:",a),uni.showToast({title:"string"==typeof a?a:"上传失败,请重试",icon:"error"})}},k=e.computed((()=>0===$.value.length?"根目录":"/"+$.value.map((e=>e.name)).join("/"))),y=e.computed((()=>{const e=$.value.map((e=>e.name)).join("/"),t=m.value.trim();return t?e?`./${e}/${t}`:`./${t}`:e?`./${e}/`:"./"})),E=async()=>{const e=m.value.trim();if(e)try{const t=$.value.map((e=>e.name)).join("/"),a=t?`./${t}/${e}`:`./${e}`;await g(l.value,o.value,a),uni.showToast({title:"创建成功",icon:"success"}),v(),I()}catch(a){t("error","at pages/WorkSpace/WorkSpace.vue:275","创建文件夹失败:",a),uni.showToast({title:"创建失败,请重试",icon:"error"})}else uni.showToast({title:"请输入目录名称",icon:"none"})},C=async e=>{var a,n,i;if("directory"!==e.type)try{uni.showLoading({title:"获取下载链接..."});const c=e.path.startsWith("./")?e.path.slice(2):e.path,r=await(a=l.value,n=o.value,i=c,new Promise(((e,t)=>{uni.request({url:`${s}/cloud_api/phone/workspace/downloadFile`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:a,workspaces_id:n,file_path:i},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,p=e.name;uni.showLoading({title:"下载中..."}),uni.downloadFile({url:d,name:p,success:e=>{if(uni.hideLoading(),200===e.statusCode){const t=e.tempFilePath;N(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(c){uni.hideLoading(),t("error","at pages/WorkSpace/WorkSpace.vue:415","获取下载链接失败:",c),uni.showToast({title:"获取下载链接失败,请重试",icon:"error"})}else uni.showToast({title:"暂不支持下载目录",icon:"none"})},N=e=>{uni.openDocument({filePath:e,success:()=>uni.showToast({title:"打开成功",icon:"success"}),fail:e=>{t("error","at pages/WorkSpace/WorkSpace.vue:432","打开文件失败:",e),uni.showToast({title:"无法打开此文件",icon:"error"})}})},V=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:470","删除的是:",a),await h(l.value,o.value,a),uni.showToast({title:"删除成功",icon:"success"}),I()}catch(n){t("error","at pages/WorkSpace/WorkSpace.vue:478","删除失败:",n),uni.showToast({title:"删除失败,请重试",icon:"error"})}}})},B=e.ref(!1),S=()=>{B.value=!B.value},x=e.ref(""),T=e.ref(!1),D=()=>{T.value=!T.value},P=e.ref({}),$=e.ref([]),j=e.ref([]),M=()=>{var e,a;t("log","at pages/WorkSpace/WorkSpace.vue:559","当前路径为:",JSON.stringify($.value));const n=$.value.length>0?$.value[$.value.length-1].path:".";if("."===n)return(null==(e=P.value)?void 0:e.children)||[];const l=(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=l(n.children,t);if(e)return e}}return null},o=l((null==(a=P.value)?void 0:a.children)||[],n);return o?o.children:[]},I=async()=>{var e,a;o.value=uni.getStorageSync("workspace_id"),l.value=_(),t("log","at pages/WorkSpace/WorkSpace.vue:586","getWorkspaceId:",o.value),P.value=await(e=l.value,a=o.value,new Promise(((t,n)=>{uni.request({url:`${s}/cloud_api/phone/workspace/list`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspaces_id:a,format:"tree",parent_path:"",filter_type:""},success:e=>{if(200===e.statusCode){const a=e.data;if(a.success)t(a.data);else{const e=(null==a?void 0:a.error)||"获取工作区文件目录出错啦";n(e)}}else n(`获取工作区文件目录失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})}))),j.value=M()},L=()=>{r.value?u.value.length===j.value.length?u.value=[]:u.value=j.value.map((e=>e.path)):$.value.length>0?($.value.pop(),0===$.value.length?(c.value="工作区",i.value=null):(c.value=$.value[$.value.length-1].name,i.value=$.value.length>1?$.value[$.value.length-2].name:"工作区"),I(),x.value="",T.value=!1):uni.navigateBack({delta:1,fail(){t("log","at pages/WorkSpace/WorkSpace.vue:643","返回失败,进入兜底跳转"),uni.reLaunch({url:"/pages/Chat/Chat"})}})};return e.onMounted((()=>{I()})),(t,n)=>{const l=a(e.resolveDynamicComponent("uni-icons"),b);return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),d.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"popup-overlay",onClick:v},[e.createElementVNode("view",{class:"popup-card",onClick:n[3]||(n[3]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:v},[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||m.value}])},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=e=>m.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,m.value]])],2),e.createElementVNode("view",{class:"nf-path-label"},"当前路径"),e.createElementVNode("view",{class:"nf-path-display"},e.toDisplayString(k.value),1),e.createElementVNode("view",{class:"nf-path-label"},"路径预览"),e.createElementVNode("view",{class:"nf-path-preview"},e.toDisplayString(y.value),1),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:v},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:E},"确认")])])])):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)=>L&&L(...e))},[e.createElementVNode("view",{class:"iconfont icon-fanhui custom-navbar-icon"}),e.createElementVNode("view",{class:"navbar-before-title workspace-text"},e.toDisplayString(r.value?"全选":i.value),1)]),e.createElementVNode("view",{class:"navbar-title workspace-text"},e.toDisplayString(c.value),1),e.createElementVNode("view",{class:"navbar-right"},[r.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"navbar-right-text workspace-text",onClick:n[5]||(n[5]=e=>(r.value&&(u.value=[]),void(r.value=!r.value)))}," 完成")):(e.openBlock(),e.createElementBlock("view",{key:1,class:e.normalizeClass(["iconfont icon-gengduo",B.value?"menu-open":"custom-navbar-icon"]),onClick:S},null,2))]),B.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"menu-card"},[e.createElementVNode("view",{class:"menu-card-item",onClick:n[6]||(n[6]=e=>{f(),S()})},"上传文件"),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("view",{class:"menu-card-item",onClick:n[7]||(n[7]=e=>{d.value=!0,S()})},"新建文件夹")])):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:D,"onUpdate:modelValue":n[8]||(n[8]=e=>x.value=e)},null,544),[[e.vModelText,x.value]])]),T.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"cancel-search",onClick:D},"取消")):e.createCommentVNode("",!0)])]),e.createElementVNode("view",{class:"workspace-content"},[0===j.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"folder-null"},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"}),e.createTextVNode(" 文件夹为空 ")])):e.createCommentVNode("",!0),j.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:1,class:"folder-grid"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(j.value,(t=>{return e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["folder-item",{"select-folder":u.value.includes(t.path)}]),key:t.path,onClick:e=>r.value?(e=>{const t=u.value.indexOf(e);-1!==t?u.value.splice(t,1):u.value.push(e)})(t.path):(e=>{"directory"===e.type&&($.value.push({path:e.path,name:e.name}),c.value=e.name,i.value=$.value.length>1?$.value[$.value.length-2].name:"工作区",j.value=M(),x.value="",T.value=!1)})(t),onLongpress:e=>(e=>{r.value||uni.showActionSheet({itemList:["下载","删除"],success:t=>{switch(t.tapIndex){case 0:C(e);break;case 1:V(e)}}})})(t)},["directory"===t.type?(e.openBlock(),e.createElementBlock("view",{key:0,class:"iconfont icon-a-wenjianjiawenjian folder-item-style"})):(e.openBlock(),e.createElementBlock("view",{key:1,class:e.normalizeClass(["iconfont folder-item-style",(a=t.extension,{".png":"icon-wenjiantupian",".jpg":"icon-wenjiantupian",".jpeg":"icon-wenjiantupian",".gif":"icon-wenjiantupian",".svg":"icon-SVG",".bmp":"icon-wenjiantupian",".webp":"icon-wenjiantupian",".mp4":"icon-wenjianshipin",".avi":"icon-wenjianshipin",".mov":"icon-wenjianshipin",".wmv":"icon-wenjianshipin",".flv":"icon-wenjianshipin",".mkv":"icon-wenjianshipin",".mp3":"icon-wenjianyinpin",".wav":"icon-wenjianyinpin",".flac":"icon-wenjianyinpin",".aac":"icon-wenjianyinpin",".pdf":"icon-PDF1",".doc":"icon-word",".docx":"icon-word",".xls":"icon-execl",".xlsx":"icon-execl",".ppt":"icon-PPT1",".pptx":"icon-PPT1",".txt":"icon-TXT1",".md":"icon-file-markdown-fill",".zip":"icon-wenjianyasuo",".rar":"icon-wenjianyasuo",".7z":"icon-wenjianyasuo",".tar":"icon-wenjianyasuo",".gz":"icon-wenjianyasuo",".js":"icon-JS",".ts":"icon-daimawenjia",".vue":"icon-daimawenjia",".html":"icon-HTML",".css":"icon-CSS",".py":"icon-daima",".java":"icon-daima",".json":"icon-JSON"}[null==a?void 0:a.toLowerCase()]||"icon-qitalingyu")])},null,2)),e.createElementVNode("view",{class:"folder-name"},e.toDisplayString(t.name),1),r.value?(e.openBlock(),e.createElementBlock("view",{key:2,class:e.normalizeClass(["folder-checkbox",{"select-folder":u.value.includes(t.path)}])},[u.value.includes(t.path)?(e.openBlock(),e.createBlock(l,{key:0,type:"checkmarkempty",color:"#fff"})):e.createCommentVNode("",!0)],2)):e.createCommentVNode("",!0)],42,["onClick","onLongpress"]);var a})),128))])):e.createCommentVNode("",!0)]),r.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:e.normalizeClass(["workspace-footer",{"folder-actions":u.value.length>0}])},[e.createElementVNode("view",{class:"iconfont icon-shangchuan",onClick:f}),e.createElementVNode("view",{class:"iconfont icon-del"})],2)):e.createCommentVNode("",!0)])],64)}}},[["__scopeId","data-v-3653111e"]]),we=C({__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"})}})},o=async()=>{if(u.value.trim()){uni.showLoading({title:"保存中...",mask:!0});try{await(e=i.value,a=c.value,n=u.value.trim(),o=d.value.trim(),p=r.value,new Promise(((t,l)=>{uni.request({url:`${s}/cloud_api/update_user_profile`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,user_id:a,username:n,"email:":o,avatar:p},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(m){uni.hideLoading();const e="string"==typeof m?m:"保存失败,请稍后重试";uni.showToast({title:e,icon:"none"}),t("error","at pages/UserProfileModal/UserProfileModal.vue:93","保存用户信息失败:",m)}var e,a,n,o,p}else uni.showToast({title:"用户名不能为空",icon:"none"})},i=e.ref(""),c=e.ref(""),r=e.ref(""),u=e.ref(""),d=e.ref(""),m=e.ref(!1),v=e.ref(!1),h=()=>{uni.chooseImage({count:1,sizeType:["compressed"],sourceType:["album","camera"],success:e=>{const t=e.tempFilePaths[0];g(t)},fail:e=>{t("log","at pages/UserProfileModal/UserProfileModal.vue:116","选择图片失败",e)}})},g=e=>{r.value=e};return e.onMounted((async()=>{i.value=_();try{const e=await p(i.value);c.value=e._id||"",r.value=e.avatar||"",u.value=e.username||"",d.value=e.email||""}catch(e){t("error","at pages/UserProfileModal/UserProfileModal.vue:135","获取用户信息失败:",e),uni.showToast({title:"加载用户信息失败",icon:"none"})}})),(t,n)=>{const s=a(e.resolveDynamicComponent("uni-icons"),b);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:o},[e.createElementVNode("view",{class:"save-btn"},"保存")])]),e.createElementVNode("view",{class:"modal-body"},[e.createElementVNode("view",{class:"avatar-upload-section",onClick:h},[e.createElementVNode("view",{class:"avatar-upload-container"},[r.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"avatar-preview"},[e.createElementVNode("image",{src:r.value,mode:"aspectFill"},null,8,["src"])])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"avatar-placeholder"},[e.createVNode(s,{type:"person-filled",size:"100rpx",color:"#ffffff"})]))])]),e.createElementVNode("view",{class:"form-card"},[e.createElementVNode("view",{class:"form-field"},[e.createElementVNode("view",{class:"form-text"},"用户名"),e.withDirectives(e.createElementVNode("input",{"adjust-position":"false",class:e.normalizeClass(["form-field-input form-field-username",{"edit-input-focus":m.value}]),"onUpdate:modelValue":n[0]||(n[0]=e=>u.value=e),onFocus:n[1]||(n[1]=e=>m.value=!0),onBlur:n[2]||(n[2]=e=>m.value=!1)},null,34),[[e.vModelText,u.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":v.value}]),"onUpdate:modelValue":n[3]||(n[3]=e=>d.value=e),onFocus:n[4]||(n[4]=e=>v.value=!0),onBlur:n[5]||(n[5]=e=>v.value=!1)},null,34),[[e.vModelText,d.value]])])]),e.createElementVNode("view",{class:"prompt-content"},"*保存后再返回哟")])])],64)}}},[["__scopeId","data-v-8fad524d"]]),ke=C({__name:"ContactPages",setup(n){const l=ie(),o=()=>{uni.navigateBack({delta:1,fail(){uni.reLaunch({url:"/pages/Chat/Chat"})}})},s=(e,t="")=>{uni.setStorageSync("chatType",e),t&&uni.setStorageSync("currentSessionId",t),uni.reLaunch({url:"/pages/Chat/Chat"})},i=e.ref(0),c=e.reactive([{name:"contacts",label:"通讯录",icon:"📞"},{name:"createGroup",label:"新建群聊",icon:"👥"},{name:"addFriend",label:"添加好友",icon:"➕"},{name:"friendRequest",label:"好友申请",icon:"📨"}]),r=e=>{i.value=e.detail.current},u=e.ref(""),d=e.ref(""),h="宇恒一号",g=e.ref([]),f=async()=>{try{t("log","at pages/ContactPages/ContactPages.vue:442","开始获取好友列表"),u.value=_();const e=await p(u.value);d.value=e._id,t("log","at pages/ContactPages/ContactPages.vue:446","UserId.value:",d.value);const a=await ee(d.value);t("log","at pages/ContactPages/ContactPages.vue:448","friendList:",a),a&&a.length?g.value=await w(a):(g.value=[],t("log","at pages/ContactPages/ContactPages.vue:453","好友列表为空"))}catch(e){t("error","at pages/ContactPages/ContactPages.vue:456","获取好友列表失败:",e),g.value=[]}},w=async e=>{if(!(null==e?void 0:e.length))return[];try{const t=e.map((e=>e.receiver)),a=await m(u.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 f(),await y(),await z(),l.isConnected||(u.value&&d.value?l.connect({token:u.value,UserId:d.value}):t("warn","at pages/ContactPages/ContactPages.vue:341","Token或UserId未准备好"))}));const k=e.ref([]),y=async()=>{try{t("log","at pages/ContactPages/ContactPages.vue:494","开始获取群聊列表"),u.value=_();const e=await p(u.value);d.value=e._id,t("log","at pages/ContactPages/ContactPages.vue:498","UserId.value:",d.value),k.value=await te(d.value)}catch(e){t("error","at pages/ContactPages/ContactPages.vue:501","获取群聊列表失败:",e),k.value=[]}},E=e.ref(""),C=e.ref(),N=async()=>{try{if(!E.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(l.isConnected)return void e();if(!u.value||!d.value)return void a(new Error("Token或UserId未准备好"));t("log","at pages/ContactPages/ContactPages.vue:522","friendSocket 未连接,正在建立连接..."),l.connect({token:u.value,UserId:d.value});const n=setInterval((()=>{l.isConnected&&(clearInterval(n),t("log","at pages/ContactPages/ContactPages.vue:531","friendSocket 连接已建立"),e())}),100);setTimeout((()=>{clearInterval(n),l.isConnected||a(new Error("连接超时"))}),1e4)}));const e=B.value.map((e=>e.id));C.value={version:"1.1",body:{command:3,userIds:e,message:"我来邀请你们了",sender:d.value,callBackMessage:!0,groupName:E.value,teamCreateReq:{access_token:u.value}}};await l.send(C.value)?await V():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"})}},V=()=>new Promise(((a,n)=>{const o=setTimeout((()=>{n(new Error("超时未返回群聊创建结果"))}),18e4),s=e.watch((()=>l.command),(async e=>{if(t("log","at pages/ContactPages/ContactPages.vue:609","创建一个一次性监听器"),e&&3===l.command){t("log","at pages/ContactPages/ContactPages.vue:611","监听到command的值是3,检查群聊是否创建成功",l.command);try{await y();const e=k.value.find((e=>e.id===l.groupId));e?(t("log","at pages/ContactPages/ContactPages.vue:618","✅ 新建群聊成功",e),B.value=[],i.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{l.command=null,l.groupId=null,s(),clearTimeout(o)}}}))})),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 v(u.value,e),t("log","at pages/ContactPages/ContactPages.vue:676","searchResultList.value:",JSON.stringify(T.value))},P=()=>{S.value=!S.value},$=e.ref(null),j=()=>{$.value=null,I.value=!1},M=e.ref("");e.ref(!1),e.ref(!1);const I=e.ref(!1),L=e.ref([]),z=async()=>{try{if(!d.value)return;const e=await(async e=>new Promise(((t,a)=>{uni.request({url:`${Z}/api/friendship/getFriendship`,method:"POST",data:{current:1,size:100,sendId:e},success:e=>{var n;if(200===e.statusCode){const l=e.data;if(0===(null==l?void 0:l.code)||"成功"===(null==l?void 0:l.msg)){const e=(null==(n=null==l?void 0:l.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)}})})))(d.value);e&&e.length?L.value=await F(e):L.value=[]}catch(e){t("error","at pages/ContactPages/ContactPages.vue:732","获取好友申请列表失败:",e),L.value=[]}},F=async e=>{if(!(null==e?void 0:e.length))return[];try{const t=e.map((e=>e.sendId)),a=await m(u.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(I.value)try{const e=$.value.sendId,t=M.value||$.value.friendNickName||"",a=$.value.sessionId||Date.now(),n=$.value.id;await(async e=>new Promise(((t,a)=>{uni.request({url:`${Z}/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:d.value,receiver:e,sessionId:a,friendRelationshipId:n},{friendNickName:"",sender:e,receiver:d.value,sessionId:a,friendRelationshipId:n}]),uni.showToast({title:"已同意好友申请",icon:"none"});const l=L.value.find((t=>t.sendId===e));l&&(l.status=1),j(),await f()}catch(e){t("error","at pages/ContactPages/ContactPages.vue:795","同意好友申请失败:",e),uni.showToast({title:"操作失败",icon:"none"})}else try{const e=$.value._id,a=await(async(e,a,n)=>new Promise(((l,o)=>{t("log","at utils/friend-api.js:239","进入sendFriendRequest"),uni.request({url:`${Z}/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))l("已成功发送好友申请");else{const t=e.data.msg||"发送好友申请出错啦";o(t)}}else o(`发送好友申请失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(d.value,M.value,e);uni.showToast({title:a,icon:"none"}),j()}catch(e){t("error","at pages/ContactPages/ContactPages.vue:806","发送好友申请失败:",e),uni.showToast({title:"发送申请失败",icon:"none"})}};return(n,l)=>{const u=a(e.resolveDynamicComponent("uni-icons"),b);return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),$.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:j},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},e.toDisplayString(I.value?"通过好友申请":"申请添加朋友"),1),e.createElementVNode("view",{class:"friend-card"},[e.createElementVNode("view",{class:"friend-card-left"},[$.value.avatar?(e.openBlock(),e.createElementBlock("image",{key:0,src:$.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"friend-avatar"},[e.createVNode(u,{type:"person-filled",size:"100rpx",color:"#ffffff"})]))]),e.createElementVNode("view",{class:"friend-card-middle"},[e.createElementVNode("view",{class:"friend-name"},e.toDisplayString($.value.username),1),e.createElementVNode("view",{class:"friend-label"},e.toDisplayString($.value.sessionId),1)])]),e.createElementVNode("view",{class:"nickname-wrapper"},[e.createElementVNode("view",null,"好友备注"),e.withDirectives(e.createElementVNode("input",{class:"input-nickname",placeholder:"请输入好友名称","onUpdate:modelValue":l[0]||(l[0]=e=>M.value=e)},null,512),[[e.vModelText,M.value]])]),e.createElementVNode("view",{class:"text-btn confirm-btn",onClick:O},e.toDisplayString(I.value?"确认通过":"发送申请"),1)])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"tabbar-page page-container"},[e.createElementVNode("swiper",{class:"content-swiper",current:i.value,duration:300,onChange:r},[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:o}),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:l[1]||(l[1]=e=>s(0))},[e.createElementVNode("view",{class:"friend-card-left"},[e.createElementVNode("view",{class:"friend-avatar",style:{"background-color":"#38bdf8"}},[e.createElementVNode("view",{class:"iconfont icon-Robot",style:{"font-size":"80rpx",color:"#fff"}})])]),e.createElementVNode("view",{class:"friend-card-middle"},[e.createElementVNode("view",{class:"friend-name"},e.toDisplayString(h),1),e.createElementVNode("view",{class:"friend-label"})]),e.createElementVNode("view",{class:"friend-card-right"},[e.createVNode(u,{type:"right"})])]),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(g.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"friend-card",key:t.sessionId,onClick:e=>s(t.type,t.sessionId)},[e.createElementVNode("view",{class:"friend-card-left"},[t.avatar?(e.openBlock(),e.createElementBlock("image",{key:0,src:t.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"friend-avatar"},[e.createVNode(u,{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(u,{type:"right"})])],8,["onClick"])))),128)),e.createElementVNode("view",null,"群聊"),e.createElementVNode("view",{class:"solid-line"}),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(k.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"friend-card",key:t.id,onClick:e=>s(t.type,t.id)},[e.createElementVNode("view",{class:"friend-card-left"},[e.createElementVNode("view",{class:"friend-avatar",style:{"background-color":"#ffaaff"}},[e.createElementVNode("view",{class:"iconfont icon-qunliao",style:{"font-size":"80rpx",color:"#fff"}})])]),e.createElementVNode("view",{class:"friend-card-middle"},[e.createElementVNode("view",{class:"friend-name"},e.toDisplayString(t.name),1),e.createElementVNode("view",{class:"friend-label"},e.toDisplayString(t.createTime),1)]),e.createElementVNode("view",{class:"friend-card-right"},[e.createVNode(u,{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:o}),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":l[2]||(l[2]=e=>E.value=e)},null,512),[[e.vModelText,E.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:N},"创建群聊")]),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(g.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(u,{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=g.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(u,{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:o}),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":l[3]||(l[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?$.value={...a}:(t("warn","at pages/ContactPages/ContactPages.vue:697","未找到该好友"),$.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:o}),e.createElementVNode("view",{class:"tabpage-title"},"好友申请")]),e.createElementVNode("view",{class:"tabpage-body"},[L.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(L.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(u,{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=>{I.value=!0,$.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(c,((t,a)=>(e.openBlock(),e.createElementBlock("view",{key:t.name,onClick:e=>(e=>{i.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"]]),ye=C({__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")}`},l=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]}`},o=e.ref("aaa"),s=()=>{t("log","at pages/WorkSpace/TemplateSpace/TemplateSpace.vue:188","点击了编辑模板")},i=e.ref(""),c=e.ref([]),r=e=>{i.value=e,"all"===e&&(d.value="全部模板",c.value=y.value),"like"===e&&(d.value="收藏模板",c.value=y.value.filter((e=>!0===e.is_favorite)))},u=e.ref(""),d=e.ref("模板区"),p=e.ref(!1),m=e.ref([]),v=()=>{p.value&&(m.value=[]),p.value=!p.value},h=e.ref(!1),g=()=>{h.value=!h.value},f=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=()=>{p.value?m.value.length===c.value.length?m.value=[]:m.value=c.value.map((e=>e.id)):(!p.value&&c.value&&(c.value=[],i.value="",d.value="模板区"),p.value||c.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=>o.value=e)},null,512),[[e.vModelText,o.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(p.value?"全选":u.value),1)]),e.createElementVNode("view",{class:"navbar-title workspace-text"},e.toDisplayString(d.value),1),i.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"navbar-right"},[p.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"navbar-right-text workspace-text",onClick:a[2]||(a[2]=e=>v())}," 完成")):(e.openBlock(),e.createElementBlock("view",{key:1,class:e.normalizeClass(["iconfont icon-gengduo",h.value?"menu-open":"custom-navbar-icon"]),onClick:g},null,2))])):e.createCommentVNode("",!0),h.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"menu-card"},[e.createElementVNode("view",{class:"menu-card-item",onClick:a[3]||(a[3]=e=>{v(),g()})},"选择"),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=>f.value=e)},null,544),[[e.vModelText,f.value]])]),w.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"cancel-search",onClick:k},"取消")):e.createCommentVNode("",!0)])]),i.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"},"收藏模板")])])),i.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"workspace-content"},[0===c.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"folder-null"},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"}),e.createTextVNode(" 暂无模板 ")])):e.createCommentVNode("",!0),c.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:1,class:"template-grid"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(c.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(l(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"===i.value?t=y.value[e]:"like"===i.value&&(t=y.value.filter((e=>e.is_favorite))[e]);t&&(t.is_favorite=!t.is_favorite),"all"===i.value?c.value=[...y.value]:c.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),p.value?(e.openBlock(),e.createElementBlock("view",{key:2,class:e.normalizeClass(["workspace-footer",{"folder-actions":m.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"]]),Ee=C({__name:"CloudDatabase",setup(n){const l=e.ref(""),o=e.ref(""),i=e.ref(""),c=e.ref("user"),r=e=>{c.value=e,T.value=[],I()},u=e.ref("云端数据"),d=e.ref(!1),m=e.ref(!1),y=e.ref([]),E=()=>{d.value=!d.value},C=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)||"云端数据"})),N=()=>{T.value.length>0?(T.value.pop(),u.value=T.value.length>0?T.value[T.value.length-1].name:"云端数据",I()):uni.navigateBack({delta:1,fail(){uni.reLaunch({url:"/pages/Chat/Chat"})}})},V=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"},$=e=>e?e<1024?e+" B":e<1048576?(e/1024).toFixed(1)+" KB":(e/1048576).toFixed(1)+" MB":"",j=e.computed((()=>0===T.value.length?"根目录 (/)":"/"+T.value.map((e=>e.name)).join("/"))),M=e.computed((()=>V.value.length)),I=()=>{const e="user"===c.value?V.value:B.value;if(0===T.value.length)"user"===c.value?S.value=e:x.value=e;else{const e=T.value[T.value.length-1].children||[];"user"===c.value?S.value=e:x.value=e}},L=async()=>{try{l.value=_();const e=await p(l.value);o.value=e._id,i.value=uni.getStorageSync("workspace_id")||"";const t=await f(l.value,"user");V.value=t||[],"user"===c.value&&(S.value=t||[])}catch(e){t("error","at pages/CloudDatabase/CloudDatabase.vue:689","获取文件列表失败:",e),V.value=[],S.value=[]}},z=async e=>{try{e=null==e?"":String(e);const a=await f(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||[]}),u.value=e.name,I()):A(e)},O=e=>{if(m.value){const t=y.value.indexOf(e.id);return void(-1!==t?y.value.splice(t,1):y.value.push(e.id))}const t=D(e)?["重命名","删除"]:["下载","重命名","删除"];uni.showActionSheet({itemList:t,success:t=>{if(D(e))switch(t.tapIndex){case 0:R(e);break;case 1:W(e)}else switch(t.tapIndex){case 0:A(e);break;case 1:R(e);break;case 2:W(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:`${s}/cloud_api/file/download`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:a,file_id:n},success:a=>{if(200===a.statusCode){const n=a.data;if(n.success)e(n.data.download_url);else{const e=(null==n?void 0:n.error)||"获取云端文件url出错啦";t(e)}}else t(`获取云端文件url失败:${a.statusCode}`)},fail:e=>{const a=e.errMsg||"网络错误";t(a)}})})));if(uni.hideLoading(),!t)return void uni.showToast({title:"获取下载链接失败",icon:"error"});uni.showLoading({title:"下载中..."}),uni.downloadFile({url:t,success:e=>{if(uni.hideLoading(),200===e.statusCode){const t=e.tempFilePath;U(t)}else uni.showToast({title:"下载失败",icon:"error"})},fail:()=>{uni.hideLoading(),uni.showToast({title:"下载失败,请重试",icon:"error"})}})}catch(o){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:821","下载失败:",o),uni.showToast({title:"下载失败,请重试",icon:"error"})}},U=e=>{uni.openDocument({filePath:e,success:()=>uni.showToast({title:"打开成功",icon:"success"}),fail:a=>{t("error","at pages/CloudDatabase/CloudDatabase.vue:838","打开文件失败:",a),q(e)}})},q=e=>{plus.runtime.openFile(e,{},(e=>{t("log","at pages/CloudDatabase/CloudDatabase.vue:850","文件打开成功")}))},R=e=>{uni.showModal({title:"重命名",content:"请输入新名称",editable:!0,placeholderText:e.name,success:e=>{e.confirm&&e.content&&(uni.showToast({title:"重命名成功",icon:"success"}),J())}})},W=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,o=e.id,new Promise(((e,t)=>{uni.request({url:`${s}/cloud_api/file/delete`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:n,file_id:o},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"}),J()}catch(c){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:916","deleteCloudFile 失败,尝试 daleteWorkspace:",c);try{const t=e.path||"/"+e.name;i.value&&await h(l.value,i.value,t),uni.showToast({title:"删除成功",icon:"success"}),J()}catch(r){t("error","at pages/CloudDatabase/CloudDatabase.vue:928","删除失败:",r),uni.showToast({title:"删除失败,请重试",icon:"error"})}}}var n,o}})},J=async()=>{"user"===c.value?await L():await z(Se.value)},H=e.ref(!1),X=e.ref(""),K=()=>{H.value=!1,X.value=""},G=async()=>{const e=X.value.trim();if(e)try{if(i.value){const t=("根目录 (/)"===j.value?"/":j.value)+e;await g(l.value,i.value,t)}uni.showToast({title:"创建成功",icon:"success"}),K(),J()}catch(a){t("error","at pages/CloudDatabase/CloudDatabase.vue:985","创建文件夹失败:",a),uni.showToast({title:"创建失败,请重试",icon:"error"})}else uni.showToast({title:"请输入目录名称",icon:"none"})},Y=e.ref(!1),Q=e.ref("/"),Z=()=>{Y.value=!0,Q.value="/"},ee=()=>{Y.value=!1},te=()=>{Q.value.trim()||(Q.value="/"),Y.value=!1,ae()},ae=()=>{he({count:10,type:"all",success:e=>{const t=(e.tempFiles||[]).map((e=>({tempFilePath:e.path||e.tempFilePath,name:e.name})));0!==t.length?ne(t):uni.showToast({title:"未选择文件",icon:"none"})},fail:e=>{t("error","at pages/CloudDatabase/CloudDatabase.vue:1035","选择文件失败:",e)}})},ne=async e=>{uni.showLoading({title:"上传中..."});try{const t=Q.value.trim()||"/",a="user"===c.value?"user":"team",n="team"===c.value?Se.value:"";await((e,t,a,n,l)=>new Promise(((o,i)=>{const c=null==l?"":String(l);uni.uploadFile({url:`${s}/cloud_api/file/upload`,method:"POST",header:{},formData:{access_token:e,path:a||"/",type:t,team_id:c},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)o(t.message);else{const e=(null==t?void 0:t.error)||"获取云端文件url出错啦";i(e)}}catch(t){i("接口返回数据格式异常")}else i(`获取云端文件url失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";i(t)}})})))(l.value,a,t,e,n),uni.hideLoading(),uni.showToast({title:"上传成功",icon:"success"}),J()}catch(a){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1061","上传文件失败:",a),uni.showToast({title:"上传失败,请重试",icon:"error"})}},le=e.ref([]),oe=e.ref(!1),se=e.computed((()=>le.value)),ie=e.computed((()=>le.value.filter((e=>e.team_id&&String(e.team_id)===String(Se.value))))),ce=e.ref(!1),re=e.ref(""),ue=async()=>{oe.value=!0;try{const e=_(),t=await(e=>new Promise(((t,a)=>{uni.request({url:`${s}/cloud_api/database/list`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e},success:e=>{if(200===e.statusCode){const n=e.data;if(n.success)t(n.databases);else{const e=(null==n?void 0:n.error)||"获取用户可访问的数据库列表出错啦";a(e)}}else a(`获取用户可访问的数据库列表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})))(e);le.value=t||[]}catch(e){t("error","at pages/CloudDatabase/CloudDatabase.vue:1087","获取数据库列表失败:",e),le.value=[]}finally{oe.value=!1}},de=()=>{ce.value=!0,re.value=""},pe=()=>{ce.value=!1,re.value=""},me=async()=>{const e=re.value.trim();if(e){uni.showLoading({title:"创建中..."});try{const t=_();await((e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/database/create`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,database_name:t},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)a(t.message);else{const e=(null==t?void 0:t.error)||"创建数据库出错啦";n(e)}}else n(`创建数据库失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})))(t,e),uni.hideLoading(),uni.showToast({title:"创建成功",icon:"success"}),pe(),await ue()}catch(a){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1118","创建数据库失败:",a),uni.showToast({title:"创建失败,请重试",icon:"error"})}}else uni.showToast({title:"请输入数据库名称",icon:"none"})},ve=e.ref(!1),ge=e.ref(""),fe=e.ref(""),we=()=>{ve.value=!0,ge.value="",fe.value=""},ke=()=>{ve.value=!1},ye=()=>{he({count:1,type:"all",success:e=>{const t=e.tempFiles[0];ge.value=t.name||"unknown",fe.value=t.path},fail:e=>{t("error","at pages/CloudDatabase/CloudDatabase.vue:1147","选择文件失败:",e),uni.showToast({title:"选择文件失败",icon:"none"})}})},Ee=async()=>{var e;if(!fe.value)return void uni.showToast({title:"请选择数据库文件",icon:"none"});const a=null==(e=ge.value.split(".").pop())?void 0:e.toLowerCase();if(["db","sqlite","sqlite3"].includes(a)){uni.showLoading({title:"上传中..."});try{const e=_();await((e,t)=>new Promise(((a,n)=>{const l="string"==typeof t?t:t.tempFilePath||t.path||t,o="string"==typeof t?t.split("/").pop()||"database.db":t.name||"database.db";uni.uploadFile({url:`${s}/cloud_api/database/upload/db`,method:"POST",header:{},formData:{access_token:e},file:{name:o,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,fe.value),uni.hideLoading(),uni.showToast({title:"上传成功",icon:"success"}),ke(),await ue()}catch(n){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1175","上传数据库失败:",n),uni.showToast({title:"上传失败,请重试",icon:"error"})}}else uni.showToast({title:"仅支持 .db / .sqlite / .sqlite3 文件",icon:"none"})},Ce=e=>{uni.showModal({title:"删除数据库",content:`确定要删除数据库"${e.database_name}"吗?此操作不可恢复。`,success:async a=>{if(a.confirm){uni.showLoading({title:"删除中..."});try{const t=_();await((e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/database/delete`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,database_id:t},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)a(t.message);else{const e=(null==t?void 0:t.error)||"删除数据库出错啦";n(e)}}else n(`删除数据库失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})))(t,e.database_id),uni.hideLoading(),uni.showToast({title:"删除成功",icon:"success"}),await ue()}catch(n){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1195","删除数据库失败:",n),uni.showToast({title:"删除失败,请重试",icon:"error"})}}}})},Ne=e=>{uni.navigateTo({url:`/pages/CloudDbDetail/CloudDbDetail?databaseId=${e.database_id}&databaseName=${encodeURIComponent(e.database_name)}&teamId=${e.team_id||""}`})},Ve=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]||"未知"),_e=e.ref(!1),Be=e.ref([]),Se=e.ref(""),xe=e.ref([]),Te=e.ref(""),De=e.computed((()=>{if(!Se.value)return"";const e=Be.value.find((e=>e.id===Se.value));return(null==e?void 0:e.description)||""})),Pe=e.computed((()=>{if(!Se.value)return"";const e=Be.value.find((e=>e.id===Se.value));return(null==e?void 0:e.type)||""})),$e=e.computed((()=>{if(!o.value||0===xe.value.length)return"member";const e=xe.value.find((e=>e.receiver===o.value||e.user_id===o.value));return(null==e?void 0:e.role)||"member"}));e.computed((()=>{const e=$e.value;return"admin"===e||"owner"===e}));const je=async()=>{try{const e=_(),t=await w(e);Be.value=t||[]}catch(e){t("error","at pages/CloudDatabase/CloudDatabase.vue:1264","获取团队列表失败:",e),Be.value=[]}},Me=async e=>{t("log","at pages/CloudDatabase/CloudDatabase.vue:1270","团队id为",e),Se.value=e;try{const t=_(),a=await k(t,e);xe.value=(a||[]).map((e=>{var t,a,n,l,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==(l=e.user)?void 0:l.email)||"",role:e.role||(null==(o=e.user)?void 0:o.role)||"member"}}))}catch(a){t("error","at pages/CloudDatabase/CloudDatabase.vue:1287","获取团队成员失败:",a),xe.value=[]}T.value=[],u.value="云端数据",await z(e)},Ie=async()=>{if(Se.value)try{const e=_(),t=await k(e,Se.value),a=(t||[]).find((e=>e.user_id===o.value)),n=(null==a?void 0:a.role)||"member";if("admin"!==n&&"owner"!==n)return void uni.showToast({title:"仅管理员可管理团队",icon:"none"});xe.value=(t||[]).map((e=>{var t,a,n,l,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==(l=e.user)?void 0:l.email)||"",role:e.role||(null==(o=e.user)?void 0:o.role)||"member"}}))}catch(e){return t("error","at pages/CloudDatabase/CloudDatabase.vue:1321","获取团队成员失败:",e),void uni.showToast({title:"获取团队信息失败",icon:"none"})}else if(Be.value.length>0){await Me(Be.value[0].id),_e.value=!0;const e=xe.value.find((e=>(e.receiver||e.user_id)===o.value)),t=(null==e?void 0:e.role)||"member";if("admin"!==t&&"owner"!==t)return _e.value=!1,void uni.showToast({title:"仅管理员可管理团队",icon:"none"})}_e.value=!0},Le=()=>{_e.value=!1,Te.value="",Xe.value=[],Ke.value=!1},ze=e.ref(!1),Fe=e.ref(""),Oe=e.ref(""),Ae=e.ref(""),Ue=()=>{const e=Be.value.find((e=>e.id===Se.value));e?(Fe.value=e.name||"",Oe.value=e.description||"",Ae.value=e.type||"",ze.value=!0):uni.showToast({title:"请先选择团队",icon:"none"})},qe=()=>{ze.value=!1},Re=async()=>{const e=Fe.value.trim();if(e){uni.showLoading({title:"修改中..."});try{const t=_();await((e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/cloud_api/team/update`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_id:t,...a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"修改团队信息出错啦";l(e)}}else l(`修改团队信息失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(t,Se.value,{team_name:e,team_description:Oe.value.trim(),team_type:Ae.value.trim()}),uni.hideLoading(),uni.showToast({title:"修改成功",icon:"success"}),qe(),await je(),Se.value=Se.value}catch(a){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1393","修改团队信息失败:",a),uni.showToast({title:"修改失败,请重试",icon:"error"})}}else uni.showToast({title:"请输入团队名称",icon:"none"})},We=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=_(),n=e.receiver||e.user_id;await((e,t,a,n)=>new Promise(((l,o)=>{uni.request({url:`${s}/cloud_api/team/adjust_member_role`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_id:t,user_id:a,role:n},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)l(t.message);else{const e=(null==t?void 0:t.error)||"调整团员身份出错啦";o(e)}}else o(`调整团员身份失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(t,Se.value,n,a),uni.hideLoading(),uni.showToast({title:"已"+("admin"===a?"设为管理员":"降为成员"),icon:"success"}),await He()}catch(l){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1418","调整成员身份失败:",l),uni.showToast({title:"操作失败,请重试",icon:"error"})}}}})},Je=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=_(),a=e.receiver||e.user_id;await((e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/cloud_api/team/remove_member`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_id:t,user_ids:a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"移除团队成员出错啦";l(e)}}else l(`移除团队成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(t,Se.value,[a]),uni.hideLoading(),uni.showToast({title:"已移除",icon:"success"}),await He()}catch(n){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1444","移除团队成员失败:",n),uni.showToast({title:"移除失败,请重试",icon:"error"})}}}})},He=async()=>{const e=_(),t=await k(e,Se.value);xe.value=(t||[]).map((e=>{var t,a,n,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==(l=e.user)?void 0:l.email)||"",role:e.role||"member"}}))},Xe=e.ref([]),Ke=e.ref(!1),Ge=async()=>{const e=Te.value.trim();if(e)try{const t=_(),a=await v(t,e);Xe.value=a||[],Ke.value=!0,Xe.value.length}catch(a){t("error","at pages/CloudDatabase/CloudDatabase.vue:1486","搜索用户失败:",a),Xe.value=[],Ke.value=!0}else uni.showToast({title:"请输入用户名或邮箱",icon:"none"})},Ye=e=>{uni.showModal({title:"添加成员",content:`确定将"${e.username}"添加到当前团队吗?`,success:async a=>{if(a.confirm){uni.showLoading({title:"添加中..."});try{const t=_();await((e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/cloud_api/team/add_member`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_id:t,user_ids:a,role:"admin"},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"添加团队成员出错啦";l(e)}}else l(`添加团队成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(t,Se.value,[e._id]),uni.hideLoading(),uni.showToast({title:"添加成功",icon:"success"}),Te.value="",Xe.value=[],Ke.value=!1,await He()}catch(n){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1512","添加团队成员失败:",n),uni.showToast({title:"添加失败,请重试",icon:"error"})}}}})},Qe=()=>{const e=Be.value.find((e=>e.id===Se.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=Se.value,new Promise(((e,t)=>{uni.request({url:`${s}/cloud_api/team/delete`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:a,team_id:n},success:a=>{if(200===a.statusCode){const n=a.data;if(n.success)e(n.message);else{const e=(null==n?void 0:n.error)||"删除团队出错啦";t(e)}}else t(`删除团队失败:${a.statusCode}`)},fail:e=>{const a=e.errMsg||"网络错误";t(a)}})}))),uni.hideLoading(),uni.showToast({title:"团队已删除",icon:"success"}),Se.value="",xe.value=[],x.value=[],T.value=[],u.value="云端数据",await je(),Le()}catch(o){uni.hideLoading(),t("error","at pages/CloudDatabase/CloudDatabase.vue:1546","删除团队失败:",o),uni.showToast({title:"删除失败,请重试",icon:"error"})}}var a,n}})};return e.onMounted((async()=>{await L(),await je(),await ue()})),(t,n)=>{const l=a(e.resolveDynamicComponent("uni-icons"),b);return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),_e.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"popup-overlay",onClick:Le},[e.createElementVNode("view",{class:"popup-card",onClick:n[1]||(n[1]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:Le},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"团队管理"),e.createElementVNode("scroll-view",{class:"team-manage-body","scroll-y":""},[0===xe.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(xe.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(l,{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)===o.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:e.normalizeClass(["member-role",$e.value])},e.toDisplayString("owner"===$e.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=>We(t,"member")},"降为成员",8,["onClick"]),e.createElementVNode("view",{class:"member-action-btn remove-member",onClick:e=>Je(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=>We(t,"admin")},"设为管理",8,["onClick"]),e.createElementVNode("view",{class:"member-action-btn remove-member",onClick:e=>Je(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=>Te.value=e),onConfirm:Ge},null,544),[[e.vModelText,Te.value]]),e.createElementVNode("view",{class:"invite-btn text-btn",onClick:Ge},"搜索")]),Xe.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:0,class:"search-result-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(Xe.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"search-result-item",key:t._id,onClick:e=>Ye(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(l,{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))])):Te.value&&Ke.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:Ue},"修改团队信息")]),e.createElementVNode("view",{class:"delete-team-section"},[e.createElementVNode("view",{class:"delete-team-btn",onClick:Qe},"删除团队")])])])):e.createCommentVNode("",!0),ze.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"popup-overlay",onClick:qe},[e.createElementVNode("view",{class:"popup-card",onClick:n[4]||(n[4]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:qe},[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=>Fe.value=e),type:"text",placeholder:"输入团队名称"},null,512),[[e.vModelText,Fe.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=>Oe.value=e),type:"text",placeholder:"输入团队描述"},null,512),[[e.vModelText,Oe.value]])])]),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:qe},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:Re},"确认修改")])])])):e.createCommentVNode("",!0),H.value?(e.openBlock(),e.createElementBlock("view",{key:2,class:"popup-overlay",onClick:K},[e.createElementVNode("view",{class:"popup-card",onClick:n[6]||(n[6]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:K},[e.createElementVNode("view",{class:"iconfont icon-quxiao"})]),e.createElementVNode("view",{class:"popup-title"},"新建"+e.toDisplayString("user"===c.value?"个人":"团队")+"目录",1),e.createElementVNode("view",{class:"new-folder-name"},"目录名称"),e.createElementVNode("view",{class:"create-folder-name"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[5]||(n[5]=e=>X.value=e),type:"text",placeholder:"输入目录名称"},null,512),[[e.vModelText,X.value]])]),e.createElementVNode("view",{class:"nf-path-label"},"当前路径"),e.createElementVNode("view",{class:"nf-path-display"},e.toDisplayString(j.value),1),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:K},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:G},"确认")])])])):e.createCommentVNode("",!0),Y.value?(e.openBlock(),e.createElementBlock("view",{key:3,class:"popup-overlay",onClick:ee},[e.createElementVNode("view",{class:"popup-card",onClick:n[8]||(n[8]=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-path-label"},"上传路径"),e.createElementVNode("view",{class:"create-folder-name"},[e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[7]||(n[7]=e=>Q.value=e),type:"text",placeholder:"输入上传路径,如:/myfolder"},null,512),[[e.vModelText,Q.value]])]),e.createElementVNode("view",{class:"upload-path-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:te},"确认上传")])])])):e.createCommentVNode("",!0),ce.value?(e.openBlock(),e.createElementBlock("view",{key:4,class:"popup-overlay",onClick:pe},[e.createElementVNode("view",{class:"popup-card",onClick:n[10]||(n[10]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:pe},[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=>re.value=e),type:"text",placeholder:"输入数据库名称"},null,512),[[e.vModelText,re.value]])]),e.createElementVNode("view",{class:"option-wrapper"},[e.createElementVNode("view",{class:"opt-btn opt-cancel",onClick:pe},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:me},"确认")])])])):e.createCommentVNode("",!0),ve.value?(e.openBlock(),e.createElementBlock("view",{key:5,class:"popup-overlay",onClick:ke},[e.createElementVNode("view",{class:"popup-card",onClick:n[11]||(n[11]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"close-popup-card",onClick:ke},[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:ye},[ge.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"selected-file"},e.toDisplayString(ge.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:ke},"取消"),e.createElementVNode("view",{class:"opt-btn opt-confirm",onClick:Ee},"确认上传")])])])):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:N},[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(C.value),1)):e.createCommentVNode("",!0)]),e.createElementVNode("view",{class:"navbar-title"},e.toDisplayString(u.value),1),e.createElementVNode("view",{class:"navbar-right"}),d.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"menu-card"},[e.createElementVNode("view",{class:"menu-card-item",onClick:n[12]||(n[12]=e=>{m.value=!m.value,m.value||(y.value=[]),E()})},"选择"),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("view",{class:"menu-card-item",onClick:n[13]||(n[13]=e=>{H.value=!0,X.value="",E()})},"新建文件夹")])):e.createCommentVNode("",!0)]),e.createElementVNode("view",{class:"category-tabs"},[e.createElementVNode("view",{class:e.normalizeClass(["category-tab",{active:"user"===c.value}]),onClick:n[14]||(n[14]=e=>r("user"))}," 个人 ",2),e.createElementVNode("view",{class:e.normalizeClass(["category-tab",{active:"team"===c.value}]),onClick:n[15]||(n[15]=e=>r("team"))}," 团队 ",2)])]),e.createElementVNode("scroll-view",{class:"cloud-db-content","scroll-y":""},["user"===c.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(M.value>0?"("+M.value+")":""),1)]),e.createElementVNode("view",{class:"section-actions"},[e.createElementVNode("view",{class:"action-btn",onClick:Z},[e.createVNode(l,{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($(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(!oe.value&&se.value.length>0?"("+se.value.length+")":""),1)]),e.createElementVNode("view",{class:"section-actions"},[e.createElementVNode("view",{class:"action-btn",onClick:we},[e.createVNode(l,{type:"upload",size:"16"}),e.createElementVNode("text",null,"上传数据库")]),e.createElementVNode("view",{class:"action-btn",onClick:de},[e.createVNode(l,{type:"plus",size:"16"}),e.createElementVNode("text",null,"新建数据库")])])]),e.createElementVNode("view",{class:"section-body"},[oe.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"loading-area"},[e.createElementVNode("view",{class:"loading-spinner"}),e.createElementVNode("text",{class:"loading-text"},"加载中...")])):0===se.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(se.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"table-item",key:t.database_id,onClick:e=>Ne(t),onLongpress:e=>Ce(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.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(Ve(t.modified_time)),1),e.createVNode(l,{type:"right",size:"14",color:"#999"})])],40,["onClick","onLongpress"])))),128))]))])])],64)):e.createCommentVNode("",!0),"team"===c.value?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createElementVNode("view",{class:"section-block team-manage-block",onClick:Ie},[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(Be.value.length)+" 个团队",1),e.createVNode(l,{type:"right",size:"14",color:"#999"})])])]),e.createElementVNode("view",{class:"section-divider"}),Be.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(Be.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["team-chip",{active:Se.value===t.id}]),key:t.id,onClick:e=>Me(t.id)},e.toDisplayString(t.name),11,["onClick"])))),128))]),Pe.value||De.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"team-info"},[Pe.value?(e.openBlock(),e.createElementBlock("text",{key:0,class:"team-type-tag"},e.toDisplayString(Pe.value),1)):e.createCommentVNode("",!0),De.value?(e.openBlock(),e.createElementBlock("text",{key:1,class:"team-desc-text"},e.toDisplayString(De.value),1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),!Se.value&&Be.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),Se.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:Z},[e.createVNode(l,{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($(t.size)),1)):e.createCommentVNode("",!0)])],40,["onClick","onLongpress"])))),128))]))])])):e.createCommentVNode("",!0),Se.value?(e.openBlock(),e.createElementBlock("view",{key:3,class:"section-divider"})):e.createCommentVNode("",!0),Se.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"},[oe.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"loading-area"},[e.createElementVNode("view",{class:"loading-spinner"}),e.createElementVNode("text",{class:"loading-text"},"加载中...")])):0===ie.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(ie.value,(t=>(e.openBlock(),e.createElementBlock("view",{class:"table-item",key:t.database_id,onClick:e=>Ne(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.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(Ve(t.modified_time)),1),e.createVNode(l,{type:"right",size:"14",color:"#999"})])],8,["onClick"])))),128))]))])])):e.createCommentVNode("",!0)],64)):e.createCommentVNode("",!0)])])],64)}}},[["__scopeId","data-v-512e8f2e"]]),Ce=C({__name:"CloudDbDetail",props:{databaseId:{type:String,default:""},databaseName:{type:String,default:""},teamId:{type:String,default:""}},setup(n){const l=n,o=e.ref(l.databaseId||""),i=e.ref(l.databaseName||""),c=e.ref(l.teamId||""),r=e.ref(2),u=e.ref(0),d=e.ref([]),p=e.ref(!1),m=e.ref(null),v=e.ref([]),h=e.computed((()=>{var e;if(v.value.length>0){const e=new Set;return v.value.forEach((t=>Object.keys(t).forEach((t=>e.add(t))))),Array.from(e).filter((e=>"_row_id"!==e&&"_id"!==e))}return(null==(e=m.value)?void 0:e.columns)?m.value.columns.map((e=>e.name)).filter((e=>"_row_id"!==e)):[]})),g=e.ref(!1),f=()=>{g.value=!g.value},k=()=>{uni.navigateBack()},E=async()=>{p.value=!0;try{const e=_(),t=await((e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/cloud_api/database/tables`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,database_id:t,is_detail:a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.tables);else{const e=(null==t?void 0:t.error)||"获取用户可访问的数据库列表出错啦";l(e)}}else l(`获取用户可访问的数据库列表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(e,o.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{p.value=!1}},C=async e=>{m.value=e,v.value=[],uni.showLoading({title:"加载中..."});try{const t=_(),a=await((e,t,a,n="20",l="0")=>new Promise(((o,i)=>{uni.request({url:`${s}/cloud_api/database/table/data`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,database_id:t,table_name:a,limit:n,offset:l},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)o(t.data);else{const e=(null==t?void 0:t.error)||"获取表数据出错啦";i(e)}}else i(`获取表数据失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";i(t)}})})))(t,o.value,e.table_name);v.value=a||[],uni.hideLoading()}catch(t){uni.hideLoading(),uni.showToast({title:"string"==typeof t?t:"加载表数据失败",icon:"none"}),v.value=[]}},N=e=>{uni.showModal({title:"删除表",content:`确定要删除表"${e.table_name}"吗?此操作不可恢复。`,success:async a=>{var n;if(a.confirm){uni.showLoading({title:"删除中..."});try{const t=_();await(async(e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/cloud_api/database/table/drop`,method:"POST",data:{access_token:e,database_id:t,table_name:a},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)n(t.message);else{const e=t.error||"删除数据库中的表出错啦";l(e)}}else l(`删除数据库中的表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(t,o.value,e.table_name),uni.hideLoading(),uni.showToast({title:"删除成功",icon:"success"}),(null==(n=m.value)?void 0:n.table_name)===e.table_name&&(m.value=null,v.value=[]),await E()}catch(l){uni.hideLoading(),t("error","at pages/CloudDbDetail/CloudDbDetail.vue:335","删除表失败:",l),uni.showToast({title:"删除失败,请重试",icon:"error"})}}}})},V=e=>{const a=e._row_id||e._id;if(!a)return void uni.showToast({title:"无法识别该行",icon:"none"});const n=h.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=_();await((e,t,a,n,l)=>new Promise(((o,i)=>{uni.request({url:`${s}/cloud_api/database/table/update/by/id`,method:"POST",data:{access_token:e,database_id:t,table_name:a,where_data:n,update_data:l},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)o(t.message);else{const e=t.error||"更新表数据出错啦";i(e)}}else i(`更新表数据失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";i(t)}})})))(t,o.value,m.value.table_name,{_row_id:a},{[l]:n.content}),uni.hideLoading(),uni.showToast({title:"更新成功",icon:"success"}),e[l]=n.content}catch(i){uni.hideLoading(),t("error","at pages/CloudDbDetail/CloudDbDetail.vue:397","更新失败:",i),uni.showToast({title:i,icon:"error"})}}}})},B=e.ref(!1),x=e.ref(""),T=e.ref(""),D=e.ref(""),P=()=>{B.value=!1},$=()=>{he({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"})}})},j=async()=>{const e=x.value.trim()||"";if(D.value){uni.showLoading({title:"导入中..."});try{const t=_();await((e,t,a,n,l)=>new Promise(((o,i)=>{const c="string"==typeof n?n:n.tempFilePath||n.path||n,r="string"==typeof n?n.split("/").pop()||"file":n.name||"file";uni.uploadFile({url:`${s}/cloud_api/database/import`,method:"POST",header:{},formData:{access_token:e,force_overwrite:t,database_id:a,table_name:l},file:{name:r,uri:c},files:[{name:"file",uri:c}],success:e=>{if(200===e.statusCode)try{const t=JSON.parse(e.data);if(t.success)o(t.message);else{const e=(null==t?void 0:t.error)||"导入文件到数据库出错啦";i(e)}}catch(t){i("接口返回数据格式异常")}else i(`导入文件到数据库失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";i(t)}})})))(t,!1,o.value,D.value,e),uni.hideLoading(),uni.showToast({title:"导入成功",icon:"success"}),P(),await E()}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"})},M=e.ref(!1),I=e.ref([]),L=async()=>{M.value=!0,uni.showLoading({title:"加载中..."});try{const e=_();let t;t=c.value?await y(e,o.value,"team_id",c.value):await y(e,o.value,"user_id",S());const a=Array.isArray(t)?t:[];I.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)||S(),name:(null==(n=e.database)?void 0:n.database_name)||""}}))}catch(e){t("error","at pages/CloudDbDetail/CloudDbDetail.vue:544","获取权限失败:",e),I.value=[]}uni.hideLoading()},z=()=>{M.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=_();await((e,t,a,n)=>new Promise(((l,o)=>{const i={access_token:e,database_id:t};"user_id"===a?i.user_id=n:"team_id"===a&&(i.team_id=n),uni.request({url:`${s}/cloud_api/database/permission/delete`,method:"POST",data:i,header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)l(t.message);else{const e=t.error||"删除 团队/用户 对数据库权限出错啦";o(e)}}else o(`删除 团队/用户 对数据库权限失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})))(t,o.value,e.permType,e.id),uni.hideLoading(),uni.showToast({title:"已移除",icon:"success"}),await L()}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=_();await((e,t,a,n,l)=>new Promise(((o,i)=>{const c={access_token:e,database_id:t,access_level:l};"user_id"===a?c.user_id=n:"team_id"===a&&(c.team_id=n),uni.request({url:`${s}/cloud_api/database/permission/update`,method:"POST",data:c,header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)o(t.message);else{const e=t.error||"修改/增加 团队/用户 对数据库权限出错啦";i(e)}}else i(`修改/增加 团队/用户 对数据库权限失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";i(t)}})})))(t,o.value,e.permType,e.id,l),uni.hideLoading(),uni.showToast({title:"已更新",icon:"success"}),await L()}catch(i){uni.hideLoading(),t("error","at pages/CloudDbDetail/CloudDbDetail.vue:608","更新权限失败:",i),uni.showToast({title:"操作失败,请重试",icon:"error"})}}}})}},O=e.ref(!1),A=e.ref([]),U=e.ref(""),q=()=>{O.value=!1},R=async()=>{U.value?uni.showModal({title:"确认移交",content:"移交后数据库将归属于该团队,确定继续吗?",success:async e=>{if(e.confirm){uni.showLoading({title:"移交中..."});try{const e=_();await(async(e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/cloud_api/database/transfer_to_team`,method:"POST",data:{access_token:e,database_id:t,team_id:a},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)n(t.message);else{const e=t.error||"个人数据库移交团队出错啦";l(e)}}else l(`个人数据库移交团队失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})))(e,o.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"})},W=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||{};o.value=n.databaseId||"",i.value=decodeURIComponent(n.databaseName||"数据库详情"),c.value=n.teamId||"",o.value&&E()})),(n,l)=>{const o=a(e.resolveDynamicComponent("uni-icons"),b);return e.openBlock(),e.createElementBlock("view",{class:"cloud-db-detail-wrapper"},[e.createElementVNode("view",{class:"status-bar"}),B.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"popup-overlay",onClick:P},[e.createElementVNode("view",{class:"popup-card",onClick:l[1]||(l[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":l[0]||(l[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:$},[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:j},"确认导入")])])])):e.createCommentVNode("",!0),M.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"popup-overlay",onClick:z},[e.createElementVNode("view",{class:"popup-card",onClick:l[2]||(l[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===I.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(I.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(W(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:l[3]||(l[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(o,{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:R},"确认移交")])])])):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:k},[e.createElementVNode("view",{class:"iconfont icon-fanhui custom-navbar-icon"})]),e.createElementVNode("view",{class:"navbar-title"},e.toDisplayString(i.value),1),e.createElementVNode("view",{class:"navbar-right"},[e.createElementVNode("view",{class:"iconfont icon-gengduo custom-navbar-icon",onClick:f})])]),g.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"menu-card"},[e.createElementVNode("view",{class:"menu-card-item",onClick:l[4]||(l[4]=e=>{B.value=!0,x.value="",T.value="",D.value="",f()})},"导入文件"),e.createElementVNode("view",{class:"solid-line"}),e.createElementVNode("view",{class:"menu-card-item",onClick:l[5]||(l[5]=e=>{L(),f()})},"权限管理"),c.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"solid-line"})),c.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:1,class:"menu-card-item",onClick:l[6]||(l[6]=e=>{(async()=>{O.value=!0,U.value="";try{const e=_(),t=await w(e);A.value=t||[]}catch(e){t("error","at pages/CloudDbDetail/CloudDbDetail.vue:632","获取团队列表失败:",e),A.value=[]}})(),f()})},"移交团队"))])):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(W(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"},[p.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=>C(t),onLongpress:e=>N(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.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(o,{type:"right",size:"14",color:"#999"})])],40,["onClick","onLongpress"])))),128))]))])]),m.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(m.value.table_name),1)]),e.createElementVNode("view",{class:"section-actions"},[e.createElementVNode("text",{class:"row-count"},e.toDisplayString(v.value.length)+" / "+e.toDisplayString(m.value.row_count||0)+" 条",1)])]),e.createElementVNode("view",{class:"section-body"},[0===v.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(h.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(v.value,((t,a)=>(e.openBlock(),e.createElementBlock("view",{class:"data-row",key:t._row_id||a,onClick:e=>V(t)},[e.createElementVNode("view",{class:"data-cell index-cell"},e.toDisplayString(a+1),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(h.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"]]),Ne=C({__name:"text",setup(n){const s=ie(),d=()=>{s.isConnected||(ye.value&&Ee.value?s.connect({token:ye.value,UserId:Ee.value}):t("warn","at pages/text/text.vue:334","Token或UserId未准备好"))},v=Q(),h=e.ref(0),g=(e,t)=>{let a='<table border="1" style="border-collapse:collapse;width:100%;margin:8px 0">';return e.forEach(((e,n)=>{const l=0===n?"th":"td",o=e.split("|").filter((e=>""!==e.trim()));a+="<tr>",o.forEach(((e,n)=>{const o=t[n]?` style="text-align:${t[n]}"`:"";let s=e.trim().replace(/_/g,"_").replace(/\*/g,"*");a+=`<${l}${o} style="padding:6px 10px;border:1px solid #ddd">${s}</${l}>`})),a+="</tr>"})),a+="</table>",a},f=e=>{if(!e)return"";e=w(e);try{let t=M(e=(e=>{const t=e.split("\n");let a=[],n=!1,l=[],o=[];for(let s=0;s<t.length;s++){const e=t[s].trim();if(/^\|.+\|$/.test(e)){if(/^\|[\s\-:]+\|[\s\-:]+\|$/.test(e)){o=e.split("|").filter((e=>e.trim())).map((e=>e.trim().startsWith(":")&&e.trim().endsWith(":")?"center":e.trim().endsWith(":")?"right":"left"));continue}l.push(e),n=!0}else n&&l.length>0&&(a.push(g(l,o)),l=[],o=[],n=!1),a.push(e)}return n&&l.length>0&&a.push(g(l,o)),a.join("\n")})(e=e.replace(/__/g,"\0\0").replace(/_/g,"_").replace(/\x00\x00/g,"__")));return t=t.replace(/<a\s+href="([^"]*)"[^>]*>(.*?)<\/a>/gi,'<span class="chat-inline-link" data-url="$1">$2</span>'),t}catch(a){return t("error","at pages/text/text.vue:455","解析失败",a),e}},w=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},k=e=>{uni.previewImage({urls:[e]})},y=e=>{uni.downloadFile({url:e,success:e=>{uni.openDocument({filePath:e.tempFilePath,showMenu:!0})}})},C=e=>e?e<1?(1024*e).toFixed(0)+"KB":e.toFixed(2)+"MB":"0KB",N=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/text/text.vue:532","解析文件信息失败:",n),{textContent:e,files:[]}}},V=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 r(ye.value,t);if(!a)return void uni.showToast({title:"工作区创建失败",icon:"none"});const n=uni.getStorageSync("yxd_login_info");let l="";n&&(l=n.username||"");if(!(await u(ye.value,a,"新会话",l)))return void uni.showToast({title:"新会话创建失败",icon:"none"});Ve()}catch(e){t("error","at pages/text/text.vue:577","新建普通会话失败:",e),uni.showToast({title:"创建会话失败,请重试",icon:"none"})}},S=e.ref(!1),P=()=>{S.value=!1},$=e.ref(!1),j=()=>{$.value=!$.value},I=()=>{ke.value&&uni.setStorageSync("currentSessionId",ke.value),uni.navigateTo({url:"/pages/WorkSpace/WorkSpace"})},L=()=>{ke.value&&uni.setStorageSync("currentSessionId",ke.value),uni.navigateTo({url:"/pages/CloudDatabase/CloudDatabase"})},z=()=>{uni.reLaunch({url:"/pages/Login/Login"})},F=e.ref([]),O=e.ref([]),A=()=>new Promise(((t,a)=>{if(v.isConnected)return t();const n=e.watch((()=>v.isConnected),(e=>{e&&(n(),t())})),l=e.watch((()=>v.connectionStatus),(e=>{"error"===e&&(n(),l(),a(new Error("连接失败")))}));v.connect({token:ye.value,conversationId:ke.value})})),U=e.ref(!1),q=e.ref(!1),R=e.ref(!1),W=e.ref([]),J=e.ref(null),H=e.ref(!1),X=e.ref([]),K=(e,t)=>{let a=e.target;for(;a&&a.classList;){if(a.classList.contains("chat-inline-link")){const e=a.getAttribute("data-url")||a.dataset&&a.dataset.url;return void(e&&ue(e))}a=a.parentElement}t.role&&Y(t)},G=e=>{try{const t=new URL(e).pathname.split("/").filter((e=>e));if(t.length>0)return decodeURIComponent(t[t.length-1])}catch(a){}const t=e.split("/").filter((e=>e));if(t.length>0){const e=t[t.length-1],a=e.indexOf("?");return a>-1?e.substring(0,a):e}return e},Y=e=>{X.value=(e=>{const t=new Set,a=[],n=/\[([^\]]*)\]\((https?:\/\/[^\s<>"{}|\\^`\[\]()]+)\)/gi;[...e.matchAll(n)].forEach((e=>{const n=e[1].trim(),l=e[2];t.has(l)||(t.add(l),a.push({url:l,name:n||l}))}));const l=e.replace(n,"").match(/https?:\/\/[^\s<>"{}|\\^`\[\]()]+/gi);return l&&l.forEach((e=>{t.has(e)||(t.add(e),a.push({url:e,name:G(e)}))})),a})(e.content||""),H.value=!0},Z=()=>{H.value=!1,X.value=[]},se=e.ref({show:!1,type:"loading",message:""});let ce=null;const re=(e,t,a)=>{ce&&clearTimeout(ce),se.value={show:!0,type:e,message:t},a>0&&(ce=setTimeout((()=>{se.value={show:!1,type:"loading",message:""}}),a))},ue=e=>{de(e)},de=async e=>{try{re("loading","下载中...",0);const t=uni.getStorageSync("workspace_id")||"",a=await E(ye.value,t,e),n="string"==typeof a?a:(null==a?void 0:a.url)||(null==a?void 0:a.download_url)||"";if(!n)return void re("error","获取下载地址失败",2500);uni.downloadFile({url:n,success:e=>{200===e.statusCode?(ce&&clearTimeout(ce),se.value={show:!1,type:"loading",message:""},uni.openDocument({filePath:e.tempFilePath,showMenu:!0,fail:()=>{re("error","无法打开此文件",2500)}})):re("error","下载失败",2500)},fail:()=>{re("error","下载失败",2500)}})}catch(t){re("error","下载失败: "+(t.message||t),2500)}},pe=async()=>{s.isConnecting||await d();const e=T(),t=W.value.length>0,a={command:1,sender:Ee.value,receiver:e,avatar:"",sessionId:ke.value,message:fe.value,callBackMessage:!1};t&&(a.contentType=1,a.uploadVos=W.value);const n={version:"1.1",body:a};s.send(n);const l={sender:Ee.value,receiver:e,content:fe.value,taskId:null,avatar:null,createTime:"",messageType:"null",contentJson:t?JSON.stringify(W.value):"null"};De.value=[...De.value,l],fe.value="",W.value=[],setTimeout((()=>{Ie()}),1e3)},me=async()=>{s.isConnecting||await d();const e=W.value.length>0,t={command:9,groupId:ke.value,message:fe.value||"",callBackMessage:!e,messageType:e?1:0,sender:Ee.value};e&&(t.uploadVos=W.value);const a={version:"1.1",body:t};s.send(a);const n={id:De.value.length+1,message:fe.value,messageType:e?1:0,groupId:null,createTime:"",contentJson:e?JSON.stringify(W.value):"",sender:Ee.value};De.value=[...De.value,n],fe.value="",W.value=[],setTimeout((()=>{Le()}),1e3)},ve=async()=>{try{await A();let e=fe.value;if(W.value.length){const t=JSON.stringify(W.value);e=e?`${e}\n[文件信息:${t}]`:`[文件信息:${t}]`}const t={type:"chat",conversation_id:ke.value,content:e};v.send(t),U.value=!0,q.value=!0,De.value=[...De.value,{role:"user",content:e}],J.value="streaming-"+Date.now(),De.value=[...De.value,{role:"assistant",content:"",_streaming:!0,_id:J.value}],fe.value="",W.value=[],Fe()}catch(e){U.value=!1,uni.showToast({title:`用户发送消息失败${e}`,icon:"error"})}},ge=async()=>{t("log","at pages/text/text.vue:1064","中断对话 - 当前会话ID:",ke.value);try{await v.send({type:"stop",conversation_id:ke.value}),t("log","at pages/text/text.vue:1070","中断指令已发送成功")}catch(e){t("error","at pages/text/text.vue:1072","中断指令发送失败:",e)}J.value&&(De.value=De.value.filter((e=>e._id!==J.value)),J.value=null),U.value=!1,v.isThinking=!1,q.value=!1,fe.value="",W.value=[],uni.showToast({title:"已中断",icon:"none",duration:1500})};e.watch((()=>v.isThinking),((e,a)=>{if(t("log","at pages/text/text.vue:1096","isThinking 变化:",a,"→",e,"messageString:",v.messageString),!a&&e)return t("log","at pages/text/text.vue:1099","AI开始回复(跨设备同步),锁定输入框"),U.value=!0,void(J.value||(J.value="streaming-"+Date.now(),De.value=[...De.value,{role:"assistant",content:"",_streaming:!0,_id:J.value}]));a&&!e&&(t("log","at pages/text/text.vue:1115","AI回复结束(正常/中断),解锁并刷新消息列表"),J.value&&(De.value=De.value.filter((e=>e._id!==J.value)),J.value=null),Me(),U.value=!1,q.value=!1,fe.value="",W.value=[])})),e.watch((()=>v.authFailReason),(t=>{"pc offline"===t&&(U.value=!1,v.authFailReason="",e.nextTick((()=>{uni.showModal({title:"提示",content:"PC端不在线,不可聊天",showCancel:!1,confirmText:"知道了"})})))})),e.watch((()=>v.messageString),(e=>{if(!J.value||!v.isThinking)return;const t=De.value.findIndex((e=>e._id===J.value));if(t>=0){const a={...De.value[t],content:e};De.value.splice(t,1,a),Fe()}}));const fe=e.ref(""),we=e.ref([]),ke=e.ref(""),ye=e.ref(""),Ee=e.ref(""),Ce=e.ref(""),Ne=e.ref(null),Ve=async()=>{try{ye.value=_(),t("log","at pages/text/text.vue:1189","token:",ye.value),we.value=await i(ye.value)||[];const e=B();e&&we.value.some((t=>t._id===e))?ke.value=e:we.value.length>0?ke.value=we.value[0]._id:ke.value="",t("log","at pages/text/text.vue:1201","保存会话id:",ke.value),uni.setStorageSync("currentSessionId",ke.value)}catch(e){uni.showToast({title:`获取会话列表失败${e}`,icon:"error"})}},be=e.ref([]),_e=e=>{if(!e)return null;const t=be.value.find((t=>t.receiver===e));return(null==t?void 0:t.avatar)||null},Be=async e=>{if(!(null==e?void 0:e.length))return[];try{const t=e.map((e=>e.receiver)),a=await m(ye.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/text/text.vue:1257","获取好友头像失败",a),e}},Se=e.ref([]),xe=e.ref([]),Te=e=>{if(!e)return null;const t=xe.value.find((t=>t.groupContactId===e));return(null==t?void 0:t.avatar)||null},De=e.ref([]),Pe=e.ref(""),$e=e.ref(!1);e.ref(!1),e.ref(1);const je=e.computed((()=>De.value)),Me=async()=>{try{De.value=await c(ye.value,ke.value)||[],Fe()}catch(e){uni.showToast({title:`获取ai会话内容失败${e}`,icon:"none"})}},Ie=async()=>{try{De.value=await ae(ke.value)||[],Fe()}catch(e){uni.showToast({title:`获取好友会话消息失败${e}`,icon:"none"})}},Le=async()=>{try{De.value=await ne(ke.value)||[],t("log","at pages/text/text.vue:1363","群聊消息:",De.value);const e=await le(ke.value);t("log","at pages/text/text.vue:1366","获取到的群成员列表:",e),e&&e.length?(xe.value=await(async e=>{if(!(null==e?void 0:e.length))return[];try{const a=e.map((e=>e.groupContactId));t("log","at pages/text/text.vue:1286","请求头像的ID列表:",a);const n=await m(ye.value,a);t("log","at pages/text/text.vue:1288","头像接口返回数据:",n);const l=new Map(n.map((e=>[e.user_id,e]))||[]);return t("log","at pages/text/text.vue:1291","userMap的keys:",Array.from(l.keys())),e.map((e=>{const a=e.groupContactId,n=l.get(a);return t("log","at pages/text/text.vue:1296",`查找 ${a} 的头像:`,n),{...e,avatar:(null==n?void 0:n.avatar)||null}}))}catch(a){return t("error","at pages/text/text.vue:1303","获取群成员头像失败",a),e}})(e),t("log","at pages/text/text.vue:1369","群成员列表(带头像):",xe.value)):xe.value=[],Fe()}catch(e){uni.showToast({title:`获取群聊会话失败${e}`,icon:"none"})}},ze=e=>{},Fe=async()=>{await e.nextTick(),je.value.length>0&&($e.value=!$e.value,Pe.value=$e.value?"chat-bottom-a":"chat-bottom-b")};return e.watch((()=>s.MessageReceived),(e=>{if(t("log","at pages/text/text.vue:1414","收到了好友消息"),e)switch(t("log","at pages/text/text.vue:1416","ChatType:",h.value),h.value){case 0:Me(),s.MessageReceived=!1;break;case 1:Ie(),s.MessageReceived=!1;break;case 2:Le(),s.MessageReceived=!1;break;default:t("log","at pages/text/text.vue:1432","default 分支"),s.MessageReceived=!1}}),{immediate:!0}),e.watch(ke,(e=>{if(e)switch(uni.setStorageSync("currentSessionId",ke.value),h.value){case 0:Me(),v.disconnect(),A();break;case 1:Ie();break;case 2:Le();break;default:Me()}}),{immediate:!0}),e.onMounted((()=>{})),l((async()=>{await(async()=>{try{ye.value=_(),Ne.value=await p(ye.value),Ee.value=Ne.value._id,Ce.value=Ne.value.avatar||"",t("log","at pages/text/text.vue:1179","用户信息已加载:",Ee.value,Ce.value)}catch(e){t("error","at pages/text/text.vue:1181","获取用户信息失败:",e)}})();const e=x();h.value=e;const a=B();a&&(ke.value=a),0===e?(await Ve(),ke.value&&Me(),ye.value&&ke.value&&!v.isConnected&&A()):1===e?(await(async()=>{try{t("log","at pages/text/text.vue:1216","开始获取好友列表");const e=await ee(Ee.value);t("log","at pages/text/text.vue:1219","friendList:",e),e&&e.length?be.value=await Be(e):(be.value=[],t("log","at pages/text/text.vue:1224","好友列表为空"))}catch(e){t("error","at pages/text/text.vue:1227","获取好友列表失败:",e),be.value=[]}finally{we.value=be.value}})(),Ie(),d()):2===e&&(await(async()=>{try{t("log","at pages/text/text.vue:1267","开始获取群聊列表"),Se.value=await te(Ee.value)}catch(e){t("error","at pages/text/text.vue:1272","获取群聊列表失败:",e),Se.value=[]}finally{we.value=Se.value}})(),await d(),await Le())})),o((()=>{v.disconnect()})),(n,l)=>{const o=a(e.resolveDynamicComponent("uni-icons"),b);return e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),S.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"ncd-overlay",onClick:P},[e.createElementVNode("view",{class:"ncd-card",onClick:l[0]||(l[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(o,{type:"closeempty",color:"#ff0000",size:"24",onClick:P})]),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(o,{type:"chat",color:"#000000",size:"30"})]),e.createElementVNode("view",{class:"ncd-opt-title",onClick:V},[e.createElementVNode("view",{class:"ncd-opt-title-1"},"普通会话"),e.createElementVNode("view",{class:"ncd-opt-title-2"},"与AI自由对话,探索任何话题")]),e.createVNode(o,{type:"arrow-right",class:"arrow-right-style"})]),e.createElementVNode("view",{class:"ncd-option ncd-intelligence"},[e.createElementVNode("view",{class:"ncd-opt-icon"},[e.createVNode(o,{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(o,{type:"arrow-right",class:"arrow-right-style"})])])])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"chat-page page-container"},[$.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"mask",onClick:j})):e.createCommentVNode("",!0),e.createElementVNode("view",{class:e.normalizeClass(["chat-sidebar",{"sidebar-show":$.value}])},[e.createVNode(D,{chatList:we.value,showNewChatModal:S.value,"onUpdate:showNewChatModal":l[1]||(l[1]=e=>S.value=e),currentSessionId:ke.value,"onUpdate:currentSessionId":l[2]||(l[2]=e=>ke.value=e),chatType:h.value,"onUpdate:chatType":l[3]||(l[3]=e=>h.value=e),onRefreshConversations:Ve},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:j},[e.createElementVNode("view",{class:"iconfont icon-caidan"})]),e.createElementVNode("view",{class:"head-btn",onClick:I},[e.createElementVNode("view",{class:"iconfont icon-wenjianjia"})]),e.createElementVNode("view",{class:"head-btn",onClick:L},[e.createElementVNode("view",{class:"iconfont icon-cloud"})]),e.createElementVNode("view",{class:"head-btn log-out",onClick:z},[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,"upper-threshold":0,"scroll-with-animation":!0,onScroll:ze},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(je.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock(e.Fragment,{key:a},[0===h.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=Ne.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:Ne.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"iconfont icon-yonghuziliao"}))],2)):e.createCommentVNode("",!0),t.content&&""!==String(t.content).trim()||t._streaming?(e.openBlock(),e.createElementBlock("view",{key:1,class:e.normalizeClass(["chat-content",{"chat-content-user":"user"===t.role,"chat-content-assistant":"assistant"===t.role}]),onClick:e=>K(e,t)},[!t._streaming||t.content&&""!==String(t.content).trim()?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"bubble-loading-dots"},[e.createElementVNode("view",{class:"bubble-dot"}),e.createElementVNode("view",{class:"bubble-dot"}),e.createElementVNode("view",{class:"bubble-dot"})])),N(t.content).textContent?(e.openBlock(),e.createElementBlock("view",{key:1,innerHTML:f(N(t.content).textContent)},null,8,["innerHTML"])):e.createCommentVNode("",!0),N(t.content).files.length>0?(e.openBlock(),e.createElementBlock("view",{key:2,class:"message-file-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(N(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=>k(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>y(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(C(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],10,["onClick"])):e.createCommentVNode("",!0)],10,["id"])):e.createCommentVNode("",!0)],64)})),128)),1===h.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(je.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["chat-message",{"message-user":t.sender===Ee.value}]),key:a,id:"msg-"+a},[e.createElementVNode("view",{class:e.normalizeClass(["chat-avatar",{"chat-avatar-user":t.sender===Ee.value}])},[t.sender===Ee.value&&(null==(n=Ne.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:Ne.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):_e(t.sender)?(e.openBlock(),e.createElementBlock("image",{key:1,src:_e(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===Ee.value}]),onClick:e=>K(e,t)},[t.content&&""!==String(t.content).trim()?(e.openBlock(),e.createElementBlock("view",{key:0,innerHTML:f(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=>k(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>y(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(C(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],10,["onClick"])],10,["id"])})),128)):e.createCommentVNode("",!0),2===h.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(je.value,((t,a)=>{var n;return e.openBlock(),e.createElementBlock("view",{class:e.normalizeClass(["chat-message",{"message-user":t.sender===Ee.value}]),key:a,id:"msg-"+a},[e.createElementVNode("view",{class:e.normalizeClass(["chat-avatar",{"chat-avatar-user":t.sender===Ee.value}])},[t.sender===Ee.value&&(null==(n=Ne.value)?void 0:n.avatar)?(e.openBlock(),e.createElementBlock("image",{key:0,src:Ne.value.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):xe.value.length>0&&Te(t.sender)?(e.openBlock(),e.createElementBlock("image",{key:1,src:Te(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===Ee.value}]),onClick:e=>K(e,t)},[t.message&&""!==String(t.message).trim()?(e.openBlock(),e.createElementBlock("view",{key:0,innerHTML:f(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=>k(t.url)},null,8,["src","onClick"])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"message-file",onClick:e=>y(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(C(t.fileSize)),1)],8,["onClick"]))])))),128))])):e.createCommentVNode("",!0)],10,["onClick"])],10,["id"])})),128)):e.createCommentVNode("",!0),e.createElementVNode("view",{id:"chat-bottom-a",style:{height:"1rpx"}}),e.createElementVNode("view",{id:"chat-bottom-b",style:{height:"1rpx"}})],40,["scroll-into-view"]),e.createElementVNode("view",{class:e.normalizeClass(["chat-interactive-container",{"interactive-disabled":U.value}])},[e.createElementVNode("view",{class:"chat-interactive-group"},[e.createElementVNode("view",{class:e.normalizeClass(["chat-interactive-btn",{disabled:U.value}]),onClick:l[4]||(l[4]=e=>!U.value&&(t("log","at pages/text/text.vue:626","点击了拍照上传"),void uni.chooseImage({count:1,sourceType:["camera","album"],success:e=>{const t=e.tempFiles,a=e.tempFilePaths;t.forEach(((e,t)=>{F.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/text/text.vue:644","选择图片失败",e)}})))},"拍照上传",2),e.createElementVNode("view",{class:e.normalizeClass(["chat-interactive-btn",{disabled:U.value}]),onClick:l[5]||(l[5]=e=>!U.value&&(t("log","at pages/text/text.vue:655","点击了上传文件"),void he({count:5,type:"all",success:e=>{t("log","at pages/text/text.vue:660","成功了"),O.value=e.tempFiles,F.value.push(...e.tempFiles),uni.showToast({title:`已选择 ${e.tempFiles.length} 个文件`,icon:"success"})},fail:e=>{t("error","at pages/text/text.vue:671","选择失败:",e),uni.showToast({title:"选择失败",icon:"error"})}})))},"上传文件",2)]),F.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:0,class:"image-list"},[e.createElementVNode("view",{class:"image-tags"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(F.value,((t,a)=>(e.openBlock(),e.createElementBlock("view",{class:"image-tag",key:a},[e.createElementVNode("text",{class:"tag-name"},e.toDisplayString(t.name),1),e.createElementVNode("text",{class:"tag-close",onClick:e.withModifiers((e=>(e=>{F.value.splice(e,1)})(a)),["stop"])},"×",8,["onClick"])])))),128))])])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:e.normalizeClass(["chat-input-container",{"input-disabled":U.value}])},[e.withDirectives(e.createElementVNode("textarea",{class:"message-input",placeholder:U.value?q.value?"AI 正在回复中...":"电脑正在运行,请稍后":"输入消息...",disabled:U.value,"onUpdate:modelValue":l[6]||(l[6]=e=>fe.value=e),"auto-height":""},null,8,["placeholder","disabled"]),[[e.vModelText,fe.value]]),U.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"input-btn-group stop-message-btn",onClick:ge},[e.createElementVNode("view",{class:"iconfont icon-tingzhi"})])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"input-btn-group send-message-btn",onClick:l[7]||(l[7]=e=>(async()=>{if(fe.value.trim()||0!==F.value.length){if(F.value.length>0){R.value=!0,uni.showLoading({title:"上传文件中...",mask:!0});try{const e=[];for(const t of F.value){const a=await oe(t.path);e.push(a)}W.value=e,F.value=[]}catch(e){return uni.hideLoading(),t("error","at pages/text/text.vue:895","文件上传失败:",e),uni.showToast({title:"文件上传失败,请重试",icon:"error"}),void(R.value=!1)}uni.hideLoading(),R.value=!1}0===h.value&&ve(),1===h.value&&pe(),2===h.value&&me()}})())},[e.createElementVNode("view",{class:"iconfont icon-fasong"})]))],2)],2)])])]),H.value?(e.openBlock(),e.createElementBlock("view",{key:1,class:"ncd-overlay",onClick:Z},[e.createElementVNode("view",{class:"ncd-card message-detail-card",onClick:l[8]||(l[8]=e.withModifiers((()=>{}),["stop"]))},[e.createElementVNode("view",{class:"ncd-header"},[e.createElementVNode("text",{class:"ncd-title-zh"},"消息详情"),e.createVNode(o,{type:"closeempty",color:"#ff0000",size:"24",onClick:Z})]),e.createElementVNode("scroll-view",{class:"message-detail-content","scroll-y":""},[X.value.length?(e.openBlock(),e.createElementBlock("view",{key:0,class:"detail-links-section"},[e.createElementVNode("view",{class:"detail-links-title"},"文件 ("+e.toDisplayString(X.value.length)+")",1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(X.value,((t,a)=>(e.openBlock(),e.createElementBlock("view",{key:a,class:"detail-link-item",onClick:e=>ue(t.url)},[e.createElementVNode("text",{class:"link-text"},e.toDisplayString(t.name),1)],8,["onClick"])))),128))])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"detail-empty"},[e.createElementVNode("text",null,"无可下载文件")]))])])])):e.createCommentVNode("",!0),se.value.show?(e.openBlock(),e.createElementBlock("view",{key:2,class:e.normalizeClass(["download-toast-overlay",(se.value.show,"")])},[e.createElementVNode("view",{class:e.normalizeClass(["download-toast-card","download-toast-"+se.value.type])},["loading"===se.value.type?(e.openBlock(),e.createElementBlock("view",{key:0,class:"download-toast-icon"},[e.createElementVNode("view",{class:"toast-dot"}),e.createElementVNode("view",{class:"toast-dot"}),e.createElementVNode("view",{class:"toast-dot"})])):(e.openBlock(),e.createElementBlock("text",{key:1,class:"download-toast-icon"},e.toDisplayString("success"===se.value.type?"✓":"✕"),1)),e.createElementVNode("text",{class:"download-toast-text"},e.toDisplayString(se.value.message),1)],2)],2)):e.createCommentVNode("",!0)],64)}}},[["__scopeId","data-v-f61b4f79"]]);const Ve=C({name:"IntuitiveAipptViewer",props:{visible:{type:Boolean,default:!0},htmlContent:{type:String,default:'<html>\n <head><meta charset="utf-8"></head>\n <body>\n <style>\n body{font-family:SimSun,宋体,serif;font-size:14pt;line-height:1.5;}h1{font-family:KaiTi,楷体,serif;font-size:22pt;color:#0000FF;font-weight:bold;}h2{font-family:SimHei,黑体,serif;font-size:16pt;color:#FF0000;font-weight:bold;}h3,h4,h5,h6{font-family:SimSun,宋体,serif;font-weight:bold;}table{border-collapse:collapse;width:100%;margin:.5em 0;}td,th{font-family:SimSun,宋体,serif;font-size:12pt;text-align:center;vertical-align:middle;border:1px solid #000;padding:4px 8px;}p{margin:.5em 0;}img,video{display:block;margin:0 auto;max-width:100%;}\n .wyxd-cover{aspect-ratio:610/959;display:flex;flex-direction:column;align-items:center;justify-content:center;}\n .wyxd-toc{padding:20px 20px;}\n .wyxd-toc .wyxd-toc-title{text-align:center;font-size:18pt;font-weight:bold;margin-bottom:30px;}\n .wyxd-toc ul{list-style:none;padding:0;}\n .wyxd-toc li{padding:8px 0;border-bottom:1px dashed #ccc;display:flex;justify-content:space-between;}\n .wyxd-toc .page-num{color:#888;}\n </style>\n <div class="wyxd-cover" style="background:linear-gradient(180deg,#fdfbf7 0%,#f5efe6 100%);">\n \x3c!-- 顶部装饰 --\x3e\n <div style="width:200px; height:2px; background:linear-gradient(90deg,transparent,#8B0000,transparent); margin-bottom:40px;">\n </div>\n \x3c!-- 主标题 --\x3e\n <p style="font-size:48px; font-weight:bold; margin:0; color:#1a1a1a; font-family:SimSun,serif; letter-spacing:8px;">\n 三國歷史\n </p>\n \x3c!-- 副标题 --\x3e\n <p style="font-size:20px; color:#8B0000; margin-top:25px; font-family:SimSun,serif; letter-spacing:4px;">\n 從黃巾起義到三分歸晉\n </p>\n \x3c!-- 分隔线 --\x3e\n <div style="width:300px; height:1px; background:#ccc; margin:30px auto;">\n </div>\n \x3c!-- 简短描述 --\x3e\n <p style="font-size:16px; color:#666; margin-top:25px; font-style:italic;">\n 東漢末年 • 群雄並起 • 三分天下\n </p>\n <p style="font-size:15px; color:#999; margin-top:15px;">\n 公元184年 — 280年\n </p>\n \x3c!-- 底部装饰 --\x3e\n <div style="width:200px; height:2px; background:linear-gradient(90deg,transparent,#8B0000,transparent); margin-top:60px;">\n </div>\n </div>\n <page order="1" num="0"></page>\n <div class="wyxd-toc">\n <p class="wyxd-toc-title">\n 目 录\n </p>\n <ul>\n <li>\n <span>第一章 东汉末年与黄巾起义</span><span class="page-num">3</span>\n </li>\n <li>\n <span>第二章 群雄割据与董卓乱政</span><span class="page-num">5</span>\n </li>\n <li>\n <span>第三章 曹操崛起与官渡之战</span><span class="page-num">8</span>\n </li>\n <li>\n <span>第四章 孙刘联盟与赤壁之战</span><span class="page-num">12</span>\n </li>\n <li>\n <span>第五章 三分天下格局的形成</span><span class="page-num">16</span>\n </li>\n <li>\n <span>第六章 蜀汉政权的建立与发展</span><span class="page-num">20</span>\n </li>\n <li>\n <span>第七章 曹魏政权的巩固与传承</span><span class="page-num">24</span>\n </li>\n <li>\n <span>第八章 东吴政权的繁荣与衰落</span><span class="page-num">28</span>\n </li>\n <li>\n <span>第九章 诸葛亮北伐与三国相持</span><span class="page-num">32</span>\n </li>\n <li>\n <span>第十章 三国归晋与历史终结</span><span class="page-num">37</span>\n </li>\n <li>\n <span>附录 三国主要人物简介</span><span class="page-num">42</span>\n </li>\n <li>\n <span>附录 三国时期著名战役</span><span class="page-num">45</span>\n </li>\n <li>\n <span>附录 三国疆域与行政区划</span><span class="page-num">48</span>\n </li>\n </ul>\n </div>\n <page order="2" num="0"></page>\n <h1>\n 第一章 东汉末年与黄巾起义\n </h1>\n <p style="text-align:center; margin:20px 0;">\n <img src="/api/aippt/三/images/1.png" alt="东汉末年形势图" style="max-width:100%; height:auto;">\n </p>\n <h2>\n 1.1 东汉王朝的衰落\n </h2>\n <p>\n 东汉王朝自光武帝刘秀建立以来,历经明帝、章帝的盛世,至和帝以后,外戚与宦官交替专权,政治日趋腐败。东汉后期,皇帝的寿命普遍较短,多为幼年即位,导致太后临朝称制,外戚势力趁机掌控朝政。桓灵二帝时期,宦官势力达到顶峰“十常侍”把持朝政,卖官鬻爵,横征暴敛,导致民不聊生。\n </p>\n <p>\n 东汉末年,中央政府的统治力急剧衰落。地方官员各自为政,中央对地方的控制力减弱。土地兼并严重,大量农民失去土地,成为流民。赋税沉重,徭役频繁,加上自然灾害频发,百姓生活陷入绝境。这种局面为后来的农民起义和社会动荡埋下了伏笔。\n </p>\n <page order="3" num="1"></page>\n <p>\n 此外,东汉的军事制度也出现了严重问题。边防军队逐渐废弛,地方军阀割据一方,中央对军队的控制力减弱。各州郡的太守、刺史不仅掌握行政权,还拥有相当规模的私人武装,形成了割据一方的势力。这些因素共同促成了东汉王朝的最终崩溃。\n </p>\n <h2>\n 1.2 黄巾起义的爆发\n </h2>\n <p>\n 中平元年(公元184年),张角、张梁、张宝三兄弟在冀州钜鹿(今河北巨鹿)发动了大规模农民起义。张角创立“太平道”,以道教为外衣,以治病救人为号召,在短短十余年间发展信徒数十万人,遍布东汉十三州。\n </p>\n <p>\n 黄巾军以“苍天已死,黄天当立,岁在甲子,天下大吉”为口号,头戴黄巾,象征对汉朝统治的否定。起义军分为十路,同时在全国各地发动进攻,短时间内攻克了许多郡县,东汉王朝的统治基础受到严重冲击。\n </p>\n <p>\n 面对来势汹汹的黄巾起义,东汉朝廷惊慌失措。灵帝急忙下诏各地募兵抵抗,并启用皇甫嵩、朱儁、卢植等名将率军镇压。同时,允许地方州郡自行组织军队,这为后来军阀割据提供了合法依据。\n </p>\n <h2>\n 1.3 黄巾起义的历史影响\n </h2>\n <p>\n 黄巾起义虽然最终被镇压,但它对东汉王朝的统治造成了致命打击。\n </p>\n <p>\n 首先,它彻底瓦解了东汉中央政府的权威,使得地方割据成为可能。其次,它消耗了东汉政府大量的军事和经济资源,国库空虚。再次,它打破了士族对仕途的垄断,为寒门子弟提供了上升通道。\n </p>\n <p>\n 更重要的是,黄巾起义锻炼出了一批军事人才。曹操、刘备、孙坚等人都是在镇压黄巾起义中崭露头角,逐渐成长为割据一方的军阀。可以说,没有黄巾起义,就没有后来的三国鼎立局面。\n </p>\n <p>\n 黄巾起义虽然失败了,但它揭开了三国时代的序幕,是中国历史上一次重要的农民起义。它的历史意义在于:打破了东汉末年的政治格局,为群雄逐鹿提供了舞台;促进了思想的解放,为各种政治势力的兴起创造了条件。\n </p>\n <h2>\n 1.4 董卓进京与废立\n </h2>\n <p>\n 中平六年(公元189年),汉灵帝刘辨去世,少帝刘辩即位。外戚何进与宦官十常侍的矛盾激化,双方展开激烈的权力斗争。何进为了对抗宦官,\n </p>\n <page order="4" num="2"></page>\n <p>\n 密召凉州军阀董卓率军入京。\n </p>\n <p>\n 董卓率军进入洛阳后,立即控制了朝政。他先设计诛杀了宦官集团,随后废黜少帝刘辩,改立陈留王刘协为帝,是为汉献帝。董卓自任相国,总揽朝政,权倾朝野。为了巩固权力,董卓还纵容军队烧杀抢掠,洛阳城陷入一片混乱。\n </p>\n <p>\n 董卓的倒行逆施引起了天下诸侯的强烈不满。曹操、袁绍、袁术、公孙瓒等十八路诸侯联合讨伐董卓,推举袁绍为盟主。虽然联军最终未能消灭董卓,但董卓被迫迁都长安,洛阳城被付之一炬。这次讨董战争标志着东汉王朝的正式分裂,群雄割据的时代正式开始。\n </p>\n <h1>\n 第二章 群雄割据与董卓乱政\n </h1>\n <h2>\n 2.1 董卓的暴政与灭亡\n </h2>\n <p>\n 董卓迁都长安后,更加骄横跋扈。他自封为“太师”,地位在诸侯王之上,佩剑上殿,目中无人。为了镇压反对意见,董卓滥杀无辜,残害忠良,朝野上下敢怒而不敢言。\n </p>\n <p>\n 初平三年(公元192年),司徒王允利用董卓与吕布之间的矛盾,设计除掉了董卓。王允先是拉拢吕布为内应,然后趁董卓入宫朝拜之时,\n </p>\n <p>\n 让吕布将其刺杀。董卓死后,他的部将李傕、郭汜率军攻入长安,杀死王允,挟持汉献帝,关中地区再次陷入混乱。\n </p>\n <p>\n 董卓的灭亡并没有结束混乱局面,反而使局势更加复杂。李傕、郭汜之间互相攻杀,长安城遭到严重破坏,汉献帝沦为傀儡,各地割据势力更加嚣张,东汉王朝名存实亡。\n </p>\n <h2>\n 2.2 曹操的初步崛起\n </h2>\n <p>\n 曹操(字孟德,沛国谯县人)是三国时期最重要的政治家、军事家和文学家。曹操的祖父曹腾是东汉末年的宦官,父亲曹嵩是曹腾的养子,曾任太尉。曹操少年时期就表现出非凡的才干,他机智过人,胸有大志。\n </p>\n <p>\n 中平元年,曹操参加镇压黄巾起义,因功升任济南相。后来董卓进京,曹操逃出洛阳,在陈留起兵讨伐董卓。曹操是少数几个真正出击董卓的诸侯之一,虽然战败,但名声大振。\n </p>\n <page order="5" num="3"></page>\n <p>\n 初平三年,曹操击破青州黄巾军,收降卒三十余万,人口百余万,创建了著名的“青州兵”。这是曹操第一支正规的私家军队,成为他逐鹿中原的主力。此后,曹操相继击败袁术、陶谦、吕布等割据势力,逐渐成为北方最强大的军阀。\n </p>\n <h2>\n 2.3 刘备的艰难创业\n </h2>\n <p>\n 刘备(字玄德,涿郡涿县人)是汉景帝之子中山靖王刘胜的后代,具有皇室血统。但到了刘备这一代,家道已经衰落,只能靠织席贩履为生。刘备仪表非凡,胸怀大志结交豪杰,在当地小有名气。\n </p>\n <p>\n 黄巾起义爆发后,刘备与关羽、张飞桃园结义,组成最早的创业团队。刘备率领义军参加镇压黄巾起义,因功被封为安喜县尉。此后,刘备先后依附于公孙瓒、陶谦、曹操、袁绍、刘表等诸侯,颠沛流离,寄人篱下。\n </p>\n <p>\n 建安六年(公元201年),刘备投奔荆州牧刘表,被安排在新野驻守。在荆州的七年里,刘备广招贤才,诸葛亮就在此时加入刘备集团。诸葛亮隆中对策,为刘备制定了夺取天下的大政方针,刘备的霸业从此开始起步。\n </p>\n <h2>\n 2.4 孙坚与孙策的基业\n </h2>\n <p>\n 孙坚(字文台,吴郡富春人)是东吴政权的奠基人之一。他出身寒门,但英勇善战,在镇压黄巾起义和讨伐董卓的战争中表现出色,\n </p>\n <p>\n 被封为长沙太守、乌程侯。\n </p>\n <p>\n 初平二年(公元191年),袁术派孙坚进攻荆州刘表。孙坚在襄阳之战中击败刘表部将黄祖,乘胜追击时中箭身亡,年仅三十七岁。孙坚死后,其部众由其侄孙贲率领,继续依附于袁术。\n </p>\n <p>\n 孙策(字伯符)是孙坚的长子,他继承父亲的遗志,在袁术麾下效力。建安五年(公元200年),孙策率军渡过长江,攻占江东地区,先后击败严白虎、王朗等地方势力,迅速占领了吴郡、会稽、豫章、庐江、丹阳等郡。孙策善用人才,周瑜、张昭等人纷纷来投,东吴基业初具规模。\n </p>\n <h2>\n 2.5 官渡之战前的北方局势\n </h2>\n <p>\n 建安五年(公元200年)前后,中国北方形成了曹操与袁绍两大集团对峙的局面。曹操占据兖州、豫州、徐州部分地区,挟天子以令诸侯,实力日益强盛。袁绍占据冀州、青州、并州、幽州,拥有精兵数十万,地广人多,\n </p>\n <page order="6" num="4"></page>\n <p>\n 势力最强大。\n </p>\n <p>\n 袁绍手下的谋士郭图、审配等人主张早日发动对曹操的进攻,而田丰、沮授则认为应该先巩固后方,等待时机。袁绍最终采纳了主战派的建议,决定发兵南下。与此同时,曹操也积极备战,在官渡一线构筑防线。\n </p>\n <p>\n 官渡之战是三国时期最关键的战役之一,此战决定了北方的归属,也奠定了三国鼎立的基础。战争的胜负虽然取决于许多因素,但曹操的军事才能和战略眼光无疑是决定性的。\n </p>\n <h1>\n 第三章 曹操崛起与官渡之战\n </h1>\n <h2>\n 3.1 曹操的政治举措\n </h2>\n <p>\n 曹操之所以能够在群雄中脱颖而出,不仅仅依靠军事才能,更重要的是他的政治举措。建安元年(公元196年),曹操迎接汉献帝迁都许昌,开始了“挟天子以令诸侯”的政治策略。\n </p>\n <p>\n 曹操挟持汉献帝后,打着皇帝的旗号征讨四方,取得了政治上的主动权。他先后消灭了袁术、吕布、刘表等割据势力,又迫使韩遂、马超等西北军阀臣服。在军事胜利的基础上,曹操推行了一系列政治改革。\n </p>\n <p>\n 在用人方面,曹操打破门第观念,实行“唯才是举”的政策。他多次下诏求贤,只要有才能的人,无论出身高低,都能得到重用。\n </p>\n <p>\n 这使得曹操麾下聚集了大量人才,谋士如荀彧、郭嘉、贾诩、荀攸、程昱等,武将如张辽、徐晃、于禁、乐进、李典等。\n </p>\n <h2>\n 3.2 曹操的经济与军事改革\n </h2>\n <p>\n 曹操在经济方面推行“屯田制”,让士兵和流民开垦荒地,生产粮食。屯田制分为军屯和民屯两种,有效地解决了粮食问题,为军事行动提供了充足的物资保障。\n </p>\n <p>\n 在军事上,曹操改革兵制,建立了一支训练有素、纪律严明的军队。他重视军队的训练和装备,注重发挥各将领的特长,形成了一套完整的军事指挥体系。曹操还著有《孙子略解》《兵书接要》等军事著作,展现了他深厚的军事理论素养。\n </p>\n <p>\n 曹操还善于利用政治和外交手段瓦解对手。他分化瓦解敌对势力,\n </p>\n <page order="7" num="5"></page>\n <p>\n 必要时使用离间计、反间计等计谋,以最小的代价换取最大的胜利。这些综合手段的运用,使曹操成为三国时期最杰出的政治家和军事家。\n </p>\n <h2>\n 3.3 官渡之战的背景\n </h2>\n <p>\n 建安五年(公元200年)二月,袁绍率十万大军南下攻打曹操。袁绍的军队人数众多,装备精良,士气旺盛。而曹操的兵力只有两三万,双方实力悬殊。\n </p>\n <p>\n 面对强敌,曹操采取了正确的战略战术。他先发制人,击败了刘备,消除了侧翼威胁,然后集中兵力在官渡一线设防。曹操知道自己的兵力不足以与袁绍正面对抗,因此采取了以逸待劳、坚壁不战的策略。\n </p>\n <p>\n 袁绍虽然兵力占优,但指挥失当,多次错失良机。他的谋士之间互相倾轧,不能形成统一的战略。而曹操则能够虚心纳谏,灵活应对战场变化。两军的对峙持续了半年多,战争进入相持阶段。\n </p>\n <h2>\n 3.4 官渡之战的经过\n </h2>\n <p>\n 建安五年八月,袁绍率军逼近官渡,两军在此展开决战。袁绍依仗兵力优势,采取强攻战术,但曹操防守严密,几次进攻都未能得逞。\n </p>\n <p>\n 九月,曹操率军袭击袁绍的运粮车队,烧毁了袁绍的大量粮草。十月,袁绍派淳于琼率万余人护送粮草,驻守在乌巢。曹操得知这一情报后,亲率五千精兵连夜突袭乌巢,一把火烧掉了袁绍的全部粮草。\n </p>\n <p>\n 乌巢失守后,袁绍军心动摇。曹操乘机发动总攻,大败袁绍。袁绍仓皇逃回冀州,其主力部队损失殆尽。这场战役,曹操以少胜多,创造了军事史上的经典战例。\n </p>\n <h2>\n 3.5 官渡之战的结果与影响\n </h2>\n <p>\n 官渡之战后,袁绍势力一蹶不振。建安七年(公元202年),袁绍病逝,他的两个儿子袁尚、袁谭互相攻击,最终被曹操各个击破。建安十二年(公元207年),曹操彻底平定北方,占据了幽州、冀州、青州、并州、兖州、豫州、徐州等广大地区。\n </p>\n <p>\n 官渡之战的胜利,使曹操成为北方实际的统治者,为他统一北方奠定了坚实基础。此战后,曹操将主要精力用于巩固后方、发展经济、扩充军队,为南下统一全国做准备。\n </p>\n <page order="8" num="6"></page>\n <p>\n 从历史角度看,官渡之战是中国古代军事史上的经典战例。曹操以少胜多、以弱胜强的成功经验,为后世军事家提供了宝贵的借鉴。此战也确立了曹操在三国鼎立格局中的主导地位。\n </p>\n <h2>\n 3.6 曹操统一北方\n </h2>\n <p>\n 击败袁绍后,曹操开始了统一北方的战争。建安九年(公元204年),曹操攻占邺城,吞并了袁尚的势力。建安十年(公元205年),曹操击败袁谭,收取青州。建安十一年(公元206年),曹操攻占并州,消灭了高干。\n </p>\n <p>\n 建安十二年(公元207年),曹操率军北征乌桓,在白狼山之战中大败乌桓军队,斩首蹋顿单于,彻底平定了北方边境。此战过后,北方地区获得了相对稳定的和平环境。\n </p>\n <p>\n 在平定北方的过程中,曹操注意招抚当地人才,北方社会经济得到了恢复和发展。曹操的统治为后来的曹魏政权奠定了基础,也为中国南北朝的统一创造了条件。\n </p>\n <h1>\n 第四章 孙刘联盟与赤壁之战\n </h1>\n <h2>\n 4.1 曹操南征与荆州之变\n </h2>\n <p>\n 建安十三年(公元208年),曹操平定北方后,率大军南下,目标是荆州和江东。荆州的刘表年老多病,其子刘琮继位。曹操大军压境时,刘琮在蒯越、韩嵩等人的劝说下投降曹操。\n </p>\n <p>\n 刘备当时驻守在新野,得知曹操南下的消息后,仓促撤退。曹操亲率五千精兵追击,在当阳长坂坡大败刘备。刘备被迫弃妻小而逃,在赵云的护卫下才得以脱险。\n </p>\n <p>\n 诸葛亮建议刘备联合孙权,共同抵抗曹操。当时孙权占据江东已有九年时间,根基牢固,兵精粮足。刘备派诸葛亮前往柴桑(今江西九江)说服孙权,促成孙刘联盟的形成。\n </p>\n <h2>\n 4.2 孙刘联盟的形成\n </h2>\n <p>\n 孙权接到曹操的劝降书后,犹豫不决。他的谋士鲁肃主张联合刘备抵抗曹操,而张昭等文臣则主张投降。鲁肃建议孙权召回周瑜,共同商讨对策。\n </p>\n <p>\n 周瑜从鄱阳湖赶回柴桑,与诸葛亮一起分析形势。周瑜认为,\n </p>\n <page order="9" num="7"></page>\n <p>\n 曹操虽然兵多,但北方军队不习水战,而且后方不稳,马超、韩遂等人还在关西虎视眈眈。孙刘联军有战胜的可能。\n </p>\n <p>\n 孙权采纳了周瑜的建议,决定联合刘备抵抗曹操。他任命周瑜为左都督,程普为右都督,鲁肃为赞军校尉,率三万大军与刘备汇合。孙刘联盟的建立,为赤壁之战的胜利奠定了基础。\n </p>\n <h2>\n 4.3 赤壁之战的准备\n </h2>\n <p>\n 建安十三年冬,周瑜率军与刘备在江夏汇合。两军加起来共有五万余人,在赤壁与曹操大军隔江对峙。曹操的北方军队不习水战,为了克服晕船问题,他们将战船用铁索连接起来,以减少风浪的颠簸。\n </p>\n <p>\n 周瑜的部将黄盖发现曹操战船相连的弱点,建议采用火攻。他亲自写信向曹操假投降,麻痹敌人。曹操信以为真,没有防备。\n </p>\n <p>\n 战前,周瑜进行了周密的部署。他派黄盖率十艘装满易燃物品的战船靠近曹军舰队,准备实施火攻。同时命令主力部队待命,随时准备出击。\n </p>\n <h2>\n 4.4 赤壁之战的经过\n </h2>\n <p>\n 建安十三年十一月的一个夜晚,江面上刮起了东南风。黄盖率领十艘满载柴草、油脂的战船,向曹军舰队驶去。接近曹军时,黄盖下令点火,然后率部跳上小船离开。\n </p>\n <p>\n 着火的战船顺风冲入曹军舰队,由于战船用铁索相连,无法分散,\n </p>\n <p>\n 火势迅速蔓延。曹操的战船和岸上营地陷入一片火海,士兵死伤无数。\n </p>\n <p>\n 周瑜趁势率军渡江发动总攻,曹操大军大败。曹操被迫率残部撤退,在华容道又遭到关羽的伏击,损失惨重。此战,曹操损失了大部分军队和战船,基本丧失了统一南方的能力。\n </p>\n <h2>\n 4.5 赤壁之战的结果与影响\n </h2>\n <p>\n 赤壁之战后,曹操退回北方,短期内无力南下。孙权和刘备各自发展势力,形成了三国鼎立的雏形。刘备趁机夺取了荆州的江南四郡有了立足之地。\n </p>\n <p>\n 赤壁之战是中国古代军事史上最著名的以少胜多的战例之一。周瑜和黄盖的火攻计策,成为军事史上的经典战例。此战改变了三国的历史走向,\n </p>\n <page order="10" num="8"></page>\n <p>\n 奠定了三国鼎立的格局。\n </p>\n <p>\n 从政治角度看,赤壁之战的胜利孙刘联盟的胜利,也是曹操“挟天子以令诸侯”战略的失败。此战后曹操不得不调整战略,转而巩固北方经营西北,为日后篡汉建魏做准备。\n </p>\n <h2>\n 4.6 赤壁之战后的局势\n </h2>\n <p>\n 赤壁之战后,刘备向孙权借荆州南郡,开始了建立蜀汉政权的进程。建安十四年(公元209年),周瑜率军攻占江陵,刘备表荐刘表长子刘琦为荆州刺史,自己以军师中郎将的身份治理荆州。\n </p>\n <p>\n 建安十五年(公元210年),周瑜病逝,孙权任命鲁肃为都督。鲁肃主张将荆州借给刘备,以共同对抗曹操。刘备得到荆州后,实力大增,开始向益州发展。\n </p>\n <p>\n 建安十六年(公元211年),刘璋邀请刘备入蜀对抗张鲁。刘备趁机率军入益州,拉开了夺取益州的序幕。建安十九年(公元214年),刘备包围成都,刘璋投降,刘备占据了益州。\n </p>\n <h1>\n 第五章 三分天下格局的形成\n </h1>\n <h2>\n 5.1 刘备取益州与汉中\n </h2>\n <p>\n 建安十六年(公元211年),益州牧刘璋听说曹操要攻打汉中张鲁,心中恐惧。谋士张松建议刘璋邀请刘备入蜀,共同抵御曹操。\n </p>\n <p>\n 刘璋采纳了这个建议,派法正迎请刘备。\n </p>\n <p>\n 刘备率军入蜀后,与刘璋的关系逐渐恶化。建安十七年(公元212年),刘备在葭萌关起兵,进攻成都。双方在涪城、绵竹等地展开激战,刘备进展顺利。\n </p>\n <p>\n 建安十九年(公元214年),刘备包围成都,刘璋被迫投降。刘备自领益州牧,封诸葛亮为军师将军,负责治理益州。从此,刘备拥有了荆州和益州两块根据地,三分天下有其一。\n </p>\n <p>\n 建安二十三年(公元218年),刘备率军进攻汉中,与曹操展开激战。建安二十四年(公元219年),刘备在定军山击败曹操,杀死曹操部将夏候渊,攻占汉中。刘备自称汉中王,实现了“隆中对”中跨有荆益的战略目标。\n </p>\n <page order="11" num="9"></page>\n <h2>\n 5.2 关羽失荆州\n </h2>\n <p>\n 建安二十四年(公元219年),关羽在刘备攻取汉中的同时,发动了北伐襄樊的战争。关羽率军围攻樊城的曹仁,曹操派于禁率七军前来救援。\n </p>\n <p>\n 秋天的连绵大雨导致汉水泛滥,于禁的七军被洪水淹没,于禁被迫投降。关羽乘势进攻,曹操的大将于禁被俘,庞德被杀,曹操震动。关羽威震华夏,曹操甚至一度考虑迁都以避其锋芒。\n </p>\n <p>\n 然而就在关羽北伐胜利之际,孙权派吕蒙白衣渡江,袭取了荆州。关羽得知后方失守后,仓促回撤,但为时已晚。关羽最终在麦城被孙权部将马忠擒杀,荆州落入东吴手中。\n </p>\n <p>\n 关羽失荆州是三国时期的重大事件,它打破了孙刘联盟,也使刘备失去了北伐的通道。蜀汉的势力范围从此被压缩在益州一地,难以对外发展。\n </p>\n <h2>\n 5.3 曹丕篡汉与曹魏建立\n </h2>\n <p>\n 建安二十五年(公元220年),曹操病逝于洛阳,终年六十五岁。曹操死后,其子曹丕继承魏王爵位,掌控了魏国的军政大权。\n </p>\n <p>\n 同年十月,曹丕迫使汉献帝禅让帝位,建立魏国,是为魏文帝。东汉王朝正式灭亡,三国时代正式开始。曹丕定都洛阳,改元黄初。\n </p>\n <p>\n 曹丕称帝后,追尊曹操为魏武帝,庙号太祖。曹魏政权控制了北方中原地区,拥有最广阔的土地和最多的人口,是三国中实力最强的政权。\n </p>\n <h2>\n 5.4 刘备称帝与蜀汉建立\n </h2>\n <p>\n 章武元年(公元221年),刘备在成都称帝,建立蜀汉政权,是为蜀汉昭烈帝。刘备定都成都,以诸葛亮为丞相,许靖为司徒。\n </p>\n <p>\n 刘备称帝后做的第一件事就是发兵伐吴,为关羽报仇。同年,刘备亲率大军进攻东吴,试图夺回荆州。孙权派陆逊率军抵御。\n </p>\n <p>\n 蜀汉与东吴的夷陵之战爆发于章武二年(公元222年)。刘备率军在夷陵一带扎营连营数百里,与吴军相持。陆逊采用火攻,大败蜀军。刘备逃回白帝城,蜀汉元气大伤。\n </p>\n <h2>\n 5.5 三国鼎立格局的正式形成\n </h2>\n <p>\n 夷陵之战后,刘备病逝于白帝城,终年六十三岁。诸葛亮辅佐后主刘禅,\n </p>\n <page order="12" num="10"></page>\n <p>\n 继续治理蜀汉。蜀汉与东吴重新修好,恢复了孙刘联盟。\n </p>\n <p>\n 黄初二年(公元221年),孙权也称王,建都建业,国号吴,但未正式称帝。直到黄龙元年(公元229年),孙权才正式称帝,建立东吴政权。\n </p>\n <p>\n 至此,三国鼎立的格局正式形成:曹魏占据北方中原地区,拥有洛阳、长安等大城市,人口众多,经济发达;蜀汉占据益州和汉中,地势险要,易守难攻;东吴占据江东六郡,经济繁荣,水军强大。三国之间形成了相对稳定的对峙局面。\n </p>\n <h2>\n 5.6 三国鼎立时期的特点\n </h2>\n <p>\n 三国鼎立时期,各国都注重发展经济、整军经武。曹魏实行九品中正制,蜀汉推行依法治国,东吴则大力发展海外贸易。三个政权都在各自的统治区域内建立了一套相对完整的政治制度。\n </p>\n <p>\n 在军事方面,三国都面临外部威胁。曹魏需要防御蜀汉和东吴的进攻,同时还要应对北方少数民族的侵扰;蜀汉和东吴则需要联合起来共同对抗曹魏。这种军事对峙持续了四十多年。\n </p>\n <p>\n 在文化方面,三国时期出现了许多杰出的文学家、艺术家和科学家。曹植的文学成就极高,诸葛亮的智慧成为后世楷模,东吴的航海技术领先世界。三国文化成为中国传统文化的重要组成部分。\n </p>\n <h1>\n 第六章 蜀汉政权的建立与发展\n </h1>\n <h2>\n 6.1 诸葛亮辅政\n </h2>\n <p>\n 章武三年(公元223年),刘备病逝于白帝城,临终前托孤于诸葛亮。刘备对诸葛亮说:“君才十倍于曹丕,必能安国,终定大事。若嗣子可辅,辅之;如其不才,君可自取。”诸葛亮感激涕零,表示“臣敢竭股肱之力,效忠贞之节,继之以死”。\n </p>\n <p>\n 诸葛亮被后主刘禅封为武乡侯,开府治事。实际上,诸葛亮成为蜀汉政权的最高执政者,总揽军政大权。他内修政治,外整军务,殚精竭虑,维护蜀汉政权的生存和发展。\n </p>\n <p>\n 在政治上,诸葛亮推行法治,注重选拔人才。他制定蜀科,依法治国,使得蜀汉政治较为清明。在经济上,诸葛亮重视农业生产,鼓励蚕桑,发展蜀锦等手工业。在军事上,诸葛亮训练军队,改进武器,\n </p>\n <page order="13" num="11"></page>\n <p>\n 提升蜀军的战斗力。\n </p>\n <h2>\n 6.2 蜀汉的内政与经济\n </h2>\n <p>\n 诸葛亮治理蜀汉期间,实行了一系列政治经济改革。在政治制度方面,诸葛亮完善了官制,建立了较为完整的官僚体系。他注重选拔人才,不看出身门第,只看才能德行。\n </p>\n <p>\n 在经济方面,诸葛亮推行屯田制,让士兵和民众开垦荒地,增加粮食产量。他重视水利建设,维护都江堰等水利工程,保障农业生产的顺利进行。蜀锦是蜀汉的重要特产,诸葛亮大力发展蜀锦生产,通过对外贸易换取曹魏和东吴的物资。\n </p>\n <p>\n 在民族政策方面,诸葛亮采取“以夷制夷”的策略,妥善处理与西南少数民族的关系。他七擒七纵孟获,获得了少数民族的拥护,确保了蜀汉后方的稳定。\n </p>\n <h2>\n 6.3 蜀汉的对外关系\n </h2>\n <p>\n 刘备去世后,诸葛亮派邓芝出使东吴,修复了孙刘联盟。邓芝不辱使命,说服孙权与蜀汉重新结盟,共同对抗曹魏。此后,蜀汉与东吴的关系一直保持良好,直到蜀汉灭亡。\n </p>\n <p>\n 对于曹魏,诸葛亮采取敌对态度,但同时也保持了表面的外交关系。他多次派人出使东吴和曹魏,了解两国情况,寻求有利的外交环境。\n </p>\n <p>\n 在处理与西南少数民族的关系方面,诸葛亮表现出了高超的政治智慧。他尊重少数民族的风俗习惯,任用当地首领为官,赢得了少数民族的拥护。这为蜀汉政权的稳定提供了重要保障。\n </p>\n <h2>\n 6.4 蜀汉的著名人物\n </h2>\n <p>\n 蜀汉政权人才济济,文武兼备。诸葛亮是蜀汉最重要的政治家和军事家,他上知天文,下知地理,足智多谋,被誉为“千古第一相”。\n </p>\n <p>\n 在文臣方面,蜀汉有法正、董和、蒋琬、费祎、姜维等人。法正善于奇谋,是刘备的得力谋士;蒋琬、费祎继承诸葛亮的事业,治理蜀汉;姜维是诸葛亮指定的接班人,继续坚持北伐。\n </p>\n <p>\n 在武将方面,蜀汉有关羽、张飞、赵云、马超、黄忠“五虎上将”,\n </p>\n <page order="14" num="12"></page>\n <p>\n 以及魏延、王平、廖化、向宠等将领。关羽、张飞是刘备的结义兄弟,英勇善战;赵云是刘备的护卫,多次救主于危难之中;马超、黄忠是后来归降的猛将。\n </p>\n <h2>\n 6.5 蜀汉的政治制度\n </h2>\n <p>\n 蜀汉的政体基本沿袭汉制,但也有所创新。刘禅虽然是皇帝,但实际权力掌握在丞相手中。诸葛亮开府治事,有自己的丞相府僚属,形成了与皇帝并列的行政体系。\n </p>\n <p>\n 蜀汉的官制分为中央和地方两级。中央有丞相、太尉、司徒、司空等官职,地方有州、郡、县三级。诸葛亮实行依法治蜀,制定了蜀科,作为基本法律。\n </p>\n <p>\n 蜀汉的选拔制度主要是察举和考试相结合。诸葛亮注重人才的选拔和培养,建立了完善的官员考核制度。他推荐的人才,大都德才兼备,为蜀汉的发展做出了贡献。\n </p>\n <h2>\n 6.6 蜀汉的社会文化\n </h2>\n <p>\n 蜀汉时期,成都成为西南地区的文化中心。诸葛亮重视教育,设立学校,培养人才。蜀汉的学术氛围浓厚,出现了许多著名的学者和文人。\n </p>\n <p>\n 蜀汉的文学艺术也有较高成就。陈寿的《三国志》是史学名著,记载了三国时期的历史。诸葛亮的前后《出师表》是千古名文,表达了他对国家的忠诚。\n </p>\n <p>\n 蜀汉的科技也有一定发展。诸葛亮发明了木牛流马、连弩等军事器械,提高了蜀军的战斗力。他还将先进的农业技术传授给西南少数民族,促进了当地经济社会的发展。\n </p>\n <h1>\n 第七章 曹魏政权的巩固与传承\n </h1>\n <h2>\n 7.1 曹丕的政治措施\n </h2>\n <p>\n 曹丕继位魏王后,实行了一系列政治改革来巩固自己的统治。他推行九品中正制,兼顾了士族和寒门的利益,暂时缓解了统治阶级内部的矛盾。这一制度成为魏晋南北朝时期的主要选官制度。\n </p>\n <p>\n 在军事方面,曹丕继续推行曹操的军事政策,加强中央对军队的控制。\n </p>\n <page order="15" num="13"></page>\n <p>\n 他多次率军伐吴,虽然没有取得重大胜利,但巩固了魏国在江淮地区的防线。\n </p>\n <p>\n 在经济方面,曹丕继续推行屯田制,重视农业生产。他下令兴修水利,鼓励垦荒,使得北方经济得到恢复和发展。曹丕还注重商业贸易,促进了物资流通。\n </p>\n <h2>\n 7.2 曹丕的对外战争\n </h2>\n <p>\n 黄初三年(公元222年),曹丕率军伐吴,发动了第一次濡须口之战。魏军与吴军相持数月,互有胜负,最终无功而返。\n </p>\n <p>\n 黄初五年(公元224年),曹丕第二次伐吴,这次他亲自率军进攻广陵(今江苏扬州),但因为长江水涨,无功而返。黄初六年(公元225年),曹丕第三次伐吴,再次失败。\n </p>\n <p>\n 三次伐吴的失败,使曹丕认识到短时间内无法消灭东吴。他调整了战略,将主要精力放在国内建设上,发展经济,整顿内政,为最终统一天下做准备。\n </p>\n <h2>\n 7.3 曹叡继位与辅政\n </h2>\n <p>\n 黄初七年(公元226年),曹丕病逝于洛阳,终年四十岁。曹丕死后,其子曹叡继位,是为魏明帝。曹叡继位时只有二十二岁,资历较浅,需要依靠老臣辅政。\n </p>\n <p>\n 曹叡继位后面临的主要问题是辅政大臣的选择。曹丕临终前指定曹真、\n </p>\n <p>\n 陈群、司马懿为辅政大臣,辅佐曹叡。这三人都是曹魏的重臣各有特长。\n </p>\n <p>\n 曹叡虽然年轻,但很有才能。他能够驾驭群臣,保持政局的稳定。在军事上,他多次击退蜀汉和东吴的进攻,保卫了魏国的安全。在内政上,他注重发展经济,使得魏国实力不断增强。\n </p>\n <h2>\n 7.4 司马懿的崛起\n </h2>\n <p>\n 司马懿(字仲达,河内温县人)是三国时期最重要的政治家和军事家之一,也是晋朝的奠基人。他出身于司马氏家族,是东汉末年的名士。\n </p>\n <p>\n 曹操时期,司马懿被征召为官,但长期得不到重用。曹丕继位后,司马懿开始受到重用,逐渐升任要职。曹叡时期,司马懿多次率军出征,\n </p>\n <page order="16" num="14"></page>\n <p>\n 屡立战功,成为魏国最重要的军事统帅之一。\n </p>\n <p>\n 司马懿曾多次抵御诸葛亮的北伐,功绩卓著。他采取的正确战略战术,有效地消耗了蜀汉的国力。司马懿还率军平定辽东,消灭了公孙渊的割据势力,为魏国解除了后顾之忧。\n </p>\n <h2>\n 7.5 曹魏后期的政治\n </h2>\n <p>\n 曹叡去世后,其养子曹芳继位,年仅八岁。曹爽和司马懿被任命为辅政大臣,两人共同执掌朝政。曹爽是曹真的儿子,代表曹氏宗亲的利益;司马懿代表士族集团的利益。\n </p>\n <p>\n 曹爽与司马懿之间存在尖锐的矛盾。曹爽排挤司马懿,将他明升暗降,剥夺了军权。司马懿假装生病,不问政事,暗中积蓄力量准备反击。\n </p>\n <p>\n 正始十年(公元249年),司马懿乘曹爽陪同曹芳出祭高平陵之机,发动政变,诛杀曹爽及其党羽。从此,司马家族掌控了曹魏的朝政大权,为后来的司马氏代魏建立了基础。\n </p>\n <h2>\n 7.6 曹魏的灭亡\n </h2>\n <p>\n 司马懿死后,其子司马师、司马昭继续执掌朝政。司马师废黜曹芳,改立曹奂为帝。司马昭弑杀魏帝曹髦,另立曹奂为帝。曹魏政权已经名存实亡。\n </p>\n <p>\n 咸熙二年(公元265年),司马昭之子司马炎代魏称帝,建立晋朝,是为晋武帝。曹魏政权至此灭亡。从曹丕称帝到曹魏灭亡,历时四十五年。\n </p>\n <p>\n 曹魏虽然灭亡了,但它为晋朝的统一奠定了基础。曹操、曹丕、曹叡祖孙三代经营北方,使得中原地区经济繁荣,社会稳定,为晋朝灭吴统一全国创造了条件。\n </p>\n <h1>\n 第八章 东吴政权的繁荣与衰落\n </h1>\n <h2>\n 8.1 孙权的统治政策\n </h2>\n <p>\n 孙权(字仲谋,吴郡富春人)是三国时期在位时间最长的君主之一。他从建安五年(公元200年)继承兄业,到太元二年(公元252年)去世,执政长达五十二年。\n </p>\n <p>\n 孙权善于用人,能够发挥各人的长处。他重用周瑜、鲁肃、吕蒙、\n </p>\n <page order="17" num="15"></page>\n <p>\n 陆逊等名将,形成了东吴的四大都督系统。在文臣方面,他重用张昭、顾雍、诸葛瑾等人,治理国家。\n </p>\n <p>\n 在经济方面,孙权大力发展江南经济,鼓励农民开垦荒地,推广先进的农业生产技术。他重视海上贸易,与辽东、东南亚等地有贸易往来。东吴的造船业和航海业在当时处于世界领先地位。\n </p>\n <h2>\n 8.2 东吴的对外扩张\n </h2>\n <p>\n 孙权在位期间,积极向外扩张领土。建安十三年(公元208年),东吴与刘备联军在赤壁击败曹操,解除了北方的威胁。此后,东吴开始向岭南地区扩张。\n </p>\n <p>\n 建安二十五年(公元220年),孙权派步骘率军平定岭南,占据了交州(今广东、广西、越南北部)。黄龙二年(公元230年),孙权派卫温、诸葛直率军一万出海,寻找夷洲(今台湾),虽然损失较大,但加强了对台湾的联系。\n </p>\n <p>\n 嘉禾六年(公元237年),东吴派陆胤率军平定海南岛的叛乱,将海南岛纳入东吴版图。东吴的疆域扩展到了极盛时期。\n </p>\n <h2>\n 8.3 东吴与蜀魏的关系\n </h2>\n <p>\n 东吴与蜀汉的关系经历了合作与冲突的过程。赤壁之战后,孙刘联盟共同抗曹,保持了较长时期的合作。但荆州问题一直是两国之间的矛盾焦点。\n </p>\n <p>\n 关羽失荆州后,刘备伐吴,夷陵之战爆发,东吴击败蜀汉。两败俱伤后,\n </p>\n <p>\n 双方重新修好。诸葛亮执政期间,蜀吴关系一直保持良好,共同对抗曹魏。\n </p>\n <p>\n 东吴与曹魏的关系则比较复杂。曹丕时期,东吴曾两次向魏称臣,接受魏国的封号。但孙权并不真正服从曹魏,只是利用魏国的支持来发展自己的势力。\n </p>\n <h2>\n 8.4 东吴的四大都督\n </h2>\n <p>\n 东吴历史上最著名的是四位都督:周瑜、鲁肃、吕蒙、陆逊。他们在不同的历史时期担任最高军事指挥官,为东吴的发展做出了重要贡献。\n </p>\n <p>\n 周瑜是东吴的开国元勋,他辅佐孙策平定江东,\n </p>\n <page order="18" num="16"></page>\n <p>\n 又在赤壁之战中击败曹操,奠定了东吴的基业。鲁肃是东吴的战略家,他主张联合刘备共同抗曹,为东吴制定了正确的战略方针。\n </p>\n <p>\n 吕蒙是东吴的名将,他白衣渡江,袭取荆州,杀死关羽,为东吴夺得了梦寐以求的荆州。陆逊是东吴后期的支柱,他火烧连营,击败刘备,又多次抵御曹魏的进攻,保卫了东吴的安全。\n </p>\n <h2>\n 8.5 东吴的经济与文化\n </h2>\n <p>\n 东吴时期,江南经济得到了快速发展。孙权推行一系列发展农业的措施,使得粮食产量大幅提高。江南的丝织业、制瓷业、造船业都有较大发展。\n </p>\n <p>\n 东吴的造船业在当时处于世界领先地位。东吴拥有当时世界上最庞大的船队,能够制造大型海船。东吴的航海家曾到达夷洲、澶洲等地,与东南亚诸国建立了贸易关系。\n </p>\n <p>\n 在文化方面,东吴出现了许多著名的学者和文人。虞翻、王朗、张温等人是当时的经学大师。东吴的书法、绘画艺术也有较高成就,对后世产生了深远影响。\n </p>\n <h2>\n 8.6 东吴的衰落与灭亡\n </h2>\n <p>\n 孙权去世后,东吴的政治开始混乱。孙亮的继位引发了内部的权力斗争,诸葛恪、孙峻、孙綝等人先后专权,政治腐败严重。\n </p>\n <p>\n 孙皓继位后,实行暴政,残害忠良,荒淫无道。他多次发动对晋的战争,但都以失败告终。天纪四年(公元280年),晋军南下,东吴灭亡。\n </p>\n <p>\n 从孙权称王到东吴灭亡,东吴历时五十九年。\n </p>\n <p>\n 东吴的灭亡标志着三国时代的结束。晋朝完成了对全国的统一,结束了自黄巾起义以来近一百年的分裂局面。\n </p>\n <h1>\n 第九章 诸葛亮北伐与三国相持\n </h1>\n <h2>\n 9.1 诸葛亮北伐的背景\n </h2>\n <p>\n 蜀汉建立后,诸葛亮制定了“北伐中原,复兴汉室”的战略方针。他认为,如果不主动出击,只会导致蜀汉与曹魏的差距越来越大,最终会被消灭。只有通过北伐,才能实现刘备“兴复汉室”的遗愿。\n </p>\n <p>\n 从客观条件看,北伐也具有一定的可行性。\n </p>\n <page order="19" num="17"></page>\n <p>\n 曹魏的主要敌人是蜀汉和东吴,需要两面作战。而蜀汉有汉中这个战略要地,可以威胁关中地区。诸葛亮认为,如果能够占领关中地区,就可以进而统一天下。\n </p>\n <p>\n 当然,北伐也面临着巨大的困难。蜀汉人口稀少,国力有限,难以支撑长期战争。从益州到关中道路险阻,运输困难。曹魏实力强大,不是轻易能够击败的。\n </p>\n <h2>\n 9.2 第一次北伐\n </h2>\n <p>\n 建兴六年(公元228年),诸葛亮发动了第一次北伐。他率军出祁山,攻击曹魏的陇右地区。蜀军进展顺利,天水、南安、安定三郡相继投降。\n </p>\n <p>\n 曹魏方面非常震惊,派出张郃率军抵御。诸葛亮派马谡驻守街亭,但马谡违反诸葛亮的部署,被张郃击败。街亭失守后,诸葛亮被迫退兵,第一次北伐失败。\n </p>\n <p>\n 第一次北伐虽然失败,但诸葛亮展示了自己的军事才能,也锻炼了蜀军。诸葛亮挥泪斩马谡,表明他执法严明,不徇私情。\n </p>\n <h2>\n 9.3 后续北伐\n </h2>\n <p>\n 建兴六年冬天,诸葛亮发动第二次北伐,攻击陈仓。但由于陈仓防守严密,蜀军久攻不下,最终退兵。建兴七年(公元229年),诸葛亮发动第三次北伐,攻占武都、阴平二郡。\n </p>\n <p>\n 建兴九年(公元231年),诸葛亮发动第四次北伐,包围祁山。司马懿率军抵御,但采取了守势,不与蜀军决战。诸葛亮因为粮尽退兵,\n </p>\n <p>\n 在退兵途中射杀了魏将张郃。\n </p>\n <p>\n 建兴十二年(公元234年),诸葛亮发动第五次北伐,这是他最后一次北伐。诸葛亮率军出斜谷,与司马懿相持于五丈原。诸葛亮积劳成疾,于同年八月病逝于五丈原,终年五十四岁。\n </p>\n <h2>\n 9.4 姜维北伐\n </h2>\n <p>\n 诸葛亮去世后,姜维继承了北伐的事业。姜维是蜀汉后期的军事统帅,他继承了诸葛亮的遗志,多次率军北伐。\n </p>\n <p>\n 从延熙十六年(公元253年)开始,姜维多次发动北伐战争,但胜少败多。\n </p>\n <page order="20" num="18"></page>\n <p>\n 蜀汉国力有限,无法支撑长期的战争。姜维的北伐虽然没有取得重大胜利,但也牵制了曹魏的兵力。\n </p>\n <p>\n 景耀六年(公元263年),曹魏发动灭蜀之战,钟会、邓艾率军进攻蜀汉。姜维在剑阁抵御钟会,但邓艾偷渡阴平,逼近成都。后主刘禅投降,蜀汉灭亡。姜维试图复国,但最终失败被杀。\n </p>\n <h2>\n 9.5 三国相持时期的战争\n </h2>\n <p>\n 诸葛亮去世后,三国进入了相持阶段。各方虽然时有战争,但都没有能力消灭对方。这种相持局面持续了四十多年。\n </p>\n <p>\n 在东线,曹魏与东吴之间战争不断。曹爽曾率军伐吴,但失败而归。司马懿父子也多次进攻东吴,但都没有取得决定性胜利。\n </p>\n <p>\n 在西线,蜀汉的北伐虽然失败,但有效地牵制了曹魏的兵力。曹魏需要部署大量军队防守西部边境,消耗了大量资源。\n </p>\n <h2>\n 9.6 三国相持时期的政治\n </h2>\n <p>\n 三国相持时期,各国内部都出现了一些政治问题。蜀汉方面,诸葛亮去世后,蒋琬、费祎先后执政,政治较为稳定。但后主刘禅宠信黄皓,朝廷政治开始腐败。\n </p>\n <p>\n 曹魏方面,司马氏逐渐掌控了朝政。司马懿、司马师、司马昭父子三人相继执掌大权,曹魏皇帝成为傀儡。曹魏后期的政治腐败严重,阶级矛盾尖锐。\n </p>\n <p>\n 东吴方面,孙权晚年立储问题处理不当,引发了严重的宫廷斗争。\n </p>\n <p>\n 孙皓继位后,政治更加腐败,民不聊生。这为东吴的灭亡埋下了伏笔。\n </p>\n <h2>\n 9.7 三国相持时期的经济\n </h2>\n <p>\n 三国相持时期,各国都比较注重发展经济。曹魏继续推行屯田制,中原地区的农业得到恢复。司马氏掌权后,实行了一些改革,促进了经济发展。\n </p>\n <p>\n 蜀汉在诸葛亮的治理下,经济有所发展。但蜀汉人口较少,国力有限,难以支撑长期的战争消耗。后期连年北伐,加重了民众的负担。\n </p>\n <p>\n 东吴的经济发展较快,江南地区的农业和商业都有较大发展。但东吴的赋税较重,民众负担较大,影响了经济的可持续发展。\n </p>\n <page order="21" num="19"></page>\n <h1>\n 第十章 三国归晋与历史终结\n </h1>\n <h2>\n 10.1 晋朝的建立\n </h2>\n <p>\n 司马懿发动高平陵政变后,司马氏逐渐掌控了曹魏的朝政大权。司马懿、司马师、司马昭父子三人相继执掌朝政,为代魏称帝做好了准备。\n </p>\n <p>\n 咸熙二年(公元265年),司马昭去世,其子司马炎继为晋王。同年十二月,司马炎代魏称帝,建立晋朝,是为晋武帝。晋朝定都洛阳,改元泰始。\n </p>\n <p>\n 晋武帝称帝后,追尊祖父司马懿为晋宣帝,父亲司马昭为晋文帝,伯父司马师为晋景帝。晋朝的建立,标志着三国时代的结束和中国历史上的西晋时期开始。\n </p>\n <h2>\n 10.2 晋灭蜀汉\n </h2>\n <p>\n 晋朝建立后,晋武帝开始准备统一天下。当时蜀汉已经衰落,后主刘禅宠信黄皓,朝廷政治腐败。姜维虽然多次北伐,但无功而返,国力消耗严重。\n </p>\n <p>\n 景耀六年(公元263年),晋武帝派钟会、邓艾率军伐蜀。钟会率主力进攻汉中,牵制姜维;邓艾率军偷渡阴平,直取成都。\n </p>\n <p>\n 姜维在剑阁抵御钟会,互有胜负。但邓艾偷渡阴平成功后,刘禅惊慌失措,不战而降。蜀汉灭亡,历时四十三年。姜维试图复国,但最终失败被杀。\n </p>\n <h2>\n 10.3 晋灭东吴\n </h2>\n <p>\n 蜀汉灭亡后,晋朝开始了灭吴的准备。晋武帝采纳羊祜的建议,积极准备灭吴战争。羊祜镇守荆州,与东吴名将陆抗相持,互有胜负。\n </p>\n <p>\n 羊祜去世后,杜预、张华等人继续推动灭吴战争。杜预镇守荆州,积极训练水军,准备渡江作战。天纪四年(公元280年),晋武帝下诏灭吴,派杜预、王浑率军进攻。\n </p>\n <p>\n 晋军分兵多路,全面进攻。王浑率军渡过长江,击败东吴主力。杜预率军攻占江陵,张悌率军渡江攻入建业。孙皓见大势已去,投降晋朝。东吴灭亡,历时五十九年。\n </p>\n <page order="22" num="20"></page>\n <h2>\n 10.4 三国归晋的历史意义\n </h2>\n <p>\n 三国归晋,结束了自黄巾起义以来近一百年的分裂局面,实现了中国的统一。这是中国历史上又一次重要的大统一,对中国社会的发展产生了深远影响。\n </p>\n <p>\n 晋朝的统一,为社会经济的恢复和发展创造了条件。战乱结束,人民得以休养生息,中原地区和江南地区都得到了开发。晋朝初期出现了“太康盛世”,经济繁荣,社会安定。\n </p>\n <p>\n 然而,晋朝的统一并没有持续太久。晋武帝死后,发生了“八王之乱”,中原地区陷入混乱。随后是“五胡乱华”,西晋灭亡,中国再次陷入分裂。\n </p>\n <h2>\n 10.5 三国时期的历史遗产\n </h2>\n <p>\n 三国时期虽然只有短短的四十多年,但留下了丰富的历史遗产。在政治制度方面,三国时期的选官制度、法律制度等对后世产生了影响。曹魏的九品中正制成为魏晋南北朝时期的主要选官制度。\n </p>\n <p>\n 在文学艺术方面,三国时期出现了许多杰出的人才。曹操、曹植父子是文学史上重要的人物,“建安风骨”成为中国文学的典范。诸葛亮的智慧成为后世推崇的楷模。\n </p>\n <p>\n 在军事方面,三国时期的许多战例成为军事教材。官渡之战、赤壁之战、夷陵之战等都是经典的以少胜多的战例,为后世军事家所借鉴。\n </p>\n <h2>\n 10.6 三国历史的后世影响\n </h2>\n <p>\n 三国历史对后世产生了深远影响。《三国演义》是中国的四大名著之一,塑造了许多深入人心的人物形象。诸葛亮、关羽、曹操、周瑜等人物成为家喻户晓的历史人物。\n </p>\n <p>\n 三国的故事在民间广为流传,形成了丰富的文化传统。桃园结义、借东风、空城计等故事成为人们茶余饭后的谈资。三国文化已经成为中国传统文化的重要组成部分。\n </p>\n <p>\n 在海外,三国文化也有广泛影响。日本、韩国、东南亚等地区都有三国故事的传播。三国文化成为中国软实力的重要组成部分,在世界范围内产生了影响。\n </p>\n <page order="23" num="21"></page>\n <h1>\n 附录一 三国主要人物简介\n </h1>\n <h2>\n 魏国主要人物\n </h2>\n <p>\n <strong>曹操</strong>(155年-220年),字孟德,沛国谯县人。三国时期最杰出的政治家、军事家、文学家。曹操挟天子以令诸侯,统一北方,为曹魏政权的建立奠定了基础。曹操还是杰出的文学家,与儿子曹丕、曹植并称“三曹”。\n </p>\n <p>\n <strong>曹丕</strong>(187年-226年),字子桓,曹操次子。220年代汉称帝,建立魏国,是为魏文帝。曹丕推行九品中正制,确立了魏晋南北朝时期的选官制度。\n </p>\n <p>\n <strong>曹叡</strong>(204年-239年),字元仲,曹丕之子。魏明帝,在位期间多次击退蜀汉和东吴的进攻,保卫了魏国的安全。\n </p>\n <p>\n <strong>司马懿</strong>(179年-251年),字仲达,河内温县人。三国时期最重要的政治家、军事家之一,晋朝的奠基人。司马懿辅佐曹魏四代,抵御诸葛亮北伐,平定辽东,最终掌握朝政大权。\n </p>\n <p>\n <strong>张辽</strong>(169年-222年),字文远,雁门马邑人。曹操麾下著名将领,合肥之战中大败孙权,威震江东。\n </p>\n <p>\n <strong>郭嘉</strong>(170年-207年),字奉孝,颍川阳翟人。曹操最重要的谋士之一,英年早逝,曹操曾感叹“郭奉孝在,不使孤至此”。\n </p>\n <h2>\n 蜀汉主要人物\n </h2>\n <p>\n <strong>刘备</strong>(161年-223年),字玄德,涿郡涿县人。汉景帝之后,\n </p>\n <p>\n 三国时期蜀汉政权的建立者。刘备以仁德著称,三顾茅庐请诸葛亮,形成三国鼎立的局面。\n </p>\n <p>\n <strong>诸葛亮</strong>(181年-234年),字孔明,琅琊阳都人。三国时期最杰出的政治家、军事家。诸葛亮辅佐刘备建立蜀汉,后又辅佐后主刘禅,实行依法治蜀,多次北伐。诸葛亮被誉为“千古第一相”。\n </p>\n <p>\n <strong>关羽</strong>(162年或160年-220年),字云长,河东解人。刘备的结义兄弟,蜀汉著名将领。关羽忠义无双,被后人尊为“武圣”。\n </p>\n <p>\n <strong>张飞</strong>(165年-221年),字益德,涿郡涿县人。刘备的结义兄弟,蜀汉著名将领。张飞勇猛异常,但性格暴躁。\n </p>\n <p>\n <strong>赵云</strong>(?-229年),字子龙,常山真定人。刘备的护卫,蜀汉著名将领。\n </p>\n <page order="24" num="22"></page>\n <p>\n 赵云英勇善战,多次救主于危难之中。\n </p>\n <p>\n <strong>姜维</strong>(202年-264年),字伯约,天水冀县人。诸葛亮之后的蜀汉军事统帅,继承诸葛亮北伐的事业,但最终失败被杀。\n </p>\n <h2>\n 东吴主要人物\n </h2>\n <p>\n <strong>孙权</strong>(182年-252年),字仲谋,吴郡富春人。三国时期东吴政权的建立者,在位五十三年,是三国时期在位时间最长的君主。\n </p>\n <p>\n <strong>周瑜</strong>(175年-210年),字公瑾,庐江舒县人。东吴开国元勋,赤壁之战中击败曹操,奠定东吴基业。\n </p>\n <p>\n <strong>鲁肃</strong>(172年-217年),字子敬,临淮东城人。东吴战略家,主张联合刘备共同抗曹,为东吴制定了正确的战略方针。\n </p>\n <p>\n <strong>吕蒙</strong>(178年-220年),字子明,汝南富陂人。东吴名将,白衣渡江袭取荆州,杀死关羽。\n </p>\n <p>\n <strong>陆逊</strong>(183年-245年),字伯言,吴郡吴县人。东吴后期支柱,火烧连营击败刘备,多次抵御曹魏进攻。\n </p>\n <p>\n <strong>张昭</strong>(156年-236年),字子布,彭城人。东吴重臣,孙策的托孤大臣之一,长期辅佐孙权。\n </p>\n <h1>\n 附录二 三国时期著名战役\n </h1>\n <h2>\n 官渡之战\n </h2>\n <p>\n 官渡之战发生在建安五年(公元200年),是曹操与袁绍之间决定北方归属的战争。曹操以少胜多,击败袁绍的十万大军,奠定了统一北方的基础。此战是三国时期最经典的以少胜多的战例之一。\n </p>\n <h2>\n 赤壁之战\n </h2>\n <p>\n 赤壁之战发生在建安十三年(公元208年),是孙刘联军与曹操大军之间的战争。孙刘联军在周瑜的指挥下,采用火攻,大败曹军,奠定了三国鼎立的格局。此战是中国古代军事史上最著名的战例之一。\n </p>\n <h2>\n 夷陵之战\n </h2>\n <p>\n 夷陵之战发生在章武二年(公元222年),是刘备伐吴的战争。\n </p>\n <page order="25" num="23"></page>\n <p>\n 陆逊采用火攻,大败刘备,蜀汉从此一蹶不振。此战与官渡之战、赤壁之战并称为三国三大战役。\n </p>\n <h2>\n 街亭之战\n </h2>\n <p>\n 街亭之战发生在建兴六年(公元228年),是诸葛亮第一次北伐中的关键战役。马谡违反诸葛亮的部署,被张郃击败,导致蜀军被迫退兵。此战成为诸葛亮挥泪斩马谡的典故。\n </p>\n <h2>\n 合肥之战\n </h2>\n <p>\n 合肥之战发生在建安二十年(公元215年),是孙权进攻曹操的战争。张辽以八百精兵大败孙权十万大军,差点活捉孙权。此战奠定了张辽“威震江东”的威名。\n </p>\n <h2>\n 石亭之战\n </h2>\n <p>\n 石亭之战发生在黄武七年(公元228年),是东吴与曹魏之间的战争。陆逊率军大败曹休,斩获万余人。此战巩固了东吴在江东的统治。\n </p>\n <h1>\n 附录三 三国疆域与行政区划\n </h1>\n <h2>\n 魏国疆域\n </h2>\n <p>\n 魏国占据北方中原地区,包括司隶、豫州、兖州、徐州、青州、冀州、幽州、并州、凉州、雍州等地区。魏国定都洛阳,后来迁都许昌,再迁回洛阳。魏国是三国中疆域最大、人口最多的政权。\n </p>\n <h2>\n 蜀汉疆域\n </h2>\n <p>\n 蜀汉占据益州和荆州部分地区,包括益州全境以及荆州的武陵、零陵、桂阳、长沙等郡。蜀汉定都成都。蜀汉是三国中疆域最小、人口最少的政权,但地势险要,易守难攻。\n </p>\n <h2>\n 东吴疆域\n </h2>\n <p>\n 东吴占据江东六郡以及荆州、扬州、交州等地,包括今江苏、浙江、安徽、江西、福建、广东、广西、海南以及越南北部等地区。东吴定都建业(今江苏南京)。东吴是三国中海岸线最长的政权,航海业发达。\n </p>\n <h2>\n 三国行政区划比较\n </h2>\n <page order="26" num="24"></page>\n <table class="iw-wyxd-table" data-iw-table="1">\n <thead>\n <tr class="iw-wyxd-tr">\n <th class="iw-wyxd-cell">\n 政权\n </th>\n <th class="iw-wyxd-cell">\n 都城\n </th>\n <th class="iw-wyxd-cell">\n 主要州郡\n </th>\n <th class="iw-wyxd-cell">\n 人口(估计)\n </th>\n </tr>\n </thead>\n <tbody>\n <tr class="iw-wyxd-tr">\n <td class="iw-wyxd-cell">\n 曹魏\n </td>\n <td class="iw-wyxd-cell">\n 洛阳/许昌\n </td>\n <td class="iw-wyxd-cell">\n 司隶、豫州、兖州等\n </td>\n <td class="iw-wyxd-cell">\n 约400万\n </td>\n </tr>\n <tr class="iw-wyxd-tr">\n <td class="iw-wyxd-cell">\n 蜀汉\n </td>\n <td class="iw-wyxd-cell">\n 成都\n </td>\n <td class="iw-wyxd-cell">\n 益州、荆州\n </td>\n <td class="iw-wyxd-cell">\n 约100万\n </td>\n </tr>\n <tr class="iw-wyxd-tr">\n <td class="iw-wyxd-cell">\n 东吴\n </td>\n <td class="iw-wyxd-cell">\n 建业\n </td>\n <td class="iw-wyxd-cell">\n 扬州、交州、荆州\n </td>\n <td class="iw-wyxd-cell">\n 约200万\n </td>\n </tr>\n </tbody>\n </table>\n <h2>\n 三国时期的地理概念\n </h2>\n <p>\n 三国时期的“州”与现代的省份概念不同,是一个较大的行政区划。三国时期的州数量比东汉时期有所减少,但每个州的管辖范围仍然很大。\n </p>\n <p>\n 三国时期,中原地区是经济最发达的地区,人口密集。江南地区虽然开发较晚,但在东吴的治理下,经济有了较大发展。西南地区地形复杂,交通不便,开发程度较低。\n </p>\n <h1>\n 结语\n </h1>\n <p>\n 三国时期是中国历史上一个非常重要的时期,从黄巾起义(184年)到东吴灭亡(280年),历时近百年。这段历史充满了英雄人物、经典战例和传奇故事,对后世产生了深远影响。\n </p>\n <p>\n 曹操、刘备、孙权三大枭雄在乱世中崛起各自建立了政权,形成了三国鼎立的局面。他们之间的政治斗争、军事较量、外交斡旋,构成了三国历史的主要内容。\n </p>\n <p>\n 诸葛亮、关羽、周瑜、司马懿等历史人物以其卓越的才能和高尚的品格,\n </p>\n <p>\n 成为后世楷模。他们的故事被后人传颂不衰,成为中国传统文化的重要组成部分。\n </p>\n <p>\n 《三国演义》是中国的四大名著之一,它以历史为素材,融入民间传说和文学创造,塑造了许多深入人心的人物形象。诸葛亮的多智近妖、关羽的忠义无双、曹操的奸雄形象,都对大众认知产生了深远影响。\n </p>\n <p>\n 三国历史虽然已经过去了一千多年,但它的影响仍在继续。三国文化已经成为中国文化的的重要组成部分,在文学、艺术、游戏、影视等各个领域都有广泛的应用。三国的故事将继续传承下去,影响着一代又一代的中国人。\n </p>\n <page order="27" num="25"></page>\n <p>\n 回顾三国历史,我们可以看到:在乱世中,人才是决定性的因素;\n </p>\n <p>\n 在竞争中,战略眼光至关重要;在治理中,民心向背决定了政权的兴衰。这些历史经验对于今天仍然具有借鉴意义。\n </p>\n <p style="text-align:center; margin-top:100px;">\n —— 完 ——\n </p>\n <page order="28" num="26"></page>\n </body>\n</html>'},loading:{type:Boolean,default:!1},errorMessage:{type:String,default:""},filename:{type:String,default:""}},emits:["close","refresh"],data:()=>({currentSlideIndex:0,pageTurnDirection:1,slides:[],isParsing:!1,parseErrorMessage:"",parsedHeadContent:"",slideHtmlCache:{},_vietualData:{success:!0,message:"提取成功",html_content:'<html>\n <head><meta charset="utf-8"></head>\n <body>\n <style>\n body{font-family:SimSun,宋体,serif;font-size:14pt;line-height:1.5;}h1{font-family:KaiTi,楷体,serif;font-size:22pt;color:#0000FF;font-weight:bold;}h2{font-family:SimHei,黑体,serif;font-size:16pt;color:#FF0000;font-weight:bold;}h3,h4,h5,h6{font-family:SimSun,宋体,serif;font-weight:bold;}table{border-collapse:collapse;width:100%;margin:.5em 0;}td,th{font-family:SimSun,宋体,serif;font-size:12pt;text-align:center;vertical-align:middle;border:1px solid #000;padding:4px 8px;}p{margin:.5em 0;}img,video{display:block;margin:0 auto;max-width:100%;}\n .wyxd-cover{aspect-ratio:610/959;display:flex;flex-direction:column;align-items:center;justify-content:center;}\n .wyxd-toc{padding:20px 20px;}\n .wyxd-toc .wyxd-toc-title{text-align:center;font-size:18pt;font-weight:bold;margin-bottom:30px;}\n .wyxd-toc ul{list-style:none;padding:0;}\n .wyxd-toc li{padding:8px 0;border-bottom:1px dashed #ccc;display:flex;justify-content:space-between;}\n .wyxd-toc .page-num{color:#888;}\n </style>\n <div class="wyxd-cover" style="background:linear-gradient(180deg,#fdfbf7 0%,#f5efe6 100%);">\n <div style="width:200px; height:2px; background:linear-gradient(90deg,transparent,#8B0000,transparent); margin-bottom:40px;">\n </div>\n <p style="font-size:48px; font-weight:bold; margin:0; color:#1a1a1a; font-family:SimSun,serif; letter-spacing:8px;">\n 三國歷史\n </p>\n <p style="font-size:20px; color:#8B0000; margin-top:25px; font-family:SimSun,serif; letter-spacing:4px;">\n 從黃巾起義到三分歸晉\n </p>\n <div style="width:300px; height:1px; background:#ccc; margin:30px auto;">\n </div>\n <p style="font-size:16px; color:#666; margin-top:25px; font-style:italic;">\n 東漢末年 • 群雄並起 • 三分天下\n </p>\n <p style="font-size:15px; color:#999; margin-top:15px;">\n 公元184年 — 280年\n </p>\n <div style="width:200px; height:2px; background:linear-gradient(90deg,transparent,#8B0000,transparent); margin-top:60px;">\n </div>\n </div>\n <page order="1" num="0"></page>\n <div class="wyxd-toc">\n <p class="wyxd-toc-title">\n 目 录\n </p>\n <ul>\n <li>\n <span>第一章 东汉末年与黄巾起义</span><span class="page-num">3</span>\n </li>\n <li>\n <span>第二章 群雄割据与董卓乱政</span><span class="page-num">5</span>\n </li>\n <li>\n <span>第三章 曹操崛起与官渡之战</span><span class="page-num">8</span>\n </li>\n <li>\n <span>第四章 孙刘联盟与赤壁之战</span><span class="page-num">12</span>\n </li>\n <li>\n <span>第五章 三分天下格局的形成</span><span class="page-num">16</span>\n </li>\n <li>\n <span>第六章 蜀汉政权的建立与发展</span><span class="page-num">20</span>\n </li>\n <li>\n <span>第七章 曹魏政权的巩固与传承</span><span class="page-num">24</span>\n </li>\n <li>\n <span>第八章 东吴政权的繁荣与衰落</span><span class="page-num">28</span>\n </li>\n <li>\n <span>第九章 诸葛亮北伐与三国相持</span><span class="page-num">32</span>\n </li>\n <li>\n <span>第十章 三国归晋与历史终结</span><span class="page-num">37</span>\n </li>\n <li>\n <span>附录 三国主要人物简介</span><span class="page-num">42</span>\n </li>\n <li>\n <span>附录 三国时期著名战役</span><span class="page-num">45</span>\n </li>\n <li>\n <span>附录 三国疆域与行政区划</span><span class="page-num">48</span>\n </li>\n </ul>\n </div>\n <page order="2" num="0"></page>',image_base_url:"/api/aippt/三"},touchStartX:0,touchStartY:0,touchEndX:0,touchEndY:0,slideAccents:["#2563eb","#23b9ad","#d7b56b","#4a93b8"],parseJobId:0,parseTimer:null,parseIdleTimer:null}),computed:{displayFilename(){return(this.filename||"未命名 AIPPT").replace(/\\/g,"/").split("/").pop()},totalSlides(){return Math.max(this.slides.length,1)},currentSlide(){return this.slides[this.currentSlideIndex]||this.slides[0]||null},currentSlideHtml(){if(!this.currentSlide)return"";const e=this.currentSlide.id||"slide-1";return this.slideHtmlCache[e]||(this.slideHtmlCache[e]=this.getSlideHtml(this.currentSlide)),this.slideHtmlCache[e]},currentPageNumber(){return Math.min(this.currentSlideIndex+1,this.totalSlides)},currentPageLabel(){return String(this.currentPageNumber).padStart(2,"0")},totalPageLabel(){return String(this.totalSlides).padStart(2,"0")},currentSlideTitle(){var e;return(null==(e=this.currentSlide)?void 0:e.title)||this.displayFilename||"AIPPT"},frameKey(){var e;return`${(null==(e=this.currentSlide)?void 0:e.id)||"empty"}-${this.pageTurnDirection}`},canPresent(){return!(!this.htmlContent||this.loading||this.errorMessage||this.isParsing||!this.currentSlideHtml)},canSwipe(){return this.slides.length>1},swipeHintText:()=>"← 左右滑动翻页 →",showEmptyState(){return!this.canPresent},emptyTitle(){return this.errorMessage?"AIPPT 加载失败":this.loading?"正在提取 AIPPT":this.isParsing?"正在准备第一页":this.parseErrorMessage?"AIPPT 解析失败":"暂无 AIPPT 内容"},emptyDescription(){return this.errorMessage?this.errorMessage:this.loading?"正在读取演示文件...":this.isParsing?"正在解析 PPT 内容...":this.parseErrorMessage?this.parseErrorMessage:"打开 .aippt 文件后会在这里显示预览。"},emptyIconText(){return this.errorMessage||this.parseErrorMessage?"⚠":this.loading||this.isParsing?"⏳":"📄"},slideStatusText(){var e;return this.errorMessage?"加载失败":this.loading?"正在提取...":this.isParsing?"正在准备...":this.htmlContent?(null==(e=this.currentSlide)?void 0:e.fullDocument)?"单页预览":`已识别 ${this.slides.length} 页`:"等待打开文件"}},watch:{visible(e){e&&this.$nextTick((()=>{this.loadVirtualData()}))},htmlContent:{immediate:!0,handler(e){e&&this.scheduleParseSlides(e)}},slides(){this.currentSlideIndex>this.slides.length-1&&(this.currentSlideIndex=0)}},mounted(){this.loadVirtualData()},beforeDestroy(){this.clearSchedules()},methods:{loadVirtualData(){!this.htmlContent&&this._vietualData.html_content&&this.scheduleParseSlides(this._vietualData.html_content)},handleTouchStart(e){const t=e.touches[0];this.touchStartX=t.clientX,this.touchStartY=t.clientY},handleTouchEnd(e){const t=e.changedTouches[0];this.touchEndX=t.clientX,this.touchEndY=t.clientY,this.handleSwipe()},handleSwipe(){const e=this.touchEndX-this.touchStartX,t=this.touchEndY-this.touchStartY;Math.abs(e)<Math.abs(t)||Math.abs(e)<50||(e>0?this.prevSlide():this.nextSlide())},getHeadContent(e=""){const t=String(e).match(/<head[^>]*>([\s\S]*?)<\/head>/i);return t?t[1]:""},getBodyContent(e=""){const t=String(e).match(/<body[^>]*>([\s\S]*?)<\/body>/i);return t?t[1]:e},getNodeTitle(e,t){const a=e.match(/<h[1-6][^>]*>([\s\S]*?)<\/h[1-6]>/i);if(a){return a[1].replace(/<[^>]+>/g,"").replace(/\s+/g," ").trim().slice(0,36)}return`第 ${t+1} 页`},isMeaningfulSlide:e=>e.replace(/<[^>]+>/g,"").replace(/\s+/g,"").length>8||/<img|<svg|<canvas|<video|<table/i.test(e),parseSlides(e=""){const a=String(e||"").trim();if(!a)return[];try{const e=this.getHeadContent(a),t=this.getBodyContent(a),n=/<page\s[^>]*\/?>/gi;if(0===(t.match(n)||[]).length){const a=t.split(/(?=<h1\b)/i).filter((e=>e.trim()));return a.length>1?a.map(((t,a)=>({id:`slide-${a+1}`,title:this.getNodeTitle(t,a),html:`<div class="ppt-slide">${t}</div>`,headContent:e,fullDocument:!1}))):[{id:"slide-1",title:this.displayFilename,html:`<div class="ppt-slide">${t}</div>`,headContent:e,fullDocument:!0}]}const l=t.split(n).filter((e=>e.trim())).map(((t,a)=>({id:`slide-${a+1}`,title:this.getNodeTitle(t,a),html:`<div class="ppt-slide">${t.trim()}</div>`,headContent:e,fullDocument:!1}))),o=l.filter((e=>this.isMeaningfulSlide(e.html)));return o.length>0?o:l}catch(n){return t("warn","at pages/text/IntuitiveAipptViewer.vue:346","[AIPPT] slide parse failed:",n),this.parseErrorMessage=n.message||"AIPPT 解析失败",[{id:"slide-1",title:this.displayFilename,html:`<div class="ppt-slide">${a}</div>`,headContent:this.getHeadContent(a),fullDocument:!0}]}},getSlideHtml(e){if(!e)return"";return`\n\t\t\t\t\t<div style="width:100%;background:#fff;padding:16rpx;box-sizing:border-box;min-height:100%;">\n\t\t\t\t\t\t${e.headContent?`<style>${e.headContent}</style>`:""}\n\t\t\t\t\t\t${e.html||""}\n\t\t\t\t\t</div>\n\t\t\t\t`},clearSchedules(){this.parseTimer&&(clearTimeout(this.parseTimer),this.parseTimer=null),this.parseIdleTimer&&(clearTimeout(this.parseIdleTimer),this.parseIdleTimer=null)},scheduleParseSlides(e=""){const a=String(e||""),n=++this.parseJobId;if(this.clearSchedules(),this.slideHtmlCache={},this.currentSlideIndex=0,this.parseErrorMessage="",!a.trim())return this.isParsing=!1,this.parsedHeadContent="",void(this.slides=[]);this.isParsing=!0,this.parsedHeadContent=this.getHeadContent(a),this.slides=[],this.parseTimer=setTimeout((()=>{var e;if(n===this.parseJobId)try{const t=this.parseSlides(a);if(n!==this.parseJobId)return;this.slides=t,this.parsedHeadContent=(null==(e=t[0])?void 0:e.headContent)||this.parsedHeadContent}catch(l){t("error","at pages/text/IntuitiveAipptViewer.vue:409","[AIPPT] parse error:",l)}finally{n===this.parseJobId&&(this.isParsing=!1)}}),100)},pulseStage(){this.pageTurnDirection=this.pageTurnDirection>=0?1:-1},goToSlide(e){if(!this.canPresent)return;const t=Math.max(0,Math.min(Number(e)||0,this.slides.length-1));t!==this.currentSlideIndex&&(this.pageTurnDirection=t>=this.currentSlideIndex?1:-1,this.currentSlideIndex=t,this.pulseStage())},prevSlide(){this.goToSlide(this.currentSlideIndex-1)},nextSlide(){this.goToSlide(this.currentSlideIndex+1)},onRefresh(){this.$emit("refresh")},onClose(){this.$emit("close")},exposedNextSlide(){this.nextSlide()},exposedPrevSlide(){this.prevSlide()}}},[["render",function(t,a,n,l,o,s){return e.withDirectives((e.openBlock(),e.createElementBlock("view",{class:"ia-root",onTouchstart:a[4]||(a[4]=(...e)=>s.handleTouchStart&&s.handleTouchStart(...e)),onTouchend:a[5]||(a[5]=(...e)=>s.handleTouchEnd&&s.handleTouchEnd(...e))},[e.createElementVNode("view",{class:"ia-toolbar"},[e.createElementVNode("view",{class:"ia-title"},[e.createElementVNode("text",{class:"ia-badge"},"PPT"),e.createElementVNode("view",{class:"ia-title-copy"},[e.createElementVNode("text",{class:"ia-title-strong"},e.toDisplayString(s.displayFilename),1),e.createElementVNode("text",{class:"ia-title-em"},e.toDisplayString(s.slideStatusText),1)])]),e.createElementVNode("view",{class:"ia-actions"},[e.createElementVNode("view",{class:"ia-icon-btn",onClick:a[0]||(a[0]=(...e)=>s.onRefresh&&s.onRefresh(...e))},[e.createElementVNode("text",{class:"ia-icon"},"↻")]),e.createElementVNode("view",{class:"ia-icon-btn ia-close-btn",onClick:a[1]||(a[1]=(...e)=>s.onClose&&s.onClose(...e))},[e.createElementVNode("text",{class:"ia-icon"},"✕")])])]),e.createElementVNode("view",{class:"ia-canvas"},[s.showEmptyState?(e.openBlock(),e.createElementBlock("view",{key:0,class:e.normalizeClass(["ia-empty",{"is-loading":n.loading||o.isParsing,"is-error":!!n.errorMessage}])},[e.createElementVNode("text",{class:"ia-empty-icon"},e.toDisplayString(s.emptyIconText),1),e.createElementVNode("text",{class:"ia-empty-title"},e.toDisplayString(s.emptyTitle),1),e.createElementVNode("text",{class:"ia-empty-desc"},e.toDisplayString(s.emptyDescription),1)],2)):(e.openBlock(),e.createElementBlock("view",{key:1,class:"ia-slide-area"},[(e.openBlock(),e.createElementBlock("view",{class:"ia-frame-shell",key:s.frameKey},[e.createElementVNode("scroll-view",{class:"ia-frame-scroll","scroll-y":"","show-scrollbar":!1},[e.createElementVNode("view",{class:"ia-frame",innerHTML:s.currentSlideHtml},null,8,["innerHTML"])])])),s.canPresent&&o.slides.length>1?(e.openBlock(),e.createElementBlock("scroll-view",{key:0,class:"ia-thumb-strip","scroll-x":"","show-scrollbar":!1,"scroll-into-view":"thumb-"+o.currentSlideIndex},[e.createElementVNode("view",{class:"ia-thumb-list"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(o.slides,((t,a)=>(e.openBlock(),e.createElementBlock("view",{key:t.id,id:"thumb-"+a,class:e.normalizeClass(["ia-thumb-item",{active:a===o.currentSlideIndex}]),onClick:e=>s.goToSlide(a)},[e.createElementVNode("text",{class:"ia-thumb-num"},e.toDisplayString(String(a+1).padStart(2,"0")),1),e.createElementVNode("text",{class:"ia-thumb-title"},e.toDisplayString(t.title),1)],10,["id","onClick"])))),128))])],8,["scroll-into-view"])):e.createCommentVNode("",!0)]))]),s.canPresent?(e.openBlock(),e.createElementBlock("view",{key:0,class:"ia-pager"},[e.createElementVNode("view",{class:"ia-pager-shell"},[e.createElementVNode("view",{class:e.normalizeClass(["ia-page-btn",{disabled:o.currentSlideIndex<=0}]),onClick:a[2]||(a[2]=(...e)=>s.prevSlide&&s.prevSlide(...e))},[e.createElementVNode("text",{class:"ia-nav-icon"},"❮")],2),e.createElementVNode("view",{class:"ia-page-count"},[e.createElementVNode("text",{class:"ia-current-page"},e.toDisplayString(s.currentPageLabel),1),e.createElementVNode("text",{class:"ia-page-divider"},"/"),e.createElementVNode("text",{class:"ia-total-page"},e.toDisplayString(s.totalPageLabel),1)]),e.createElementVNode("view",{class:e.normalizeClass(["ia-page-btn ia-next-btn",{disabled:o.currentSlideIndex>=s.totalSlides-1}]),onClick:a[3]||(a[3]=(...e)=>s.nextSlide&&s.nextSlide(...e))},[e.createElementVNode("text",{class:"ia-nav-icon"},"❯")],2)])])):e.createCommentVNode("",!0)],544)),[[e.vShow,n.visible]])}],["__scopeId","data-v-ed3c3ae8"]]);__definePage("pages/Login/Login",N),__definePage("pages/Chat/Chat",ge),__definePage("pages/WorkSpace/WorkSpace",fe),__definePage("pages/UserProfileModal/UserProfileModal",we),__definePage("pages/ContactPages/ContactPages",ke),__definePage("pages/WorkSpace/TemplateSpace/TemplateSpace",ye),__definePage("pages/CloudDatabase/CloudDatabase",Ee),__definePage("pages/CloudDbDetail/CloudDbDetail",Ce),__definePage("pages/text/text",Ne),__definePage("pages/text/IntuitiveAipptViewer",Ve);const be={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:_e,Vuex:Be,Pinia:Se}=function(){const t=e.createVueApp(be),a=function(){const t=e.effectScope(!0),a=t.run((()=>e.ref({})));let n=[],l=[];const o=e.markRaw({install(e){L(o),o._a=e,e.provide(z,o),e.config.globalProperties.$pinia=o,l.forEach((e=>n.push(e))),l=[]},use(e){return this._a?n.push(e):l.push(e),this},_p:n,_a:null,_e:t,_s:new Map,state:a});return o}();return t.use(a),{app:t,pinia:a}}();uni.Vuex=Be,uni.Pinia=Se,_e.provide("__globalStyles",__uniConfig.styles),_e._component.mpType="app",_e._component.render=()=>{},_e.mount("#app")}(Vue);
|