年级管理增加学段字段(小学/初中/高中/中专/大学)
This commit is contained in:
parent
80dd406f8c
commit
72cb6668f3
|
|
@ -34,6 +34,11 @@ public class PgGrade extends BaseEntity {
|
|||
*/
|
||||
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) {
|
||||
OpenGradeVo vo = new OpenGradeVo();
|
||||
BeanUtils.copyProperties(source, vo);
|
||||
// 设置学段名称
|
||||
vo.setStageName(getStageName(source.getStage()));
|
||||
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) {
|
||||
OpenClassVo vo = new OpenClassVo();
|
||||
BeanUtils.copyProperties(source, vo);
|
||||
|
|
|
|||
|
|
@ -23,6 +23,12 @@ public class OpenGradeVo implements Serializable {
|
|||
@Schema(description = "年级名称")
|
||||
private String gradeName;
|
||||
|
||||
@Schema(description = "学段(1小学 2初中 3高中 4中专 5大学)")
|
||||
private String stage;
|
||||
|
||||
@Schema(description = "学段名称")
|
||||
private String stageName;
|
||||
|
||||
@Schema(description = "显示顺序")
|
||||
private Integer orderNum;
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,11 @@
|
|||
<el-form-item label="年级名称">
|
||||
<el-input v-model="queryParams.gradeName" placeholder="请输入年级名称" clearable style="width: 200px" @keyup.enter="handleQuery" />
|
||||
</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-select v-model="queryParams.status" placeholder="全部" clearable style="width: 100px">
|
||||
<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-column prop="name" label="年级名称" min-width="150" />
|
||||
<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="status" label="状态" width="80" align="center">
|
||||
<template #default="{ row }">
|
||||
|
|
@ -69,6 +79,11 @@
|
|||
<el-form-item label="年级编码" prop="code">
|
||||
<el-input v-model="form.code" placeholder="自动生成" disabled />
|
||||
</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-input-number v-model="form.sort" :min="0" :max="999" />
|
||||
</el-form-item>
|
||||
|
|
@ -102,9 +117,31 @@ const queryParams = ref({
|
|||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
gradeName: '',
|
||||
stage: '',
|
||||
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 dialogTitle = ref('')
|
||||
|
|
@ -113,12 +150,14 @@ const form = ref({
|
|||
id: null,
|
||||
name: '',
|
||||
code: '',
|
||||
stage: '1',
|
||||
sort: 0,
|
||||
status: '0'
|
||||
})
|
||||
|
||||
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 = () => {
|
||||
queryParams.value = { pageNum: 1, pageSize: 10, gradeName: '', status: '' }
|
||||
queryParams.value = { pageNum: 1, pageSize: 10, gradeName: '', stage: '', status: '' }
|
||||
getList()
|
||||
}
|
||||
|
||||
// 新增
|
||||
const handleAdd = () => {
|
||||
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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,6 +6,11 @@
|
|||
<el-form-item label="年级名称">
|
||||
<el-input v-model="queryParams.gradeName" placeholder="请输入年级名称" clearable style="width: 200px" @keyup.enter="handleQuery" />
|
||||
</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-select v-model="queryParams.status" placeholder="全部" clearable style="width: 100px">
|
||||
<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-column prop="gradeName" label="年级名称" min-width="150" />
|
||||
<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="status" label="状态" width="80" align="center">
|
||||
<template #default="{ row }">
|
||||
|
|
@ -69,6 +79,11 @@
|
|||
<el-form-item label="年级编码" prop="gradeCode">
|
||||
<el-input v-model="form.gradeCode" placeholder="自动生成" disabled />
|
||||
</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-input-number v-model="form.orderNum" :min="0" :max="999" />
|
||||
</el-form-item>
|
||||
|
|
@ -105,9 +120,31 @@ const queryParams = ref({
|
|||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
gradeName: '',
|
||||
stage: '',
|
||||
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 dialogTitle = ref('')
|
||||
|
|
@ -116,12 +153,14 @@ const form = ref({
|
|||
gradeId: null,
|
||||
gradeName: '',
|
||||
gradeCode: '',
|
||||
stage: '1',
|
||||
orderNum: 0,
|
||||
status: '0'
|
||||
})
|
||||
|
||||
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 = () => {
|
||||
queryParams.value = { pageNum: 1, pageSize: 10, gradeName: '', status: '' }
|
||||
queryParams.value = { pageNum: 1, pageSize: 10, gradeName: '', stage: '', status: '' }
|
||||
getList()
|
||||
}
|
||||
|
||||
// 新增
|
||||
const handleAdd = () => {
|
||||
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
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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