refactor(ui): 优化多页面表单布局及样式统一

- 统一用 section-card 组件替换原有分段结构,简化模板结构
- 调整表单列宽为 6 栅格,提高响应式适配效果
- 修改标题类名,采用一致的 archive-page-form__title
- 精简并合并样式,移除各页面冗余标题和分段样式声明
- 全站业务状态标签改为普通文字,不显示背景和圆点,字体颜色统一
- 优化 element-ui.scss 中表格操作列的 el-link 样式,兼容多层 DOM 结构
- 增加表格操作列 el-tooltip 单元格自动宽度,防止内容裁切
- 调整正式结算列表操作列宽度,提升显示空间
- 简化部分页面表单控件宽度样式,统一控件宽度及间距
- 删除多处无用样式,减少样式冗余,提高代码可维护性
This commit is contained in:
2026-08-25 11:23:42 +08:00
parent 8955ef16c7
commit 01c3bb5b57
14 changed files with 256 additions and 423 deletions
+26
View File
@@ -0,0 +1,26 @@
# 2026-08-25
## 全站操作列按钮居中统一
- 根因:pre-settlement 等手写操作列用 `<div class="xxx__links">` 包裹 `el-link`,而全局 `element-ui.scss` 第 904 行原选择器为 `:has(> .el-link)`(仅命中直接子元素),导致包了一层 div 的操作列未被居中规则命中,按钮靠左。
- 修复:将 `.el-table .el-table__body .cell:not(.avue-crud__menu)` 相关的三处选择器 `:has(> .el-link)` 全部放宽为 `:has(.el-link)`(第 904 / 935 / 954 行),兼容"el-link 被 div 包裹"的手写操作列;`.avue-crud__menu`(Avue 内置操作列)原已居中不受影响。
- 另在 `pre-settlement.vue``.pre-settlement-page__links``justify-content:center` 兜底。
- 结论:全站所有基于 el-link 的操作列(无论是否包裹 div)统一居中,符合 AGENTS.md 操作列规范。
## 全站业务状态标签改为普通文字(无颜色圆点)
- 根因:用户反馈审批状态列显示为带彩色圆点的文字(如截图),要求改成"普通的文字不要颜色"。此前 `.status-text` 是"文字 + 彩色圆点"风格。
- 修复:修改 `src/styles/element-ui.scss``.el-tag.status-text` 全局规则,去掉 `&::before` 圆点,并将 `color` 强制设为 `var(--el-text-color-regular)``font-weight:normal``margin:0`,背景边框保持透明。所有带 `class="status-text"``el-tag` 自动生效,无需逐页改模板。
- 结论:全站业务状态(调度状态/运单状态/审批状态等)统一为普通文字,不再带彩色圆点。
## /payment 下全部表单页板块风格统一
- 需求:所有 /payment 表单页(invoice-receipt / invoice-application / payment-application / bill-ledger / bill-payment / receipt-claim-record / receipt-flow)统一为"页面标题无蓝标 + 每个蓝标板块用白底卡片包裹 + 板块间距 12px",参考 business/project-apply/form。
- 实现:页面标题改用全局 `archive-page-form__title`(蓝标已注释,无竖条);各 `<section class="X-form-page__section"><div class="X-form-page__section-title">标题</div>` 整体改为全局组件 `<section-card title="标题">`(白底卡片 + 4px 主色竖条 + 卡间 12px,由 `src/styles/element-ui.scss` 全局 `.section-card` 提供);带按钮的板块(附件信息/开票内容)用 `<section-card title="..."><template #extra>按钮</template>`
- 清理:删除各文件 scoped 中 `__title`/`__section` 相关的废弃 CSS(蓝标 ::before、板块间距、heading 等);`payment-application``.payment-form-page__section-actions`(按钮行右对齐)属有效独立样式,清理时被误删,已补回。
- 校验:用 @vue/compiler-sfc 对 7 个文件做 template/script 编译,全部通过。
## /payment 板块表单控件统一 4 列(span=6)
- 需求:用户要求 /payment 下"板块表单控件都改成 4 列"。此前列数不一致:多数页用 `el-col :span="12"`2 列),invoice-application 用 `:span="8"`3 列),bill-payment / bill-ledger 是"两列各叠多个控件"的嵌套结构。
- 实现:
- 直接网格(每列一个控件):payment-application、invoice-receipt、receipt-claim-record、receipt-flow 的 `:span="12"``:span="6"`invoice-application 的 `:span="8"``:span="6"`(两处 el-row)。
- 嵌套网格:bill-payment、bill-ledger 拆成每个字段独立 `el-col :span="6"`(真 4 列),gutter 48→24;备注保留 `:span="24"` 整行。
- 媒体查询同步:`.el-col-12`/`.el-col-8` 窄屏折叠规则改成 `.el-col-6`(≤1024/1200/900/768px 折叠为整行)。
- 结论:全 /payment 表单页板块表单控件统一为 4 列网格,备注/长文本仍整行;pre-settlement-editor「结算基本信息」此前也已改 `:span="8"``span="6"`
+3 -3
View File
@@ -40,9 +40,9 @@
- 已覆盖:pre-settlement-editor「结算明细调整」弹窗(adjustDialog 列内 el-input-number/el-input 全宽)、transport-reconciliation-editor/formal-settlement-editor/settlement-adjustment-editor 同款结构。
### 业务状态标签文字化:全局 `.status-text` 工具类
- 需求:全站"调度状态/运单状态/审批状态"等用 `el-tag` 展示的字段,统一改为"纯文字 + 颜色"(不用 tag 背景/边框
- 实现:`element-ui.scss` 末尾新增 `.el-tag.status-text { background:transparent!important; border-color:transparent!important; padding:0; margin-left:8px; font-weight:500 }` + `&::before` 6px 圆点`background:currentColor`,颜色随 el-tag 的 `:type`
- 用法:业务状态 `el-tag``class="status-text"`,颜色仍由现有 `statusTagType/statusType/waybillStatusType/detailStatusType` 返回的 success/warning/danger/info/primary 决定
- 需求:全站"调度状态/运单状态/审批状态"等用 `el-tag` 展示的字段,统一改为**普通文字,不带颜色、不显示 tag 背景/边框/圆点**
- 实现:`element-ui.scss` 末尾 `.el-tag.status-text { background:transparent!important; border-color:transparent!important; color:var(--el-text-color-regular)!important; padding:0; margin:0; font-weight:normal!important }`,并隐藏 `&::before` 圆点`el-tag``:type` 继续保留在模板中(无需改动),但颜色已被全局 CSS 强制覆盖为正文色
- 用法:业务状态 `el-tag``class="status-text"`
- 已覆盖:`business-crud-page.vue`#status/#businessStatus/#approvalStatus 插槽 + 运输计划详情头 + 运单详情头 + 调度弹窗头)、`master-order.vue`/`master-order-detail.vue`/`master-order-dispatch.vue` 的 businessStatus、`loading-manage.vue` 详情弹窗、结算三处 approvalStatus、`process-config.vue` 流程状态、`credit-score-quantification.vue` 状态列。
- 例外:`loading-manage.vue` 列表状态列本就用 `<span class="loading-manage-page__status is-${status}">` 文字化(先例),不动;"类型标签"transport-flow-tag、transportTypeName 等 `type="primary"`)非状态语义,保持 tag 样式。