From 3cb174ce0c50d3b999472bfbae45d3ab6068d981 Mon Sep 17 00:00:00 2001 From: yelan Date: Sat, 26 Sep 2026 20:56:02 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E6=96=87=E4=B9=A6=E9=A2=84=E8=A7=88):?= =?UTF-8?q?=20=E6=8A=BD=E5=87=BA=E7=BB=9F=E4=B8=80=E7=9A=84=E6=96=87?= =?UTF-8?q?=E4=B9=A6=E7=BA=B8=E4=B8=8E=E9=A2=84=E8=A7=88=E5=BC=B9=E7=AA=97?= =?UTF-8?q?=EF=BC=8C=E6=B6=88=E9=99=A4=E4=BA=94=E5=A4=84=E9=87=8D=E5=A4=8D?= =?UTF-8?q?=E6=B8=B2=E6=9F=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 预览原先在 5 个地方各写一遍(文书库预览、编辑器签署预览、发起签署弹窗预览、 工作台在线预览、工作台文书区),基础排版已经分叉:表格边框 #52646e 与 #c8d7dd 两套色、单元格内边距 5px 7px 与 5px 9px 两个值、只有两处带宋体。 原型本身是「一处渲染(.paper + fillDocHtml)、两种外框」,这次按那个形状收口。 新增 - utils/document-paper.ts:基础排版的**唯一一份** CSS(p / h1-h4 / 表格 / 宋体)。 运行期幂等注入 head —— 因为同一份纸有两条渲染通道:v-html(吃全局样式)与 iframe srcdoc(隔离模板自带 style,只能吃字符串),各写一份必然漂移。 - components/document/DocumentPaper.vue:唯一的纸渲染器。 signing / raw 两模式、interactive、取值还原、☑☐ 就地切换、签名位请求采集、 填写项与勾选上报、getDocumentElement()(供导出 PDF)。 - components/document/DocumentPreviewDialog.vue:唯一的预览外框。 标题/副标题/徽标、可选页签、加载与错误态、纸舞台(浅色卡片 / 深灰 A4)、 #footer 与 #empty 插槽。 - styles/document-preview.css:页脚按钮等**插槽内容**要用的类。 插槽节点带的是父组件 scope id,弹窗的 scoped 样式命中不了 —— 与 signing-document.css 同一类问题,同一套解法。 迁移 - 文书库预览、编辑器签署预览、发起签署弹窗预览、工作台在线预览全部改走统一组件; SigningDocumentInteractive 的纸换成 DocumentPaper,只留任务外壳 (横幅 / 作废章 / 填写项进度)。 - 删除四处基础排版副本;SimSun 与 :deep(table) 现在各只剩一处。 行为保持 - 文书库预览仍是两个页签(文书内容走 iframe 隔离、签署预览走 v-html), 没有正文时仍给占位版式(占位符写成 {患者姓名} 原始形态,不预填示例值)。 - 工作台预览的深灰 A4 舞台、页脚说明与两个出口按钮不变。 - 作废章原先是纸的兄弟节点、DOM 顺序在前,纸改成自带白底后会被盖住 —— 给章补 z-index,并在探针里加命中测试锁死。 验证 - 新增 probe-doc-paper.cjs:31/31 PASS。核心是**计算样式**断言 (边框色 / 内边距 / 宋体 / border-collapse),并断言文书库预览与编辑器预览 两份纸的样式**逐项一致** —— 只看 DOM 存在证明不了"只有一份排版"。 - 回归:probe-new-task 104/104、probe-workbench-lib 46/46(新增作废章命中测试)、 probe-dept-confirm 36/36、probe-method-domain 14/14、probe-report-analytics 92/92。 - vue-tsc 与 eslint 0 错。 净减 888 行(309 增 / 1197 删)。 --- .../src/components/document/DocumentPaper.vue | 343 ++++++++ .../document/DocumentPreviewDialog.vue | 440 ++++++++++ .../signing/NewSigningTaskDialog.vue | 136 +--- .../signing/SigningDocumentInteractive.vue | 314 ++------ clinical-web/src/styles/document-preview.css | 60 ++ clinical-web/src/styles/index.css | 3 + clinical-web/src/utils/document-paper.ts | 137 ++++ .../components/DocumentPreviewDialog.vue | 753 ++++-------------- .../documents/components/WordEditorDialog.vue | 47 +- .../components/SignedDocumentDialog.vue | 263 ++---- 10 files changed, 1294 insertions(+), 1202 deletions(-) create mode 100644 clinical-web/src/components/document/DocumentPaper.vue create mode 100644 clinical-web/src/components/document/DocumentPreviewDialog.vue create mode 100644 clinical-web/src/styles/document-preview.css create mode 100644 clinical-web/src/utils/document-paper.ts diff --git a/clinical-web/src/components/document/DocumentPaper.vue b/clinical-web/src/components/document/DocumentPaper.vue new file mode 100644 index 0000000..1e66dbf --- /dev/null +++ b/clinical-web/src/components/document/DocumentPaper.vue @@ -0,0 +1,343 @@ + + +