5.8 KiB
5.8 KiB
代码调整记录 - 2025-01-27
修复内容
高级检索界面多选下拉框参数传递格式修复
文件: web/src/views/xg/xsjcxx/stuRoster/components/AdvancedSearchDialog.vue
问题描述:
- 高级检索界面中,检索按钮调用后台API时,对于下拉框的多选传的参数是
dormitoryBuilding[0]、dormitoryBuilding[1]等索引格式 - 需要调整为传递
dormitoryBuilding: list<String>的数组格式 - 其他所有下拉框都需要做同样的调整
修复方案:
-
在
handleSearch方法中新增多选字段处理逻辑 -
定义所有多选下拉框字段列表:
const multiSelectFields = [ 'gender', 'nationality', 'nativePlace', 'politicalStatus', 'educationLevel', 'admissionCategory', 'academicLevel', 'trainingType', 'householdRegisterType', 'studentStatus', 'isBoarder', 'dormitoryBuilding', 'familyEconomicStatus', 'isPoorStudent', 'isMinority', 'isDisabled', 'isOrphan', 'isLeftBehindChild', 'isSingleChild', 'isLowIncome', 'hasLoan', 'sourceRegion', 'bloodType', 'disabilityType' ]; -
统一处理多选字段:
- 过滤掉空值,确保只传递有效的数组
- 如果数组为空则删除该字段
- 保持数组格式传递给后端
修复效果:
- ✅ 所有多选下拉框现在都传递正确的数组格式
- ✅ 避免了
dormitoryBuilding[0]、dormitoryBuilding[1]等索引格式问题 - ✅ 后端可以正确接收
dormitoryBuilding: list<String>格式的参数 - ✅ 提高了代码的可维护性和一致性
涉及的多选字段:
- 基础信息:性别、民族、籍贯、政治面貌、文化程度
- 学籍信息:录取类别、学历层次、培养方式、户口类型、学籍状态、是否住校、宿舍楼栋
- 家庭信息:家庭经济状况
- 扩展信息:是否贫困生、是否少数民族、是否残疾、是否孤儿、是否留守儿童、是否独生子女、是否低保、是否有助学贷款、生源地区
- 健康信息:血型、残疾类型
测试建议:
- 测试各个多选下拉框的选择功能
- 验证传递给后端的参数格式是否正确
- 确认后端能正确接收和处理数组格式的参数
记录时间: 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,导致表单字段被禁用。
问题分析
- 根本原因:
isSystemRole计算属性检查form.value.roleKey是否以'XT-BJZW-'开头 - 初始化问题: 虽然
initForm中roleKey初始化为空字符串,但可能存在重置不完整的情况 - 逻辑问题: 原计算属性没有正确处理空字符串的情况
修复方案
1. 优化 isSystemRole 计算属性
// 修复前
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 函数
// 修复前
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 函数
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 函数
const handleAdd = () => {
reset();
// 确保roleKey被正确重置为空字符串
form.value.roleKey = '';
console.log('新增角色 - roleKey:', `"${form.value.roleKey}"`, 'isSystemRole:', isSystemRole.value);
getMenuTreeselect();
dialog.visible = true;
dialog.title = '添加角色';
};
修复效果
- ✅ 新增角色: 点击新增按钮时,
isSystemRole正确显示为false - ✅ 表单可用: 角色名称、权限字符等字段可以正常填写
- ✅ 系统角色保护: 对于真正的系统角色(
XT-BJZW-开头),仍然正确识别并禁用编辑 - ✅ 调试信息: 添加了控制台日志,便于调试和验证
验证结果
✅ 修复成功验证
测试日志输出:
新增角色 - roleKey: "" isSystemRole: false
验证结果:
- ✅
roleKey正确显示为空字符串"" - ✅
isSystemRole正确显示为false - ✅ 表单字段未被禁用,可以正常填写
- ✅ 系统角色保护机制仍然正常工作
测试验证
-
新增角色测试:
- 点击"新增"按钮
- 验证表单字段未被禁用
- 验证控制台显示
roleKey: ""和isSystemRole: false
-
系统角色测试:
- 编辑系统内置角色(
XT-BJZW-开头) - 验证表单字段被正确禁用
- 验证系统角色提示信息显示
- 编辑系统内置角色(
相关文件
web/src/views/system/role/index.vue- 角色管理页面docs/变更管理/code-adjust-record-2025-01-27-wuzilong.md- 本变更记录
备注
此修复确保了角色管理页面的新增功能正常工作,同时保持了对系统内置角色的保护机制。修复后的代码更加健壮,能够正确处理各种边界情况。
修复状态: ✅ 完全成功 验证时间: 2025-01-27 15:35:00