index.vue 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <script setup>
  2. import { getCountDownTime } from '~/utils/day';
  3. import { paddingLeft } from '~/utils/string';
  4. import { child } from '~/store/child';
  5. // import { children } from '~/store/children';
  6. import getTeamInfo from '~/store/team';
  7. const children = JSON.parse(sessionStorage.getItem('children'))
  8. console.log('children :>> ', children);
  9. function handleNavLeftClick() {
  10. router.replace('/home')
  11. }
  12. function handleNavRightClick() {
  13. router.push('/stxk/jz/wd')
  14. }
  15. if (location.search) {
  16. location.search = "";
  17. }
  18. const router = useRouter()
  19. function handleClickCard(item) {
  20. router.push(`/stxk/jz/kcxq/${item.kk_id}`)
  21. }
  22. let loading = $ref(true)
  23. let kxq_code = $ref()
  24. getTeamInfo.then(
  25. (res) => {
  26. kxq_code = res.kxq_code
  27. loading = false
  28. }
  29. )
  30. function test(item) {
  31. return JSON.parse(item.kk_teacher || '{}')?.name ?? '-'
  32. }
  33. // 判断当前时间在报名时间前,报名时间内,报名时间后
  34. // 参数 startTime: 开始时间
  35. // 参数 endTime: 结束时间
  36. function getBmStatus(startTime, endTime) {
  37. const now = new Date().getTime()
  38. const start = new Date(startTime).getTime()
  39. const end = new Date(endTime).getTime()
  40. if (now < start) {
  41. return 0
  42. } else if (now >= start && now <= end) {
  43. return 1
  44. } else if (now > end) {
  45. return 2
  46. }
  47. }
  48. </script>
  49. <template>
  50. <van-sticky>
  51. <van-nav-bar title="社团选课" right-text="我的社团课程" @click-right="handleNavRightClick" left-arrow
  52. @click-left="handleNavLeftClick">
  53. </van-nav-bar>
  54. </van-sticky>
  55. <van-skeleton :row="3" :loading="loading">
  56. <remote-list url="/khfw/kcgl/index"
  57. :d="{ token: child.token, kxq_code, grade: children?.map(child => child.cm_info.map(({ grade }) => grade).join(','))?.join(',') }">
  58. <template #default="{ row: item }">
  59. <!-- :desc="item.desc" -->
  60. <van-card :price="item.kk_kcfy" :desc="`讲师:${test(item)}`" :title="item.kk_name" :thumb="item.kk_img"
  61. @click="handleClickCard(item)">
  62. <template #tag>
  63. <van-count-down v-if="getBmStatus(item.kk_bmkssj, item.kk_bmjssj) === 0"
  64. :time="getCountDownTime(item.kk_bmkssj)">
  65. <template #default="timeData">
  66. <span class="bg-opacity-50 text-light-900 bg-dark-900 px-1">
  67. {{ paddingLeft(timeData.days * 24 + timeData.hours) }}:{{ paddingLeft(timeData.minutes)
  68. }}:{{ paddingLeft(timeData.seconds) }}
  69. </span>
  70. </template>
  71. </van-count-down>
  72. <div class="text-white bg-blue-500 px-1 rounded-r-4px bg-opacity-60 leading-4"
  73. v-else-if="getBmStatus(item.kk_bmkssj, item.kk_bmjssj) === 1">报名中</div>
  74. <div class="text-white bg-red-500 px-1 rounded-r-4px bg-opacity-60 leading-4"
  75. v-else-if="getBmStatus(item.kk_bmkssj, item.kk_bmjssj) === 2">报名结束</div>
  76. </template>
  77. <template #num>
  78. <span>{{ item.khfw_kcbmxx.count }}人报名</span>
  79. </template>
  80. </van-card>
  81. </template>
  82. </remote-list>
  83. </van-skeleton></template>