refactor(views): 优化客户阶段显示逻辑和业绩单位显示

- 合并课1-4阶段显示,简化客户阶段逻辑
- 修改业绩显示单位为"单"而非货币
- 调整警告提示样式增加底部间距
- 完善组业绩详情请求参数处理
This commit is contained in:
2025-08-30 14:54:50 +08:00
parent 4c06067dd4
commit beec8c6cfb
4 changed files with 13 additions and 42 deletions

View File

@@ -91,6 +91,7 @@ const aggregatedAlerts = computed(() => {
padding: 0.25rem;
border-radius: 8px;
font-size: 0.9rem;
margin-bottom: 0.2rem;
&.warning {
background: #fef3c7;

View File

@@ -316,23 +316,6 @@ const getStageCount = (stageType) => {
return 0;
}
// 课1-4阶段从courseCustomers获取数量
if (stageType === '课1-4' && props.courseCustomers?.['课1-4']) {
return props.courseCustomers['课1-4'].length;
}
// 单独的课程阶段课1、课2、课3、课4
if (['课1', '课2', '课3', '课4'].includes(stageType)) {
if (props.courseCustomers?.['课1-4']) {
const courseNumber = stageType.replace('课', '');
return props.courseCustomers['课1-4'].filter(customer => {
// 检查客户是否参加了指定课程
return customer.class_num && customer.class_num.includes(courseNumber);
}).length;
}
return 0;
}
// 待填表单阶段特殊处理筛选customer_occupation或customer_child_education字段为'未知'的客户
if (stageType === '待填表单') {
if (props.customersList?.length) {
@@ -396,14 +379,11 @@ const stages = computed(() => {
{ id: 3, name: '待入群', displayName: '待入群', count: getStageCount('待入群'), color: '#bbdefb' },
{ id: 4, name: '待联系', displayName: '待联系', count: getStageCount('待联系'), color: '#bbdefb' },
{ id: 5, name: '待到课', displayName: '待到课', count: getStageCount('待到课'), color: '#bbdefb'},
{ id: 6, name: '课1', displayName: '课1', count: getStageCount('课1'), color: '#81c784' },
{ id: 7, name: '课2', displayName: '课2', count: getStageCount('课2'), color: '#64b5f6' },
{ id: 8, name: '课3', displayName: '课3', count: getStageCount('课3'), color: '#ffb74d' },
{ id: 9, name: '课4', displayName: '课4', count: getStageCount('课4'), color: '#f06292' },
{ id: 10, name: '点击未支付', displayName: '点击未支付', count: getStageCount('点击未支付'), color: '#42a5f5' },
{ id: 11, name: '付定金', displayName: '付定金', count: getStageCount('付定金'), color: '#2196f3' },
{ id: 12, name: '定金转化', displayName: '定金转化', count: getStageCount('定金转化'), color: '#1e88e5' },
{ id: 13, name: '成交', displayName: '成交', count: getStageCount('成交'), color: '#1976d2' }
{ id: 6, name: '课1-4', displayName: '课1-4', count: getStageCount('课1-4'), color: '#81c784' },
{ id: 7, name: '点击未支付', displayName: '点击未支付', count: getStageCount('点击未支付'), color: '#42a5f5' },
{ id: 8, name: '付定金', displayName: '付定金', count: getStageCount('付定金'), color: '#2196f3' },
{ id: 9, name: '定金转化', displayName: '定金转化', count: getStageCount('定金转化'), color: '#1e88e5' },
{ id: 10, name: '成交', displayName: '成交', count: getStageCount('成交'), color: '#1976d2' }
];
return stageList;
@@ -451,20 +431,7 @@ const selectStage = (stageName) => {
filteredCustomers: props.courseCustomers['课1-4']
});
return;
} else if (['课1', '课2', '课3', '课4'].includes(stageName)) {
// 单独的课程阶段
if (props.courseCustomers?.['课1-4']) {
const courseNumber = stageName.replace('课', '');
filteredCustomers = props.courseCustomers['课1-4'].filter(customer => {
return customer.class_num && customer.class_num.includes(courseNumber);
});
}
emit('stage-select', stageName, {
isCourseStage: true,
courseData: filteredCustomers,
filteredCustomers: filteredCustomers
});
return;
} else if (stageName === '成交') {
// 成交阶段使用payMoneyCustomersList数据
if (props.payMoneyCustomersList && props.payMoneyCustomersList.length > 0) {

View File

@@ -693,7 +693,10 @@ const conversionRateVsAverage = ref({})
// 根据传来的组名字来获取组业绩详情
async function CenterGroupPerformance(groupName) {
const params = getRequestParams()
const routeParams = getRequestParams()
const params = routeParams.user_name
? routeParams
: {user_name: userStore.userInfo.username, user_level: userStore.userInfo.user_level.toString()}
const hasParams = params.user_name
const requestParams = hasParams ? {
...params,

View File

@@ -21,7 +21,7 @@
<div class="key-metrics">
<div class="mini-metric">
<span class="mini-label">业绩</span>
<span class="mini-value">{{ formatCurrency(group.todayPerformance) }}</span>
<span class="mini-value">{{ group.todayPerformance }}</span>
</div>
<div class="mini-metric">
<span class="mini-label">转化</span>
@@ -84,7 +84,7 @@ const processedGroups = computed(() => {
id: index + 1,
name: name,
leader: leader,
todayPerformance: performance * 10000, // 假设单位转换
todayPerformance: performance, // 假设单位转换
conversionRate: conversionRate,
newClients: Math.floor(performance * 2.5), // 根据业绩估算
deals: performance,