From e58abcc99a332a96fa5005aff58fe91c48f354f2 Mon Sep 17 00:00:00 2001
From: xiangpei <xiangpei@timesnew.cn>
Date: 星期一, 17 六月 2024 11:20:31 +0800
Subject: [PATCH] 阅卷
---
src/api/request.js | 59 ++++++-----
src/api/exam.js | 74 ++++++++------
src/views/exam/exam/MarkPaper.vue | 132 +++++++++++++++++++++++--
src/router.js | 9 +
src/views/exam/exam/ExamManage.vue | 10 +-
5 files changed, 206 insertions(+), 78 deletions(-)
diff --git a/src/api/exam.js b/src/api/exam.js
index 04b3180..d1a7644 100644
--- a/src/api/exam.js
+++ b/src/api/exam.js
@@ -1,61 +1,69 @@
-import axios from "./request";
+import axios from './request'
// 鑾峰彇鑰冭瘯鍒嗛〉
export const getExams = (params) => {
- return axios({
- url: "/api/exam/page",
- method: "GET",
- params: params
- })
+ return axios({
+ url: '/api/admin/exam/page',
+ method: 'GET',
+ params: params
+ })
}
// 鑾峰彇鑰冭瘯鍒楄〃
export const getExamList = () => {
- return axios({
- url: "/api/exam/list",
- method: "GET"
- })
+ return axios({
+ url: '/api/admin/exam/list',
+ method: 'GET'
+ })
}
// 閫氳繃id鑾峰彇鑰冭瘯
export const getExamById = (params) => {
- return axios({
- url: "/api/exam/" + params,
- method: "GET"
- })
+ return axios({
+ url: '/api/admin/exam/' + params,
+ method: 'GET'
+ })
+}
+
+// 閫氳繃id鑾峰彇鑰冭瘯
+export const getExamMarkPaperInfo = (id) => {
+ return axios({
+ url: '/api/admin/exam/mark/paper/' + id,
+ method: 'GET'
+ })
}
// 閫氳繃id鍒犻櫎鑰冭瘯
export const deleteExamById = (params) => {
- return axios({
- url: "/api/exam/" + params,
- method: "DELETE"
- })
+ return axios({
+ url: '/api/admin/exam/' + params,
+ method: 'DELETE'
+ })
}
// 鎵归噺鍒犻櫎鑰冭瘯
export const deleteExamByIds = (params) => {
- return axios({
- url: "/api/exam/batch",
- method: "DELETE",
- data: params
- })
+ return axios({
+ url: '/api/admin/exam/batch',
+ method: 'DELETE',
+ data: params
+ })
}
// 淇敼鑰冭瘯
export const editExam = (params) => {
- return axios({
- url: "/api/exam/",
- method: "PUT",
- data: params
- })
+ return axios({
+ url: '/api/admin/exam/',
+ method: 'PUT',
+ data: params
+ })
}
// 娣诲姞鑰冭瘯
export const addExam = (params) => {
- return axios({
- url: "/api/exam/",
- method: "POST",
- data: params
- })
+ return axios({
+ url: '/api/admin/exam/',
+ method: 'POST',
+ data: params
+ })
}
diff --git a/src/api/request.js b/src/api/request.js
index 3a41c94..4278b2c 100644
--- a/src/api/request.js
+++ b/src/api/request.js
@@ -1,7 +1,7 @@
-import axios from "axios";
-import router from "../router";
-import {Message} from 'element-ui';
-import vue from "vue";
+import axios from 'axios'
+import router from '../router'
+import { Message } from 'element-ui'
+import vue from 'vue'
const instance = axios.create({
baseURL: process.env.VUE_APP_URL,
@@ -9,46 +9,53 @@
// 涓嶆惡甯ookie
withCredentials: true,
headers: {
- "Content-Type": "application/json"
+ 'Content-Type': 'application/json'
}
-});
+})
// 娣诲姞璇锋眰鎷︽埅鍣�
instance.interceptors.request.use(function (config) {
- return config;
+ return config
}, function (error) {
- Message.error("璇锋眰瀛樺湪闂锛岃妫�鏌�")
- return Promise.reject(error);
-});
+ Message.error('璇锋眰瀛樺湪闂锛岃妫�鏌�')
+ return Promise.reject(error)
+})
// 娣诲姞鍝嶅簲鎷︽埅鍣�
instance.interceptors.response.use(function (response) {
if (response.data.code === 1) {
- return response;
- // 楠岃瘉鐮侀敊璇斁琛岋紝浠ヤ究鍒锋柊楠岃瘉鐮�
- }
- // 澶勭悊鑷畾涔夌姸鎬佺爜
- else if (response.data.code === 1998) {
- return response;
+ return response
+ } else if (response.data.code === 401) {
+ Message.error('鐧诲綍宸茶繃鏈燂紝璇烽噸鏂扮櫥褰�')
+ vue.prototype.$$router.push({ path: '/login' })
+ return Promise.reject(response.data)
+ } else if (response.data.code === 403) {
+ Message.error('鏉冮檺涓嶈冻锛屾棤娉曡闂�')
+ return Promise.reject(response.data)
} else {
- Message.error(response.data.msg);
- return Promise.reject(response.data.msg);
+ Message.error(response.data.message)
+ return Promise.reject(response.data.message)
}
+},
-}, function (error) {
+function (error) {
+ console.log(error, '閿欒')
// 澶勭悊http鐘舵�佺爜
if (error.response.data) {
- error.message = error.response.data.msg;
+ error.message = error.response.data.msg
}
if (error.response.code === 401) {
- error.message = "鐧诲綍宸茶繃鏈燂紝璇烽噸鏂扮櫥褰�";
+ error.message = '鐧诲綍宸茶繃鏈燂紝璇烽噸鏂扮櫥褰�'
vue.prototype.$$router.push({ path: '/login' })
}
if (error.response.code === 403) {
- error.message = "鏉冮檺涓嶈冻";
+ error.message = '鏉冮檺涓嶈冻'
}
- Message.error(error.message);
- return Promise.reject(error);
-});
+ Message.error(error.message)
+ return Promise.reject(error)
+}
-export default instance;
+)
+
+
+export default instance
diff --git a/src/router.js b/src/router.js
index 5dede70..3b719fc 100644
--- a/src/router.js
+++ b/src/router.js
@@ -45,6 +45,13 @@
component: () => import('@/views/exam/exam/ExamManage'),
name: 'Exam',
meta: { title: '鑰冭瘯绠$悊', icon: 'exam', affix: true }
+ },
+ {
+ path: '/exam/mark/paper',
+ component: () => import('@/views/exam/exam/MarkPaper'),
+ name: 'MarkPaper',
+ meta: { title: '闃呭嵎'},
+ hidden: true
}
]
},
@@ -63,7 +70,7 @@
component: () => import('@/views/class-management/ClassStaff'),
name: 'Classes',
hidden: true,
- meta: { title: '鐝骇鎴愬憳绠$悊', icon: 'classes', affix: true }
+ meta: { title: '鐝骇鎴愬憳绠$悊', icon: 'classes' }
}
]
},
diff --git a/src/views/exam/exam/ExamManage.vue b/src/views/exam/exam/ExamManage.vue
index 472322f..87e9bfd 100644
--- a/src/views/exam/exam/ExamManage.vue
+++ b/src/views/exam/exam/ExamManage.vue
@@ -73,7 +73,7 @@
>淇敼
</el-button>
<el-button type="danger" size="small" @click="deleteExam(scope.row.id)">鍒犻櫎</el-button>
- <el-button type="success" size="small" @click="markPaper(scope.row)">闃呭嵎</el-button>
+ <el-button v-if="scope.row.status === 'finished'" type="success" size="small" @click="markPaper(scope.row)">闃呭嵎</el-button>
</template>
</el-table-column>
</el-table>
@@ -152,7 +152,7 @@
status: '',
startTime: '',
endTime: '',
- time: [],
+ time: []
},
examRules: {
examName: [
@@ -172,7 +172,7 @@
],
time: [
{ required: true, message: '璇烽�夋嫨鑰冭瘯鏃堕棿', trigger: 'change' }
- ],
+ ]
},
total: 0,
title: '瀹夋帓鑰冭瘯',
@@ -183,7 +183,7 @@
pageIndex: 1,
pageSize: 10
},
- tableData: [],
+ tableData: []
}
},
mounted () {
@@ -294,7 +294,7 @@
},
routerTo (url) {
this.$router.push(url)
- },
+ }
},
}
</script>
diff --git a/src/views/exam/exam/MarkPaper.vue b/src/views/exam/exam/MarkPaper.vue
index 2095c78..560799d 100644
--- a/src/views/exam/exam/MarkPaper.vue
+++ b/src/views/exam/exam/MarkPaper.vue
@@ -1,36 +1,113 @@
<template>
- <div>
- <div>
- <div></div>
- <div></div>
- </div>
- <div></div>
+ <div class="app-container">
+ <el-row :gutter="20">
+ <el-col :span="5">
+ <div class="nameClass">
+ <div class="bottom5">鑰冭瘯鍚嶇О</div>
+ <div class="title">{{examInfo.examName}}</div>
+ </div>
+ </el-col>
+ <el-col :span="5">
+ <div class="nameClass">
+ <div class="bottom5">璇曞嵎鍚嶇О</div>
+ <div class="title">{{examInfo.examPaperName}}</div>
+ </div>
+ </el-col>
+ <el-col :span="4">
+ <div class="staticNum">
+ <div class="bottom5">搴旇�冧汉鏁�</div>
+ <div class="title">{{examInfo.shouldJoinNum}}</div>
+ </div>
+ </el-col>
+ <el-col :span="4">
+ <div class="staticNum">
+ <div class="bottom5">缂鸿�冧汉鏁�</div>
+ <div class="title">{{examInfo.missJoinNum}}</div>
+ </div>
+ </el-col>
+ <el-col :span="4">
+ <div class="staticNum">
+ <div class="bottom5">鍙傚姞浣嗘湭瀹屾垚浜烘暟</div>
+ <div class="title">{{examInfo.joinButNotFinishNum}}</div>
+ </div>
+ </el-col>
+ </el-row>
+ <!-- 琛ㄦ牸 -->
+ <el-table
+ :data="examInfo.studentExamInfoVOList"
+ border
+ style="width: 100%;margin-top: 20px"
+ >
+ <el-table-column
+ align="center"
+ prop="id"
+ label="瀛﹀彿"
+ >
+ </el-table-column>
+ <el-table-column
+ align="center"
+ prop="realName"
+ label="濮撳悕"
+ >
+ </el-table-column>
+ <el-table-column
+ align="center"
+ prop="phone"
+ label="鐢佃瘽"
+ >
+ </el-table-column>
+ <el-table-column
+ align="center"
+ prop="phone"
+ label="绯荤粺鑷姩浼板垎(閫夋嫨棰樺瀷)"
+ >
+ </el-table-column>
+ <el-table-column
+ label="鎿嶄綔"
+ align="center"
+ width="300px"
+ >
+ <template slot-scope="scope">
+ <el-button @click="markPaper(scope.row)" type="warning">闃呭嵎</el-button>
+ </template>
+ </el-table-column>
+ </el-table>
</div>
</template>
<script>
-import { getExamInfo } from '@/api/exam'
+import { getExamMarkPaperInfo } from '@/api/exam'
export default {
name: 'MarkPaper',
mounted () {
this.examInfo.examName = this.$route.query.examName
- this.examInfo.id = this.$route.query.examId
- this.getExamInfo()
+ this.examInfo.examId = this.$route.query.examId
+ if (this.examInfo.examId) {
+ this.getExamInfo()
+ }
},
data () {
return {
examInfo: {
examName: '',
- id: null,
- paperList: []
+ examPaperName: '',
+ suggestTime: 0,
+ shouldJoinNum: 0,
+ joinNum: 0,
+ missJoinNum: 0,
+ joinButNotFinishNum: 0,
+ examId: null,
+ studentExamInfoVOList: []
}
-
}
},
methods: {
+ markPaper (row) {
+ // todo鎵撳紑闃呭嵎椤甸潰
+ },
getExamInfo () {
- getExamInfo(this.examInfo.id).then(res => {
+ getExamMarkPaperInfo(this.examInfo.examId).then(res => {
this.examInfo = res.data.data
})
}
@@ -40,4 +117,33 @@
<style scoped>
+.title {
+ font-size: 18px;
+}
+.bottom5 {
+ margin-bottom: 5px;
+}
+.nameInfo {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+}
+.nameClass {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: center;
+ height: 70px;
+ background-color: #cb5858;
+}
+.staticNum {
+ width: 100%;
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ background-color: #0a76a4;
+ height: 70px;
+}
</style>
--
Gitblit v1.8.0