# 2026-08-28
## 医嘱三页面加「年龄」字段(已完成)
按用户截图:
- 长期医嘱 / 临时医嘱 print 单抬头:「姓名 / 性别 / 床号 / 护理等级」 → 「姓名 / 性别 / 年龄 / 床号 / 护理等级」(在性别后插入年龄 cell)
- 执行医嘱:列表 + 多条打印 + 单条打印 三处的「类型」列 / 行 → 全部改成「年龄」
### 改动文件
1. `src/views/elderly/elder/doctor-orders/long-doctor-order/Form.vue`
- `selectElder` 加 `v-model:elder-age="form.elderAge"`
- `defaultForm` 加 `elderAge: ''`
- `handleSelectElder` 补 `form.elderAge = elder.elderAge ?? ''`
- `resetForm` 加 `form.elderAge = ''`
2. `src/views/elderly/elder/doctor-orders/long-doctor-order/Print.vue`
- `info-row` 在性别 cell 后插 `年龄{{ form.elderAge }}`
- `defaultForm` 加 `elderAge: ''`
3. `src/views/elderly/elder/doctor-orders/short-doctor-order/Form.vue`:同 long Form
4. `src/views/elderly/elder/doctor-orders/short-doctor-order/Print.vue`:同 long Print
5. `src/views/elderly/elder/doctor-orders/execute-doctor-order/index.vue`
- 列表 `el-table`:「类型」列改 `prop="elderAge"` width=80,去掉 tag
- 多条打印 `
` thead「类型」改「年龄」,tbody 改为 `{{ item.elderAge || '' }}`
- 单条打印表里:「类型」th → 「年龄」,td 改 `{{ singlePrintRow.elderAge || '' }}`
- `makeRow()` 加 `elderAge: vo.elderAge ?? ''`
- `buildMockLong / buildMockShort` 三条测试数据加 `elderAge: 78 / 72 / 65`
### 数据来源
- `selectElder` 组件早就有 `elderAge` 字段 + `emit('update:elderAge', item.elderAge)`,只是 Form.vue 之前没用上
- 详情接口(`getLongDoctorOrder` / `getShortDoctorOrder`)理论上有 elderAge(VO 字段)。若后端遗漏,需要后端补字段
- 执行医嘱列表 elderAge 从 longOrder / shortOrder 的 VO 取(`getLongDoctorOrderPage` / `getShortDoctorOrderPage` 返回 list[].elderAge)
### 截图示意
- 单条执行医嘱打印:「长者 / 年龄 / 床位 / 状态」「长期医嘱」消失
- 多条执行医嘱列表打印:列名「类型」→「年龄」
- 长/短期医嘱单:抬头第 3 格「年龄:xx 岁」
## 长/短医嘱「新增」弹窗加年龄展示(已完成)
按用户新一轮截图:编辑/新增弹窗基本信息行(原本只有 性别/床位/护理等级)需要再加一列「年龄」。
### 改动
1. `long-doctor-order/Form.vue` 第 26-46 行
- `` 内 3 列改 4 列(span 6)
- 在性别 cell 后插入年龄 cell:`:model-value="form.elderAge !== '' && form.elderAge !== undefined && form.elderAge !== null ? `${form.elderAge}岁` : ''"` + placeholder
2. `short-doctor-order/Form.vue` 第 32-52 行:同 long
### 回填路径
- 新增/编辑模式通过 selectElder `v-model:elder-age="form.elderAge"` 自动回填
- 详情接口(getLong/ShortDoctorOrder)若返 elderAge,Object.assign 时一并落入;后端暂未补该字段时编辑场景会留空(与 bedName/nurseLevelName 同源问题)
- 显示加"岁"单位,未选长者时显示 placeholder 文字
## 长期医嘱单打印:A4 横版 → 竖版(已完成)
按用户要求:长期医嘱单打印从 A4 横版改成竖版。竖版可用宽度只有 210-8×2=194mm,12 列布局必须重排。
### 重排列宽(long-doctor-order/Print.vue)
- 容器 width: 270mm → 194mm
- colgroup 12 列 mm 数字:6 / 18 / 50 / 10 / 10 / 11 / 12 / 12 / 18 / 12 / 12 / 23(合计 194mm)
- @page: landscape → portrait
- 缩窄重点:医嘱内容 85→50mm,备注 48→23mm(用户明确)
### 遗留 / 待评估
- info-row(姓名/性别/年龄/床号/护理等级)5 等分在 194mm 下每格约 145px;若"姓名:xxx"等较长文本会被挤换行。下一轮看效果决定是否改 flex-start + gap
### 竖版备注再缩(备注 23→12mm,总宽 194→183mm)
按用户第二轮反馈:备注列在 80% dialog 中 zoom >100% 时整张表被挤出右边界。
- colgroup 末列 23 → 12mm(备注)
- 容器 width: 194 → 183mm
- 打印 @page A4 portrait 不变(纸张 = 210mm 减 16mm 边距 = 194mm 可用,183mm 表宽仍内嵌 ✓)
### 竖版再调:备注加宽 + 左右边距缩小
按用户第三轮反馈:12mm 备注太挤,希望左右视觉边距更小。
- Dialog width: 80% → 95%(dialog 占屏更多)
- 容器 width: 183mm → `width:100%; max-width:195mm`(弹填 dialog,不超过 A4 portrait 可用区 195mm)
- 容器 padding: `4px 6px` → `4px 0`(去掉左右 padding,让表格贴 dialog 内壁)
- colgroup 备注 12 → 24mm(+12mm,可读宽度恢复)
- 总宽 183 → 195mm:6+18+50+10+10+11+12+12+18+12+12+24 = 195mm
- @page A4 portrait 不变(纸张 210-16=194mm,容器 max 195 略超,但 colgroup 总和 195 ≥纸张 194 仅 ~1mm,浏览器自动调整)
### colgroup mm → %,完全弹填 dialog
按用户第四轮反馈:边距缩了之后右侧备注列右边线框仍被挤掉。
根因:colgroup mm 是物理长度(96dpi 1mm=3.78px),用户视口窄+Windows 缩放使 195mm 实际像素超 dialog 95% 宽度。
- colgroup 12 列 mm → %:3.08/9.23/25.64/5.13/5.13/5.64/6.15/6.15/9.23/6.15/6.15/12.31(合计 100%)
- 比例与原 195mm 设计一致(6/18/50/.../24mm)
- 容器 width: 100%(去掉 max-width),margin: 0(不再居中,贴 dialog 左内壁到右内壁)
- table width: 100%(已有,table-layout: fixed 严格按 colgroup % 分列)
- 打印纸张 A4 portrait 可用 194mm 时,容器 = 纸张宽,列宽 % 等比缩放至 194×比例 ≈ 原 6/18/50/.../24mm ✓
### 临时医嘱单 colgroup 重排
按用户第六轮反馈:竖版下医嘱列窄(28.35%)+ 备注列宽(26.80%)不合理。
- 新比例按 A4 portrait 194mm 内容重排:医嘱 28.35→38.66%(+10.3%,75mm),备注 26.80→17.53%(-9.27%,34mm)
- 其他列微调:医嘱时间 9.28%(18mm)、频次 5.15%(10mm)、给药时间 5.15%(10mm)、途径 5.67%(11mm)、医生/护士签名各 9.28%(18mm)
按用户第五轮反馈:内部 cell 边框 1px #333 视觉粗,最右列外侧线在容器抗锯齿下显得细且淡,希望统一淡雅。
- th/td `border: 1px solid #333` → `border: 1px solid #999`
- 保持 1px 宽度不变,仅颜色变浅,所有内分割线与最外侧线视觉一致
## 临时医嘱单 + 执行医嘱打印同步改成竖版(已完成)
参照长期医嘱单竖版范式(A4 portrait + % 列宽 + #999 细线),把另外两个打印也改了。
### 临时医嘱单 short-doctor-order/Print.vue
- Dialog width: 80% → 95%
- 容器 width: 270mm → 100%,padding 4px 6px → 4px 0,margin 0 auto → 0
- colgroup mm(8列 22/105/14/12/14/18/18/67=270) → %(9.28/28.35/6.19/6.19/6.70/8.25/8.25/26.80,合计 100),比例取自 194mm 竖版设计
- th/td border #333 → #999
- @page landscape → portrait
### 执行医嘱 execute-doctor-order/index.vue
- 打印 dialog width: 1080px → 95%
- 容器 .exec-print width: 270mm → 100%,padding 4px 6px → 4px 0,margin 0
- 汇总表 colgroup mm(13列 6/22/22/14/75/14/14/12/22/16/22/13/18=270) → %(3.09/8.25/8.25/5.67/18.04/5.67/5.67/5.67/8.25/7.22/8.25/5.67/10.31,合计≈100),比例取自 194mm 竖版设计
- 单条表 colgroup mm(24/96/24/96=240) → %(10/40/10/40 = 100)
- .single-info tbody th width: 24mm → 10%
- th/td border #333 → #999
- @page landscape → portrait
- 注释块「参照 A4 横版范式」→「参照 A4 竖版范式」
### 列宽 % 设计原则
- 原 mm 数之和 ÷ 194(portrait 可用宽 210-16)再 ×100 得 %,保留与原竖版 mm 设计一致的相对比例
- 屏幕预览弹填 dialog(避免 mm 物理宽度在窄视口 + Windows 缩放下溢出)
- 打印 @page portrait 纸张 194mm 时,容器 = 纸张宽,列宽 % 等比缩放回原 mm 值