Files
hzdyjs/web/src/api/xljk/evaluation/index.ts
T
2025-08-23 09:58:59 +08:00

193 lines
5.1 KiB
TypeScript

import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import {
XljkEvaluationVO,
XljkEvaluationForm,
XljkEvaluationQuery,
XljkEvaluationDetailVO,
XljkEvaluationDetailForm,
XljkEvaluationDetailQuery,
CollegeOption,
MajorOption,
ClassOption,
StudentInfo
} from './types';
// 查询心理健康测评列表
export const listXljkEvaluation = (query: XljkEvaluationQuery): AxiosPromise<XljkEvaluationVO[]> => {
return request({
url: '/xljk/evaluation/list',
method: 'get',
params: query
});
};
// 查询心理健康测评详细信息
export const getXljkEvaluation = (id: string | number): AxiosPromise<XljkEvaluationVO> => {
return request({
url: `/xljk/evaluation/${id}`,
method: 'get'
});
};
// 新增心理健康测评
export const addXljkEvaluation = (data: XljkEvaluationForm) => {
// 确保必填字段都有值,避免数据库插入错误
if (data.departmentName && !data.departmentId) {
data.departmentId = 0; // 使用临时ID,后端会根据名称处理
}
if (data.majorName && !data.majorId) {
data.majorId = 0; // 使用临时ID,后端会根据名称处理
}
if (data.className && !data.classId) {
data.classId = 0; // 使用临时ID,后端会根据名称处理
}
return request({
url: '/xljk/evaluation',
method: 'post',
data: data
});
};
// 修改心理健康测评
export const updateXljkEvaluation = (data: XljkEvaluationForm) => {
return request({
url: '/xljk/evaluation',
method: 'put',
data: data
});
};
// 删除心理健康测评
export const delXljkEvaluation = (ids: string | number | Array<string | number>) => {
return request({
url: `/xljk/evaluation/${typeof ids === 'object' ? ids.join(',') : ids}`,
method: 'delete'
});
};
// 获取院系选项
export const getXljkDepartmentOptions = (): AxiosPromise<Array<{ value: string | number; label: string }>> => {
return request({
url: '/xljk/evaluation/options/department',
method: 'get'
});
};
// 获取院系选项(新接口)
export const getXljkCollegeOptions = (): AxiosPromise<CollegeOption[]> => {
return request({
url: '/xljk/evaluation/options/colleges',
method: 'get'
});
};
// 获取专业选项
export const getXljkMajorOptions = (collegeName?: string): AxiosPromise<MajorOption[]> => {
return request({
url: '/xljk/evaluation/options/majors',
method: 'get',
params: { collegeName }
});
};
// 获取班级选项
export const getXljkClassOptions = (collegeName?: string, majorName?: string): AxiosPromise<ClassOption[]> => {
return request({
url: '/xljk/evaluation/options/classes',
method: 'get',
params: { collegeName, majorName }
});
};
// 获取班级学生列表
export const getXljkStudentsByClass = (collegeName?: string, majorName?: string, className?: string): AxiosPromise<StudentInfo[]> => {
return request({
url: '/xljk/evaluation/students',
method: 'get',
params: { collegeName, majorName, className }
});
};
// 获取学期选项
export const getXljkSemesterOptions = (): AxiosPromise<Array<{ value: string; label: string }>> => {
return request({
url: '/xljk/evaluation/options/semester',
method: 'get'
});
};
// 发布测评(已废弃,改为提交功能)
export const publishXljkEvaluation = (id: string | number) => {
return request({
url: `/xljk/evaluation/${id}/publish`,
method: 'put'
});
};
// 提交测评
export const completeXljkEvaluation = (id: string | number) => {
return request({
url: `/xljk/evaluation/${id}/complete`,
method: 'put'
});
};
// 获取测评统计数据
export const getXljkEvaluationStatistics = (id: string | number): AxiosPromise<any> => {
return request({
url: `/xljk/evaluation/${id}/statistics`,
method: 'get'
});
};
// 获取重点关注学生统计
export const getXljkFocusStudentsStatistics = (query: XljkEvaluationQuery): AxiosPromise<any> => {
return request({
url: '/xljk/evaluation/statistics/focus',
method: 'get',
params: query
});
};
// 查询测评明细列表
export const listXljkEvaluationDetail = (query: XljkEvaluationDetailQuery): AxiosPromise<XljkEvaluationDetailVO[]> => {
return request({
url: '/xljk/evaluation/detail/list',
method: 'get',
params: query
});
};
// 获取测评明细列表
export const getXljkEvaluationDetailsByEvaluationId = (evaluationId: string | number): AxiosPromise<XljkEvaluationDetailVO[]> => {
return request({
url: `/xljk/evaluation/detail/evaluation/${evaluationId}`,
method: 'get'
});
};
// 批量新增测评明细
export const batchAddXljkEvaluationDetails = (data: XljkEvaluationDetailForm[]) => {
return request({
url: '/xljk/evaluation/detail/batch',
method: 'post',
data: data
});
};
// 批量更新学生心理状态
export const batchUpdateXljkMentalStatus = (data: XljkEvaluationDetailForm[]) => {
// 确保数据中的ID字段保持原有格式,不做Number转换
console.log('批量更新数据 - 第一条记录evaluationId:', data[0]?.evaluationId);
return request({
url: '/xljk/evaluation/detail/batch/mentalStatus',
method: 'put',
data: data
});
};