wait-approval.tsx 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. import OEmpty from '@/components/o-empty'
  2. import dayjs from 'dayjs'
  3. import { List, PullRefresh, showToast } from 'vant'
  4. import { defineComponent, reactive, ref, onMounted } from 'vue'
  5. import { useRouter } from 'vue-router'
  6. import styles from './wait-approval.module.less'
  7. import request from '@/helpers/request'
  8. import ApprovalItem from './approval-item'
  9. export default defineComponent({
  10. name: 'wait-approval',
  11. setup() {
  12. const router = useRouter()
  13. const forms = reactive({
  14. page: 1,
  15. rows: 20
  16. })
  17. const refreshing = ref(false)
  18. const loading = ref(false)
  19. const finished = ref(false)
  20. const showContact = ref(false)
  21. const list = ref([])
  22. const getList = async () => {
  23. console.log('getList')
  24. loading.value = true
  25. try {
  26. if (refreshing.value) {
  27. forms.page = 1
  28. list.value = []
  29. refreshing.value = false
  30. }
  31. const res = await request.post('/api-school/userLeaveRecord/page', {
  32. data: { ...forms }
  33. })
  34. if (list.value.length > 0 && res.data.pages === 1) {
  35. return
  36. }
  37. forms.page = res.data.current + 1
  38. list.value = list.value.concat(res.data.rows || [])
  39. showContact.value = list.value.length > 0
  40. loading.value = false
  41. finished.value = res.data.current >= res.data.pages
  42. } catch (e: any) {
  43. // console.log(e, 'e')
  44. const message = e.message
  45. showToast(message)
  46. showContact.value = false
  47. finished.value = true
  48. }
  49. }
  50. const onRefresh = () => {
  51. finished.value = false
  52. // 重新加载数据
  53. // 将 loading 设置为 true,表示处于加载状态
  54. loading.value = true
  55. getList()
  56. }
  57. return () => (
  58. <>
  59. {showContact.value ? (
  60. <PullRefresh v-model={refreshing.value} onRefresh={onRefresh}>
  61. <List
  62. v-model:loading={loading.value}
  63. finished={finished.value}
  64. finished-text="没有更多了"
  65. onLoad={getList}
  66. >
  67. {list.value.map((item: any) => (
  68. <ApprovalItem item={item} type="wait"></ApprovalItem>
  69. ))}
  70. </List>
  71. </PullRefresh>
  72. ) : (
  73. <OEmpty />
  74. )}
  75. </>
  76. )
  77. }
  78. })