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 {