feat(secondTop): 添加各阶段转化率功能并集成到组排名组件
- 新增获取各阶段转化率API接口 - 在secondTop页面中调用API并获取数据 - 将转化率数据传递给GroupRanking组件 - 修改GroupRanking组件以动态显示转化率数据
This commit is contained in:
@@ -55,8 +55,6 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -67,42 +65,88 @@ const props = defineProps({
|
||||
selectedGroup: {
|
||||
type: Object,
|
||||
default: null
|
||||
},
|
||||
conversionData: {
|
||||
type: Object,
|
||||
default: () => ({})
|
||||
}
|
||||
})
|
||||
|
||||
// 转化率数据
|
||||
const conversionStages = ref([
|
||||
{
|
||||
name: '加微',
|
||||
teamRate: 80,
|
||||
companyRate: 85
|
||||
},
|
||||
{
|
||||
name: '填表',
|
||||
teamRate: 90,
|
||||
companyRate: 92
|
||||
},
|
||||
{
|
||||
name: '通话',
|
||||
teamRate: 95,
|
||||
companyRate: 95
|
||||
},
|
||||
{
|
||||
name: '首课',
|
||||
teamRate: 60,
|
||||
companyRate: 65
|
||||
},
|
||||
{
|
||||
name: '三课',
|
||||
teamRate: 85,
|
||||
companyRate: 88
|
||||
},
|
||||
{
|
||||
name: '付费',
|
||||
teamRate: 15,
|
||||
companyRate: 20
|
||||
const conversionStages = computed(() => {
|
||||
// 如果有传入的转化率数据,使用传入的数据
|
||||
if (props.conversionData && props.conversionData.conversion_rate && props.conversionData.company_conversion_rate) {
|
||||
const userRates = props.conversionData.conversion_rate
|
||||
const companyRates = props.conversionData.company_conversion_rate
|
||||
|
||||
return [
|
||||
{
|
||||
name: '加微',
|
||||
teamRate: parseFloat(userRates['加微']) || 0,
|
||||
companyRate: parseFloat(companyRates['加微']) || 0
|
||||
},
|
||||
{
|
||||
name: '填表',
|
||||
teamRate: parseFloat(userRates['填表']) || 0,
|
||||
companyRate: parseFloat(companyRates['填表']) || 0
|
||||
},
|
||||
{
|
||||
name: '通话',
|
||||
teamRate: parseFloat(userRates['通话']) || 0,
|
||||
companyRate: parseFloat(companyRates['通话']) || 0
|
||||
},
|
||||
{
|
||||
name: '首课',
|
||||
teamRate: parseFloat(userRates['首课']) || 0,
|
||||
companyRate: parseFloat(companyRates['首课']) || 0
|
||||
},
|
||||
{
|
||||
name: '三课',
|
||||
teamRate: parseFloat(userRates['三课']) || 0,
|
||||
companyRate: parseFloat(companyRates['三课']) || 0
|
||||
},
|
||||
{
|
||||
name: '付费',
|
||||
teamRate: parseFloat(userRates['付费']) || 0,
|
||||
companyRate: parseFloat(companyRates['付费']) || 0
|
||||
}
|
||||
]
|
||||
}
|
||||
])
|
||||
|
||||
// 默认数据
|
||||
return [
|
||||
{
|
||||
name: '加微',
|
||||
teamRate: 80,
|
||||
companyRate: 85
|
||||
},
|
||||
{
|
||||
name: '填表',
|
||||
teamRate: 90,
|
||||
companyRate: 92
|
||||
},
|
||||
{
|
||||
name: '通话',
|
||||
teamRate: 95,
|
||||
companyRate: 95
|
||||
},
|
||||
{
|
||||
name: '首课',
|
||||
teamRate: 60,
|
||||
companyRate: 65
|
||||
},
|
||||
{
|
||||
name: '三课',
|
||||
teamRate: 85,
|
||||
companyRate: 88
|
||||
},
|
||||
{
|
||||
name: '付费',
|
||||
teamRate: 15,
|
||||
companyRate: 20
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
// Y轴标签
|
||||
const yAxisLabels = ref(['100%', '80%', '60%', '40%', '20%', '0%'])
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
<div class="bottom-section">
|
||||
<!-- Left Section - Group Performance Ranking -->
|
||||
<div class="left-section">
|
||||
<GroupRanking :groups="groups" :selected-group="selectedGroup" @select-group="selectGroup" />
|
||||
<GroupRanking :groups="groups" :selected-group="selectedGroup" :conversion-data="conversionRateVsAverage" @select-group="selectGroup" />
|
||||
</div>
|
||||
|
||||
<!-- Right Section - Group Comparison -->
|
||||
@@ -152,7 +152,9 @@
|
||||
import UserDropdown from '@/components/UserDropdown.vue'
|
||||
import {
|
||||
getOverallCenterPerformance, getTotalGroupCount, getCenterConversionRate, getTotalCallCount, getNewCustomer
|
||||
, getDepositConversionRate, getCustomerTypeDistribution, getUrgentNeedToAddress, getCenterAdvancedManagerList, getTeamRanking, getTeamRankingInfo
|
||||
, getDepositConversionRate, getCustomerTypeDistribution, getUrgentNeedToAddress, getCenterAdvancedManagerList, getTeamRanking,
|
||||
getTeamRankingInfo, getConversionRateVsAverage
|
||||
|
||||
} from '@/api/secondTop.js'
|
||||
import { useRouter } from 'vue-router'
|
||||
import { useUserStore } from '@/stores/user.js'
|
||||
@@ -317,6 +319,42 @@
|
||||
console.error('获取中心整体概览失败:', error)
|
||||
}
|
||||
}
|
||||
// 各阶段转化率
|
||||
const conversionRateVsAverage = ref({})
|
||||
async function CenterConversionRateVsAverage() {
|
||||
const params = getRequestParams()
|
||||
const hasParams = params.user_name
|
||||
try {
|
||||
const res = await getConversionRateVsAverage(hasParams ? params : undefined)
|
||||
if (res.code === 200) {
|
||||
conversionRateVsAverage.value = res.data
|
||||
/**
|
||||
* "data": {
|
||||
"user_name": "刘瑞",
|
||||
"user_level": 4,
|
||||
"conversion_rate": {
|
||||
"加微": "21.72%",
|
||||
"填表": "21.72%",
|
||||
"通话": "0.00%",
|
||||
"首课": "37.08%",
|
||||
"三课": "14.61%",
|
||||
"付费": "1.87%"
|
||||
},
|
||||
"company_conversion_rate": {
|
||||
"加微": "12.49%",
|
||||
"填表": "12.49%",
|
||||
"通话": "0.00%",
|
||||
"首课": "39.07%",
|
||||
"三课": "24.27%",
|
||||
"付费": "1.27%"
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('获取中心整体概览失败:', error)
|
||||
}
|
||||
}
|
||||
|
||||
// 综合排名---高级经理列表
|
||||
const seniorManagerList = ref([])
|
||||
@@ -409,6 +447,8 @@
|
||||
await CenterDepositConversionRate()
|
||||
await CenterCustomerType()
|
||||
await CenterUrgentNeedToAddress()
|
||||
await CenterConversionRateVsAverage()
|
||||
|
||||
await CenterSeniorManagerList()
|
||||
await CenterGroupList('all') // 初始化加载全部高级经理数据
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user