index.tsx 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import request from '@/helpers/request'
  2. import { state } from '@/state'
  3. import { Button, Empty, Grid, GridItem, Icon } 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. export default defineComponent({
  9. name: 'lessonCourseware',
  10. setup() {
  11. const route = useRoute()
  12. const router = useRouter()
  13. const data = reactive({
  14. list: [] as any
  15. })
  16. const getList = async () => {
  17. try {
  18. const res: any = await request.post(
  19. state.platformApi + '/courseSchedule/myCoursewareDetail/' + route.query.id
  20. )
  21. if (Array.isArray(res?.data)) {
  22. data.list = res.data
  23. }
  24. } catch (error) {}
  25. }
  26. onMounted(() => {
  27. getList()
  28. })
  29. const handleClick = (item: any) => {
  30. if (route.query.code === 'select') {
  31. console.log('选择课时')
  32. }
  33. router.push({
  34. path: '/coursewarePlay',
  35. query: {
  36. id: item.lessonCoursewareDetailId
  37. }
  38. })
  39. }
  40. return () => (
  41. <div style={{ paddingTop: '14px' }}>
  42. <Grid gutter={14} columnNum={3} class={styles.grid}>
  43. {data.list.map((item: any) => {
  44. return (
  45. <GridItem>
  46. <div
  47. class={styles.gridItem}
  48. style={{
  49. background: item.coverImg
  50. ? ''
  51. : `hsla(${Math.floor(Math.random() * 360)},50%,50%,.8)`
  52. }}
  53. onClick={() => handleClick(item)}
  54. >
  55. {/* <img src={item.coverImg} class={styles.cover} /> */}
  56. <div class={styles.title}>
  57. <div>{item.coursewareDetailName}</div>
  58. <div>已使用 {item.useNum} 次</div>
  59. </div>
  60. <div class={styles.num}>
  61. 查看
  62. <Icon name="play-circle-o" />
  63. </div>
  64. {item.unlock && (
  65. <div class={styles.look}>
  66. <Icon name={iconLook} /> 未解锁
  67. </div>
  68. )}
  69. </div>
  70. </GridItem>
  71. )
  72. })}
  73. </Grid>
  74. <Button onClick={() => {
  75. location.href = 'http://192.168.3.114:1000/teacher.html#/coursewarePlay?id=1610595720511209474'
  76. }}>测试</Button>
  77. {!data.list.length && <Empty description="空空如也" />}
  78. </div>
  79. )
  80. }
  81. })