feat(销售时间轴): 添加time_and_camp_stage字段支持并优化课程阶段筛选逻辑

- 在客户数据中添加time_and_camp_stage字段用于记录付款行为发生的课程阶段
- 重构课程阶段筛选逻辑,优先使用time_and_camp_stage字段进行精确匹配
- 移除已注释的旧代码
- 更新API基础路径为生产环境
This commit is contained in:
2025-09-01 21:14:52 +08:00
parent e7f9abcc19
commit d5792be702
3 changed files with 50 additions and 98 deletions

View File

@@ -374,90 +374,6 @@ const totalCustomers = computed(() => {
return Math.max(...baseStages, 1);
});
// const getStageCount = (stageType) => {
// // 成交阶段从payMoneyCustomersList获取数量
// if (stageType === '成交') {
// return props.payMoneyCustomersCount || (props.payMoneyCustomersList?.length || 0);
// }
// // 待填表单阶段统计customer_occupation或customer_child_education字段为'未知'的客户数量
// if (stageType === '待填表单') {
// if (props.customersList?.length) {
// return props.customersList.filter(customer => {
// return (customer.customer_occupation === '未知' || !customer.customer_occupation) ||
// (customer.customer_child_education === '未知' || !customer.customer_child_education);
// }).length;
// }
// return props.data[stageType] || 0;
// }
// // 待到课阶段:统计没有到课数据的客户数量
// if (stageType === '待到课') {
// if (props.customersList?.length) {
// return props.customersList.filter(customer => {
// // 根据getAttendedLessons函数的逻辑判断是否为'未到课'
// const classNum = customer.class_num;
// const classSituation = customer.class_situation;
// // 优先检查class_num字段
// if (classNum && Array.isArray(classNum) && classNum.length > 0) {
// return false; // 有class_num数据不是待到课
// }
// // 检查class_situation字段
// if (!classSituation) return true; // 没有class_situation是待到课
// if (Array.isArray(classSituation)) {
// return classSituation.length === 0; // 空数组,是待到课
// }
// if (typeof classSituation === 'object') {
// const lessonNumbers = Object.keys(classSituation)
// .map(key => parseInt(key))
// .filter(num => !isNaN(num));
// return lessonNumbers.length === 0; // 没有有效的课程数据,是待到课
// }
// return true; // 其他情况默认为待到课
// }).length;
// }
// return props.data[stageType] || 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;
// }
// // 后3个阶段从courseCustomers中筛选
// if (['点击未支付', '付定金', '定金转化'].includes(stageType)) {
// if (props.courseCustomers?.['课1-4']) {
// return props.courseCustomers['课1-4'].filter(customer => customer.type === stageType).length;
// }
// return 0;
// }
// // 前6个阶段从customersList中筛选
// if (props.customersList?.length) {
// return props.customersList.filter(customer => customer.type === stageType).length;
// }
// // 如果没有数据使用props.data中的数据
// return props.data[stageType] || 0;
// };
const getStageCount = (stageType) => {
// 成交阶段从payMoneyCustomersList获取数量
if (stageType === '成交') {
@@ -722,10 +638,27 @@ const getCourseStageCount = (courseNumber, stageType) => {
return false;
});
} else {
// 其他阶段从courseCustomers中筛选
const courseKey = `${courseNumber}`;
if (props.courseCustomers?.[courseKey]) {
filteredCustomers = props.courseCustomers[courseKey].filter(customer => customer.type === stageType);
// 其他阶段从courseCustomers['课1-4']中筛选
if (props.courseCustomers?.['课1-4']) {
filteredCustomers = props.courseCustomers['课1-4'].filter(customer => {
// 检查客户的付款行为是否发生在指定课程阶段并且类型匹配
let hasPaymentInCourse = false;
// 优先使用time_and_camp_stage字段判断付款行为发生的课程阶段
if (customer.time_and_camp_stage && Array.isArray(customer.time_and_camp_stage)) {
hasPaymentInCourse = customer.time_and_camp_stage.some(record => {
return record.camp_stage === `${courseNumber}` && record.pay_status === stageType;
});
}
// 如果time_and_camp_stage没有匹配的记录则回退到class_num字段
if (!hasPaymentInCourse) {
const hasAttendedCourse = customer.class_num && Array.isArray(customer.class_num) && customer.class_num.includes(courseNumber);
hasPaymentInCourse = hasAttendedCourse && customer.type === stageType;
}
return hasPaymentInCourse;
});
}
}
@@ -814,9 +747,23 @@ const selectCourseStage = (courseNumber, stageType) => {
// 其他阶段从courseCustomers中筛选
if (props.courseCustomers?.['课1-4']) {
filteredCustomers = props.courseCustomers['课1-4'].filter(customer => {
// 检查客户是否参加了指定课程并且类型匹配
const hasAttendedCourse = customer.class_num && customer.class_num.includes(courseNumber);
return hasAttendedCourse && customer.type === stageType;
// 检查客户的付款行为是否发生在指定课程阶段并且类型匹配
let hasPaymentInCourse = false;
// 优先使用time_and_camp_stage字段判断付款行为发生的课程阶段
if (customer.time_and_camp_stage && Array.isArray(customer.time_and_camp_stage)) {
hasPaymentInCourse = customer.time_and_camp_stage.some(record => {
return record.camp_stage === `${courseNumber}` && record.pay_status === stageType;
});
}
// 如果time_and_camp_stage没有匹配的记录则回退到class_num字段
if (!hasPaymentInCourse) {
const hasAttendedCourse = customer.class_num && customer.class_num.includes(courseNumber);
hasPaymentInCourse = hasAttendedCourse && customer.type === stageType;
}
return hasPaymentInCourse;
});
}
}