基本功能完成,下一步开始美化UI

This commit is contained in:
2025-12-19 16:02:38 +08:00
parent 465d4d7b4a
commit 6ac216d184
46 changed files with 2576 additions and 618 deletions

View File

@@ -1,5 +1,6 @@
import { Request, Response } from 'express';
import { ExamTaskModel } from '../models/examTask';
import { UserGroupModel } from '../models/userGroup';
export class ExamTaskController {
static async getTasks(req: Request, res: Response) {
@@ -19,12 +20,29 @@ export class ExamTaskController {
static async createTask(req: Request, res: Response) {
try {
const { name, subjectId, startAt, endAt, userIds } = req.body;
const { name, subjectId, startAt, endAt, userIds = [], groupIds = [] } = req.body;
if (!name || !subjectId || !startAt || !endAt || !Array.isArray(userIds) || userIds.length === 0) {
if (!name || !subjectId || !startAt || !endAt) {
return res.status(400).json({
success: false,
message: '参数不完整或用户列表为空'
message: '参数不完整'
});
}
// 合并用户列表和用户组中的用户
const finalUserIds = new Set<string>(userIds);
if (Array.isArray(groupIds) && groupIds.length > 0) {
for (const groupId of groupIds) {
const members = await UserGroupModel.getMembers(groupId);
members.forEach(m => finalUserIds.add(m.id));
}
}
if (finalUserIds.size === 0) {
return res.status(400).json({
success: false,
message: '请至少选择一位用户或一个用户组'
});
}
@@ -33,7 +51,8 @@ export class ExamTaskController {
subjectId,
startAt,
endAt,
userIds
userIds: Array.from(finalUserIds),
selectionConfig: JSON.stringify({ userIds, groupIds })
});
res.json({
@@ -51,12 +70,29 @@ export class ExamTaskController {
static async updateTask(req: Request, res: Response) {
try {
const { id } = req.params;
const { name, subjectId, startAt, endAt, userIds } = req.body;
const { name, subjectId, startAt, endAt, userIds = [], groupIds = [] } = req.body;
if (!name || !subjectId || !startAt || !endAt || !Array.isArray(userIds) || userIds.length === 0) {
if (!name || !subjectId || !startAt || !endAt) {
return res.status(400).json({
success: false,
message: '参数不完整或用户列表为空'
message: '参数不完整'
});
}
// 合并用户列表和用户组中的用户
const finalUserIds = new Set<string>(userIds);
if (Array.isArray(groupIds) && groupIds.length > 0) {
for (const groupId of groupIds) {
const members = await UserGroupModel.getMembers(groupId);
members.forEach(m => finalUserIds.add(m.id));
}
}
if (finalUserIds.size === 0) {
return res.status(400).json({
success: false,
message: '请至少选择一位用户或一个用户组'
});
}
@@ -65,7 +101,8 @@ export class ExamTaskController {
subjectId,
startAt,
endAt,
userIds
userIds: Array.from(finalUserIds),
selectionConfig: JSON.stringify({ userIds, groupIds })
});
res.json({