refactor(settlement): 优化 transport-reconciliation 表格结构及字段布局

- transport-reconciliation 页面将工具栏、表格和分页抽成独立子组件放入 el-tabs 内
- transport-reconciliation-table-panel 组件统一处理 view/edit/delete/confirm 等操作及状态渲染
- formal-settlement-editor 中调整字段布局,el-col 宽度由 8 改为 6,增加表单密度
- 删除 transport-reconciliation 中原有 toolbar 与 table 的分离代码和样式
- 导出操作移交父组件处理,无权限守卫,保持功能一致
- 确认所有改动通过 Vite 构建验证,等待用户体验验证切换与刷新功能
This commit is contained in:
2026-08-21 14:43:58 +08:00
parent 039a08a86a
commit 051bda5b3a
2 changed files with 8 additions and 1 deletions
+7
View File
@@ -106,3 +106,10 @@
- `el-input-number` 上绑定 `:class="field.class"`
- scoped style 的 `&__form` 内增加 `:deep(.exchange-rate-input .el-input__inner) { text-align: left; }`
- 影响:仅针对「结算汇率」字段,不改动其他数字输入框对齐方式。
## transport-reconciliation:同样把表格放进 tabs
- 需求:`/settlement/transport-reconciliation` 与 formal-settlement 同样问题——`el-tabs`(应付/应收) 是空 type 切换器、工具栏+表格在 tabs 外;要求把表格放进 tabs 内。
- 改动:
1. 新建 `src/views/settlement/components/transport-reconciliation-table-panel.vue`:工具栏(新增/导出+刷新)+`el-table`+分页抽成子组件;props 同 formal 面板,emits `create/export/refresh/page-change/update:selection/action`;列渲染差异:`.link` 列点击 emit view、`reconciliationStatusName``row.reconciliationStatus==='completed'?'success':'warning'` 的 el-tag;行操作 `rowActions(row)` 为 查看(常显)+编辑/删除/确认(均 `hasPermission && isEditable(row)`isEditable=`reconciliationStatus==='unfinished'`),确认非 danger。
2. `src/views/settlement/transport-reconciliation.vue`:删除原 toolbar+table+pagination 块与对应 scoped 样式(`__toolbar/__toolbar-right/__links/__pagination`),在两个 `el-tab-pane` 内各放一个面板;保留 `.reconciliation-page__settlement-tabs`(含 `:deep(.el-tabs__header){margin:0}`);新增 `handlePageChange``handleAction({type,row})`(view→openView/edit→openEdit/delete→handleDelete/complete→handleComplete);删除 `handleSizeChange`。导出按钮无权限守卫、仍 emit `export` 由父 `handleExport`(用 `this.settlementType`)处理。
- 验证:Vite build 通过(EXIT=0)。待用户在 2889 刷新核对应付/应收 tab 各自带完整表格与工具栏、切换触发 reload。
@@ -10,7 +10,7 @@
label-width="auto"
>
<el-row :gutter="24">
<el-col v-for="field in fields" :key="field.prop" :span="8">
<el-col v-for="field in fields" :key="field.prop" :span="6">
<el-form-item :label="field.label" :prop="field.prop">
<el-date-picker
v-if="field.type === 'date' && editable"