refactor(导航): 优化团队导航逻辑和指标描述

- 统一从高级经理到经理页面的导航路径和参数传递
- 添加团队双击事件处理并跳转到经理页面
- 简化指标描述文本,移除冗余解释
This commit is contained in:
2025-08-26 14:13:26 +08:00
parent 11e686d4d9
commit 6779db176c
5 changed files with 27 additions and 10 deletions

View File

@@ -126,7 +126,7 @@ const metricDescriptions = {
}, },
conversionRate: { conversionRate: {
title: '定金转化率', title: '定金转化率',
description: '支付定金的客户数 ÷ 意向客户总数,反映客户从意向到付费的转化效果。' description: '支付定金的客户数 ÷ 意向客户总数'
} }
} }

View File

@@ -275,10 +275,10 @@ const getRankingClass = (index) => {
// 处理部门双击事件,跳转到经理页面 // 处理部门双击事件,跳转到经理页面
const navigateToManager = (group) => { const navigateToManager = (group) => {
router.push({ router.push({
path: '/senior-manager', path: '/manager',
query: { query: {
user_name: group.id, user_name: group.leader,
user_level: 3 user_level: 2
} }
}) })
} }

View File

@@ -11,6 +11,7 @@
class="ranking-card" class="ranking-card"
:class="getRankingClass(index)" :class="getRankingClass(index)"
@click="$emit('select-group', group)" @click="$emit('select-group', group)"
@dblclick="$emit('team-double-click', group)"
> >
<div class="rank-badge">{{ index + 1 }}</div> <div class="rank-badge">{{ index + 1 }}</div>
<div class="group-info"> <div class="group-info">
@@ -48,7 +49,7 @@ const props = defineProps({
} }
}) })
const emit = defineEmits(['select-group']) const emit = defineEmits(['select-group', 'team-double-click'])

View File

@@ -87,23 +87,23 @@ const tooltip = reactive({
const metricDescriptions = { const metricDescriptions = {
customerCommunicationRate: { customerCommunicationRate: {
title: '活跃客户沟通率计算方式', title: '活跃客户沟通率计算方式',
description: '有效沟通的活跃客户数 ÷ 总活跃客户数 × 100%,反映团队与活跃客户的沟通覆盖程度。' description: '有效沟通的活跃客户数 ÷ 总活跃客户数 × 100%'
}, },
averageResponseTime: { averageResponseTime: {
title: '平均应答时间计算方式', title: '平均应答时间计算方式',
description: '所有通话的应答时间总和 ÷ 通话总次数,以分钟为单位,反映团队的响应效率。' description: '所有通话的应答时间总和 ÷ 通话总次数'
}, },
timeoutResponseRate: { timeoutResponseRate: {
title: '超时应答率计算方式', title: '超时应答率计算方式',
description: '超时应答的通话次数 ÷ 总通话次数 × 100%超时标准通常为30秒以上。' description: '超时应答的通话次数 ÷ 总通话次数 × 100%'
}, },
severeTimeoutRate: { severeTimeoutRate: {
title: '严重超时应答率计算方式', title: '严重超时应答率计算方式',
description: '严重超时应答的通话次数 ÷ 总通话次数 × 100%严重超时标准通常为60秒以上。' description: '严重超时应答的通话次数 ÷ 总通话次数 × 100%'
}, },
formCompletionRate: { formCompletionRate: {
title: '表格填写率计算方式', title: '表格填写率计算方式',
description: '已完成填写的表格数量 ÷ 应填写的表格总数 × 100%,反映团队的工作完成度。' description: '已完成填写的表格数量 ÷ 应填写的表格总数 × 100%'
} }
}; };

View File

@@ -71,6 +71,7 @@
:groups="groups" :groups="groups"
:teamRanking="teamRanking" :teamRanking="teamRanking"
@select-group="selectGroup" @select-group="selectGroup"
@team-double-click="handleTeamDoubleClick"
/> />
</div> </div>
</div> </div>
@@ -553,6 +554,7 @@ const selectedGroup = ref(groups[0])
// 选择组别函数 // 选择组别函数
const selectGroup = async (group) => { const selectGroup = async (group) => {
console.log('选择的组别:', group)
selectedGroup.value = group selectedGroup.value = group
// 获取部门名称并调用团队业绩详情接口 // 获取部门名称并调用团队业绩详情接口
// 从teamRanking数据中查找对应的原始部门名称 // 从teamRanking数据中查找对应的原始部门名称
@@ -582,6 +584,20 @@ const selectGroup = async (group) => {
} }
} }
// 处理团队双击事件
const handleTeamDoubleClick = (group) => {
console.log('团队双击事件触发,团队数据:', group)
// 跳转到manager页面携带团队负责人和用户等级
router.push({
path: '/manager',
query: {
user_name: group.leader,
user_level: 2
}
})
}
// 处理成员双击事件 // 处理成员双击事件
const handleMemberDoubleClick = (member) => { const handleMemberDoubleClick = (member) => {
console.log('双击事件触发,成员数据:', member) console.log('双击事件触发,成员数据:', member)