Explorar o código

识别流程完成

Your Name hai 1 ano
pai
achega
3e09ee5802
Modificáronse 5 ficheiros con 151 adicións e 133 borrados
  1. 8 1
      src/api.js
  2. 2 1
      src/router.js
  3. 7 23
      src/views/papers/Index.vue
  4. 35 65
      src/views/papers/cutPaper.vue
  5. 99 43
      src/views/tasks/Index.vue

+ 8 - 1
src/api.js

@@ -144,7 +144,7 @@ export default {
         return axios.get(`${baseURL}/api/admin/doctor/search/list`, { params: params })
     },
     getPaperInfo: params => {
-        return axios.get(`${baseURL}/api/admin/doctor`, { params: params })
+        return axios.get(`${baseURL}/api/admin/papers`, { params: params })
     },
     addPaperInfo: params => {
         return axios.post(`${baseURL}/api/admin/papers`, params)
@@ -171,4 +171,11 @@ export default {
     delMarkTask: params => {
         return axios.delete(`${baseURL}/api/admin/marktask`, { params: params })
     },
+    getMarkTaskStudents: params => {
+        return axios.get(`${baseURL}/api/admin/papers/task/students`, { params: params })
+    },
+    // 学生阅卷任务
+    delMarkTaskStudents: params => {
+        return axios.delete(`${baseURL}/api/admin/marktask/students`, { params: params })
+    },
 }

+ 2 - 1
src/router.js

@@ -77,7 +77,8 @@ export default new Router({
                     path: '/papertpl/cutpaper',
                     component: () =>
                         import ('./views/papers/cutPaper.vue'),
-                    name: '试卷切割'
+                    name: '试卷切割',
+                    hide:1
                 }
                 
             ]

+ 7 - 23
src/views/papers/Index.vue

@@ -60,8 +60,6 @@
           <el-upload
             class="upload-demo"
             action="/api/admin/uploadfile"
-            :on-preview="handlePreview"
-            :on-remove="handleRemove"
             :on-success="handleSuccess"
             :file-list="fileList"
             list-type="picture">
@@ -116,7 +114,7 @@
             })
             .then((res) => {
               if (!res.data.code) {
-                this.$msgSuccess("删除成功");
+                this.msgSuccess("删除成功");
                 this.getData();
               } else {
                 this.$msgError(res.data.message);
@@ -154,9 +152,7 @@
         // this.initCropper();
       },
       handleSuccess(res){
-        console.log(res,222222222222)
-        this.fileList.push(res.data.url)
-        console.log(this.fileList)
+        this.fileList.push({"name":res.data.name,"url":res.data.url})
       },
       edit(id) {
         this.title = "编辑医生";
@@ -165,7 +161,11 @@
       /** 提交按钮 */
       submitForm() {
         this.$refs["form"].validate((valid) => {
-          this.form.imgs = JSON.stringify(this.fileList)
+          let imgs = [];
+          this.fileList.forEach((item,index)=>{
+            imgs.push(item.url)
+          })
+          this.form.imgs = JSON.stringify(imgs)
           if (valid) {
             if (this.form.id != null) {
               this.$api.editPaperInfo(this.form).then((res) => {
@@ -191,22 +191,6 @@
           }
         });
       },
-      remoteMethod(query) {
-        if (query !== "") {
-          // this.loading = true;
-          this.$api
-            .getDoctorsSearchList({
-              name: query,
-            })
-            .then((res) => {
-              this.doctorList = res.data.data;
-              this.$set(this.doctorList, res.data.data);
-              // this.loading = false;
-            });
-        } else {
-          this.doctorList = [];
-        }
-      },
       initCropper() {
         let that = this;
         this.$nextTick(function () {

+ 35 - 65
src/views/papers/cutPaper.vue

@@ -17,16 +17,17 @@
       <el-col :span="6">
           <el-button size="mini" type="primary" v-if="stepNum > 1" @click="stepNum-=1">上一步</el-button>
           <el-button size="mini" type="primary" v-if="stepNum < 3" @click="stepNum+=1">下一步</el-button>
+          <el-button size="mini" type="success" v-if="stepNum == 3" @click="updatePaperRecInfo">保存</el-button>
       </el-col>
     </el-row>
     <el-row>
       <el-col :span="4">
         <div style="padding:0px 10px;">
-          <img width="100%" src="http://118.190.145.217/upload/demo.png" />
+          <img width="100%" :src="curPaperImg" />
         </div>
       </el-col>
       <el-col :span="14" style="background:#fff;">
-        <img id="image" ref="image" width="100%" src="http://118.190.145.217/upload/demo.png" />
+        <img id="image" ref="image" width="100%" :src="curPaperImg" />
       </el-col>
       <el-col :span="6">
         <div style="padding:0px 10px;overflow-y: auto;height: 450px;">
@@ -65,7 +66,7 @@
             
             <el-col :span="12">
                 <h4>题目设置</h4>
-                <div class="tag-group">
+                <!-- <div class="tag-group">
                   <span class="tag-group__title">填涂选项:</span>
                   <el-tag
                     v-for="item in ansOptionList"
@@ -76,7 +77,7 @@
                     >
                     {{ item.label }}
                   </el-tag>
-                </div>
+                </div> -->
                 <div style="margin-top:10px;">
                   <span class="tag-group__title">选项方向:</span>
                   <el-radio v-model="optionDir" :label="1" :value="1">横向</el-radio>
@@ -203,12 +204,14 @@
         radio:1,
         ansImgLoading:false,
         optionDir:1,
-        queDir:1,
+        queDir:2,
         addQueForm:{},
         stdQueList:[
           // {qno:"",score:1,qtype:"单选",stdAns:""}
         ],
-        stdQnoPoints:[]
+        stdQnoPoints:[],
+        curPaperImg:"",
+        recCurAnsImg:""
       };
     },
     methods: {
@@ -239,19 +242,15 @@
       },
       getData() {
         this.loading = true;
-        this.$api.getPapersList(this.queryParams).then((res) => {
-          this.list = res.data.data.list;
-          this.total = res.data.data.total;
+        let params = {id:this.$route.query.id};
+        this.$api.getPaperInfo(params).then((res) => {
+          let imgs = JSON.parse(res.data.data.imgs);
+          this.curPaperImg = imgs[0];
+          this.ansCardImgList = [res.data.data.ansPoints];
+          this.snoImg = res.data.data.khPoints;
+          this.initCropper();
           this.loading = false;
         });
-
-        this.$api
-          .getDoctorsSearchList({})
-          .then((res) => {
-            this.doctorList = res.data.data;
-            this.$set(this.doctorList, res.data.data);
-            // this.loading = false;
-          });
       },
       handleAdd() {
         this.open = true;
@@ -266,56 +265,26 @@
         this.stdQueList = [];
         this.addQueForm = {};
       },
-      /** 提交按钮 */
-      submitForm() {
-        this.$refs["form"].validate((valid) => {
-          if (valid) {
-            if (this.form.id != null) {
-              this.$api.editDoctorInfo(this.form).then((res) => {
-                if (res.data.code == 0) {
-                  this.msgSuccess("成功!");
-                  this.open = false;
-                  this.getData();
-                } else {
-                  this.msgError(res.data.message);
-                }
-              });
-            } else {
-              this.$api.addDoctorInfo(this.form).then((res) => {
-                if (res.data.code == 0) {
-                  this.msgSuccess("成功!");
-                  this.open = false;
-                  this.getData();
-                } else {
-                  this.msgError(res.data.message);
-                }
-              });
-            }
-          }
-        });
-      },
       updatePaperRecInfo(){
-        let params = {id:1,stdQnoPoints:this.stdQnoPoints}
+        if(!this.snoImg){
+          this.msgError("请标注考号区域!")
+          return
+        }
+        if(!this.ansCardImgList.length){
+          this.msgError("请标注客观题区域!")
+          return
+        }
+        let params = {
+          id:1,
+          stdQnoPoints:this.stdQnoPoints,
+          khPoints:this.snoImg,
+          ansPoints:this.ansCardImgList[0]
+        }
         this.$api.updatePaperInfo(params).then(res=>{
-
+          this.msgSuccess("成功!");
+          this.getData();
         })
       },
-      remoteMethod(query) {
-        if (query !== "") {
-          // this.loading = true;
-          this.$api
-            .getDoctorsSearchList({
-              name: query,
-            })
-            .then((res) => {
-              this.doctorList = res.data.data;
-              this.$set(this.doctorList, res.data.data);
-              // this.loading = false;
-            });
-        } else {
-          this.doctorList = [];
-        }
-      },
       initCropper() {
         let that = this;
         this.$nextTick(function () {
@@ -387,11 +356,12 @@
       }
     },
     created() {
-      this.getData();
+      // this.getData();
 
     },
     mounted() {
-      this.initCropper();
+      this.getData();
+      // this.initCropper();
     }
   };
 </script>

+ 99 - 43
src/views/tasks/Index.vue

@@ -32,7 +32,8 @@
     </el-form>
     <el-table v-loading="loading" :data="list" style="width: 100%; margin-top: 10px" height="50vh">
       <el-table-column align="center" prop="name" label="名称" />
-      <el-table-column align="center" prop="phone" label="试卷" />
+      <el-table-column align="center" prop="phone" label="参考人数" />
+      <el-table-column align="center" prop="phone" label="已上传人数" />
       <el-table-column align="center" prop="ctime" label="创建时间" />
       <el-table-column align="center" prop="date" label="操作" width="320">
         <template slot-scope="scope">
@@ -43,7 +44,7 @@
       </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-form ref="form" :model="form" :rules="rules" label-width="80px">
         <el-form-item label="名称" prop="name">
@@ -61,43 +62,73 @@
         <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"></el-image>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button @click="showAnsVisible = false">关 闭</el-button>
+      </div>
+    </el-dialog>
     <!-- 上传试卷 -->
-    <el-dialog title="试卷上传" :visible.sync="uploadDialogVisible" width="90%">
+    <el-dialog title="试卷上传" :visible.sync="uploadDialogVisible" width="90%" @close="closeUploadDialog">
       <el-row :gutter="20">
-        <el-col :span="12">
-          <el-table v-loading="loading" :data="list" style="width: 100%; margin-top: 10px" height="50vh">
-            <el-table-column align="center" prop="name" label="姓名" width="80" />
-            <el-table-column align="center" prop="phone" label="考号" />
-            <el-table-column align="center" prop="ctime" label="创建时间" />
-            <el-table-column align="center" prop="date" label="操作" width="150">
+        <el-col :span="13">
+          <el-row>
+            <el-col :span="6">参考人数:{{studentsList.length}}</el-col>
+            <el-col :span="6">已上传:{{studentsList.length}}</el-col>
+            <el-col :span="6">识别异常:</el-col>
+          </el-row>
+          <el-table v-loading="loading" :data="studentsList" style="width: 100%; margin-top: 10px" height="60vh">
+            <el-table-column align="center" prop="student_name" label="姓名" width="80" />
+            <el-table-column align="center" prop="student_no" label="考号" />
+            <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" label="识别状态">
               <template slot-scope="scope">
-                <el-button @click="edit(scope.row.id)" size="mini" type="warning">编辑</el-button>
-                <el-button @click="del(scope.row.id)" size="mini" type="danger">删除</el-button>
+                <span v-if="scope.row.mark_status==0" style="color:#f78989;">异常</span>
+                <span v-if="scope.row.mark_status==1" style="color:#85ce61;">正常</span>
+              </template>
+            </el-table-column>
+            <el-table-column align="center" prop="ctime" label="时间" width="140px">
+              <template slot-scope="scope">
+                <span style="font-size:12px;">{{scope.row.ctime}}</span>
+              </template>
+            </el-table-column>
+            <el-table-column align="center" prop="date" label="操作" fixed="right" width="100px">
+              <template slot-scope="scope">
+                <el-button @click="showCurRecImg(scope.row)" size="mini" type="text">查看</el-button>
+                <el-button @click="delStudents(scope.row.id)" size="mini" type="text">删除</el-button>
               </template>
             </el-table-column>
           </el-table>
         </el-col>
-        <el-col :span="12">
-          <el-upload
-            class="upload-demo"
-            action="http://118.190.145.217:8091/api/admin/papers/uploadpaper"
-            :on-preview="handlePreview"
-            :on-remove="handleRemove"
-            :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>
+        <el-col :span="11">
+          <div style="height:70vh;overflow-y:scroll;">
+              <el-upload
+                class="upload-demo"
+                action="http://118.190.145.217:8091/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>
+          </div>
         </el-col>
         
       </el-row>
       <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitForm">确 定</el-button>
-        <el-button @click="open = false">取 消</el-button>
+        <el-button type="primary" @click="closeUploadDialog">关 闭</el-button>
       </div>
     </el-dialog>
   </section>
@@ -126,7 +157,11 @@
         uploadDialogVisible: false,
         fileList:[],
         papersList:[],
-        taskid:null
+        taskid:null,
+        timer:null,
+        studentsList:[],
+        showAnsVisible:false,
+        curStudentRecImg:""
       };
     },
     methods: {
@@ -177,17 +212,6 @@
         this.title = "新增医生";
         this.form = {};
       },
-      edit(id) {
-        this.title = "编辑医生";
-        this.$api
-          .getDoctorInfo({
-            id: id,
-          })
-          .then((res) => {
-            this.form = res.data.data;
-            this.open = true;
-          });
-      },
       /** 提交按钮 */
       submitForm() {
         this.$refs["form"].validate((valid) => {
@@ -235,16 +259,48 @@
       openUploadPaper(id) {
         this.uploadDialogVisible = true
         this.taskid = id
+        let that = this;
+        this.loading = true;
+        this.$api.getMarkTaskStudents({task_id:id}).then(res=>{
+          this.studentsList = res.data.data.list;
+          this.loading = false;
+        })
+        this.timer = setInterval(function(){
+          that.$api.getMarkTaskStudents({task_id:id}).then(res=>{
+            that.studentsList = res.data.data.list;
+          })
+        },1000)
+      },
+      closeUploadDialog(){
+        this.uploadDialogVisible=false;
+        this.fileList = [];
+        window.clearInterval(this.timer);
       },
       handlePreview(file) {
         console.log(file);
       },
-      handleUploadSuccess(res,file){
-        // this.fileList.push({"url":res.data.url,"name":res.data.name,"status":"success"})
-        // console.log(file,444444444444)
+      handleUploadSuccess(res,file,fileList){
+        if(!res.code){
+          if(fileList.every(item=>item.status=="success")){
+            fileList.map(item=>{
+              item.response && this.fileList.push({
+                "url":res.data.url,"name":res.data.name
+              })
+            })
+          }
+        }
+      },
+      delStudents(id){
+        this.$api.delMarkTaskStudents({id:id}).then(res=>{
+          this.msgSuccess("删除成功!");
+        })
       },
       handleRemove(e){
         console.log(e)
+      },
+      showCurRecImg(row){
+        this.curStudentRecImg = row.ans_imgs.replace(".png","_draw_ans.png");
+        this.showAnsVisible = true;
       }
     },
     created() {