diff --git a/AES-front/src/api/user.js b/AES-front/src/api/user.js
index 4638c04..ccb2a3d 100644
--- a/AES-front/src/api/user.js
+++ b/AES-front/src/api/user.js
@@ -34,6 +34,21 @@ export default {
getPostProblemInfo:(config) => request.get('/problem/getPostProblemInfo', config),//»ñȡµ±ǰ±¨¸沼ÖÃÐÅϢ
- findProblemById1:(config)=>request.get('/problem/findProblemById1',config)//»ñȡµ±ǰ±¨¸æ¾ßÌåÐÅϢ
+ findProblemById1:(config)=>request.get('/problem/findProblemById1',config),//»ñȡµ±ǰ±¨¸æ¾ßÌåÐÅϢ
+ getSubmitReport:(config) => request.get('/problem/getSubmitReport', config),//»ñȡѧÉúÒÑÉϴ«±¨¸æÐÅϢ
+
+ //Îļþ´¦Àí²¿·Ö
+ uploadFiles: (data) =>
+ request({
+ url: '/importClassStudentsFile/uploadFiles',
+ method: 'post',
+ data: data,
+ }), //ѧÉúÉϴ«Îļþ
+
+ downloadFile: (fileName) =>
+ request({
+ url: `/downloadFile/downloadFile/${fileName}`,
+ method: 'get',
+ }), // ÎļþÏÂÔØ
}
diff --git a/AES-front/src/views/user/report-submit/components/leftparts.vue b/AES-front/src/views/user/report-submit/components/leftparts.vue
index 6635036..18fae11 100644
--- a/AES-front/src/views/user/report-submit/components/leftparts.vue
+++ b/AES-front/src/views/user/report-submit/components/leftparts.vue
@@ -12,29 +12,59 @@
-
- 上传附件
-
+
+ 上传附件
+
+
+
+
+
+
+ 将文件拖到此处,或点击上传
+
+
+
+
+
+
\ No newline at end of file
diff --git a/AES-front/src/views/user/report-submit/components/report-actions.vue b/AES-front/src/views/user/report-submit/components/report-actions.vue
index 0ab4a4e..0e18981 100644
--- a/AES-front/src/views/user/report-submit/components/report-actions.vue
+++ b/AES-front/src/views/user/report-submit/components/report-actions.vue
@@ -1,8 +1,8 @@
- 保存
- 保存并提交
- 申请撤回
+ 保存
+ 保存并提交
+ 申请撤回
diff --git a/AES-front/src/views/user/report-submit/components/rightparts.vue b/AES-front/src/views/user/report-submit/components/rightparts.vue
index b8f0c42..ceb56ef 100644
--- a/AES-front/src/views/user/report-submit/components/rightparts.vue
+++ b/AES-front/src/views/user/report-submit/components/rightparts.vue
@@ -27,7 +27,7 @@ const plagiarismStatus = ref(0); // 初始化抄袭状态
const getJudgeInfo = async () => {
// 查询批阅相关信息
try {
- const res = await api.getStudentRank({ params: { examId } });
+ const res = await api.getSubmitReport({ params: { examId } });
comment.value = res.data.comment; // 更新教师评语
plagiarismStatus.value = res.data.plagiarismStatus; // 更新抄袭状态
} catch (error) {
diff --git a/AES-front/src/views/user/report-submit/index.vue b/AES-front/src/views/user/report-submit/index.vue
index a566ff2..fcc365c 100644
--- a/AES-front/src/views/user/report-submit/index.vue
+++ b/AES-front/src/views/user/report-submit/index.vue
@@ -14,21 +14,20 @@
-
diff --git a/AES-front/src/views/user/score-rank/components/personal-rank.vue b/AES-front/src/views/user/score-rank/components/personal-rank.vue
index 96bc2cf..aa77a88 100644
--- a/AES-front/src/views/user/score-rank/components/personal-rank.vue
+++ b/AES-front/src/views/user/score-rank/components/personal-rank.vue
@@ -20,7 +20,7 @@ const examId = route.params.examId;
const classId = route.params.classId;
const title = ref(""); // 从API获取的作业名称
const score = ref(0); // 个人得分
-const rank = ref(0); // 个人排名
+const rank = ref("-"); // 个人排名,默认为 "-"
const totalStudents = ref(0); // 班级总人数
const paginationReactive = reactive({
@@ -53,18 +53,20 @@ const queryExamScores = async () => {
const res = await api.getStudentRank({
params: { examId }
});
+ title.value = res.data.title; // 更新作业名称
+ score.value = res.data.score; // 更新个人得分
+ rank.value = res.data.rank || "-"; // 更新个人排名,如果rank为空则显示 "-"
+};
+
+const queryClassStudents = async () => {
//查询班级总人数
const res1 = await api.getClassStudents({
params: { classId }
});
-
- title.value = res.data.title; // 更新作业名称
- score.value = res.data.score; // 更新个人得分
- rank.value = res.data.rank; // 更新个人排名
+ console.log(res1);
totalStudents.value = res1.data;// 更新班级总人数
};
-
// 行键函数
const rowKey = (rowData) => {
return rowData.id;
@@ -73,6 +75,7 @@ const rowKey = (rowData) => {
// 生命周期钩子
onMounted(() => {
queryExamScores(); // 挂载时查询成绩
+ queryClassStudents();// 同时查询班级人数
});
diff --git a/AES/src/main/java/com/example/aes/problem/controller/ProblemController.java b/AES/src/main/java/com/example/aes/problem/controller/ProblemController.java
index 344fff7..2258548 100644
--- a/AES/src/main/java/com/example/aes/problem/controller/ProblemController.java
+++ b/AES/src/main/java/com/example/aes/problem/controller/ProblemController.java
@@ -359,7 +359,22 @@ public class ProblemController {
if (ureportsubmitted != null) {
return RespBean.ok("查询成绩排名成功!", ureportsubmitted);
} else {
- return RespBean.error("查询成绩排名失败!");
+ return RespBean.error("尚未提交作业!暂时无法查看排名!");
+ }
+ }
+
+ //根据作业id和学生id获取学生当前报告成绩排名,与上一方法基本类似,处理空搜索时的输出
+ @GetMapping("/getSubmitReport")
+ public RespBean getSubmitReport(Integer examId, HttpServletRequest request) {
+ DecodeToken decodeToken = new DecodeToken(request);
+ String UserId = decodeToken.getUserId();
+ int userId = Integer.parseInt(UserId);
+ UReportSubmitted ureportsubmitted =
+ problemServiceI.findScoreAndRankByIds(examId, userId);
+ if (ureportsubmitted != null) {
+ return RespBean.ok("查询成绩排名成功!", ureportsubmitted);
+ } else {
+ return RespBean.ok("尚未提交作业!");
}
}
diff --git a/AES/src/main/java/com/example/aes/user/controller/DownLoadFileController.java b/AES/src/main/java/com/example/aes/user/controller/DownLoadFileController.java
index 0295b1a..1fe0aa4 100644
--- a/AES/src/main/java/com/example/aes/user/controller/DownLoadFileController.java
+++ b/AES/src/main/java/com/example/aes/user/controller/DownLoadFileController.java
@@ -2,10 +2,15 @@ package com.example.aes.user.controller;
import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.resource.UrlResource;
import com.example.aes.global.model.RespBean;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@@ -13,6 +18,8 @@ import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.URLEncoder;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
@@ -139,4 +146,25 @@ public class DownLoadFileController {
}
}
+ // 提供文件下载的方法
+ @GetMapping("/downloadFile/{fileName:.+}")
+ public ResponseEntity downloadFile(@PathVariable String fileName) {
+ try {
+ String root = System.getProperty("user.dir") + File.separator + "upload";
+ Path filePath = Paths.get(root).toAbsolutePath().normalize().resolve(fileName);
+ javax.annotation.Resource resource = (javax.annotation.Resource) new UrlResource(filePath.toUri());
+ String contentType = "application/octet-stream";
+ return ResponseEntity.ok()
+ .contentType(MediaType.parseMediaType(contentType))
+ .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.name() + "\"")
+ .body(resource);
+ } catch (Exception e) {
+ e.printStackTrace();
+ return ResponseEntity.badRequest()
+ .body(null);
+ }
+ }
+
+
+
}
diff --git a/AES/src/main/java/com/example/aes/user/controller/importClassStudentsFileController.java b/AES/src/main/java/com/example/aes/user/controller/importClassStudentsFileController.java
index 1a26ad4..30ef793 100644
--- a/AES/src/main/java/com/example/aes/user/controller/importClassStudentsFileController.java
+++ b/AES/src/main/java/com/example/aes/user/controller/importClassStudentsFileController.java
@@ -1,6 +1,7 @@
package com.example.aes.user.controller;
import cn.hutool.core.io.FileUtil;
+import cn.hutool.core.io.resource.UrlResource;
import com.example.aes.global.model.RespBean;
import com.example.aes.user.dao.AdminusersDaoI;
import com.example.aes.user.dao.ClassesDaoI;
@@ -11,19 +12,21 @@ import com.example.aes.user.model.PMUser;
import com.example.aes.user.model.Users;
import com.example.aes.user.service.UserServiceI;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.MediaType;
+import org.springframework.http.ResponseEntity;
import org.springframework.transaction.annotation.Transactional;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
+import org.springframework.web.servlet.support.ServletUriComponentsBuilder;
import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
import java.io.*;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
@RestController
@@ -374,4 +377,79 @@ public class importClassStudentsFileController{
return true;
}
+ @PostMapping("/uploadFiles") // 学生上传文件并提供其URL
+ public ResponseEntity