5.3 KiB
5.3 KiB
已修复缺陷与技术方案 (Fixed Issues)
本文件详细记录本次稳定化清扫中完成修复的具体代码改动、设计权衡与回归验证结果。
修复清单
1. 修复侧边栏空白路由与无可见子项目录渲染 (BUG-01 & BUG-02)
- 涉及文件:
build_ui/src/router/index.jsbuild_ui/src/layout/components/Sidebar/SidebarItem.vue
- 代码改动:
- 在
build_ui/src/router/index.js中,为/train顶层 Layout 路由显式指定hidden: true:{ path: '/train', component: Layout, hidden: true, redirect: '/train/auth', children: [ ... ] } - 在
build_ui/src/layout/components/Sidebar/SidebarItem.vue中重构显示判定逻辑:- 增加
isMenuVisible(item):若目录的所有子项均为hidden且父级路由为纯 Layout 容器 (component === 'Layout'或redirect === 'noRedirect'),则直接隐藏该父级目录; - 增加
hasShowingChildren(children):严格检查子数组中是否存在未隐藏项目; - 修改
<el-submenu>渲染条件为v-else-if="hasShowingChildren(item.children) && item.meta && item.meta.title",并在template slot="title"中确保仅在存在有效标题时输出标题; - 修改单项路由条件,避免子项全部隐藏时因
alwaysShow: true强行展开空目录。
- 增加
- 在
- 验证结果:
- Admin 端:“首页”与“人员管理”之间的空白箭头彻底消除;“教学成果”不再渲染空折叠项。
- Teacher 端与 Student 端:侧边栏清爽规范,仅保留“首页”与各自对应的专属业务工作台。
2. 修复用户管理页面重置操作 TypeError 异常及右侧布局留白 (BUG-03)
- 涉及文件:
build_ui/src/views/system/user/index.vue
- 代码改动:
- 修复空指针:由于部门树
<el-tree ref="tree">被前端注释保留,但在脚本中存在调用,因此对this.$refs.tree增加了安全判空:// watch.deptName deptName(val) { if (this.$refs.tree) { this.$refs.tree.filter(val); } } // methods.resetQuery resetQuery() { this.dateRange = []; this.resetForm("queryForm"); this.queryParams.deptId = undefined; if (this.$refs.tree) { this.$refs.tree.setCurrentKey(null); } this.handleQuery(); } - 修复栅格间隙:将表格外层
<el-col :span="20" :xs="24">调整为<el-col :span="24">,使表格和检索栏铺满整个右侧视口,消除此前右侧 1/6 的空白不对称现象。
- 修复空指针:由于部门树
- 验证结果:
- 在用户管理页面输入条件并点击“重置”按钮,控制台 0 异常,数据列表平滑刷新重置,表格填满 24 栅格宽度。
3. 规范学员/教师全链路性别代码转义展示 (BUG-04)
- 涉及文件:
build_ui/src/views/train/student/index.vuebuild_ui/src/views/train/teacher/index.vuebuild_ui/src/views/train/me/student/index.vuebuild_ui/src/views/train/me/teacher/index.vue
- 代码改动:
统一编写并复用
formatGender转义逻辑:并将表格中的静态绑定formatGender(gender) { if (gender === '0' || gender === 0 || gender === '男') return '男'; if (gender === '1' || gender === 1 || gender === '女') return '女'; return gender || '未知'; }<el-table-column prop="sGender" />替换为具名插槽模板渲染<template slot-scope="scope"><span>{{ formatGender(scope.row.sGender) }}</span></template>。 - 验证结果:
/person/student列表所有行性别规范显示为“男”或“女”;/student学员中心基本资料性别显示为“女”;/person/teacher与/teacher均完成空值与代码回退兼容。
4. 优化教师工作台任教培训班数据对齐与状态呈现 (BUG-05)
- 涉及文件:
build_ui/src/views/train/me/teacher/index.vue
- 代码改动:
- 状态列字段容错:
<el-tag size="mini" :type="formatPlanStatusType(scope.row.planStatus != null ? scope.row.planStatus : scope.row.status)">{{ formatPlanStatusText(scope.row.planStatus != null ? scope.row.planStatus : scope.row.status) }}</el-tag> - 日期格式化:使用内置
parseTime(scope.row.startDate || scope.row.startTime, '{y}-{m}-{d}'); - 扩充状态字典:
formatPlanStatusText(status) { const map = { 0: '未开班', '0': '未开班', 1: '培训中', '1': '培训中', 2: '已结训', '2': '已结训', 3: '已取消', '3': '已取消' }; return map[status] || '未知'; }
- 状态列字段容错:
- 验证结果:
- 教师工作台“我的培训班”列表中,各班级状态统一精准渲染为“未开班”绿色/灰色徽章,开班时间格式化为有效标准日期,彻底杜绝了“未知”状态。
5. 编译代理增强 (开发态验证工具)
- 涉及文件:
build_ui/vue.config.js
- 代码改动:
在
devServer.proxy的pathRewrite中增加对process.env.VUE_APP_BACKEND_PATH的支持,使得本地开发服务器在直连远程 Nginx 共享试用环境时,可灵活重写为/prod-api,确保本地前后端联调测试真实生效。