@@ -293,6 +302,7 @@
watch
} from 'vue';
import {
+ onLoad,
onShow,
onUnload
} from '@dcloudio/uni-app';
@@ -356,6 +366,13 @@
// 聊天类型(ai,好友,群聊)
const ChatType = ref(0)
+ // WYXD 关联数据(从 WorkSpace 的「AI修改」进入时携带)
+ const wyxdWorkspaceId = ref('')
+ const wyxdFilePath = ref('')
+ const wyxdFileName = ref('')
+ const wyxdUserToken = ref('')
+ const hasWyxdFile = ref(false)
+
// marked.setOptions({
// breaks: true, // 自动把换行符转成
换行
@@ -621,6 +638,17 @@
})
}
+ // 跳转到 WYXD 查看器(强制重新下载,不走缓存)
+ const goWyxdViewer = () => {
+ uni.navigateTo({
+ url: '/pages/WYXD/WYXD?workspaceId=' + encodeURIComponent(wyxdWorkspaceId.value)
+ + '&filePath=' + encodeURIComponent(wyxdFilePath.value)
+ + '&fileName=' + encodeURIComponent(wyxdFileName.value)
+ + '&userToken=' + encodeURIComponent(wyxdUserToken.value)
+ + '&forceDownload=1'
+ })
+ }
+
// 跳转到云端数据库
const goCloudDatabase = () => {
// 保存当前会话id,确保从工作区返回时能恢复
@@ -1480,6 +1508,7 @@
if (oldId && oldId !== newId) {
isLoadingMessages.value = true
allmessages.value = []
+ hasWyxdFile.value = false
}
switch (ChatType.value) {
case 0:
@@ -1503,6 +1532,17 @@
immediate: true
})
+ // 接收 WYXD 参数(从工作区「AI修改」进入时由 navigateTo 传入)
+ onLoad((options) => {
+ if (options.wyxdFilePath) {
+ wyxdWorkspaceId.value = options.wyxdWorkspaceId ? decodeURIComponent(options.wyxdWorkspaceId) : ''
+ wyxdFilePath.value = decodeURIComponent(options.wyxdFilePath)
+ wyxdFileName.value = options.wyxdFileName ? decodeURIComponent(options.wyxdFileName) : '未命名文档'
+ wyxdUserToken.value = options.wyxdUserToken ? decodeURIComponent(options.wyxdUserToken) : ''
+ hasWyxdFile.value = true
+ }
+ })
+
onMounted(() => {
// currentSessionId.value = getCurrentSessionId()
})
diff --git a/pages/WYXD/WYXD.vue b/pages/WYXD/WYXD.vue
index 81dd446..2f78bf9 100644
--- a/pages/WYXD/WYXD.vue
+++ b/pages/WYXD/WYXD.vue
@@ -188,7 +188,8 @@ onLoad((options) => {
userToken: userToken.value
})
- if (isWyxdCached(workspaceId.value, filePath.value)) {
+ // forceDownload 强制重新下载不走缓存
+ if (options.forceDownload !== '1' && isWyxdCached(workspaceId.value, filePath.value)) {
loadFromCache()
} else {
startDownload()
diff --git a/pages/WorkSpace/WorkSpace.vue b/pages/WorkSpace/WorkSpace.vue
index 13b431b..9477c83 100644
--- a/pages/WorkSpace/WorkSpace.vue
+++ b/pages/WorkSpace/WorkSpace.vue
@@ -284,20 +284,35 @@
const handleLongPress = (folder) => {
if (isSelectFolder.value) return;
const isWyxd = folder.name && folder.name.toLowerCase().endsWith('.wyxd');
- const itemList = isWyxd ? ['下载', '删除', 'WYXD查看器'] : ['下载', '删除'];
+ const itemList = isWyxd ? ['下载', '删除', 'WYXD查看器', 'AI修改'] : ['下载', '删除'];
uni.showActionSheet({
+ title: folder.name,
itemList: itemList,
success: (res) => {
- switch (res.tapIndex) {
- case 0:
- handleDownload(folder);
- break;
- case 1:
- handleDelete(folder);
- break;
- case 2:
- if (isWyxd) openWyxdViewer(folder);
- break;
+ if (isWyxd) {
+ switch (res.tapIndex) {
+ case 0:
+ handleDownload(folder);
+ break;
+ case 1:
+ handleDelete(folder);
+ break;
+ case 2:
+ openWyxdViewer(folder);
+ break;
+ case 3: // 'AI修改',
+ handleAiModify(folder);
+ break;
+ }
+ } else {
+ switch (res.tapIndex) {
+ case 0:
+ handleDownload(folder);
+ break;
+ case 1:
+ handleDelete(folder);
+ break;
+ }
}
}
})
@@ -472,6 +487,17 @@
});
};
+ // AI修改入口:跳转对话页并传入 WYXD 信息
+ const handleAiModify = (folder) => {
+ const filePath = folder.path.startsWith('./') ? folder.path.slice(2) : folder.path;
+ uni.navigateTo({
+ url: '/pages/Chat/Chat?wyxdWorkspaceId=' + encodeURIComponent(workspaceId.value)
+ + '&wyxdFilePath=' + encodeURIComponent(filePath)
+ + '&wyxdFileName=' + encodeURIComponent(folder.name)
+ + '&wyxdUserToken=' + encodeURIComponent(UserToken.value)
+ });
+ };
+
// 删除
const handleDelete = (folder) => {
uni.showModal({
diff --git a/unpackage/dist/build/app-plus/app-config-service.js b/unpackage/dist/build/app-plus/app-config-service.js
index 7333a4e..a92dbeb 100644
--- a/unpackage/dist/build/app-plus/app-config-service.js
+++ b/unpackage/dist/build/app-plus/app-config-service.js
@@ -1,8 +1,8 @@
;(function(){
let u=void 0,isReady=false,onReadyCallbacks=[],isServiceReady=false,onServiceReadyCallbacks=[];
- const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"uni-app","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"test1","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"5.07","entryPagePath":"pages/Login/Login","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}};
- const __uniRoutes = [{"path":"pages/Login/Login","meta":{"isQuit":true,"isEntry":true,"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"登录页面","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/Chat/Chat","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"聊天页面(主页面)","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/WorkSpace/WorkSpace","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"工作区文件管理","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/UserProfileModal/UserProfileModal","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/ContactPages/ContactPages","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/WorkSpace/TemplateSpace/TemplateSpace","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/CloudDatabase/CloudDatabase","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"云端数据","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/CloudDbDetail/CloudDbDetail","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"数据库详情","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/text/text","meta":{"navigationBar":{"titleText":"","type":"default"},"isNVue":false}},{"path":"pages/text/IntuitiveAipptViewer","meta":{"navigationBar":{"titleText":"","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute));
+ const __uniConfig = {"pages":[],"globalStyle":{"backgroundColor":"#F8F8F8","navigationBar":{"backgroundColor":"#F8F8F8","titleText":"uni-app","type":"default","titleColor":"#000000"},"isNVue":false},"nvue":{"compiler":"uni-app","styleCompiler":"uni-app","flex-direction":"column"},"renderer":"auto","appname":"宇恒一号","splashscreen":{"alwaysShowBeforeRender":true,"autoclose":true},"compilerVersion":"5.07","entryPagePath":"pages/Login/Login","entryPageQuery":"","realEntryPagePath":"","networkTimeout":{"request":60000,"connectSocket":60000,"uploadFile":60000,"downloadFile":60000},"locales":{},"darkmode":false,"themeConfig":{}};
+ const __uniRoutes = [{"path":"pages/Login/Login","meta":{"isQuit":true,"isEntry":true,"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"登录页面","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/Chat/Chat","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"聊天页面(主页面)","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/WorkSpace/WorkSpace","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"工作区文件管理","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/UserProfileModal/UserProfileModal","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/ContactPages/ContactPages","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/WorkSpace/TemplateSpace/TemplateSpace","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/CloudDatabase/CloudDatabase","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"云端数据","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/CloudDbDetail/CloudDbDetail","meta":{"titleNView":false,"bounce":"none","softinputMode":"adjustResize","navigationBar":{"titleText":"数据库详情","style":"custom","type":"default"},"isNVue":false}},{"path":"pages/text/text","meta":{"navigationBar":{"titleText":"","type":"default"},"isNVue":false}},{"path":"pages/text/IntuitiveAipptViewer","meta":{"navigationBar":{"titleText":"","type":"default"},"isNVue":false}},{"path":"pages/WYXD/WYXD","meta":{"titleNView":false,"bounce":"none","navigationBar":{"titleText":"","style":"custom","type":"default"},"isNVue":false}}].map(uniRoute=>(uniRoute.meta.route=uniRoute.path,__uniConfig.pages.push(uniRoute.path),uniRoute.path='/'+uniRoute.path,uniRoute));
__uniConfig.styles=[];//styles
__uniConfig.onReady=function(callback){if(__uniConfig.ready){callback()}else{onReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"ready",{get:function(){return isReady},set:function(val){isReady=val;if(!isReady){return}const callbacks=onReadyCallbacks.slice(0);onReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
__uniConfig.onServiceReady=function(callback){if(__uniConfig.serviceReady){callback()}else{onServiceReadyCallbacks.push(callback)}};Object.defineProperty(__uniConfig,"serviceReady",{get:function(){return isServiceReady},set:function(val){isServiceReady=val;if(!isServiceReady){return}const callbacks=onServiceReadyCallbacks.slice(0);onServiceReadyCallbacks.length=0;callbacks.forEach(function(callback){callback()})}});
diff --git a/unpackage/dist/build/app-plus/app-service.js b/unpackage/dist/build/app-plus/app-service.js
index 41c8bd9..1b4beb1 100644
--- a/unpackage/dist/build/app-plus/app-service.js
+++ b/unpackage/dist/build/app-plus/app-service.js
@@ -1,7 +1,18 @@
-if("undefined"==typeof Promise||Promise.prototype.finally||(Promise.prototype.finally=function(e){const t=this.constructor;return this.then((a=>t.resolve(e()).then((()=>a))),(a=>t.resolve(e()).then((()=>{throw a}))))}),"undefined"!=typeof uni&&uni&&uni.requireGlobal){const e=uni.requireGlobal();ArrayBuffer=e.ArrayBuffer,Int8Array=e.Int8Array,Uint8Array=e.Uint8Array,Uint8ClampedArray=e.Uint8ClampedArray,Int16Array=e.Int16Array,Uint16Array=e.Uint16Array,Int32Array=e.Int32Array,Uint32Array=e.Uint32Array,Float32Array=e.Float32Array,Float64Array=e.Float64Array,BigInt64Array=e.BigInt64Array,BigUint64Array=e.BigUint64Array}uni.restoreGlobal&&uni.restoreGlobal(Vue,weex,plus,setTimeout,clearTimeout,setInterval,clearInterval),function(e){"use strict";function t(e,t,...a){uni.__log__?uni.__log__(e,t,...a):console[e].apply(console,[...a,t])}function a(e,t){return"string"==typeof e?t:e}const n=(t,a=0)=>(a,n=e.getCurrentInstance())=>{!e.isInSSRComponentSetup&&e.injectHook(t,a,n)},l=n("onShow",3),o=n("onUnload",2),s="https://cloud.yuxindazhineng.com",i=async e=>new Promise(((t,a)=>{uni.request({url:`${s}/get_user_conversations`,method:"POST",data:{access_token:e},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const a=e.data.conversations;t(a)}else a(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})),c=async(e,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/get_conversation_messages`,method:"POST",data:{access_token:e,login_type:"phone",conversation_id:a},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const a=e.data;if(a){t("log","at utils/cloud-api.js:93","工作区id为:",a.workspace_id||"(无)"),a.workspace_id&&uni.setStorageSync("workspace_id",a.workspace_id);const e=(a.messages||[]).filter((e=>"tool"!==e.role));n(e)}else{const t=e.data.error||"获取消息出错啦";l(t)}}else l(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";l(t)}})})),r=async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/create_workspace`,method:"POST",data:{access_token:e,name:t},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data.workspace_id;if(t)a(t);else{const t=e.data.error||"创建工作区id出错啦";n(t)}}else n(`创建工作区id失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),u=async(e,t,a,n)=>new Promise(((l,o)=>{uni.request({url:`${s}/create_conversation`,method:"POST",data:{access_token:e,workspace_id:t,title:a,sender:n},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data.conversation_id;if(t)l(t);else{const t=e.data.error||"创建新对话id出错啦";o(t)}}else o(`创建新对话失败:${e.statusCode}`)}})})),d=async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/delete_conversation`,method:"POST",data:{access_token:e,conversation_ids:t},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)a(t.message);else{const e=t.failed_ids.error||"删除对话出错啦";n(e)}}else n(`删除对话失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),p=async e=>new Promise(((t,a)=>{uni.request({url:`${s}/get_user_info`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e},success:e=>{var n,l;if(200===e.statusCode){const o=e.data;if(null==o?void 0:o._id)uni.setStorageSync("userId",o._id),t(o);else{const e=(null==(l=null==(n=null==o?void 0:o.detail)?void 0:n[0])?void 0:l.msg)||"获取用户信息出错啦";a(e)}}else a(`获取用户信息失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})),m=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/get_user_avatar`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,user_ids:t},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)a(t.users);else{const e=(null==t?void 0:t.error)||"获取用户头像出错啦";n(e)}}else n(`获取用户头像失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),v=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/search_users`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,keyword:t},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)a(t.users);else{const e=(null==t?void 0:t.error)||"通过用户名或邮箱来去查询用户出错啦";n(e)}}else n(`通过用户名或邮箱来去查询用户失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),h=(e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/cloud_api/phone/workspace/delete`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspaces_id:t,file_path:a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"删除工作区文件出错啦";l(e)}}else l(`删除工作区文件失败:${e.statusCode}`)}})})),g=(e,t,a)=>new Promise(((n,l)=>{uni.request({url:`${s}/cloud_api/phone/workspace/create`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspaces_id:t,dir_path:a},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)n(t.message);else{const e=(null==t?void 0:t.error)||"创建工作区文件夹出错啦";l(e)}}else l(`创建工作区文件夹失败:${e.statusCode}`)}})})),f=(e,t,a="/",n="")=>new Promise(((l,o)=>{uni.request({url:`${s}/cloud_api/file/list`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,path:a,type:t,team_id:n},success:e=>{if(200===e.statusCode){const t=e.data;if(t.success)l(t.data);else{const e=(null==t?void 0:t.error)||"获取工作区文件目录出错啦";o(e)}}else o(`获取工作区文件目录失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})),w=async e=>new Promise(((t,a)=>{uni.request({url:`${s}/cloud_api/team/list`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_name:""},success:e=>{if(200===e.statusCode){const n=e.data;if(n.success){const e=n.teams.slice(1);t(e)}else{const t=e.data.error||"获取用户可访问的团队列表出错啦";a(t)}}else a(`获取用户可访问的团队列表失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";a(t)}})})),k=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/cloud_api/team/get_all_member`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,team_id:t},success:e=>{var t;if(200===e.statusCode){const l=e.data;if(l.success){const e=(null==(t=l.team)?void 0:t.result)||[];a(e)}else{const e=(null==l?void 0:l.error)||"获取团队全部成员出错啦";n(e)}}else n(`获取团队全部成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),y=(e,t,a,n)=>new Promise(((l,o)=>{const i={access_token:e,database_id:t};"user_id"===a?i.user_id=n:"team_id"===a&&(i.team_id=n),uni.request({url:`${s}/cloud_api/database/permission/info`,method:"POST",data:i,header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data;if(null==t?void 0:t.success)l(t.data);else if(Array.isArray(t))l(t);else{const e=(null==t?void 0:t.error)||"查看 个人/团队 数据库权限信息出错啦";o(e)}}else o(`查看 个人/团队 数据库权限信息失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})),E=(e,a,n)=>new Promise(((l,o)=>{uni.request({url:`${s}/cloud_api/phone/conversation/message/download`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e,workspace_id:a,url:n},success:e=>{if(200===e.statusCode){const a=e.data;if(t("log","at utils/cloud-api.js:1703",a),a.local_success)l(a.url||a.download_url||a.data||a);else{o("下载消息文件出错啦")}}else o(`下载消息文件失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})),C=(e,t)=>{const a=e.__vccOpts||e;for(const[n,l]of t)a[n]=l;return a},N=C({__name:"Login",setup(a){const n=e.ref(""),l=e.ref(!1),o=e.ref(!1),i=()=>{l.value=!0,f.value=!1},c=()=>{l.value=!1},r=()=>{},u=e.ref(""),d=e.ref(!1),p=e.ref(!1),m=()=>{d.value=!0,f.value=!1},v=()=>{d.value=!1},h=e.reactive({username:e.computed((()=>n.value)),password:e.computed((()=>u.value)),remember:!0}),g=e.ref(!1),f=e.ref(!1),w=async()=>{if(k(),!f.value){g.value=!0;try{t("log","at pages/Login/Login.vue:119","有返回token:",await(async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${s}/login`,method:"POST",data:{username:e,password:t,login_type:"phone"},header:{"Content-Type":"application/json"},success:e=>{if(200===e.statusCode){const t=e.data.access_token;if(t)uni.setStorageSync("token",t),a(t);else{const t=e.data.error||"检查用户名和密码";n(t)}}else String(e.statusCode).startsWith("5")?n({serverError:!0,code:e.statusCode,message:"服务器升级中,请稍后再试"}):n(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})))(n.value,u.value)),y(),uni.reLaunch({url:"/pages/Chat/Chat"})}catch(e){t("log","at pages/Login/Login.vue:125","登录失败",e),e&&"object"==typeof e&&e.serverError?uni.showModal({title:"提示",content:e.message,showCancel:!1,confirmText:"知道了"}):uni.showToast({title:(null==e?void 0:e.message)||e||"失败",icon:"error"})}finally{g.value=!1}}},k=()=>{n.value&&u.value||(f.value=!0)},y=()=>{if(h.remember){const e={username:h.username,password:h.password,remember:!0};uni.setStorageSync("login_info",e),uni.setStorageSync("chatType",0)}else uni.removeStorageSync("login_info")};return e.onMounted((()=>{(()=>{try{const e=uni.getStorageSync("login_info");e&&(n.value=e.username||"",u.value=e.password||"",h.remember=e.remember??!0)}catch(e){t("error","at pages/Login/Login.vue:178","读取登录信息失败",e)}})()})),(t,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),e.createElementVNode("view",{class:"login-container page-container"},[e.createElementVNode("view",{class:"login-card"},[e.createElementVNode("view",{class:"login-header"},[e.createElementVNode("view",{class:"login-header-logo"},[e.createElementVNode("view",{class:"icon-wrapper"},[e.createElementVNode("view",{class:"iconfont icon-brain-2-fill danao-style"})]),e.createElementVNode("text",null,"YXD")]),e.createElementVNode("view",{class:"sub-title"},"File Handling Chat")]),e.createElementVNode("view",{class:"form-wrapper"},[e.createElementVNode("view",{class:"form-item"},[e.createElementVNode("view",{class:"form-label"},[e.createElementVNode("text",null,"用户名")]),e.withDirectives(e.createElementVNode("input",{class:e.normalizeClass(["form-input",{focused:l.value,error:o.value}]),"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e),onFocus:i,onBlur:c,onInput:r,placeholder:"请输入用户名"},null,34),[[e.vModelText,n.value]])]),e.createElementVNode("view",{class:"form-item"},[e.createElementVNode("view",{class:"form-label"},[e.createElementVNode("text",null,"密码")]),e.withDirectives(e.createElementVNode("input",{type:"password",class:e.normalizeClass(["form-input",{focused:d.value,error:p.value}]),"onUpdate:modelValue":a[1]||(a[1]=e=>u.value=e),onFocus:m,onBlur:v,placeholder:"请输入密码"},null,34),[[e.vModelText,u.value]])]),f.value?(e.openBlock(),e.createElementBlock("text",{key:0,class:"error-info"},"用户名或密码不能为空")):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"form-option"},[e.createElementVNode("view",{class:"checkbox-wrapper",onClick:a[2]||(a[2]=e=>h.remember=!h.remember)},[e.createElementVNode("view",{class:e.normalizeClass(["checkbox",{checked:h.remember}])},[h.remember?(e.openBlock(),e.createElementBlock("text",{key:0},"✓")):e.createCommentVNode("",!0)],2),e.createElementVNode("text",{class:"checkbox-text"},"记住密码")]),e.createElementVNode("text",{class:"forget-pwd"},"忘记密码?")]),e.createElementVNode("button",{class:"login-btn",disabled:g.value,loading:g.value,onClick:w},e.toDisplayString(g.value?"Loading...":"登录"),9,["disabled","loading"])])])])],64))}},[["__scopeId","data-v-1f1e3d89"]]),V=[{font_class:"arrow-down",unicode:""},{font_class:"arrow-left",unicode:""},{font_class:"arrow-right",unicode:""},{font_class:"arrow-up",unicode:""},{font_class:"auth",unicode:""},{font_class:"auth-filled",unicode:""},{font_class:"back",unicode:""},{font_class:"bars",unicode:""},{font_class:"calendar",unicode:""},{font_class:"calendar-filled",unicode:""},{font_class:"camera",unicode:""},{font_class:"camera-filled",unicode:""},{font_class:"cart",unicode:""},{font_class:"cart-filled",unicode:""},{font_class:"chat",unicode:""},{font_class:"chat-filled",unicode:""},{font_class:"chatboxes",unicode:""},{font_class:"chatboxes-filled",unicode:""},{font_class:"chatbubble",unicode:""},{font_class:"chatbubble-filled",unicode:""},{font_class:"checkbox",unicode:""},{font_class:"checkbox-filled",unicode:""},{font_class:"checkmarkempty",unicode:""},{font_class:"circle",unicode:""},{font_class:"circle-filled",unicode:""},{font_class:"clear",unicode:""},{font_class:"close",unicode:""},{font_class:"closeempty",unicode:""},{font_class:"cloud-download",unicode:""},{font_class:"cloud-download-filled",unicode:""},{font_class:"cloud-upload",unicode:""},{font_class:"cloud-upload-filled",unicode:""},{font_class:"color",unicode:""},{font_class:"color-filled",unicode:""},{font_class:"compose",unicode:""},{font_class:"contact",unicode:""},{font_class:"contact-filled",unicode:""},{font_class:"down",unicode:""},{font_class:"bottom",unicode:""},{font_class:"download",unicode:""},{font_class:"download-filled",unicode:""},{font_class:"email",unicode:""},{font_class:"email-filled",unicode:""},{font_class:"eye",unicode:""},{font_class:"eye-filled",unicode:""},{font_class:"eye-slash",unicode:""},{font_class:"eye-slash-filled",unicode:""},{font_class:"fire",unicode:""},{font_class:"fire-filled",unicode:""},{font_class:"flag",unicode:""},{font_class:"flag-filled",unicode:""},{font_class:"folder-add",unicode:""},{font_class:"folder-add-filled",unicode:""},{font_class:"font",unicode:""},{font_class:"forward",unicode:""},{font_class:"gear",unicode:""},{font_class:"gear-filled",unicode:""},{font_class:"gift",unicode:""},{font_class:"gift-filled",unicode:""},{font_class:"hand-down",unicode:""},{font_class:"hand-down-filled",unicode:""},{font_class:"hand-up",unicode:""},{font_class:"hand-up-filled",unicode:""},{font_class:"headphones",unicode:""},{font_class:"heart",unicode:""},{font_class:"heart-filled",unicode:""},{font_class:"help",unicode:""},{font_class:"help-filled",unicode:""},{font_class:"home",unicode:""},{font_class:"home-filled",unicode:""},{font_class:"image",unicode:""},{font_class:"image-filled",unicode:""},{font_class:"images",unicode:""},{font_class:"images-filled",unicode:""},{font_class:"info",unicode:""},{font_class:"info-filled",unicode:""},{font_class:"left",unicode:""},{font_class:"link",unicode:""},{font_class:"list",unicode:""},{font_class:"location",unicode:""},{font_class:"location-filled",unicode:""},{font_class:"locked",unicode:""},{font_class:"locked-filled",unicode:""},{font_class:"loop",unicode:""},{font_class:"mail-open",unicode:""},{font_class:"mail-open-filled",unicode:""},{font_class:"map",unicode:""},{font_class:"map-filled",unicode:""},{font_class:"map-pin",unicode:""},{font_class:"map-pin-ellipse",unicode:""},{font_class:"medal",unicode:""},{font_class:"medal-filled",unicode:""},{font_class:"mic",unicode:""},{font_class:"mic-filled",unicode:""},{font_class:"micoff",unicode:""},{font_class:"micoff-filled",unicode:""},{font_class:"minus",unicode:""},{font_class:"minus-filled",unicode:""},{font_class:"more",unicode:""},{font_class:"more-filled",unicode:""},{font_class:"navigate",unicode:""},{font_class:"navigate-filled",unicode:""},{font_class:"notification",unicode:""},{font_class:"notification-filled",unicode:""},{font_class:"paperclip",unicode:""},{font_class:"paperplane",unicode:""},{font_class:"paperplane-filled",unicode:""},{font_class:"person",unicode:""},{font_class:"person-filled",unicode:""},{font_class:"personadd",unicode:""},{font_class:"personadd-filled",unicode:""},{font_class:"personadd-filled-copy",unicode:""},{font_class:"phone",unicode:""},{font_class:"phone-filled",unicode:""},{font_class:"plus",unicode:""},{font_class:"plus-filled",unicode:""},{font_class:"plusempty",unicode:""},{font_class:"pulldown",unicode:""},{font_class:"pyq",unicode:""},{font_class:"qq",unicode:""},{font_class:"redo",unicode:""},{font_class:"redo-filled",unicode:""},{font_class:"refresh",unicode:""},{font_class:"refresh-filled",unicode:""},{font_class:"refreshempty",unicode:""},{font_class:"reload",unicode:""},{font_class:"right",unicode:""},{font_class:"scan",unicode:""},{font_class:"search",unicode:""},{font_class:"settings",unicode:""},{font_class:"settings-filled",unicode:""},{font_class:"shop",unicode:""},{font_class:"shop-filled",unicode:""},{font_class:"smallcircle",unicode:""},{font_class:"smallcircle-filled",unicode:""},{font_class:"sound",unicode:""},{font_class:"sound-filled",unicode:""},{font_class:"spinner-cycle",unicode:""},{font_class:"staff",unicode:""},{font_class:"staff-filled",unicode:""},{font_class:"star",unicode:""},{font_class:"star-filled",unicode:""},{font_class:"starhalf",unicode:""},{font_class:"trash",unicode:""},{font_class:"trash-filled",unicode:""},{font_class:"tune",unicode:""},{font_class:"tune-filled",unicode:""},{font_class:"undo",unicode:""},{font_class:"undo-filled",unicode:""},{font_class:"up",unicode:""},{font_class:"top",unicode:""},{font_class:"upload",unicode:""},{font_class:"upload-filled",unicode:""},{font_class:"videocam",unicode:""},{font_class:"videocam-filled",unicode:""},{font_class:"vip",unicode:""},{font_class:"vip-filled",unicode:""},{font_class:"wallet",unicode:""},{font_class:"wallet-filled",unicode:""},{font_class:"weibo",unicode:""},{font_class:"weixin",unicode:""}];const b=C({name:"UniIcons",emits:["click"],props:{type:{type:String,default:""},color:{type:String,default:"#333333"},size:{type:[Number,String],default:16},customPrefix:{type:String,default:""},fontFamily:{type:String,default:""}},data:()=>({icons:V}),computed:{unicode(){let e=this.icons.find((e=>e.font_class===this.type));return e?e.unicode:""},iconSize(){return"number"==typeof(e=this.size)||/^[0-9]*$/g.test(e)?e+"px":e;var e},styleObj(){return""!==this.fontFamily?`color: ${this.color}; font-size: ${this.iconSize}; font-family: ${this.fontFamily};`:`color: ${this.color}; font-size: ${this.iconSize};`}},methods:{_onClick(e){this.$emit("click",e)}}},[["render",function(t,a,n,l,o,s){return e.openBlock(),e.createElementBlock("text",{style:e.normalizeStyle(s.styleObj),class:e.normalizeClass(["uni-icons",["uniui-"+n.type,n.customPrefix,n.customPrefix?n.type:""]]),onClick:a[0]||(a[0]=(...e)=>s._onClick&&s._onClick(...e))},[e.renderSlot(t.$slots,"default",{},void 0,!0)],6)}],["__scopeId","data-v-b25a9929"]]),_=()=>uni.getStorageSync("token"),B=()=>{const e=uni.getStorageSync("currentSessionId");return isNaN(Number(e))?e.replace(/-/g,""):e},S=()=>(t("log","at utils/user-info.js:50","用户Id(UserId)",uni.getStorageSync("userId")),uni.getStorageSync("userId")),x=()=>uni.getStorageSync("chatType"),T=()=>uni.getStorageSync("receiverId"),D=C(Object.assign({name:"ChatSidebar"},{__name:"ChatSidebar",props:{chatList:{type:Array,required:!0},showNewChatModal:{type:Boolean,default:!1},currentSessionId:{type:[String,Number],required:!0},chatType:{type:Number,required:!0}},emits:["update:showNewChatModal","update:currentSessionId","refresh-conversations","update:chatType"],setup(n,{emit:l}){const o=n,s=l,i=e.toRef(o,"chatList");e.toRef(o,"showNewChatModal");const c=e.toRef(o,"chatType"),r=()=>{uni.navigateTo({url:"/pages/UserProfileModal/UserProfileModal"})},u=e.ref(!1),m=e.ref([]),v=()=>{0!==m.value.length&&uni.showModal({title:"确认删除",content:`确定要删除全部 ${m.value.length} 个对话吗?此操作不可恢复。`,confirmText:"确认删除",confirmColor:"#ff0000",success:async e=>{if(e.confirm)try{const e=_();await d(e,m.value),uni.showToast({title:"删除成功",icon:"success"}),m.value=[],u.value=!1,s("refresh-conversations")}catch(a){t("error","at components/ChatSidebar.vue:209","删除会话失败:",a),uni.showToast({title:"删除失败,请重试",icon:"none"})}}})},h=()=>{i.value.length?uni.showModal({title:"确认删除",content:`确定要删除全部 ${i.value.length} 个对话吗?此操作不可恢复。`,confirmText:"删除全部",confirmColor:"#ff0000",success:async e=>{if(e.confirm)try{const e=_(),t=i.value.map((e=>e._id));await d(e,t),uni.showToast({title:"已删除全部对话",icon:"success"}),s("refresh-conversations")}catch(a){t("error","at components/ChatSidebar.vue:241","清空全部对话失败:",a),uni.showToast({title:"删除失败,请重试",icon:"none"})}}}):uni.showToast({title:"没有可删除的会话",icon:"none"})},g=e.computed((()=>i.value.length>0&&m.value.length===i.value.length)),f=e.toRef(o,"currentSessionId"),w=(e,a="")=>{t("log","at components/ChatSidebar.vue:259","选择的id是:",e),a&&uni.setStorageSync("receiverId",a),uni.setStorageSync("currentSessionId",e),s("update:currentSessionId",e)},k=()=>{t("log","at components/ChatSidebar.vue:270","点击了新建会话"),s("update:showNewChatModal",!0)},y=()=>{uni.navigateTo({url:"/pages/ContactPages/ContactPages"})},E=e.ref(""),C=e.ref(!1),N=()=>{u.value=!u.value,u.value||(m.value=[])},V=e=>{const t=m.value.indexOf(e);-1===t?m.value.push(e):m.value.splice(t,1)},B=()=>{g.value?m.value=[]:m.value=i.value.map((e=>e._id))},S=e.ref(""),x=e.ref(""),T=e.ref(""),D=(e,t=20)=>e?e.length>t?e.substring(0,t)+"...":e:"";return e.onMounted((async()=>{S.value=_();const e=await p(S.value);x.value=e.avatar||"",T.value=e.username||"",t("log","at components/ChatSidebar.vue:326","菜单收到的会话列表:",i.value)})),(t,n)=>{const l=a(e.resolveDynamicComponent("uni-icons"),b);return e.openBlock(),e.createElementBlock("view",{class:"chat-sidebar-container"},[e.createElementVNode("view",{class:"status-bar"}),e.createElementVNode("view",{class:"sidebar-header"},[e.createElementVNode("view",{class:"user-profile-card",onClick:r},[e.createElementVNode("view",{class:"left"},[x.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"avatar-preview"},[e.createElementVNode("image",{src:x.value,mode:"aspectFill"},null,8,["src"])])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"avatar-placeholder"},[e.createVNode(l,{type:"contact-filled",size:"50",color:"#007aff"})]))]),e.createElementVNode("view",{class:"center"},[e.createElementVNode("text",null,"欢迎回来"),e.createElementVNode("text",null,e.toDisplayString(T.value),1)]),e.createElementVNode("view",{class:"right"},[e.createElementVNode("view",{class:"status-dot"}),e.createElementVNode("view",{class:"status-text"},[e.createElementVNode("text",null,"在线")])])]),e.createElementVNode("view",{class:"new-chat-btn",onClick:y},[e.createElementVNode("text",null,"+ 聊天列表")])]),e.createElementVNode("view",{class:"chat-history"},[e.createElementVNode("view",{class:"history-header"},[e.createElementVNode("view",{class:"history-title-section"},[e.createElementVNode("text",null,"历史会话"),e.createElementVNode("text",null,e.toDisplayString(i.value.length)+"个对话",1)]),e.createElementVNode("view",{class:"history-management"},[u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-management-btn iconfont icon-jia icon-jia-style",onClick:k})),u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:1,class:"history-management-btn iconfont icon-duoxuan icon-duoxuan-style",onClick:N})),u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:2,class:"history-management-btn iconfont icon-saochu icon-saochu-style",onClick:h})),u.value&&m.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:3,class:"history-management-btn iconfont icon-shanchu icon-shanchu-style",onClick:v})):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("view",{key:4,class:e.normalizeClass(["history-management-btn iconfont icon-total_selection icon-total_selection-style",{active:g.value}]),onClick:B},null,2)):e.createCommentVNode("",!0),u.value?(e.openBlock(),e.createElementBlock("view",{key:5,class:"history-management-btn iconfont icon-quxiao icon-quxiao-style",onClick:N})):e.createCommentVNode("",!0)])]),u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-search-wrap"},[e.createElementVNode("view",{class:e.normalizeClass(["history-search-inner",{"has-value":E.value||C.value}])},[e.createVNode(l,{type:"search",class:e.normalizeClass([E.value||C.value?"chat-search-icon":"search-icon"])},null,8,["class"]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=e=>E.value=e),onFocus:n[1]||(n[1]=e=>C.value=!0),onBlur:n[2]||(n[2]=e=>C.value=!1),type:"text",placeholder:"搜索会话..."},null,544),[[e.vModelText,E.value]])],2)])),e.createElementVNode("view",{class:"chat-history-list"},[0===c.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(i.value,(t=>{var a;return e.openBlock(),e.createElementBlock("view",{key:t._id,"data-chat-id":t._id,class:e.normalizeClass(["chat-history-card",{"is-select-chat":f.value===t._id||m.value.includes(t._id)}]),onClick:e=>u.value?V(t._id):w(t._id)},[u.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[m.value.includes(t._id)?(e.openBlock(),e.createBlock(l,{key:0,type:"checkmarkempty",size:"20",color:"#007aff"})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"history-chat-avatar"},[e.createVNode(l,{type:"chat-filled",size:"26",color:"#007aff"})]),t.agent_id?(e.openBlock(),e.createElementBlock("view",{key:1},e.toDisplayString(D(null==(a=t.agent_data)?void 0:a.title)||"加载中"),1)):(e.openBlock(),e.createElementBlock("view",{key:2},e.toDisplayString(D(t.title)),1))],10,["data-chat-id","onClick"])})),128)):e.createCommentVNode("",!0),1===c.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(i.value,(t=>(e.openBlock(),e.createElementBlock("view",{key:t.sessionId,"data-chat-id":t.sessionId,class:e.normalizeClass(["chat-history-card",{"is-select-chat":f.value===t.sessionId||m.value.includes(t.sessionId)}]),onClick:e=>u.value?V(t.sessionId):w(t.sessionId,t.receiver)},[u.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[m.value.includes(t.sessionId)?(e.openBlock(),e.createBlock(l,{key:0,type:"checkmarkempty",size:"20",color:"#007aff"})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"history-chat-avatar"},[t.avatar?(e.openBlock(),e.createElementBlock("image",{key:0,src:t.avatar,class:"friend-avatar",mode:"aspectFill"},null,8,["src"])):e.createCommentVNode("",!0)]),e.createElementVNode("view",null,e.toDisplayString(t.friendNickName),1)],10,["data-chat-id","onClick"])))),128)):e.createCommentVNode("",!0),2===c.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(i.value,(t=>(e.openBlock(),e.createElementBlock("view",{key:t.id,"data-chat-id":t.id,class:e.normalizeClass(["chat-history-card",{"is-select-chat":f.value===t.id||m.value.includes(t.id)}]),onClick:e=>u.value?V(t.id):w(t.id)},[u.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[m.value.includes(t.id)?(e.openBlock(),e.createBlock(l,{key:0,type:"checkmarkempty",size:"20",color:"#007aff"})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"history-chat-avatar"},[e.createElementVNode("view",{class:"iconfont icon-qunliao",style:{"font-size":"80rpx",color:"#fff"}})]),e.createElementVNode("view",null,e.toDisplayString(t.name),1)],10,["data-chat-id","onClick"])))),128)):e.createCommentVNode("",!0)])])])}}}),[["__scopeId","data-v-eed4c646"]]);var P={"":["",""],_:["",""],"*":["",""],"~":["",""],"\n":["
"]," ":["
"],"-":["
"]};function $(e){return e.replace(RegExp("^"+(e.match(/^(\t| )+/)||"")[0],"gm"),"")}function j(e){return(e+"").replace(/"/g,""").replace(//g,">")}function M(e,t){var a,n,l,o,s,i=/((?:^|\n+)(?:\n---+|\* \*(?: \*)+)\n)|(?:^``` *(\w*)\n([\s\S]*?)\n```$)|((?:(?:^|\n+)(?:\t| {2,}).+)+\n*)|((?:(?:^|\n)([>*+-]|\d+\.)\s+.*)+)|(?:!\[([^\]]*?)\]\(([^)]+?)\))|(\[)|(\](?:\(([^)]+?)\))?)|(?:(?:^|\n+)([^\s].*)\n(-{3,}|={3,})(?:\n+|$))|(?:(?:^|\n+)(#{1,6})\s*(.+)(?:\n+|$))|(?:`([^`].*?)`)|( \n\n*|\n{2,}|__|\*\*|[_*]|~~)/gm,c=[],r="",u=t||{},d=0;function p(e){var t=P[e[1]||""],a=c[c.length-1]==e;return t?t[1]?(a?c.pop():c.push(e),t[0|a]):t[0]:e}function m(){for(var e="";c.length;)e+=p(c[c.length-1]);return e}for(e=e.replace(/^\[(.+?)\]:\s*(.+)$/gm,(function(e,t,a){return u[t.toLowerCase()]=a,""})).replace(/^\n+|\n+$/g,"");l=i.exec(e);)n=e.substring(d,l.index),d=i.lastIndex,a=l[0],n.match(/[^\\](\\\\)*\\$/)||((s=l[3]||l[4])?a='"+$(j(s).replace(/^\n+|\n+$/g,""))+"
":(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,"$1")),a="<"+s+">"+o+""+s+">"):l[8]?a='
':l[10]?(r=r.replace("",''),a=m()+""):l[9]?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=""+j(l[16])+"":(l[17]||l[1])&&(a=p(l[17]||"--"))),r+=n,r+=a;return(r+e.substring(d)+m()).replace(/^\n+|\n+$/g,"")}
+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)},s=n("onShow",3),o=n("onLoad",2),i=n("onUnload",2),r="https://cloud.yuxindazhineng.com",l=async e=>new Promise(((t,a)=>{uni.request({url:`${r}/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,s)=>{uni.request({url:`${r}/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||"获取消息出错啦";s(t)}}else s(`请求失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";s(t)}})})),u=async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${r}/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)}})})),d=async(e,t,a,n)=>new Promise(((s,o)=>{uni.request({url:`${r}/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)s(t);else{const t=e.data.error||"创建新对话id出错啦";o(t)}}else o(`创建新对话失败:${e.statusCode}`)}})})),p=async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${r}/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)}})})),h=async e=>new Promise(((t,a)=>{uni.request({url:`${r}/get_user_info`,method:"POST",header:{"Content-Type":"application/json"},data:{access_token:e},success:e=>{var n,s;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==(s=null==(n=null==o?void 0:o.detail)?void 0:n[0])?void 0:s.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:`${r}/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)}})})),f=(e,t)=>new Promise(((a,n)=>{uni.request({url:`${r}/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)}})})),v=(e,t,a)=>new Promise(((n,s)=>{uni.request({url:`${r}/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)||"删除工作区文件出错啦";s(e)}}else s(`删除工作区文件失败:${e.statusCode}`)}})})),g=(e,t,a)=>new Promise(((n,s)=>{uni.request({url:`${r}/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)||"创建工作区文件夹出错啦";s(e)}}else s(`创建工作区文件夹失败:${e.statusCode}`)}})})),w=(e,t,a="/",n="")=>new Promise(((s,o)=>{uni.request({url:`${r}/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)s(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)}})})),y=async e=>new Promise(((t,a)=>{uni.request({url:`${r}/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:`${r}/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 s=e.data;if(s.success){const e=(null==(t=s.team)?void 0:t.result)||[];a(e)}else{const e=(null==s?void 0:s.error)||"获取团队全部成员出错啦";n(e)}}else n(`获取团队全部成员失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";n(t)}})})),_=(e,t,a,n)=>new Promise(((s,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:`${r}/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)s(t.data);else if(Array.isArray(t))s(t);else{const e=(null==t?void 0:t.error)||"查看 个人/团队 数据库权限信息出错啦";o(e)}}else o(`查看 个人/团队 数据库权限信息失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})),b=(e,a,n)=>new Promise(((s,o)=>{uni.request({url:`${r}/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)s(a.url||a.download_url||a.data||a);else{o("下载消息文件出错啦")}}else o(`下载消息文件失败:${e.statusCode}`)},fail:e=>{const t=e.errMsg||"网络错误";o(t)}})})),E=(e,t)=>{const a=e.__vccOpts||e;for(const[n,s]of t)a[n]=s;return a},C=E({__name:"Login",setup(a){const n=e.ref(""),s=e.ref(!1),o=e.ref(!1),i=()=>{s.value=!0,g.value=!1},l=()=>{s.value=!1},c=()=>{},u=e.ref(""),d=e.ref(!1),p=e.ref(!1),h=()=>{d.value=!0,g.value=!1},m=()=>{d.value=!1},f=e.reactive({username:e.computed((()=>n.value)),password:e.computed((()=>u.value)),remember:!0}),v=e.ref(!1),g=e.ref(!1),w=async()=>{if(y(),!g.value){v.value=!0;try{t("log","at pages/Login/Login.vue:119","有返回token:",await(async(e,t)=>new Promise(((a,n)=>{uni.request({url:`${r}/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)),k(),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{v.value=!1}}},y=()=>{n.value&&u.value||(g.value=!0)},k=()=>{if(f.remember){const e={username:f.username,password:f.password,remember:!0};uni.setStorageSync("login_info",e),uni.setStorageSync("chatType",0)}else uni.removeStorageSync("login_info")};return e.onMounted((()=>{(()=>{try{const e=uni.getStorageSync("login_info");e&&(n.value=e.username||"",u.value=e.password||"",f.remember=e.remember??!0)}catch(e){t("error","at pages/Login/Login.vue:178","读取登录信息失败",e)}})()})),(t,a)=>(e.openBlock(),e.createElementBlock(e.Fragment,null,[e.createElementVNode("view",{class:"status-bar"}),e.createElementVNode("view",{class:"login-container page-container"},[e.createElementVNode("view",{class:"login-card"},[e.createElementVNode("view",{class:"login-header"},[e.createElementVNode("view",{class:"login-header-logo"},[e.createElementVNode("view",{class:"icon-wrapper"},[e.createElementVNode("view",{class:"iconfont icon-brain-2-fill danao-style"})]),e.createElementVNode("text",null,"YXD")]),e.createElementVNode("view",{class:"sub-title"},"File Handling Chat")]),e.createElementVNode("view",{class:"form-wrapper"},[e.createElementVNode("view",{class:"form-item"},[e.createElementVNode("view",{class:"form-label"},[e.createElementVNode("text",null,"用户名")]),e.withDirectives(e.createElementVNode("input",{class:e.normalizeClass(["form-input",{focused:s.value,error:o.value}]),"onUpdate:modelValue":a[0]||(a[0]=e=>n.value=e),onFocus:i,onBlur:l,onInput:c,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:h,onBlur:m,placeholder:"请输入密码"},null,34),[[e.vModelText,u.value]])]),g.value?(e.openBlock(),e.createElementBlock("text",{key:0,class:"error-info"},"用户名或密码不能为空")):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"form-option"},[e.createElementVNode("view",{class:"checkbox-wrapper",onClick:a[2]||(a[2]=e=>f.remember=!f.remember)},[e.createElementVNode("view",{class:e.normalizeClass(["checkbox",{checked:f.remember}])},[f.remember?(e.openBlock(),e.createElementBlock("text",{key:0},"✓")):e.createCommentVNode("",!0)],2),e.createElementVNode("text",{class:"checkbox-text"},"记住密码")]),e.createElementVNode("text",{class:"forget-pwd"},"忘记密码?")]),e.createElementVNode("button",{class:"login-btn",disabled:v.value,loading:v.value,onClick:w},e.toDisplayString(v.value?"Loading...":"登录"),9,["disabled","loading"])])])])],64))}},[["__scopeId","data-v-1f1e3d89"]]),N=[{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 x=E({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:N}),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,s,o,i){return e.openBlock(),e.createElementBlock("text",{style:e.normalizeStyle(i.styleObj),class:e.normalizeClass(["uni-icons",["uniui-"+n.type,n.customPrefix,n.customPrefix?n.type:""]]),onClick:a[0]||(a[0]=(...e)=>i._onClick&&i._onClick(...e))},[e.renderSlot(t.$slots,"default",{},void 0,!0)],6)}],["__scopeId","data-v-b25a9929"]]),V=()=>uni.getStorageSync("token"),S=()=>{const e=uni.getStorageSync("currentSessionId");return isNaN(Number(e))?e.replace(/-/g,""):e},B=()=>(t("log","at utils/user-info.js:50","用户Id(UserId)",uni.getStorageSync("userId")),uni.getStorageSync("userId")),T=()=>uni.getStorageSync("chatType"),D=()=>uni.getStorageSync("receiverId"),z=E(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","select-chat"],setup(n,{emit:s}){const o=n,i=s,r=e.toRef(o,"chatList");e.toRef(o,"showNewChatModal");const l=e.toRef(o,"chatType"),c=()=>{uni.navigateTo({url:"/pages/UserProfileModal/UserProfileModal"})},u=e.ref(!1),d=e.ref([]),m=()=>{0!==d.value.length&&uni.showModal({title:"确认删除",content:`确定要删除全部 ${d.value.length} 个对话吗?此操作不可恢复。`,confirmText:"确认删除",confirmColor:"#ff0000",success:async e=>{if(e.confirm)try{const e=V();await p(e,d.value),uni.showToast({title:"删除成功",icon:"success"}),d.value=[],u.value=!1,i("refresh-conversations")}catch(a){t("error","at components/ChatSidebar.vue:210","删除会话失败:",a),uni.showToast({title:"删除失败,请重试",icon:"none"})}}})},f=()=>{r.value.length?uni.showModal({title:"确认删除",content:`确定要删除全部 ${r.value.length} 个对话吗?此操作不可恢复。`,confirmText:"删除全部",confirmColor:"#ff0000",success:async e=>{if(e.confirm)try{const e=V(),t=r.value.map((e=>e._id));await p(e,t),uni.showToast({title:"已删除全部对话",icon:"success"}),i("refresh-conversations")}catch(a){t("error","at components/ChatSidebar.vue:242","清空全部对话失败:",a),uni.showToast({title:"删除失败,请重试",icon:"none"})}}}):uni.showToast({title:"没有可删除的会话",icon:"none"})},v=e.computed((()=>r.value.length>0&&d.value.length===r.value.length)),g=e.toRef(o,"currentSessionId"),w=(e,a="")=>{t("log","at components/ChatSidebar.vue:260","选择的id是:",e),a&&uni.setStorageSync("receiverId",a),uni.setStorageSync("currentSessionId",e),i("update:currentSessionId",e),i("select-chat")},y=()=>{t("log","at components/ChatSidebar.vue:272","点击了新建会话"),i("update:showNewChatModal",!0)},k=()=>{uni.navigateTo({url:"/pages/ContactPages/ContactPages"})},_=e.ref(""),b=e.ref(!1),E=()=>{u.value=!u.value,u.value||(d.value=[])},C=e=>{const t=d.value.indexOf(e);-1===t?d.value.push(e):d.value.splice(t,1)},N=()=>{v.value?d.value=[]:d.value=r.value.map((e=>e._id))},S=e.ref(""),B=e.ref(""),T=e.ref(""),D=(e,t=20)=>e?e.length>t?e.substring(0,t)+"...":e:"";return e.onMounted((async()=>{S.value=V();const e=await h(S.value);B.value=e.avatar||"",T.value=e.username||"",t("log","at components/ChatSidebar.vue:328","菜单收到的会话列表:",r.value)})),(t,n)=>{const s=a(e.resolveDynamicComponent("uni-icons"),x);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:c},[e.createElementVNode("view",{class:"left"},[B.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"avatar-preview"},[e.createElementVNode("image",{src:B.value,mode:"aspectFill"},null,8,["src"])])):(e.openBlock(),e.createElementBlock("view",{key:1,class:"avatar-placeholder"},[e.createVNode(s,{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:k},[e.createElementVNode("text",null,"+ 更多聊天列表")])]),e.createElementVNode("view",{class:"chat-history"},[e.createElementVNode("view",{class:"history-header"},[e.createElementVNode("view",{class:"history-title-section"},[e.createElementVNode("text",null,"历史会话"),e.createElementVNode("text",null,e.toDisplayString(r.value.length)+"个对话",1)]),e.createElementVNode("view",{class:"history-management"},[u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-management-btn iconfont icon-jia icon-jia-style",onClick:y})),u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:1,class:"history-management-btn iconfont icon-duoxuan icon-duoxuan-style",onClick:E})),u.value?e.createCommentVNode("",!0):(e.openBlock(),e.createElementBlock("view",{key:2,class:"history-management-btn iconfont icon-saochu icon-saochu-style",onClick:f})),u.value&&d.value.length>0?(e.openBlock(),e.createElementBlock("view",{key:3,class:"history-management-btn iconfont icon-shanchu icon-shanchu-style",onClick:m})):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:v.value}]),onClick:N},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:E})):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":_.value||b.value}])},[e.createVNode(s,{type:"search",class:e.normalizeClass([_.value||b.value?"chat-search-icon":"search-icon"])},null,8,["class"]),e.withDirectives(e.createElementVNode("input",{"onUpdate:modelValue":n[0]||(n[0]=e=>_.value=e),onFocus:n[1]||(n[1]=e=>b.value=!0),onBlur:n[2]||(n[2]=e=>b.value=!1),type:"text",placeholder:"搜索会话..."},null,544),[[e.vModelText,_.value]])],2)])),e.createElementVNode("view",{class:"chat-history-list"},[0===l.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:0},e.renderList(r.value,(t=>{var a;return e.openBlock(),e.createElementBlock("view",{key:t._id,"data-chat-id":t._id,class:e.normalizeClass(["chat-history-card",{"is-select-chat":g.value===t._id||d.value.includes(t._id)}]),onClick:e=>u.value?C(t._id):w(t._id)},[u.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[d.value.includes(t._id)?(e.openBlock(),e.createBlock(s,{key:0,type:"checkmarkempty",size:"20",color:"#007aff"})):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("view",{class:"history-chat-avatar"},[e.createVNode(s,{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===l.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:1},e.renderList(r.value,(t=>(e.openBlock(),e.createElementBlock("view",{key:t.sessionId,"data-chat-id":t.sessionId,class:e.normalizeClass(["chat-history-card",{"is-select-chat":g.value===t.sessionId||d.value.includes(t.sessionId)}]),onClick:e=>u.value?C(t.sessionId):w(t.sessionId,t.receiver)},[u.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[d.value.includes(t.sessionId)?(e.openBlock(),e.createBlock(s,{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===l.value?(e.openBlock(!0),e.createElementBlock(e.Fragment,{key:2},e.renderList(r.value,(t=>(e.openBlock(),e.createElementBlock("view",{key:t.id,"data-chat-id":t.id,class:e.normalizeClass(["chat-history-card",{"is-select-chat":g.value===t.id||d.value.includes(t.id)}]),onClick:e=>u.value?C(t.id):w(t.id)},[u.value?(e.openBlock(),e.createElementBlock("view",{key:0,class:"history-chat-checkbox"},[d.value.includes(t.id)?(e.openBlock(),e.createBlock(s,{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-7630767e"]]);var I={"":["",""],_:["",""],"*":["",""],"~":["",""],"\n":["
"]," ":["
"],"-":["
"]};function P(e){return e.replace(RegExp("^"+(e.match(/^(\t| )+/)||"")[0],"gm"),"")}function A(e){return(e+"").replace(/"/g,""").replace(//g,">")}function j(e,t){var a,n,s,o,i,r=/((?:^|\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,l=[],c="",u=t||{},d=0;function p(e){var t=I[e[1]||""],a=l[l.length-1]==e;return t?t[1]?(a?l.pop():l.push(e),t[0|a]):t[0]:e}function h(){for(var e="";l.length;)e+=p(l[l.length-1]);return e}for(e=e.replace(/^\[(.+?)\]:\s*(.+)$/gm,(function(e,t,a){return u[t.toLowerCase()]=a,""})).replace(/^\n+|\n+$/g,"");s=r.exec(e);)n=e.substring(d,s.index),d=r.lastIndex,a=s[0],n.match(/[^\\](\\\\)*\\$/)||((i=s[3]||s[4])?a='"+P(A(i).replace(/^\n+|\n+$/g,""))+"
":(i=s[6])?(i.match(/\./)&&(s[5]=s[5].replace(/^\d+/gm,"")),o=j(P(s[5].replace(/^\s*[>*+.-]/gm,""))),">"==i?i="blockquote":(i=i.match(/\./)?"ol":"ul",o=o.replace(/^(.*)(\n|$)/gm,"$1")),a="<"+i+">"+o+""+i+">"):s[8]?a='
':s[10]?(c=c.replace("",''),a=h()+""):s[9]?a="":s[12]||s[14]?a="<"+(i="h"+(s[14]?s[14].length:s[13]>"="?1:2))+">"+j(s[12]||s[15],u)+""+i+">":s[16]?a=""+A(s[16])+"":(s[17]||s[1])&&(a=p(s[17]||"--"))),c+=n,c+=a;return(c+e.substring(d)+h()).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{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.reconnectAttemptst("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{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.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='';return e.forEach(((e,n)=>{const l=0===n?"th":"td",o=e.split("|").filter((e=>""!==e.trim()));a+="",o.forEach(((e,n)=>{const o=t[n]?` style="text-align:${t[n]}"`:"";let s=e.trim();s=s.replace(/\*\*(.+?)\*\*/g,"$1"),s=s.replace(/\*(.+?)\*/g,"$1"),s=s.replace(/_/g,"_").replace(/\*/g,"*"),a+=`<${l}${o} style="padding:6px 10px;border:1px solid #ddd">${s}${l}>`})),a+="
"})),a+="
",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;se.trim())).map((e=>e.trim().startsWith(":")&&e.trim().endsWith(":")?"center":e.trim().endsWith(":")?"right":"left"));continue}l.push(e),n=!0}else n&&l.length>0&&(a.push(g(l,o)),l=[],o=[],n=!1),a.push(e)}return n&&l.length>0&&a.push(g(l,o)),a.join("\n")})(e=e.replace(/__/g,"\0\0").replace(/_/g,"_").replace(/\x00\x00/g,"__")));return t=t.replace(/]*>(.*?)<\/a>/gi,'$2'),t}catch(a){return t("error","at pages/Chat/Chat.vue:460","解析失败",a),e}},w=e=>{const t=/