From 7282bbc37310df7be4259627cba0ffabc2be33c6 Mon Sep 17 00:00:00 2001 From: nepiedg Date: Wed, 1 Apr 2026 23:53:28 +0800 Subject: [PATCH] feat: refresh mini program home and stats experience --- src/api/auth.js | 12 +- .../smoke-record-dialog.vue | 8 +- src/pages.json | 6 + src/pages/index/index.vue | 733 +++++++++++------- src/pages/mode-select/index.vue | 44 +- src/pages/profile/index.vue | 271 +++---- src/pages/stats-calendar/index.vue | 593 ++++++++++++++ src/pages/stats/index.vue | 65 +- 8 files changed, 1220 insertions(+), 512 deletions(-) create mode 100644 src/pages/stats-calendar/index.vue diff --git a/src/api/auth.js b/src/api/auth.js index f548de6..325fa99 100644 --- a/src/api/auth.js +++ b/src/api/auth.js @@ -1,6 +1,7 @@ import { request } from './request' import { MINI_PROGRAM_ID } from '@/config' -import { storage, SESSION_KEY, USER_KEY } from '@/utils/storage' +import pinia, { useUserStore } from '@/stores' +import { storage, SESSION_KEY, USER_KEY, USER_MODE_KEY } from '@/utils/storage' const H5_DEBUG_SESSION_KEY = 'FxLFPHHBw49loODmRSvqdg==' @@ -10,6 +11,7 @@ export function applyH5DebugSession() { if (process.env.NODE_ENV === 'development' && storage.get(SESSION_KEY) !== H5_DEBUG_SESSION_KEY) { storage.set(SESSION_KEY, H5_DEBUG_SESSION_KEY) storage.remove(USER_KEY) + storage.remove(USER_MODE_KEY) applied = true } // #endif @@ -26,9 +28,11 @@ export async function login() { mini_program_id: MINI_PROGRAM_ID, code: loginRes.code }) - - storage.set(SESSION_KEY, res.data.session_key) - storage.set(USER_KEY, res.data.user) + const userStore = useUserStore(pinia) + userStore.setUser(res.data.user, res.data.session_key) + if (res.data.user?.mode) { + userStore.setMode(res.data.user.mode) + } resolve(res.data) } catch (e) { diff --git a/src/components/smoke-record-dialog/smoke-record-dialog.vue b/src/components/smoke-record-dialog/smoke-record-dialog.vue index 4546051..2e242bb 100644 --- a/src/components/smoke-record-dialog/smoke-record-dialog.vue +++ b/src/components/smoke-record-dialog/smoke-record-dialog.vue @@ -262,10 +262,11 @@ export default { overflow: hidden; transform: translateY(100%); transition: transform 0.3s ease-out; - padding-bottom: 16rpx; + padding-bottom: 0; border-top: 2rpx solid rgba(255, 255, 255, 0.72); backdrop-filter: blur(28rpx); -webkit-backdrop-filter: blur(28rpx); + box-shadow: 0 20rpx 48rpx rgba(15, 23, 42, 0.18); } .dialog-show { @@ -308,7 +309,8 @@ export default { .dialog-body { padding: 16rpx 32rpx 24rpx; - max-height: 62vh; + padding-bottom: 40rpx; + max-height: 58vh; overflow-y: auto; } @@ -538,6 +540,8 @@ export default { .dialog-footer { padding: 16rpx 32rpx 32rpx; + padding-bottom: calc(120rpx + env(safe-area-inset-bottom)); + background: linear-gradient(180deg, rgba(248, 250, 252, 0) 0%, rgba(248, 250, 252, 0.96) 28%); } .dialog-btn-primary { diff --git a/src/pages.json b/src/pages.json index f26ccfb..f2a4d62 100644 --- a/src/pages.json +++ b/src/pages.json @@ -24,6 +24,12 @@ "navigationStyle": "custom" } }, + { + "path": "pages/stats-calendar/index", + "style": { + "navigationBarTitleText": "日历详情" + } + }, { "path": "pages/ai/index", "style": { diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue index f476bb4..719005c 100644 --- a/src/pages/index/index.vue +++ b/src/pages/index/index.vue @@ -1,8 +1,8 @@