fix(c1): 状态变更目标态允许转入 dead/terminated 终态

- statusOptions 仅排除当前态,不再排除 dead/terminated(二者是合法目标态)
- 当前态为 dead/terminated 时隐藏整个状态变更区块(源态守卫,不可再变更)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
liuyun 2026-10-14 21:36:01 +08:00
parent 49043881ba
commit ebbd46899c

View File

@ -26,7 +26,7 @@
<el-descriptions-item label="备注" :span="2">{{ elder.note ?? '-' }}</el-descriptions-item> <el-descriptions-item label="备注" :span="2">{{ elder.note ?? '-' }}</el-descriptions-item>
</el-descriptions> </el-descriptions>
<div v-permission="'elder:status-change'"> <div v-if="!isTerminal" v-permission="'elder:status-change'">
<el-divider content-position="left">状态变更</el-divider> <el-divider content-position="left">状态变更</el-divider>
<el-form inline> <el-form inline>
<el-form-item label="目标状态"> <el-form-item label="目标状态">
@ -83,11 +83,16 @@ const changing = ref(false)
const statusForm = reactive({ toStatus: '', changeReason: '' }) 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 statusOptions = computed(() => {
const exclude = new Set(['dead', 'terminated']) const current = elder.value?.treatStatus
if (elder.value?.treatStatus) exclude.add(elder.value.treatStatus) return TREAT_STATUS_OPTIONS.filter((o) => o.value !== current)
return TREAT_STATUS_OPTIONS.filter((o) => !exclude.has(o.value))
}) })
async function load(): Promise<void> { async function load(): Promise<void> {