diff --git a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java index 20743e1..512ed13 100644 --- a/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java +++ b/backend/ruoyi-modules/pangu-business/src/main/java/org/dromara/pangu/school/service/impl/PgSchoolServiceImpl.java @@ -91,9 +91,33 @@ public class PgSchoolServiceImpl implements IPgSchoolService { @Override public int insert(PgSchool school) { + // 自动生成学校编码 + String schoolCode = generateSchoolCode(); + school.setSchoolCode(schoolCode); return baseMapper.insert(school); } + /** + * 生成学校编码,格式:SCH + 年份后两位 + 6位序号 + */ + private String generateSchoolCode() { + String yearSuffix = String.valueOf(java.time.Year.now().getValue()).substring(2); + String prefix = "SCH" + yearSuffix; + // 查询当前最大编码 + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.likeRight(PgSchool::getSchoolCode, prefix); + wrapper.orderByDesc(PgSchool::getSchoolCode); + wrapper.last("LIMIT 1"); + PgSchool lastSchool = baseMapper.selectOne(wrapper); + int nextSeq = 1; + if (lastSchool != null && lastSchool.getSchoolCode() != null) { + String lastCode = lastSchool.getSchoolCode(); + String seqStr = lastCode.substring(prefix.length()); + nextSeq = Integer.parseInt(seqStr) + 1; + } + return prefix + String.format("%06d", nextSeq); + } + @Override public int update(PgSchool school) { return baseMapper.updateById(school); diff --git a/frontend/ruoyi-ui/src/mock/user.js b/frontend/ruoyi-ui/src/mock/user.js index 398b0b4..5bc4c8e 100644 --- a/frontend/ruoyi-ui/src/mock/user.js +++ b/frontend/ruoyi-ui/src/mock/user.js @@ -46,8 +46,8 @@ const generateCaptcha = () => { return { code, img: base64 } } -// 获取验证码 -Mock.mock(/\/api\/captchaImage/, 'get', () => { +// 获取验证码(路径与后端一致:/auth/code) +Mock.mock(/\/auth\/code/, 'get', () => { const uuid = Mock.Random.guid() const captcha = generateCaptcha() diff --git a/frontend/ruoyi-ui/src/views/business/school/components/ClassDialog.vue b/frontend/ruoyi-ui/src/views/business/school/components/ClassDialog.vue index 119f7f1..2bc4f67 100644 --- a/frontend/ruoyi-ui/src/views/business/school/components/ClassDialog.vue +++ b/frontend/ruoyi-ui/src/views/business/school/components/ClassDialog.vue @@ -74,6 +74,7 @@ const fetchSchoolGrades = async (schoolId) => { try { const res = await getSchoolGradeTree(schoolId) if (res.code === 200) { + // res.data 是 PgSchoolGrade 列表,包含 id(学校年级关联ID)、gradeId、gradeName schoolGradeOptions.value = res.data || [] } } catch (error) { @@ -86,10 +87,11 @@ const fetchClassOptions = async () => { try { const res = await getClassOptions() if (res.code === 200) { - // 转换为选项格式 + // 转换为选项格式 { value: classId, label: className } classOptions.value = (res.data || []).map(item => ({ value: item.classId, - label: item.className + label: item.className, + disabled: false })) } } catch (error) { diff --git a/frontend/ruoyi-ui/src/views/business/school/components/GradeDialog.vue b/frontend/ruoyi-ui/src/views/business/school/components/GradeDialog.vue index 6fe9a48..1feb3a0 100644 --- a/frontend/ruoyi-ui/src/views/business/school/components/GradeDialog.vue +++ b/frontend/ruoyi-ui/src/views/business/school/components/GradeDialog.vue @@ -60,10 +60,11 @@ const fetchGradeOptions = async () => { try { const res = await getGradeOptions() if (res.code === 200) { - // 转换为选项格式 + // 转换为选项格式 { value: gradeId, label: gradeName } gradeOptions.value = (res.data || []).map(item => ({ value: item.gradeId, - label: item.gradeName + label: item.gradeName, + disabled: false })) } } catch (error) { diff --git a/frontend/ruoyi-ui/src/views/business/school/components/SchoolDialog.vue b/frontend/ruoyi-ui/src/views/business/school/components/SchoolDialog.vue index 9285e08..cb229f9 100644 --- a/frontend/ruoyi-ui/src/views/business/school/components/SchoolDialog.vue +++ b/frontend/ruoyi-ui/src/views/business/school/components/SchoolDialog.vue @@ -12,8 +12,11 @@ :rules="rules" label-width="100px" > + + + - + @@ -84,6 +87,7 @@ const isEdit = ref(false) // 表单数据 const form = ref({ schoolId: null, + schoolCode: '', schoolName: '', schoolType: '', regionId: null, @@ -145,6 +149,7 @@ const open = (row) => { // 编辑模式:回显数据 form.value = { schoolId: row.schoolId, + schoolCode: row.schoolCode || '', schoolName: row.schoolName, schoolType: row.schoolType, regionId: row.regionId, @@ -156,6 +161,7 @@ const open = (row) => { // 新增模式:重置表单 form.value = { schoolId: null, + schoolCode: '', schoolName: '', schoolType: '', regionId: null, diff --git a/frontend/ruoyi-ui/src/views/business/school/index.vue b/frontend/ruoyi-ui/src/views/business/school/index.vue index 63be018..740e425 100644 --- a/frontend/ruoyi-ui/src/views/business/school/index.vue +++ b/frontend/ruoyi-ui/src/views/business/school/index.vue @@ -52,13 +52,14 @@ + - +