diff --git a/src/modules/overseas-master-data/PROTOTYPE_MATRIX.md b/src/modules/overseas-master-data/PROTOTYPE_MATRIX.md index 3f16d0be..0ef4c2ff 100644 --- a/src/modules/overseas-master-data/PROTOTYPE_MATRIX.md +++ b/src/modules/overseas-master-data/PROTOTYPE_MATRIX.md @@ -1,5 +1,17 @@ # 海外通用资料原型核对矩阵 +## 2026-10-07 三个车辆列表样式统一 + +依据:本轮用户提供的司机管理、车次管理、出车记录三张截图;对齐已确认的 `VehiclesView.vue` 连续列表及 `docs/Admin高密度界面规范.md`。仅改列表容器与排版,不改变下列操作承载、权限或请求。 + +| 页面 | 操作与当前承载 | 本轮结论 | +|---|---|---| +| 司机管理 | 查询/到期统计筛选;详情独立路由;新增/编辑1080px居中;证照预览620px居中;启停原因确认;审核在详情 | 列表接入integrated标题、筛选、统计、表格、分页;三项统计保留点击筛选,紧凑排列;各操作承载保持 | +| 车次管理 | 查询;新建1080px计划弹框;详情独立路由;编辑、审核、确认在详情;列表无文件预览/删除 | 接入相同integrated列表,详情操作保留在第一列;弹框与详情保持 | +| 出车记录 | 日期/货源筛选、图表和汇总;导出;车次详情独立路由;实测记录820px居中及其中凭证预览;列表无删除/审核 | 图表、说明与汇总放入连续列表内,统一间距,空图表不重复显示空系列标题;保留未知金额、成本及统计说明 | + +改后视觉结论待用户在1920×1080、100%缩放提供截图确认;自动检查单独记录,不以测试代替视觉通过。 + 事实来源:`docs/悦/货代SAAS平台后台/prototype-src/modules/10-general.html`、`prototype-src/overlays.html`、`prototype-src/app.js`。 | 页面 | 操作 | 原型证据 | 原型承载方式 | 原型尺寸/布局 | 当前实现 | 结论 | diff --git a/src/modules/overseas-master-data/components/TripOperationsCharts.vue b/src/modules/overseas-master-data/components/TripOperationsCharts.vue index ce61a1af..4f1d0a58 100644 --- a/src/modules/overseas-master-data/components/TripOperationsCharts.vue +++ b/src/modules/overseas-master-data/components/TripOperationsCharts.vue @@ -13,14 +13,15 @@ function width(value: number, series: TripOperationsSeries) { const max = Math.m diff --git a/src/modules/overseas-master-data/pages/FleetReportingViews.test.ts b/src/modules/overseas-master-data/pages/FleetReportingViews.test.ts index 1c6a5e70..b04bbf60 100644 --- a/src/modules/overseas-master-data/pages/FleetReportingViews.test.ts +++ b/src/modules/overseas-master-data/pages/FleetReportingViews.test.ts @@ -11,7 +11,7 @@ vi.mock('../api/tripOperations', () => ({ listTripOperations: vi.fn(), exportTri const wrappers: VueWrapper[] = [] const layout = { template: '
' } function mount(component: object) { const wrapper = shallowMount(component, { global: { stubs: { AdminPage: layout, ListPageLayout: layout, QueryToolbar: true, - DataTable: { name: 'DataTable', props: ['data', 'columns'], template: '
' }, ElButton: { template: '' }, + DataTable: { name: 'DataTable', props: ['data', 'columns'], template: '
' }, ElButton: { template: '' }, LoadErrorState: true, FleetQuoteEditor: true, FleetQuoteImport: true, ApiErrorMeta: true } } }); wrappers.push(wrapper); return wrapper } afterEach(() => { wrappers.splice(0).forEach(w => w.unmount()); vi.clearAllMocks() }) it('quotes read-only view fetches a page once and hides all write/export tools', async () => { diff --git a/src/modules/overseas-master-data/pages/TripOperationsView.vue b/src/modules/overseas-master-data/pages/TripOperationsView.vue index 477b427d..8365c98c 100644 --- a/src/modules/overseas-master-data/pages/TripOperationsView.vue +++ b/src/modules/overseas-master-data/pages/TripOperationsView.vue @@ -45,19 +45,24 @@ async function download() { exporting.value = true; try { saveFleetCsv(await exp const money = (rows: TripOperationsMoney[]) => rows.length ? rows.map(r => `${r.currency} ${r.amount.toFixed(2)}`).join(' / ') : '—' watch([page, size], load); onMounted(load); onBeforeUnmount(() => { sequence++ }) -