fix: 完善学校管理模块
- 后端:学校列表查询时填充区域名称 - 前端:学校类型显示转换(数字转文字) - 前端:学校类型选项值修正为数字
This commit is contained in:
parent
31322a9ecc
commit
50e291d2b4
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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">
|
||||||
|
|
|
||||||
|
|
@ -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('')
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue