From b7d46c3dde144ed885c7774b4397b79091f7568b Mon Sep 17 00:00:00 2001 From: lbw_9527443 <780139497@qq.com> Date: Tue, 26 Aug 2025 13:12:35 +0800 Subject: [PATCH] =?UTF-8?q?refactor(secondTop):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E8=90=A5=E6=9C=9F=E8=AE=BE=E7=BD=AE=E5=92=8C=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 使用getRequestParams统一处理请求参数 将硬编码的字符串值改为变量引用 --- .../components/SalesTimelineWithTaskList.vue | 140 ++++++++++++------ .../views/secondTop/components/Calendar.vue | 2 +- my-vue-app/src/views/secondTop/secondTop.vue | 11 +- 3 files changed, 96 insertions(+), 57 deletions(-) diff --git a/my-vue-app/src/views/person/components/SalesTimelineWithTaskList.vue b/my-vue-app/src/views/person/components/SalesTimelineWithTaskList.vue index 9cc5a64..075e134 100644 --- a/my-vue-app/src/views/person/components/SalesTimelineWithTaskList.vue +++ b/my-vue-app/src/views/person/components/SalesTimelineWithTaskList.vue @@ -214,54 +214,106 @@ const totalCustomers = computed(() => { }); +// 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 === '成交') { 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; + // 课1-4阶段从courseCustomers获取数量 + if (stageType === '课1-4' && props.courseCustomers?.['课1-4']) { + return props.courseCustomers['课1-4'].length; } - // 待到课阶段:统计没有到课数据的客户数量 - 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; + // 后3个阶段从courseCustomers中筛选 + if (['点击未支付', '付定金', '定金转化'].includes(stageType)) { + if (props.courseCustomers?.['课1-4']) { + return props.courseCustomers['课1-4'].filter(customer => customer.type === stageType).length; } - return props.data[stageType] || 0; + return 0; } // 课1-4阶段从courseCustomers获取数量 @@ -280,15 +332,6 @@ const getStageCount = (stageType) => { } 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; @@ -298,7 +341,6 @@ const getStageCount = (stageType) => { return props.data[stageType] || 0; }; - const stages = computed(() => { // 全部阶段的数量就是前6个阶段的数量 const totalCount = props.customersList?.length || 0; diff --git a/my-vue-app/src/views/secondTop/components/Calendar.vue b/my-vue-app/src/views/secondTop/components/Calendar.vue index e72d93d..b8a667a 100644 --- a/my-vue-app/src/views/secondTop/components/Calendar.vue +++ b/my-vue-app/src/views/secondTop/components/Calendar.vue @@ -381,7 +381,7 @@ const finishCamp = async () => { try { isCampFinished.value = true; await CenterCampPeriodAdmin({ - is_camp_finish: true + is_camp_finish: "11" }); } catch (error) { console.error('结束营期失败:', error); diff --git a/my-vue-app/src/views/secondTop/secondTop.vue b/my-vue-app/src/views/secondTop/secondTop.vue index 62c0c1a..518c523 100644 --- a/my-vue-app/src/views/secondTop/secondTop.vue +++ b/my-vue-app/src/views/secondTop/secondTop.vue @@ -246,11 +246,9 @@ const centerData = ref({ // 保存营期 const saveCampSettings = async () => { recalculateStageDates(); - // 准备API请求参数 const params = { - user_name: userStore.userInfo.username, - user_level: userStore.userInfo.user_level.toString(), + ...getRequestParams(), receipt_data_time: dataReceivingStage.value.days.toString() }; @@ -267,14 +265,13 @@ const centerData = ref({ alert('保存失败,请重试'); } }; - +const padding111 = ref('11') // 结束营期 const finishCamp = async () => { try { const params = { - user_name: userStore.userInfo.username, - user_level: userStore.userInfo.user_level.toString(), - is_camp_finish: "true" + ...getRequestParams(), + is_camp_finish: padding111.value.toString() }; const res = await getCampPeriodAdmin(params);