feat(manager): 实现团队管理页面的数据对接和功能优化

- 新增团队异常预警API接口和数据展示
- 完善销售漏斗组件,对接实际数据
- 优化业绩排名组件,支持多种数据源
- 更新成员详情组件,适配新数据结构
- 重构管理页面,整合多个API调用
This commit is contained in:
2025-08-14 12:00:04 +08:00
parent 366d7b6120
commit 70f44d87a3
7 changed files with 272 additions and 51 deletions

View File

@@ -19,13 +19,13 @@
<!-- Top Section - Team Alerts and Today's Report -->
<div class="top-section">
<!-- Team Alerts -->
<TeamAlerts />
<TeamAlerts :abnormalData="groupAbnormalResponse" />
<!-- Today's Team Report -->
<TeamReport :weekTotalData="weekTotalData" />
</div>
<!-- Sales Funnel Section -->
<SalesFunnel />
<SalesFunnel :funnelData="weekTotalData.group_funnel" />
<!-- Bottom Section -->
<div class="bottom-section">
@@ -34,6 +34,7 @@
<PerformanceRanking
:team-members="teamMembers"
:selected-member="selectedMember"
:group-ranking="groupRanking"
@select-member="selectMember"
/>
</div>
@@ -61,9 +62,7 @@ import RawDataCards from "../person/components/RawDataCards.vue";
import CustomerDetail from "../person/components/CustomerDetail.vue";
import { useUserStore } from "@/stores/user";
import { useRouter } from "vue-router";
import { getWeekTotalCall, getWeekAddCustomerTotal, getWeekAddDealTotal, getWeekAddFeeTotal, getGroupFunnel } from "@/api/manager.js";
import {getGroupAbnormalResponse, getWeekTotalCall, getWeekAddCustomerTotal, getWeekAddDealTotal, getWeekAddFeeTotal, getGroupFunnel,getPayDepositToMoneyRate,getGroupRanking } from "@/api/manager.js";
// 团队成员数据
const teamMembers = [
@@ -214,8 +213,21 @@ const weekTotalData = ref({
week_add_customer_total: {},
week_add_deal_total: {},
week_add_fee_total: {},
pay_deposit_to_money_rate: {},
group_funnel: {},
week_add_fee_total: {},
});
// 团队异常预警
const groupAbnormalResponse = ref({})
async function TeamGetGroupAbnormalResponse() {
const params = getRequestParams()
const hasParams = params.user_name
const res = await getGroupAbnormalResponse(hasParams ? params : undefined)
console.log(res)
if (res.code === 200) {
groupAbnormalResponse.value = res.data
}
}
// 团队总通话
async function TeamGetWeekTotalCall() {
const params = getRequestParams()
@@ -246,9 +258,19 @@ async function TeamGetWeekAddDealTotal() {
weekTotalData.value.week_add_deal_total = res.data
}
}
// 总业绩
// 月度总业绩
// 定金转化
async function TeamGetWeekAddFeeTotal() {
const params = getRequestParams()
const hasParams = params.user_name
const res = await getPayDepositToMoneyRate(hasParams ? params : undefined)
console.log(res)
if (res.code === 200) {
weekTotalData.value.pay_deposit_to_money_rate = res.data
}
}
// 销售漏斗
async function TeamGetGroupFunnel() {
const params = getRequestParams()
@@ -256,9 +278,74 @@ async function TeamGetGroupFunnel() {
const res = await getGroupFunnel(hasParams ? params : undefined)
console.log(res)
if (res.code === 200) {
weekTotalData.value.week_add_fee_total = res.data
weekTotalData.value.group_funnel = res.data
/**
* "data": {
"user_name": "马然",
"user_level": 2,
"customers_count": {
"线索总数": 132,
"有效沟通": 33,
"到课数据": 59,
"预付定金": 7,
"成功签单": 2
}
}
*/
}
}
// 团队业绩排名
const groupRanking = ref({})
async function TeamGetGroupRanking() {
const params = getRequestParams()
const hasParams = params.user_name
const res = await getGroupRanking(hasParams ? params : undefined)
console.log(res)
if (res.code === 200) {
groupRanking.value = res.data
/**
* "data": {
"user_name": "马然",
"user_level": 2,
"team_data": {
"group_list": [
{
"user_name": "马然",
"week_amount": 0,
"conversion_rate": "0%",
"plus_v_rate": "0%",
"group_rate": "0%"
},
{
"user_name": "程慧仟",
"week_amount": 7100.0,
"conversion_rate": "0.00%",
"plus_v_rate": "0.00%",
"group_rate": "0.00%"
},
{
"user_name": "常琳",
"week_amount": 14500.0,
"conversion_rate": "3.51%",
"plus_v_rate": "54.39%",
"group_rate": "49.12%"
},
{
"user_name": "王娟娟",
"week_amount": 600.0,
"conversion_rate": "0.00%",
"plus_v_rate": "3.08%",
"group_rate": "0.00%"
}
]
}
}
*/
}
}
// 成员详细数据
const memberDetails = ref({})
// 当前选中的成员,默认为第一名
@@ -269,11 +356,13 @@ const selectMember = (member) => {
selectedMember.value = member;
};
onMounted(async () => {
await TeamGetGroupAbnormalResponse()
await TeamGetWeekTotalCall()
await TeamGetWeekAddCustomerTotal()
await TeamGetWeekAddDealTotal()
// await TeamGetWeekAddFeeTotal()
await TeamGetWeekAddFeeTotal()
await TeamGetGroupFunnel()
await TeamGetGroupRanking()
})