From 8b19c299bb0baec148fc17b97cde35e71ae61a2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B5=85=E5=BF=B5?= Date: Tue, 11 Aug 2026 11:59:56 +0800 Subject: [PATCH] =?UTF-8?q?feat(calls):=20WA=E8=AF=AD=E9=9F=B3=20=E5=8D=95?= =?UTF-8?q?=E5=85=83=E6=A0=BC=E5=8F=AF=E7=82=B9(=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E2=86=92WA=20chat,=E5=91=98=E5=B7=A5=E2=86=92drawer)+=20chatCh?= =?UTF-8?q?annel=20helper?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude --- yunkes/src/views/CallList.vue | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/yunkes/src/views/CallList.vue b/yunkes/src/views/CallList.vue index a7211b0..43e8ac0 100644 --- a/yunkes/src/views/CallList.vue +++ b/yunkes/src/views/CallList.vue @@ -134,6 +134,11 @@ function openDrawer(row: PhoneCall): void { drawerOpen.value = true } +/** 把通话类型(voice_call/wa_voice_call)映射到聊天渠道(wechat/whatsapp)。电话返回 null。 */ +function chatChannel(ch: CallChannel): 'wechat' | 'whatsapp' | null { + return ch === 'voice_call' ? 'wechat' : ch === 'wa_voice_call' ? 'whatsapp' : null +} + /** 客户昵称 → 该员工×客户 1:1 聊天(复用 Phase B 导航)。 */ function viewCallCustomer(row: PhoneCall): void { const owner = cell(row, 'weChatId') @@ -141,7 +146,11 @@ function viewCallCustomer(row: PhoneCall): void { if (!owner || !talker) return router.push({ name: 'chat', - params: { channel: 'wechat', ownerId: String(owner), talkerId: String(talker) }, + params: { + channel: chatChannel(row.channel) ?? 'wechat', + ownerId: String(owner), + talkerId: String(talker), + }, }) } @@ -149,7 +158,10 @@ function viewCallCustomer(row: PhoneCall): void { function viewCallStaff(row: PhoneCall): void { const owner = cell(row, 'weChatId') if (!owner) return - router.push({ name: 'chat', params: { channel: 'wechat', ownerId: String(owner) } }) + router.push({ + name: 'chat', + params: { channel: chatChannel(row.channel) ?? 'wechat', ownerId: String(owner) }, + }) } const drawerSections = computed(() => @@ -250,13 +262,18 @@ onMounted(load)