diff --git a/my-vue-app/src/api/secondTop.js b/my-vue-app/src/api/secondTop.js
index af04dc6..d3e4125 100644
--- a/my-vue-app/src/api/secondTop.js
+++ b/my-vue-app/src/api/secondTop.js
@@ -60,6 +60,11 @@ export const getConversionRateVsAverage = (params) => {
return https.post('/api/v1/level_four/overview/conversion_rate_vs_average', params)
}
+// 营期管控 /api/v1/level_four/overview/camp_period_admin
+export const getCampPeriodAdmin = (params) => {
+ return https.post('/api/v1/level_four/overview/camp_period_admin', params)
+}
+
diff --git a/my-vue-app/src/views/secondTop/secondTop.vue b/my-vue-app/src/views/secondTop/secondTop.vue
index fa32786..e95f47a 100644
--- a/my-vue-app/src/views/secondTop/secondTop.vue
+++ b/my-vue-app/src/views/secondTop/secondTop.vue
@@ -29,14 +29,16 @@
营期所属阶段:
{{ currentStage }}
-
+
- 调整“接数据”天数:
+ 调整"接数据"天数:
-
-
{{ stage.name }}: {{ stage.startDate }} to {{ stage.endDate }}
+
+
+
+
@@ -180,11 +182,13 @@
import {
getOverallCenterPerformance, getTotalGroupCount, getCenterConversionRate, getTotalCallCount, getNewCustomer
, getDepositConversionRate, getCustomerTypeDistribution, getUrgentNeedToAddress, getCenterAdvancedManagerList, getTeamRanking,
- getTeamRankingInfo, getConversionRateVsAverage
- } from '@/api/secondTop.js'
+ getTeamRankingInfo, getConversionRateVsAverage,getCampPeriodAdmin } from '@/api/secondTop.js'
import { useRouter } from 'vue-router'
import { useUserStore } from '@/stores/user.js'
-
+ // 路由实例
+ const router = useRouter();
+ // 用户store实例
+ const userStore = useUserStore();
// 营期调控逻辑
// This would ideally come from a prop or API call based on the logged-in user
const centerData = ref({
@@ -247,23 +251,121 @@ const centerData = ref({
});
};
- const saveCampSettings = () => {
+ const saveCampSettings = async () => {
recalculateStageDates();
- console.log('Saving camp settings for', centerData.value.name);
- console.log('Updated data:', JSON.parse(JSON.stringify(centerData.value)));
- alert('营期设置已保存!');
+
+ // 准备API请求参数
+ const params = {
+ user_name: userStore.userInfo.username,
+ user_level: userStore.userInfo.user_level.toString(),
+ receipt_data_time: dataReceivingStage.value.days.toString()
+ };
+
+ try {
+ const res = await getCampPeriodAdmin(params);
+ if (res.code === 200) {
+ console.log('营期设置保存成功:', res.data);
+ alert('营期设置已保存!');
+ } else {
+ alert('保存失败,请重试');
+ }
+ } catch (error) {
+ console.error('保存营期设置失败:', error);
+ alert('保存失败,请重试');
+ }
};
+ // 结束营期
+ const finishCamp = async () => {
+ try {
+ const params = {
+ user_name: userStore.userInfo.username,
+ user_level: userStore.userInfo.user_level.toString(),
+ is_camp_finish: "true"
+ };
+
+ const res = await getCampPeriodAdmin(params);
+ if (res.code === 200) {
+ console.log('营期结束成功:', res.data);
+ alert('营期已成功结束!');
+ // 可以在这里添加页面跳转或其他后续操作
+ } else {
+ alert('结束营期失败,请重试');
+ }
+ } catch (error) {
+ console.error('结束营期失败:', error);
+ alert('结束营期失败,请重试!');
+ }
+ };
+
+ // console.log('currentStage', userStore.userInfo)
+
+ // 获取,修改当前营期
+ const campPeriodAdmin = ref({})
+ async function CenterCampPeriodAdmin() {
+ const params = {
+ user_name: userStore.userInfo.username
+ ,user_level: userStore.userInfo.user_level.toString()
+ }
+
+ const res = await getCampPeriodAdmin(params)
+ if (res.code === 200) {
+ campPeriodAdmin.value = res.data
+
+ // 根据API返回的数据更新centerData
+ if (res.data.camp_period) {
+ const campPeriod = res.data.camp_period
+
+ // 解析接数据阶段的开始日期作为营期开始日期
+ if (campPeriod.receipt_data_time) {
+ const startDate = campPeriod.receipt_data_time.split(' to ')[0].split(' ')[0]
+ centerData.value.startDate = startDate
+ }
+
+ // 计算各阶段天数
+ const calculateDays = (timeRange) => {
+ if (!timeRange) return 1
+ const [start, end] = timeRange.split(' to ')
+ const startDate = new Date(start.split(' ')[0])
+ const endDate = new Date(end.split(' ')[0])
+ return Math.ceil((endDate - startDate) / (1000 * 60 * 60 * 24)) + 1
+ }
+
+ // 更新各阶段天数
+ centerData.value.stages.forEach(stage => {
+ switch(stage.name) {
+ case '接数据':
+ stage.days = calculateDays(campPeriod.receipt_data_time)
+ break
+ case '课一':
+ stage.days = calculateDays(campPeriod.class_one)
+ break
+ case '课二':
+ stage.days = calculateDays(campPeriod.class_two)
+ break
+ case '课三':
+ stage.days = calculateDays(campPeriod.class_three)
+ break
+ case '课四':
+ stage.days = calculateDays(campPeriod.class_four)
+ break
+ }
+ })
+
+ // 重新计算阶段日期
+ recalculateStageDates()
+ }
+ }
+ }
+
+
+
+
// 组别数据
const groups = ref([])
// loading 状态
const isLoading = ref(false)
- // 路由实例
- const router = useRouter();
- // 用户store实例
- const userStore = useUserStore();
-
// 获取通用请求参数的函数
const getRequestParams = () => {
const params = {}
@@ -591,20 +693,23 @@ const conversionRateVsAverage = ref({})
return statusMap[status] || '未知'
}
onMounted(async () => {
- recalculateStageDates();
try {
isLoading.value = true
- await CenterOverallCenterPerformance()
- await CenterTotalGroupCount()
- await CenterConversionRate()
- await CenterTotalCallCount()
- await CenterNewCustomer()
- await CenterDepositConversionRate()
- await CenterCustomerType()
- await CenterUrgentNeedToAddress()
- await CenterConversionRateVsAverage()
- await CenterSeniorManagerList()
- await CenterGroupList('all') // 初始化加载全部高级经理数据
+ await CenterCampPeriodAdmin()
+ // CenterCampPeriodAdmin中已经调用了recalculateStageDates,这里不需要重复调用
+ // await CenterOverallCenterPerformance()
+ // await CenterTotalGroupCount()
+ // await CenterConversionRate()
+ // await CenterTotalCallCount()
+ // await CenterNewCustomer()
+ // await CenterDepositConversionRate()
+ // await CenterCustomerType()
+ // await CenterUrgentNeedToAddress()
+ // await CenterConversionRateVsAverage()
+ // await CenterSeniorManagerList()
+
+
+ // await CenterGroupList('all') // 初始化加载全部高级经理数据
} catch (error) {
console.error('数据加载失败:', error)
} finally {
@@ -1237,4 +1342,19 @@ const conversionRateVsAverage = ref({})
padding: 5px 10px;
font-size: 12px;
}
+
+.finish-camp-button {
+ padding: 8px 16px;
+ font-size: 14px;
+ background-color: #dc3545;
+ color: white;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+ transition: background-color 0.2s;
+
+ &:hover {
+ background-color: #c82333;
+ }
+}
\ No newline at end of file