end-approval.tsx 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. import OEmpty from '@/components/o-empty'
  2. import OFullRefresh from '@/components/o-full-refresh'
  3. import dayjs from 'dayjs'
  4. import { List, PullRefresh, showToast } from 'vant'
  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: 'end-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: true }
  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. onMounted(() => {
  59. getList()
  60. })
  61. const gotoDetail = (row: any) => {
  62. // leaveCategoryId 1请假 2退团
  63. router.push({ path: '/student-leave', query: { id: row.id, type: 'end' } })
  64. }
  65. return () => (
  66. <>
  67. <div class={styles.approvalWrap}>
  68. {showContact.value ? (
  69. <OFullRefresh
  70. v-model:modelValue={refreshing.value}
  71. onRefresh={onRefresh}
  72. style="min-height: 100vh;"
  73. >
  74. <List
  75. loading-text=" "
  76. v-model:loading={loading.value}
  77. finished={finished.value}
  78. finished-text="没有更多了"
  79. onLoad={getList}
  80. >
  81. {list.value.map((item: any) => (
  82. <div onClick={() => gotoDetail(item)}>
  83. <ApprovalItem item={item} type="end"></ApprovalItem>
  84. </div>
  85. ))}
  86. </List>
  87. </OFullRefresh>
  88. ) : (
  89. <OEmpty />
  90. )}
  91. </div>
  92. </>
  93. )
  94. }
  95. })