|
@@ -144,6 +144,34 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+ <div class="action-mark-input">
|
|
|
+ <Form
|
|
|
+ ref="ManualScoreForm"
|
|
|
+ label-position="left"
|
|
|
+ :model="manualScoreModel"
|
|
|
+ :rules="manualScoreModelRules"
|
|
|
+ inline
|
|
|
+ >
|
|
|
+ <FormItem prop="score" label="分数" :show-message="false">
|
|
|
+ <InputNumber
|
|
|
+ :max="manualMaxScore"
|
|
|
+ :min="manualMinScore"
|
|
|
+ :precision="0"
|
|
|
+ v-model="manualScoreModel.score"
|
|
|
+ ></InputNumber>
|
|
|
+ </FormItem>
|
|
|
+ <FormItem>
|
|
|
+ <Button type="primary" size="small" @click="toInputScore">
|
|
|
+ 确定
|
|
|
+ </Button>
|
|
|
+ </FormItem>
|
|
|
+ </Form>
|
|
|
+ <p class="tips-info">
|
|
|
+ <Icon type="md-alert" />分数必须介于{{ manualMinScore }}和{{
|
|
|
+ manualMaxScore
|
|
|
+ }}之间
|
|
|
+ </p>
|
|
|
+ </div>
|
|
|
<div class="action-grade-pass" v-if="rights.levelList">
|
|
|
<Button @click="toPass">跳过</Button>
|
|
|
</div>
|
|
@@ -175,6 +203,7 @@
|
|
|
<script>
|
|
|
import { markHistoryList } from "@/api";
|
|
|
import { CODE_TYPE, CHANGE_LEVEL_STATUS } from "@/constants/enumerate";
|
|
|
+
|
|
|
// 三种情况:
|
|
|
// 管理员(ADMIN),科组长(MARK_LEADER),评卷员(MARKER)
|
|
|
// 管理员:查询,头部信息,评卷记录
|
|
@@ -292,6 +321,26 @@ export default {
|
|
|
codeType: "examNumber",
|
|
|
code: ""
|
|
|
},
|
|
|
+ manualMaxScore: 100,
|
|
|
+ manualMinScore: 0,
|
|
|
+ manualScoreModel: {
|
|
|
+ score: null,
|
|
|
+ manualScore: 1
|
|
|
+ },
|
|
|
+ manualScoreModelRules: {
|
|
|
+ score: [
|
|
|
+ {
|
|
|
+ validator: (rule, value, callback) => {
|
|
|
+ if (value === null) {
|
|
|
+ callback(new Error("请输入分数"));
|
|
|
+ } else {
|
|
|
+ callback();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ trigger: "change"
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ },
|
|
|
codeTypes: [],
|
|
|
CHANGE_LEVEL_STATUS,
|
|
|
applyChangeLevelStatus: null,
|
|
@@ -340,8 +389,22 @@ export default {
|
|
|
})
|
|
|
.filter(item => this.IS_ADMIN || item.key !== "examNumber");
|
|
|
this.rebuildRight();
|
|
|
+ this.getValidScoreArea();
|
|
|
},
|
|
|
methods: {
|
|
|
+ getValidScoreArea() {
|
|
|
+ let nums = [];
|
|
|
+ this.levels.forEach(level => {
|
|
|
+ if (level.levelType === "ADMITED") {
|
|
|
+ nums = [...nums, level.minScore, level.maxScore];
|
|
|
+ } else {
|
|
|
+ let scores = this.curLevel.scoreList.split(",").map(item => item * 1);
|
|
|
+ nums = [...nums, ...scores];
|
|
|
+ }
|
|
|
+ });
|
|
|
+ this.manualMaxScore = Math.max.apply(null, nums);
|
|
|
+ this.manualMinScore = Math.min.apply(null, nums);
|
|
|
+ },
|
|
|
getStepType() {
|
|
|
const paper = this.curPaperOrTask;
|
|
|
if (paper.shift && paper.shiftScore && !paper.level) return "shift";
|
|
@@ -425,7 +488,8 @@ export default {
|
|
|
gradeChangeConfirm() {
|
|
|
this.selectLevel({ name: this.curPaperOrTask.redoLevel });
|
|
|
},
|
|
|
- selectScore(score) {
|
|
|
+ selectScore(score, manualScore = 0) {
|
|
|
+ if (!score && score !== 0) return;
|
|
|
if (this.btnClicked) return;
|
|
|
this.btnClicked = true;
|
|
|
|
|
@@ -433,7 +497,16 @@ export default {
|
|
|
this.btnClicked = false;
|
|
|
}, 500);
|
|
|
// 评卷员打分
|
|
|
- this.$emit("on-select-score", score * 1);
|
|
|
+ this.$emit("on-select-score", { score, manualScore });
|
|
|
+ },
|
|
|
+ async toInputScore() {
|
|
|
+ const valid = await this.$refs.ManualScoreForm.validate();
|
|
|
+ if (!valid) return;
|
|
|
+ this.selectScore(
|
|
|
+ this.manualScoreModel.score,
|
|
|
+ this.manualScoreModel.manualScore
|
|
|
+ );
|
|
|
+ this.manualScoreModel.score = null;
|
|
|
},
|
|
|
toPass() {
|
|
|
this.$emit("on-pass");
|