end-approval.tsx 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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
  68. class={[styles.approvalWrap, !showContact.value && 'emptyRootContainer']}
  69. style="min-height: calc(100vh - var(--van-tabs-line-height) - var(--header-height) - 1.33333rem);"
  70. >
  71. {showContact.value ? (
  72. <OFullRefresh
  73. v-model:modelValue={refreshing.value}
  74. onRefresh={onRefresh}
  75. style="min-height: calc(100vh - var(--van-tabs-line-height) - var(--header-height) - 1.33333rem);"
  76. >
  77. <List
  78. loading-text=" "
  79. // v-model:loading={loading.value}
  80. finished={finished.value}
  81. finished-text="没有更多了"
  82. onLoad={getList}
  83. >
  84. {list.value.map((item: any) => (
  85. <div onClick={() => gotoDetail(item)}>
  86. <ApprovalItem item={item} type="end"></ApprovalItem>
  87. </div>
  88. ))}
  89. </List>
  90. </OFullRefresh>
  91. ) : (
  92. <OEmpty />
  93. )}
  94. </div>
  95. </>
  96. )
  97. }
  98. })