From c3346a15c2307876603ceee7742dcb234c1a7bd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BD=95=E5=98=89=E6=82=A6?= <2834007710@qq.com> Date: Sat, 24 May 2025 00:32:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20:sparkles:=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E7=99=BB=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/FormLogin/VerificationCode.vue | 46 +++++ .../components/QrCodeLogin/index.vue | 96 +++++++++++ src/components/LoginDialog/index.vue | 158 ++++++++++++++++++ src/components/WelecomeText/index.vue | 20 +++ src/hooks/useCollapseToggle.ts | 2 +- src/hooks/useSafeArea.ts | 3 +- src/hooks/useScreen.ts | 2 +- src/hooks/useTimeGreeting.ts | 36 ++++ src/layouts/LayoutVertical/index.vue | 4 +- src/layouts/components/Aside/index.vue | 77 +-------- src/layouts/components/Header/index.vue | 8 +- src/pages/chat/home/index.vue | 84 ---------- src/pages/chat/index.vue | 91 ++++++++-- src/pages/login/index.vue | 6 +- src/router/index.ts | 19 +-- src/store/index.ts | 1 + src/styles/element-plus.scss | 6 + src/styles/index.scss | 1 + src/styles/media.scss | 14 ++ src/styles/var.scss | 1 + types/components.d.ts | 12 +- 21 files changed, 498 insertions(+), 189 deletions(-) create mode 100644 src/components/LoginDialog/components/FormLogin/VerificationCode.vue create mode 100644 src/components/LoginDialog/components/QrCodeLogin/index.vue create mode 100644 src/components/LoginDialog/index.vue create mode 100644 src/components/WelecomeText/index.vue create mode 100644 src/hooks/useTimeGreeting.ts delete mode 100644 src/pages/chat/home/index.vue create mode 100644 src/styles/media.scss diff --git a/src/components/LoginDialog/components/FormLogin/VerificationCode.vue b/src/components/LoginDialog/components/FormLogin/VerificationCode.vue new file mode 100644 index 0000000..1ccc256 --- /dev/null +++ b/src/components/LoginDialog/components/FormLogin/VerificationCode.vue @@ -0,0 +1,46 @@ + + + + + + diff --git a/src/components/LoginDialog/components/QrCodeLogin/index.vue b/src/components/LoginDialog/components/QrCodeLogin/index.vue new file mode 100644 index 0000000..6a67c7e --- /dev/null +++ b/src/components/LoginDialog/components/QrCodeLogin/index.vue @@ -0,0 +1,96 @@ + + + + + + diff --git a/src/components/LoginDialog/index.vue b/src/components/LoginDialog/index.vue new file mode 100644 index 0000000..90f1519 --- /dev/null +++ b/src/components/LoginDialog/index.vue @@ -0,0 +1,158 @@ + + + + + + diff --git a/src/components/WelecomeText/index.vue b/src/components/WelecomeText/index.vue new file mode 100644 index 0000000..f6f39cd --- /dev/null +++ b/src/components/WelecomeText/index.vue @@ -0,0 +1,20 @@ + + + + + + diff --git a/src/hooks/useCollapseToggle.ts b/src/hooks/useCollapseToggle.ts index d9e44cf..d9109aa 100644 --- a/src/hooks/useCollapseToggle.ts +++ b/src/hooks/useCollapseToggle.ts @@ -51,7 +51,7 @@ export function useCollapseToggle(threshold: number = COLLAPSE_THRESHOLD) { // 使用示例与特性说明 // diff --git a/src/hooks/useSafeArea.ts b/src/hooks/useSafeArea.ts index 675d1fe..9192980 100644 --- a/src/hooks/useSafeArea.ts +++ b/src/hooks/useSafeArea.ts @@ -76,8 +76,9 @@ export function useSafeArea(options: SafeAreaOptions): { isInSafeArea: Ref {}) 进行监听。 // const { isMobile } = useScreenStore(); /** 适配移动端结束 */ diff --git a/src/hooks/useTimeGreeting.ts b/src/hooks/useTimeGreeting.ts new file mode 100644 index 0000000..e0f3202 --- /dev/null +++ b/src/hooks/useTimeGreeting.ts @@ -0,0 +1,36 @@ +import { ref } from 'vue'; + +type TimeGreeting = '凌晨' | '清晨' | '早上' | '中午' | '下午' | '傍晚' | '晚上'; + +// 时间分段配置(按顺序排列,find会返回第一个匹配项) +const timeRanges: Array<[start: number, end: number, label: TimeGreeting]> = [ + [0, 5, '凌晨'], + [5, 7, '清晨'], + [7, 12, '早上'], + [12, 14, '中午'], + [14, 18, '下午'], + [18, 21, '傍晚'], + [21, 24, '晚上'], +]; + +/** + * 获取当前时段问候语(Vue组合式函数) + * @returns 响应式的时段问候语 + */ +export function useTimeGreeting() { + // 直接计算初始值(合并初始化逻辑) + const currentHour = new Date().getHours(); + const greeting = timeRanges.find(([s, e]) => currentHour >= s && currentHour < e)?.[2] || '晚上'; + + // 使用ref保持响应式(即使不更新,组件仍可正确绑定) + return ref(greeting); +} + +// 示例用法(在Vue组件中) +// +// diff --git a/src/layouts/LayoutVertical/index.vue b/src/layouts/LayoutVertical/index.vue index 319b9ef..8468681 100644 --- a/src/layouts/LayoutVertical/index.vue +++ b/src/layouts/LayoutVertical/index.vue @@ -44,8 +44,9 @@ useWindowWidthObserver(); diff --git a/src/pages/chat/index.vue b/src/pages/chat/index.vue index 925805c..f0be3c0 100644 --- a/src/pages/chat/index.vue +++ b/src/pages/chat/index.vue @@ -1,19 +1,24 @@ + + diff --git a/src/pages/login/index.vue b/src/pages/login/index.vue index 4541ae2..e426694 100644 --- a/src/pages/login/index.vue +++ b/src/pages/login/index.vue @@ -1,10 +1,10 @@