提交角色界面修改

This commit is contained in:
zlwu committed 2025-08-02 18:59:28 +08:00
1 parent d45af45132
commit 2b5db607f6
8 files changed
+325 -31

No files matched your search

@@ -51,4 +51,122 @@
---
**记录时间**: 2025-01-27 14:30:00
**记录人**: wuzilong
**变更类型**: 功能修复
**变更类型**: 功能修复
# 角色管理页面新增按钮isSystemRole问题修复
**日期**: 2025-01-27 15:30:00
**修改人**: wuzilong
**文件**: `web/src/views/system/role/index.vue`
## 问题描述
点击角色管理页面的新增按钮时,`isSystemRole` 计算属性应该为 `false`,允许用户填写表单。但实际显示为 `true`,导致表单字段被禁用。
## 问题分析
1. **根本原因**: `isSystemRole` 计算属性检查 `form.value.roleKey` 是否以 `'XT-BJZW-'` 开头
2. **初始化问题**: 虽然 `initForm` 中 `roleKey` 初始化为空字符串,但可能存在重置不完整的情况
3. **逻辑问题**: 原计算属性没有正确处理空字符串的情况
## 修复方案
### 1. 优化 `isSystemRole` 计算属性
```typescript
// 修复前
const isSystemRole = computed(() => {
return form.value.roleKey && form.value.roleKey.startsWith('XT-BJZW-');
});
// 修复后
const isSystemRole = computed(() => {
return form.value.roleKey && form.value.roleKey.trim() !== '' && form.value.roleKey.startsWith('XT-BJZW-');
});
```
### 2. 优化 `isSystemRoleInTable` 函数
```typescript
// 修复前
const isSystemRoleInTable = (row: RoleVO) => {
return row.roleKey && row.roleKey.startsWith('XT-BJZW-');
};
// 修复后
const isSystemRoleInTable = (row: RoleVO) => {
return row.roleKey && row.roleKey.trim() !== '' && row.roleKey.startsWith('XT-BJZW-');
};
```
### 3. 增强 `reset` 函数
```typescript
const reset = () => {
menuRef.value?.setCheckedKeys([]);
menuExpand.value = false;
menuNodeAll.value = false;
deptExpand.value = true;
deptNodeAll.value = false;
form.value = { ...initForm };
// 确保roleKey被明确重置为空字符串
form.value.roleKey = '';
roleFormRef.value?.resetFields();
};
```
### 4. 增强 `handleAdd` 函数
```typescript
const handleAdd = () => {
reset();
// 确保roleKey被正确重置为空字符串
form.value.roleKey = '';
console.log('新增角色 - roleKey:', `"${form.value.roleKey}"`, 'isSystemRole:', isSystemRole.value);
getMenuTreeselect();
dialog.visible = true;
dialog.title = '添加角色';
};
```
## 修复效果
1. ✅ **新增角色**: 点击新增按钮时,`isSystemRole` 正确显示为 `false`
2. ✅ **表单可用**: 角色名称、权限字符等字段可以正常填写
3. ✅ **系统角色保护**: 对于真正的系统角色(`XT-BJZW-` 开头),仍然正确识别并禁用编辑
4. ✅ **调试信息**: 添加了控制台日志,便于调试和验证
## 验证结果
### ✅ 修复成功验证
**测试日志输出**:
```
新增角色 - roleKey: "" isSystemRole: false
```
**验证结果**:
- ✅ `roleKey` 正确显示为空字符串 `""`
- ✅ `isSystemRole` 正确显示为 `false`
- ✅ 表单字段未被禁用,可以正常填写
- ✅ 系统角色保护机制仍然正常工作
## 测试验证
1. **新增角色测试**:
- 点击"新增"按钮
- 验证表单字段未被禁用
- 验证控制台显示 `roleKey: ""` 和 `isSystemRole: false`
2. **系统角色测试**:
- 编辑系统内置角色(`XT-BJZW-` 开头)
- 验证表单字段被正确禁用
- 验证系统角色提示信息显示
## 相关文件
- `web/src/views/system/role/index.vue` - 角色管理页面
- `docs/变更管理/code-adjust-record-2025-01-27-wuzilong.md` - 本变更记录
## 备注
此修复确保了角色管理页面的新增功能正常工作,同时保持了对系统内置角色的保护机制。修复后的代码更加健壮,能够正确处理各种边界情况。
**修复状态**: ✅ 完全成功
**验证时间**: 2025-01-27 15:35:00