Files
tuanwei-admin/src/api/growth/qmgc/index.ts
T
gxwebsoft 567e4aabdb feat(user): 支持修改当前用户资料接口并更新个人中心调用
- 新增 updateSelfUser 方法,用于修改当前登录用户的个人资料
- 个人中心调用接口由原 updateUser 切换为 updateSelfUser,避免学生账号权限不足导致的保存失败
- 更新了头像保存、个人信息保存等相关调用代码,添加异常捕获和提示
- 修正环境变量 .env.development 中 API URL 配置为生产地址
- 优化审核记录排序逻辑,新增获取最新审核记录和编辑入口显示判断函数
- 调整审核状态标签使用统一排序规则,防止显示和编辑状态不一致
- 新增社团活动、社团编辑、志愿时长录入、学分记录编辑、社会实践学分申报、青马学员编辑等多个新增组件及表单功能
- 各新增功能支持表单验证、操作反馈和数据加载优化
2026-11-05 19:03:40 +08:00

290 lines
7.4 KiB
TypeScript

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<ApiResult<PageResult<QmgcStudent>>>(
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<ApiResult<Record<string, any>>>(
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<ApiResult<unknown>>(
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<ApiResult<unknown>>(
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<ApiResult<unknown>>(
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<ApiResult<Record<string, any> | 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<ApiResult<QmgcMaterial[]>>(
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<ApiResult<QmgcMaterial>>(
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<ApiResult<unknown>>(
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<ApiResult<Record<string, any>[]>>(
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<ApiResult<unknown>>(
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<ApiResult<unknown>>(
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<ApiResult<PageResult<QmgcTask>>>(
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<ApiResult<unknown>>(
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<ApiResult<unknown>>(
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<ApiResult<unknown>>(
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<ApiResult<QmgcScore[]>>(
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<ApiResult<QmgcScore>>(
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));
}