This commit is contained in:
李旭明 committed 2025-07-24 10:20:17 +08:00
commit 75201841cd
243 files changed
+89463 -2524

No files matched your search

+46
View File
@@ -0,0 +1,46 @@
import request from '@/utils/request';
import { ClassMsgForm, ClassMsgQuery, ClassMsgVO } from '../types';
import { AxiosPromise } from 'axios';
// 查询班级信息-新版列表
export function listClassMsg(query: ClassMsgQuery) {
return request({
url: '/classMsg/classMsg/list',
method: 'get',
params: query
});
}
// 查询班级信息-新版详细
export function getClassMsg(id: string | number) {
return request({
url: `/classMsg/classMsg/${id}`,
method: 'get'
});
}
// 新增班级信息-新版
export function addClassMsg(data: ClassMsgForm) {
return request({
url: '/classMsg/classMsg',
method: 'post',
data: data
});
}
// 修改班级信息-新版
export function updateClassMsg(data: ClassMsgForm) {
return request({
url: '/classMsg/classMsg',
method: 'put',
data: data
});
}
// 删除班级信息-新版
export function delClassMsg(id: string | number) {
return request({
url: `/classMsg/classMsg/${id}`,
method: 'delete'
});
}
+336
View File
@@ -0,0 +1,336 @@
export interface ClassMsgVO {
/**
* 主键ID(雪花ID)
*/
id: string | number;
/**
* 学院代码
*/
collegeId: string | number;
/**
* 专业代码
*/
majorId: string | number;
/**
* 班级名称
*/
className: string;
/**
* 班级类型:1-中级工 2-高级工 3-预备技师 4-技师 5-中高职一体
*/
classType: string;
/**
* 年级
*/
grade: string;
/**
* 入学年份
*/
enrollmentYear: number;
/**
* 毕业年份
*/
graduationYear: number;
/**
* 班级状态:1-正常,2-暂停,3-毕业,4-解散
*/
classStatus: string;
/**
* 备注信息
*/
remark: string;
}
export interface ClassMsgForm extends BaseEntity {
/**
* 主键ID(雪花ID)
*/
id?: string | number;
/**
* 学院代码
*/
collegeId?: string | number;
/**
* 学院名称
*/
collegeName?: string;
/**
* 专业代码
*/
majorId?: string | number;
/**
* 专业名称
*/
majorName?: string;
/**
* 班级代码
*/
classCode?: string;
/**
* 班级名称
*/
className?: string;
/**
* 班级类型:1-中级工 2-高级工 3-预备技师 4-技师 5-中高职一体
*/
classType?: string;
/**
* 年级
*/
grade?: string;
/**
* 入学年份
*/
enrollmentYear?: number;
/**
* 毕业年份
*/
graduationYear?: number;
/**
* 培养方式:全日制,在职,函授,夜大等
*/
trainingType?: string;
/**
* 学位类型:学士,硕士,博士,专科
*/
degreeType?: string;
/**
* 辅导员ID
*/
counselorId?: string | number;
/**
* 辅导员姓名
*/
counselorName?: string;
/**
* 班主任ID
*/
classTeacherId?: string | number;
/**
* 班主任姓名
*/
classTeacherName?: string;
/**
* 班级导师ID
*/
classAdvisorId?: string | number;
/**
* 班级导师姓名
*/
classAdvisorName?: string;
/**
* 班长ID
*/
classMonitorId?: string | number;
/**
* 班长姓名
*/
classMonitorName?: string;
/**
* 副班长ID
*/
deputyMonitorId?: string | number;
/**
* 副班长姓名
*/
deputyMonitorName?: string;
/**
* 班级状态:1-正常,2-暂停,3-毕业,4-解散
*/
classStatus?: string;
/**
* 是否已毕业:0-未毕业,1-已毕业
*/
isGraduation?: number;
/**
* 毕业日期
*/
graduationDate?: string;
/**
* 计划容量
*/
plannedCapacity?: number;
/**
* 当前学生人数
*/
currentStudentCount?: number;
/**
* 最大学生人数
*/
maxStudentCount?: number;
/**
* 男生人数
*/
maleCount?: number;
/**
* 女生人数
*/
femaleCount?: number;
/**
* 在籍人数
*/
activeCount?: number;
/**
* 转入人数
*/
transferInCount?: number;
/**
* 转出人数
*/
transferOutCount?: number;
/**
* 退学人数
*/
dropoutCount?: number;
/**
* 毕业人数
*/
graduateCount?: number;
/**
* 班级办公室位置
*/
officeLocation?: string;
/**
* 班级教室位置
*/
classLocation?: string;
/**
* 联系电话
*/
contactPhone?: string;
/**
* QQ群号
*/
qqGroup?: string;
/**
* 微信群
*/
wechatGroup?: string;
/**
* 班级邮箱
*/
email?: string;
/**
* 课程安排(JSON格式)
*/
classSchedule?: string;
/**
* 班级文化建设
*/
classCulture?: string;
/**
* 班级规章制度
*/
classRules?: string;
/**
* 班级描述
*/
classDescription?: string;
/**
* 最后统计更新时间
*/
lastCountUpdate?: string;
/**
* 备注信息
*/
remark?: string;
}
export interface ClassMsgQuery extends PageQuery {
/**
* 学院代码
*/
collegeId?: string | number;
/**
* 专业代码
*/
majorId?: string | number;
/**
* 班级名称
*/
className?: string;
/**
* 班级类型:1-中级工 2-高级工 3-预备技师 4-技师 5-中高职一体
*/
classType?: string;
/**
* 年级
*/
grade?: string;
/**
* 班级状态:1-正常,2-暂停,3-毕业,4-解散
*/
classStatus?: string;
/**
* 日期范围参数
*/
params?: any;
}
+26
View File
@@ -0,0 +1,26 @@
import request from '@/utils/request';
import { SysDeptVo } from './types';
// 获取学院列表
export function listColleges() {
return request({
url: '/xg/college/list',
method: 'get'
});
}
// 获取学院和专业树形结构
export function collegeTree() {
return request({
url: '/xg/college/tree',
method: 'get'
});
}
// 根据学院ID获取专业列表
export function listMajorsByCollegeId(collegeId: string | number) {
return request({
url: `/xg/college/majors/${collegeId}`,
method: 'get'
});
}
+160
View File
@@ -0,0 +1,160 @@
/** 部门视图对象 */
export interface SysDeptVo {
/** 部门id */
deptId: number;
/** 父部门id */
parentId: number;
/** 祖级列表 */
ancestors: string;
/** 部门名称 */
deptName: string;
/** 显示顺序 */
orderNum: number;
/** 负责人 */
leader: string;
/** 联系电话 */
phone: string;
/** 邮箱 */
email: string;
/** 部门状态:0正常,1停用 */
status: string;
/** 删除标志 */
delFlag: string;
/** 创建者 */
createBy: number;
/** 创建时间 */
createTime: string;
/** 更新者 */
updateBy: number;
/** 更新时间 */
updateTime: string;
/** 子部门 */
children: SysDeptVo[];
}
/** 班级查询参数 */
export interface ClassMsgQuery {
/** 学院代码 */
collegeId?: number | string;
/** 专业代码 */
majorId?: number | string;
/** 班级名称 */
className?: string;
/** 班级类型 */
classType?: string | number;
/** 年级 */
grade?: string;
/** 班级状态 */
classStatus?: string | number;
/** 分页大小 */
pageSize: number;
/** 当前页码 */
pageNum: number;
/** 其他参数 */
params: Record<string, any>;
}
/** 班级详细信息 */
export interface ClassMsgVO {
/** 主键ID */
id: string | number;
/** 学院代码 */
collegeId?: string | number;
/** 学院名称 */
collegeName?: string;
/** 专业代码 */
majorId?: string | number;
/** 专业名称 */
majorName?: string;
/** 班级代码 */
classCode?: string;
/** 班级名称 */
className?: string;
/** 班级类型 */
classType?: string | number;
/** 年级 */
grade?: string;
/** 入学年份 */
enrollmentYear?: string;
/** 毕业年份 */
graduationYear?: string;
/** 培养类型 */
trainingType?: string;
/** 学位类型 */
degreeType?: string;
/** 辅导员ID */
counselorId?: string | number;
/** 辅导员姓名 */
counselorName?: string;
/** 班主任ID */
classTeacherId?: string | number;
/** 班主任姓名 */
classTeacherName?: string;
/** 班级导师ID */
classAdvisorId?: string | number;
/** 班级导师姓名 */
classAdvisorName?: string;
/** 班长ID */
classMonitorId?: string | number;
/** 班长姓名 */
classMonitorName?: string;
/** 副班长ID */
deputyMonitorId?: string | number;
/** 副班长姓名 */
deputyMonitorName?: string;
/** 班级状态 */
classStatus?: string | number;
/** 是否已毕业 */
isGraduation?: string | number;
/** 毕业日期 */
graduationDate?: string;
/** 计划容量 */
plannedCapacity?: number;
/** 当前学生人数 */
currentStudentCount?: number;
/** 最大学生人数 */
maxStudentCount?: number;
/** 男生人数 */
maleCount?: number;
/** 女生人数 */
femaleCount?: number;
/** 在籍人数 */
activeCount?: number;
/** 转入人数 */
transferInCount?: number;
/** 转出人数 */
transferOutCount?: number;
/** 退学人数 */
dropoutCount?: number;
/** 毕业人数 */
graduateCount?: number;
/** 办公室位置 */
officeLocation?: string;
/** 教室位置 */
classLocation?: string;
/** 联系电话 */
contactPhone?: string;
/** QQ群号 */
qqGroup?: string;
/** 微信群 */
wechatGroup?: string;
/** 班级邮箱 */
email?: string;
/** 课程安排 */
classSchedule?: string;
/** 班级文化建设 */
classCulture?: string;
/** 班级规章制度 */
classRules?: string;
/** 班级描述 */
classDescription?: string;
/** 统计更新时间 */
lastCountUpdate?: string;
/** 备注 */
remark?: string;
}
/** 班级表单数据 */
export interface ClassMsgForm extends ClassMsgVO {
// 表单额外字段
}
-126
View File
@@ -1,126 +0,0 @@
export interface DormBuildingVO {
/**
* 主键ID
*/
id: string | number;
/**
* 宿舍楼编码
*/
buildingCode: string;
/**
* 宿舍楼名称
*/
buildingName: string;
/**
* 所属宿舍区ID
*/
areaId: string | number;
/**
* 所属校区ID
*/
campusId: string | number;
/**
* 宿舍楼类型(1男生楼 2女生楼 3混合楼)
*/
buildingType: string;
/**
* 宿舍楼描述
*/
buildingDescription: string;
/**
* 排序号
*/
sortOrder: number;
}
export interface DormBuildingForm extends BaseEntity {
/**
* 主键ID
*/
id?: string | number;
/**
* 宿舍楼编码
*/
buildingCode?: string;
/**
* 宿舍楼名称
*/
buildingName?: string;
/**
* 所属宿舍区ID
*/
areaId?: string | number;
/**
* 所属校区ID
*/
campusId?: string | number;
/**
* 宿舍楼类型(1男生楼 2女生楼 3混合楼)
*/
buildingType?: string;
/**
* 宿舍楼描述
*/
buildingDescription?: string;
/**
* 排序号
*/
sortOrder?: number;
}
export interface DormBuildingQuery extends PageQuery {
/**
* 宿舍楼编码
*/
buildingCode?: string;
/**
* 宿舍楼名称
*/
buildingName?: string;
/**
* 所属宿舍区ID
*/
areaId?: string | number;
/**
* 所属校区ID
*/
campusId?: string | number;
/**
* 宿舍楼类型(1男生楼 2女生楼 3混合楼)
*/
buildingType?: string;
/**
* 排序号
*/
sortOrder?: number;
/**
* 日期范围参数
*/
params?: any;
}
+39 -10
View File
@@ -1,6 +1,9 @@
import request from '@/utils/request'
import { AxiosPromise } from 'axios'
import { ClassInfoVO, ClassInfoQuery, ClassInfoForm, OptionData } from './classInfo/types'
import { getToken } from '@/utils/auth'
import { DeptTreeVO, DeptVO } from '@/api/system/dept/types'
import { treeselect as deptTreeselect, listDeptExcludeChild } from '@/api/system/dept'
// 通用类型定义
interface TableDataInfo<T> {
@@ -256,14 +259,34 @@ export const getCollegeOptions = (): AxiosPromise<R<any[]>> => {
}
/**
* 获取专业选项
* 从系统部门获取学院选项(二级学院)
*/
export const getMajorOptions = (collegeCode?: string): AxiosPromise<R<any[]>> => {
export const getDeptCollegeOptions = (): AxiosPromise<DeptTreeVO[]> => {
console.log('直接调用部门树API,避免treeselect参数问题');
return request({
url: '/xg/studentInfo/options/majors',
method: 'get',
params: { collegeCode }
})
url: '/system/dept/treeselect',
method: 'get'
});
}
/**
* 从系统部门获取专业选项(学院的下级部门)
*/
export const getDeptMajorOptions = (deptId: string | number): AxiosPromise<DeptVO[]> => {
// 确保deptId是有效的数字ID
if (!deptId || isNaN(Number(deptId))) {
console.error('Invalid deptId:', deptId);
return Promise.reject(new Error('无效的部门ID'));
}
// 直接调用接口,不使用封装的系统API
const numericDeptId = Number(deptId);
console.log('直接调用部门API,使用数字ID:', numericDeptId);
return request({
url: '/system/dept/list/exclude/' + numericDeptId,
method: 'get'
});
}
/**
@@ -277,11 +300,17 @@ export const getCounselorOptions = (): AxiosPromise<R<any[]>> => {
}
/**
* 获取班主任选项
* 获取班主任选项列表
*/
export const getClassTeacherOptions = (): AxiosPromise<R<any[]>> => {
export const getClassTeacherOptions = (): AxiosPromise<R<OptionData[]>> => {
console.log('调用班主任API: /xg/classInfo/teacherOptions')
return request({
url: '/xg/studentInfo/options/classTeachers',
method: 'get'
url: '/xg/classInfo/teacherOptions',
method: 'get',
headers: {
// 确保请求带有认证信息
'Authorization': 'Bearer ' + getToken(),
'clientid': import.meta.env.VITE_APP_CLIENT_ID
}
})
}
+9 -2
View File
@@ -1,5 +1,6 @@
import request from '@/utils/request'
import { AxiosPromise } from 'axios'
import { getToken } from '@/utils/auth'
// 学生信息数据类型
export interface StudentInfo {
@@ -398,9 +399,15 @@ export function getCounselorOptions(): AxiosPromise<OptionData[]> {
// 获取班主任选项
export function getClassTeacherOptions(): AxiosPromise<OptionData[]> {
console.log('调用班主任API: /xg/classInfo/teacherOptions')
return request({
url: '/xg/studentInfo/options/classTeachers',
method: 'get'
url: '/xg/classInfo/teacherOptions',
method: 'get',
headers: {
// 确保请求带有认证信息
'Authorization': 'Bearer ' + getToken(),
'clientid': import.meta.env.VITE_APP_CLIENT_ID
}
})
}
@@ -0,0 +1,92 @@
import request from '@/utils/request';
/**
* 班级班主任辅导员关联对象
*/
interface ClassTeacherCounselorRelBo {
id?: number | string;
classId?: number | string;
teacherId?: number | string;
teacherName?: string;
counselorId?: number | string;
counselorName?: string;
relationType?: number; // 1:班主任 2:辅导员
remark?: string;
}
/**
* 添加班级班主任辅导员关联
* @param data 班级班主任辅导员关联信息
* @returns 返回添加结果
*/
export function addClassTeacherCounselorRel(data: ClassTeacherCounselorRelBo) {
return request({
url: '/teacherCounselorRel/classTeacherCounselorRel',
method: 'post',
data: data
});
}
/**
* 修改班级班主任辅导员关联
* @param data 班级班主任辅导员关联信息
* @returns 返回修改结果
*/
export function updateClassTeacherCounselorRel(data: ClassTeacherCounselorRelBo) {
return request({
url: '/teacherCounselorRel/classTeacherCounselorRel',
method: 'put',
data: data
});
}
/**
* 查询班级班主任辅导员关联列表
* @param query 查询参数
* @returns 返回班级班主任辅导员关联列表
*/
export function listClassTeacherCounselorRel(query: any) {
return request({
url: '/teacherCounselorRel/classTeacherCounselorRel/list',
method: 'get',
params: query
});
}
/**
* 获取班级班主任辅导员关联详情
* @param id 关联ID
* @returns 返回班级班主任辅导员关联详情
*/
export function getClassTeacherCounselorRel(id: number | string) {
return request({
url: `/teacherCounselorRel/classTeacherCounselorRel/${id}`,
method: 'get'
});
}
/**
* 删除班级班主任辅导员关联
* @param ids 关联ID数组
* @returns 返回删除结果
*/
export function delClassTeacherCounselorRel(ids: number | string | (number | string)[]) {
return request({
url: `/teacherCounselorRel/classTeacherCounselorRel/${ids instanceof Array ? ids.join(',') : ids}`,
method: 'delete'
});
}
/**
* 导出班级班主任辅导员关联
* @param query 查询参数
* @returns 返回导出结果
*/
export function exportClassTeacherCounselorRel(query: any) {
return request({
url: '/teacherCounselorRel/classTeacherCounselorRel/export',
method: 'post',
params: query,
responseType: 'blob'
});
}
+3
View File
@@ -14,5 +14,8 @@ import request from '@/utils/request';
// export * from './scholarship' // 奖助管理
// export * from './activity' // 活动管理
// 导出学工用户模块API
export * from './sysUser'
// 临时导出一个空对象,防止编译错误
export default {};
+29
View File
@@ -0,0 +1,29 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
/**
* 用户信息对象
*/
export interface XgSysUser {
userId: number | string;
userName: string;
nickName: string;
email: string;
phonenumber: string;
sex: string;
status: string;
createTime: string;
updateTime: string;
deptId: number;
deptName: string;
}
/**
* 查询有效用户列表
*/
export function getActiveUserList(): AxiosPromise<XgSysUser[]> {
return request({
url: '/xg/sysUser/activeList',
method: 'get'
});
}
+63
View File
@@ -0,0 +1,63 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { DormBedVO, DormBedForm, DormBedQuery } from '@/api/xgss/dormBed/types';
/**
* 查询宿舍床位信息列表
* @param query
* @returns {*}
*/
export const listDormBed = (query?: DormBedQuery): AxiosPromise<DormBedVO[]> => {
return request({
url: '/dormbed/dormBed/list',
method: 'get',
params: query
});
};
/**
* 查询宿舍床位信息详细
* @param id
*/
export const getDormBed = (id: string | number): AxiosPromise<DormBedVO> => {
return request({
url: '/dormbed/dormBed/' + id,
method: 'get'
});
};
/**
* 新增宿舍床位信息
* @param data
*/
export const addDormBed = (data: DormBedForm) => {
return request({
url: '/dormbed/dormBed',
method: 'post',
data: data
});
};
/**
* 修改宿舍床位信息
* @param data
*/
export const updateDormBed = (data: DormBedForm) => {
return request({
url: '/dormbed/dormBed',
method: 'put',
data: data
});
};
/**
* 删除宿舍床位信息
* @param id
*/
export const delDormBed = (id: string | number | Array<string | number>) => {
return request({
url: '/dormbed/dormBed/' + id,
method: 'delete'
});
};
+66
View File
@@ -0,0 +1,66 @@
/**
* 宿舍床位信息查询参数
*/
export interface DormBedQuery {
/** 床位编号 */
bedCode?: string;
/** 床位名称 */
bedName?: string;
/** 所属房间ID */
roomId?: string | number;
/** 床位状态(0=空闲,1=已分配,2=维修中) */
bedStatus?: string;
/** 床位类型(1=下铺,2=上铺,3=中铺,4=独立床) */
bedType?: string;
}
/**
* 宿舍床位信息对象
*/
export interface DormBedVO {
/** 床位ID */
id: string | number;
/** 床位编号 */
bedCode: string;
/** 床位名称 */
bedName: string;
/** 所属房间ID */
roomId: string | number;
/** 床位状态(0=空闲,1=已分配,2=维修中) */
bedStatus: string;
/** 床位类型(1=下铺,2=上铺,3=中铺,4=独立床) */
bedType: string;
/** 备注 */
remark?: string;
/** 创建者 */
createBy: number;
/** 创建时间 */
createTime: Date;
/** 更新者 */
updateBy: number;
/** 更新时间 */
updateTime: Date;
}
/**
* 宿舍床位信息表单对象
*/
export interface DormBedForm {
/** 床位ID */
id: string | number;
/** 床位编号 */
bedCode: string;
/** 床位名称 */
bedName: string;
/** 所属房间ID */
roomId: string | number;
/** 床位状态(0=空闲,1=已分配,2=维修中) */
bedStatus: string;
/** 床位类型(1=下铺,2=上铺,3=中铺,4=独立床) */
bedType: string;
/** 备注 */
remark?: string;
}
+63
View File
@@ -0,0 +1,63 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { DormRoomVO, DormRoomForm, DormRoomQuery } from '@/api/xgss/dormRoom/types';
/**
* 查询宿舍房间信息列表
* @param query
* @returns {*}
*/
export const listDormRoom = (query?: DormRoomQuery): AxiosPromise<DormRoomVO[]> => {
return request({
url: '/xgss/dormRoom/list',
method: 'get',
params: query
});
};
/**
* 查询宿舍房间信息详细
* @param id
*/
export const getDormRoom = (id: string | number): AxiosPromise<DormRoomVO> => {
return request({
url: '/xgss/dormRoom/' + id,
method: 'get'
});
};
/**
* 新增宿舍房间信息
* @param data
*/
export const addDormRoom = (data: DormRoomForm) => {
return request({
url: '/xgss/dormRoom',
method: 'post',
data: data
});
};
/**
* 修改宿舍房间信息
* @param data
*/
export const updateDormRoom = (data: DormRoomForm) => {
return request({
url: '/xgss/dormRoom',
method: 'put',
data: data
});
};
/**
* 删除宿舍房间信息
* @param id
*/
export const delDormRoom = (id: string | number | Array<string | number>) => {
return request({
url: '/xgss/dormRoom/' + id,
method: 'delete'
});
};
+176
View File
@@ -0,0 +1,176 @@
export interface DormRoomVO {
/**
* 主键ID
*/
id: string | number;
/**
* 房间编号
*/
roomCode: string;
/**
* 房间名称
*/
roomName: string;
/**
* 所属宿舍楼ID
*/
buildingId: string | number;
/**
* 楼层
*/
floorNum: number;
/**
* 房间类型(1标准间 2 单人间 3 套间)
*/
roomType: string;
/**
* 实际床位数
*/
actualBeds: number;
/**
* 当前床位数
*/
currentBeds?: number;
/**
* 房间面积(平方米)
*/
roomArea: number;
/**
* 房间状态(0可用 1维修中 2停用)
*/
roomStatus: string;
/**
* 删除标志(0代表存在 1代表删除)
*/
deleted: string;
/**
* 备注
*/
remark: string;
}
export interface DormRoomForm extends BaseEntity {
/**
* 主键ID
*/
id?: string | number;
/**
* 房间编号
*/
roomCode?: string;
/**
* 房间名称
*/
roomName?: string;
/**
* 所属宿舍楼ID
*/
buildingId?: string | number;
/**
* 楼层
*/
floorNum?: number;
/**
* 房间类型(1标准间 2 单人间 3 套间)
*/
roomType?: string;
/**
* 实际床位数
*/
actualBeds?: number;
/**
* 房间面积(平方米)
*/
roomArea?: number;
/**
* 房间状态(0可用 1维修中 2停用)
*/
roomStatus?: string;
/**
* 删除标志(0代表存在 1代表删除)
*/
deleted?: string;
/**
* 备注
*/
remark?: string;
}
export interface DormRoomQuery extends PageQuery {
/**
* 房间编号
*/
roomCode?: string;
/**
* 房间名称
*/
roomName?: string;
/**
* 所属宿舍楼ID
*/
buildingId?: string | number;
/**
* 楼层
*/
floorNum?: number;
/**
* 房间类型(1标准间 2 单人间 3 套间)
*/
roomType?: string;
/**
* 实际床位数
*/
actualBeds?: number;
/**
* 房间面积(平方米)
*/
roomArea?: number;
/**
* 房间状态(0可用 1维修中 2停用)
*/
roomStatus?: string;
/**
* 删除标志(0代表存在 1代表删除)
*/
deleted?: string;
/**
* 日期范围参数
*/
params?: any;
}
@@ -61,3 +61,37 @@ export const delDormManager = (id: string | number | Array<string | number>) =>
method: 'delete'
});
};
/**
* 分配管理员数据范围
* @param managerId 管理员ID
* @param authType 授权类型(1全校级 2校区级 3宿舍区级 4楼栋级)
* @param authSourceIds 授权来源ID列表
*/
export const assignScope = (managerId: string | number, authType: number, authSourceIds: (string | number)[]) => {
return request({
url: '/glysqgx/dormManagerSource/assignScope',
method: 'post',
params: {
managerId,
authType
},
data: authSourceIds
});
};
/**
* 获取管理员授权范围名称
* @param managerId 管理员ID
* @param managerType 管理员类型
*/
export const getManagerScopeNames = (managerId: string | number, managerType: number) => {
return request({
url: '/glysqgx/dormManagerSource/getScopeNames',
method: 'get',
params: {
managerId,
managerType
}
});
};
@@ -49,6 +49,11 @@ export interface DormManagerVO {
*/
remark: string;
/**
* 授权范围名称(逗号分隔的字符串)
*/
scopeNames?: string;
}
export interface DormManagerForm extends BaseEntity {
@@ -1,6 +1,6 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { DormBuildingVO, DormBuildingForm, DormBuildingQuery } from '@/api/sslxx/dormBuilding/types';
import { DormBuildingVO, DormBuildingForm, DormBuildingQuery, BuildingTreeSelectVo } from '@/api/sslxx/dormBuilding/types';
/**
* 查询宿舍楼信息列表
@@ -83,3 +83,14 @@ export const listAreaTreeData = (campusId?: string | number): AxiosPromise<any>
params: { campusId }
});
};
/**
* 获取宿舍楼树形结构数据(校区-宿舍区-宿舍楼三级结构)
* 校区和宿舍区节点不可选,只有宿舍楼节点可以选择
*/
export const getBuildingTree = (): AxiosPromise<BuildingTreeSelectVo[]> => {
return request({
url: '/sslxx/dormBuilding/buildingTree',
method: 'get'
});
};
@@ -0,0 +1,50 @@
export interface DormBuildingVO {
id: string | number;
buildingCode: string;
buildingName: string;
areaId: string | number;
campusId: string | number;
buildingType: string;
buildingDescription: string;
sortOrder: number;
createTime: string;
createBy: string;
updateTime: string;
updateBy: string;
remark: string;
areaName?: string;
campusName?: string;
floors: number;
}
export interface DormBuildingForm extends Omit<DormBuildingVO, 'createTime' | 'createBy' | 'updateTime' | 'updateBy' | 'areaName' | 'campusName'> {
}
export interface DormBuildingQuery {
buildingCode?: string;
buildingName?: string;
areaId?: string | number;
campusId?: string | number;
buildingType?: string;
floors?: number;
params?: Record<string, any>;
}
/**
* 宿舍楼树形结构节点
*/
export interface BuildingTreeSelectVo {
id: number;
label: string;
nodeType: 'campus' | 'area' | 'building';
disabled: boolean;
children?: BuildingTreeSelectVo[];
createBy?: number;
createTime?: string;
updateBy?: number;
floors?: number;
updateTime?: string;
}
@@ -1,6 +1,6 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { DormAreaVO, DormAreaForm, DormAreaQuery } from '@/api/ssqxx/dormArea/types';
import { DormAreaVO, DormAreaForm, DormAreaQuery, TreeSelectVo } from '@/api/ssqxx/dormArea/types';
/**
* 查询宿舍区信息列表
@@ -61,3 +61,14 @@ export const delDormArea = (id: string | number | Array<string | number>) => {
method: 'delete'
});
};
/**
* 获取宿舍区树形结构数据
* 以校区为根节点,宿舍区为子节点的树形结构
*/
export const getAreaTree = (): AxiosPromise<TreeSelectVo[]> => {
return request({
url: '/ssqxx/dormArea/tree',
method: 'get'
});
};
@@ -87,5 +87,21 @@ export interface DormAreaQuery extends PageQuery {
params?: any;
}
/**
* 树形选择数据类型
*/
export interface TreeSelectVo {
/** 节点ID */
id: number;
/** 节点名称 */
label: string;
/** 节点类型(campus:校区, area:宿舍区) */
type: string;
/** 是否禁用选择 */
disabled: boolean;
/** 子节点 */
children?: TreeSelectVo[];
}
+264
View File
@@ -0,0 +1,264 @@
import request from '@/utils/request';
import { DormQuery, RoomForm, BedForm, DormTreeNode, RoomInfo, BedInfo } from './types';
// API前缀
const baseUrl = '/xsssfjgl';
/**
* 获取宿舍楼树形结构
*/
export function getDormTree() {
return request({
url: '/xgss/dormBuildingTree/list',
method: 'get'
});
}
/**
* 获取房间列表
* @param query 查询条件
* @returns 房间列表
*/
export function listRooms(query: DormQuery) {
return request({
url: baseUrl + '/room/list',
method: 'get',
params: query
});
}
/**
* 获取房间详情
* @param roomId 房间ID
* @returns 房间详情
*/
export function getRoom(roomId: string | number) {
return request({
url: baseUrl + '/room/' + roomId,
method: 'get'
});
}
/**
* 新增房间
* @param data 房间信息
* @returns 结果
*/
export function addRoom(data: RoomForm) {
return request({
url: baseUrl + '/room',
method: 'post',
data: data
});
}
/**
* 修改房间
* @param data 房间信息
* @returns 结果
*/
export function updateRoom(data: RoomForm) {
return request({
url: baseUrl + '/room',
method: 'put',
data: data
});
}
/**
* 删除房间
* @param roomIds 房间ID字符串
* @returns 结果
*/
export function delRoom(roomIds: string | number) {
return request({
url: baseUrl + '/room/' + roomIds,
method: 'delete'
});
}
/**
* 获取床位列表
* @param roomId 房间ID
* @returns 床位列表
*/
export function listBeds(roomId: string | number) {
return request({
url: baseUrl + '/bed/list',
method: 'get',
params: { roomId }
});
}
/**
* 新增床位
* @param data 床位信息
* @returns 结果
*/
export function addBed(data: BedForm) {
return request({
url: baseUrl + '/bed',
method: 'post',
data: data
});
}
/**
* 修改床位
* @param data 床位信息
* @returns 结果
*/
export function updateBed(data: BedForm) {
return request({
url: baseUrl + '/bed',
method: 'put',
data: data
});
}
/**
* 删除床位
* @param bedIds 床位ID字符串
* @returns 结果
*/
export function delBed(bedIds: string | number) {
return request({
url: baseUrl + '/bed/' + bedIds,
method: 'delete'
});
}
// 模拟数据 - 在API接口完成前使用
// 生成宿舍树形结构的模拟数据
export function getMockDormTree(): { data: DormTreeNode[] } {
const mockData: DormTreeNode[] = [
{
id: 1,
label: '东校区',
type: 'campus',
disabled: true,
children: [
{
id: 11,
label: '东区宿舍',
type: 'area',
disabled: true,
children: [
{
id: 111,
label: '东区1号楼',
type: 'building',
buildingFloors: 6,
gender: '1' // 男生楼
},
{
id: 112,
label: '东区2号楼',
type: 'building',
buildingFloors: 8,
gender: '2' // 女生楼
}
]
}
]
},
{
id: 2,
label: '西校区',
type: 'campus',
disabled: true,
children: [
{
id: 21,
label: '西区宿舍',
type: 'area',
disabled: true,
children: [
{
id: 211,
label: '西区1号楼',
type: 'building',
buildingFloors: 7,
gender: '2' // 女生楼
},
{
id: 212,
label: '西区2号楼',
type: 'building',
buildingFloors: 5,
gender: '1' // 男生楼
}
]
}
]
}
];
return { data: mockData };
}
// 生成房间数据的模拟数据
export function getMockRooms(buildingId: string | number, floorNumber?: number): { rows: RoomInfo[], total: number } {
const rooms: RoomInfo[] = [];
// 根据buildingId判断楼层数
let floors = 6;
if (buildingId === 112) floors = 8;
else if (buildingId === 211) floors = 7;
else if (buildingId === 212) floors = 5;
// 如果指定了楼层,只生成该楼层的数据
const startFloor = floorNumber || 1;
const endFloor = floorNumber || floors;
for (let floor = startFloor; floor <= endFloor; floor++) {
for (let i = 1; i <= 10; i++) {
const roomNumber = `${floor}${i.toString().padStart(2, '0')}`;
rooms.push({
roomId: `${buildingId}${roomNumber}`,
roomName: roomNumber,
floorNumber: floor,
buildingId: buildingId,
capacity: 4,
used: Math.floor(Math.random() * 5),
roomType: '标准间',
status: Math.random() > 0.9 ? '1' : '0',
remark: '',
createBy: 'admin',
createTime: '2023-01-01 00:00:00',
updateBy: 'admin',
updateTime: '2023-01-01 00:00:00'
});
}
}
return {
rows: rooms.filter(room => !floorNumber || room.floorNumber === floorNumber),
total: rooms.length
};
}
// 生成床位数据的模拟数据
export function getMockBeds(roomId: string | number): { data: BedInfo[] } {
const beds: BedInfo[] = [];
const capacity = 4;
for (let i = 1; i <= capacity; i++) {
const status = Math.random() > 0.6 ? '1' : '0';
beds.push({
bedId: `${roomId}-${i}`,
bedName: `${i}号床`,
roomId: roomId,
status: status,
studentId: status === '1' ? 10000 + Math.floor(Math.random() * 5000) : undefined,
studentName: status === '1' ? `学生${Math.floor(Math.random() * 1000)}` : undefined,
remark: '',
createBy: 'admin',
createTime: '2023-01-01 00:00:00',
updateBy: 'admin',
updateTime: '2023-01-01 00:00:00'
});
}
return { data: beds };
}
+84
View File
@@ -0,0 +1,84 @@
// 基础字段类型
export interface BaseEntity {
createBy: number | string;
createTime: string;
updateBy: number | string;
updateTime: string;
}
// 分页查询参数
export interface PageQuery {
pageNum: number;
pageSize: number;
}
// 树形数据节点类型
export interface DormTreeNode {
id: string | number;
label: string;
children?: DormTreeNode[];
type: 'campus' | 'area' | 'building'; // 节点类型:校区、宿舍区、宿舍楼
disabled?: boolean; // 是否禁用选择
buildingFloors?: number; // 宿舍楼层数
gender?: string; // 宿舍楼性别: 1-男生楼, 2-女生楼
}
// 房间信息
export interface RoomInfo extends BaseEntity {
roomId: string | number;
roomCode: string;
roomName: string;
floorNum: number;
buildingId: string | number;
capacity: number;
used: number;
roomArea: number;
roomType: string;
status: string; // 0-正常 1-维修中 2-停用
remark: string;
}
// 床位信息
export interface BedInfo extends BaseEntity {
bedId: string | number;
bedName: string;
roomId: string | number;
status: string; // 0-空闲 1-已分配 2-维修中
studentId?: string | number;
studentName?: string;
remark: string;
}
// 查询参数
export interface DormQuery extends PageQuery {
buildingId?: string | number;
roomName?: string;
floorNum?: number;
status?: string;
}
// 房间表单
export interface RoomForm {
roomId?: string | number;
roomCode: string;
roomName: string;
floorNum: number;
buildingId: string | number;
capacity: number;
roomArea: number;
roomType: string;
status: string;
remark?: string;
}
// 床位表单
export interface BedForm {
id?: string | number;
bedId?: string | number;
bedCode: string;
bedName: string;
roomId: string | number;
bedType: string;
bedStatus: string;
remark?: string;
}
File renamed without changes.
+18 -1
View File
@@ -50,6 +50,23 @@ export const updateEnrollmentInfo = (data: EnrollmentInfoForm) => {
});
};
/**
* 更新招生信息状态并同步到流程管理
* @param id 招生信息ID(单个ID或ID数组)
* @param status 新状态
*/
export const updateEnrollmentStatus = (id: string | number | Array<string | number>, status: string) => {
const data = Array.isArray(id)
? { ids: id, status } // 批量更新
: { id, status }; // 单个更新
return request({
url: '/zsjy/enrollment/info/updateStatus',
method: 'post',
data
});
};
/**
* 删除招生报名信息
* @param id
@@ -121,4 +138,4 @@ export const queryMyEnrollmentStatus = (params: { idCard?: string, examNumber?:
method: 'get',
params: params
});
};
};
+104 -64
View File
@@ -295,7 +295,16 @@ export interface EnrollmentProcessQuery extends PageQuery {
// 查询录取流程状态列表
export const listEnrollmentProcess = (query: EnrollmentProcessQuery): AxiosPromise<EnrollmentProcessVO[]> => {
return request({
url: '/zsjy/enrollmentProcess/list',
url: '/zsjy/enrollment/process/list',
method: 'get',
params: query
})
}
// 查询我的待审核列表
export const listMyAuditProcess = (query: EnrollmentProcessQuery): AxiosPromise<EnrollmentProcessVO[]> => {
return request({
url: '/zsjy/enrollment/process/myAudit',
method: 'get',
params: query
})
@@ -304,7 +313,7 @@ export const listEnrollmentProcess = (query: EnrollmentProcessQuery): AxiosPromi
// 查询录取流程状态详细
export const getEnrollmentProcess = (id: string | number): AxiosPromise<EnrollmentProcessVO> => {
return request({
url: '/zsjy/enrollmentProcess/' + id,
url: '/zsjy/enrollment/process/' + id,
method: 'get'
})
}
@@ -312,16 +321,34 @@ export const getEnrollmentProcess = (id: string | number): AxiosPromise<Enrollme
// 新增录取流程状态
export const addEnrollmentProcess = (data: EnrollmentProcessForm) => {
return request({
url: '/zsjy/enrollmentProcess',
url: '/zsjy/enrollment/process',
method: 'post',
data: data
})
}
// 从报名信息创建流程
export const createProcessFromEnrollment = (enrollmentId: number) => {
return request({
url: '/zsjy/enrollment/process/createFromEnrollment',
method: 'post',
params: { enrollmentId }
})
}
// 同步流程状态
export const syncProcessStatus = (id: string | number) => {
return request({
url: '/zsjy/enrollment/process/syncStatus',
method: 'post',
params: { id }
})
}
// 修改录取流程状态
export const updateEnrollmentProcess = (data: EnrollmentProcessForm) => {
return request({
url: '/zsjy/enrollmentProcess',
url: '/zsjy/enrollment/process',
method: 'put',
data: data
})
@@ -330,7 +357,7 @@ export const updateEnrollmentProcess = (data: EnrollmentProcessForm) => {
// 删除录取流程状态
export const delEnrollmentProcess = (id: string | number | Array<string | number>) => {
return request({
url: '/zsjy/enrollmentProcess/' + id,
url: '/zsjy/enrollment/process/' + id,
method: 'delete'
})
}
@@ -338,117 +365,130 @@ export const delEnrollmentProcess = (id: string | number | Array<string | number
// 根据报名信息ID查询流程状态
export const getProcessByEnrollmentId = (enrollmentId: number): AxiosPromise<EnrollmentProcessVO> => {
return request({
url: '/zsjy/enrollmentProcess/enrollment/' + enrollmentId,
url: '/zsjy/enrollment/process/enrollment/' + enrollmentId,
method: 'get'
})
}
// 查询我的待处理流程
export const getPendingProcessList = (): AxiosPromise<EnrollmentProcessVO[]> => {
// 查询待处理的流程列表
export const getPendingProcessList = (query: EnrollmentProcessQuery): AxiosPromise<EnrollmentProcessVO[]> => {
return request({
url: '/zsjy/enrollmentProcess/pending',
method: 'get'
})
}
// 根据流程状态查询流程列表
export const getProcessByStatus = (status: string): AxiosPromise<EnrollmentProcessVO[]> => {
return request({
url: '/zsjy/enrollmentProcess/status/' + status,
method: 'get'
})
}
// 统计各状态的流程数量
export const getProcessStatistics = (): AxiosPromise<any[]> => {
return request({
url: '/zsjy/enrollmentProcess/statistics',
method: 'get'
})
}
// 根据关键词搜索流程
export const searchProcess = (keyword: string): AxiosPromise<EnrollmentProcessVO[]> => {
return request({
url: '/zsjy/enrollmentProcess/search',
url: '/zsjy/enrollment/process/pending',
method: 'get',
params: { keyword }
params: query
})
}
// 根据状态查询流程列表
export const getProcessListByStatus = (status: string, query: EnrollmentProcessQuery): AxiosPromise<EnrollmentProcessVO[]> => {
return request({
url: '/zsjy/enrollment/process/status/' + status,
method: 'get',
params: query
})
}
// 获取流程统计数据
export const getProcessStatistics = (): AxiosPromise<any> => {
return request({
url: '/zsjy/enrollment/process/statistics',
method: 'get'
})
}
// 搜索流程
export const searchProcess = (keyword: string, query: EnrollmentProcessQuery): AxiosPromise<EnrollmentProcessVO[]> => {
return request({
url: '/zsjy/enrollment/process/search',
method: 'get',
params: { keyword, ...query }
})
}
// 信息审核
export const infoAudit = (data: { id: number; auditResult: string; auditOpinion?: string }) => {
export const infoAudit = (data: {
processId: number;
auditResult: string;
auditOpinion?: string;
}) => {
return request({
url: '/zsjy/enrollmentProcess/infoAudit',
url: '/zsjy/enrollment/process/infoAudit',
method: 'post',
data: data
params: data
})
}
// 录取处理
export const admissionProcess = (data: {
id: number;
processResult: string;
processOpinion?: string;
noticeNumber?: string
export const admissionProcess = (data: {
processId: number;
admissionResult: string;
admissionOpinion?: string;
noticeNumber?: string;
}) => {
return request({
url: '/zsjy/enrollmentProcess/admissionProcess',
url: '/zsjy/enrollment/process/admissionProcess',
method: 'post',
data: data
params: data
})
}
// 缴费确认
export const confirmPayment = (id: number) => {
// 确认缴费
export const confirmPayment = (processId: number) => {
return request({
url: '/zsjy/enrollmentProcess/confirmPayment',
url: '/zsjy/enrollment/process/confirmPayment',
method: 'post',
data: { id }
params: { processId }
})
}
// 最终审核
export const finalAudit = (data: { id: number; auditResult: string; auditOpinion?: string }) => {
export const finalAudit = (data: {
processId: number;
finalResult: string;
finalOpinion?: string;
}) => {
return request({
url: '/zsjy/enrollmentProcess/finalAudit',
url: '/zsjy/enrollment/process/finalConfirm',
method: 'post',
data: data
params: data
})
}
// 完成录取
export const completeEnrollment = (id: number) => {
// 完成流程
export const completeProcess = (processId: number) => {
return request({
url: '/zsjy/enrollmentProcess/complete',
url: '/zsjy/enrollment/process/complete',
method: 'post',
data: { id }
params: { processId }
})
}
// 驳回流程
export const rejectProcess = (data: { id: number; rejectReason: string }) => {
export const rejectProcess = (data: {
processId: number;
rejectReason: string;
}) => {
return request({
url: '/zsjy/enrollmentProcess/reject',
url: '/zsjy/enrollment/process/reject',
method: 'post',
data: data
params: data
})
}
// 重置流程状态
export const resetProcess = (id: number) => {
// 重置流程
export const resetProcess = (processId: number) => {
return request({
url: '/zsjy/enrollmentProcess/reset',
url: '/zsjy/enrollment/process/reset',
method: 'post',
data: { id }
params: { processId }
})
}
// 导出录取流程状态
export const exportEnrollmentProcess = (query: EnrollmentProcessQuery) => {
return request({
url: '/zsjy/enrollmentProcess/export',
url: '/zsjy/enrollment/process/export',
method: 'post',
data: query
})
}
}
+78
View File
@@ -0,0 +1,78 @@
import request from '@/utils/request';
/**
* 获取统计概览数据
*/
export function getStatisticsOverview() {
return request({
url: '/dev-api/zsjy/statistics/overview',
method: 'get'
});
}
/**
* 获取专业分布统计
*/
export function getMajorDistribution() {
return request({
url: '/dev-api/zsjy/statistics/major',
method: 'get'
});
}
/**
* 获取地区分布统计
*/
export function getRegionDistribution() {
return request({
url: '/dev-api/zsjy/statistics/region',
method: 'get'
});
}
/**
* 获取性别比例统计
*/
export function getGenderRatio() {
return request({
url: '/dev-api/zsjy/statistics/gender',
method: 'get'
});
}
/**
* 获取报名趋势统计
* @param {number} days 天数,默认为7天
*/
export function getEnrollmentTrend(days?: number) {
return request({
url: '/dev-api/zsjy/statistics/trend',
method: 'get',
params: { days }
});
}
/**
* 获取状态分布统计
*/
export function getStatusDistribution() {
return request({
url: '/dev-api/zsjy/statistics/status',
method: 'get'
});
}
// 导出接口类型定义
export interface StatisticsOverview {
totalEnrollments: number;
todayEnrollments: number;
paidCount: number;
paymentRate: string;
admittedCount: number;
admissionRate: string;
majorDistribution: Array<{[key: string]: any}>;
regionDistribution: Array<{[key: string]: any}>;
genderRatio: {[key: string]: number};
weeklyTrend: Array<{[key: string]: any}>;
statusDistribution: {[key: string]: number};
}