|
@@ -1,30 +1,39 @@
|
|
|
<template>
|
|
|
<div class="mark-paper-marker">
|
|
|
- <div class="marker-header">
|
|
|
- <p
|
|
|
- class="marker-desc color-danger"
|
|
|
- v-if="subjectiveQuestionCount > groupQuestionCount"
|
|
|
- >
|
|
|
- 本试卷共<span class="mlr-1">{{ questionCount }}</span
|
|
|
- >道小题,客观题<span class="mlr-1">{{ objectiveQuestionCount }}</span
|
|
|
- >道,主观题<span class="mlr-1">{{ subjectiveQuestionCount }}</span
|
|
|
- >道,已经设置<span class="mlr-1">{{ groupQuestionCount }}</span
|
|
|
- >道主观题,还有<span class="mlr-1">{{
|
|
|
- subjectiveQuestionCount - groupQuestionCount
|
|
|
- }}</span
|
|
|
- >道主观题未设置分组,请继续设置,确保全部主观题均已设置分组!
|
|
|
- </p>
|
|
|
- <p class="marker-desc color-success" v-else>
|
|
|
- 本试卷共<span class="mlr-1">{{ questionCount }}</span
|
|
|
- >道小题,客观题<span class="mlr-1">{{ objectiveQuestionCount }}</span
|
|
|
- >道,主观题<span class="mlr-1">{{ subjectiveQuestionCount }}</span
|
|
|
- >道,主观题已全部设置分组!
|
|
|
- </p>
|
|
|
- <el-button type="primary" @click="toAdd">新增</el-button>
|
|
|
+ <div class="box-justify part-box part-box-pad">
|
|
|
+ <div>
|
|
|
+ <p class="tips-info">1.请点击右上角新增按钮创建评卷分组;</p>
|
|
|
+ <p class="tips-info">
|
|
|
+ 2.如果采用整卷批阅,请将全部主观题选上,然后选择评卷老师。如果采用流水阅卷,请选择试题勾选对应的评卷老师;
|
|
|
+ </p>
|
|
|
+ <p class="tips-info tips-error">3.开始阅卷后不允许删除评卷分组!</p>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span
|
|
|
+ ><i class="el-icon-success color-success"></i>评卷参数提交成功!</span
|
|
|
+ >
|
|
|
+ <span
|
|
|
+ ><i class="el-icon-success color-danger"></i>
|
|
|
+ 评卷参数同步阅卷模块失败!</span
|
|
|
+ >
|
|
|
+ <el-button type="primary" @click="toAdd">新增</el-button>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
|
|
|
<el-table :data="groupInfo" border>
|
|
|
<el-table-column type="index" width="50"> </el-table-column>
|
|
|
+ <el-table-column label="评卷员">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag
|
|
|
+ v-for="user in scope.row.markerList"
|
|
|
+ :key="user.id"
|
|
|
+ class="tag-spin"
|
|
|
+ size="medium"
|
|
|
+ >
|
|
|
+ {{ user.name }}({{ user.orgName }})
|
|
|
+ </el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="评卷方式">
|
|
|
<template slot-scope="scope">
|
|
|
<el-radio-group v-model="scope.row.doubleRate">
|
|
@@ -82,6 +91,49 @@
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
|
|
|
+ <div>
|
|
|
+ <span>分班阅卷:</span>
|
|
|
+ <el-switch
|
|
|
+ v-model="openClassMark"
|
|
|
+ @change="openClassMarkChange"
|
|
|
+ ></el-switch>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <el-table v-if="openClassMark" :data="markerClassList" border>
|
|
|
+ <el-table-column type="index" width="50"> </el-table-column>
|
|
|
+ <el-table-column label="评卷员" width="120"> </el-table-column>
|
|
|
+ <el-table-column label="评卷员" width="120">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag class="tag-spin" size="medium">
|
|
|
+ {{ scope.row.marker.name }}({{ scope.row.marker.orgName }})
|
|
|
+ </el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="评卷班级">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-tag
|
|
|
+ v-for="item in scope.row.classList"
|
|
|
+ :key="item.id"
|
|
|
+ size="medium"
|
|
|
+ effect="dark"
|
|
|
+ type="info"
|
|
|
+ >
|
|
|
+ {{ item.label }}
|
|
|
+ </el-tag>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column class-name="action-column" label="操作" width="100">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ <el-button
|
|
|
+ class="btn-primary"
|
|
|
+ type="text"
|
|
|
+ @click="toEditClass(scope.row)"
|
|
|
+ >选择班级</el-button
|
|
|
+ >
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+
|
|
|
<!-- ModifyMarkerQuestion -->
|
|
|
<modify-marker-question
|
|
|
ref="ModifyMarkerQuestion"
|
|
@@ -99,18 +151,25 @@
|
|
|
:paper-list="paperList"
|
|
|
@modified="areaModified"
|
|
|
></modify-mark-area>
|
|
|
+ <!-- SelectClassByCourse -->
|
|
|
+ <select-class-by-course
|
|
|
+ ref="SelectClassByCourse"
|
|
|
+ :course-code="datas.basicPaperInfo.courseCode"
|
|
|
+ @confirm="classSelected"
|
|
|
+ ></select-class-by-course>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
import ModifyMarkerQuestion from "./ModifyMarkerQuestion.vue";
|
|
|
import ModifyMarkArea from "./ModifyMarkArea.vue";
|
|
|
+import SelectClassByCourse from "../SelectClassByCourse.vue";
|
|
|
import { examStructureFindJpg } from "../../api";
|
|
|
import { cardDetail } from "../../../card/api";
|
|
|
|
|
|
export default {
|
|
|
name: "mark-paper-marker",
|
|
|
- components: { ModifyMarkerQuestion, ModifyMarkArea },
|
|
|
+ components: { ModifyMarkerQuestion, ModifyMarkArea, SelectClassByCourse },
|
|
|
props: {
|
|
|
datas: {
|
|
|
type: Object,
|
|
@@ -139,6 +198,13 @@ export default {
|
|
|
},
|
|
|
paperList: [],
|
|
|
cardPages: [],
|
|
|
+ // 分班阅卷
|
|
|
+ openClassMark: false,
|
|
|
+ markerClassList: [],
|
|
|
+ curMarkClass: {},
|
|
|
+ selectedClassIds: [],
|
|
|
+ disabledClassIds: [],
|
|
|
+ casheMarkerClass: {},
|
|
|
};
|
|
|
},
|
|
|
filters: {
|
|
@@ -257,6 +323,11 @@ export default {
|
|
|
}
|
|
|
this.updateDisableQuestionIds();
|
|
|
this.updateGroupNumber();
|
|
|
+
|
|
|
+ // 分班阅卷相关
|
|
|
+ if (!this.openClassMark) return;
|
|
|
+ this.updateCasheMarkerClass();
|
|
|
+ this.initMarkerClassList();
|
|
|
},
|
|
|
autoParsePictureConfigList(questions) {
|
|
|
if (!questions.length) return [];
|
|
@@ -346,6 +417,50 @@ export default {
|
|
|
if (pos === -1) return;
|
|
|
this.groupInfo.splice(pos, 1, row);
|
|
|
},
|
|
|
+ // 分班阅卷 --->
|
|
|
+ openClassMarkChange(val) {
|
|
|
+ if (val) {
|
|
|
+ this.initMarkerClassList();
|
|
|
+ } else {
|
|
|
+ this.updateCasheMarkerClass();
|
|
|
+ this.markerClassList = [];
|
|
|
+ }
|
|
|
+ },
|
|
|
+ initMarkerClassList() {
|
|
|
+ let markerClassList = [];
|
|
|
+ this.groupInfo.forEach((group) => {
|
|
|
+ group.markerList.forEach((marker) => {
|
|
|
+ markerClassList.push({
|
|
|
+ marker: { ...marker },
|
|
|
+ classList: this.casheMarkerClass[marker.id] || [],
|
|
|
+ });
|
|
|
+ });
|
|
|
+ });
|
|
|
+ this.markerClassList = markerClassList;
|
|
|
+ },
|
|
|
+ updateCasheMarkerClass() {
|
|
|
+ let casheMarkerClass = {};
|
|
|
+ this.markerClassList.forEach((item) => {
|
|
|
+ casheMarkerClass[item.marker.id] = item.classList;
|
|
|
+ });
|
|
|
+ this.casheMarkerClass = casheMarkerClass;
|
|
|
+ },
|
|
|
+ toEditClass(row) {
|
|
|
+ this.curMarkClass = row;
|
|
|
+ this.selectedClassIds = row.classList.map((item) => item.id);
|
|
|
+ let disabledClassIds = [];
|
|
|
+ this.markerClassList
|
|
|
+ .filter((item) => item.marker.id !== row.marker.id)
|
|
|
+ .forEach((item) => {
|
|
|
+ disabledClassIds.push(...item.classList.map((item) => item.id));
|
|
|
+ });
|
|
|
+ this.disabledClassIds = disabledClassIds;
|
|
|
+ this.$refs.SelectClassByCourse.open();
|
|
|
+ },
|
|
|
+ classSelected(classList) {
|
|
|
+ this.curMarkClass.classList = classList;
|
|
|
+ },
|
|
|
+ // 分班阅卷 end --->
|
|
|
checkData() {
|
|
|
let errorMessages = [];
|
|
|
|