index.tsx 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. import { Cell, Grid, GridItem, Image } from 'vant'
  2. import { defineComponent, toRefs } from 'vue'
  3. import styles from './index.module.less'
  4. import iconTeacher from '@common/images/icon_teacher.png'
  5. import iconMessage from '@common/images/icon-muit-message.png'
  6. import { postMessage } from '@/helpers/native-message'
  7. import { openDefaultWebView, state } from '../../../state'
  8. export default defineComponent({
  9. name: 'my-orchestra',
  10. props: {
  11. orchestraName: {
  12. type: String,
  13. default: ''
  14. },
  15. list: {
  16. type: Object,
  17. default: () => []
  18. }
  19. },
  20. setup(props) {
  21. const { orchestraName } = toRefs(props)
  22. console.log('🚀 ~ orchestraName', orchestraName.value)
  23. const onMessage = async (item: any) => {
  24. console.log(item)
  25. postMessage({
  26. api: 'joinChatGroup',
  27. content: {
  28. type: 'multi', // single 单人 multi 多人
  29. id: item.imGroupId
  30. }
  31. })
  32. }
  33. const openClassDetail = (item: any) => {
  34. openDefaultWebView(`/classDetail?classId=${item.id}`)
  35. }
  36. const { list } = toRefs(props)
  37. return () => (
  38. <div class={styles.myClass}>
  39. {Array.isArray(list.value) &&
  40. list.value.map((item: any) => (
  41. <div class={styles.itemDiv} onClick={() => openClassDetail(item)}>
  42. <Cell center>
  43. {{
  44. icon: () => (
  45. <Image
  46. src={item.teacherAvatar || iconTeacher}
  47. class={styles.iconImg}
  48. fit="cover"
  49. />
  50. ),
  51. title: () => (
  52. <>
  53. {state.platformType == 'TEACHER' ? (
  54. <>
  55. <div class={styles.content}>
  56. <div class={['van-ellipsis', styles.teacherName]}>
  57. {item.classGroupName}
  58. </div>
  59. </div>
  60. <div class="van-ellipsis van-cell__label">{orchestraName.value}</div>
  61. </>
  62. ) : (
  63. <>
  64. <div class={styles.content}>
  65. <div class={['van-ellipsis', styles.teacherName]}>
  66. {item.teacherName}
  67. </div>
  68. </div>
  69. <div class="van-cell__label">
  70. <span class={styles.tag}>{item.classGroupName}</span>
  71. </div>
  72. </>
  73. )}
  74. </>
  75. ),
  76. value: () => (
  77. <Image
  78. class={styles.messageImg}
  79. src={iconMessage}
  80. onClick={(e: Event) => {
  81. e.stopPropagation()
  82. onMessage(item)
  83. }}
  84. />
  85. )
  86. }}
  87. </Cell>
  88. <Grid border={false} columnNum={3} class={styles.grid}>
  89. <GridItem>
  90. <p class={styles.title}>{item.studentNum || 0}</p>
  91. <p class={styles.name}>学生人数</p>
  92. </GridItem>
  93. <GridItem>
  94. <p class={[styles.title]}>{item.totalCourseNum - item.completeCourseNum || 0}</p>
  95. <p class={styles.name}>剩余课时</p>
  96. </GridItem>
  97. <GridItem>
  98. <p class={styles.title}>{item.totalCourseNum || 0}</p>
  99. <p class={styles.name}>总课时</p>
  100. </GridItem>
  101. </Grid>
  102. </div>
  103. ))}
  104. </div>
  105. )
  106. }
  107. })