uni-test.tsx 3.3 KB

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