<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>
|