Files
phone-app------test1-/unpackage/dist/build/app-plus/app-service.js
2026-07-24 16:56:07 +08:00

8 lines
292 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(e){const t=this.constructor;return this.then((a=>t.resolve(e()).then((()=>a))),(a=>t.resolve(e()).then((()=>{throw a}))))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){const e=uni.requireGlobal();ArrayBuffer=e.ArrayBuffer,Int8Array=e.Int8Array,Uint8Array=e.Uint8Array,Uint8ClampedArray=e.Uint8ClampedArray,Int16Array=e.Int16Array,Uint16Array=e.Uint16Array,Int32Array=e.Int32Array,Uint32Array=e.Uint32Array,Float32Array=e.Float32Array,Float64Array=e.Float64Array,BigInt64Array=e.BigInt64Array,BigUint64Array=e.BigUint64Array}uni.restoreGlobal&&uni.restoreGlobal(Vue,weex,plus,setTimeout,clearTimeout,setInterval,clearInterval),function(e){"use strict";function t(e,t,...a){uni.__log__?uni.__log__(e,t,...a):console[e].apply(console,[...a,t])}function a(e,t){return"string"==typeof e?t:e}const n=(t,a=0)=>(a,n=e.getCurrentInstance())=>{!e.isInSSRComponentSetup&&e.injectHook(t,a,n)},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","用户IdUserId",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,"&quot;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}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,"&#95;").replace(/\*/g,"&#42;"),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,"&#95;").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,"&lt;").replace(/>/g,"&gt;"))).replace(/<\|[\w]+?\|>/g,(e=>e.replace(/</g,"&lt;").replace(/>/g,"&gt;"))),t||a){return'<h2 style="color: red; font-weight: bold;">表单仅预览,不可操作!!!</h2>'+n}return n},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,"&#95;").replace(/\*/g,"&#42;");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,"&#95;").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,"&lt;").replace(/>/g,"&gt;"))).replace(/<\|[\w]+?\|>/g,(e=>e.replace(/</g,"&lt;").replace(/>/g,"&gt;"))),t||a){return'<h2 style="color: red; font-weight: bold;">表单仅预览,不可操作!!!</h2>'+n}return n},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);