feat(团队管理): 实现团队概览和统计指标数据绑定
- 增加团队概览组件数据绑定逻辑 - 实现统计指标组件数据获取与展示 - 更新API接口调用和数据处理逻辑 - 调整超时时间为30秒以适应网络环境 - 添加调试日志用于问题排查
This commit is contained in:
@@ -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 = [
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user