From ebbd46899cc04453779992cf01bbca9060fc8f6e Mon Sep 17 00:00:00 2001 From: liuyun Date: Wed, 14 Oct 2026 21:36:01 +0800 Subject: [PATCH] =?UTF-8?q?fix(c1):=20=E7=8A=B6=E6=80=81=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E7=9B=AE=E6=A0=87=E6=80=81=E5=85=81=E8=AE=B8=E8=BD=AC=E5=85=A5?= =?UTF-8?q?=20dead/terminated=20=E7=BB=88=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - statusOptions 仅排除当前态,不再排除 dead/terminated(二者是合法目标态) - 当前态为 dead/terminated 时隐藏整个状态变更区块(源态守卫,不可再变更) Co-Authored-By: Claude Sonnet 4.6 --- src/components/elder-detail.vue | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/components/elder-detail.vue b/src/components/elder-detail.vue index e45ef15..5982348 100644 --- a/src/components/elder-detail.vue +++ b/src/components/elder-detail.vue @@ -26,7 +26,7 @@ {{ elder.note ?? '-' }} -
+
状态变更 @@ -83,11 +83,16 @@ const changing = ref(false) const statusForm = reactive({ toStatus: '', changeReason: '' }) -/** 目标状态下拉:排除当前状态 + 不可逆终态(dead/terminated)。 */ +/** 终态(dead/terminated):后端 IRREVERSIBLE 源态守卫,禁止从终态再变更 → 隐藏整个状态变更区块。 */ +const isTerminal = computed(() => { + const s = elder.value?.treatStatus + return s === 'dead' || s === 'terminated' +}) + +/** 目标状态下拉:允许转入全部十态(含 dead/terminated 合法目标态),仅排除当前态。 */ const statusOptions = computed(() => { - const exclude = new Set(['dead', 'terminated']) - if (elder.value?.treatStatus) exclude.add(elder.value.treatStatus) - return TREAT_STATUS_OPTIONS.filter((o) => !exclude.has(o.value)) + const current = elder.value?.treatStatus + return TREAT_STATUS_OPTIONS.filter((o) => o.value !== current) }) async function load(): Promise {