index.tsx 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. import request from '@/helpers/request'
  2. import { state } from '@/state'
  3. import { Button, Empty, Grid, GridItem, Icon, showToast } 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 { postMessage } from '@/helpers/native-message'
  9. export default defineComponent({
  10. name: 'lessonCourseware',
  11. setup() {
  12. const route = useRoute()
  13. const router = useRouter()
  14. const data = reactive({
  15. list: [] as any
  16. })
  17. const getList = async () => {
  18. if (route.query.courseScheduleId) {
  19. try {
  20. const res: any = await request.post(
  21. state.platformApi + '/courseSchedule/getCoursewareDetail',
  22. {
  23. params: {
  24. courseScheduleId: route.query.courseScheduleId,
  25. coursewareId: route.query.id
  26. }
  27. }
  28. )
  29. if (Array.isArray(res?.data)) {
  30. data.list = res.data
  31. }
  32. } catch (error) {}
  33. } else {
  34. try {
  35. const res: any = await request.post(
  36. state.platformApi + '/courseSchedule/myCoursewareDetail/' + route.query.id
  37. )
  38. if (Array.isArray(res?.data)) {
  39. data.list = res.data
  40. }
  41. } catch (error) {}
  42. }
  43. }
  44. onMounted(() => {
  45. getList()
  46. })
  47. const handleClick = (item: any) => {
  48. if (route.query.code === 'select') {
  49. console.log('选择课时')
  50. setCoursewareDetail(item)
  51. return
  52. }
  53. router.push({
  54. path: '/coursewarePlay',
  55. query: {
  56. id: item.lessonCoursewareDetailId
  57. }
  58. })
  59. }
  60. // 绑定课时
  61. const setCoursewareDetail = async (item: any) => {
  62. try {
  63. const res: any = await request.post(
  64. state.platformApi + '/courseSchedule/setCoursewareDetail',
  65. {
  66. params: {
  67. courseScheduleId: route.query.courseScheduleId,
  68. coursewareDetailId: item.lessonCoursewareDetailId
  69. }
  70. }
  71. )
  72. if (res.code === 200) {
  73. showToast('保存成功')
  74. postMessage({ api: 'back' })
  75. }
  76. } catch (error) {}
  77. }
  78. return () => (
  79. <div style={{ paddingTop: '14px' }}>
  80. <Grid gutter={14} columnNum={3} class={styles.grid}>
  81. {data.list.map((item: any) => {
  82. return (
  83. <GridItem>
  84. <div
  85. class={styles.gridItem}
  86. style={{
  87. background: item.coverImg
  88. ? ''
  89. : `hsla(${Math.floor(Math.random() * 360)},50%,50%,.8)`
  90. }}
  91. onClick={() => handleClick(item)}
  92. >
  93. {/* <img src={item.coverImg} class={styles.cover} /> */}
  94. <div class={styles.title}>
  95. <div>{item.coursewareDetailName}</div>
  96. {route.query.code !== 'select' && <div>已使用 {item.useNum} 次</div>}
  97. </div>
  98. {route.query.code !== 'select' ? (
  99. <div class={styles.num}>
  100. 查看
  101. <Icon name="play-circle-o" />
  102. </div>
  103. ) : (
  104. <div class={styles.num}>选择</div>
  105. )}
  106. {route.query.code == 'select' && !item.unlock && (
  107. <div class={styles.look} onClick={(e: Event) => e.stopPropagation()}>
  108. <Icon name={iconLook} /> 未解锁
  109. </div>
  110. )}
  111. </div>
  112. </GridItem>
  113. )
  114. })}
  115. </Grid>
  116. <Button
  117. onClick={() => {
  118. location.href =
  119. 'http://192.168.3.114:1000/teacher.html#/coursewarePlay?id=1610595720511209474'
  120. }}
  121. >
  122. 测试
  123. </Button>
  124. {!data.list.length && <Empty description="空空如也" />}
  125. </div>
  126. )
  127. }
  128. })