tenant-album.tsx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. import { defineComponent, reactive, ref, watch } from 'vue'
  2. import { Cell, CellGroup, Image, List } from 'vant'
  3. import request from '@/helpers/request'
  4. import { useRoute, useRouter } from 'vue-router'
  5. import ColResult from '@/components/col-result'
  6. import { state } from '@/state'
  7. import styles from './index.module.less'
  8. export default defineComponent({
  9. name: 'tenant-album',
  10. // props: {},
  11. setup() {
  12. const router = useRouter()
  13. const params = reactive({
  14. page: 1,
  15. rows: 20
  16. })
  17. const rows = ref<any>([])
  18. const data = ref<any>(null)
  19. const loading = ref(false)
  20. const finished = ref(false)
  21. const isError = ref(false)
  22. const FetchList = async () => {
  23. if (loading.value) {
  24. return
  25. }
  26. loading.value = true
  27. isError.value = false
  28. try {
  29. const res = await request.post('/userTenantAlbumRecord/page', {
  30. prefix:
  31. state.platformType === 'TEACHER' ? '/api-teacher' : '/api-student',
  32. data: params
  33. })
  34. rows.value = [...rows.value, ...res.data.rows]
  35. data.value = res.data
  36. console.log(data.value)
  37. params.page = res.data.pageNo + 1
  38. finished.value = res.data.pageNo >= res.data.totalPage
  39. } catch (error) {
  40. isError.value = true
  41. }
  42. loading.value = false
  43. }
  44. return () => {
  45. return (
  46. <List
  47. loading={loading.value}
  48. finished={finished.value}
  49. finished-text={rows.value.length ? ' ' : ''}
  50. onLoad={FetchList}
  51. error={isError.value}
  52. >
  53. {rows.value.length
  54. ? rows.value.map((item: any) => (
  55. <CellGroup class={styles.tennatCellGroup} border={false}>
  56. <Cell isLink>
  57. {{
  58. icon: () => (
  59. <img src={item.coverImg} class={styles.tenantLogo} />
  60. ),
  61. title: () => (
  62. <div class={styles.tenantName}>{item.tenantName}</div>
  63. )
  64. }}
  65. </Cell>
  66. <Cell>
  67. {{
  68. icon: () => <Image class={styles.tenantCoverImg} />,
  69. title: () => (
  70. <div class={styles.tenantContent}>
  71. <h2>{item.name}</h2>
  72. <p class="van-multi-ellipsis--l2">{item.describe}</p>
  73. </div>
  74. )
  75. }}
  76. </Cell>
  77. </CellGroup>
  78. ))
  79. : !loading.value && (
  80. <ColResult
  81. tips="暂无训练教程"
  82. classImgSize="SMALL"
  83. btnStatus={false}
  84. />
  85. )}
  86. </List>
  87. )
  88. }
  89. }
  90. })