年级管理增加学段字段(小学/初中/高中/中专/大学)
This commit is contained in:
parent
80dd406f8c
commit
72cb6668f3
|
|
@ -34,6 +34,11 @@ public class PgGrade extends BaseEntity {
|
||||||
*/
|
*/
|
||||||
private String gradeName;
|
private String gradeName;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 学段(1小学 2初中 3高中 4中专 5大学)
|
||||||
|
*/
|
||||||
|
private String stage;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 显示顺序
|
* 显示顺序
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -234,9 +234,28 @@ public class OpenApiBaseController extends BaseController {
|
||||||
private OpenGradeVo convertToGradeVo(PgGrade source) {
|
private OpenGradeVo convertToGradeVo(PgGrade source) {
|
||||||
OpenGradeVo vo = new OpenGradeVo();
|
OpenGradeVo vo = new OpenGradeVo();
|
||||||
BeanUtils.copyProperties(source, vo);
|
BeanUtils.copyProperties(source, vo);
|
||||||
|
// 设置学段名称
|
||||||
|
vo.setStageName(getStageName(source.getStage()));
|
||||||
return vo;
|
return vo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取学段名称
|
||||||
|
*/
|
||||||
|
private String getStageName(String stage) {
|
||||||
|
if (stage == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return switch (stage) {
|
||||||
|
case "1" -> "小学";
|
||||||
|
case "2" -> "初中";
|
||||||
|
case "3" -> "高中";
|
||||||
|
case "4" -> "中专";
|
||||||
|
case "5" -> "大学";
|
||||||
|
default -> "未知";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
private OpenClassVo convertToClassVo(PgClass source) {
|
private OpenClassVo convertToClassVo(PgClass source) {
|
||||||
OpenClassVo vo = new OpenClassVo();
|
OpenClassVo vo = new OpenClassVo();
|
||||||
BeanUtils.copyProperties(source, vo);
|
BeanUtils.copyProperties(source, vo);
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,12 @@ public class OpenGradeVo implements Serializable {
|
||||||
@Schema(description = "年级名称")
|
@Schema(description = "年级名称")
|
||||||
private String gradeName;
|
private String gradeName;
|
||||||
|
|
||||||
|
@Schema(description = "学段(1小学 2初中 3高中 4中专 5大学)")
|
||||||
|
private String stage;
|
||||||
|
|
||||||
|
@Schema(description = "学段名称")
|
||||||
|
private String stageName;
|
||||||
|
|
||||||
@Schema(description = "显示顺序")
|
@Schema(description = "显示顺序")
|
||||||
private Integer orderNum;
|
private Integer orderNum;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,11 @@
|
||||||
<el-form-item label="年级名称">
|
<el-form-item label="年级名称">
|
||||||
<el-input v-model="queryParams.gradeName" placeholder="请输入年级名称" clearable style="width: 200px" @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.gradeName" placeholder="请输入年级名称" clearable style="width: 200px" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="学段">
|
||||||
|
<el-select v-model="queryParams.stage" placeholder="全部" clearable style="width: 120px">
|
||||||
|
<el-option v-for="item in stageOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="状态">
|
<el-form-item label="状态">
|
||||||
<el-select v-model="queryParams.status" placeholder="全部" clearable style="width: 100px">
|
<el-select v-model="queryParams.status" placeholder="全部" clearable style="width: 100px">
|
||||||
<el-option label="正常" value="0" />
|
<el-option label="正常" value="0" />
|
||||||
|
|
@ -30,6 +35,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="name" label="年级名称" min-width="150" />
|
<el-table-column prop="name" label="年级名称" min-width="150" />
|
||||||
<el-table-column prop="code" label="年级编码" width="120" />
|
<el-table-column prop="code" label="年级编码" width="120" />
|
||||||
|
<el-table-column prop="stage" label="学段" width="100" align="center">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-tag :type="getStageType(row.stage)">{{ getStageName(row.stage) }}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="sort" label="排序" width="80" align="center" />
|
<el-table-column prop="sort" label="排序" width="80" align="center" />
|
||||||
<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 }">
|
||||||
|
|
@ -69,6 +79,11 @@
|
||||||
<el-form-item label="年级编码" prop="code">
|
<el-form-item label="年级编码" prop="code">
|
||||||
<el-input v-model="form.code" placeholder="自动生成" disabled />
|
<el-input v-model="form.code" placeholder="自动生成" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="学段" prop="stage">
|
||||||
|
<el-select v-model="form.stage" placeholder="请选择学段" style="width: 100%">
|
||||||
|
<el-option v-for="item in stageOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="排序" prop="sort">
|
<el-form-item label="排序" prop="sort">
|
||||||
<el-input-number v-model="form.sort" :min="0" :max="999" />
|
<el-input-number v-model="form.sort" :min="0" :max="999" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -102,9 +117,31 @@ const queryParams = ref({
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
gradeName: '',
|
gradeName: '',
|
||||||
|
stage: '',
|
||||||
status: ''
|
status: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 学段选项
|
||||||
|
const stageOptions = [
|
||||||
|
{ value: '1', label: '小学' },
|
||||||
|
{ value: '2', label: '初中' },
|
||||||
|
{ value: '3', label: '高中' },
|
||||||
|
{ value: '4', label: '中专' },
|
||||||
|
{ value: '5', label: '大学' }
|
||||||
|
]
|
||||||
|
|
||||||
|
// 获取学段名称
|
||||||
|
const getStageName = (stage) => {
|
||||||
|
const item = stageOptions.find(s => s.value === stage)
|
||||||
|
return item ? item.label : '未知'
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取学段标签类型
|
||||||
|
const getStageType = (stage) => {
|
||||||
|
const types = { '1': 'success', '2': 'primary', '3': 'warning', '4': 'info', '5': 'danger' }
|
||||||
|
return types[stage] || 'info'
|
||||||
|
}
|
||||||
|
|
||||||
// 弹窗相关
|
// 弹窗相关
|
||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
const dialogTitle = ref('')
|
const dialogTitle = ref('')
|
||||||
|
|
@ -113,12 +150,14 @@ const form = ref({
|
||||||
id: null,
|
id: null,
|
||||||
name: '',
|
name: '',
|
||||||
code: '',
|
code: '',
|
||||||
|
stage: '1',
|
||||||
sort: 0,
|
sort: 0,
|
||||||
status: '0'
|
status: '0'
|
||||||
})
|
})
|
||||||
|
|
||||||
const rules = {
|
const rules = {
|
||||||
name: [{ required: true, message: '请输入年级名称', trigger: 'blur' }]
|
name: [{ required: true, message: '请输入年级名称', trigger: 'blur' }],
|
||||||
|
stage: [{ required: true, message: '请选择学段', trigger: 'change' }]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取年级列表
|
// 获取年级列表
|
||||||
|
|
@ -143,14 +182,14 @@ const handleQuery = () => {
|
||||||
|
|
||||||
// 重置
|
// 重置
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
queryParams.value = { pageNum: 1, pageSize: 10, gradeName: '', status: '' }
|
queryParams.value = { pageNum: 1, pageSize: 10, gradeName: '', stage: '', status: '' }
|
||||||
getList()
|
getList()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增
|
// 新增
|
||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
dialogTitle.value = '新增年级'
|
dialogTitle.value = '新增年级'
|
||||||
form.value = { id: null, name: '', code: '', sort: 0, status: '0' }
|
form.value = { id: null, name: '', code: '', stage: '1', sort: 0, status: '0' }
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,11 @@
|
||||||
<el-form-item label="年级名称">
|
<el-form-item label="年级名称">
|
||||||
<el-input v-model="queryParams.gradeName" placeholder="请输入年级名称" clearable style="width: 200px" @keyup.enter="handleQuery" />
|
<el-input v-model="queryParams.gradeName" placeholder="请输入年级名称" clearable style="width: 200px" @keyup.enter="handleQuery" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="学段">
|
||||||
|
<el-select v-model="queryParams.stage" placeholder="全部" clearable style="width: 120px">
|
||||||
|
<el-option v-for="item in stageOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="状态">
|
<el-form-item label="状态">
|
||||||
<el-select v-model="queryParams.status" placeholder="全部" clearable style="width: 100px">
|
<el-select v-model="queryParams.status" placeholder="全部" clearable style="width: 100px">
|
||||||
<el-option label="正常" value="0" />
|
<el-option label="正常" value="0" />
|
||||||
|
|
@ -30,6 +35,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="gradeName" label="年级名称" min-width="150" />
|
<el-table-column prop="gradeName" label="年级名称" min-width="150" />
|
||||||
<el-table-column prop="gradeCode" label="年级编码" width="120" />
|
<el-table-column prop="gradeCode" label="年级编码" width="120" />
|
||||||
|
<el-table-column prop="stage" label="学段" width="100" align="center">
|
||||||
|
<template #default="{ row }">
|
||||||
|
<el-tag :type="getStageType(row.stage)">{{ getStageName(row.stage) }}</el-tag>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
<el-table-column prop="orderNum" label="排序" width="80" align="center" />
|
<el-table-column prop="orderNum" label="排序" width="80" align="center" />
|
||||||
<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 }">
|
||||||
|
|
@ -69,6 +79,11 @@
|
||||||
<el-form-item label="年级编码" prop="gradeCode">
|
<el-form-item label="年级编码" prop="gradeCode">
|
||||||
<el-input v-model="form.gradeCode" placeholder="自动生成" disabled />
|
<el-input v-model="form.gradeCode" placeholder="自动生成" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
<el-form-item label="学段" prop="stage">
|
||||||
|
<el-select v-model="form.stage" placeholder="请选择学段" style="width: 100%">
|
||||||
|
<el-option v-for="item in stageOptions" :key="item.value" :label="item.label" :value="item.value" />
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
<el-form-item label="排序" prop="orderNum">
|
<el-form-item label="排序" prop="orderNum">
|
||||||
<el-input-number v-model="form.orderNum" :min="0" :max="999" />
|
<el-input-number v-model="form.orderNum" :min="0" :max="999" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
|
|
@ -105,9 +120,31 @@ const queryParams = ref({
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
gradeName: '',
|
gradeName: '',
|
||||||
|
stage: '',
|
||||||
status: ''
|
status: ''
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// 学段选项
|
||||||
|
const stageOptions = [
|
||||||
|
{ value: '1', label: '小学' },
|
||||||
|
{ value: '2', label: '初中' },
|
||||||
|
{ value: '3', label: '高中' },
|
||||||
|
{ value: '4', label: '中专' },
|
||||||
|
{ value: '5', label: '大学' }
|
||||||
|
]
|
||||||
|
|
||||||
|
// 获取学段名称
|
||||||
|
const getStageName = (stage) => {
|
||||||
|
const item = stageOptions.find(s => s.value === stage)
|
||||||
|
return item ? item.label : '未知'
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取学段标签类型
|
||||||
|
const getStageType = (stage) => {
|
||||||
|
const types = { '1': 'success', '2': 'primary', '3': 'warning', '4': 'info', '5': 'danger' }
|
||||||
|
return types[stage] || 'info'
|
||||||
|
}
|
||||||
|
|
||||||
// 弹窗相关
|
// 弹窗相关
|
||||||
const dialogVisible = ref(false)
|
const dialogVisible = ref(false)
|
||||||
const dialogTitle = ref('')
|
const dialogTitle = ref('')
|
||||||
|
|
@ -116,12 +153,14 @@ const form = ref({
|
||||||
gradeId: null,
|
gradeId: null,
|
||||||
gradeName: '',
|
gradeName: '',
|
||||||
gradeCode: '',
|
gradeCode: '',
|
||||||
|
stage: '1',
|
||||||
orderNum: 0,
|
orderNum: 0,
|
||||||
status: '0'
|
status: '0'
|
||||||
})
|
})
|
||||||
|
|
||||||
const rules = {
|
const rules = {
|
||||||
gradeName: [{ required: true, message: '请输入年级名称', trigger: 'blur' }]
|
gradeName: [{ required: true, message: '请输入年级名称', trigger: 'blur' }],
|
||||||
|
stage: [{ required: true, message: '请选择学段', trigger: 'change' }]
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取年级列表
|
// 获取年级列表
|
||||||
|
|
@ -146,14 +185,14 @@ const handleQuery = () => {
|
||||||
|
|
||||||
// 重置
|
// 重置
|
||||||
const resetQuery = () => {
|
const resetQuery = () => {
|
||||||
queryParams.value = { pageNum: 1, pageSize: 10, gradeName: '', status: '' }
|
queryParams.value = { pageNum: 1, pageSize: 10, gradeName: '', stage: '', status: '' }
|
||||||
getList()
|
getList()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 新增
|
// 新增
|
||||||
const handleAdd = () => {
|
const handleAdd = () => {
|
||||||
dialogTitle.value = '新增年级'
|
dialogTitle.value = '新增年级'
|
||||||
form.value = { gradeId: null, gradeName: '', gradeCode: '', orderNum: 0, status: '0' }
|
form.value = { gradeId: null, gradeName: '', gradeCode: '', stage: '1', orderNum: 0, status: '0' }
|
||||||
dialogVisible.value = true
|
dialogVisible.value = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
-- =====================================================
|
||||||
|
-- 年级表增加学段字段 - V1.0.4
|
||||||
|
-- 执行时间: 2026-02-04
|
||||||
|
-- 说明: 年级管理增加学段(小学/初中/高中/中专/大学)
|
||||||
|
-- =====================================================
|
||||||
|
|
||||||
|
-- 1. 新增学段字段
|
||||||
|
ALTER TABLE pg_grade ADD COLUMN stage CHAR(1) NULL COMMENT '学段(1小学 2初中 3高中 4中专 5大学)' AFTER grade_name;
|
||||||
|
|
||||||
|
-- 2. 初始化现有数据(根据年级名称自动匹配学段)
|
||||||
|
-- 小学
|
||||||
|
UPDATE pg_grade SET stage = '1' WHERE grade_name IN ('一年级', '二年级', '三年级', '四年级', '五年级', '六年级');
|
||||||
|
-- 初中
|
||||||
|
UPDATE pg_grade SET stage = '2' WHERE grade_name IN ('七年级', '八年级', '九年级');
|
||||||
|
-- 高中
|
||||||
|
UPDATE pg_grade SET stage = '3' WHERE grade_name IN ('高一', '高二', '高三');
|
||||||
|
-- 未匹配的默认设为小学
|
||||||
|
UPDATE pg_grade SET stage = '1' WHERE stage IS NULL;
|
||||||
|
|
||||||
|
-- 3. 设置为非空并添加默认值
|
||||||
|
ALTER TABLE pg_grade MODIFY COLUMN stage CHAR(1) NOT NULL DEFAULT '1' COMMENT '学段(1小学 2初中 3高中 4中专 5大学)';
|
||||||
Loading…
Reference in New Issue