index.tsx 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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 } from 'vue'
  5. import styles from './index.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: 'lessonCourseware',
  11. setup() {
  12. const route = useRoute()
  13. const router = useRouter()
  14. const data = reactive({
  15. loading: true,
  16. list: [] as any
  17. })
  18. const getList = async () => {
  19. data.loading = true
  20. if (route.query.code === 'select') {
  21. try {
  22. const res: any = await request.post(state.platformApi + `/courseSchedule/getCourseware/${route.query.courseScheduleId}`)
  23. if (Array.isArray(res?.data)) {
  24. data.list = res.data.map((n: any) => {
  25. return {
  26. coverImg: n.coverImg,
  27. name: n.coursewareName,
  28. id: n.lessonCoursewareId,
  29. courseNum: n.coursewareNum,
  30. }
  31. })
  32. }
  33. } catch (error) {}
  34. } else {
  35. try {
  36. const res: any = await request.post(state.platformApi + '/courseSchedule/myCourseware')
  37. if (Array.isArray(res?.data)) {
  38. data.list = res.data
  39. }
  40. } catch (error) {}
  41. }
  42. data.loading = false
  43. }
  44. onMounted(() => {
  45. getList()
  46. })
  47. const handleClick = (item: any) => {
  48. if (route.query.code === 'select') {
  49. router.push({
  50. path: '/courseList',
  51. query: {
  52. ...route.query,
  53. id: item.id
  54. }
  55. })
  56. return
  57. }
  58. router.push({
  59. path: '/courseList',
  60. query: {
  61. id: item.id
  62. }
  63. })
  64. }
  65. return () => (
  66. <div style={{ paddingTop: '14px' }}>
  67. <Grid gutter={14} columnNum={3} class={styles.grid}>
  68. {data.list.map((item: any) => {
  69. return (
  70. <GridItem>
  71. <div
  72. class={styles.gridItem}
  73. style={{
  74. background: item.coverImg
  75. ? ''
  76. : `hsla(${Math.floor(Math.random() * 360)},50%,50%,.8)`
  77. }}
  78. onClick={() => handleClick(item)}
  79. >
  80. <img src={item.coverImg} class={styles.cover} />
  81. <div class={styles.title}>{item.name}</div>
  82. <div class={styles.num}>共{item.courseNum}课</div>
  83. {/* {item.delFlag && (
  84. <div class={styles.look}>
  85. <Icon name={iconLook} /> 未解锁
  86. </div>
  87. )} */}
  88. </div>
  89. </GridItem>
  90. )
  91. })}
  92. </Grid>
  93. <Button onClick={() => {
  94. location.href = 'http://192.168.3.114:1000/teacher.html#/courseList?id=1610595624868495362'
  95. }}>胜强测试</Button>
  96. {!data.loading && !data.list.length && <OEmpty tips="没有课件" />}
  97. </div>
  98. )
  99. }
  100. })