feat(活动状态): 添加活动开始状态检查并更新相关逻辑
在活动状态API和页面逻辑中添加对活动开始状态的检查 更新按钮禁用状态、提示文本和点击处理逻辑
Showing
2 changed files
with
38 additions
and
7 deletions
| 1 | /* | 1 | /* |
| 2 | * @Date: 2025-09-04 17:23:17 | 2 | * @Date: 2025-09-04 17:23:17 |
| 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com | 3 | * @LastEditors: hookehuyr hookehuyr@gmail.com |
| 4 | - * @LastEditTime: 2025-09-17 14:36:35 | 4 | + * @LastEditTime: 2025-09-28 15:12:11 |
| 5 | * @FilePath: /lls_program/src/api/map.js | 5 | * @FilePath: /lls_program/src/api/map.js |
| 6 | * @Description: 文件描述 | 6 | * @Description: 文件描述 |
| 7 | */ | 7 | */ |
| ... | @@ -54,7 +54,8 @@ export const getPosterDetailAPI = (params) => fn(fetch.get(Api.GET_POSTER_DETAIL | ... | @@ -54,7 +54,8 @@ export const getPosterDetailAPI = (params) => fn(fetch.get(Api.GET_POSTER_DETAIL |
| 54 | * @returns {number} response.code - 响应状态码 | 54 | * @returns {number} response.code - 响应状态码 |
| 55 | * @returns {string} response.msg - 响应消息 | 55 | * @returns {string} response.msg - 响应消息 |
| 56 | * @returns {Object} response.data - 响应数据 | 56 | * @returns {Object} response.data - 响应数据 |
| 57 | - * @returns {boolean} response.data.is_ended - 活动是否已经结束, 1 已结束, 0 未结束 | 57 | + * @returns {boolean} response.data.is_begin - 活动是否已经开始, true 已开始, false 未开始 |
| 58 | + * @returns {boolean} response.data.is_ended - 活动是否已经结束, true 已结束, false 未结束 | ||
| 58 | */ | 59 | */ |
| 59 | export const getActivityStatusAPI = (params) => fn(fetch.get(Api.GET_ACTIVITY_STATUS, params)); | 60 | export const getActivityStatusAPI = (params) => fn(fetch.get(Api.GET_ACTIVITY_STATUS, params)); |
| 60 | 61 | ... | ... |
| ... | @@ -54,9 +54,9 @@ | ... | @@ -54,9 +54,9 @@ |
| 54 | type="primary" | 54 | type="primary" |
| 55 | size="large" | 55 | size="large" |
| 56 | class="join-button" | 56 | class="join-button" |
| 57 | - :color="activityStatus.is_ended ? '#cccccc' : THEME_COLORS.PRIMARY" | 57 | + :color="activityStatus.is_ended || !activityStatus.is_begin ? '#cccccc' : THEME_COLORS.PRIMARY" |
| 58 | :loading="isJoining || activityStatus.loading" | 58 | :loading="isJoining || activityStatus.loading" |
| 59 | - :disabled="activityStatus.is_ended" | 59 | + :disabled="activityStatus.is_ended || !activityStatus.is_begin" |
| 60 | @click="checkFamilyStatusAndJoinActivity" | 60 | @click="checkFamilyStatusAndJoinActivity" |
| 61 | > | 61 | > |
| 62 | {{ getButtonText() }} | 62 | {{ getButtonText() }} |
| ... | @@ -209,6 +209,7 @@ const showLocationPrompt = ref(false) // 是否显示定位权限提示 | ... | @@ -209,6 +209,7 @@ const showLocationPrompt = ref(false) // 是否显示定位权限提示 |
| 209 | 209 | ||
| 210 | // 活动状态相关 | 210 | // 活动状态相关 |
| 211 | const activityStatus = ref({ | 211 | const activityStatus = ref({ |
| 212 | + is_begin: false, // 活动是否已开始 | ||
| 212 | is_ended: false, // 活动是否已结束 | 213 | is_ended: false, // 活动是否已结束 |
| 213 | loading: false // 是否正在加载活动状态 | 214 | loading: false // 是否正在加载活动状态 |
| 214 | }) | 215 | }) |
| ... | @@ -374,6 +375,11 @@ const getButtonText = () => { | ... | @@ -374,6 +375,11 @@ const getButtonText = () => { |
| 374 | return '活动已结束' | 375 | return '活动已结束' |
| 375 | } | 376 | } |
| 376 | 377 | ||
| 378 | + // 如果活动未开始,显示"活动未开始" | ||
| 379 | + if (!activityStatus.value.is_begin) { | ||
| 380 | + return '活动未开始' | ||
| 381 | + } | ||
| 382 | + | ||
| 377 | // 如果没有加入家庭,显示"加入家庭" | 383 | // 如果没有加入家庭,显示"加入家庭" |
| 378 | if (!hasJoinedFamily.value) { | 384 | if (!hasJoinedFamily.value) { |
| 379 | return '立即参加' | 385 | return '立即参加' |
| ... | @@ -402,6 +408,24 @@ const getButtonText = () => { | ... | @@ -402,6 +408,24 @@ const getButtonText = () => { |
| 402 | * 检查用户是否加入家庭并处理参加活动按钮点击 | 408 | * 检查用户是否加入家庭并处理参加活动按钮点击 |
| 403 | */ | 409 | */ |
| 404 | const checkFamilyStatusAndJoinActivity = async () => { | 410 | const checkFamilyStatusAndJoinActivity = async () => { |
| 411 | + // 如果活动已结束,显示提示 | ||
| 412 | + if (activityStatus.value.is_ended) { | ||
| 413 | + Taro.showToast({ | ||
| 414 | + title: '活动已结束', | ||
| 415 | + icon: 'none' | ||
| 416 | + }) | ||
| 417 | + return | ||
| 418 | + } | ||
| 419 | + | ||
| 420 | + // 如果活动未开始,显示提示 | ||
| 421 | + if (!activityStatus.value.is_begin) { | ||
| 422 | + Taro.showToast({ | ||
| 423 | + title: '活动尚未开始,请耐心等待', | ||
| 424 | + icon: 'none' | ||
| 425 | + }) | ||
| 426 | + return | ||
| 427 | + } | ||
| 428 | + | ||
| 405 | // 如果没有加入家庭,引导用户加入家庭 | 429 | // 如果没有加入家庭,引导用户加入家庭 |
| 406 | if (!hasJoinedFamily.value) { | 430 | if (!hasJoinedFamily.value) { |
| 407 | Taro.showModal({ | 431 | Taro.showModal({ |
| ... | @@ -929,16 +953,22 @@ const fetchActivityStatus = async () => { | ... | @@ -929,16 +953,22 @@ const fetchActivityStatus = async () => { |
| 929 | const { code, data } = await getActivityStatusAPI() | 953 | const { code, data } = await getActivityStatusAPI() |
| 930 | 954 | ||
| 931 | if (code === 1 && data) { | 955 | if (code === 1 && data) { |
| 956 | + activityStatus.value.is_begin = Boolean(data.is_begin) | ||
| 932 | activityStatus.value.is_ended = Boolean(data.is_ended) | 957 | activityStatus.value.is_ended = Boolean(data.is_ended) |
| 933 | - console.log('活动状态:', activityStatus.value.is_ended ? '已结束' : '进行中') | 958 | + console.log('活动状态:', { |
| 959 | + is_begin: activityStatus.value.is_begin ? '已开始' : '未开始', | ||
| 960 | + is_ended: activityStatus.value.is_ended ? '已结束' : '进行中' | ||
| 961 | + }) | ||
| 934 | } else { | 962 | } else { |
| 935 | console.warn('获取活动状态失败:', data) | 963 | console.warn('获取活动状态失败:', data) |
| 936 | - // 默认认为活动未结束,避免影响用户体验 | 964 | + // 默认认为活动未开始且未结束,避免影响用户体验 |
| 965 | + activityStatus.value.is_begin = false | ||
| 937 | activityStatus.value.is_ended = false | 966 | activityStatus.value.is_ended = false |
| 938 | } | 967 | } |
| 939 | } catch (error) { | 968 | } catch (error) { |
| 940 | console.error('获取活动状态异常:', error) | 969 | console.error('获取活动状态异常:', error) |
| 941 | - // 默认认为活动未结束,避免影响用户体验 | 970 | + // 默认认为活动未开始且未结束,避免影响用户体验 |
| 971 | + activityStatus.value.is_begin = false | ||
| 942 | activityStatus.value.is_ended = false | 972 | activityStatus.value.is_ended = false |
| 943 | } finally { | 973 | } finally { |
| 944 | activityStatus.value.loading = false | 974 | activityStatus.value.loading = false | ... | ... |
-
Please register or login to post a comment