From 3f23feba59b1e8ec08c87adebf28d99fcd789885 Mon Sep 17 00:00:00 2001 From: zlwu <704541015@qq.com> Date: Sun, 19 Jul 2026 16:47:03 +0800 Subject: [PATCH] =?UTF-8?q?feat(web-admin):=20=E8=AE=A1=E5=88=92=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E5=87=BA=E5=85=A5=E5=BA=93=E5=9B=9E=E4=BC=A0=E8=A1=A5?= =?UTF-8?q?=E9=BD=90=E5=8F=96=E9=80=81=E8=B4=A7=E4=B8=8E=E4=BA=A7=E5=93=81?= =?UTF-8?q?=E5=88=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 查看 KV、只读子表与快捷编辑弹窗与入库/出库单编辑弹窗字段对齐。 Co-authored-by: Cursor --- .../business/pl-plan-view-tabs/index.vue | 308 +++++++++++++----- 1 file changed, 233 insertions(+), 75 deletions(-) diff --git a/web-admin/src/components/business/pl-plan-view-tabs/index.vue b/web-admin/src/components/business/pl-plan-view-tabs/index.vue index 0fee5eb47..6edc7868a 100644 --- a/web-admin/src/components/business/pl-plan-view-tabs/index.vue +++ b/web-admin/src/components/business/pl-plan-view-tabs/index.vue @@ -171,81 +171,102 @@
-

现场回传信息

-

- 暂无现场链接 -

-
- - + {{ ioOrder ? (ioOrder.kind === 'inbound' ? '入库单回传' : '出库单回传') : '现场回传信息' }} + + + + +

地磅单信息

@@ -455,6 +476,46 @@ :site-feedback-time="siteFeedbackTarget.siteFeedbackTime" @success="handleFeedbackSaved" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + (null) + const ioOrderEditImagesCsv = ref('') + + const ioOrderImageCsv = computed(() => + Array.isArray(ioOrder.value?.siteFeedbackImages) + ? ioOrder.value!.siteFeedbackImages!.filter(Boolean).join(',') + : '' + ) + + const ioOrderHasFeedback = computed(() => + Boolean( + ioOrder.value?.siteFeedbackRemark || + (ioOrder.value?.siteFeedbackImages && ioOrder.value.siteFeedbackImages.length) || + ioOrder.value?.siteFeedbackTime + ) + ) + + const ioOrderViewFields = computed((): ViewField[] => { + if (!ioOrder.value) return [] + const statusMap: Record = { + in_progress: '进行中', + completed: '已完成', + voided: '已作废' + } + const status = ioOrder.value.status + return [ + { label: '单号', value: ioOrder.value.orderNo }, + { + label: '状态', + value: statusMap[status] || status, + tagType: + status === 'completed' ? 'success' : status === 'voided' ? 'info' : 'warning' + }, + { label: '计划号', value: ioOrder.value.planNo }, + { label: '车牌', value: ioOrder.value.vehicleNo }, + { label: '往来单位', value: ioOrder.value.partnerCompany }, + { + label: '最近提交', + value: formatDateTime(ioOrder.value.siteFeedbackTime) || '—' + }, + { label: '取货地址', value: ioOrder.value.pickupAddress, span: 'full' }, + { label: '取货时间', value: formatDateTime(ioOrder.value.pickupTime) || '—' }, + { label: '取货注意事项', value: ioOrder.value.pickupNotes, span: 'full' }, + { + label: '送货地址', + value: ioOrder.value.destinationAddress || ioOrder.value.destinationName, + span: 'full' + }, + { label: '送达时间', value: formatDateTime(ioOrder.value.deliveryTime) || '—' }, + { label: '送货注意事项', value: ioOrder.value.destinationNotes, span: 'full' } + ] + }) + + function openIoOrderEditDialog() { + if (!ioOrder.value) return + ioOrderEditForm.value = { + ...ioOrder.value, + items: (ioOrder.value.items || []).map(it => ({ ...it })) + } + ioOrderEditImagesCsv.value = ioOrderImageCsv.value + ioOrderEditVisible.value = true + } + + async function saveIoOrderEdit() { + if (!ioOrderEditForm.value) return + const api = ioOrderEditForm.value.kind === 'inbound' ? inboundOrderApi : outboundOrderApi + ioOrderSaving.value = true + try { + const images = ioOrderEditImagesCsv.value + ? ioOrderEditImagesCsv.value.split(',').map(s => s.trim()).filter(Boolean) + : [] + await api.patch(ioOrderEditForm.value.id, { + siteFeedbackRemark: ioOrderEditForm.value.siteFeedbackRemark, + siteFeedbackImages: images, + items: (ioOrderEditForm.value.items || []).map(it => ({ + id: it.id, + actualQty: it.actualQty + })) + }) + ElMessage.success('保存成功') + ioOrderEditVisible.value = false + reload() + } catch (e) { + ElMessage.error(e instanceof Error ? e.message : '保存失败') + } finally { + ioOrderSaving.value = false + } + } + const feedbackImageList = computed(() => parsePlFeedbackImages(transport.value?.feedbackImages)) const feedbackImageCsv = computed(() => feedbackImageList.value.join(','))