288 lines
6.1 KiB
TypeScript
288 lines
6.1 KiB
TypeScript
import request from '@/utils/request'
|
|
import { AxiosPromise } from 'axios'
|
|
import { ClassInfoVO, ClassInfoQuery, ClassInfoForm, OptionData } from './classInfo/types'
|
|
|
|
// 通用类型定义
|
|
interface TableDataInfo<T> {
|
|
code: number;
|
|
msg: string;
|
|
rows: T[];
|
|
total: number;
|
|
}
|
|
|
|
interface R<T> {
|
|
code: number;
|
|
msg: string;
|
|
data: T;
|
|
}
|
|
|
|
/**
|
|
* 查询班级信息列表
|
|
*/
|
|
export const listClassInfo = (query: ClassInfoQuery): AxiosPromise<TableDataInfo<ClassInfoVO>> => {
|
|
return request({
|
|
url: '/xg/classInfo/list',
|
|
method: 'get',
|
|
params: query
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 查询班级信息详细
|
|
*/
|
|
export const getClassInfo = (id: string | number): AxiosPromise<R<ClassInfoVO>> => {
|
|
return request({
|
|
url: '/xg/classInfo/' + id,
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 新增班级信息
|
|
*/
|
|
export const addClassInfo = (data: ClassInfoForm): AxiosPromise<R<void>> => {
|
|
return request({
|
|
url: '/xg/classInfo',
|
|
method: 'post',
|
|
data: data
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 修改班级信息
|
|
*/
|
|
export const updateClassInfo = (data: ClassInfoForm): AxiosPromise<R<void>> => {
|
|
return request({
|
|
url: '/xg/classInfo',
|
|
method: 'put',
|
|
data: data
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 删除班级信息
|
|
*/
|
|
export const delClassInfo = (id: string | number | Array<string | number>): AxiosPromise<R<void>> => {
|
|
return request({
|
|
url: '/xg/classInfo/' + id,
|
|
method: 'delete'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 导出班级信息
|
|
*/
|
|
export const exportClassInfo = (query: ClassInfoQuery): AxiosPromise<any> => {
|
|
return request({
|
|
url: '/xg/classInfo/export',
|
|
method: 'post',
|
|
data: query
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 根据班级代码查询班级信息
|
|
*/
|
|
export const getClassInfoByCode = (classCode: string): AxiosPromise<R<ClassInfoVO>> => {
|
|
return request({
|
|
url: '/xg/classInfo/getByClassCode/' + classCode,
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 根据年级查询班级信息列表
|
|
*/
|
|
export const getClassInfoByGrade = (grade: string): AxiosPromise<R<ClassInfoVO[]>> => {
|
|
return request({
|
|
url: '/xg/classInfo/getByGrade/' + grade,
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 根据学院代码查询班级信息列表
|
|
*/
|
|
export const getClassInfoByCollege = (collegeCode: string): AxiosPromise<R<ClassInfoVO[]>> => {
|
|
return request({
|
|
url: '/xg/classInfo/getByCollegeCode/' + collegeCode,
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 根据专业代码查询班级信息列表
|
|
*/
|
|
export const getClassInfoByMajor = (majorCode: string): AxiosPromise<R<ClassInfoVO[]>> => {
|
|
return request({
|
|
url: '/xg/classInfo/getByMajorCode/' + majorCode,
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 根据辅导员ID查询班级信息列表
|
|
*/
|
|
export const getClassInfoByCounselor = (counselorId: number): AxiosPromise<R<ClassInfoVO[]>> => {
|
|
return request({
|
|
url: '/xg/classInfo/getByCounselorId/' + counselorId,
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 根据班主任ID查询班级信息列表
|
|
*/
|
|
export const getClassInfoByClassTeacher = (classTeacherId: number): AxiosPromise<R<ClassInfoVO[]>> => {
|
|
return request({
|
|
url: '/xg/classInfo/getByClassTeacherId/' + classTeacherId,
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 获取班级选项列表(用于下拉框)
|
|
*/
|
|
export const getClassOptions = (): AxiosPromise<R<ClassInfoVO[]>> => {
|
|
return request({
|
|
url: '/xg/classInfo/getClassOptions', // 修正路径:从 /options 改为 /getClassOptions
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 更新班级学生统计
|
|
*/
|
|
export const updateStudentCount = (classId: number): AxiosPromise<R<void>> => {
|
|
return request({
|
|
url: '/xg/classInfo/updateStudentCount/' + classId,
|
|
method: 'post' // 修正HTTP方法:从 put 改为 post
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 批量更新班级学生统计
|
|
*/
|
|
export const batchUpdateStudentCount = (classIds: number[]): AxiosPromise<R<void>> => {
|
|
return request({
|
|
url: '/xg/classInfo/batchUpdateStudentCount',
|
|
method: 'post', // 修正HTTP方法:从 put 改为 post
|
|
data: classIds
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 启用班级
|
|
*/
|
|
export const enableClass = (id: number): AxiosPromise<R<void>> => {
|
|
return request({
|
|
url: '/xg/classInfo/enable/' + id,
|
|
method: 'post' // 修正HTTP方法:从 put 改为 post
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 禁用班级
|
|
*/
|
|
export const disableClass = (id: number): AxiosPromise<R<void>> => {
|
|
return request({
|
|
url: '/xg/classInfo/disable/' + id,
|
|
method: 'post' // 修正HTTP方法:从 put 改为 post
|
|
})
|
|
}
|
|
|
|
// ================================
|
|
// 统计数据接口 - 新增
|
|
// ================================
|
|
|
|
/**
|
|
* 获取班级信息统计概览
|
|
*/
|
|
export const getClassStatistics = (): AxiosPromise<R<any>> => {
|
|
return request({
|
|
url: '/xg/classInfo/statistics',
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 统计各学院班级数量
|
|
*/
|
|
export const countClassByCollege = (): AxiosPromise<R<any[]>> => {
|
|
return request({
|
|
url: '/xg/classInfo/statistics/college',
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 统计各年级班级数量
|
|
*/
|
|
export const countClassByGrade = (): AxiosPromise<R<any[]>> => {
|
|
return request({
|
|
url: '/xg/classInfo/statistics/grade',
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 统计各专业班级数量
|
|
*/
|
|
export const countClassByMajor = (): AxiosPromise<R<any[]>> => {
|
|
return request({
|
|
url: '/xg/classInfo/statistics/major',
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 统计班级状态分布
|
|
*/
|
|
export const countClassByStatus = (): AxiosPromise<R<any[]>> => {
|
|
return request({
|
|
url: '/xg/classInfo/statistics/status',
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 获取学院选项
|
|
*/
|
|
export const getCollegeOptions = (): AxiosPromise<R<any[]>> => {
|
|
return request({
|
|
url: '/xg/studentInfo/options/colleges',
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 获取专业选项
|
|
*/
|
|
export const getMajorOptions = (collegeCode?: string): AxiosPromise<R<any[]>> => {
|
|
return request({
|
|
url: '/xg/studentInfo/options/majors',
|
|
method: 'get',
|
|
params: { collegeCode }
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 获取辅导员选项
|
|
*/
|
|
export const getCounselorOptions = (): AxiosPromise<R<any[]>> => {
|
|
return request({
|
|
url: '/xg/studentInfo/options/counselors',
|
|
method: 'get'
|
|
})
|
|
}
|
|
|
|
/**
|
|
* 获取班主任选项
|
|
*/
|
|
export const getClassTeacherOptions = (): AxiosPromise<R<any[]>> => {
|
|
return request({
|
|
url: '/xg/studentInfo/options/classTeachers',
|
|
method: 'get'
|
|
})
|
|
}
|