From c25aaaca53f2f4371262195ef322c6a0f4609c45 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Wed, 23 Sep 2026 17:47:54 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 4 +- .../measurement/InboundMeasurementDialog.vue | 10 +++ .../review/MeasurementReviewPanel.vue | 73 +++++++++++++------ .../weight/components/WeightOcrPanel.vue | 32 ++++++++ 4 files changed, 94 insertions(+), 25 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 385d7d2c..79f6d47a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -3,7 +3,7 @@ ## 快速读取顺序 1. 用“模块快速路由”选择最小业务模块,进入后读取该目录最近的 `AGENTS.md`;按 `routes.ts → pages/ → api/types/stores/composables` 下钻,不先扫描全部 `src/`。 -2. 页面、布局或交互任务同时读取 `../../docs/Admin-Client前端原型还原验收规则.md` 和后台原型 `../../docs/悦/货代SAAS平台后台/AGENTS.md`。 +2. 视觉还原、布局/交互承载方式变更或真实页面验收时读取 `../../docs/Admin-Client前端原型还原验收规则.md`;需要原型依据才读取 `../../docs/悦/货代SAAS平台后台/AGENTS.md` 并定位目标片段。纯文案、逻辑或单元测试任务不自动读取。 Admin 样式优化还须读取 `../../docs/Admin高密度界面规范.md` 的“样式维护边界”和“新模块接入规则”;以已确认密度与彩色页签为视觉基线,逐操作保留业务语义和承载方式。国内仓、客户管理是样板;新增菜单按本轮范围显式接入,货柜管理入口见 `../../docs/Admin货柜管理样式核对记录.md`。 3. 标准列表或公共组件任务读取 `src/shared/components/AGENTS.md`;国内/海外 HTTP、Token 或刷新任务读取 `src/shared/api/AGENTS.md`;Finance 任务读取 `src/modules/finance/AGENTS.md`;海外仓全流程任务先读 `../../docs/海外仓业务/README.md`。 4. 平台/客户层级与权限公共语义读取 `../../docs/平台客户层级与权限契约.md`;双区域 API、海外 Token 和跨区事件读取 `../../docs/跨区域认证与服务通信契约.md`。 @@ -104,7 +104,7 @@ ## 开发验收身份 - 开发环境人工验收身份为 `platform_admin`。密码从未提交的 `CHONGCHONG_ADMIN_ACCEPTANCE_PASSWORD` 或 `C:/Users/BY-OY/.codex/chongchong-global-dev-acceptance.env` 读取;缺失时再向用户索取,不写入仓库、日志或快照。 -- 由人工操作真实页面并截图,AI 核对加载、空态、错误态、权限和桌面布局;缺少截图时标记“待人工截图确认”,不自行批量取证。 +- 视觉验收由人工操作真实页面并截图,AI 核对受影响的状态和桌面布局;缺少截图标记“待人工截图确认”,不自行批量取证。自动检查单独报告“自动检查通过/失败”;纯逻辑且无视觉变化标记“无需视觉验收”,不能据此声称真实页面验收通过。 ## 命令与质量门禁 diff --git a/src/modules/inbounds/measurement/InboundMeasurementDialog.vue b/src/modules/inbounds/measurement/InboundMeasurementDialog.vue index 730b086f..64b29edd 100644 --- a/src/modules/inbounds/measurement/InboundMeasurementDialog.vue +++ b/src/modules/inbounds/measurement/InboundMeasurementDialog.vue @@ -84,6 +84,7 @@ function handleSubmitted() {
div { min-height: 58px; padding: 9px 14px; border-left: 1px solid #e8ecf2; } +.inbound-measurement-workspace-dialog .measurement-metrics > div:first-child { border-left: 0; } +.inbound-measurement-workspace-dialog .measurement-declaration { margin-top: 12px; padding: 10px 12px 0; border: 1px solid #d9e2fa; border-left: 4px solid #647fec; border-radius: 8px; background: #f7f9ff; } +.inbound-measurement-workspace-dialog .measurement-items-section { margin-top: 12px; padding: 10px 12px 13px; border: 1px solid #eadfc9; border-left: 4px solid #c79643; border-radius: 8px; background: #fffbf4; } +.inbound-measurement-workspace-dialog .measurement-items-section .measurement-section__heading { margin-bottom: 8px; } @media (max-width: 720px) { .inbound-measurement-workspace-dialog.el-dialog { width: calc(100vw - 20px) !important; max-width: calc(100vw - 20px); } .inbound-measurement-workspace-dialog .el-dialog__header { padding: 16px; } diff --git a/src/modules/inbounds/review/MeasurementReviewPanel.vue b/src/modules/inbounds/review/MeasurementReviewPanel.vue index 5bfcfc1b..137f1853 100644 --- a/src/modules/inbounds/review/MeasurementReviewPanel.vue +++ b/src/modules/inbounds/review/MeasurementReviewPanel.vue @@ -52,13 +52,8 @@ const isRejected = computed(() => detail.value?.measureReviewStatus === 'REJECTE const reviewStatusLabel = computed(() => inboundStatusLabel(detail.value?.measureReviewStatus, inboundReviewStatusLabels, '未提交')) const displayCustomerName = computed(() => detail.value?.companyName?.trim() || props.customerName?.trim() || '客户未命名') const displayChannelName = computed(() => detail.value?.channelName?.trim() || detail.value?.channelCode?.trim() || props.channelName?.trim() || props.channelCode?.trim() || '渠道未填写') -const sourceLabels: Record = { - THIRD_PARTY: '第三方设备', - DEVICE: '第三方设备', - OPENAPI: '第三方设备', - MANUAL: '平台人工', -} -const sourceLabel = computed(() => sourceLabels[detail.value?.sourceType || ''] || (detail.value?.sourceType ? '未知来源' : '尚未记录')) +const measurementCount = computed(() => detail.value?.items.length || 0) +const weightCount = computed(() => detail.value?.weightResults.length || 0) function formatNumber(value: number | null | undefined, maximumFractionDigits = 3) { if (value === null || value === undefined || !Number.isFinite(value)) return '—' @@ -180,18 +175,18 @@ defineExpose({ confirmApprove, isPending, canReview, actionLoading })

测量审核内容

+
+ 修改重量 + {{ approvalCompleted ? '审核已通过' : approvalButtonLabel }} +
- 通过后进入待分柜 + 通过后进入{{ approvalTargetLabel }} 历史记录为审核驳回,仅供查看 当前记录不可审核 客户:{{ displayCustomerName }} · 渠道:{{ displayChannelName }}
-
- 修改重量 - {{ approvalCompleted ? '审核已通过' : approvalButtonLabel }} - 刷新 -
+ 刷新
@@ -204,12 +199,7 @@ defineExpose({ confirmApprove, isPending, canReview, actionLoading })
-
-
-

审核数据总览

-
- {{ sourceLabel }} -
+

审核数据总览

@@ -223,7 +213,7 @@ defineExpose({ confirmApprove, isPending, canReview, actionLoading })
平台实测
-
箱数
{{ formatNumber(detail.actualPackageCount, 0) }} {{ formatDifference(detail.actualPackageCount, detail.originalPackageCount, 0) }}
+
箱数
{{ formatNumber(detail.actualPackageCount, 0) }}{{ formatDifference(detail.actualPackageCount, detail.originalPackageCount, 0) ? ` ${formatDifference(detail.actualPackageCount, detail.originalPackageCount, 0)}` : '' }}
毛重
{{ formatNumber(detail.actualGrossWeightKg) }} kg · {{ formatDifference(detail.actualGrossWeightKg, detail.originalGrossWeightKg, 3, ' kg') }}
货物净重
{{ formatNumber(detail.actualNetWeightKg) }} kg
体积
{{ formatNumber(detail.actualVolumeCbm, 4) }} m³ · {{ formatDifference(detail.actualVolumeCbm, detail.originalVolumeCbm, 4, ' m³') }}
@@ -238,12 +228,12 @@ defineExpose({ confirmApprove, isPending, canReview, actionLoading })

箱规测量明细

- {{ detail.items.length }} 条 + {{ measurementCount }} 条
- + @@ -281,12 +271,31 @@ defineExpose({ confirmApprove, isPending, canReview, actionLoading })
+
+

⚖ 称重明细

实测毛重 {{ formatNumber(detail.actualGrossWeightKg, 3) }} KG货物重量 {{ formatNumber(detail.actualNetWeightKg, 3) }} KG
+
+ + + + + + + + + + + +
+ +
+ @@ -306,7 +315,7 @@ defineExpose({ confirmApprove, isPending, canReview, actionLoading }) From 2934a795ad52cd3907d7daf2ac527073a5f6df27 Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Thu, 24 Sep 2026 08:54:28 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../overseas-warehouse/api/locations.ts | 5 +---- .../pages/InboundOrderDetailView.vue | 2 +- .../pages/LocationsView.vue | 20 +++++++++---------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/modules/overseas-warehouse/api/locations.ts b/src/modules/overseas-warehouse/api/locations.ts index 81c0a4c7..04e46be4 100644 --- a/src/modules/overseas-warehouse/api/locations.ts +++ b/src/modules/overseas-warehouse/api/locations.ts @@ -10,8 +10,6 @@ export interface OverseasLocationDto { warehouseId: string warehouseCode?: string | null warehouseName?: string | null - zoneCode: string - zoneName?: string | null locationCode: string locationName?: string | null locationType: OverseasLocationType @@ -26,7 +24,6 @@ export interface OverseasLocationDto { } export interface SaveOverseasLocationPayload { - zoneCode: string locationCode: string locationType: 'NORMAL' maxLoadKg: number @@ -34,7 +31,7 @@ export interface SaveOverseasLocationPayload { remark?: string | null } -export interface OverseasLocationQuery { page?: number; size?: number; zoneCode?: string; keyword?: string; locationType?: OverseasLocationType | ''; status?: OverseasLocationStatus | '' } +export interface OverseasLocationQuery { page?: number; size?: number; keyword?: string; locationType?: OverseasLocationType | ''; status?: OverseasLocationStatus | '' } function base(warehouseId: string) { return `/platform/v1/warehouse-admin/${encodeURIComponent(warehouseId)}/locations` } diff --git a/src/modules/overseas-warehouse/pages/InboundOrderDetailView.vue b/src/modules/overseas-warehouse/pages/InboundOrderDetailView.vue index 5a95845c..58b7462e 100644 --- a/src/modules/overseas-warehouse/pages/InboundOrderDetailView.vue +++ b/src/modules/overseas-warehouse/pages/InboundOrderDetailView.vue @@ -88,7 +88,7 @@ onMounted(load)

入库单托盘明细

PDA 合托后,参与合托的入库单会分别展示同一托盘及本单对应箱数;A0 为系统共享溢出位。

{{ palletRows.length }} 条

预约与排车

{{ label }}
{{ fieldValues[label] }}

应收费用明细

费用结果以服务端为准
应收费用合计(USD)—
- +