diff --git a/docs/员工端版本功能对比与功能对齐清单-20260717.md b/docs/员工端版本功能对比与功能对齐清单-20260717.md index 95273074..d0e10236 100644 --- a/docs/员工端版本功能对比与功能对齐清单-20260717.md +++ b/docs/员工端版本功能对比与功能对齐清单-20260717.md @@ -91,4 +91,4 @@ Figma 已完成全文件结构和视觉复核,当前实测为 81 个顶层页 | 功能 | 客户要求 | Figma | 当前代码 | 线上状态 | 处理决定 | | --- | --- | --- | --- | --- | --- | -| 语音文字交互形态 | 2026-07-18 客户原话:凡语音文字交互处应做成微信聊天式(消息流+按住说话),现表单式操作太复杂 | 表单式布局(输入框+按钮组) | 问页已改会话流:ChatComposer(⊕面板/按住说话松开即发/键盘切换)+气泡消息流,引用/总结卡/反馈/播报收入答案气泡操作行 | 已发布并生产冒烟通过(2026-07-18) | 按客户要求执行,客户原话 > Figma;练页为第二批,web-ai 页随批次二统一 | +| 语音文字交互形态 | 2026-07-18 客户原话:凡语音文字交互处应做成微信聊天式(消息流+按住说话),现表单式操作太复杂 | 表单式布局(输入框+按钮组) | 问页已改会话流:ChatComposer(⊕面板/按住说话松开即发/键盘切换)+气泡消息流,引用/总结卡/反馈/播报收入答案气泡操作行 | 已发布并生产冒烟通过(2026-07-18) | 按客户要求执行,客户原话 > Figma;2026-07-18 批次二完成:练页对练进行中改为同款会话(业主台词=语音优先气泡+红点+转文字,老师傅提示气泡,风格chips,⊕面板收纳选音频/求助/结束评分,松开即发送),预习/每日三题/评分视图保持;web-ai 页待批次三 | diff --git a/mobile-uni/src/components/chat/ChatComposer.vue b/mobile-uni/src/components/chat/ChatComposer.vue index bbda5890..6b743905 100644 --- a/mobile-uni/src/components/chat/ChatComposer.vue +++ b/mobile-uni/src/components/chat/ChatComposer.vue @@ -69,20 +69,34 @@ - - - + + - 图片≤10MB,视频≤100MB;仅用于本次现场分析 + 图片≤10MB,视频≤100MB;仅用于本次现场分析 @@ -98,6 +112,7 @@ const props = withDefaults(defineProps<{ mediaName?: string; mediaKind?: string; toolLabel?: string; + panelItems?: Array<{ key: string; icon: string; label: string; disabled?: boolean }>; }>(), { disabled: false, transcribing: false, @@ -106,7 +121,8 @@ const props = withDefaults(defineProps<{ quickQuestions: () => [], mediaName: '', mediaKind: '', - toolLabel: '' + toolLabel: '', + panelItems: () => [] }); const emit = defineEmits<{ @@ -117,6 +133,7 @@ const emit = defineEmits<{ (e: 'clear-media'): void; (e: 'quick', question: string): void; (e: 'tool'): void; + (e: 'panel', key: string): void; }>(); const draft = ref(''); @@ -150,6 +167,11 @@ const panelEmit = (event: 'pick-media' | 'pick-audio' | 'tool') => { emit(event); }; +const panelAction = (key: string) => { + panelOpen.value = false; + emit('panel', key); +}; + const stopTracks = () => { stream?.getTracks().forEach((track) => track.stop()); stream = null; diff --git a/mobile-uni/src/pages/user/practice/index.vue b/mobile-uni/src/pages/user/practice/index.vue index 3b9ba52c..4a8fb0c1 100644 --- a/mobile-uni/src/pages/user/practice/index.vue +++ b/mobile-uni/src/pages/user/practice/index.vue @@ -155,46 +155,98 @@ 红线纠偏识别与规避 - - - - 对话 - 保持承接情绪、说明动作、给出反馈节点。 + + + + {{ activeScenarioName }} + 第 {{ Math.min(roundIndex + 1, 3) }}/3 轮 - 第 {{ Math.min(roundIndex + 1, 3) }} 轮 - - - - 情绪 {{ emotionScore }} - - + + + 情绪 {{ emotionScore }} + + + + 信任 {{ trustScore }} + - - 信任 {{ trustScore }} - - - - - 红线纠偏:先承接诉求,避免推责、绝对承诺或情绪对抗。 + 红线纠偏:先承接诉求,避免推责、绝对承诺或情绪对抗。 - - - - {{ roleLabel(turn.role) }} - + + + + + + + 傅 + + SOP 提示 + {{ helpAnswer }} + + 📄 {{ item }} + + - {{ turn.text }} + + + 业主回应中… + + + {{ message }} + + + - - + + +