uni-test.tsx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. import request from '@/helpers/request'
  2. import { state } from '@/state'
  3. import { Button, Empty, Grid, GridItem, Icon, showConfirmDialog, showToast } from 'vant'
  4. import { defineComponent, onMounted, reactive, onUnmounted, ref } from 'vue'
  5. import styles from './uni-test.module.less'
  6. import { useRoute, useRouter } from 'vue-router'
  7. import {
  8. listenerMessage,
  9. postMessage,
  10. promisefiyPostMessage,
  11. removeListenerMessage
  12. } from '@/helpers/native-message'
  13. import OEmpty from '@/components/o-empty'
  14. import iconLook from './image/look.svg'
  15. import iconCourse from '@/views/courseList/image/icon-course.png'
  16. import { browser } from '@/helpers/utils'
  17. export default defineComponent({
  18. name: 'uni-test',
  19. setup() {
  20. const route = useRoute()
  21. const router = useRouter()
  22. const browserInfo = browser()
  23. // const catchList = store
  24. const forms = ref({} as any)
  25. const data = reactive({
  26. loading: true,
  27. list: [] as any
  28. })
  29. const getList = async () => {
  30. data.loading = true
  31. try {
  32. const res: any = await request.post(
  33. state.platformApi + '/courseSchedule/queryUnitExamination',
  34. {
  35. requestType: 'form',
  36. data: {
  37. lessonCoursewareId: route.query.lessonCoursewareId,
  38. classGroupId: forms.value.classGroupId
  39. }
  40. }
  41. )
  42. // classGroupId: forms.value.classGroupId
  43. data.list = res.data || []
  44. } catch (error) {}
  45. data.loading = false
  46. }
  47. onMounted(() => {
  48. forms.value = { ...JSON.parse(sessionStorage.getItem('unit-create') || '{}') } as any
  49. getList()
  50. })
  51. const handleClick = async (item: any) => {
  52. if (route.query.code === 'select') {
  53. console.log('选择课时')
  54. return
  55. }
  56. // 选择考试 看详情
  57. forms.value.testName = item.name
  58. forms.value.testId = item.id
  59. sessionStorage.setItem('unit-create', JSON.stringify(forms.value))
  60. router.push({ path: '/uni-last' })
  61. }
  62. return () => (
  63. <div style={{ paddingTop: '14px' }}>
  64. {data.list.length > 0 ? (
  65. <Grid gutter={14} columnNum={3} class={styles.grid}>
  66. {data.list.map((item: any) => {
  67. return (
  68. <GridItem>
  69. <div class={styles.gridItem} onClick={() => handleClick(item)}>
  70. <img src={iconCourse} class={styles.cover} />
  71. <div class={styles.title}>
  72. <div class={styles.coreTitle}>{item.name}</div>
  73. {route.query.code !== 'select' && <div>已使用 {item.useNum} 次</div>}
  74. </div>
  75. {route.query.code !== 'select' ? (
  76. <>
  77. <div class={styles.num}>
  78. 查看
  79. <Icon name="play-circle-o" class={styles.playIcon} />
  80. </div>
  81. </>
  82. ) : null}
  83. {route.query.code == 'select' && !item.unlock && (
  84. <div class={styles.look} onClick={(e: Event) => e.stopPropagation()}>
  85. <Icon name={iconLook} /> 未解锁
  86. </div>
  87. )}
  88. </div>
  89. </GridItem>
  90. )
  91. })}
  92. </Grid>
  93. ) : (
  94. <OEmpty></OEmpty>
  95. )}
  96. </div>
  97. )
  98. }
  99. })