diff --git a/src/api/info.js b/src/api/info.js new file mode 100644 index 0000000..8eac82d --- /dev/null +++ b/src/api/info.js @@ -0,0 +1,112 @@ +import request from '@/utils/request' + +// ==================== 教学楼信息 ==================== + +// 获取教学楼列表 +export function getBuildings(params) { + return request({ url: '/info/buildings', method: 'get', params }) +} + +// 新增教学楼 +export function addBuilding(data) { + return request({ url: '/info/buildings', method: 'post', data }) +} + +// 编辑教学楼 +export function updateBuilding(data) { + return request({ url: '/info/buildings', method: 'put', data }) +} + +// 删除教学楼 +export function deleteBuilding(id) { + return request({ url: `/info/buildings/${id}`, method: 'delete' }) +} + +// 获取教室列表(按教学楼id) +export function getRooms(params) { + return request({ url: '/info/rooms', method: 'get', params }) +} + +// 新增教室 +export function addRoom(data) { + return request({ url: '/info/rooms', method: 'post', data }) +} + +// 编辑教室 +export function updateRoom(data) { + return request({ url: '/info/rooms', method: 'put', data }) +} + +// 删除教室 +export function deleteRoom(id) { + return request({ url: `/info/rooms/${id}`, method: 'delete' }) +} + +// 获取摄像头列表(按教室id) +export function getCameras(params) { + return request({ url: '/info/cameras', method: 'get', params }) +} + +// 新增摄像头 +export function addCamera(data) { + return request({ url: '/info/cameras', method: 'post', data }) +} + +// 编辑摄像头 +export function updateCamera(data) { + return request({ url: '/info/cameras', method: 'put', data }) +} + +// 删除摄像头 +export function deleteCamera(id) { + return request({ url: `/info/cameras/${id}`, method: 'delete' }) +} + +// ==================== 班级信息 ==================== + +// 获取班级列表 +export function getClasses(params) { + return request({ url: '/info/classes', method: 'get', params }) +} + +// 新增班级 +export function addClass(data) { + return request({ url: '/info/classes', method: 'post', data }) +} + +// 编辑班级 +export function updateClass(data) { + return request({ url: '/info/classes', method: 'put', data }) +} + +// 删除班级 +export function deleteClass(id) { + return request({ url: `/info/classes/${id}`, method: 'delete' }) +} + +// ==================== 教师信息 ==================== + +// 获取教师列表(分页 + 关键字搜索) +export function getTeachers(params) { + return request({ url: '/teacher/page', method: 'get', params }) +} + +// 新增教师 +export function addTeacher(data) { + return request({ url: '/teacher', method: 'post', data }) +} + +// 编辑教师 +export function updateTeacher(data) { + return request({ url: `/teacher/${data.id}`, method: 'put', data }) +} + +// 获取教师详情 +export function getTeacherDetail(id) { + return request({ url: `/teacher/${id}`, method: 'get' }) +} + +// 删除教师(支持批量,传入 id 数组) +export function deleteTeacher(ids) { + return request({ url: '/teacher', method: 'delete', data: ids }) +} diff --git a/src/components/SideMenu.vue b/src/components/SideMenu.vue index f21fb5d..0936a5f 100644 --- a/src/components/SideMenu.vue +++ b/src/components/SideMenu.vue @@ -63,6 +63,25 @@ 权限管理 + + + + + + 教学楼信息 + + + + 班级信息 + + + + 教师信息 + + @@ -87,6 +106,7 @@ const appStore = useAppStore() const activeMenu = computed(() => { const { path } = route if (path.startsWith('/settings')) return '/settings' + if (path.startsWith('/info')) return '/info' return path }) diff --git a/src/router/index.js b/src/router/index.js index 4423b2c..9b4e99f 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -62,6 +62,24 @@ const routes = [ name: 'Permissions', component: () => import('@/views/settings/permissions.vue'), meta: { title: '权限管理', icon: 'Lock' } + }, + { + path: 'info/building', + name: 'InfoBuilding', + component: () => import('@/views/info/building.vue'), + meta: { title: '教学楼信息', icon: 'OfficeBuilding' } + }, + { + path: 'info/class', + name: 'InfoClass', + component: () => import('@/views/info/class.vue'), + meta: { title: '班级信息', icon: 'School' } + }, + { + path: 'info/teacher', + name: 'InfoTeacher', + component: () => import('@/views/info/teacher.vue'), + meta: { title: '教师信息', icon: 'UserFilled' } } ] } diff --git a/src/views/info/building.vue b/src/views/info/building.vue new file mode 100644 index 0000000..a7b9d75 --- /dev/null +++ b/src/views/info/building.vue @@ -0,0 +1,514 @@ + + + + + diff --git a/src/views/info/class.vue b/src/views/info/class.vue new file mode 100644 index 0000000..b12665c --- /dev/null +++ b/src/views/info/class.vue @@ -0,0 +1,266 @@ + + + + + diff --git a/src/views/info/teacher.vue b/src/views/info/teacher.vue new file mode 100644 index 0000000..7a8689b --- /dev/null +++ b/src/views/info/teacher.vue @@ -0,0 +1,317 @@ + + + + + diff --git a/src/views/settings/personnel.vue b/src/views/settings/personnel.vue index 092a9a4..1ce8731 100644 --- a/src/views/settings/personnel.vue +++ b/src/views/settings/personnel.vue @@ -46,7 +46,7 @@ v-model:current-page="pageCurrent" :total="students.length" :page-size="10" - small + size="small" background layout="total, prev, pager, next" style="justify-content: flex-end; margin-top: 16px"