feat(团队管理): 实现团队概览和统计指标数据绑定

- 增加团队概览组件数据绑定逻辑
- 实现统计指标组件数据获取与展示
- 更新API接口调用和数据处理逻辑
- 调整超时时间为30秒以适应网络环境
- 添加调试日志用于问题排查
This commit is contained in:
2025-08-12 21:33:02 +08:00
parent d8bfcaab90
commit c48f39fb5e
7 changed files with 277 additions and 42 deletions

View File

@@ -15,17 +15,20 @@
<!-- Main Content -->
<main class="dashboard-main">
<div class="top-section">
<CenterOverview style="height: 330px;" />
<CenterOverview
style="height: 330px;"
:overallTeamPerformance="overallTeamPerformance"
/>
<div class="action-items-compact">
<TeamAlerts style="height: 300px;" />
</div>
</div>
<StatisticalIndicators
:customerCommunicationRate="customerCommunicationRate"
:averageResponseTime="averageResponseTime"
:timeoutResponseRate="timeoutResponseRate"
:severeTimeoutRate="severeTimeoutRate"
:formCompletionRate="formCompletionRate"
:customerCommunicationRate="statisticalIndicators.customerCommunicationRate"
:averageResponseTime="statisticalIndicators.averageResponseTime"
:timeoutResponseRate="statisticalIndicators.timeoutResponseRate"
:severeTimeoutRate="statisticalIndicators.severeTimeoutRate"
:formCompletionRate="statisticalIndicators.formCompletionRate"
/>
<!-- Bottom Section -->
<div class="bottom-section">
@@ -133,16 +136,19 @@
</template>
<script setup>
import { ref } from 'vue'
import { ref, onMounted } from 'vue'
import CenterOverview from './components/CenterOverview.vue'
import GroupComparison from './components/GroupComparison.vue'
import GroupRanking from './components/GroupRanking.vue'
import TeamAlerts from '../maneger/components/TeamAlerts.vue'
import CustomerDetail from './components/CustomerDetail.vue'
import ProblemRanking from './components/ProblemRanking.vue'
import StatisticalIndicators from './components/StatisticalIndicators.vue'
import manager from './components/manager.vue'
import UserDropdown from '@/components/UserDropdown.vue'
import { getOverallTeamPerformance,getTotalGroupCount,getConversionRate,getTotalCallCount,getNewCustomer,getDepositConversionRate,getActiveCustomerCommunicationRate,getAverageAnswerTime,getTimeoutRate,getTableFillingRate } from '@/api/senorManger.js'
import { useUserStore } from '@/stores/user.js'
const customerCommunicationRate = ref(85)
const averageResponseTime = ref(15)
@@ -150,6 +156,192 @@ const timeoutResponseRate = ref(5)
const severeTimeoutRate = ref(2)
const formCompletionRate = ref(90)
const userStore = useUserStore()
// 整体概览
const overallTeamPerformance = ref({
totalPerformance: {},
activeGroups: {},
conversionRate: {},
totalCalls: {},
newCustomers: {},
depositConversions: {},
})
// 获取整体概览数据--团队总业绩
async function fetchOverallTeamPerformance() {
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString()
}
// 团队总业绩
try {
const response = await getOverallTeamPerformance(params)
overallTeamPerformance.value.totalPerformance = response.data
} catch (error) {
console.error('获取整体概览数据失败:', error)
}
}
// 获取整体概览数据--活跃组数
async function fetchActiveGroups() {
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString()
}
try {
const response = await getTotalGroupCount(params)
overallTeamPerformance.value.activeGroups = response.data
console.log('活跃组数:', response.data)
} catch (error) {
console.error('获取活跃组数失败:', error)
}
}
// 获取整体概览数据--团队转化率
async function fetchConversionRate() {
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString()
}
try {
const response = await getConversionRate(params)
overallTeamPerformance.value.conversionRate = response.data
} catch (error) {
console.error('获取团队转化率失败:', error)
}
}
// 通话次数
async function fetchTotalCallCount() {
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString()
}
try {
const response = await getTotalCallCount(params)
overallTeamPerformance.value.totalCalls = response.data
} catch (error) {
console.error('获取通话次数失败:', error)
}
}
// 新增客户
async function fetchNewCustomers() {
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString()
}
try {
const response = await getNewCustomer(params)
overallTeamPerformance.value.newCustomers = response.data
} catch (error) {
console.error('获取新增客户失败:', error)
}
}
// 定金转化
async function fetchDepositConversions() {
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString()
}
try {
const response = await getDepositConversionRate(params)
overallTeamPerformance.value.depositConversions = response.data
console.log(99888999,response.data)
} catch (error) {
console.error('获取定金转化失败:', error)
}
}
const statisticalIndicators = ref({
customerCommunicationRate: 0,
averageResponseTime: 0,
timeoutResponseRate: 0,
severeTimeoutRate: 0,
formCompletionRate: 0,
})
// 统计指标--活跃客户沟通率
async function fetchCustomerCommunicationRate() {
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString()
}
try {
const response = await getActiveCustomerCommunicationRate(params)
statisticalIndicators.value.customerCommunicationRate = response.data
} catch (error) {
console.error('获取活跃客户沟通率失败:', error)
}
}
// 统计指标--平均应答时间
async function fetchAverageResponseTime() {
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString()
}
try {
const response = await getAverageAnswerTime(params)
statisticalIndicators.value.averageResponseTime = response.data
} catch (error) {
console.error('获取平均应答时间失败:', error)
}
}
// 统计指标--超时应答率、严重超时应答率
async function fetchTimeoutRate() {
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString()
}
try {
const response = await getTimeoutRate(params)
statisticalIndicators.value.timeoutResponseRate = response.data
} catch (error) {
console.error('获取超时应答率失败:', error)
}
}
// 统计指标--表格填写率
async function fetchTableFillingRate() {
const params={
user_name: userStore.userInfo.username,
user_level: userStore.userInfo.user_level.toString()
}
try {
const response = await getTableFillingRate(params)
statisticalIndicators.value.formCompletionRate = 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()
})
// 组别数据
const groups = [
{