feat(导航): 添加双击导航功能并优化数据展示

- 在GroupComparison组件中添加双击部门跳转到经理页面的功能
- 在secondTop组件中添加双击成员跳转到销售页面的功能
- 优化topOne组件中客户迫切问题排行榜的数据格式转换
- 在RankingList组件中增加展示条目并添加排序功能
- 在SalesTimelineWithTaskList组件中替换alert弹窗为自定义模态框
- 优化secondTop组件路由跳转逻辑,避免重复请求
This commit is contained in:
2025-08-21 10:47:41 +08:00
parent c340f6c870
commit 544a66b8fa
5 changed files with 265 additions and 29 deletions

View File

@@ -43,7 +43,7 @@
</div>
</template>
<div>
<div v-if="!isRouteNavigation">
<!-- 用户下拉菜单 -->
<UserDropdown />
</div>
@@ -107,7 +107,7 @@
<div class="members-grid">
<div v-for="member in selectedGroup.members" :key="member.id" class="member-card"
:class="getStatusClass(member.status)">
:class="getStatusClass(member.status)" @dblclick="navigateToSale(member.name)">
<div class="member-header">
<div class="member-info">
<h3 class="member-name">{{ member.name }}</h3>
@@ -250,7 +250,7 @@ const centerData = ref({
stage.endDate = stageEndDate.toISOString().split('T')[0];
});
};
// 保存营期
const saveCampSettings = async () => {
recalculateStageDates();
@@ -358,9 +358,6 @@ const centerData = ref({
}
}
// 组别数据
const groups = ref([])
// loading 状态
@@ -692,10 +689,32 @@ const conversionRateVsAverage = ref({})
}
return statusMap[status] || '未知'
}
// 双击成员卡片跳转到销售页面
const navigateToSale = (userName) => {
router.push({
path: '/sale',
query: {
user_name: userName,
user_level: '1'
}
})
}
onMounted(async () => {
try {
isLoading.value = true
await CenterCampPeriodAdmin()
// 判断页面进入方式如果是通过路由跳转进入URL中有user_name和user_level参数则不发送CenterCampPeriodAdmin请求
// 如果是直接登录进入页面,则发送请求
const currentQuery = router.currentRoute.value.query
const isFromRoute = currentQuery.fromRoute ||
sessionStorage.getItem('fromRoute') ||
(currentQuery.user_name && currentQuery.user_level)
if (!isFromRoute) {
// 直接登录进入页面时才调用CenterCampPeriodAdmin
await CenterCampPeriodAdmin()
}
// CenterCampPeriodAdmin中已经调用了recalculateStageDates这里不需要重复调用
await CenterOverallCenterPerformance()
await CenterTotalGroupCount()