feat: add field-level data protection for BOM and user management
Co-authored-by: aider (openai/DeepSeek-V3.2-Thinking) <aider@aider.chat>
This commit is contained in:
@ -67,7 +67,7 @@
|
||||
:rules="rules"
|
||||
label-width="100px"
|
||||
>
|
||||
<el-form-item label="真实姓名" prop="cn_name">
|
||||
<el-form-item label="真实姓名" prop="cn_name" v-if="hasFormFieldPermission('cn_name')">
|
||||
<el-input
|
||||
v-model="form.cn_name"
|
||||
placeholder="请输入中文姓名 (如: 张三)"
|
||||
@ -76,7 +76,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="登录账号" prop="username">
|
||||
<el-form-item label="登录账号" prop="username" v-if="hasFormFieldPermission('username')">
|
||||
<el-input
|
||||
v-model="form.username"
|
||||
placeholder="自动生成,可修改 (如: zhangsan)"
|
||||
@ -88,7 +88,7 @@
|
||||
</el-input>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="密码" prop="password">
|
||||
<el-form-item label="密码" prop="password" v-if="hasFormFieldPermission('password')">
|
||||
<el-input
|
||||
v-model="form.password"
|
||||
type="password"
|
||||
@ -98,7 +98,7 @@
|
||||
/>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="所属部门" prop="department">
|
||||
<el-form-item label="所属部门" prop="department" v-if="hasFormFieldPermission('department')">
|
||||
<el-select
|
||||
v-model="form.department"
|
||||
placeholder="请输入或选择部门"
|
||||
@ -112,7 +112,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="系统角色" prop="role">
|
||||
<el-form-item label="系统角色" prop="role" v-if="hasFormFieldPermission('role')">
|
||||
<el-select v-model="form.role" placeholder="授予权限" style="width: 100%" :disabled="!userStore.hasPermission('system_user:operation')">
|
||||
<el-option
|
||||
v-for="option in roleOptions"
|
||||
@ -123,7 +123,7 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="邮箱" prop="email">
|
||||
<el-form-item label="邮箱" prop="email" v-if="hasFormFieldPermission('email')">
|
||||
<el-input v-model="form.email" placeholder="请输入邮箱" :disabled="!userStore.hasPermission('system_user:operation')" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
@ -157,6 +157,9 @@ const permissionMap: Record<string, string> = {
|
||||
email: 'system_user:email',
|
||||
status: 'system_user:status',
|
||||
created_at: 'system_user:created_at',
|
||||
// 表单字段
|
||||
cn_name: 'system_user:username',
|
||||
password: 'system_user:password',
|
||||
}
|
||||
|
||||
// 检查列权限
|
||||
@ -167,6 +170,15 @@ const hasColumnPermission = (prop: string) => {
|
||||
const code = permissionMap[prop]
|
||||
return code ? userStore.hasPermission(code) : false
|
||||
}
|
||||
|
||||
// 检查表单字段权限
|
||||
const hasFormFieldPermission = (fieldName: string) => {
|
||||
if (userStore.role === 'SUPER_ADMIN' || userStore.username === 'IRIS') {
|
||||
return true
|
||||
}
|
||||
const code = permissionMap[fieldName]
|
||||
return code ? userStore.hasPermission(code) : false
|
||||
}
|
||||
const tableLoading = ref(false)
|
||||
const submitLoading = ref(false)
|
||||
const dialogVisible = ref(false)
|
||||
|
||||
Reference in New Issue
Block a user