| | |
| | | <ElCard v-if="activeSourceSummary" class="mb-3"> |
| | | <div class="flex items-center justify-between gap-3"> |
| | | <div class="flex items-center gap-2 text-sm text-[var(--art-text-gray-600)]"> |
| | | <span class="font-medium text-[var(--art-text-gray-900)]">当前来源</span> |
| | | <span>DO单ID:{{ activeSourceSummary.deliveryId }}</span> |
| | | <span class="font-medium text-[var(--art-text-gray-900)]">{{ t('pages.orders.deliveryItem.sourceTitle') }}</span> |
| | | <span>{{ t('pages.orders.deliveryItem.sourceLabel', { id: activeSourceSummary.deliveryId }) }}</span> |
| | | </div> |
| | | <ElButton link type="primary" @click="handleClearSourceFilter">查看全部</ElButton> |
| | | <ElButton link type="primary" @click="handleClearSourceFilter">{{ t('common.actions.viewAll') }}</ElButton> |
| | | </div> |
| | | </ElCard> |
| | | |
| | |
| | | |
| | | <script setup> |
| | | import { computed, onMounted, ref, watch } from 'vue' |
| | | import { useI18n } from 'vue-i18n' |
| | | import { ElButton, ElMessage } from 'element-plus' |
| | | import { useRoute, useRouter } from 'vue-router' |
| | | import { useTable } from '@/hooks/core/useTable' |
| | |
| | | |
| | | defineOptions({ name: 'DeliveryItem' }) |
| | | |
| | | const { t } = useI18n() |
| | | const route = useRoute() |
| | | const router = useRouter() |
| | | const searchForm = ref(createDeliveryItemSearchState()) |
| | |
| | | |
| | | const searchItems = computed(() => [ |
| | | { |
| | | label: '关键字', |
| | | label: t('table.keyword'), |
| | | key: 'condition', |
| | | type: 'input', |
| | | props: { |
| | | clearable: true, |
| | | placeholder: '请输入交接单号/物料编码/物料名称' |
| | | placeholder: t('pages.orders.deliveryItem.search.conditionPlaceholder') |
| | | } |
| | | }, |
| | | { |
| | | label: '交接单号', |
| | | label: t('pages.orders.deliveryItem.search.deliveryCode'), |
| | | key: 'deliveryCode', |
| | | type: 'input', |
| | | props: { |
| | | clearable: true, |
| | | placeholder: '请输入交接单号' |
| | | placeholder: t('pages.orders.deliveryItem.search.deliveryCodePlaceholder') |
| | | } |
| | | }, |
| | | { |
| | | label: '平台行号', |
| | | label: t('pages.orders.deliveryItem.search.platItemId'), |
| | | key: 'platItemId', |
| | | type: 'input', |
| | | props: { |
| | | clearable: true, |
| | | placeholder: '请输入平台行号' |
| | | placeholder: t('pages.orders.deliveryItem.search.platItemIdPlaceholder') |
| | | } |
| | | }, |
| | | { |
| | | label: '物料编码', |
| | | label: t('table.materialCode'), |
| | | key: 'matnrCode', |
| | | type: 'input', |
| | | props: { |
| | | clearable: true, |
| | | placeholder: '请输入物料编码' |
| | | placeholder: t('pages.orders.deliveryItem.search.matnrCodePlaceholder') |
| | | } |
| | | }, |
| | | { |
| | | label: '物料名称', |
| | | label: t('table.materialName'), |
| | | key: 'maktx', |
| | | type: 'input', |
| | | props: { |
| | | clearable: true, |
| | | placeholder: '请输入物料名称' |
| | | placeholder: t('pages.orders.deliveryItem.search.maktxPlaceholder') |
| | | } |
| | | }, |
| | | { |
| | | label: '供应商名称', |
| | | label: t('pages.orders.deliveryItem.search.supplierName'), |
| | | key: 'splrName', |
| | | type: 'input', |
| | | props: { |
| | | clearable: true, |
| | | placeholder: '请输入供应商名称' |
| | | placeholder: t('pages.orders.deliveryItem.search.supplierNamePlaceholder') |
| | | } |
| | | }, |
| | | { |
| | | label: '供应商批次', |
| | | label: t('table.supplierBatch'), |
| | | key: 'splrBatch', |
| | | type: 'input', |
| | | props: { |
| | | clearable: true, |
| | | placeholder: '请输入供应商批次' |
| | | placeholder: t('pages.orders.deliveryItem.search.supplierBatchPlaceholder') |
| | | } |
| | | } |
| | | ]) |
| | |
| | | detailDrawerVisible.value = true |
| | | detailLoading.value = true |
| | | guardRequestWithMessage(fetchGetDeliveryItemDetail(row.id), {}, { |
| | | timeoutMessage: '交接单明细详情加载超时,已停止等待' |
| | | timeoutMessage: t('pages.orders.deliveryItem.messages.detailTimeout') |
| | | }) |
| | | .then((detail) => { |
| | | detailData.value = normalizeDeliveryItemRow(detail) |
| | | detailData.value = normalizeDeliveryItemRow(detail, t) |
| | | }) |
| | | .catch((error) => { |
| | | detailDrawerVisible.value = false |
| | | detailData.value = {} |
| | | ElMessage.error(error?.message || '获取交接单明细详情失败') |
| | | ElMessage.error(error?.message || t('pages.orders.deliveryItem.messages.detailFailed')) |
| | | }) |
| | | .finally(() => { |
| | | detailLoading.value = false |
| | |
| | | ...searchForm.value, |
| | | pageSize: 20 |
| | | }), |
| | | columnsFactory: () => createDeliveryItemTableColumns({ handleActionClick: openDetail }) |
| | | columnsFactory: () => createDeliveryItemTableColumns({ handleActionClick: openDetail, t }) |
| | | }, |
| | | transform: { |
| | | dataTransformer: (records) => |
| | | Array.isArray(records) ? records.map((item) => normalizeDeliveryItemRow(item)) : [] |
| | | Array.isArray(records) ? records.map((item) => normalizeDeliveryItemRow(item, t)) : [] |
| | | } |
| | | }) |
| | | |