diff --git a/clinical-web/src/api/management/documents.ts b/clinical-web/src/api/management/documents.ts index 0cd099b..3455613 100644 --- a/clinical-web/src/api/management/documents.ts +++ b/clinical-web/src/api/management/documents.ts @@ -110,6 +110,10 @@ function mapDocument(dto: TemplateResponseDto): DocumentRecord { departmentName: dto.departmentId ? undefined : '全院通用', campusId: dto.campusId, description: dto.description ?? '', + // 后端补齐这两个字段后卡片会自动显示「检查类型 / 关联项目」; + // 现在取不到就是 undefined,卡片不渲染对应标签,不伪造取值 + examType: dto.examType ?? undefined, + projectCodes: dto.projectCodes ?? undefined, } } diff --git a/clinical-web/src/api/management/types.ts b/clinical-web/src/api/management/types.ts index 1057acd..b3dced2 100644 --- a/clinical-web/src/api/management/types.ts +++ b/clinical-web/src/api/management/types.ts @@ -34,6 +34,21 @@ export interface DocumentRecord { campusId?: string | null campusName?: string description?: string + /** + * 检查类型(原型 V10.2 卡片上的「🔬 检查类型:xxx」)。 + * + * 只有检查/检验类文书才有值(如「平扫 / 增强」「分子检测」), + * 告知类文书为空。当前后端模板接口不返回它,因此**真实模式下为空时整条标签不渲染**, + * 不为它编一个取值。 + */ + examType?: string | null + /** + * 关联项目编码(原型 V10.2 卡片上的「关联项目」编码串)。 + * + * 用于把文书与 HIS 的检查/检验项目对应起来,卡片上以 `.proj-code` 小标签展示。 + * 同样只在后端提供时才有值,缺省即不显示。 + */ + projectCodes?: string[] contentHtml?: string contentSha256?: string /** 当前已发布版本;发起签署必须使用它,不能误用最新草稿版本。 */ @@ -60,6 +75,14 @@ export interface TemplateResponseDto { campusId: string departmentId?: string | null category?: string | null + /** + * 检查类型与关联项目编码(原型 V10.2 卡片上的两条信息)。 + * + * 当前后端不返回,声明为可选是为了在它补齐后**不需要再改前端**就能显示出来; + * 取不到时卡片整条标签不渲染,不编造取值。 + */ + examType?: string | null + projectCodes?: string[] | null status?: BackendTemplateStatus | null currentVersionId?: string | null latestVersionId?: string | null diff --git a/clinical-web/src/utils/mock-document-library.ts b/clinical-web/src/utils/mock-document-library.ts index cdffa40..3df9021 100644 --- a/clinical-web/src/utils/mock-document-library.ts +++ b/clinical-web/src/utils/mock-document-library.ts @@ -52,6 +52,12 @@ export interface LocalDocument { sharedDepartments?: string[] campusId?: string | null campusName?: string + /** + * 检查类型与关联项目编码(原型 V10.2 卡片上的「🔬 检查类型」「关联项目」)。 + * 与 api/management/types.ts 的 DocumentRecord 同名同义,演示文库据此渲染同样的标签。 + */ + examType?: string | null + projectCodes?: string[] /** * 演示数据的更新时间。 * 演示文库的种子不带时间,页面在这一层会显示成"—"而不是伪造一个时间戳; @@ -243,6 +249,10 @@ function buildDemoLibrary(): LocalDepartment[] { status: 'published', backendStatus: 'PUBLISHED', description: '麻精药品成瘾性风险、特殊属性告知、身份核验、代办人信息与用药信息登记。', + // 原型 library 里这份文书带 projCodes:['PHA-NAR'],照抄。 + // 它**没有** examType —— 告知类文书本来就不挂检查类型,因此演示库里 + // 「检查类型」标签不出现是正确结果,不要为了让它可见而编一个取值。 + projectCodes: ['PHA-NAR'], versionId: 'tpl-pha-nar-001-v1', departmentId: null, departmentName: DEMO_DEPARTMENT, diff --git a/clinical-web/src/views/management/documents/components/DocumentLibraryHeader.vue b/clinical-web/src/views/management/documents/components/DocumentLibraryHeader.vue index 3c97720..fe2d804 100644 --- a/clinical-web/src/views/management/documents/components/DocumentLibraryHeader.vue +++ b/clinical-web/src/views/management/documents/components/DocumentLibraryHeader.vue @@ -33,8 +33,8 @@ function handleInput(event: Event) { :value="modelValue" class="lib-search" type="search" - placeholder="搜索模板名 / 编号 / 科室 / 分类" - aria-label="搜索模板名称、编号、科室或分类" + placeholder="搜索模板名 / 编号 / 科室 / 关联项目编码" + aria-label="搜索模板名称、编号、科室、分类或关联项目编码" @input="handleInput" /> diff --git a/clinical-web/src/views/management/documents/components/DocumentTemplateCard.vue b/clinical-web/src/views/management/documents/components/DocumentTemplateCard.vue index 853f0ba..d11cd2b 100644 --- a/clinical-web/src/views/management/documents/components/DocumentTemplateCard.vue +++ b/clinical-web/src/views/management/documents/components/DocumentTemplateCard.vue @@ -64,6 +64,15 @@ const initiateTitle = computed(() => const canToggle = computed(() => canToggleStatus(status.value)) const toggleLabel = computed(() => (status.value === '停用' ? '启用' : '停用')) +/** + * 检查类型 / 关联项目编码(原型 V10.2 卡片上的两条信息)。 + * + * 两者都只在后端真的给了值时才渲染:告知类文书本来就没有检查类型, + * 编一个取值出来会让卡片看起来比实际更"配置完整"。 + */ +const examType = computed(() => props.template.examType?.trim() ?? '') +const projectCodes = computed(() => (props.template.projectCodes ?? []).filter(Boolean)) + /** 草稿的「提交审核」只在演示模式露出,真实模式不给这个入口 */ const showSubmitReview = computed(() => props.isMock && status.value === '草稿') @@ -93,8 +102,14 @@ const togglePermission = computed(() => workflowPermission(toggleAction.value)) {{ ownershipLabel }} ·+{{ sharedCount }} 科室 + 🔬 检查类型:{{ examType }} +
+ 关联项目
+ {{ code }}
+
{{ template.description || '—' }}