fix: 完善学校管理模块

- 后端:学校列表查询时填充区域名称
- 前端:学校类型显示转换(数字转文字)
- 前端:学校类型选项值修正为数字
This commit is contained in:
神码-方晓辉 2026-02-02 17:27:00 +08:00
parent 31322a9ecc
commit 50e291d2b4
4 changed files with 64 additions and 7 deletions

View File

@ -1,6 +1,7 @@
package org.dromara.pangu.school.domain; package org.dromara.pangu.school.domain;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
@ -48,4 +49,10 @@ public class PgSchool extends BaseEntity {
private String delFlag; private String delFlag;
private String remark; private String remark;
/**
* 区域名称非数据库字段用于展示
*/
@TableField(exist = false)
private String regionName;
} }

View File

@ -7,7 +7,9 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.pangu.base.domain.PgGrade; import org.dromara.pangu.base.domain.PgGrade;
import org.dromara.pangu.base.domain.PgRegion;
import org.dromara.pangu.base.mapper.PgGradeMapper; import org.dromara.pangu.base.mapper.PgGradeMapper;
import org.dromara.pangu.base.mapper.PgRegionMapper;
import org.dromara.pangu.school.domain.PgSchool; import org.dromara.pangu.school.domain.PgSchool;
import org.dromara.pangu.school.domain.PgSchoolClass; import org.dromara.pangu.school.domain.PgSchoolClass;
import org.dromara.pangu.school.domain.PgSchoolGrade; import org.dromara.pangu.school.domain.PgSchoolGrade;
@ -20,6 +22,9 @@ import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/** /**
* 学校 Service 实现 * 学校 Service 实现
@ -34,17 +39,49 @@ public class PgSchoolServiceImpl implements IPgSchoolService {
private final PgSchoolGradeMapper schoolGradeMapper; private final PgSchoolGradeMapper schoolGradeMapper;
private final PgSchoolClassMapper schoolClassMapper; private final PgSchoolClassMapper schoolClassMapper;
private final PgGradeMapper gradeMapper; private final PgGradeMapper gradeMapper;
private final PgRegionMapper regionMapper;
@Override @Override
public TableDataInfo<PgSchool> selectPageList(PgSchool school, PageQuery pageQuery) { public TableDataInfo<PgSchool> selectPageList(PgSchool school, PageQuery pageQuery) {
LambdaQueryWrapper<PgSchool> lqw = buildQueryWrapper(school); LambdaQueryWrapper<PgSchool> lqw = buildQueryWrapper(school);
Page<PgSchool> page = baseMapper.selectPage(pageQuery.build(), lqw); Page<PgSchool> page = baseMapper.selectPage(pageQuery.build(), lqw);
// 填充区域名称
fillRegionName(page.getRecords());
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@Override @Override
public List<PgSchool> selectList(PgSchool school) { public List<PgSchool> selectList(PgSchool school) {
return baseMapper.selectList(buildQueryWrapper(school)); List<PgSchool> list = baseMapper.selectList(buildQueryWrapper(school));
fillRegionName(list);
return list;
}
/**
* 填充区域名称
*/
private void fillRegionName(List<PgSchool> schools) {
if (schools == null || schools.isEmpty()) {
return;
}
// 收集所有区域ID
Set<Long> regionIds = schools.stream()
.map(PgSchool::getRegionId)
.filter(id -> id != null)
.collect(Collectors.toSet());
if (regionIds.isEmpty()) {
return;
}
// 批量查询区域信息
List<PgRegion> regions = regionMapper.selectBatchIds(regionIds);
Map<Long, String> regionMap = regions.stream()
.collect(Collectors.toMap(PgRegion::getRegionId, PgRegion::getRegionName));
// 填充区域名称
for (PgSchool s : schools) {
if (s.getRegionId() != null) {
s.setRegionName(regionMap.get(s.getRegionId()));
}
}
} }
@Override @Override

View File

@ -17,11 +17,11 @@
</el-form-item> </el-form-item>
<el-form-item label="学校类型" prop="schoolType"> <el-form-item label="学校类型" prop="schoolType">
<el-select v-model="form.schoolType" placeholder="请选择学校类型" style="width: 100%"> <el-select v-model="form.schoolType" placeholder="请选择学校类型" style="width: 100%">
<el-option label="小学" value="小学" /> <el-option label="小学" value="1" />
<el-option label="初中" value="初中" /> <el-option label="初中" value="2" />
<el-option label="高中" value="高中" /> <el-option label="高中" value="3" />
<el-option label="九年一贯制" value="九年一贯制" /> <el-option label="九年一贯制" value="4" />
<el-option label="完全中学" value="完全中学" /> <el-option label="完全中学" value="5" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="所属区域" prop="regionId"> <el-form-item label="所属区域" prop="regionId">

View File

@ -53,7 +53,11 @@
<el-table v-loading="loading" :data="tableData" border stripe :header-cell-style="{ background: '#f5f7fa', color: '#606266' }" style="width: 100%"> <el-table v-loading="loading" :data="tableData" border stripe :header-cell-style="{ background: '#f5f7fa', color: '#606266' }" style="width: 100%">
<el-table-column prop="schoolName" label="学校名称" min-width="150" show-overflow-tooltip /> <el-table-column prop="schoolName" label="学校名称" min-width="150" show-overflow-tooltip />
<el-table-column prop="schoolType" label="学校类型" width="100" align="center" /> <el-table-column prop="schoolType" label="学校类型" width="100" align="center">
<template #default="{ row }">
{{ schoolTypeMap[row.schoolType] || row.schoolType }}
</template>
</el-table-column>
<el-table-column prop="regionName" label="所属区域" min-width="180" show-overflow-tooltip /> <el-table-column prop="regionName" label="所属区域" min-width="180" show-overflow-tooltip />
<el-table-column prop="status" label="状态" width="80" align="center"> <el-table-column prop="status" label="状态" width="80" align="center">
<template #default="{ row }"> <template #default="{ row }">
@ -113,6 +117,15 @@ import ClassDialog from './components/ClassDialog.vue'
import GradeDialog from './components/GradeDialog.vue' import GradeDialog from './components/GradeDialog.vue'
import SchoolDialog from './components/SchoolDialog.vue' import SchoolDialog from './components/SchoolDialog.vue'
//
const schoolTypeMap = {
'1': '小学',
'2': '初中',
'3': '高中',
'4': '九年一贯制',
'5': '完全中学'
}
// //
const treeRef = ref() const treeRef = ref()
const treeFilterText = ref('') const treeFilterText = ref('')