wait-approval.tsx 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import OEmpty from '@/components/o-empty'
  2. import dayjs from 'dayjs'
  3. import { List, PullRefresh, showToast } from 'vant'
  4. import OFullRefresh from '@/components/o-full-refresh'
  5. import { defineComponent, reactive, ref, onMounted } from 'vue'
  6. import { useRouter } from 'vue-router'
  7. import styles from './wait-approval.module.less'
  8. import request from '@/helpers/request'
  9. import ApprovalItem from './approval-item'
  10. export default defineComponent({
  11. name: 'wait-approval',
  12. setup() {
  13. const router = useRouter()
  14. const forms = reactive({
  15. page: 1,
  16. rows: 20
  17. })
  18. const refreshing = ref(false)
  19. const loading = ref(false)
  20. const finished = ref(false)
  21. const showContact = ref(false)
  22. const list = ref([])
  23. const getList = async () => {
  24. console.log('getList')
  25. loading.value = true
  26. try {
  27. if (refreshing.value) {
  28. forms.page = 1
  29. list.value = []
  30. refreshing.value = false
  31. }
  32. const res = await request.post('/api-school/userApproveRecord/page', {
  33. data: { ...forms, hasHandle: false }
  34. })
  35. if (list.value.length > 0 && res.data.pages === 1) {
  36. return
  37. }
  38. forms.page = res.data.current + 1
  39. list.value = list.value.concat(res.data.rows || [])
  40. showContact.value = list.value.length > 0
  41. loading.value = false
  42. finished.value = res.data.current >= res.data.pages
  43. } catch (e: any) {
  44. // console.log(e, 'e')
  45. const message = e.message
  46. showToast(message)
  47. showContact.value = false
  48. finished.value = true
  49. }
  50. }
  51. const onRefresh = () => {
  52. finished.value = false
  53. // 重新加载数据
  54. // 将 loading 设置为 true,表示处于加载状态
  55. loading.value = true
  56. getList()
  57. }
  58. const gotoDetail = (row: any) => {
  59. // leaveCategoryId 1请假 2退团
  60. router.push({ path: '/student-leave', query: { id: row.id, type: 'doing' } })
  61. }
  62. onMounted(() => {
  63. getList()
  64. })
  65. return () => (
  66. <>
  67. <div class={styles.approvalWrap}>
  68. <OFullRefresh
  69. v-model:modelValue={refreshing.value}
  70. onRefresh={onRefresh}
  71. style="min-height: calc(100vh - 2.50666rem);"
  72. >
  73. {showContact.value ? (
  74. <List
  75. v-model:loading={loading.value}
  76. finished={finished.value}
  77. finished-text="没有更多了"
  78. loading-text=" "
  79. onLoad={getList}
  80. >
  81. {list.value.map((item: any) => (
  82. <div
  83. onClick={() => {
  84. gotoDetail(item)
  85. }}
  86. >
  87. {' '}
  88. <ApprovalItem item={item} type="wait"></ApprovalItem>
  89. </div>
  90. ))}
  91. </List>
  92. ) : (
  93. <OEmpty />
  94. )}
  95. </OFullRefresh>
  96. </div>
  97. </>
  98. )
  99. }
  100. })