import { get } from 'radash' import { Activity, StudyTour } from '../core/libs/models' import { getActivityStatusButtonText } from '../core/utils/common' import dayjs from 'dayjs' import { useUserStore } from '../store' import { storeToRefs } from 'pinia' /** * 游学活动 */ export const useActivity = (options: Partial) => { const userStore = useUserStore() const { userInfo } = storeToRefs(userStore) const applyStartAt = options?.applyStartTime || options?.planApplyStartTime const applyEndAt = options?.applyEndTime || options?.planApplyEndTime const startAt = options?.activityStartTime || options?.studyStartTime const endAt = options?.activityEndTime || options?.studyEndTime const listItemButtonText = ref(getActivityStatusButtonText(applyStartAt, applyEndAt)) const tooltipShow = ref(true) const difference = computed(() => options?.needPointsType === '1' ? options?.needPointsCount - userInfo.value?.level?.point : 0, ) const getActivityStatus = () => { const now = new Date() if (dayjs(now).isBefore(dayjs(applyStartAt))) { return 'waiting' } else if (dayjs(now).isAfter(dayjs(applyStartAt)) && dayjs(now).isBefore(dayjs(applyEndAt))) { return 'registering' } else if (dayjs(now).isAfter(dayjs(applyEndAt)) && dayjs(now).isBefore(dayjs(startAt))) { return 'closed' } else if (dayjs(now).isAfter(dayjs(startAt)) && dayjs(now).isBefore(dayjs(endAt))) { return 'running' } else { return 'overdue' } } const getActivityStatusText = () => ({ waiting: '未开始', registering: '报名中', closed: '报名已结束', running: '活动进行中', overdue: '活动已结束', })[getActivityStatus()] const status = ref(getActivityStatus()) const statusText = ref(getActivityStatusText()) const detailButtonText = ref() const refresh = () => { listItemButtonText.value = getActivityStatusButtonText(applyStartAt, applyEndAt) status.value = getActivityStatus() statusText.value = getActivityStatusText() } return { getActivityStatusButtonText: () => getActivityStatusButtonText( options?.applyStartTime || options?.planApplyStartTime, options?.applyEndTime || options?.planApplyEndTime, ), getActivityStatusText: () => getActivityStatusText(), status, listItemButtonText, statusText, tooltipShow, difference, refresh, } }