From d711e03a4e921c4ba4fcbada11b19b4e34a4314c Mon Sep 17 00:00:00 2001 From: yelan Date: Mon, 28 Sep 2026 09:28:21 +0800 Subject: [PATCH] =?UTF-8?q?refactor(=E6=96=87=E4=B9=A6=E5=BA=93):=20?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E5=8F=A3=E5=BE=84=E6=94=B6=E6=95=9B=E4=B8=BA?= =?UTF-8?q?=E5=90=AF=E7=94=A8=E4=B8=AD/=E5=81=9C=E7=94=A8=E4=B8=A4?= =?UTF-8?q?=E6=A1=A3=E5=B9=B6=E7=A7=BB=E9=99=A4=E5=AE=A1=E6=A0=B8=E9=93=BE?= =?UTF-8?q?=E8=B7=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/DocumentPreviewDialog.vue | 12 +-- .../components/DocumentTemplateCard.vue | 41 ++------- .../src/views/management/documents/history.ts | 19 ++-- .../src/views/management/documents/index.vue | 71 +++++---------- .../src/views/management/documents/library.ts | 91 ++++++------------- .../views/management/documents/permissions.ts | 13 ++- .../src/views/management/documents/types.ts | 8 +- 7 files changed, 82 insertions(+), 173 deletions(-) diff --git a/clinical-web/src/views/management/documents/components/DocumentPreviewDialog.vue b/clinical-web/src/views/management/documents/components/DocumentPreviewDialog.vue index 1287c03..45783c2 100644 --- a/clinical-web/src/views/management/documents/components/DocumentPreviewDialog.vue +++ b/clinical-web/src/views/management/documents/components/DocumentPreviewDialog.vue @@ -68,23 +68,21 @@ watch( /** 状态口径统一走 library.ts:卡片、徽标、预览三处必须是同一档 */ const libraryStatus = computed(() => - props.template ? readLibraryStatus(props.template) : '草稿', + props.template ? readLibraryStatus(props.template) : '启用中', ) /** 文书状态 → 预览弹窗徽标色调(弹窗只认 brand / ok / warn / mut 四档) */ -const BADGE_TONES: Record = { +const BADGE_TONES: Record = { enabled: 'ok', - review: 'warn', - draft: 'mut', - archived: 'mut', stopped: 'mut', } const statusTone = computed(() => BADGE_TONES[readStatusTone(libraryStatus.value)]) /** - * 与文书卡片保持同一口径:只有「启用中」的文书能发起签署。 - * 「需复审」不放行——它同时承载待审核与已驳回,两者都未定稿。 + * 与文书卡片同一口径:只有「启用中」的文书能发起签署。 + * 预览这一侧手里就有正文(列表接口不返回,进预览时按需取回), + * 所以比卡片多判一道正文——空正文签出来的是一份与模板无关的白纸。 */ const canInitiate = computed( () => Boolean(props.template?.contentHtml) && canInitiateSigning(libraryStatus.value), diff --git a/clinical-web/src/views/management/documents/components/DocumentTemplateCard.vue b/clinical-web/src/views/management/documents/components/DocumentTemplateCard.vue index d11cd2b..90b9ef9 100644 --- a/clinical-web/src/views/management/documents/components/DocumentTemplateCard.vue +++ b/clinical-web/src/views/management/documents/components/DocumentTemplateCard.vue @@ -5,7 +5,6 @@ import type { TemplateVersionAction } from '@/api/management/documents' import { canInitiateSigning, - canToggleStatus, DOCUMENT_STATUS_DOT, isGeneralOwnership, readLibraryStatus, @@ -16,15 +15,6 @@ import type { DocumentTemplate } from '../types' const props = defineProps<{ template: DocumentTemplate - /** - * 演示模式。 - * - * 真实模式下卡片只有「停用 / 启用」这一个状态动作:后端菜单资源树里的 - * 「发布 / 提交审核」按钮虽在,但原型 V10.2 已经抛弃那条工作流, - * 科室侧不该再看到「提交审核」这一步(草稿的送审改由属性/正文弹窗完成, - * 或直接由医务管理放行)。 - */ - isMock: boolean }>() const emit = defineEmits<{ @@ -33,7 +23,6 @@ const emit = defineEmits<{ 'edit-content': [template: DocumentTemplate] history: [template: DocumentTemplate] 'toggle-status': [template: DocumentTemplate] - 'submit-review': [template: DocumentTemplate] initiate: [template: DocumentTemplate] }>() @@ -55,13 +44,18 @@ const ownershipLabel = computed(() => */ const sharedCount = computed(() => props.template.sharedDepartments?.length ?? 0) -/** 只有「启用中」能发起签署;其余状态要么没定稿,要么已下线 */ +/** + * 只有「启用中」能发起签署;「停用」已下线。 + * + * 这里只看状态,不看正文——真实模式的列表接口不返回正文,按正文判断会让所有 + * 真实模板的「发起」按钮都消失。缺正文由发起那一步拦下(见 index.vue 的 toSigningTemplate)。 + */ const canInitiate = computed(() => canInitiateSigning(status.value)) const initiateTitle = computed(() => canInitiate.value ? '用此文书发起签署' : '仅「启用中」的文书可发起签署', ) -const canToggle = computed(() => canToggleStatus(status.value)) +/** 两档之间都能来回切,所以这个按钮没有「不适用」的状态 */ const toggleLabel = computed(() => (status.value === '停用' ? '启用' : '停用')) /** @@ -73,9 +67,6 @@ const toggleLabel = computed(() => (status.value === '停用' ? '启用' : '停 const examType = computed(() => props.template.examType?.trim() ?? '') const projectCodes = computed(() => (props.template.projectCodes ?? []).filter(Boolean)) -/** 草稿的「提交审核」只在演示模式露出,真实模式不给这个入口 */ -const showSubmitReview = computed(() => props.isMock && status.value === '草稿') - /** 停用/启用走的是后端版本动作:停用 → disable,启用 → publish */ const toggleAction = computed(() => status.value === '停用' ? 'publish' : 'disable', @@ -142,7 +133,6 @@ const togglePermission = computed(() => workflowPermission(toggleAction.value)) -