2024-05-19 21:20:42 +08:00
|
|
|
|
<script lang="ts" setup>
|
2025-07-19 16:47:52 +08:00
|
|
|
|
import { computed, ref, watch } from 'vue';
|
2024-05-19 21:20:42 +08:00
|
|
|
|
|
2024-07-31 00:19:17 +08:00
|
|
|
|
import { useAntdDesignTokens } from '@vben/hooks';
|
2024-07-23 00:03:59 +08:00
|
|
|
|
import { preferences, usePreferences } from '@vben/preferences';
|
2025-07-19 16:47:52 +08:00
|
|
|
|
import { useUserStore as useVbenUserStore } from '@vben/stores';
|
2024-06-01 23:15:29 +08:00
|
|
|
|
|
2024-06-22 00:25:13 +08:00
|
|
|
|
import { App, ConfigProvider, theme } from 'ant-design-vue';
|
2024-06-08 19:49:06 +08:00
|
|
|
|
|
2024-07-07 00:17:44 +08:00
|
|
|
|
import { antdLocale } from '#/locales';
|
2025-07-19 16:47:52 +08:00
|
|
|
|
import { useWebSocket } from '#/views/business/chat/composables/useWebSocket';
|
|
|
|
|
|
import { useChatStore } from '#/views/business/chat/stores/chat';
|
|
|
|
|
|
import { useUserStore } from '#/views/business/chat/stores/user';
|
2024-05-19 21:20:42 +08:00
|
|
|
|
|
|
|
|
|
|
defineOptions({ name: 'App' });
|
2025-07-19 16:47:52 +08:00
|
|
|
|
|
|
|
|
|
|
const { connectWebSocket } = useWebSocket();
|
|
|
|
|
|
const userStore = useUserStore();
|
|
|
|
|
|
const chatStore = useChatStore();
|
|
|
|
|
|
const vbenUserStore = useVbenUserStore();
|
|
|
|
|
|
|
|
|
|
|
|
// 用户信息加载状态跟踪
|
|
|
|
|
|
const userInfoLoaded = ref(false);
|
|
|
|
|
|
|
|
|
|
|
|
// 监听userInfo加载完成
|
|
|
|
|
|
watch(
|
|
|
|
|
|
() => vbenUserStore.userInfo,
|
|
|
|
|
|
(newUserInfo) => {
|
|
|
|
|
|
if (newUserInfo) {
|
|
|
|
|
|
console.log('用户信息已加载:', newUserInfo)
|
|
|
|
|
|
userStore.currentUser = newUserInfo;
|
|
|
|
|
|
userStore.login(newUserInfo);
|
|
|
|
|
|
userInfoLoaded.value = true;
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
{ immediate: true },
|
2025-04-07 17:02:39 +08:00
|
|
|
|
);
|
2024-05-19 21:20:42 +08:00
|
|
|
|
|
2024-06-01 23:15:29 +08:00
|
|
|
|
const { isDark } = usePreferences();
|
2024-07-31 00:19:17 +08:00
|
|
|
|
const { tokens } = useAntdDesignTokens();
|
2024-05-19 21:20:42 +08:00
|
|
|
|
|
|
|
|
|
|
const tokenTheme = computed(() => {
|
2024-06-22 00:25:13 +08:00
|
|
|
|
const algorithm = isDark.value
|
2024-05-19 21:20:42 +08:00
|
|
|
|
? [theme.darkAlgorithm]
|
|
|
|
|
|
: [theme.defaultAlgorithm];
|
|
|
|
|
|
|
2024-06-01 23:15:29 +08:00
|
|
|
|
if (preferences.app.compact) {
|
2024-06-22 00:25:13 +08:00
|
|
|
|
algorithm.push(theme.compactAlgorithm);
|
2024-05-19 21:20:42 +08:00
|
|
|
|
}
|
2024-06-22 00:25:13 +08:00
|
|
|
|
|
2024-05-19 21:20:42 +08:00
|
|
|
|
return {
|
2024-06-22 00:25:13 +08:00
|
|
|
|
algorithm,
|
2024-07-31 00:19:17 +08:00
|
|
|
|
token: tokens,
|
2024-05-19 21:20:42 +08:00
|
|
|
|
};
|
|
|
|
|
|
});
|
2025-07-19 16:47:52 +08:00
|
|
|
|
|
|
|
|
|
|
const initWebsocket = () => {
|
|
|
|
|
|
// 确保用户信息已加载
|
|
|
|
|
|
if (!userStore.currentUser) return;
|
|
|
|
|
|
|
|
|
|
|
|
// 初始化数据库
|
|
|
|
|
|
chatStore.initDB();
|
|
|
|
|
|
|
|
|
|
|
|
// 加载好友列表(使用用户ID)
|
2025-07-22 16:55:09 +08:00
|
|
|
|
chatStore.loadFriends(userStore.presetUsers, userStore.currentUser?.doctor_id);
|
2025-07-19 16:47:52 +08:00
|
|
|
|
|
|
|
|
|
|
// 创建WebSocket连接
|
|
|
|
|
|
connectWebSocket();
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
// 当userInfo加载完成后再执行初始化
|
|
|
|
|
|
watch(userInfoLoaded, (loaded) => {
|
|
|
|
|
|
if (loaded) {
|
2025-12-17 10:12:54 +08:00
|
|
|
|
// initWebsocket();
|
2025-07-19 16:47:52 +08:00
|
|
|
|
}
|
|
|
|
|
|
});
|
2024-05-19 21:20:42 +08:00
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<template>
|
2024-07-29 22:11:22 +08:00
|
|
|
|
<ConfigProvider :locale="antdLocale" :theme="tokenTheme">
|
|
|
|
|
|
<App>
|
|
|
|
|
|
<RouterView />
|
|
|
|
|
|
</App>
|
|
|
|
|
|
</ConfigProvider>
|
2024-05-19 21:20:42 +08:00
|
|
|
|
</template>
|