order.vue 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <script setup lang="ts">
  2. import djkorder from '@/subPack-smqjh/components/djk-order/index.vue?async'
  3. import { createGlobalLoadingMiddleware } from '@/api/core/middleware'
  4. const { statusBarHeight, MenuButtonHeight, refreshOrderList } = storeToRefs(useSysStore())
  5. const { data: orderList, refresh, isLastPage, page, reload, error } = usePagination((pageNum, pageSize) => Apis.xsb.orderList({ data: {
  6. businessType: 'DJK',
  7. pageNum,
  8. pageSize,
  9. orderStatus: 'all',
  10. } }), {
  11. pageNum: 1,
  12. pageSize: 10,
  13. initialData: [],
  14. data: res => res.data?.list,
  15. append: true,
  16. middleware: createGlobalLoadingMiddleware(),
  17. immediate: false,
  18. })
  19. const state = computed(() => {
  20. return error.value ? 'error' : !isLastPage.value ? 'loading' : 'finished'
  21. })
  22. function handleBottom() {
  23. if (!isLastPage.value) {
  24. page.value++
  25. }
  26. }
  27. reload()
  28. watch(() => refreshOrderList.value, () => {
  29. console.log('刷新页面', refreshOrderList.value)
  30. if (refreshOrderList.value) {
  31. reload()
  32. refreshOrderList.value = false
  33. }
  34. })
  35. </script>
  36. <template>
  37. <wd-navbar
  38. title="订单列表"
  39. :bordered="false"
  40. :z-index="99"
  41. safe-area-inset-top
  42. placeholder
  43. fixed
  44. />
  45. <scroll-view scroll-y :style="{ height: `calc(100vh - ${(statusBarHeight + MenuButtonHeight) * 4}rpx)` }" @scrolltolower="handleBottom">
  46. <view class="p24rpx">
  47. <template v-for="item in orderList" :key="item.orderNumber">
  48. <djkorder :order="item" @refresh="reload" />
  49. </template>
  50. <wd-loadmore v-if="orderList.length > 10" :state="state" :loading-props="{ color: '#9ED605', size: 20 }" @reload="refresh" />
  51. <StatusTip v-if="!orderList.length" tip="暂无内容" />
  52. <view class="h60rpx" />
  53. </view>
  54. </scroll-view>
  55. </template>
  56. <style lang="scss" scoped></style>