Your Name 1 year ago
parent
commit
3ff3ff4850
2 changed files with 186 additions and 53 deletions
  1. 111 24
      src/views/tasks/Index.vue
  2. 75 29
      src/views/tasks/markPaper.vue

+ 111 - 24
src/views/tasks/Index.vue

@@ -70,7 +70,7 @@
         </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 align="center" prop="date" label="操作" width="380">
         <template slot-scope="scope">
 
           <el-button @click="jump(
@@ -79,7 +79,7 @@
 	              '&id=' +
 	              scope.row.task_id
             )" size="mini" type="success">开始阅卷</el-button>
-          <el-button @click="edit(scope.row.id)" size="mini" type="warning">阅卷设置</el-button>
+          <el-button @click="remarkSet(scope.row.task_id)" size="mini" type="warning">阅卷设置</el-button>
           <el-button @click="edit(scope.row.id)" 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>
@@ -184,10 +184,7 @@
             </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"
+                :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>
@@ -251,9 +248,10 @@
       <el-dialog title="试卷预览" :visible.sync="imgListVisible" width="750px" @close="closeTaskImgDialog" append-to-body>
         <div style="text-align:right;">
           <font>成功上传:{{taskImgTotal}}</font>&nbsp;&nbsp;&nbsp;&nbsp;
-          <el-button type="primary" size="mini" @click="startRecPaper">开始识别</el-button>
+          <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" >
+        <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>
       </el-dialog>
@@ -278,6 +276,81 @@
         <el-button type="primary" @click="doReTryMark">确 定</el-button>
       </div>
     </el-dialog>
+    <!-- 阅卷设置 -->
+    <el-dialog title="阅卷设置" :visible.sync="remarkSetVisible" width="80%" @close="closeRemarkDialog">
+      <el-tabs v-model="activeSetName" @tab-click="handleClick">
+        <el-tab-pane label="客观题设置" name="first">
+            <el-form :inline="true" v-model="addQueForm">
+                <el-form-item label="题号">
+                  <el-input size="mini" v-model="addQueForm.fQno"></el-input>
+                </el-form-item>
+                <el-form-item label="至">
+                  <el-input size="mini" v-model="addQueForm.tQno"></el-input>
+                </el-form-item>
+                <el-form-item label="分数">
+                  <el-input size="mini" v-model="addQueForm.score"></el-input>
+                </el-form-item>
+                <el-form-item>
+                  <el-button size="mini" type="primary" @click="addQues">设置</el-button>
+                </el-form-item>
+              </el-form>
+              <el-table :data="objectiveQueList">
+                  <el-table-column label="序号" prop="qno" width="60px"></el-table-column>
+                  <el-table-column label="题号" prop="qno"></el-table-column>
+                  <el-table-column label="答案" prop="score"></el-table-column>
+                  <el-table-column label="满分" prop="qtype"></el-table-column>
+                  <el-table-column label="部分分" prop="score"></el-table-column>
+              </el-table>
+        </el-tab-pane>
+        <el-tab-pane label="主观题设置" name="second">
+          <el-form :inline="true" v-model="addQueForm">
+            <el-form-item label="题号">
+              <el-input size="mini" v-model="addQueForm.fQno"></el-input>
+            </el-form-item>
+            <el-form-item label="至">
+              <el-input size="mini" v-model="addQueForm.tQno"></el-input>
+            </el-form-item>
+            <el-form-item label="分数">
+              <el-input size="mini" v-model="addQueForm.score"></el-input>
+            </el-form-item>
+            <el-form-item>
+              <el-button size="mini" type="primary" @click="addQues">设置</el-button>
+            </el-form-item>
+          </el-form>
+          <el-table :data="subjectiveQueList">
+              <el-table-column label="序号" prop="qno" width="60px"></el-table-column>
+              <el-table-column label="题号" prop="qno"></el-table-column>
+              <el-table-column label="分数" prop="score"></el-table-column>
+              <el-table-column label="查看切图" prop="qtype">
+                <template slot-scope="scope">
+                  <span v-if="scope.row.qtype==1">单选</span>
+                  <span v-if="scope.row.qtype==2">多选</span>
+                </template>
+              </el-table-column>
+              <el-table-column label="单双评" prop="score"></el-table-column>
+              <el-table-column label="双评阈值" prop="score"></el-table-column>
+              <el-table-column label="小题设置" prop="score"></el-table-column>
+              <el-table-column label="给分点" prop="score"></el-table-column>
+          </el-table>
+        </el-tab-pane>
+        <el-tab-pane label="分配阅卷员" name="third">
+            <el-table :data="subjectiveMarkTeacherList">
+                <el-table-column label="教工号" prop="qno" width="80px"></el-table-column>
+                <el-table-column label="姓名" prop="qno" width="80px"></el-table-column>
+                <el-table-column label="角色" prop="score" width="80px"></el-table-column>
+                <el-table-column label="试题分配" prop="qtype">
+                    <el-checkbox-group v-model="checkList">
+                        <el-checkbox label="复选框 A"></el-checkbox>
+                        <el-checkbox label="复选框 B"></el-checkbox>
+                        <el-checkbox label="复选框 C"></el-checkbox>
+                        <el-checkbox label="禁用" disabled></el-checkbox>
+                        <el-checkbox label="选中且禁用" disabled></el-checkbox>
+                      </el-checkbox-group>
+                </el-table-column>
+            </el-table>
+        </el-tab-pane>
+      </el-tabs>
+    </el-dialog>
   </section>
 </template>
 <script>
@@ -315,7 +388,7 @@
         papersList: [],
         taskid: null,
         timer: null,
-        timer2:null,
+        timer2: null,
         studentsList: [],
         showAnsVisible: false,
         curStudentRecImg: "",
@@ -334,8 +407,15 @@
         schoolList: [],
         gradeList: [],
         classList: [],
-        imgListVisible:false,
-        taskImgTotal:0
+        imgListVisible: false,
+        taskImgTotal: 0,
+        remarkSetVisible: false,
+        activeSetName: "first",
+        addQueForm:{},
+        objectiveQueList:[],
+        subjectiveQueList:[],
+        subjectiveMarkTeacherList:[],
+        checkList:[]
       };
     },
     methods: {
@@ -562,25 +642,26 @@
         this.remarkDialogVisible = false;
         this.fileList = []
       },
-      closeTaskImgDialog(){
+      closeTaskImgDialog() {
         this.imgListVisible = false;
         window.clearInterval(this.timer2);
       },
       handlePreview(file) {
         console.log(file);
       },
-      handleChange(file,fileList){
-      },
-      openTaskImgList(){
+      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}).then(res=>{
-          that.fileList = res.data.data.list
-          that.taskImgTotal = res.data.data.total;
-        })
-        },2000)
+        this.timer2 = setInterval(function () {
+          that.$api.getTaskImgList({
+            task_id: that.curTaskId
+          }).then(res => {
+            that.fileList = res.data.data.list
+            that.taskImgTotal = res.data.data.total;
+          })
+        }, 2000)
       },
       handleUploadSuccess(res, file, fileList) {
         if (!res.code) {
@@ -709,10 +790,16 @@
           }, 4000)
         })
       },
-      startRecPaper(){
-        this.$api.startRecPaper({task_id:this.curTaskId}).then(res=>{
-
+      startRecPaper() {
+        this.loading = true
+        this.$api.startRecPaper({
+          task_id: this.curTaskId
+        }).then(res => {
+          this.loading = false
         })
+      },
+      remarkSet(task_id) {
+        this.remarkSetVisible = true
       }
     },
     created() {

+ 75 - 29
src/views/tasks/markPaper.vue

@@ -16,16 +16,18 @@
 	  	</el-tabs>
 	  </div>
 	  <div class="yj_area">
-	  	<div class="left" v-if="list1.length>0">
-			<template v-if='tab_index == "1"'>
-				<p>第 <b>{{list1[qno_index].qno}}</b> 题   <span><b>{{stu_index+1}}</b>/{{list1[qno_index].total}}人</span></p>
-				<ul>
-					<li v-for="(item,index) in list2" :key='index' :class="stu_index==index?'act':''" @click="changeStu(index)">
-						<p>{{index+1}}.{{item.student_name}}   <span>{{item.mark_score}}分</span></p>
-						<!-- <img :src="item.imgs" alt=""> -->
-					</li>
-				</ul>
-			</template>
+	  	<div :class="tab_index=='1'?'progress':'left'" v-if="list1.length>0">
+			
+			<template  v-if='tab_index == 1'>
+					<p>批阅进度</p>
+					<ul>
+						<li v-for="(item,index) in list1" :key='index' :class="qno_index==index?'act':''" @click="changeQno(index)">
+							<span>第{{item.qno}}题</span>
+							<el-progress :show-text='false' :percentage="item.mark_num/item.total*100"></el-progress>
+							<span>{{item.mark_num}}/{{item.total}}人</span>
+						</li>
+					</ul>
+				</template>
 			<template v-else>
 				<ul>
 					<li v-for="(item,index) in list1" :key='index' :class="stu_index==index?'act':''" @click="changeStu(index)">
@@ -69,7 +71,7 @@
 			</div>
 		</div>
 		<!-- 进度 -->
-		<div class="progress">
+		<div :class="tab_index=='1'?'left':'progress'">
 				   <div class="mark_df" v-if='0'>
 								  <div class="df_title">
 									   <b>智能阅卷打分板</b><br>
@@ -90,16 +92,15 @@
 									</div>
 								  </div>
 				  </div>
-				  <template  v-if='tab_index == 1'>
-					  <p>批阅进度</p>
-					  <ul>
-						  <li v-for="(item,index) in list1" :key='index' :class="qno_index==index?'act':''" @click="changeQno(index)">
-							  <span>第{{item.qno}}题</span>
-							  <el-progress :show-text='false' :percentage="item.mark_num/item.total*100"></el-progress>
-							  <span>{{item.mark_num}}/{{item.total}}人</span>
-						  </li>
-					  </ul>
-				  </template>
+				  <template v-if='tab_index == "1"'>
+							<p>第 <b>{{list1[qno_index].qno}}</b> 题   <span><b>{{stu_index+1}}</b>/{{list1[qno_index].total}}人</span></p>
+							<ul>
+								<li v-for="(item,index) in list2" :key='index' :class="stu_index==index?'act':''" @click="changeStu(index)">
+									<p>{{index+1}}.{{item.student_name}}   <span>{{item.mark_score}}分</span></p>
+									<!-- <img :src="item.imgs" alt=""> -->
+								</li>
+							</ul>
+						</template>
 				   <template  v-else>
 					  <p>试题</p>
 					  <ul class="papers">
@@ -339,13 +340,16 @@
 						
 						setTimeout(()=>{
 							// init(res.data.data[0].imgs)
-							this.init(res.data.data[0].imgs)
+							// this.init(res.data.data[0].imgs)
+							console.log(res.data.data[0].imgs,333333333333333)
+							this.initFabric(res.data.data[0].imgs)
 						},100)
 					}
 				})
 			},
 			//切换题目
 			changeQno(index){
+				console.log(111111111111111)
 				this.qno_index=index
 				this.first=1
 				this.add_score_step=0
@@ -354,11 +358,11 @@
 					this.stu_index=0
 					this.getDataDetail()
 				}else{
-					
-					this.init(this.list2[index].imgs)
+					// this.init(this.list2[index].imgs)
+					console.log(this.list2[index].imgs,2222222222222222)
+					this.initFabric(this.list2[index].imgs)
 					this.score=this.list2[index].mark_score?this.list2[index].mark_score:''
 				}
-				
 			},
 			//切换学生
 			changeStu(index){
@@ -367,7 +371,8 @@
 				this.add_score_step=0
 				if(this.tab_index == 1){
 					this.score=this.list2[index].mark_score?this.list2[index].mark_score:''
-					this.init(this.list2[index].imgs)
+					// this.init(this.list2[index].imgs)
+					this.initFabric(this.list2[index].imgs)
 				}else{
 					this.list2=[]
 					this.qno_index=0
@@ -647,6 +652,47 @@
 				}
 				this.fabricObjAddEvent()
 			},
+			initFabric(urls){
+				var width=document.querySelector('.mark_area').clientWidth
+				this.fabricObj = new fabric.Canvas("canvas", {
+				  isDrawingMode: true,
+				  selectable: false,
+				  selection: false,
+				  devicePixelRatio: true, //Retina 高清屏 屏幕支持
+				});
+				this.fabricObj.freeDrawingBrush.color = "#E34F51";
+				this.fabricObj.freeDrawingBrush.width = 2;
+				this.fabricObj.setWidth(width-10);
+				let totalHeight = 0;
+				urls.forEach((url,index)=>{
+					var imgElement = new Image();
+					imgElement.src = url;
+					totalHeight += imgElement.height;
+				})
+				
+				this.fabricObj.setHeight(totalHeight);
+				urls.forEach((url,index)=>{
+					var imgElement = new Image();
+					imgElement.src = url;
+					var that=this
+					let scaleX = width/imgElement.width
+					let scaleY = 200/imgElement.height
+
+					imgElement.onload=function(){
+						var legimg = new fabric.Image(imgElement,{  //设置图片位置和样子
+							left:10,
+							top:50 + index*imgElement.height,
+							height:imgElement.height,
+							scaleX:scaleX,
+							// scaleY:scaleY,
+							angle:0,//设置图形顺时针旋转角度
+						});
+						that.fabricObj.add(legimg);
+					}
+				})
+				
+				this.fabricObjAddEvent()
+			},
 			drawScore(text,x,y){
 				var text = new fabric.Textbox(text, {
 				  left: x||20,
@@ -1067,7 +1113,7 @@
 			}
 		}
 		.progress{
-			width: 300px;
+			width: 256px;
 			/* margin-top: 20px; */
 			background-color: #fff;
 			padding: 15px;
@@ -1096,7 +1142,7 @@
 					border-radius: 4px;
 				}
 				.el-progress{
-					width: 60% !important;
+					width: 80% !important;
 					top: 8px;
 				}
 			}
@@ -1171,7 +1217,7 @@
 				display: flex;
 				flex-wrap: wrap;
 				li{
-					width: 47%;
+					width: 46%;
 					/* height: 110px; */
 					/* margin-bottom: 10px; */
 					margin:3px;