index.vue 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <template>
  2. <app-view>
  3. <template #header>
  4. <app-navbar title="我的库存" />
  5. </template>
  6. <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error"
  7. v-model:pageIndex="pageIndex" :page-count="pageCount" @refresh="run">
  8. <div class="g-order-list">
  9. <div class="g-order-list__box" v-for="(item, index) in dataList" :key="index">
  10. <div class="g-order-list__titlebar">
  11. <div class="left">
  12. <h4>{{ item.goodsname }}</h4>
  13. </div>
  14. <div class="right">
  15. <span>数量:{{ item.curqty }}{{ item.goodunit }}</span>
  16. </div>
  17. </div>
  18. <div class="g-order-list__btnbar">
  19. <Button size="small" @click="showComponent('inOut', item, 1)" round>入库申请</Button>
  20. <Button size="small" @click="showComponent('inOut', item, 2)" round>出库申请</Button>
  21. <Button size="small" @click="showComponent('logs', item, 1)" round>申请记录</Button>
  22. </div>
  23. </div>
  24. </div>
  25. </app-pull-refresh>
  26. <component ref="componentRef" v-bind="{ selectedRow, inOutType }" :is="componentMap.get(componentId)"
  27. @closed="closeComponent" v-if="componentId" />
  28. </app-view>
  29. </template>
  30. <script lang="ts" setup>
  31. import { shallowRef, defineAsyncComponent } from 'vue'
  32. import { Button } from 'vant'
  33. import { useRequest } from '@/hooks/request'
  34. import { queryUserGoodsInventory } from '@/services/api/order'
  35. import { useComponent } from '@/hooks/component'
  36. import AppPullRefresh from '@mobile/components/base/pull-refresh/index.vue'
  37. const componentMap = new Map<string, unknown>([
  38. ['logs', defineAsyncComponent(() => import('./components/logs/index.vue'))], // 申请记录
  39. ['inOut', defineAsyncComponent(() => import('./components/inOut/index.vue'))], // 申请记录
  40. ])
  41. const error = shallowRef(false)
  42. const dataList = shallowRef<Model.UserGoodsInventoryRsp[]>([])
  43. const selectedRow = shallowRef<Model.UserGoodsInventoryRsp>()
  44. const inOutType = shallowRef(1)
  45. const { componentRef, componentId, openComponent, closeComponent } = useComponent()
  46. const { loading, pageIndex, pageCount, run } = useRequest(queryUserGoodsInventory, {
  47. onSuccess: (res) => {
  48. if (pageIndex.value === 1) {
  49. dataList.value = []
  50. }
  51. dataList.value.push(...res.data)
  52. },
  53. onError: () => {
  54. error.value = true
  55. }
  56. })
  57. const showComponent = (componentName: string, row: Model.UserGoodsInventoryRsp, type: number) => {
  58. inOutType.value = type
  59. selectedRow.value = row
  60. openComponent(componentName)
  61. }
  62. </script>