From 0a5557a65304d3c5f8fc35200cfbb38f85778970 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 17 六月 2024 13:52:18 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- 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 4be4188..922ffb7 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