unit-Lesson.tsx 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import request from '@/helpers/request'
  2. import { state } from '@/state'
  3. import { Button, Empty, Grid, GridItem, Icon, showToast, Toast } from 'vant'
  4. import { defineComponent, onMounted, reactive, ref } from 'vue'
  5. import styles from './unit-lesson.module.less'
  6. import iconLook from './image/look.svg'
  7. import { useRoute, useRouter } from 'vue-router'
  8. import OEmpty from '@/components/o-empty'
  9. export default defineComponent({
  10. name: 'unit-Lesson',
  11. setup() {
  12. const route = useRoute()
  13. const router = useRouter()
  14. const forms = ref({} as any)
  15. const data = reactive({
  16. loading: true,
  17. list: [] as any
  18. })
  19. const getList = async () => {
  20. data.loading = true
  21. try {
  22. const res: any = await request.post(
  23. state.platformApi + '/courseSchedule/getCoursewareByClassId',
  24. {
  25. requestType: 'form',
  26. data: {
  27. classGroupId: route.query.classGroupId
  28. }
  29. }
  30. )
  31. if (Array.isArray(res?.data)) {
  32. data.list = res.data
  33. }
  34. } catch (error) {
  35. console.log(error)
  36. }
  37. data.loading = false
  38. }
  39. onMounted(() => {
  40. forms.value = { ...JSON.parse(sessionStorage.getItem('unit-create') || '{}') } as any
  41. getList()
  42. })
  43. const handleClick = (item: any) => {
  44. forms.value.coursewareName = item.coursewareName
  45. forms.value.lessonCoursewareId = item.lessonCoursewareId
  46. sessionStorage.setItem('unit-create', JSON.stringify(forms.value))
  47. router.push({
  48. path: '/uni-test',
  49. query: {
  50. lessonCoursewareId: item.lessonCoursewareId
  51. }
  52. })
  53. }
  54. return () => (
  55. <div style={{ paddingTop: '14px' }}>
  56. {data.list.length > 0 ? (
  57. <Grid gutter={14} columnNum={3} class={styles.grid}>
  58. {data.list.map((item: any) => {
  59. return (
  60. <GridItem>
  61. <div
  62. class={styles.gridItem}
  63. style={{
  64. background: item.coverImg
  65. ? ''
  66. : `hsla(${Math.floor(Math.random() * 360)},50%,50%,.8)`
  67. }}
  68. onClick={() => handleClick(item)}
  69. >
  70. <img src={item.coverImg} class={styles.cover} />
  71. <div class={styles.title}>{item.name}</div>
  72. <div class={styles.num}>共{item.unitTestNum || 0}次测验</div>
  73. {/* {!item.enableFlag && (
  74. <div class={styles.look}>
  75. <Icon name={iconLook} /> 未解锁
  76. </div>
  77. )} */}
  78. </div>
  79. </GridItem>
  80. )
  81. })}
  82. </Grid>
  83. ) : (
  84. <OEmpty btnStatus={false} tips="暂无内容"></OEmpty>
  85. )}
  86. {/* <Button onClick={() => {
  87. location.href = 'http://192.168.3.114:1000/teacher.html#/courseList?id=1610595624868495362'
  88. }}>胜强测试</Button>
  89. {!data.loading && !data.list.length && <OEmpty tips="没有课件" />} */}
  90. </div>
  91. )
  92. }
  93. })