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

@@ -9,7 +9,7 @@
</select>
</div>
<div class="ranking-list">
<div v-for="(item, index) in rankingData.slice(0, 4)" :key="item.id" class="ranking-item">
<div v-for="(item, index) in rankingData.slice(0, 8)" :key="item.id" class="ranking-item">
<div class="rank-number" :class="getRankClass(index)">
{{ index + 1 }}
</div>
@@ -62,12 +62,15 @@ const rankingData = computed(() => {
return [];
}
return rankList.map((item, index) => ({
id: index + 1,
name: item.center_leader,
performance: item.total_deals,
average_deals_per_member: item.average_deals_per_member
}));
// 转换数据格式并按total_deals从大到小排序
return rankList
.map((item, index) => ({
id: index + 1,
name: item.center_leader,
performance: item.total_deals,
average_deals_per_member: item.average_deals_per_member
}))
.sort((a, b) => b.performance - a.performance); // 按total_deals从大到小排序
});
// 获取全中心业绩排行榜数据
@@ -79,6 +82,77 @@ async function getCenterSalesRank(data) {
const res = await getCenterPerformanceRank(params);
console.log('获取中心业绩排行榜:', res);
centerSalesRank.value = res.data;
/**
* 0
:
{center_leader: "潘加俊", total_deals: 0, average_deals_per_member: 0}
average_deals_per_member
:
0
center_leader
:
"潘加俊"
total_deals
:
0
1
:
{center_leader: "张三丰", total_deals: 44, average_deals_per_member: 1}
average_deals_per_member
:
1
center_leader
:
"张三丰"
total_deals
:
44
2
:
{center_leader: "朱一航", total_deals: 0, average_deals_per_member: 0}
average_deals_per_member
:
0
center_leader
:
"朱一航"
total_deals
:
0
3
:
{center_leader: "程琦", total_deals: 0, average_deals_per_member: 0}
average_deals_per_member
:
0
center_leader
:
"程琦"
total_deals
:
0
4
:
{center_leader: "王卓琳", total_deals: 6, average_deals_per_member: 0}
average_deals_per_member
:
0
center_leader
:
"王卓琳"
total_deals
:
6
5
:
{center_leader: "伍晶晶", total_deals: 5, average_deals_per_member: 0}
average_deals_per_member
:
0
center_leader
:
"伍晶晶"
*/
} catch (error) {
console.error('获取全中心业绩排行榜失败:', error);
}

View File

@@ -520,7 +520,6 @@ async function getCustomerTypeRatio(data) {
}
try {
const res = await getCustomerTypeDistribution(params)
console.log(1222222,res)
customerTypeRatio.value = res.data
} catch (error) {
console.error("获取客户类型占比失败:", error);
@@ -528,11 +527,20 @@ async function getCustomerTypeRatio(data) {
}
// 客户迫切解决的问题排行榜
const customerUrgency = ref({});
const problemRankingData = ref([]);
async function getCustomerUrgency() {
try {
const res = await getUrgentNeedToAddress()
console.log(1222222,res)
customerUrgency.value = res.data
// 将API返回的数据转换为ProblemRanking组件需要的格式
if (res.data && res.data.company_urgent_issue_ratio) {
problemRankingData.value = Object.entries(res.data.company_urgent_issue_ratio).map(([name, value]) => ({
name,
value
}));
}
} catch (error) {
console.error("获取客户迫切解决的问题排行榜失败:", error);
}
@@ -542,7 +550,6 @@ const levelTree = ref({});
async function CusotomGetLevelTree() {
try {
const res = await getLevelTree()
console.log(1222222,res)
levelTree.value = res.data
} catch (error) {
console.error("获取级别树失败:", error);