|
@@ -31,91 +31,91 @@
|
|
|
</el-row>
|
|
|
</el-form>
|
|
|
<el-table v-loading="loading" :data="list" style="width: 100%; margin-top: 10px" height="50vh">
|
|
|
- <el-table-column prop="name" label="作业名称"> </el-table-column>
|
|
|
- <el-table-column prop="full_score" label="满分">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div class="bold">{{ scope.row.full_score }}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="max_score" label="最高分">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div class="bold">{{ scope.row.max_score }}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="avg_score" label="平均分">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div class="bold">{{ scope.row.avg_score }}</div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="pass_rate" label="及格率">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div class="bold" style="color: #0a9dff">
|
|
|
- {{ scope.row.pass_rate }}
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column prop="phone" label="批阅进度" width="180">
|
|
|
- <template slot-scope="scope">
|
|
|
- <div class="d-f prosss_box">
|
|
|
- <el-progress
|
|
|
- :percentage="scope.row.ww"
|
|
|
- :stroke-width="8"
|
|
|
- :color="
|
|
|
- scope.row.total_students == scope.row.marked_students
|
|
|
- ? '#0A9DFF'
|
|
|
- : '#FA0A2F'
|
|
|
- "
|
|
|
- ></el-progress>
|
|
|
- <div class="contrasts">
|
|
|
- <span>{{ scope.row.marked_students }}/</span>
|
|
|
- <span>{{ scope.row.total_students }}</span>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
- </el-table-column>
|
|
|
- <el-table-column align="center" prop="ctime" label="创建时间" />
|
|
|
- <el-table-column align="center" prop="date" label="操作" width="360">
|
|
|
+ <el-table-column prop="name" label="考试名称"> </el-table-column>
|
|
|
+ <el-table-column prop="phone" label="阅卷进度" width="280">
|
|
|
+ <template slot-scope="scope">
|
|
|
+ 123人已上传,23%阅卷进度,2份仲裁卷
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column align="center" prop="date" label="操作" width="580">
|
|
|
<template slot-scope="scope">
|
|
|
-
|
|
|
<el-button @click="jump(
|
|
|
'/task/markpaper?title=' +
|
|
|
scope.row.name +
|
|
|
'&id=' +
|
|
|
- scope.row.id
|
|
|
- )" size="mini" type="success">开始阅卷</el-button>
|
|
|
- <el-button @click="edit(scope.row.id)" size="mini" type="warning">编辑</el-button>
|
|
|
- <el-button @click="openUploadPaper(scope.row.id)" size="mini" type="primary">上传试卷</el-button>
|
|
|
- <el-button @click="del(scope.row.id)" size="mini" type="danger">删除</el-button>
|
|
|
+ scope.row.task_id
|
|
|
+ )" size="mini" type="success">开始阅卷</el-button>
|
|
|
+ <el-button @click="remarkSet(scope.row)" size="mini" type="warning">阅卷设置</el-button>
|
|
|
+ <!--<el-button @click="edit(scope.row)" size="mini" type="warning">编辑</el-button>-->
|
|
|
+ <el-button @click="openUploadPaper(scope.row.task_id)" size="mini" type="primary">上传试卷</el-button>
|
|
|
+ <el-button @click="del(scope.row.task_id)" size="mini" type="danger">删除</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
<Page ref="pageButton" :current="form.page" :page_size="form.page_size" :total="total" @pageChange="gopage" />
|
|
|
<!-- 新增/编辑阅卷任务 -->
|
|
|
- <el-dialog title="新增/编辑阅卷任务" :visible.sync="open" width="500px" append-to-body>
|
|
|
+ <el-dialog title="新增/编辑阅卷任务" :visible.sync="open" width="80%" append-to-body>
|
|
|
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
|
|
- <el-form-item label="名称" prop="name">
|
|
|
- <el-input clearable v-model="form.name" placeholder="请输入名称"></el-input>
|
|
|
- </el-form-item>
|
|
|
- <el-form-item label="试卷模板" prop="role">
|
|
|
- <el-select v-model="form.paper_id" placeholder="请选择试卷模板" filterable>
|
|
|
- <el-option v-for="item in papersList" :key="item.id" :label="item.name" :value="item.id">
|
|
|
- </el-option>
|
|
|
- </el-select>
|
|
|
- </el-form-item>
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="考试名称" prop="name">
|
|
|
+ <el-input clearable v-model="form.name" placeholder="请输入名称"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="参考班级" prop="role">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-select @change="getClassList" v-model="form.school_id" placeholder="请选择学校" filterable clearable>
|
|
|
+ <el-option v-for="item in schoolList" :key="item.id" :label="item.name" :value="item.school_id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-select @change="getClassList" v-model="form.grade_name" placeholder="请选择年级" filterable clearable>
|
|
|
+ <el-option v-for="item in gradeList" :key="item" :label="item" :value="item">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24" v-if="form.grade_name">
|
|
|
+ <el-checkbox-group v-model="checkClassList">
|
|
|
+ <el-checkbox v-for="item in classList" :key="item.class_id" :label="item.class_id">{{item.name}}
|
|
|
+ </el-checkbox>
|
|
|
+ </el-checkbox-group>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item label="备注" prop="name">
|
|
|
+ <el-input clearable v-model="form.remark" placeholder="请输入备注"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="12">
|
|
|
+ <el-form-item label="试卷模板" prop="role">
|
|
|
+ <el-select v-model="form.paper_id" placeholder="请选择试卷模板" filterable>
|
|
|
+ <el-option v-for="item in papersList" :key="item.id" :label="item.name" :value="item.id">
|
|
|
+ </el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button type="primary" @click="submitForm">确 定</el-button>
|
|
|
<el-button @click="open = false">取 消</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
+
|
|
|
<!-- 预览识别结果 -->
|
|
|
- <el-dialog title="预览识别结果" :visible.sync="showAnsVisible" width="500px" append-to-body>
|
|
|
- <el-form ref="form" :model="form" :rules="rules" label-width="80px">
|
|
|
- <el-image :src="curStudentRecImg">
|
|
|
- <div slot="error" class="image-slot">
|
|
|
- <i class="el-icon-picture-outline"></i>
|
|
|
- </div>
|
|
|
- </el-image>
|
|
|
+ <el-dialog title="预览识别结果" :visible.sync="showAnsVisible" width="1080px" append-to-body>
|
|
|
+ <el-form ref="form" :model="form" :rules="rules" label-width="120px" :inline="true">
|
|
|
+ <el-form-item label="修改考号:" v-if="activeName==-1">
|
|
|
+ <el-input v-model="curStudentNo" />
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item v-if="activeName==-1">
|
|
|
+ <el-button type="primary" @click="saveModifyStudentNo">保存</el-button>
|
|
|
+ </el-form-item>
|
|
|
+ <img :src="curStudentRecImg" id="myCanvasImg" style="display:none;" />
|
|
|
+ <canvas id="myCanvas" ref="myCanvas" :width="srcImgWidth*canvasImgScale" :height="srcImgHeight*canvasImgScale"></canvas>
|
|
|
</el-form>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button @click="showAnsVisible = false">关 闭</el-button>
|
|
@@ -124,7 +124,7 @@
|
|
|
<!-- 上传试卷 -->
|
|
|
<el-dialog title="试卷上传" :visible.sync="uploadDialogVisible" width="90%" @close="closeUploadDialog">
|
|
|
<el-row :gutter="20">
|
|
|
- <el-col :span="16">
|
|
|
+ <el-col :span="24">
|
|
|
<!-- <el-row>
|
|
|
<el-col :span="6">参考人数:{{studentsList.length}}</el-col>
|
|
|
<el-col :span="6">已上传:{{studentsList.length}}</el-col>
|
|
@@ -134,12 +134,12 @@
|
|
|
<el-form-item label="姓名">
|
|
|
<el-input size="mini" placeholder="请输入姓名/考号" v-model="queryName" clearable></el-input>
|
|
|
</el-form-item>
|
|
|
- <el-form-item label="识别异常">
|
|
|
+ <!--<el-form-item label="识别异常">
|
|
|
<el-select v-model="queryMarkStatus" size="mini" clearable>
|
|
|
<el-option v-for="item in $const.recErrorList" :label="item.label" :value="item.value"></el-option>
|
|
|
|
|
|
</el-select>
|
|
|
- </el-form-item>
|
|
|
+ </el-form-item>-->
|
|
|
<el-form-item>
|
|
|
<el-button type="primary" size="mini" @click=searchMarkData>搜索</el-button>
|
|
|
<el-button size="mini" @click="reSetMarkData">重置</el-button>
|
|
@@ -147,36 +147,42 @@
|
|
|
导出</el-button>
|
|
|
<el-button @click="reTryMark" size="mini" type="success" icon="el-icon-printer">重新识别</el-button>
|
|
|
</el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-button size="mini" type="warning" icon="el-icon-printer">
|
|
|
+ 试卷扫描</el-button>
|
|
|
+
|
|
|
+ </el-form-item>
|
|
|
+ <el-form-item>
|
|
|
+ <el-upload class="upload-demo" action="http://test.scxjc.club/api/admin/papers/uploadpaper"
|
|
|
+ :on-success="handleUploadSuccess" :data="{taskid:taskid}" :on-change="handleChange" list-type="picture"
|
|
|
+ multiple>
|
|
|
+ <el-button size="mini" type="primary" @click="openTaskImgList">点击上传</el-button>
|
|
|
+ </el-upload>
|
|
|
+ </el-form-item>
|
|
|
</el-form>
|
|
|
<el-row>
|
|
|
<el-col :span="24">
|
|
|
<el-tabs v-model="activeName" @tab-click="handleTabClick">
|
|
|
- <el-tab-pane :label="'正常('+recSucTotal+')'" name="1"></el-tab-pane>
|
|
|
- <el-tab-pane :label="'异常('+recErrTotal+')'" name="100"></el-tab-pane>
|
|
|
+ <el-tab-pane :label="'正确('+recSucTotal+')'" name="1"></el-tab-pane>
|
|
|
+ <el-tab-pane :label="'考号异常('+recKhErrTotal+')'" name="-1"></el-tab-pane>
|
|
|
+ <el-tab-pane :label="'客观题异常('+recObjErrTotal+')'" name="-2"></el-tab-pane>
|
|
|
+ <el-tab-pane :label="'待上传('+recWaitingErrTotal+')'" name="0"></el-tab-pane>
|
|
|
</el-tabs>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
- <el-table v-loading="loading"
|
|
|
- :data="studentsList"
|
|
|
- style="width: 100%; margin-top: 10px"
|
|
|
- @selection-change="handleSelectionChange"
|
|
|
- height="60vh">
|
|
|
+ <el-table v-loading="loading" :data="studentsList" style="width: 100%; margin-top: 10px"
|
|
|
+ @selection-change="handleSelectionChange" height="60vh">
|
|
|
<el-table-column type="selection" width="45" v-if="activeName==100"></el-table-column>
|
|
|
- <el-table-column align="center" prop="student_no" label="姓名" width="80" />
|
|
|
+ <el-table-column align="center" prop="student_name" label="姓名" width="80" />
|
|
|
<el-table-column align="center" prop="student_no" label="考号" width="150">
|
|
|
<template slot-scope="scope">
|
|
|
<el-button type="text" @click="showStudentImgs(scope.row)" size="mini">{{scope.row.student_no}}
|
|
|
</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column align="center" prop="objective_score" label="得分" />
|
|
|
- <!-- <el-table-column align="center" prop="mark_status" label="试卷状态">
|
|
|
- <template slot-scope="scope">
|
|
|
- <span v-if="scope.row.mark_status==0" style="color:#e6a23c;">待上传</span>
|
|
|
- <span v-if="scope.row.mark_status==1" style="color:#85ce61;">已上传</span>
|
|
|
- </template>
|
|
|
- </el-table-column> -->
|
|
|
- <el-table-column align="center" prop="mark_status_name" label="识别状态">
|
|
|
+ <el-table-column align="center" prop="objective_ans" label="客观题识别结果"/>
|
|
|
+ <el-table-column align="center" prop="objective_score" label="客观题得分" width="100" />
|
|
|
+ <el-table-column align="center" prop="mark_status_name" label="识别状态" width="80">
|
|
|
<template slot-scope="scope">
|
|
|
<span v-if="scope.row.mark_status<=0" style="color:#f78989;">{{scope.row.mark_status_name}}</span>
|
|
|
<span v-if="scope.row.mark_status==1" style="color:#85ce61;">正常</span>
|
|
@@ -187,36 +193,38 @@
|
|
|
<span style="font-size:12px;">{{scope.row.ctime}}</span>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
- <el-table-column align="center" prop="date" label="操作" fixed="right" width="120px">
|
|
|
+ <el-table-column align="center" prop="date" label="操作" fixed="right" width="160px">
|
|
|
<template slot-scope="scope">
|
|
|
- <el-button @click="showCurRecImg(scope.row)" size="mini" type="text">查看</el-button>
|
|
|
- <el-button @click="showCurRecKhImg(scope.row)" size="mini" type="text">考号</el-button>
|
|
|
- <el-button @click="delStudents(scope.row.id,scope.$index)" size="mini" type="text">删除</el-button>
|
|
|
+ <!--<el-button v-if="scope.row.mark_status!=0" @click="showCurRecImg(scope.row)" size="mini" type="text">查看
|
|
|
+ </el-button>
|
|
|
+ <el-button v-if="scope.row.mark_status!=0" @click="showCurRecKhImg(scope.row)" size="mini" type="text">
|
|
|
+ 考号</el-button>-->
|
|
|
+ <el-button @click="delStudents(scope.row.student_id,scope.$index,'delRec')" size="mini" type="text">删除识别结果
|
|
|
+ </el-button>
|
|
|
+ <el-button @click="delStudents(scope.row.student_id,scope.$index,'delStudent')" size="mini" type="text">删除学生
|
|
|
+ </el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
<Page ref="pageButton" :current="recPage" :page_size="recPageSize" :total="recTotal"
|
|
|
@pageChange="goRecPage" />
|
|
|
</el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <div style="height:85vh;overflow-y:scroll;position: relative;">
|
|
|
- <el-button style="position:absolute;top:0px;left:100px;" size="small" type="warning" icon="el-icon-printer">
|
|
|
- 试卷扫描</el-button>
|
|
|
- <span style="position:absolute;top:0px;right:40px;color:green;">成功上传:{{fileList.length}}</span>
|
|
|
- <el-upload class="upload-demo" action="http://test.scxjc.club/api/admin/papers/uploadpaper"
|
|
|
- :on-success="handleUploadSuccess" :file-list="fileList" list-type="picture" :data="{taskid:taskid}"
|
|
|
- multiple>
|
|
|
- <el-button size="small" type="primary">点击上传</el-button>
|
|
|
- <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
|
|
|
- </el-upload>
|
|
|
- <img v-if="fileList.length<1" src="../../assets/scanner.png" alt=""
|
|
|
- style="position:absolute;left: 50%;transform: translate(-50%,120px)">
|
|
|
- </div>
|
|
|
- </el-col>
|
|
|
</el-row>
|
|
|
<div slot="footer" class="dialog-footer">
|
|
|
<el-button type="primary" @click="closeUploadDialog">关 闭</el-button>
|
|
|
</div>
|
|
|
+ <!-- 试卷上传 -->
|
|
|
+ <el-dialog title="试卷预览" :visible.sync="imgListVisible" width="750px" @close="closeTaskImgDialog" append-to-body>
|
|
|
+ <div style="text-align:right;">
|
|
|
+ <font>成功上传:{{taskImgTotal}}</font>
|
|
|
+ <el-button v-loading="loading" type="primary" size="mini" @click="startRecPaper">开始识别</el-button>
|
|
|
+ </div>
|
|
|
+ <div style="width:156px;display: inline-block;margin:10px;border:1px solid #ccc;"
|
|
|
+ v-for="(item,index) in fileList">
|
|
|
+ <el-image width="100px" alt="" :src="item.url" :preview-src-list="[item.url]"></el-image>
|
|
|
+ </div>
|
|
|
+ <Page ref="pageImgButton" :current="imgForm.page" :page_size="imgForm.page_size" :total="taskImgTotal" @pageChange="goTaskImg" />
|
|
|
+ </el-dialog>
|
|
|
</el-dialog>
|
|
|
<!-- 重新识别 -->
|
|
|
<el-dialog title="重新识别" :visible.sync="remarkDialogVisible" width="60%" @close="closeRemarkDialog">
|
|
@@ -238,67 +246,106 @@
|
|
|
<el-button type="primary" @click="doReTryMark">确 定</el-button>
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
+ <!--阅卷设置-->
|
|
|
+ <MarkTaskSetDialog :remarkSetVisible="remarkSetVisible" :paperId="curPaperId" :taskId="curTaskId" @close="closeMarkTaskSet" />
|
|
|
</section>
|
|
|
</template>
|
|
|
<script>
|
|
|
import Page from "../../components/Page";
|
|
|
+ import MarkTaskSetDialog from "./components/MarkTaskSetDialog";
|
|
|
+ import Cropper from 'cropperjs'
|
|
|
export default {
|
|
|
components: {
|
|
|
Page,
|
|
|
+ MarkTaskSetDialog
|
|
|
},
|
|
|
data() {
|
|
|
return {
|
|
|
loading: false,
|
|
|
queryParams: {
|
|
|
page: 1,
|
|
|
- page_size:20
|
|
|
+ page_size: 20
|
|
|
},
|
|
|
form: {
|
|
|
- khVoiceNum:5,
|
|
|
- khFillRate:3.0,
|
|
|
- tmVoiceNum:3,
|
|
|
- tmFillRate:1.8
|
|
|
+ khVoiceNum: 5,
|
|
|
+ khFillRate: 3.0,
|
|
|
+ tmVoiceNum: 3,
|
|
|
+ tmFillRate: 1.8,
|
|
|
+ class_list: ["高三一班", "高三二班"],
|
|
|
+ checkList: []
|
|
|
+ },
|
|
|
+ imgForm:{
|
|
|
+ page:1,
|
|
|
+ page_size:20
|
|
|
},
|
|
|
form1: {},
|
|
|
form2: {},
|
|
|
list: [{}, {}],
|
|
|
total: 0,
|
|
|
+ imgTotal:0,
|
|
|
title: "新增用户",
|
|
|
open: false,
|
|
|
doctorList: [],
|
|
|
rules: {},
|
|
|
uploadDialogVisible: false,
|
|
|
- remarkDialogVisible:false,
|
|
|
+ remarkDialogVisible: false,
|
|
|
fileList: [],
|
|
|
papersList: [],
|
|
|
taskid: null,
|
|
|
timer: null,
|
|
|
+ timer2: null,
|
|
|
studentsList: [],
|
|
|
showAnsVisible: false,
|
|
|
curStudentRecImg: "",
|
|
|
activeName: "1",
|
|
|
curTaskId: null,
|
|
|
+ curPaperId:null,
|
|
|
recPage: 1,
|
|
|
recPageSize: 20,
|
|
|
recTotal: 0,
|
|
|
recParams: {},
|
|
|
recSucTotal: 0,
|
|
|
- recErrTotal: 0,
|
|
|
+ recKhErrTotal: 0,
|
|
|
+ recObjErrTotal: 0,
|
|
|
+ recWaitingErrTotal:0,
|
|
|
queryName: "",
|
|
|
queryMarkStatus: null,
|
|
|
- selectException:[]
|
|
|
+ selectException: [],
|
|
|
+ checkClassList: [],
|
|
|
+ schoolList: [],
|
|
|
+ gradeList: [],
|
|
|
+ classList: [],
|
|
|
+ imgListVisible: false,
|
|
|
+ taskImgTotal: 0,
|
|
|
+ remarkSetVisible: false,
|
|
|
+ activeSetName: "first",
|
|
|
+ addQueForm:{},
|
|
|
+ objectiveQueList:[],
|
|
|
+ subjectiveQueList:[],
|
|
|
+ subjectiveMarkTeacherList:[],
|
|
|
+ checkList:[],
|
|
|
+ srcImgWidth:null,
|
|
|
+ srcImgHeight:null,
|
|
|
+ canvasImgScale:1,
|
|
|
+ ctx:null,
|
|
|
+ curStudentNo:null
|
|
|
};
|
|
|
},
|
|
|
methods: {
|
|
|
- jump(url,id) {
|
|
|
- id==2?localStorage.setItem("sonNav",2):'';
|
|
|
- if (url) {
|
|
|
- this.$router.push(url);
|
|
|
- }
|
|
|
- },
|
|
|
+ jump(url, id) {
|
|
|
+ id == 2 ? localStorage.setItem("sonNav", 2) : '';
|
|
|
+ if (url) {
|
|
|
+ this.$router.push(url);
|
|
|
+ }
|
|
|
+ },
|
|
|
submitUpload() {
|
|
|
this.$refs.upload.submit();
|
|
|
},
|
|
|
+ edit(row){
|
|
|
+ this.open = true;
|
|
|
+ this.form = row;
|
|
|
+ this.classList = row.class_id.split(",");
|
|
|
+ },
|
|
|
del(id) {
|
|
|
this.$confirm("确认删除?", "提示", {
|
|
|
type: "warning",
|
|
@@ -324,6 +371,21 @@
|
|
|
this.queryParams.page = this.$refs.pageButton.page;
|
|
|
this.getData();
|
|
|
},
|
|
|
+ goTaskImg(page){
|
|
|
+ if (page) {
|
|
|
+ this.imgForm.page_size = size;
|
|
|
+ }
|
|
|
+ this.imgForm.page = this.$refs.pageImgButton.page;
|
|
|
+ let that = this;
|
|
|
+ that.$api.getTaskImgList({
|
|
|
+ task_id: that.curTaskId,
|
|
|
+ page:that.imgForm.page,
|
|
|
+ page_size:that.imgForm.page_size
|
|
|
+ }).then(res => {
|
|
|
+ that.fileList = res.data.data.list
|
|
|
+ that.taskImgTotal = res.data.data.total;
|
|
|
+ })
|
|
|
+ },
|
|
|
goRecPage(size) {
|
|
|
if (size) {
|
|
|
this.recPageSize = size;
|
|
@@ -342,17 +404,49 @@
|
|
|
},
|
|
|
getData() {
|
|
|
this.loading = true;
|
|
|
+ // 试卷列表
|
|
|
this.$api
|
|
|
.getPapersSearch({})
|
|
|
.then((res) => {
|
|
|
this.papersList = res.data.data;
|
|
|
this.loading = false
|
|
|
});
|
|
|
+ // 阅卷任务列表
|
|
|
this.$api.getMarkTaskList(this.queryParams).then(res => {
|
|
|
this.total = res.data.data.total;
|
|
|
this.list = res.data.data.list;
|
|
|
})
|
|
|
},
|
|
|
+ getSchoolList() {
|
|
|
+ let params = {
|
|
|
+ school_id: this.form.school_id,
|
|
|
+ grade_name: this.form.grade_name,
|
|
|
+ page: 1,
|
|
|
+ page_size: 1000
|
|
|
+ }
|
|
|
+ // 学校列表
|
|
|
+ this.$api.schoolList(params).then(res => {
|
|
|
+ this.schoolList = res.data.data.list;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getGradeList() {
|
|
|
+ // 年级列表
|
|
|
+ this.$api.gradeList({}).then(res => {
|
|
|
+ this.gradeList = res.data.data;
|
|
|
+ })
|
|
|
+ },
|
|
|
+ getClassList() {
|
|
|
+ let params = {
|
|
|
+ school_id: this.form.school_id,
|
|
|
+ grade_name: this.form.grade_name,
|
|
|
+ page: 1,
|
|
|
+ page_size: 1000
|
|
|
+ }
|
|
|
+ // 班级列表
|
|
|
+ this.$api.classList(params).then(res => {
|
|
|
+ this.classList = res.data.data.list;
|
|
|
+ })
|
|
|
+ },
|
|
|
handleAdd() {
|
|
|
this.open = true;
|
|
|
this.title = "新增医生";
|
|
@@ -362,6 +456,11 @@
|
|
|
submitForm() {
|
|
|
this.$refs["form"].validate((valid) => {
|
|
|
if (valid) {
|
|
|
+ this.form.class_id = this.checkClassList.join();
|
|
|
+ let selSchool = this.schoolList.filter(item => item.school_id == this.form.school_id);
|
|
|
+ this.form.school_name = selSchool[0].name;
|
|
|
+ let selClass = this.classList.filter(item => this.checkClassList.indexOf(item.class_id) != -1);
|
|
|
+ this.form.class_name = selClass.map(item => item.name).join();
|
|
|
if (this.form.id != null) {
|
|
|
this.$api.editMarkTask(this.form).then((res) => {
|
|
|
if (res.data.code == 0) {
|
|
@@ -417,6 +516,9 @@
|
|
|
this.openUploadPaper(this.curTaskId);
|
|
|
},
|
|
|
openUploadPaper(id) {
|
|
|
+ const routeData = this.$router.resolve({path:"/task/uploadPaper",query:{id:id}});
|
|
|
+ window.open(routeData.href, '_blank');
|
|
|
+ return
|
|
|
this.curTaskId = id
|
|
|
this.uploadDialogVisible = true
|
|
|
this.taskid = id
|
|
@@ -444,7 +546,9 @@
|
|
|
})
|
|
|
this.recTotal = res.data.data.total;
|
|
|
this.recSucTotal = res.data.data.suc_total;
|
|
|
- this.recErrTotal = res.data.data.err_total;
|
|
|
+ this.recKhErrTotal = res.data.data.kh_err_total;
|
|
|
+ this.recObjErrTotal = res.data.data.obj_err_cnt;
|
|
|
+ this.recWaitingErrTotal = res.data.data.waiting_cnt;
|
|
|
this.loading = false;
|
|
|
})
|
|
|
window.clearInterval(this.timer);
|
|
@@ -463,7 +567,9 @@
|
|
|
})
|
|
|
that.recTotal = res.data.data.total;
|
|
|
that.recSucTotal = res.data.data.suc_total;
|
|
|
- that.recErrTotal = res.data.data.err_total;
|
|
|
+ that.recKhErrTotal = res.data.data.kh_err_total;
|
|
|
+ that.recObjErrTotal = res.data.data.obj_err_cnt;
|
|
|
+ that.recWaitingErrTotal = res.data.data.waiting_cnt;
|
|
|
})
|
|
|
}, 4000)
|
|
|
},
|
|
@@ -472,12 +578,33 @@
|
|
|
this.fileList = [];
|
|
|
window.clearInterval(this.timer);
|
|
|
},
|
|
|
- closeRemarkDialog(){
|
|
|
+ closeRemarkDialog() {
|
|
|
this.remarkDialogVisible = false;
|
|
|
+ this.fileList = []
|
|
|
+ },
|
|
|
+ closeTaskImgDialog() {
|
|
|
+ this.imgListVisible = false;
|
|
|
+ window.clearInterval(this.timer2);
|
|
|
},
|
|
|
handlePreview(file) {
|
|
|
console.log(file);
|
|
|
},
|
|
|
+ handleChange(file, fileList) {},
|
|
|
+ openTaskImgList() {
|
|
|
+ let that = this;
|
|
|
+ this.imgListVisible = true
|
|
|
+ window.clearInterval(this.timer2);
|
|
|
+ this.timer2 = setInterval(function () {
|
|
|
+ that.$api.getTaskImgList({
|
|
|
+ task_id: that.curTaskId,
|
|
|
+ page:that.imgForm.page,
|
|
|
+ page_size:that.imgForm.page_size
|
|
|
+ }).then(res => {
|
|
|
+ that.fileList = res.data.data.list
|
|
|
+ that.taskImgTotal = res.data.data.total;
|
|
|
+ })
|
|
|
+ }, 2000)
|
|
|
+ },
|
|
|
handleUploadSuccess(res, file, fileList) {
|
|
|
if (!res.code) {
|
|
|
if (fileList.every(item => item.status == "success")) {
|
|
@@ -490,9 +617,10 @@
|
|
|
}
|
|
|
}
|
|
|
},
|
|
|
- delStudents(id, index) {
|
|
|
+ delStudents(id, index,action) {
|
|
|
this.$api.delMarkTaskStudents({
|
|
|
- id: id
|
|
|
+ id: id,
|
|
|
+ action:action
|
|
|
}).then(res => {
|
|
|
this.msgSuccess("删除成功!");
|
|
|
this.studentsList.splice(index, 1)
|
|
@@ -501,9 +629,63 @@
|
|
|
handleRemove(e) {
|
|
|
console.log(e)
|
|
|
},
|
|
|
+ drawRect(x, y, lineW, lineY) {
|
|
|
+ // 开始绘制;
|
|
|
+ this.ctx.beginPath();
|
|
|
+ // //设置线条颜色,必须放在绘制之前
|
|
|
+ this.ctx.strokeStyle = "red";
|
|
|
+ // console.log("44444444");
|
|
|
+ // // 线宽设置,必须放在绘制之前
|
|
|
+ this.ctx.lineWidth = 1;
|
|
|
+ // console.log("5555555555");
|
|
|
+ // strokeRect参数:(左上角x坐标,y:左上角y坐标,绘画矩形的宽度,绘画矩形的高度)
|
|
|
+ this.ctx.strokeRect(x, y, lineW, lineY);
|
|
|
+ // console.log("66666666666666");
|
|
|
+ },
|
|
|
showStudentImgs(row) {
|
|
|
- this.curStudentRecImg = row.imgs;
|
|
|
+ this.curStudentRecImg = JSON.parse(row.imgs)[0];
|
|
|
this.showAnsVisible = true;
|
|
|
+ this.curStudentNo = row.student_no;
|
|
|
+ this.form.student_no = this.curStudentNo;
|
|
|
+ let that = this;
|
|
|
+
|
|
|
+ this.$nextTick(function () {
|
|
|
+ let objective_result = row.objective_result;
|
|
|
+ that.canvas = document.getElementById("myCanvas");
|
|
|
+ that.ctx = that.canvas.getContext("2d");
|
|
|
+
|
|
|
+ let image = new Image();
|
|
|
+ image.src = that.curStudentRecImg;
|
|
|
+
|
|
|
+ image.onload = function(){
|
|
|
+ that.srcImgWidth = image.width;
|
|
|
+ that.srcImgHeight = image.height;
|
|
|
+ that.canvasImgScale = 1000/image.width;
|
|
|
+ that.ctx.drawImage(image, 0, 0, that.srcImgWidth, that.srcImgHeight, 0, 0, that.srcImgWidth*that.canvasImgScale, that
|
|
|
+ .srcImgHeight*that.canvasImgScale)
|
|
|
+
|
|
|
+ objective_result.forEach(item=>{
|
|
|
+ item.forEach(iitem=>{
|
|
|
+ that.drawRect(iitem.absX*that.canvasImgScale,iitem.absY*that.canvasImgScale,iitem.w*that.canvasImgScale,iitem.h*that.canvasImgScale);
|
|
|
+ that.ctx.font = '12px Arial';
|
|
|
+ that.ctx.fillStyle = 'red';
|
|
|
+ that.ctx.fillText(iitem.ans, iitem.absX*that.canvasImgScale,iitem.absY*that.canvasImgScale);
|
|
|
+ })
|
|
|
+ })
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ saveModifyStudentNo(){
|
|
|
+ let params = {
|
|
|
+ student_no:this.curStudentNo,
|
|
|
+ task_id:this.curTaskId
|
|
|
+ }
|
|
|
+ this.$api.saveModifyStudentNo(params).then(res=>{
|
|
|
+ console.log(res,1111111111111)
|
|
|
+ })
|
|
|
},
|
|
|
showCurRecImg(row) {
|
|
|
this.curStudentRecImg = row.ans_imgs.replace(".png", "_draw_ans.png");
|
|
@@ -556,61 +738,87 @@
|
|
|
},
|
|
|
handleSelectionChange(val) {
|
|
|
this.selectException = [];
|
|
|
- if(val.length > 0){
|
|
|
- val.forEach(item=>{
|
|
|
- let task_img = item.task_id+";;"+item.imgs+";;"+item.id;
|
|
|
+ if (val.length > 0) {
|
|
|
+ val.forEach(item => {
|
|
|
+ let task_img = item.task_id + ";;" + item.imgs + ";;" + item.id;
|
|
|
this.selectException.push(task_img);
|
|
|
})
|
|
|
window.clearInterval(this.timer);
|
|
|
}
|
|
|
},
|
|
|
- reTryMark(){
|
|
|
- if(this.selectException.length < 1){
|
|
|
+ reTryMark() {
|
|
|
+ if (this.selectException.length < 1) {
|
|
|
this.msgError("请选择需要重新识别的答卷!");
|
|
|
- }else{
|
|
|
+ } else {
|
|
|
this.remarkDialogVisible = true;
|
|
|
}
|
|
|
},
|
|
|
- doReTryMark(){
|
|
|
+ doReTryMark() {
|
|
|
let urls = []
|
|
|
- this.selectException.forEach(item=>{
|
|
|
+ this.selectException.forEach(item => {
|
|
|
item = item + ";;" + String(this.form.khVoiceNum) + ";;" + String(this.form.khFillRate);
|
|
|
item = item + ";;" + String(this.form.tmVoiceNum) + ";;" + String(this.form.tmFillRate);
|
|
|
urls.push(item);
|
|
|
})
|
|
|
let that = this;
|
|
|
- this.$api.reTryMarkPaper({urls:urls}).then(res=>{
|
|
|
+ this.$api.reTryMarkPaper({
|
|
|
+ urls: urls
|
|
|
+ }).then(res => {
|
|
|
this.remarkDialogVisible = false;
|
|
|
this.getData();
|
|
|
window.clearInterval(this.timer);
|
|
|
this.timer = setInterval(function () {
|
|
|
- that.$api.getMarkTaskStudents(that.recParams).then(res => {
|
|
|
- that.studentsList = res.data.data.list;
|
|
|
- that.studentsList.forEach(item => {
|
|
|
- let mark_status = item.mark_status;
|
|
|
- if (mark_status != 1) {
|
|
|
- item.mark_status_name = that.$const.recErrorList.filter((ritem) => {
|
|
|
- return ritem.value == mark_status;
|
|
|
- })[0].label
|
|
|
- } else {
|
|
|
- item.mark_status_name = "正常"
|
|
|
- }
|
|
|
+ that.$api.getMarkTaskStudents(that.recParams).then(res => {
|
|
|
+ that.studentsList = res.data.data.list;
|
|
|
+ that.studentsList.forEach(item => {
|
|
|
+ let mark_status = item.mark_status;
|
|
|
+ if (mark_status != 1) {
|
|
|
+ item.mark_status_name = that.$const.recErrorList.filter((ritem) => {
|
|
|
+ return ritem.value == mark_status;
|
|
|
+ })[0].label
|
|
|
+ } else {
|
|
|
+ item.mark_status_name = "正常"
|
|
|
+ }
|
|
|
+ })
|
|
|
+ that.recTotal = res.data.data.total;
|
|
|
+ that.recSucTotal = res.data.data.suc_total;
|
|
|
+ that.recKhErrTotal = res.data.data.kh_err_total;
|
|
|
+ that.recObjErrTotal = res.data.data.obj_err_cnt;
|
|
|
+ that.recWaitingErrTotal = res.data.data.waiting_cnt;
|
|
|
})
|
|
|
- that.recTotal = res.data.data.total;
|
|
|
- that.recSucTotal = res.data.data.suc_total;
|
|
|
- that.recErrTotal = res.data.data.err_total;
|
|
|
- })
|
|
|
- }, 4000)
|
|
|
+ }, 4000)
|
|
|
})
|
|
|
+ },
|
|
|
+ startRecPaper() {
|
|
|
+ this.loading = true
|
|
|
+ this.$api.startRecPaper({
|
|
|
+ task_id: this.curTaskId
|
|
|
+ }).then(res => {
|
|
|
+ this.loading = false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ remarkSet(row) {
|
|
|
+ this.remarkSetVisible = true
|
|
|
+ this.curTaskId = row.task_id;
|
|
|
+ this.curPaperId = row.paper_id;
|
|
|
+ },
|
|
|
+ closeMarkTaskSet(){
|
|
|
+ this.remarkSetVisible = false
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
|
this.getData();
|
|
|
-
|
|
|
+ this.getSchoolList();
|
|
|
+ this.getGradeList();
|
|
|
+ this.getClassList();
|
|
|
},
|
|
|
};
|
|
|
</script>
|
|
|
<style lang="scss">
|
|
|
+ .el-upload-list {
|
|
|
+ display: none !important;
|
|
|
+ }
|
|
|
+
|
|
|
.el-upload-list--picture .el-upload-list__item {
|
|
|
width: 150px;
|
|
|
float: left;
|
|
@@ -628,17 +836,21 @@
|
|
|
.el-upload-list--picture .el-upload-list__item-thumbnail {
|
|
|
width: 125px;
|
|
|
}
|
|
|
+
|
|
|
.prosss_box .el-progress.el-progress--line {
|
|
|
width: 88px;
|
|
|
margin: auto 5px auto 0;
|
|
|
}
|
|
|
+
|
|
|
.prosss_box .el-progress-bar {
|
|
|
padding-right: 0;
|
|
|
}
|
|
|
+
|
|
|
.prosss_box .el-progress__text {
|
|
|
display: none;
|
|
|
}
|
|
|
- .prosss_box{
|
|
|
- display:flex;
|
|
|
+
|
|
|
+ .prosss_box {
|
|
|
+ display: flex;
|
|
|
}
|
|
|
</style>
|