From 41b349fd095338019da5f5551da2180a6584e7e1 Mon Sep 17 00:00:00 2001 From: ivan Date: Sat, 14 Feb 2026 19:47:08 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=EF=BC=9A=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E7=9A=84=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .cursor/rules/doc-sync.mdc | 13 ++++++-- docs/components/TradeComponent.md | 1 + docs/core/App.md | 5 +-- docs/stores/user.md | 5 +++ src/App.vue | 43 ++++++++++++++++++------ src/components/TradeComponent.vue | 54 +++++++++++++++++++++++++++++++ src/stores/user.ts | 15 +++++---- src/views/Login.vue | 3 +- 8 files changed, 118 insertions(+), 21 deletions(-) diff --git a/.cursor/rules/doc-sync.mdc b/.cursor/rules/doc-sync.mdc index 1272c61..073ba93 100644 --- a/.cursor/rules/doc-sync.mdc +++ b/.cursor/rules/doc-sync.mdc @@ -1,11 +1,13 @@ --- -description: 修改或新增 src/ 代码时同步更新 docs/ 技术文档 +description: 修改或新增 src/ 代码时,必须在同一轮对话中同步更新 docs/ 技术文档 globs: src/**/* -alwaysApply: false +alwaysApply: true --- # 文档同步规则 +**修改 src/ 后必做**:在同一轮对话中,立即更新 `docs/` 中对应的技术文档。不要等到用户提醒。 + 当你在 `src/` 下**新增或修改**任何文件时,必须同步更新 `docs/` 中对应的技术文档。 ## 文件映射关系 @@ -35,3 +37,10 @@ API 与组件文档需补充类型说明、Props、Events 等。 ## 示例 修改 `src/api/event.ts` 后,需更新 `docs/api/event.md`;新增 `src/api/order.ts` 时,需新建 `docs/api/order.md`。 + +## 修改后检查清单 + +修改 `src/` 内任何文件后,在同一轮回复中完成: + +- [ ] 根据上表找到对应的 `docs/` 路径 +- [ ] 更新或新建该文档,反映本次代码变更 diff --git a/docs/components/TradeComponent.md b/docs/components/TradeComponent.md index 6d3dbe8..ae63bfd 100644 --- a/docs/components/TradeComponent.md +++ b/docs/components/TradeComponent.md @@ -18,6 +18,7 @@ - Buy/Sell Tab 切换 - Market/Limit 类型、Merge/Split 菜单 +- **Buy 模式 Amount 区**:无论余额是否充足,均显示 Amount 标签、Balance、金额输入、+$1/+$20/+$100/Max 快捷按钮(桌面端、嵌入弹窗、移动端弹窗一致) - 余额不足时 Buy 显示 Deposit 按钮 - 25%/50%/Max 快捷份额 - 调用 market API 下单、Split、Merge diff --git a/docs/core/App.md b/docs/core/App.md index f779ff9..780a04b 100644 --- a/docs/core/App.md +++ b/docs/core/App.md @@ -8,9 +8,10 @@ ## 核心能力 -- 顶部导航栏:返回、PolyMarket 标题、Login 或余额+头像菜单 +- 顶部导航栏:返回、PolyMarket 标题、Login 或余额+用户名+头像菜单 - 登录态:`userStore.isLoggedIn` 控制展示 -- 挂载时:若已登录,拉取用户信息与余额 +- 用户名:`nickName` 或 `userName` 显示在头像左侧(有值时) +- 挂载时与 `isLoggedIn` 变为 true 时:拉取用户信息与余额(`router.isReady()` + `nextTick` 后执行),确保钱包登录、刷新页面后头像和用户名正确显示 - keep-alive:`include="['Home']"` 缓存首页 ## 扩展方式 diff --git a/docs/stores/user.md b/docs/stores/user.md index 97b2d34..b05683c 100644 --- a/docs/stores/user.md +++ b/docs/stores/user.md @@ -15,6 +15,7 @@ - `logout`:清空并清除持久化 - `getAuthHeaders`:返回 `{ 'x-token', 'x-user-id' }`,未登录时返回 `undefined` - `fetchUserInfo`、`fetchUsdcBalance`:拉取并更新用户信息与余额 +- `fetchUserInfo` 兼容多种 API 字段名:`userName`/`username`、`nickName`/`nickname`、`headerImg`/`avatar`/`avatarUrl`;支持 `data` 直接为用户对象或 `data.user` 嵌套结构 ## 使用方式 @@ -41,3 +42,7 @@ await userStore.fetchUsdcBalance() 1. **多端登录**:扩展 `setUser` 支持多设备 token 管理 2. **Token 刷新**:在 `getAuthHeaders` 或请求拦截器中加入 refresh 逻辑 3. **登出回调**:在 `logout` 中增加清理逻辑(如取消订阅、重置其他 store) + +## 登录后刷新用户信息 + +钱包登录(Login.vue)成功后需调用 `fetchUserInfo()` 以获取完整用户信息(头像、昵称)。App.vue 在 `onMounted` 与 `watch(isLoggedIn)` 时也会调用,确保自动登录或刷新页面后能正确显示。 diff --git a/src/App.vue b/src/App.vue index f6c49f5..7bd74e6 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,21 +1,35 @@