feat(导航): 添加双击导航功能并优化数据展示
- 在GroupComparison组件中添加双击部门跳转到经理页面的功能 - 在secondTop组件中添加双击成员跳转到销售页面的功能 - 优化topOne组件中客户迫切问题排行榜的数据格式转换 - 在RankingList组件中增加展示条目并添加排序功能 - 在SalesTimelineWithTaskList组件中替换alert弹窗为自定义模态框 - 优化secondTop组件路由跳转逻辑,避免重复请求
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user