diff --git a/docs/superpowers/plans/2026-08-05-yunke-stafflist-interaction.md b/docs/superpowers/plans/2026-08-05-yunke-stafflist-interaction.md index 373572c..933b1d6 100644 --- a/docs/superpowers/plans/2026-08-05-yunke-stafflist-interaction.md +++ b/docs/superpowers/plans/2026-08-05-yunke-stafflist-interaction.md @@ -592,21 +592,30 @@ --- -## Task 8: StaffList 微信数字→modal +## Task 8: StaffList 微信交互(跳转类,无 modal) -> 基于 Task 0 探测结果。微信员工表的「好友数/消息数/沟通数/及时回复」哪些可点、点出什么,按探测结论接入(复用 `openAddedModal`/`openTalkedModal` 模式 + 调整维度)。 +> ⚠️ **在 Task 9、10 之后执行**(复用 `viewCustomers`/`viewGroups`/`viewChat`)。 +> Task 0 探测结论:微信员工表数字点击是**跳转**(非 modal),与 WhatsApp 不同。微信 tab 全部交互复用 Task 9/10 的跳转函数。 **Files:** Modify `yunkes/src/views/StaffList.vue` -- [ ] **Step 1: 据探测结果**(本 plan 末尾「微信员工表探测结果」),为微信 tab 的可点数字加 `@click.stop="openXxxModal(row)"`。 +- [ ] **Step 1: 微信 tab「好友数」列**——把复合单元格里「好友数」的值包成可点 link → `viewCustomers(row)`(`row.channel` 自动是 wechat,owner=wxId=`row.account_id`);「微信群数」值 → `viewGroups(row)`。 + 例(在微信 tab「好友数」`el-table-column` 的 `yk-pair` 里): + ```html + {{ cellNum(row, 'contactsNum') }} + ``` -- [ ] **Step 2: 浏览器验证微信 tab** 各数字点击 → modal 正确。 +- [ ] **Step 2: 微信 tab 昵称**(员工信息列 `cellText(row, 'nickName')`)→ `viewChat(row)`(复用 Task 10)。 -- [ ] **Step 3: 类型检查 + Commit** +- [ ] **Step 3: 手机号**——云客跳员工详情,我们暂无此页 → **降级**:不接入(标注:降级,后续员工详情页再做)。 + +- [ ] **Step 4: 浏览器验证微信 tab**:点好友数→客户列表(wechat, owner=wxId)、群数→群列表、昵称→聊天。 + +- [ ] **Step 5: 类型检查 + Commit** ```bash cd yunkes && npx vue-tsc -b git add yunkes/src/views/StaffList.vue - git commit -m "feat(staff): wechat stat-number click → detail modal" + git commit -m "feat(staff): wechat stat-number/nickname → navigation" ``` --- @@ -629,26 +638,26 @@ - [ ] **Step 2: 前端 GroupQuery + getGroups 加 user_id**(`api/index.ts`)。 -- [ ] **Step 3: StaffList `viewCustomers`/`viewGroups` 改为按 row + 带 query**: +- [ ] **Step 3: StaffList `viewCustomers`/`viewGroups` 改为按 row + 带 query**。用 `owner_account_id`(= `row.account_id`:微信 wxId / WhatsApp uid 都成立),CustomerList/GroupList **已支持** `owner_account_id` 筛选,无需等 user_id: ```ts function viewCustomers(row: Account) { - channelStore.setChannel('whatsapp') - router.push({ path: '/customers', query: row.user_id ? { user_id: row.user_id } : {} }) + channelStore.setChannel(row.channel) + router.push({ path: '/customers', query: { owner_account_id: row.account_id } }) } function viewGroups(row: Account) { - channelStore.setChannel('whatsapp') - router.push({ path: '/groups', query: row.user_id ? { user_id: row.user_id } : {} }) + channelStore.setChannel(row.channel) + router.push({ path: '/groups', query: { owner_account_id: row.account_id } }) } ``` - 模板操作列改为 `@click.stop="viewCustomers(row)"` / `viewGroups(row)"`。 + 模板(两个 tab 的操作列)改为 `@click.stop="viewCustomers(row)"` / `@click.stop="viewGroups(row)"`。 -- [ ] **Step 4: CustomerList 读 user_id query**(参照它已读 `department_id` 的模式,~line 33): +- [ ] **Step 4: CustomerList 读 `owner_account_id` query**(参照它已读 `department_id` 的模式,~line 33): ```ts - const userId = route.query.user_id ? String(route.query.user_id) : null + const ownerId = route.query.owner_account_id ? String(route.query.owner_account_id) : null ``` - `getCustomers` 调用加 `user_id: userId`;watch 响应 `userId` 变化;顶部加 chip + 清除(清除时 `router.replace({ query: {} })`)。 + `getCustomers` 调用加 `owner_account_id: ownerId`;watch 响应 `ownerId` 变化;顶部加 chip「筛选自员工」+ 清除(清除时 `router.replace({ query: {} })`)。 -- [ ] **Step 5: GroupList 同理读 user_id query**。 +- [ ] **Step 5: GroupList 同理读 `owner_account_id` query**。 - [ ] **Step 6: 浏览器验证** —— StaffList WhatsApp → 点「好友列表」→ 跳客户列表,只显示该员工客户 + 顶部 chip;点「群聊」同理。 @@ -706,15 +715,20 @@ --- -## 微信员工表探测结果(Task 0 填写) +## 微信员工表探测结果(Task 0 已执行,2026-08-05) -> 待 Task 0 执行后填写:每个可点数字 → modal 标题 + 列 + 对应后端筛选维度。 +微信员工表的交互与 WhatsApp **不同**——以**跳转**为主,**无数字→modal**: -- 好友数(1229):____ → modal? 列? 筛选维度? -- 消息数:____ -- 沟通数:____ -- 及时回复:____ -- 员工信息列内元素:____ +| 元素 | 行为 | 目标 | +|---|---|---| +| 好友数(数字) | 跳转 | `/wechatdetail/1/{wxId}` —— 该微信号客户列表(owner=wxId) | +| 群数(数字) | 跳转 | `/wechatdetail/2/{wxId}` —— 该微信号群列表 | +| 昵称 | 新 tab | `salewechat/message/wechat-window/...` 微信聊天记录 | +| 手机号 | 新 tab | `customer/userDetailNew?userId=...` 员工详情 | +| 主/副标记 | 无明显效果 | — | +| 消息数/沟通数/及时回复 | **不可点** | — | + +**关键差异**:WhatsApp 用 modal(添加人数/沟通人数);微信用跳转(好友数/群数)。故 Task 7(WhatsApp modal)和 Task 8(微信跳转)实现方式不同。 ---