合并冲突解决:学生消息管理和招生就业模块更新

This commit is contained in:
李旭明 committed 2025-08-04 11:03:32 +08:00
commit 593aa01a70
132 files changed
+158752 -1005

No files matched your search

+65
View File
@@ -0,0 +1,65 @@
import request from '@/utils/request';
// 获取管理员列表
export function getAdminList(params?: any) {
// 根据不同类型构造不同参数
return request({
url: '/studentMsg/admin/list',
method: 'get',
params
});
}
// 新增管理员
export function addAdmin(data: any) {
return request({
url: '/studentMsg/admin',
method: 'post',
data
});
}
// 更新管理员
export function updateAdmin(data: any) {
return request({
url: '/studentMsg/admin',
method: 'put',
data
});
}
// 删除管理员
export function deleteAdmin(id: number | string) {
return request({
url: `/studentMsg/admin/${id}`,
method: 'delete'
});
}
// 分配范围
export function assignScope(params: any, data: any) {
return request({
url: '/studentMsg/admin/assignScope',
method: 'post',
params,
data
});
}
// 获取范围名称
export function getScopeNames(params: any) {
return request({
url: '/studentMsg/admin/getScopeNames',
method: 'get',
params
});
}
// 获取可分配的范围
export function getScopeOptions(type: string) {
return request({
url: '/studentMsg/admin/getScopeOptions',
method: 'get',
params: { type }
});
}
+424
View File
@@ -0,0 +1,424 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { StudentQuery, StudentVO, StudentForm, XgDeptTreeVO, R, TableDataInfo } from './types';
/**
* 查询部门下拉树结构
* @param deptId 部门ID
*/
export const XgDeptTreeSelect = (belongDeptId?: number): AxiosPromise<XgDeptTreeVO[]> => {
// 实际项目中连接后端接口
return request({
url: '/system/user/deptTree',
method: 'get',
params: {
belongDeptId
}
});
// // 模拟数据,直接返回与页面组件期望格式一致的数据
// return Promise.resolve({
// data: mockDeptTree,
// status: 200,
// statusText: 'OK',
// headers: {},
// config: {} as any
// }) as any;
};
// 查询学生列表
export function listStudent(query?: StudentQuery): AxiosPromise<R<TableDataInfo<StudentVO[]>>> {
// 实际使用时连接后端接口
// return request({
// url: '/studentMsg/student/list',
// method: 'get',
// params: query
// });
// 模拟数据
return Promise.resolve({
data: {
code: 200,
msg: 'success',
data: {
total: mockStudentData.length,
rows: mockStudentData
}
}
} as any);
}
// 查询学生详细
export function getStudent(studentId?: string | number): AxiosPromise<R<{
student: StudentVO;
majors: any[];
classes: any[];
}>> {
if (studentId) {
// 实际使用时连接后端接口
// return request({
// url: '/studentMsg/student/' + studentId,
// method: 'get'
// });
// 模拟数据
const student = mockStudentData.find(item => item.studentId === studentId);
return Promise.resolve({
data: {
code: 200,
msg: 'success',
data: {
student: student || {},
majors: mockMajors,
classes: mockClasses
}
}
} as any);
} else {
// 新增时返回初始空对象和选项数据
return Promise.resolve({
data: {
code: 200,
msg: 'success',
data: {
student: {},
majors: mockMajors,
classes: mockClasses
}
}
} as any);
}
}
// 新增学生
export function addStudent(data: StudentForm): AxiosPromise<R<any>> {
// 实际使用时连接后端接口
// return request({
// url: '/studentMsg/student',
// method: 'post',
// data: data
// });
// 模拟数据
return Promise.resolve({
data: {
code: 200,
msg: '添加成功'
}
} as any);
}
// 修改学生
export function updateStudent(data: StudentForm): AxiosPromise<R<any>> {
// 实际使用时连接后端接口
// return request({
// url: '/studentMsg/student',
// method: 'put',
// data: data
// });
// 模拟数据
return Promise.resolve({
data: {
code: 200,
msg: '修改成功'
}
} as any);
}
// 删除学生
export function delStudent(studentId: string | number | Array<string | number>): AxiosPromise<R<any>> {
// 实际使用时连接后端接口
// return request({
// url: '/studentMsg/student/' + studentId,
// method: 'delete'
// });
// 模拟数据
return Promise.resolve({
data: {
code: 200,
msg: '删除成功'
}
} as any);
}
// 查询院系树结构
export function deptTreeSelect(): AxiosPromise<R<any>> {
// 实际使用时连接后端接口
// return request({
// url: '/studentMsg/dept/treeselect',
// method: 'get'
// });
// 模拟数据
return Promise.resolve({
data: {
code: 200,
msg: 'success',
data: mockDeptTree
}
} as any);
}
// 导出学生
export function exportStudent(query?: StudentQuery): AxiosPromise<any> {
// 实际使用时连接后端接口
// return request({
// url: '/studentMsg/student/export',
// method: 'get',
// params: query
// });
// 模拟数据
return Promise.resolve({
data: mockStudentData,
status: 200,
statusText: 'OK',
headers: {},
config: {} as any
}) as any;
}
// 学生状态修改
export function changeStudentStatus(studentId: string | number, status: string): AxiosPromise<R<any>> {
// 实际使用时连接后端接口
// return request({
// url: '/studentMsg/student/changeStatus',
// method: 'put',
// data: {
// studentId,
// status
// }
// });
// 模拟数据
return Promise.resolve({
data: {
code: 200,
msg: '状态修改成功'
}
} as any);
}
// 模拟数据 - 学生列表
const mockStudentData: StudentVO[] = [
{
studentId: 1,
studentNo: '202001001',
studentName: '张三',
nickName: '小张',
sex: '0',
age: 20,
phonenumber: '13800138001',
email: 'zhangsan@example.com',
idCard: '110101200101011234',
deptId: 105,
deptName: '计算机科学与技术系',
majorId: 1,
majorName: '计算机科学与技术',
classId: 101,
className: '计算机2001班',
address: '北京市海淀区',
status: '0',
createTime: '2023-01-01 10:00:00',
remark: ''
},
{
studentId: 2,
studentNo: '202001002',
studentName: '李四',
nickName: '小李',
sex: '0',
age: 21,
phonenumber: '13800138002',
email: 'lisi@example.com',
idCard: '110101200001011235',
deptId: 105,
deptName: '计算机科学与技术系',
majorId: 1,
majorName: '计算机科学与技术',
classId: 101,
className: '计算机2001班',
address: '上海市浦东新区',
status: '0',
createTime: '2023-01-01 10:10:00',
remark: ''
},
{
studentId: 3,
studentNo: '202001003',
studentName: '王五',
nickName: '小王',
sex: '0',
age: 19,
phonenumber: '13800138003',
email: 'wangwu@example.com',
idCard: '110101200201011236',
deptId: 106,
deptName: '软件工程系',
majorId: 2,
majorName: '软件工程',
classId: 201,
className: '软工2001班',
address: '广州市天河区',
status: '0',
createTime: '2023-01-02 09:00:00',
remark: ''
},
{
studentId: 4,
studentNo: '202001004',
studentName: '赵六',
nickName: '小赵',
sex: '1',
age: 20,
phonenumber: '13800138004',
email: 'zhaoliu@example.com',
idCard: '110101200101011237',
deptId: 106,
deptName: '软件工程系',
majorId: 2,
majorName: '软件工程',
classId: 201,
className: '软工2001班',
address: '深圳市南山区',
status: '0',
createTime: '2023-01-02 10:30:00',
remark: ''
},
{
studentId: 5,
studentNo: '202001005',
studentName: '钱七',
nickName: '小钱',
sex: '1',
age: 21,
phonenumber: '13800138005',
email: 'qianqi@example.com',
idCard: '110101200001011238',
deptId: 107,
deptName: '人工智能系',
majorId: 3,
majorName: '人工智能',
classId: 301,
className: '人工智能2001班',
address: '杭州市西湖区',
status: '1', // 停用状态
createTime: '2023-01-03 11:20:00',
remark: '休学中'
}
];
// 模拟数据 - 院系树
const mockDeptTree = [
{
id: 100,
label: '信息学院',
children: [
{
id: 105,
label: '计算机科学与技术系',
children: []
},
{
id: 106,
label: '软件工程系',
children: []
},
{
id: 107,
label: '人工智能系',
children: []
}
]
},
{
id: 200,
label: '经济管理学院',
children: [
{
id: 205,
label: '市场营销系',
children: []
},
{
id: 206,
label: '财务管理系',
children: []
}
]
}
];
// 模拟数据 - 专业
const mockMajors = [
{
majorId: 1,
majorName: '计算机科学与技术',
deptId: 105
},
{
majorId: 2,
majorName: '软件工程',
deptId: 106
},
{
majorId: 3,
majorName: '人工智能',
deptId: 107
},
{
majorId: 4,
majorName: '市场营销',
deptId: 205
},
{
majorId: 5,
majorName: '财务管理',
deptId: 206
}
];
// 模拟数据 - 班级
const mockClasses = [
{
classId: 101,
className: '计算机2001班',
majorId: 1
},
{
classId: 102,
className: '计算机2002班',
majorId: 1
},
{
classId: 201,
className: '软工2001班',
majorId: 2
},
{
classId: 202,
className: '软工2002班',
majorId: 2
},
{
classId: 301,
className: '人工智能2001班',
majorId: 3
},
{
classId: 401,
className: '市场营销2001班',
majorId: 4
},
{
classId: 501,
className: '财务管理2001班',
majorId: 5
}
];
export default { listStudent, getStudent, addStudent, updateStudent, delStudent, deptTreeSelect, exportStudent, changeStudentStatus, XgDeptTreeSelect };
@@ -0,0 +1,63 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { StudentMsgVO, StudentMsgForm, StudentMsgQuery } from '@/api/studentMsg/studentMsg/types';
/**
* 查询学生信息列表
* @param query
* @returns {*}
*/
export const listStudentMsg = (query?: StudentMsgQuery): AxiosPromise<StudentMsgVO[]> => {
return request({
url: '/studentMsg/studentMsg/list',
method: 'get',
params: query
});
};
/**
* 查询学生信息详细
* @param id
*/
export const getStudentMsg = (id: string | number): AxiosPromise<StudentMsgVO> => {
return request({
url: '/studentMsg/studentMsg/' + id,
method: 'get'
});
};
/**
* 新增学生信息
* @param data
*/
export const addStudentMsg = (data: StudentMsgForm) => {
return request({
url: '/studentMsg/studentMsg',
method: 'post',
data: data
});
};
/**
* 修改学生信息
* @param data
*/
export const updateStudentMsg = (data: StudentMsgForm) => {
return request({
url: '/studentMsg/studentMsg',
method: 'put',
data: data
});
};
/**
* 删除学生信息
* @param id
*/
export const delStudentMsg = (id: string | number | Array<string | number>) => {
return request({
url: '/studentMsg/studentMsg/' + id,
method: 'delete'
});
};
File diff suppressed because it is too large. Load diff
+80
View File
@@ -0,0 +1,80 @@
/**
* 部门树结构
*/
export interface XgDeptTreeVO extends BaseEntity {
id: number | string;
label: string;
parentId: number | string;
weight: number;
children: XgDeptTreeVO[];
disabled: boolean;
}
// 学生查询参数
export interface StudentQuery {
pageNum: number;
pageSize: number;
studentName?: string;
studentNo?: string;
phonenumber?: string;
status?: string;
deptId?: number;
}
// 学生视图对象
export interface StudentVO {
studentId: number | string;
studentNo: string;
studentName: string;
nickName?: string;
sex?: string;
age?: number;
phonenumber?: string;
email?: string;
idCard?: string;
deptId?: number;
deptName?: string;
majorId?: number;
majorName?: string;
classId?: number;
className?: string;
address?: string;
status?: string;
createBy?: number;
createTime?: string;
updateBy?: number;
updateTime?: string;
remark?: string;
}
// 学生表单对象
export interface StudentForm {
studentId?: number | string;
deptId?: number;
studentNo: string;
studentName: string;
nickName?: string;
password?: string;
phonenumber?: string;
email?: string;
idCard?: string;
sex?: string;
status?: string;
majorId?: number;
classId?: number;
address?: string;
remark?: string;
}
// 统一响应类型
export interface R<T> {
code: number;
msg: string;
data: T;
}
// 表格数据信息类型
export interface TableDataInfo<T> {
total: number;
rows: T;
}
+31 -1
View File
@@ -149,6 +149,16 @@ export interface EnrollmentInfoVO {
*/
qrCodeSource: string;
/**
* 学院名称
*/
collegeName: string;
/**
* 学院代码
*/
collegeId: string;
/**
* 创建者
*/
@@ -320,6 +330,16 @@ export interface EnrollmentInfoForm extends BaseEntity {
* 二维码来源标识
*/
qrCodeSource?: string;
/**
* 学院名称
*/
collegeName?: string;
/**
* 学院代码
*/
collegeId?: string;
}
export interface EnrollmentInfoQuery extends PageQuery {
@@ -368,8 +388,18 @@ export interface EnrollmentInfoQuery extends PageQuery {
*/
examRegion?: string;
/**
* 学院代码
*/
collegeId?: string;
/**
* 学院名称
*/
collegeName?: string;
/**
* 报名时间范围
*/
params?: any;
}
}
+70
View File
@@ -151,6 +151,76 @@ export interface EnrollmentProcessVO {
* 更新时间
*/
updateTime: string
/**
* 性别(M-男 F-女)
*/
gender?: string
/**
* 地区/省份
*/
province?: string
/**
* 学院名称(驼峰命名)
*/
collegeName?: string
/**
* 学院代码(驼峰命名)
*/
collegeId?: string
/**
* 学院名称(下划线命名)
*/
college_name?: string
/**
* 学院代码(下划线命名)
*/
college_id?: string
/**
* 学院名称(拼写变体 - collage)
*/
collage_name?: string
/**
* 学院代码(拼写变体 - collage)
*/
collage_id?: string
/**
* 专业名称(驼峰命名)
*/
majorName?: string
/**
* 专业代码(驼峰命名)
*/
majorCode?: string
/**
* 专业名称(下划线命名)
*/
major_name?: string
/**
* 专业代码(下划线命名)
*/
major_code?: string
/**
* 报考专业(来自报名信息表)
*/
appliedMajor?: string
/**
* 关联的报名信息对象
*/
enrollmentInfo?: any
}
export interface EnrollmentProcessForm extends BaseEntity {
+129
View File
@@ -0,0 +1,129 @@
import request from '@/utils/request'
import type { PageQuery } from '@/types/page'
import type { EnrollmentProcessVO } from './enrollmentProcess'
/**
* 查询招生录取统计列表
* @param query 查询参数
* @returns 招生录取统计列表
*/
export function listEnrollmentStatistics(query: PageQuery) {
return request({
url: '/zsjy/enrollment/statistics/list',
method: 'get',
params: query
})
}
/**
* 导出招生录取统计列表
* @param query 查询参数
*/
export function exportEnrollmentStatistics(query: PageQuery) {
return request({
url: '/zsjy/enrollment/statistics/export',
method: 'post',
params: query,
responseType: 'blob'
})
}
/**
* 获取招生录取统计详细信息
* @param id 统计ID
* @returns 招生录取统计详细信息
*/
export function getEnrollmentStatistics(id: string | number) {
return request({
url: `/zsjy/enrollment/statistics/${id}`,
method: 'get'
})
}
/**
* 查询招生录取统计图表数据
* @returns 图表数据
*/
export function getEnrollmentStatisticsChartData() {
return request({
url: '/zsjy/enrollment/statistics/chart',
method: 'get'
})
}
/**
* 查询招生录取统计概览数据
* @returns 概览数据
*/
export function getEnrollmentStatisticsOverview() {
return request({
url: '/zsjy/enrollment/statistics/overview',
method: 'get'
})
}
/**
* 查询招生录取统计按专业分布数据
* @returns 专业分布数据
*/
export function getEnrollmentStatisticsByMajor() {
return request({
url: '/zsjy/enrollment/statistics/major',
method: 'get'
})
}
/**
* 查询招生录取统计按学院分布数据
* @returns 学院分布数据
*/
export function getEnrollmentStatisticsByCollege() {
return request({
url: '/zsjy/enrollment/statistics/college',
method: 'get'
})
}
/**
* 查询招生录取统计按地区分布数据
* @returns 地区分布数据
*/
export function getEnrollmentStatisticsByRegion() {
return request({
url: '/zsjy/enrollment/statistics/region',
method: 'get'
})
}
/**
* 查询招生录取统计按性别分布数据
* @returns 性别分布数据
*/
export function getEnrollmentStatisticsByGender() {
return request({
url: '/zsjy/enrollment/statistics/gender',
method: 'get'
})
}
/**
* 查询招生录取统计按缴费状态分布数据
* @returns 缴费状态分布数据
*/
export function getEnrollmentStatisticsByPayment() {
return request({
url: '/zsjy/enrollment/statistics/payment',
method: 'get'
})
}
/**
* 查询招生录取统计按流程状态分布数据
* @returns 流程状态分布数据
*/
export function getEnrollmentStatisticsByStatus() {
return request({
url: '/zsjy/enrollment/statistics/status',
method: 'get'
})
}
+55 -12
View File
@@ -1,12 +1,20 @@
import request from '@/utils/request';
import { ElMessage } from 'element-plus';
/**
* 获取统计概览数据
*/
export function getStatisticsOverview() {
return request({
url: '/dev-api/zsjy/statistics/overview',
method: 'get'
url: '/zsjy/statistics/overview',
method: 'get',
headers: {
'isToken': true
}
}).catch(error => {
console.error('获取统计概览数据失败:', error);
ElMessage.error('获取统计数据失败,请联系管理员');
throw error;
});
}
@@ -15,8 +23,15 @@ export function getStatisticsOverview() {
*/
export function getMajorDistribution() {
return request({
url: '/dev-api/zsjy/statistics/major',
method: 'get'
url: '/zsjy/statistics/major',
method: 'get',
headers: {
'isToken': true
}
}).catch(error => {
console.error('获取专业分布数据失败:', error);
ElMessage.error('获取专业分布数据失败,请联系管理员');
throw error;
});
}
@@ -25,8 +40,15 @@ export function getMajorDistribution() {
*/
export function getRegionDistribution() {
return request({
url: '/dev-api/zsjy/statistics/region',
method: 'get'
url: '/zsjy/statistics/region',
method: 'get',
headers: {
'isToken': true
}
}).catch(error => {
console.error('获取地区分布数据失败:', error);
ElMessage.error('获取地区分布数据失败,请联系管理员');
throw error;
});
}
@@ -35,8 +57,15 @@ export function getRegionDistribution() {
*/
export function getGenderRatio() {
return request({
url: '/dev-api/zsjy/statistics/gender',
method: 'get'
url: '/zsjy/statistics/gender',
method: 'get',
headers: {
'isToken': true
}
}).catch(error => {
console.error('获取性别比例数据失败:', error);
ElMessage.error('获取性别比例数据失败,请联系管理员');
throw error;
});
}
@@ -46,9 +75,16 @@ export function getGenderRatio() {
*/
export function getEnrollmentTrend(days?: number) {
return request({
url: '/dev-api/zsjy/statistics/trend',
url: '/zsjy/statistics/trend',
method: 'get',
params: { days }
params: { days },
headers: {
'isToken': true
}
}).catch(error => {
console.error('获取报名趋势数据失败:', error);
ElMessage.error('获取报名趋势数据失败,请联系管理员');
throw error;
});
}
@@ -57,8 +93,15 @@ export function getEnrollmentTrend(days?: number) {
*/
export function getStatusDistribution() {
return request({
url: '/dev-api/zsjy/statistics/status',
method: 'get'
url: '/zsjy/statistics/status',
method: 'get',
headers: {
'isToken': true
}
}).catch(error => {
console.error('获取状态分布数据失败:', error);
ElMessage.error('获取状态分布数据失败,请联系管理员');
throw error;
});
}