diff --git a/src/pages/ReportEditor.tsx b/src/pages/ReportEditor.tsx index a31d823..d29371f 100644 --- a/src/pages/ReportEditor.tsx +++ b/src/pages/ReportEditor.tsx @@ -426,7 +426,7 @@ export default function ReportEditor() { const text = w > 0 && w < 80 ? '插图' : '插入/点击放置图片'; placeholder.innerHTML = ` × - + `; placeholder.style.border = '1px dashed #cbd5e1'; placeholder.style.background = '#f8fafc'; @@ -2036,13 +2036,13 @@ export default function ReportEditor() { let html: string; if (inTable) { const styleStr = 'position:relative;display:flex;align-items:center;justify-content:center;border:1px dashed #cbd5e1;background:#f8fafc;cursor:pointer;width:100%;height:100%;max-width:200px;max-height:200px;min-height:60px;margin:0 auto;'; - html = `
图A 腹腔镜探查
图B 胆囊管夹闭与离断
图C 胆囊动脉夹闭与离断
图D 胆囊剥离与床面止血
图E 胆囊取出与钛夹确认
图F 止血材料覆盖及检查
- 手术者签名:× + 手术者签名:×
diff --git a/工程分析/实现方案-2026-04-18-22-59-10.md b/工程分析/实现方案-2026-04-18-22-59-10.md new file mode 100644 index 0000000..be25198 --- /dev/null +++ b/工程分析/实现方案-2026-04-18-22-59-10.md @@ -0,0 +1,66 @@ +# 实现方案 —— 2026-04-18-22-59-10 + +## 方案目标 +将字段下划线默认行为改为「默认不显示」,修复占位符提示文字居中问题。 + +## 需求 1:所有字段默认打印时不显示下划线 + +### 修改文件 1:`src/pages/TemplateManage.tsx` + +1. **新增字段默认状态**: + ```ts + const [newFieldHasUnderline, setNewFieldHasUnderline] = useState(false); + ``` + +2. **编辑字段回显默认值**:在 `startEditField` 或等效函数中: + ```ts + setEditFieldHasUnderline(field.hasUnderline ?? false); + ``` + +3. **插入字段类名判断**:在 `insertSmartField` 中: + ```ts + const underlineClass = field.hasUnderline !== true ? ' no-underline' : ''; + ``` + +### 修改文件 2:`src/utils/defaultContent.ts` + +移除 `noUnderlineKeys` 数组,直接在 `smartField()` 中给所有字段加 `.no-underline`: +```ts +const smartField = (key: string) => { + return ` ×`; +}; +``` + +## 需求 2:修复占位符文字偏左 + +### 修改文件 +`src/pages/ReportEditor.tsx`、`src/pages/TemplateManage.tsx`、`src/utils/defaultContent.ts` + +### 修改内容 +在所有 `.placeholder-text` 的 `style` 属性中追加 `text-align:center;`。 + +需要修改的位置: +1. `defaultContent.ts`:Logo 占位符 + 6 个表格占位符 + 签名占位符 +2. `ReportEditor.tsx`: + - `handleEditorClick` 删除恢复逻辑中的 `.placeholder-text` + - `placeholderModal` 确认插入时的 `.placeholder-text`(table 内 + inline-block) +3. `TemplateManage.tsx`: + - `handleEditorClick` 删除恢复逻辑中的 `.placeholder-text` + - `placeholderModal` 确认插入时的 `.placeholder-text`(table 内 + inline-block) + +统一的新样式: +``` +color:#94a3b8;font-size:11px;pointer-events:none;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);display:block;width:100%;text-align:center;overflow:hidden;white-space:nowrap;text-overflow:ellipsis; +``` + +## 涉及文件及修改点 +| 文件 | 修改点 | +|------|--------| +| `src/pages/TemplateManage.tsx` | `newFieldHasUnderline` 默认 `false`;编辑回显默认 `false`;`insertSmartField` 判断逻辑;placeholder-text 样式 | +| `src/utils/defaultContent.ts` | `smartField()` 直接加 `.no-underline`;所有 placeholder-text 加 `text-align:center` | +| `src/pages/ReportEditor.tsx` | 所有 placeholder-text 加 `text-align:center` | + +## 风险与注意事项 +1. `smartField()` 中移除 `noUnderlineKeys` 后,所有默认模板字段将统一无下划线。此前通过 `hasUnderline` 配置自定义下划线的机制仍然保留(`field.hasUnderline === true` 时不加 `.no-underline`),只是默认值变为 `false`。 +2. `text-align:center` 追加时需注意不破坏已有的其他样式属性顺序。 +3. 批量替换 `placeholder-text` 样式时,应使用精确的字符串匹配,避免误伤其他元素。 diff --git a/工程分析/测试方案-2026-04-18-22-59-10.md b/工程分析/测试方案-2026-04-18-22-59-10.md new file mode 100644 index 0000000..4a7985b --- /dev/null +++ b/工程分析/测试方案-2026-04-18-22-59-10.md @@ -0,0 +1,54 @@ +# 测试方案 —— 2026-04-18-22-59-10 + +## 测试目标 +验证字段下划线默认行为和占位符文字居中修复。 + +## 测试用例 + +### TC-1:新增字段默认不下划线 +**前置条件**:进入模板管理 → 字段管理 → 新增字段。 +**步骤**: +1. 点击「添加字段」。 +2. 观察「打印时显示下划线」复选框状态。 +**预期结果**:复选框默认未勾选。 + +### TC-2:插入字段默认带 no-underline 类 +**前置条件**:模板管理中已有字段(默认或新增)。 +**步骤**: +1. 在编辑器中插入任意字段。 +2. 检查生成的 HTML。 +**预期结果**:`.field-value` 带有 `.no-underline` 类。 + +### TC-3:显式勾选下划线后打印正常显示 +**前置条件**:某个字段的「打印时显示下划线」已勾选。 +**步骤**: +1. 插入该字段。 +2. 点击打印预览。 +**预期结果**:该字段显示下划线,其他未勾选字段不显示。 + +### TC-4:默认模板所有字段打印无下划线 +**前置条件**:新建报告,加载默认模板。 +**步骤**: +1. 点击打印预览。 +2. 检查「姓名、性别、年龄、科别、床号、住院号」等字段。 +**预期结果**:所有字段均不显示下划线。 + +### TC-5:删除图片后占位符文字居中 +**前置条件**:模板中有图片占位符,已插入图片。 +**步骤**: +1. 点击图片右上角的「×」删除。 +**预期结果**:提示文字(如「插入/点击放置图片」或「LOGO」)在虚线框正中心,不偏左。 + +### TC-6:不同尺寸占位符文字均居中 +**前置条件**:模板中有不同尺寸的占位符(65px Logo、200px 表格占位符)。 +**步骤**: +1. 分别检查各占位符的文字位置。 +**预期结果**:所有占位符文字均绝对居中。 + +## 回归测试 +- 确保字段插入、编辑、删除功能正常。 +- 确保图片占位符的插入、删除、拖拽功能正常。 +- 确保打印样式正常。 + +## 测试通过标准 +所有用例均通过,无控制台报错,排版居中对齐准确。 diff --git a/工程分析/需求分析-2026-04-18-22-59-10.md b/工程分析/需求分析-2026-04-18-22-59-10.md new file mode 100644 index 0000000..14a07f2 --- /dev/null +++ b/工程分析/需求分析-2026-04-18-22-59-10.md @@ -0,0 +1,32 @@ +# 需求分析 —— 2026-04-18-22-59-10 + +## 需求来源 +用户希望调整字段默认下划线行为,并修复占位符文字居中的样式问题。 + +## 需求概述 + +### 需求 1:所有字段默认打印时不显示下划线 +当前字段管理中,新增字段的「打印时显示下划线」复选框默认勾选(`hasUnderline` 默认为 `true`)。用户希望改为默认不勾选,即所有现有字段和新增字段在打印时默认不显示下划线。 + +具体改动点: +- `newFieldHasUnderline` 状态默认值从 `true` 改为 `false` +- 编辑字段回显时,`hasUnderline` 回退值从 `true` 改为 `false` +- `insertSmartField` 中类名判断逻辑改为:只要 `hasUnderline !== true` 就加 `.no-underline` +- `defaultContent.ts` 中 `smartField()` 直接给所有字段加 `.no-underline` + +### 需求 2:修复删除图片后占位符文字偏左 +删除图片后,占位符恢复为默认状态,但提示文字(如「插入/点击放置图片」)在虚线框内偏左,未真正居中。 + +原因分析:虽然使用了 `position:absolute + transform:translate(-50%, -50%)`,但 `placeholder-text` 是 `display:block; width:100%` 的块级元素,其内部文本流默认 `text-align:left`,导致文字靠左。 + +修复方案:在所有 `.placeholder-text` 的 style 中追加 `text-align:center;`。 + +## 涉及文件 +- `src/pages/TemplateManage.tsx`(需求 1、2) +- `src/utils/defaultContent.ts`(需求 1、2) +- `src/pages/ReportEditor.tsx`(需求 2) + +## 需求影响范围 +- 字段管理的默认值和插入逻辑 +- 默认模板中所有 smartField 的下划线行为 +- 所有图片占位符的提示文字对齐方式