fix: 修复Mock数据字段名与视图不匹配问题

- 年级管理: name→gradeName, code→gradeCode
- 班级管理: name→className, code→classCode
- 学科管理: name→subjectName, code→subjectCode
- 区域管理: name→regionName, code→regionCode, 添加sort字段
- 应用管理: apis→apiAuth (视图字段修复)
- 移除member.js中重复的grade/class Mock定义避免冲突
This commit is contained in:
神码-方晓辉 2026-01-31 17:33:49 +08:00
parent 0610add9ba
commit 0ee6ae1ba0
6 changed files with 81 additions and 92 deletions

View File

@ -6,30 +6,30 @@ import Mock from 'mockjs'
// 班级预置数据
const classData = [
{ id: 1, name: '1班', code: 'C01', sort: 1, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 2, name: '2班', code: 'C02', sort: 2, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 3, name: '3班', code: 'C03', sort: 3, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 4, name: '4班', code: 'C04', sort: 4, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 5, name: '5班', code: 'C05', sort: 5, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 6, name: '6班', code: 'C06', sort: 6, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 7, name: '7班', code: 'C07', sort: 7, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 8, name: '8班', code: 'C08', sort: 8, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 9, name: '9班', code: 'C09', sort: 9, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 10, name: '10班', code: 'C10', sort: 10, status: '0', createTime: '2026-01-01 10:00:00' }
{ id: 1, className: '1班', classCode: 'C01', sort: 1, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 2, className: '2班', classCode: 'C02', sort: 2, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 3, className: '3班', classCode: 'C03', sort: 3, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 4, className: '4班', classCode: 'C04', sort: 4, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 5, className: '5班', classCode: 'C05', sort: 5, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 6, className: '6班', classCode: 'C06', sort: 6, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 7, className: '7班', classCode: 'C07', sort: 7, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 8, className: '8班', classCode: 'C08', sort: 8, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 9, className: '9班', classCode: 'C09', sort: 9, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 10, className: '10班', classCode: 'C10', sort: 10, status: '0', createTime: '2026-01-01 10:00:00' }
]
// 获取班级列表
Mock.mock(/\/api\/class\/list/, 'get', (options) => {
const url = new URL('http://localhost' + options.url)
const name = url.searchParams.get('name') || ''
const className = url.searchParams.get('className') || ''
const status = url.searchParams.get('status')
const pageNum = parseInt(url.searchParams.get('pageNum')) || 1
const pageSize = parseInt(url.searchParams.get('pageSize')) || 10
let list = classData.filter(item => {
let match = true
if (name) {
match = match && item.name.includes(name)
if (className) {
match = match && item.className.includes(className)
}
if (status !== null && status !== '') {
match = match && item.status === status
@ -56,8 +56,8 @@ Mock.mock(/\/api\/class\/options/, 'get', () => {
msg: '查询成功',
data: classData.filter(item => item.status === '0').map(item => ({
id: item.id,
name: item.name,
code: item.code
className: item.className,
classCode: item.classCode
}))
}
})

View File

@ -6,32 +6,32 @@ import Mock from 'mockjs'
// 年级预置数据
const gradeData = [
{ id: 1, name: '一年级', code: 'G01', sort: 1, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 2, name: '二年级', code: 'G02', sort: 2, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 3, name: '三年级', code: 'G03', sort: 3, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 4, name: '四年级', code: 'G04', sort: 4, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 5, name: '五年级', code: 'G05', sort: 5, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 6, name: '六年级', code: 'G06', sort: 6, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 7, name: '七年级', code: 'G07', sort: 7, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 8, name: '八年级', code: 'G08', sort: 8, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 9, name: '九年级', code: 'G09', sort: 9, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 10, name: '高一', code: 'G10', sort: 10, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 11, name: '高二', code: 'G11', sort: 11, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 12, name: '高三', code: 'G12', sort: 12, status: '0', createTime: '2026-01-01 10:00:00' }
{ id: 1, gradeName: '一年级', gradeCode: 'G01', sort: 1, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 2, gradeName: '二年级', gradeCode: 'G02', sort: 2, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 3, gradeName: '三年级', gradeCode: 'G03', sort: 3, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 4, gradeName: '四年级', gradeCode: 'G04', sort: 4, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 5, gradeName: '五年级', gradeCode: 'G05', sort: 5, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 6, gradeName: '六年级', gradeCode: 'G06', sort: 6, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 7, gradeName: '七年级', gradeCode: 'G07', sort: 7, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 8, gradeName: '八年级', gradeCode: 'G08', sort: 8, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 9, gradeName: '九年级', gradeCode: 'G09', sort: 9, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 10, gradeName: '高一', gradeCode: 'G10', sort: 10, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 11, gradeName: '高二', gradeCode: 'G11', sort: 11, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 12, gradeName: '高三', gradeCode: 'G12', sort: 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 name = url.searchParams.get('name') || ''
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 (name) {
match = match && item.name.includes(name)
if (gradeName) {
match = match && item.gradeName.includes(gradeName)
}
if (status !== null && status !== '') {
match = match && item.status === status
@ -58,8 +58,8 @@ Mock.mock(/\/api\/grade\/options/, 'get', () => {
msg: '查询成功',
data: gradeData.filter(item => item.status === '0').map(item => ({
id: item.id,
name: item.name,
code: item.code
gradeName: item.gradeName,
gradeCode: item.gradeCode
}))
}
})

View File

@ -201,20 +201,4 @@ Mock.mock(/\/api\/school\/list/, 'get', () => {
}
})
// 获取年级列表
Mock.mock(/\/api\/grade\/list/, 'get', () => {
return {
code: 200,
msg: '查询成功',
data: gradeList
}
})
// 获取班级列表
Mock.mock(/\/api\/class\/list/, 'get', () => {
return {
code: 200,
msg: '查询成功',
data: classList
}
})
// 注意年级列表和班级列表的Mock已移至grade.js和class.js中

View File

@ -8,71 +8,76 @@ import Mock from 'mockjs'
const regionTree = [
{
id: 1,
name: '湖北省',
code: 'HB',
regionName: '湖北省',
regionCode: 'HB',
level: 1,
parentId: 0,
sort: 1,
status: '0',
createTime: '2026-01-01 10:00:00',
children: [
{
id: 11,
name: '武汉市',
code: 'WH',
regionName: '武汉市',
regionCode: 'WH',
level: 2,
parentId: 1,
sort: 1,
status: '0',
createTime: '2026-01-01 10:00:00',
children: [
{ id: 111, name: '武昌区', code: 'WC', level: 3, parentId: 11, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 112, name: '洪山区', code: 'HS', level: 3, parentId: 11, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 113, name: '江夏区', code: 'JX', level: 3, parentId: 11, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 114, name: '汉阳区', code: 'HY', level: 3, parentId: 11, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 115, name: '江岸区', code: 'JA', level: 3, parentId: 11, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 116, name: '江汉区', code: 'JH', level: 3, parentId: 11, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 117, name: '硚口区', code: 'QK', level: 3, parentId: 11, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 118, name: '青山区', code: 'QS', level: 3, parentId: 11, status: '0', createTime: '2026-01-01 10:00:00' }
{ id: 111, regionName: '武昌区', regionCode: 'WC', level: 3, parentId: 11, sort: 1, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 112, regionName: '洪山区', regionCode: 'HS', level: 3, parentId: 11, sort: 2, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 113, regionName: '江夏区', regionCode: 'JX', level: 3, parentId: 11, sort: 3, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 114, regionName: '汉阳区', regionCode: 'HY', level: 3, parentId: 11, sort: 4, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 115, regionName: '江岸区', regionCode: 'JA', level: 3, parentId: 11, sort: 5, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 116, regionName: '江汉区', regionCode: 'JH', level: 3, parentId: 11, sort: 6, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 117, regionName: '硚口区', regionCode: 'QK', level: 3, parentId: 11, sort: 7, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 118, regionName: '青山区', regionCode: 'QS', level: 3, parentId: 11, sort: 8, status: '0', createTime: '2026-01-01 10:00:00' }
]
},
{
id: 12,
name: '黄冈市',
code: 'HG',
regionName: '黄冈市',
regionCode: 'HG',
level: 2,
parentId: 1,
sort: 2,
status: '0',
createTime: '2026-01-01 10:00:00',
children: [
{ id: 121, name: '黄州区', code: 'HZ', level: 3, parentId: 12, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 122, name: '红安县', code: 'HA', level: 3, parentId: 12, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 123, name: '麻城市', code: 'MC', level: 3, parentId: 12, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 124, name: '武穴市', code: 'WX', level: 3, parentId: 12, status: '0', createTime: '2026-01-01 10:00:00' }
{ id: 121, regionName: '黄州区', regionCode: 'HZ', level: 3, parentId: 12, sort: 1, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 122, regionName: '红安县', regionCode: 'HA', level: 3, parentId: 12, sort: 2, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 123, regionName: '麻城市', regionCode: 'MC', level: 3, parentId: 12, sort: 3, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 124, regionName: '武穴市', regionCode: 'WX', level: 3, parentId: 12, sort: 4, status: '0', createTime: '2026-01-01 10:00:00' }
]
},
{
id: 13,
name: '宜昌市',
code: 'YC',
regionName: '宜昌市',
regionCode: 'YC',
level: 2,
parentId: 1,
sort: 3,
status: '0',
createTime: '2026-01-01 10:00:00',
children: [
{ id: 131, name: '西陵区', code: 'XL', level: 3, parentId: 13, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 132, name: '伍家岗区', code: 'WJG', level: 3, parentId: 13, status: '0', createTime: '2026-01-01 10:00:00' }
{ id: 131, regionName: '西陵区', regionCode: 'XL', level: 3, parentId: 13, sort: 1, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 132, regionName: '伍家岗区', regionCode: 'WJG', level: 3, parentId: 13, sort: 2, status: '0', createTime: '2026-01-01 10:00:00' }
]
},
{
id: 14,
name: '襄阳市',
code: 'XY',
regionName: '襄阳市',
regionCode: 'XY',
level: 2,
parentId: 1,
sort: 4,
status: '0',
createTime: '2026-01-01 10:00:00',
children: [
{ id: 141, name: '襄城区', code: 'XCQ', level: 3, parentId: 14, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 142, name: '樊城区', code: 'FC', level: 3, parentId: 14, status: '0', createTime: '2026-01-01 10:00:00' }
{ id: 141, regionName: '襄城区', regionCode: 'XCQ', level: 3, parentId: 14, sort: 1, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 142, regionName: '樊城区', regionCode: 'FC', level: 3, parentId: 14, sort: 2, status: '0', createTime: '2026-01-01 10:00:00' }
]
}
]
@ -88,7 +93,7 @@ Mock.mock(/\/api\/region\/tree/, 'get', () => {
}
})
// 获取区域列表(扁平化
// 获取区域列表(树形
Mock.mock(/\/api\/region\/list/, 'get', () => {
return {
code: 200,

View File

@ -6,29 +6,29 @@ import Mock from 'mockjs'
// 学科预置数据
const subjectData = [
{ id: 1, name: '语文', code: 'S01', sort: 1, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 2, name: '数学', code: 'S02', sort: 2, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 3, name: '英语', code: 'S03', sort: 3, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 4, name: '物理', code: 'S04', sort: 4, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 5, name: '化学', code: 'S05', sort: 5, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 6, name: '生物', code: 'S06', sort: 6, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 7, name: '历史', code: 'S07', sort: 7, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 8, name: '地理', code: 'S08', sort: 8, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 9, name: '政治', code: 'S09', sort: 9, status: '0', createTime: '2026-01-01 10:00:00' }
{ id: 1, subjectName: '语文', subjectCode: 'S01', sort: 1, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 2, subjectName: '数学', subjectCode: 'S02', sort: 2, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 3, subjectName: '英语', subjectCode: 'S03', sort: 3, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 4, subjectName: '物理', subjectCode: 'S04', sort: 4, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 5, subjectName: '化学', subjectCode: 'S05', sort: 5, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 6, subjectName: '生物', subjectCode: 'S06', sort: 6, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 7, subjectName: '历史', subjectCode: 'S07', sort: 7, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 8, subjectName: '地理', subjectCode: 'S08', sort: 8, status: '0', createTime: '2026-01-01 10:00:00' },
{ id: 9, subjectName: '政治', subjectCode: 'S09', sort: 9, status: '0', createTime: '2026-01-01 10:00:00' }
]
// 获取学科列表
Mock.mock(/\/api\/subject\/list/, 'get', (options) => {
const url = new URL('http://localhost' + options.url)
const name = url.searchParams.get('name') || ''
const subjectName = url.searchParams.get('subjectName') || ''
const status = url.searchParams.get('status')
const pageNum = parseInt(url.searchParams.get('pageNum')) || 1
const pageSize = parseInt(url.searchParams.get('pageSize')) || 10
let list = subjectData.filter(item => {
let match = true
if (name) {
match = match && item.name.includes(name)
if (subjectName) {
match = match && item.subjectName.includes(subjectName)
}
if (status !== null && status !== '') {
match = match && item.status === status

View File

@ -33,12 +33,12 @@
<el-table v-loading="loading" :data="tableData" border stripe :header-cell-style="{ background: '#f5f7fa', color: '#606266' }" style="width: 100%">
<el-table-column prop="appName" label="应用名称" min-width="150" show-overflow-tooltip />
<el-table-column prop="appCode" label="应用编码" width="120" />
<el-table-column prop="apis" label="授权接口" min-width="250">
<el-table-column prop="apiAuth" label="授权接口" min-width="250">
<template #default="{ row }">
<el-tag v-for="api in (row.apis || []).slice(0, 3)" :key="api" size="small" style="margin-right: 4px; margin-bottom: 2px">
<el-tag v-for="api in (row.apiAuth || []).slice(0, 3)" :key="api" size="small" style="margin-right: 4px; margin-bottom: 2px">
{{ api }}
</el-tag>
<el-tag v-if="(row.apis || []).length > 3" size="small" type="info">+{{ row.apis.length - 3 }}</el-tag>
<el-tag v-if="(row.apiAuth || []).length > 3" size="small" type="info">+{{ row.apiAuth.length - 3 }}</el-tag>
</template>
</el-table-column>
<el-table-column prop="status" label="状态" width="80" align="center">
@ -85,10 +85,10 @@
* 应用管理页面
* @author pangu
*/
import request from '@/utils/request'
import { Delete, Edit, Key, Plus, Refresh, Search } from '@element-plus/icons-vue'
import { ElMessage, ElMessageBox } from 'element-plus'
import { onMounted, ref } from 'vue'
import request from '@/utils/request'
import AppDialog from './components/AppDialog.vue'
import SecretDialog from './components/SecretDialog.vue'