|
@@ -20,119 +20,128 @@
|
|
</div>
|
|
</div>
|
|
</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">
|
|
|
|
- <el-radio
|
|
|
|
- v-for="(val, key) in MARK_TYPE"
|
|
|
|
- :key="key"
|
|
|
|
- :label="key * 1"
|
|
|
|
- >{{ val }}</el-radio
|
|
|
|
|
|
+ <div class="part-box part-box-pad">
|
|
|
|
+ <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"
|
|
>
|
|
>
|
|
- </el-radio-group>
|
|
|
|
- <span v-if="scope.row.doubleRate === 1">
|
|
|
|
- 仲裁阀值:<el-input-number
|
|
|
|
- v-model="scope.row.arbitrateThreshold"
|
|
|
|
- class="width-80"
|
|
|
|
- size="small"
|
|
|
|
- :min="0"
|
|
|
|
- :max="999999"
|
|
|
|
- :step="0.01"
|
|
|
|
- step-strictly
|
|
|
|
- :controls="false"
|
|
|
|
|
|
+ {{ 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">
|
|
|
|
+ <el-radio
|
|
|
|
+ v-for="(val, key) in MARK_TYPE"
|
|
|
|
+ :key="key"
|
|
|
|
+ :label="key * 1"
|
|
|
|
+ >{{ val }}</el-radio
|
|
|
|
+ >
|
|
|
|
+ </el-radio-group>
|
|
|
|
+ <span v-if="scope.row.doubleRate === 1">
|
|
|
|
+ 仲裁阀值:<el-input-number
|
|
|
|
+ v-model="scope.row.arbitrateThreshold"
|
|
|
|
+ class="width-80"
|
|
|
|
+ size="small"
|
|
|
|
+ :min="0"
|
|
|
|
+ :max="999999"
|
|
|
|
+ :step="0.01"
|
|
|
|
+ step-strictly
|
|
|
|
+ :controls="false"
|
|
|
|
+ >
|
|
|
|
+ </el-input-number>
|
|
|
|
+ </span>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="评阅题目">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ {{ scope.row.questions | questionsFilter }}
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="评卷区" width="80" align="center">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <i
|
|
|
|
+ v-if="scope.row.pictureConfigList.length"
|
|
|
|
+ class="el-icon-success color-success"
|
|
|
|
+ ></i>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column class-name="action-column" label="操作" width="160px">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-button
|
|
|
|
+ class="btn-primary"
|
|
|
|
+ type="text"
|
|
|
|
+ @click="toEdit(scope.row)"
|
|
|
|
+ >编辑</el-button
|
|
>
|
|
>
|
|
- </el-input-number>
|
|
|
|
- </span>
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
- <el-table-column label="评阅题目">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- {{ scope.row.questions | questionsFilter }}
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
- <el-table-column label="评卷区" width="80" align="center">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <i
|
|
|
|
- v-if="scope.row.pictureConfigList.length"
|
|
|
|
- class="el-icon-success color-success"
|
|
|
|
- ></i>
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
- <el-table-column class-name="action-column" label="操作" width="160px">
|
|
|
|
- <template slot-scope="scope">
|
|
|
|
- <el-button class="btn-primary" type="text" @click="toEdit(scope.row)"
|
|
|
|
- >编辑</el-button
|
|
|
|
- >
|
|
|
|
- <el-button
|
|
|
|
- class="btn-primary"
|
|
|
|
- type="text"
|
|
|
|
- :disabled="!paperList.length"
|
|
|
|
- @click="toSetArea(scope.row)"
|
|
|
|
- >评卷区</el-button
|
|
|
|
- >
|
|
|
|
- <el-button class="btn-danger" type="text" @click="toDelete(scope.row)"
|
|
|
|
- >删除</el-button
|
|
|
|
- >
|
|
|
|
- </template>
|
|
|
|
- </el-table-column>
|
|
|
|
- </el-table>
|
|
|
|
|
|
+ <el-button
|
|
|
|
+ class="btn-primary"
|
|
|
|
+ type="text"
|
|
|
|
+ :disabled="!paperList.length"
|
|
|
|
+ @click="toSetArea(scope.row)"
|
|
|
|
+ >评卷区</el-button
|
|
|
|
+ >
|
|
|
|
+ <el-button
|
|
|
|
+ class="btn-danger"
|
|
|
|
+ type="text"
|
|
|
|
+ @click="toDelete(scope.row)"
|
|
|
|
+ >删除</el-button
|
|
|
|
+ >
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </el-table>
|
|
|
|
+ </div>
|
|
|
|
|
|
- <div>
|
|
|
|
|
|
+ <div class="mb-2">
|
|
<span>分班阅卷:</span>
|
|
<span>分班阅卷:</span>
|
|
<el-switch
|
|
<el-switch
|
|
- v-model="openClassMark"
|
|
|
|
- @change="openClassMarkChange"
|
|
|
|
|
|
+ v-model="openClassReading"
|
|
|
|
+ @change="openClassReadingChange"
|
|
></el-switch>
|
|
></el-switch>
|
|
</div>
|
|
</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>
|
|
|
|
|
|
+ <div v-if="openClassReading" class="part-box part-box-pad">
|
|
|
|
+ <el-table :data="markerClassList" border>
|
|
|
|
+ <el-table-column type="index" width="50"> </el-table-column>
|
|
|
|
+ <el-table-column label="评卷员" width="200">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-tag class="tag-spin" size="medium">
|
|
|
|
+ {{ scope.row.name }}({{ scope.row.orgName }})
|
|
|
|
+ </el-tag>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ <el-table-column label="评卷班级">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <el-tag
|
|
|
|
+ v-for="item in scope.row.className"
|
|
|
|
+ :key="item"
|
|
|
|
+ size="medium"
|
|
|
|
+ type="info"
|
|
|
|
+ class="mb-1 mr-1"
|
|
|
|
+ >
|
|
|
|
+ {{ item }}
|
|
|
|
+ </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>
|
|
|
|
+ </div>
|
|
|
|
|
|
<!-- ModifyMarkerQuestion -->
|
|
<!-- ModifyMarkerQuestion -->
|
|
<modify-marker-question
|
|
<modify-marker-question
|
|
@@ -154,7 +163,12 @@
|
|
<!-- SelectClassByCourse -->
|
|
<!-- SelectClassByCourse -->
|
|
<select-class-by-course
|
|
<select-class-by-course
|
|
ref="SelectClassByCourse"
|
|
ref="SelectClassByCourse"
|
|
- :course-code="datas.basicPaperInfo.courseCode"
|
|
|
|
|
|
+ :filter-data="{
|
|
|
|
+ examId: datas.basicPaperInfo.examId,
|
|
|
|
+ paperNumber: datas.basicPaperInfo.paperNumber,
|
|
|
|
+ }"
|
|
|
|
+ :selected-ids="selectedClassIds"
|
|
|
|
+ :disable-ids="disabledClassIds"
|
|
@confirm="classSelected"
|
|
@confirm="classSelected"
|
|
></select-class-by-course>
|
|
></select-class-by-course>
|
|
</div>
|
|
</div>
|
|
@@ -168,7 +182,7 @@ import { examStructureFindJpg } from "../../api";
|
|
import { cardDetail } from "../../../card/api";
|
|
import { cardDetail } from "../../../card/api";
|
|
|
|
|
|
export default {
|
|
export default {
|
|
- name: "mark-paper-marker",
|
|
|
|
|
|
+ name: "mark-paper-group",
|
|
components: { ModifyMarkerQuestion, ModifyMarkArea, SelectClassByCourse },
|
|
components: { ModifyMarkerQuestion, ModifyMarkArea, SelectClassByCourse },
|
|
props: {
|
|
props: {
|
|
datas: {
|
|
datas: {
|
|
@@ -178,6 +192,7 @@ export default {
|
|
basicPaperInfo: {},
|
|
basicPaperInfo: {},
|
|
paperStructureInfo: [],
|
|
paperStructureInfo: [],
|
|
groupInfo: [],
|
|
groupInfo: [],
|
|
|
|
+ classInfo: [],
|
|
};
|
|
};
|
|
},
|
|
},
|
|
},
|
|
},
|
|
@@ -199,7 +214,7 @@ export default {
|
|
paperList: [],
|
|
paperList: [],
|
|
cardPages: [],
|
|
cardPages: [],
|
|
// 分班阅卷
|
|
// 分班阅卷
|
|
- openClassMark: false,
|
|
|
|
|
|
+ openClassReading: false,
|
|
markerClassList: [],
|
|
markerClassList: [],
|
|
curMarkClass: {},
|
|
curMarkClass: {},
|
|
selectedClassIds: [],
|
|
selectedClassIds: [],
|
|
@@ -256,6 +271,18 @@ export default {
|
|
this.objectiveQuestionCount =
|
|
this.objectiveQuestionCount =
|
|
this.questionCount - this.subjectiveQuestionCount;
|
|
this.questionCount - this.subjectiveQuestionCount;
|
|
|
|
|
|
|
|
+ this.openClassReading = this.datas.basicPaperInfo.openClassReading;
|
|
|
|
+
|
|
|
|
+ if (this.openClassReading) {
|
|
|
|
+ this.markerClassList = this.datas.classInfo.map((item) => {
|
|
|
|
+ let nitem = { ...item };
|
|
|
|
+ nitem.className = nitem.className.split(",");
|
|
|
|
+ return nitem;
|
|
|
|
+ });
|
|
|
|
+ this.updateCasheMarkerClass();
|
|
|
|
+ this.initMarkerClassList();
|
|
|
|
+ }
|
|
|
|
+
|
|
this.$emit("on-ready");
|
|
this.$emit("on-ready");
|
|
},
|
|
},
|
|
updateDisableQuestionIds(filterId) {
|
|
updateDisableQuestionIds(filterId) {
|
|
@@ -325,7 +352,7 @@ export default {
|
|
this.updateGroupNumber();
|
|
this.updateGroupNumber();
|
|
|
|
|
|
// 分班阅卷相关
|
|
// 分班阅卷相关
|
|
- if (!this.openClassMark) return;
|
|
|
|
|
|
+ if (!this.openClassReading) return;
|
|
this.updateCasheMarkerClass();
|
|
this.updateCasheMarkerClass();
|
|
this.initMarkerClassList();
|
|
this.initMarkerClassList();
|
|
},
|
|
},
|
|
@@ -418,7 +445,7 @@ export default {
|
|
this.groupInfo.splice(pos, 1, row);
|
|
this.groupInfo.splice(pos, 1, row);
|
|
},
|
|
},
|
|
// 分班阅卷 --->
|
|
// 分班阅卷 --->
|
|
- openClassMarkChange(val) {
|
|
|
|
|
|
+ openClassReadingChange(val) {
|
|
if (val) {
|
|
if (val) {
|
|
this.initMarkerClassList();
|
|
this.initMarkerClassList();
|
|
} else {
|
|
} else {
|
|
@@ -431,8 +458,11 @@ export default {
|
|
this.groupInfo.forEach((group) => {
|
|
this.groupInfo.forEach((group) => {
|
|
group.markerList.forEach((marker) => {
|
|
group.markerList.forEach((marker) => {
|
|
markerClassList.push({
|
|
markerClassList.push({
|
|
- marker: { ...marker },
|
|
|
|
- classList: this.casheMarkerClass[marker.id] || [],
|
|
|
|
|
|
+ id: marker.id,
|
|
|
|
+ loginName: marker.loginName,
|
|
|
|
+ name: marker.name,
|
|
|
|
+ orgName: marker.orgName,
|
|
|
|
+ className: this.casheMarkerClass[marker.id] || [],
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
});
|
|
@@ -441,24 +471,17 @@ export default {
|
|
updateCasheMarkerClass() {
|
|
updateCasheMarkerClass() {
|
|
let casheMarkerClass = {};
|
|
let casheMarkerClass = {};
|
|
this.markerClassList.forEach((item) => {
|
|
this.markerClassList.forEach((item) => {
|
|
- casheMarkerClass[item.marker.id] = item.classList;
|
|
|
|
|
|
+ casheMarkerClass[item.id] = item.className;
|
|
});
|
|
});
|
|
this.casheMarkerClass = casheMarkerClass;
|
|
this.casheMarkerClass = casheMarkerClass;
|
|
},
|
|
},
|
|
toEditClass(row) {
|
|
toEditClass(row) {
|
|
this.curMarkClass = 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.selectedClassIds = row.className;
|
|
this.$refs.SelectClassByCourse.open();
|
|
this.$refs.SelectClassByCourse.open();
|
|
},
|
|
},
|
|
- classSelected(classList) {
|
|
|
|
- this.curMarkClass.classList = classList;
|
|
|
|
|
|
+ classSelected(className) {
|
|
|
|
+ this.curMarkClass.className = className;
|
|
},
|
|
},
|
|
// 分班阅卷 end --->
|
|
// 分班阅卷 end --->
|
|
checkData() {
|
|
checkData() {
|
|
@@ -474,6 +497,14 @@ export default {
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
|
|
+ if (this.openClassReading) {
|
|
|
|
+ this.markerClassList.forEach((item) => {
|
|
|
|
+ if (!item.className.length) {
|
|
|
|
+ errorMessages.push(`评卷员${item.name}的阅卷班级没有设置`);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
if (errorMessages.length) {
|
|
if (errorMessages.length) {
|
|
this.$message.error(errorMessages.join("。"));
|
|
this.$message.error(errorMessages.join("。"));
|
|
return;
|
|
return;
|
|
@@ -483,12 +514,22 @@ export default {
|
|
this.$emit("next-step");
|
|
this.$emit("next-step");
|
|
},
|
|
},
|
|
getData() {
|
|
getData() {
|
|
- return this.groupInfo.map((item) => {
|
|
|
|
- return { ...item };
|
|
|
|
- });
|
|
|
|
|
|
+ return {
|
|
|
|
+ groupInfo: this.groupInfo.map((item) => {
|
|
|
|
+ return { ...item };
|
|
|
|
+ }),
|
|
|
|
+ basicPaperInfo: Object.assign(this.datas.basicPaperInfo, {
|
|
|
|
+ openClassReading: this.openClassReading,
|
|
|
|
+ }),
|
|
|
|
+ classInfo: this.markerClassList.map((item) => {
|
|
|
|
+ let nitem = { ...item };
|
|
|
|
+ nitem.className = item.className.join();
|
|
|
|
+ return nitem;
|
|
|
|
+ }),
|
|
|
|
+ };
|
|
},
|
|
},
|
|
updateData() {
|
|
updateData() {
|
|
- this.$emit("data-change", { groupInfo: this.getData() });
|
|
|
|
|
|
+ this.$emit("data-change", this.getData());
|
|
},
|
|
},
|
|
},
|
|
},
|
|
};
|
|
};
|