import type { PageParam, PageResult } from '@/api'; import request from '@/utils/request'; import type { ApiResult } from '@/api'; import { MODULES_API_URL } from '@/config/setting'; /** 青马学员 */ export interface QmgcStudent { id?: number; userId?: number; formId?: number; studentNo?: string; studentName?: string; gender?: string; phone?: string; collegeId?: number; collegeName?: string; classId?: number; className?: string; batch?: string; year?: number; candidateNo?: string; stage?: string; stageName?: string; result?: string; totalScore?: number; remark?: string; status?: number; createTime?: string; } /** 青马培养材料 */ export interface QmgcMaterial { id?: number; studentId?: number; stage?: string; type?: string; title?: string; content?: string; fileId?: number; fileUrl?: string; submitTime?: string; score?: number; scorerId?: number; scoreComment?: string; status?: number; } /** 青马培养任务 */ export interface QmgcTask { id?: number; batch?: string; stage?: string; title?: string; type?: string; linkPath?: string; content?: string; mustDo?: number; score?: number; deadline?: string; sortNumber?: number; status?: number; } /** 青马考核评分 */ export interface QmgcScore { id?: number; studentId?: number; dimension?: string; item?: string; score?: number; maxScore?: number; scorerId?: number; scorerName?: string; comment?: string; scoredTime?: string; } export interface QmgcStudentParam extends PageParam { userId?: number; formId?: number; studentNo?: string; studentName?: string; collegeId?: number; batch?: string; year?: number; stage?: string; status?: number; } export interface QmgcTaskParam extends PageParam { batch?: string; stage?: string; type?: string; status?: number; } export async function pageQmgcStudents(params: QmgcStudentParam) { const res = await request.get>>( MODULES_API_URL + '/gxmu/qmgc-student/page', { params } ); if (res.data.code === 0) { return res.data.data; } return Promise.reject(new Error(res.data.message)); } export async function getQmgcStudentDetail(id: number) { const res = await request.get>>( MODULES_API_URL + '/gxmu/qmgc-student/' + id ); if (res.data.code === 0 && res.data.data) { return res.data.data; } return Promise.reject(new Error(res.data.message)); } export async function addQmgcStudent(data: QmgcStudent) { const res = await request.post>( MODULES_API_URL + '/gxmu/qmgc-student', data ); if (res.data.code === 0) { return res.data.message; } return Promise.reject(new Error(res.data.message)); } export async function updateQmgcStudent(data: QmgcStudent) { const res = await request.put>( MODULES_API_URL + '/gxmu/qmgc-student', data ); if (res.data.code === 0) { return res.data.message; } return Promise.reject(new Error(res.data.message)); } export async function removeQmgcStudent(id: number) { const res = await request.delete>( MODULES_API_URL + '/gxmu/qmgc-student/' + id ); if (res.data.code === 0) { return res.data.message; } return Promise.reject(new Error(res.data.message)); } export async function getMyQmgc() { const res = await request.get | null>>( MODULES_API_URL + '/gxmu/qmgc-student/my' ); if (res.data.code === 0) { return res.data.data; } return Promise.reject(new Error(res.data.message)); } export async function listQmgcMaterials(studentId: number) { const res = await request.get>( MODULES_API_URL + `/gxmu/qmgc-student/${studentId}/material` ); if (res.data.code === 0 && res.data.data) { return res.data.data; } return Promise.reject(new Error(res.data.message)); } export async function submitQmgcMaterial(data: QmgcMaterial) { const res = await request.post>( MODULES_API_URL + '/gxmu/qmgc-student/material', data ); if (res.data.code === 0) { return res.data.data; } return Promise.reject(new Error(res.data.message)); } export async function scoreQmgcMaterial(id: number, score: number, comment?: string) { const res = await request.post>( MODULES_API_URL + `/gxmu/qmgc-student/material/${id}/score`, null, { params: { score, comment } } ); if (res.data.code === 0) { return res.data.message; } return Promise.reject(new Error(res.data.message)); } export async function listQmgcStudentTasks(studentId: number) { const res = await request.get[]>>( MODULES_API_URL + `/gxmu/qmgc-student/${studentId}/task` ); if (res.data.code === 0 && res.data.data) { return res.data.data; } return Promise.reject(new Error(res.data.message)); } export async function completeQmgcTask(studentId: number, taskId: number, proofFiles?: string) { const res = await request.post>( MODULES_API_URL + `/gxmu/qmgc-student/${studentId}/task/${taskId}/complete`, null, { params: { proofFiles } } ); if (res.data.code === 0) { return res.data.message; } return Promise.reject(new Error(res.data.message)); } export async function assignQmgcTasks(studentId: number, batch?: string) { const res = await request.post>( MODULES_API_URL + `/gxmu/qmgc-student/${studentId}/task/assign`, null, { params: { batch } } ); if (res.data.code === 0) { return res.data.message; } return Promise.reject(new Error(res.data.message)); } export async function pageQmgcTasks(params: QmgcTaskParam) { const res = await request.get>>( MODULES_API_URL + '/gxmu/qmgc-student/task/page', { params } ); if (res.data.code === 0) { return res.data.data; } return Promise.reject(new Error(res.data.message)); } export async function addQmgcTask(data: QmgcTask) { const res = await request.post>( MODULES_API_URL + '/gxmu/qmgc-student/task', data ); if (res.data.code === 0) { return res.data.message; } return Promise.reject(new Error(res.data.message)); } export async function updateQmgcTask(data: QmgcTask) { const res = await request.put>( MODULES_API_URL + '/gxmu/qmgc-student/task', data ); if (res.data.code === 0) { return res.data.message; } return Promise.reject(new Error(res.data.message)); } export async function removeQmgcTask(id: number) { const res = await request.delete>( MODULES_API_URL + '/gxmu/qmgc-student/task/' + id ); if (res.data.code === 0) { return res.data.message; } return Promise.reject(new Error(res.data.message)); } export async function listQmgcScores(studentId: number) { const res = await request.get>( MODULES_API_URL + `/gxmu/qmgc-student/${studentId}/score` ); if (res.data.code === 0 && res.data.data) { return res.data.data; } return Promise.reject(new Error(res.data.message)); } export async function saveQmgcScore(data: QmgcScore) { const res = await request.post>( MODULES_API_URL + '/gxmu/qmgc-student/score', data ); if (res.data.code === 0) { return res.data.data; } return Promise.reject(new Error(res.data.message)); }