feat(staff-friends): 员工客户列表独立页——对齐云客员工详情,好友数/微信群数下钻
员工列表点「好友数」原先跳全局 /customers?owner_account_id=x,布局与全局
列表无异且计数/分页绑全局声明口径(同日 dfa4fdd 修的显示 bug),与云客
「员工名下客户列表」体验割裂。新页 /staff-friends/:ownerId/:tab:
- 微信客户/微信群两 tab(对齐云客截图);标题=员工显示名(入口直带,
直链经 /api/accounts 解析),返回箭头回员工列表
- 搜索(昵称/微信号/备注名/手机号,服务端 q)+ 查询/导出 CSV
- 发送/接收条数=Customer.send_num/receive_num 累计值(CustomerOut 补
两列,同步自云客 friend 记录,与截图同源)
- 勾选批量「导出聊天记录」:新端点 GET /api/export/chat-html-zip,复用
chat-html 渲染器每会话一个 HTML 打 zip(文件名=备注>昵称>friend_id,
非法字符清洗;单会话 5000 行截断告警;一次上限 50 会话防误选打爆)
- 行内:查看聊天记录→staff-chat;导出HTML聊天记录(时间范围弹窗)
- WA 行保持原入口(该页暂仅微信)
后端 605 测试绿(zip 新 4 例);本地浏览器端到端验证:过滤 9 条/勾选
激活/群 tab/返回箭头;zip 产物 application/zip 双会话双气泡。
Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
@@ -239,6 +239,16 @@ function waSerial(index: number): number {
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
function viewCustomers(row: Account): void {
|
||||
// 微信行 → 员工客户列表独立页(2026-09-08 对齐云客员工详情,账号维度
|
||||
// 下钻:两 tab/搜索/批量导出);WA 行保持全局客户列表(该页暂仅微信)。
|
||||
if (row.channel === 'wechat') {
|
||||
router.push({
|
||||
name: 'staff-friends',
|
||||
params: { ownerId: row.account_id, tab: 'customers' },
|
||||
query: { name: row.nickname || row.user_name || '' },
|
||||
})
|
||||
return
|
||||
}
|
||||
channelStore.setChannel(row.channel)
|
||||
router.push({
|
||||
path: '/customers',
|
||||
@@ -247,6 +257,15 @@ function viewCustomers(row: Account): void {
|
||||
}
|
||||
|
||||
function viewGroups(row: Account): void {
|
||||
// 同上:微信群数 → 员工客户列表的群 tab;WA 保持原路径。
|
||||
if (row.channel === 'wechat') {
|
||||
router.push({
|
||||
name: 'staff-friends',
|
||||
params: { ownerId: row.account_id, tab: 'groups' },
|
||||
query: { name: row.nickname || row.user_name || '' },
|
||||
})
|
||||
return
|
||||
}
|
||||
channelStore.setChannel(row.channel)
|
||||
if (row.channel === 'whatsapp') {
|
||||
// WA:对齐云客,群列表在客户列表页的子 tab(2026-08-24)
|
||||
|
||||
Reference in New Issue
Block a user