unit-Lesson.tsx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  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. import CourseItem from '@/views/lessonCourseware/component/CourseItem'
  10. import OSticky from '@/components/o-sticky'
  11. import OHeader from '@/components/o-header'
  12. export default defineComponent({
  13. name: 'unit-Lesson',
  14. setup() {
  15. const route = useRoute()
  16. const router = useRouter()
  17. const forms = ref({} as any)
  18. const data = reactive({
  19. loading: true,
  20. list: [] as any
  21. })
  22. const filterData = (list: any[]) => {
  23. const schoolTerm = {}
  24. for(let i = 0; i < list.length; i++){
  25. if (schoolTerm[list[i].sortNo]){
  26. schoolTerm[list[i].sortNo].push(list[i])
  27. } else {
  28. schoolTerm[list[i].sortNo] = [list[i]]
  29. }
  30. }
  31. return schoolTerm
  32. }
  33. const getList = async () => {
  34. data.loading = true
  35. try {
  36. const res: any = await request.post(
  37. state.platformApi + '/courseSchedule/getCoursewareByClassId',
  38. {
  39. requestType: 'form',
  40. data: {
  41. classGroupId: route.query.classGroupId
  42. }
  43. }
  44. )
  45. if (Array.isArray(res?.data)) {
  46. const list = res.data.filter((item: any) => item.unitTestNum).map((n: any) => {
  47. return {
  48. coverImg: n.coverImg,
  49. name: n.coursewareName,
  50. id: n.lessonCoursewareId,
  51. courseNum: n.coursewareNum
  52. }
  53. })
  54. data.list = filterData(list)
  55. }
  56. } catch (error) {
  57. console.log(error)
  58. }
  59. data.loading = false
  60. }
  61. onMounted(() => {
  62. forms.value = { ...JSON.parse(sessionStorage.getItem('unit-create') || '{}') } as any
  63. getList()
  64. })
  65. const handleClick = (item: any) => {
  66. forms.value.coursewareName = item.coursewareName
  67. forms.value.lessonCoursewareId = item.lessonCoursewareId
  68. sessionStorage.setItem('unit-create', JSON.stringify(forms.value))
  69. router.push({
  70. path: '/uni-test',
  71. query: {
  72. lessonCoursewareId: item.lessonCoursewareId
  73. }
  74. })
  75. }
  76. return () => (
  77. <div
  78. class={[styles.unitLesson, Object.values(data.list).length ? '' : 'emptyRootContainer']}
  79. >
  80. <OSticky
  81. onGetHeight={(height: number) => {
  82. document.documentElement.style.setProperty('--header-height', height + 'px')
  83. }}
  84. >
  85. <OHeader
  86. border={false}
  87. background="rgba(255, 232, 206, 1)"
  88. color="rgba(124, 61, 18, 1)"
  89. title="选择教材"
  90. />
  91. </OSticky>
  92. {Object.keys(data.list).map((key: any) => {
  93. return <CourseItem term={key} list={data.list[key]} onItemClick={(row) => handleClick(row)} />
  94. })}
  95. {!data.loading && !Object.values(data.list).length && <OEmpty btnStatus={false} tips="暂无教材"></OEmpty>}
  96. {/* <Button onClick={() => {
  97. location.href = 'http://192.168.3.114:1000/teacher.html#/courseList?id=1610595624868495362'
  98. }}>胜强测试</Button>
  99. {!data.loading && !data.list.length && <OEmpty tips="没有课件" />} */}
  100. </div>
  101. )
  102. }
  103. })