2026-04-18-17-48-59 - 模板排版微调:字段间距、Flex居中抬头、打印隐藏删除按钮、统一1.5行距、下划线贴底

This commit is contained in:
Administrator
2026-04-18 17:52:05 +08:00
parent e1dc961ecf
commit 55ce78d898
5 changed files with 289 additions and 55 deletions

View File

@@ -0,0 +1,100 @@
# 实现方案 —— 2026-04-18-17-48-59
## 方案目标
修复默认模板排版细节和打印样式问题,提升报告的视觉一致性和打印输出质量。
## 需求 1缩减基本信息栏字段间空格
### 修改文件
`src/utils/defaultContent.ts`
### 修改内容
将基本信息栏 `<p>` 中字段之间的 `&nbsp;&nbsp;&nbsp;` 替换为单个 `&nbsp;`
**修改前**
```html
姓名:${smartField('patientName')}&nbsp;&nbsp;&nbsp;
性别:${smartField('patientGender')}&nbsp;&nbsp;&nbsp;
年龄:${smartField('patientAge')}&nbsp;&nbsp;&nbsp;
科别:${smartField('department')}&nbsp;&nbsp;&nbsp;
床号:${smartField('bedNumber')}&nbsp;&nbsp;&nbsp;
住院号:${smartField('hospitalId')}
```
**修改后**
```html
姓名:${smartField('patientName')}&nbsp;
性别:${smartField('patientGender')}&nbsp;
年龄:${smartField('patientAge')}&nbsp;
科别:${smartField('department')}&nbsp;
床号:${smartField('bedNumber')}&nbsp;
住院号:${smartField('hospitalId')}
```
## 需求 2Logo 与医院名/标题靠拢并整体居中
### 修改文件
`src/utils/defaultContent.ts`
### 修改内容
将顶部 3 列 `<table>` 替换为 `<div style="display: flex; justify-content: center; align-items: center; gap: 12px; margin-bottom: 16px;">`
- Logo 占位符放在 flex 子 div 中
- 医院名和标题放在另一个 flex 子 div 中(`text-align: center`
- 整体通过 `justify-content: center` 实现居中
- `gap: 12px``margin-right: 12px` 控制 Logo 与文字间距
## 需求 3打印时隐藏所有「×」删除按钮
### 修改文件
`src/utils/print.ts`
### 修改内容
`print.ts` 生成的 `<style>` 标签中,将 `.image-placeholder .delete-btn { display: none !important; }` 扩展为全局规则:
```css
.delete-btn { display: none !important; }
```
这样无论删除按钮位于 `.image-placeholder` 内还是 `.smart-field-wrapper` 内,打印时均不可见。
## 需求 4统一全文行距为 1.5,消除段前段后间距
### 修改文件
`src/utils/defaultContent.ts``src/utils/print.ts`
### 修改内容
1. **`defaultContent.ts`**:将所有 `<p>` 标签的内联样式统一为 `line-height: 1.5; margin: 0; padding: 0;`。移除原有的 `line-height: 1.8`、默认 margin 等不一致设置。
2. **`print.ts`**:将全局 `p` 样式从 `margin: 0; padding: 4px 0; line-height: 1.6;` 修改为 `margin: 0; padding: 0; line-height: 1.5;`
## 需求 5下划线紧贴文字底部
### 修改文件
`src/utils/defaultContent.ts`
### 修改内容
1. **医院名称下划线**:将包裹医院名的 `div``padding-bottom: 4px` 移除或改为 `0`。同时在该 `div` 上增加 `line-height: 1`,消除中文字体自带的底部留白,使 `border-bottom` 紧贴文字。
2. **基本信息栏下划线**:将外层 `<div style="border-bottom: 1px solid #000; ...">``padding-bottom: 4px` 移除。内部 `<p>``line-height` 已统一为 1.5(需求 4若仍有间距问题可进一步在该 `<p>` 上设置 `line-height: 1.2` 或让下划线直接由 `<p>``border-bottom` 实现。
### 优化策略
更简洁的做法:让下划线直接由承载文字的 `<p>` 元素生成,而非由外层 `<div>` 生成。例如:
```html
<p style="font-family: SimSun; font-size: 11pt; font-weight: normal; margin: 0; padding: 0 0 2px 0; line-height: 1.2; border-bottom: 1px solid #000;">
姓名:... 性别:...
</p>
```
这样文字底部与下划线之间仅由 `padding-bottom: 2px``line-height` 控制,可精确调整。
对于医院名称,同理:
```html
<div style="font-size: 14pt; font-family: SimSun; line-height: 1; border-bottom: 1px solid #000; padding-bottom: 0; margin-bottom: 8px; display: inline-block;">
```
## 涉及文件及修改点
| 文件 | 修改点 |
|------|--------|
| `src/utils/defaultContent.ts` | 缩减空格;改 Flex 抬头;统一 line-height/margin/padding调整下划线贴底 |
| `src/utils/print.ts` | 全局隐藏 `.delete-btn`;统一 p 标签 line-height/margin/padding |
## 风险与注意事项
1. `print.ts` 的全局 `.delete-btn { display: none !important; }` 会覆盖所有删除按钮,包括未来可能新增的其他类型。这是预期行为(打印时不应显示任何交互按钮)。
2. `line-height: 1` 在部分中文字体下可能导致字符上下紧贴甚至重叠,需在实际打印中验证。若出现问题,可微调为 `line-height: 1.1`
3. 修改 `defaultContent.ts` 后,新建报告会加载新模板,但已有报告(保存在 localStorage 中)不会自动更新。这是预期行为。

View File

@@ -0,0 +1,111 @@
# 测试方案 —— 2026-04-18-17-48-59
## 测试目标
验证默认模板排版微调和打印样式修复是否正确生效。
## 测试用例
### TC-01基本信息栏字段间距
**前置条件**:新建报告,加载默认模板
**操作步骤**
1. 查看「姓名:性别:年龄:科别:床号:住院号:」一行
**预期结果**
- 各字段之间仅有一个空格间距
- 字段分布紧凑,不会过度分散
---
### TC-02抬头整体居中
**前置条件**:新建报告,加载默认模板
**操作步骤**
1. 查看报告最顶部
**预期结果**
- Logo 与「西 安 交 通 大 学 第 一 附 属 医 院 + 手术记录」作为一个整体水平居中
- Logo 与文字之间间距较小(约 12px
- 不会出现 Logo 偏左、文字偏右的分离感
---
### TC-03打印时不显示删除按钮
**前置条件**:新建报告,填写部分字段内容
**操作步骤**
1. 点击打印按钮
2. 检查打印预览
**预期结果**
- 所有红色「×」删除按钮均不可见
- `.image-placeholder` 中的 × 不可见
- `.smart-field-wrapper` 中的 × 不可见
- 已填充的图片占位符正常显示图片
---
### TC-04全文行距统一
**前置条件**:新建报告,加载默认模板
**操作步骤**
1. 查看手术日期、术前诊断等段落
2. 查看手术步骤段落
**预期结果**
- 所有段落行距一致,为 1.5 倍
- 段落之间无额外 margin/padding 间距
- 整体排版紧凑均匀
---
### TC-05打印行距验证
**前置条件**:报告有内容
**操作步骤**
1. 点击打印
2. 检查打印预览中的段落间距
**预期结果**
- 打印输出行距为 1.5 倍
- 无段前段后 padding
---
### TC-06医院名称下划线贴底
**前置条件**:新建报告
**操作步骤**
1. 查看「西 安 交 通 大 学 第 一 附 属 医 院」下方横线
**预期结果**
- 下边框紧贴文字底部
- 无明显的 padding-bottom 间隙
---
### TC-07基本信息栏下划线贴底
**前置条件**:新建报告
**操作步骤**
1. 查看「姓名:...住院号:」整行下方的横线
**预期结果**
- 下边框紧贴文字底部
- 无明显的 padding-bottom 间隙
- 横线与文字之间仅有极小间距(≤ 2px
---
### TC-08打印下划线验证
**前置条件**:报告有内容
**操作步骤**
1. 点击打印
2. 检查医院名和基本信息栏的下划线位置
**预期结果**
- 打印时下边框紧贴文字底部
- 与屏幕预览一致
---
## 回归测试范围
- 验证 smart-field-wrapper 的双向绑定(表单→正文、正文→表单)正常工作
- 验证 image-placeholder 的点击上传、拖拽填充、删除功能不受影响
- 验证手术图片说明表格的 6 图格布局正常
## 测试结论
TC-01~TC-08 全部通过,即可确认五项排版优化均正确实现。

View File

@@ -0,0 +1,30 @@
# 需求分析 —— 2026-04-18-17-48-59
## 需求来源
用户基于打印预览效果,提出默认模板排版微调和打印样式修复需求。
## 需求概述
### 需求 1缩减基本信息栏字段间空格
当前默认模板中「姓名:性别:年龄:科别:床号:住院号:」之间使用了 `&nbsp;&nbsp;&nbsp;`(三个不间断空格),间距过大。需缩减为单个空格 `&nbsp;`
### 需求 2Logo 与医院名/标题靠拢并整体居中
当前顶部使用 3 列 table20%-60%-20%Logo 固定在左侧 20% 区域,与中间标题距离过远。需改为 Flex 布局,使 Logo 与文字内容作为一个整体水平居中,且两者间距缩小。
### 需求 3打印时隐藏所有「×」删除按钮
打印预览中,`.smart-field-wrapper` 内的 `.delete-btn`(红色×)仍然可见。`print.ts` 中仅隐藏了 `.image-placeholder .delete-btn`,遗漏了文本字段中的删除按钮。需全局隐藏 `.delete-btn`
### 需求 4统一全文行距为 1.5,消除段前段后间距
当前模板中各 `<p>` 标签的 `line-height` 不统一(有 1.8、默认行高等),且部分段落有默认 margin/padding。需统一为 `line-height: 1.5; margin: 0; padding: 0;`
### 需求 5下划线紧贴文字底部
「西 安 交 通 大 学 第 一 附 属 医 院」下方的 `border-bottom` 和「姓名:」等基本信息栏下方的 `border-bottom` 与文字间距过大。需移除 `padding-bottom`,并通过 `line-height: 1` 或类似手段消除字体底部留白,使横线紧贴文字底部。
## 涉及文件
- `src/utils/defaultContent.ts`(需求 1、2、4、5
- `src/utils/print.ts`(需求 3、4
## 需求影响范围
- 默认报告模板的视觉效果
- 打印输出样式
- 无业务逻辑变更