新增
{{ isExpandAll ? '折叠全部' : '展开全部' }}
{{ getLevelText(row.level) }}
新增下级
编辑
删除
取消
确定
```
---
## 5. Mock数据配置
### 5.1 年级Mock(mock/grade.js)
```javascript
/**
* 年级管理Mock数据
* @author 湖北新华业务中台研发团队
*/
import Mock from 'mockjs'
// 年级预置数据
const gradeData = [
{ gradeId: 1, gradeName: '一年级', gradeCode: 'GRD001', orderNum: 1, status: '0', createTime: '2026-01-01 10:00:00' },
{ gradeId: 2, gradeName: '二年级', gradeCode: 'GRD002', orderNum: 2, status: '0', createTime: '2026-01-01 10:00:00' },
{ gradeId: 3, gradeName: '三年级', gradeCode: 'GRD003', orderNum: 3, status: '0', createTime: '2026-01-01 10:00:00' },
{ gradeId: 4, gradeName: '四年级', gradeCode: 'GRD004', orderNum: 4, status: '0', createTime: '2026-01-01 10:00:00' },
{ gradeId: 5, gradeName: '五年级', gradeCode: 'GRD005', orderNum: 5, status: '0', createTime: '2026-01-01 10:00:00' },
{ gradeId: 6, gradeName: '六年级', gradeCode: 'GRD006', orderNum: 6, status: '0', createTime: '2026-01-01 10:00:00' },
{ gradeId: 7, gradeName: '七年级', gradeCode: 'GRD007', orderNum: 7, status: '0', createTime: '2026-01-01 10:00:00' },
{ gradeId: 8, gradeName: '八年级', gradeCode: 'GRD008', orderNum: 8, status: '0', createTime: '2026-01-01 10:00:00' },
{ gradeId: 9, gradeName: '九年级', gradeCode: 'GRD009', orderNum: 9, status: '0', createTime: '2026-01-01 10:00:00' },
{ gradeId: 10, gradeName: '高一', gradeCode: 'GRD010', orderNum: 10, status: '0', createTime: '2026-01-01 10:00:00' },
{ gradeId: 11, gradeName: '高二', gradeCode: 'GRD011', orderNum: 11, status: '0', createTime: '2026-01-01 10:00:00' },
{ gradeId: 12, gradeName: '高三', gradeCode: 'GRD012', orderNum: 12, status: '0', createTime: '2026-01-01 10:00:00' }
]
// 获取年级列表
Mock.mock(/\/api\/grade\/list/, 'get', (options) => {
const url = new URL('http://localhost' + options.url)
const gradeName = url.searchParams.get('gradeName') || ''
const status = url.searchParams.get('status')
const pageNum = parseInt(url.searchParams.get('pageNum')) || 1
const pageSize = parseInt(url.searchParams.get('pageSize')) || 10
let list = gradeData.filter(item => {
let match = true
if (gradeName) {
match = match && item.gradeName.includes(gradeName)
}
if (status !== null && status !== '') {
match = match && item.status === status
}
return match
})
const total = list.length
const start = (pageNum - 1) * pageSize
const rows = list.slice(start, start + pageSize)
return {
code: 200,
msg: '查询成功',
total,
rows
}
})
// 获取年级选项
Mock.mock(/\/api\/grade\/options/, 'get', () => {
return {
code: 200,
msg: '查询成功',
data: gradeData.filter(item => item.status === '0').map(item => ({
gradeId: item.gradeId,
gradeName: item.gradeName,
gradeCode: item.gradeCode
}))
}
})
// 新增年级
Mock.mock('/api/grade', 'post', () => {
return { code: 200, msg: '新增成功' }
})
// 修改年级
Mock.mock('/api/grade', 'put', () => {
return { code: 200, msg: '修改成功' }
})
// 删除年级
Mock.mock(/\/api\/grade\/\d+/, 'delete', () => {
// 模拟被引用时的删除失败
// return { code: 500, msg: '该年级已被学校使用,不能删除' }
return { code: 200, msg: '删除成功' }
})
```
### 5.2 区域Mock(mock/region.js)
```javascript
/**
* 区域管理Mock数据
* @author 湖北新华业务中台研发团队
*/
import Mock from 'mockjs'
// 区域树形数据
const regionTree = [
{
regionId: 1,
parentId: 0,
regionName: '湖北',
regionCode: 'REG01',
level: 1,
orderNum: 1,
createTime: '2026-01-01 10:00:00',
children: [
{
regionId: 11,
parentId: 1,
regionName: '武汉',
regionCode: 'REG0101',
level: 2,
orderNum: 1,
createTime: '2026-01-01 10:00:00',
children: [
{ regionId: 111, parentId: 11, regionName: '武昌区', regionCode: 'REG010101', level: 3, orderNum: 1, createTime: '2026-01-01 10:00:00' },
{ regionId: 112, parentId: 11, regionName: '汉口区', regionCode: 'REG010102', level: 3, orderNum: 2, createTime: '2026-01-01 10:00:00' },
{ regionId: 113, parentId: 11, regionName: '汉阳区', regionCode: 'REG010103', level: 3, orderNum: 3, createTime: '2026-01-01 10:00:00' },
{ regionId: 114, parentId: 11, regionName: '江夏区', regionCode: 'REG010104', level: 3, orderNum: 4, createTime: '2026-01-01 10:00:00' },
{ regionId: 115, parentId: 11, regionName: '新洲区', regionCode: 'REG010105', level: 3, orderNum: 5, createTime: '2026-01-01 10:00:00' },
{ regionId: 116, parentId: 11, regionName: '黄陂区', regionCode: 'REG010106', level: 3, orderNum: 6, createTime: '2026-01-01 10:00:00' }
]
},
{
regionId: 12,
parentId: 1,
regionName: '黄冈',
regionCode: 'REG0102',
level: 2,
orderNum: 2,
createTime: '2026-01-01 10:00:00',
children: [
{ regionId: 121, parentId: 12, regionName: '黄州区', regionCode: 'REG010201', level: 3, orderNum: 1, createTime: '2026-01-01 10:00:00' },
{ regionId: 122, parentId: 12, regionName: '红安县', regionCode: 'REG010202', level: 3, orderNum: 2, createTime: '2026-01-01 10:00:00' },
{ regionId: 123, parentId: 12, regionName: '麻城市', regionCode: 'REG010203', level: 3, orderNum: 3, createTime: '2026-01-01 10:00:00' }
]
}
]
},
{ regionId: 2, parentId: 0, regionName: '北京', regionCode: 'REG02', level: 1, orderNum: 2, createTime: '2026-01-01 10:00:00', children: [] },
{ regionId: 3, parentId: 0, regionName: '香港', regionCode: 'REG03', level: 1, orderNum: 3, createTime: '2026-01-01 10:00:00', children: [] },
{ regionId: 4, parentId: 0, regionName: '吉宁', regionCode: 'REG04', level: 1, orderNum: 4, createTime: '2026-01-01 10:00:00', children: [] }
]
// 获取区域树
Mock.mock('/api/region/tree', 'get', () => {
return {
code: 200,
msg: '查询成功',
data: regionTree
}
})
// 新增区域
Mock.mock('/api/region', 'post', () => {
return { code: 200, msg: '新增成功' }
})
// 修改区域
Mock.mock('/api/region', 'put', () => {
return { code: 200, msg: '修改成功' }
})
// 删除区域
Mock.mock(/\/api\/region\/\d+/, 'delete', () => {
return { code: 200, msg: '删除成功' }
})
```
---
## 6. 路由配置
```javascript
// router/index.js
import { createRouter, createWebHistory } from 'vue-router'
import Layout from '@/layout/index.vue'
const routes = [
// ... 其他路由
{
path: '/base',
component: Layout,
redirect: '/base/grade',
name: 'Base',
meta: { title: '基础数据', icon: 'Setting' },
children: [
{
path: 'grade',
name: 'Grade',
component: () => import('@/views/base/grade/index.vue'),
meta: { title: '年级管理' }
},
{
path: 'class',
name: 'Class',
component: () => import('@/views/base/class/index.vue'),
meta: { title: '班级管理' }
},
{
path: 'subject',
name: 'Subject',
component: () => import('@/views/base/subject/index.vue'),
meta: { title: '学科管理' }
},
{
path: 'region',
name: 'Region',
component: () => import('@/views/base/region/index.vue'),
meta: { title: '区域管理' }
}
]
}
]
const router = createRouter({
history: createWebHistory(),
routes
})
export default router
```
---
## 7. 开发检查清单
### 7.1 年级管理
- [ ] API接口封装(api/grade.js)
- [ ] Mock数据配置(mock/grade.js)
- [ ] 页面组件开发(views/base/grade/index.vue)
- [ ] 列表查询功能
- [ ] 分页功能
- [ ] 新增功能
- [ ] 编辑功能
- [ ] 删除功能(含删除确认)
- [ ] 表单校验
### 7.2 班级管理
- [ ] API接口封装
- [ ] Mock数据配置
- [ ] 页面组件开发
- [ ] CRUD功能
### 7.3 学科管理
- [ ] API接口封装
- [ ] Mock数据配置
- [ ] 页面组件开发
- [ ] CRUD功能
### 7.4 区域管理
- [ ] API接口封装
- [ ] Mock数据配置
- [ ] 页面组件开发(树形表格)
- [ ] 展开/折叠全部功能
- [ ] 新增下级功能
- [ ] 删除前子级检查
### 7.5 路由配置
- [ ] 基础数据菜单配置
- [ ] 四个子页面路由配置
---
*文档结束*