feat(销售管理): 实现团队业绩排名和客户问题统计功能

- 添加团队业绩排名和客户迫切问题API接口
- 重构ProblemRanking组件以使用真实API数据
- 修改GroupComparison组件以支持团队排名数据展示
- 优化样式和移除调试日志
- 添加数据默认值处理防止渲染错误
This commit is contained in:
2025-08-12 22:00:32 +08:00
parent c48f39fb5e
commit 3a38dba08a
7 changed files with 187 additions and 40 deletions

View File

@@ -41,11 +41,16 @@
/>
</div>
<div class="problem-ranking">
<ProblemRanking />
<!-- 客户迫切解决的问题 -->
<ProblemRanking :problemRanking="problemRanking" />
</div>
<!-- Right Section - Group Comparison -->
<div class="right-section">
<GroupComparison :groups="groups" @select-group="selectGroup" />
<GroupComparison
:groups="groups"
:teamRanking="teamRanking"
@select-group="selectGroup"
/>
</div>
</div>
<!-- Team Members Detail Section -->
@@ -145,7 +150,11 @@ import TeamAlerts from '../maneger/components/TeamAlerts.vue'
import ProblemRanking from './components/ProblemRanking.vue'
import StatisticalIndicators from './components/StatisticalIndicators.vue'
import UserDropdown from '@/components/UserDropdown.vue'
import { getOverallTeamPerformance,getTotalGroupCount,getConversionRate,getTotalCallCount,getNewCustomer,getDepositConversionRate,getActiveCustomerCommunicationRate,getAverageAnswerTime,getTimeoutRate,getTableFillingRate } from '@/api/senorManger.js'
import { getOverallTeamPerformance,getTotalGroupCount,getConversionRate,getTotalCallCount,
getNewCustomer,getDepositConversionRate,getActiveCustomerCommunicationRate,getAverageAnswerTime,
getTimeoutRate,getTableFillingRate,getUrgentNeedToAddress,getTeamRanking } from '@/api/senorManger.js'
import { useUserStore } from '@/stores/user.js'
@@ -311,18 +320,99 @@ async function fetchTableFillingRate() {
console.error('获取表格填写率失败:', error)
}
}
const problemRanking = ref({})
// 客户迫切解决的问题
async function fetchUrgentNeedToAddress() {
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString()
}
try {
const response = await getUrgentNeedToAddress(params)
problemRanking.value = response.data
/**
* "data": {
"user_name": "陈盼良",
"user_level": 3,
"calculate_urgent_issue_ratio": {
"成绩提升": "0.00%",
"少玩手机": "0.00%",
"回归学校": "0.00%",
"心理健康": "0.00%"
},
"urgent_issue_consultations": {
"成绩提升": 0,
"少玩手机": 0,
"回归学校": 0,
"心理健康": 0
}
}
*/
// console.log('客户迫切解决的问题:', response.data)
} catch (error) {
console.error('获取客户迫切解决的问题失败:', error)
}
}
//综合表现排名
const teamRanking = ref({})
async function fetchTeamRanking() {
console.log(555555,userStore.userInfo)
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString(),
}
try {
const response = await getTeamRanking(params)
teamRanking.value = response.data
/**
* "data": {
"user_name": "陈盼良",
"user_level": 3,
"formal_plural": {
"巅峰五部-时永帅": 2,
"技术部": 0,
"星火一部--张瑾": 4,
"美团业务支持部": 0,
"星耀三部-周毅": 3,
"亮剑二部-田贵星": 2,
"巅峰三部--刘东洋": 0
},
"composition_transformation": {
"巅峰五部-时永帅": "0.00%",
"技术部": "0.00%",
"星火一部--张瑾": "11.43%",
"美团业务支持部": "0.00%",
"星耀三部-周毅": "15.00%",
"亮剑二部-田贵星": "5.71%",
"巅峰三部--刘东洋": "0.00%"
}
}
*/
console.log('团队业绩排名:', response.data)
} catch (error) {
console.error('获取团队业绩排名失败:', error)
}
}
// 初始化时获取数据
onMounted(async ()=>{
await fetchOverallTeamPerformance()
await fetchActiveGroups()
await fetchConversionRate()
await fetchTotalCallCount()
await fetchNewCustomers()
await fetchDepositConversions()
await fetchCustomerCommunicationRate()
await fetchAverageResponseTime()
await fetchTimeoutRate()
await fetchTableFillingRate()
// await fetchOverallTeamPerformance()
// await fetchActiveGroups()
// await fetchConversionRate()
// await fetchTotalCallCount()
// await fetchNewCustomers()
// await fetchDepositConversions()
// await fetchCustomerCommunicationRate()
// await fetchAverageResponseTime()
// await fetchTimeoutRate()
// await fetchTableFillingRate()
await fetchUrgentNeedToAddress()
await fetchTeamRanking()
// await fetchProblemRanking()
})