refactor(sponsor/NewPerson): 角色统一 el-select, 管理员选项禁用, 编辑模式整体置灰

之前: v-if/v-else 二选一 (role='admin' 静态 tag / 其他 el-select)
       历史主账号 role=NULL 时空白显示, UI 不一致

现在: 统一用 el-select
- :disabled=isEdit  (编辑模式整体灰, 不可改)
- 管理员 option :disabled=true 常驻但永远不可选
   (一公司一管理员只在注册时建, 不能从 UI 任命)
- 新建: 下拉只允许选监察员 (管理员 option 禁用)
- 编辑: 整个 select 灰, 显示当前 role (supervisor/admin/null 都能稳定渲染)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
郭庆泰
2026-08-18 21:09:35 +08:00
co-authored by Claude
parent 1cba0d4052
commit 6716074eee
+8 -4
View File
@@ -66,11 +66,15 @@
</el-col>
<el-col :span="12">
<el-form-item label="角色" prop="role">
<!-- 编辑模式 + 当前 role=admin (主账号自己) 显示静态 tag, 不让改 -->
<!-- 新建时下拉不包含 admin, 只允许选 supervisor (监察员) -->
<el-tag v-if="isEdit && form.role === 'admin'" type="warning" disable-transitions>管理员</el-tag>
<el-select v-else v-model="form.role" placeholder="请选择" style="width:100%">
<!--
统一用 el-select, 不论新建/编辑:
- 管理员 选项常驻, :disabled=true 永远不能选 (一公司一管理员只在注册时建, 不能从 UI 任命)
- 编辑模式整个 el-select :disabled=true (), 不可改 ("操作列禁用本人删除"语义一致)
- 解决历史主账号 role=NULL 时空白显示问题 (select 至少能稳定渲染当前值)
-->
<el-select v-model="form.role" placeholder="请选择" style="width:100%" :disabled="isEdit">
<el-option label="监察员" value="supervisor" />
<el-option label="管理员" value="admin" :disabled="true" />
</el-select>
</el-form-item>
</el-col>