zhou zhou
57 分钟以前 89847f0c5a5d37e5a720afd32cdd7e4d9ead664b
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<template>
  <div class="transfer-orders-panel">
    <ArtTable :loading="loading" :data="rows" :columns="columns" />
  </div>
</template>
 
<script setup>
  import { computed, ref, watch } from 'vue'
  import { useI18n } from 'vue-i18n'
  import { defaultResponseAdapter } from '@/utils/table/tableUtils'
  import { fetchTransferOrdersPage } from '@/api/transfer'
  import {
    buildTransferDetailOrderQueryParams,
    normalizeTransferOrderRow
  } from '../transferPage.helpers.js'
  import { createTransferOrderTableColumns } from '../transferTable.columns.js'
 
  defineOptions({ name: 'TransferOrdersPanel' })
 
  const props = defineProps({
    transferId: { type: [Number, String], default: undefined },
    transferCode: { type: String, default: '' },
    onOrderView: { type: Function, default: null }
  })
 
  const loading = ref(false)
  const rows = ref([])
  const { t } = useI18n()
 
  const columns = computed(() =>
    createTransferOrderTableColumns({
      handleViewOrder: props.onOrderView
    })
  )
 
  async function loadRows() {
    if (props.transferId === undefined || props.transferId === null || props.transferId === '') {
      rows.value = []
      return
    }
 
    loading.value = true
    try {
      const response = await fetchTransferOrdersPage(
        buildTransferDetailOrderQueryParams({
          id: props.transferId,
          code: props.transferCode,
          current: 1,
          pageSize: 200
        })
      )
      const records = defaultResponseAdapter(response).records
      rows.value = Array.isArray(records)
        ? records.map((item) => normalizeTransferOrderRow(item, t))
        : []
    } catch {
      rows.value = []
    } finally {
      loading.value = false
    }
  }
 
  watch(
    () => [props.transferId, props.transferCode],
    () => {
      loadRows()
    },
    { immediate: true }
  )
</script>
 
<style scoped>
  .transfer-orders-panel {
    padding: 12px 0;
  }
</style>