From 61a26fc543aeb69a841f5fef163273199fd7369b Mon Sep 17 00:00:00 2001 From: let5sne Date: Thu, 9 Jul 2026 22:10:31 +0800 Subject: [PATCH] fix(mobile): align practice scene copy with task context --- docs/20260708/uni-app用户侧前端重建计划.md | 1 + mobile-uni/src/pages/user/practice/index.vue | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/20260708/uni-app用户侧前端重建计划.md b/docs/20260708/uni-app用户侧前端重建计划.md index 50e3aa40..7e19dfad 100644 --- a/docs/20260708/uni-app用户侧前端重建计划.md +++ b/docs/20260708/uni-app用户侧前端重建计划.md @@ -232,6 +232,7 @@ mobile-uni/ - H5 桌面预览已收进移动端壳:宽屏访问 `wygj-mobile-uni.localhost` 时主体和底部 tab 固定为 430px 居中,390px 手机视口仍全宽。 - 员工端视觉扫尾已补:今日页“去复习”按钮和案例页“已入库”状态不再被 flex 挤成窄高文本,真实 390px 视口扫描无横向溢出。 - H5 本地验证噪音已收敛:关闭 uni 统计自动上报并复用现有静态图作为 favicon,真实 390px 浏览器扫描无 `tongji-collector`/`WebTrack.gif`/`favicon.ico` 坏资源。 +- 员工练习页场景说明已跟随真实预习卡/主管指派:场景卡优先展示 `/prep-card` 返回的要点,其次展示专项原因,不再固定写“投诉服务或设施问题”。 ## 7. 风险 diff --git a/mobile-uni/src/pages/user/practice/index.vue b/mobile-uni/src/pages/user/practice/index.vue index 8d84ad04..01ca7f9d 100644 --- a/mobile-uni/src/pages/user/practice/index.vue +++ b/mobile-uni/src/pages/user/practice/index.vue @@ -49,7 +49,7 @@ 今日小训 {{ activeScenarioName }} - 业主投诉服务或设施问题时,练习承接情绪、说明流程、给出反馈节点。 + {{ scenarioDescription }} 训练前预习卡 @@ -224,6 +224,17 @@ const hasTraineeReply = computed(() => turns.value.some((item) => item.role === const canFinishPractice = computed(() => hasTraineeReply.value && !redFlagActive.value); const hasCoachState = computed(() => emotionScore.value > 0 || trustScore.value > 0 || redFlagActive.value); const canAdjustCoach = computed(() => status.value === 'active' && lastCoachRoundIndex.value !== null && turns.value.some((item) => item.role === 'coach')); +const activeAssignment = computed(() => assignments.value.find((item) => item.id === activeAssignmentId.value)); +const scenarioDescription = computed(() => { + const points = (prepCard.value?.keyPoints || []).map((item) => item.trim()).filter(Boolean).slice(0, 2); + if (points.length) return `本场重点:${points.join(';')}`; + if (activeAssignment.value?.reason) return activeAssignment.value.reason; + const name = activeScenarioName.value; + if (/催|缴|费|停车/.test(name)) return '练习承接缴费异议、说明规则依据、给出缴费路径和跟进节点。'; + if (/报修|维修|设施|电梯|漏水/.test(name)) return '练习记录问题、安抚情绪、说明报修流转和反馈时限。'; + if (/突发|应急|安全|火灾|摔|道闸|车库/.test(name)) return '练习先稳现场、同步上报、留痕取证和风险告知。'; + return '练习承接业主情绪、说明处理动作、明确反馈时间和责任边界。'; +}); const styleOptions = [ { value: 'serious', label: '再严肃' }, { value: 'gentle', label: '再温柔' },