12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- 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<Activity | StudyTour>) => {
- 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,
- }
- }
|