hookehuyr

feat(活动状态): 添加活动开始状态检查并更新相关逻辑

在活动状态API和页面逻辑中添加对活动开始状态的检查
更新按钮禁用状态、提示文本和点击处理逻辑
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
......