Browse Source

更新多媒体接口相关

ting.yin 4 năm trước cách đây
mục cha
commit
fed7cacbfa

+ 4 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamStudent.java

@@ -803,4 +803,8 @@ public class ExamStudent implements Serializable {
         this.inspectTime = inspectTime;
     }
 
+    public void setSecretNumber(String secretNumber) {
+        this.secretNumber = secretNumber;
+    }
+
 }

+ 1 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/DataSyncController.java

@@ -3,7 +3,6 @@ package cn.com.qmth.stmms.admin.exam;
 import cn.com.qmth.stmms.admin.dto.SubjectiveQuestionDTO;
 import cn.com.qmth.stmms.admin.thread.DataSyncThread;
 import cn.com.qmth.stmms.admin.utils.HttpUtil;
-import cn.com.qmth.stmms.admin.utils.SessionExamUtils;
 import cn.com.qmth.stmms.biz.exam.model.DataSync;
 import cn.com.qmth.stmms.biz.exam.service.*;
 import cn.com.qmth.stmms.biz.file.service.FileService;
@@ -129,7 +128,7 @@ public class DataSyncController extends BaseExamController {
         } else {
             addMessage(redirectAttributes, "同步失败");
         }
-        return "redirect:/admin/exam-list";
+        return "redirect:/admin/exam/list";
     }
 
     @Logging(menu = "导出多媒体试卷结构", type = LogType.EXPORT)

+ 14 - 10
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/LibraryController.java

@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.admin.exam;
 
 import cn.com.qmth.stmms.biz.exam.model.*;
 import cn.com.qmth.stmms.biz.exam.service.*;
+import cn.com.qmth.stmms.biz.file.enums.FormatType;
 import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
@@ -14,6 +15,7 @@ import cn.com.qmth.stmms.common.domain.WebUser;
 import cn.com.qmth.stmms.common.enums.*;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 import net.sf.json.JSONObject;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -25,6 +27,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -78,8 +81,8 @@ public class LibraryController extends BaseExamController {
         if (query.getSubjectCode() == null && !subjectList.isEmpty()) {
             query.setSubjectCode(subjectList.get(0).getCode());
         }
-        List<MarkGroup> groupList = groupService
-                .findByExamAndSubjectAndStatus(examId, query.getSubjectCode(), MarkStatus.FORMAL);
+        List<MarkGroup> groupList = groupService.findByExamAndSubjectAndStatus(examId, query.getSubjectCode(),
+                MarkStatus.FORMAL);
         // if (groupList.isEmpty()) {
         // return "redirect:/admin/exam/mark";
         // }
@@ -95,9 +98,8 @@ public class LibraryController extends BaseExamController {
                 }
             }
             for (MarkGroup group : groupList) {
-                group.setQuestionList(questionService
-                        .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, group.getSubjectCode(), false,
-                                group.getNumber()));
+                group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
+                        group.getSubjectCode(), false, group.getNumber()));
             }
         }
         MarkLibrarySearchQuery query2 = new MarkLibrarySearchQuery();
@@ -133,8 +135,9 @@ public class LibraryController extends BaseExamController {
                     lockService.watch(LockType.EXAM_SUBJECT, library.getExamId(), library.getSubjectCode());
                     lockService.watch(LockType.GROUP, library.getExamId(), library.getSubjectCode(),
                             library.getGroupNumber());
-                    if ((library.getStatus().equals(LibraryStatus.MARKED) || library.getStatus()
-                            .equals(LibraryStatus.PROBLEM)) && markService.backLibrary(library, wu.getId())) {
+                    if ((library.getStatus().equals(LibraryStatus.MARKED) || library.getStatus().equals(
+                            LibraryStatus.PROBLEM))
+                            && markService.backLibrary(library, wu.getId())) {
                         obj.accumulate("success", true);
                     } else {
                         obj.accumulate("success", false);
@@ -167,9 +170,8 @@ public class LibraryController extends BaseExamController {
         int examId = getSessionExamId(request);
         ExamStudent student = studentService.findById(studentId);
         if (groupNumber != null) {
-            List<ExamQuestion> questions = questionService
-                    .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, student.getSubjectCode(), false,
-                            groupNumber);
+            List<ExamQuestion> questions = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
+                    student.getSubjectCode(), false, groupNumber);
             List<String> strings = new ArrayList<String>();
             for (ExamQuestion examQuestion : questions) {
                 strings.add(examQuestion.getQuestionNumber());
@@ -179,6 +181,8 @@ public class LibraryController extends BaseExamController {
         }
         model.addAttribute("fileServer", fileService.getFileServer());
         model.addAttribute("answerUrl", fileService.getJsonUri(student.getExamId(), student.getSecretNumber()));
+        model.addAttribute("paperUrl",
+                fileService.getPaperUri(student.getExamId(), student.getSubjectCode(), FormatType.JSON));
         return "modules/exam/jsonView";
     }
 }

+ 19 - 14
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/TrialController.java

@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.admin.exam;
 
 import cn.com.qmth.stmms.biz.exam.model.*;
 import cn.com.qmth.stmms.biz.exam.service.*;
+import cn.com.qmth.stmms.biz.file.enums.FormatType;
 import cn.com.qmth.stmms.biz.file.service.FileService;
 import cn.com.qmth.stmms.biz.lock.LockService;
 import cn.com.qmth.stmms.biz.mark.model.TrialHistory;
@@ -19,6 +20,7 @@ import cn.com.qmth.stmms.common.utils.DateUtils;
 import cn.com.qmth.stmms.common.utils.RequestUtils;
 import net.sf.json.JSONArray;
 import net.sf.json.JSONObject;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,6 +32,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 
 import javax.servlet.http.HttpServletRequest;
+
 import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.List;
@@ -84,8 +87,8 @@ public class TrialController extends BaseExamController {
         if (query.getSubjectCode() == null && !subjectList.isEmpty()) {
             query.setSubjectCode(subjectList.get(0).getCode());
         }
-        List<MarkGroup> groupList = groupService
-                .findByExamAndSubjectAndStatus(examId, query.getSubjectCode(), MarkStatus.TRIAL);
+        List<MarkGroup> groupList = groupService.findByExamAndSubjectAndStatus(examId, query.getSubjectCode(),
+                MarkStatus.TRIAL);
         if (!groupList.isEmpty()) {
             if (query.getGroupNumber() == null) {
                 query.setGroupNumber(groupList.get(0).getNumber());
@@ -96,9 +99,8 @@ public class TrialController extends BaseExamController {
                 library.setMarkCount(trialService.countHistory(library.getId()));
             }
             for (MarkGroup group : groupList) {
-                group.setQuestionList(questionService
-                        .findByExamAndSubjectAndObjectiveAndGroupNumber(examId, group.getSubjectCode(), false,
-                                group.getNumber()));
+                group.setQuestionList(questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
+                        group.getSubjectCode(), false, group.getNumber()));
             }
             model.addAttribute("group",
                     groupService.findOne(query.getExamId(), query.getSubjectCode(), query.getGroupNumber()));
@@ -118,8 +120,8 @@ public class TrialController extends BaseExamController {
         int examId = getSessionExamId(request);
         TrialLibrary library = trialService.findLibrary(libraryId);
         if (library != null) {
-            if (library.getExamId().equals(examId) && subjectCheck(library.getSubjectCode(),
-                    RequestUtils.getWebUser(request))) {
+            if (library.getExamId().equals(examId)
+                    && subjectCheck(library.getSubjectCode(), RequestUtils.getWebUser(request))) {
                 try {
                     lockService.watch(LockType.GROUP, library.getExamId(), library.getSubjectCode(),
                             library.getGroupNumber());
@@ -160,17 +162,18 @@ public class TrialController extends BaseExamController {
         Exam exam = examService.findById(library.getExamId());
         if (library != null) {
             ExamStudent student = studentService.findById(library.getStudentId());
-            MarkGroup group = groupService
-                    .findOne(library.getExamId(), library.getSubjectCode(), library.getGroupNumber());
+            MarkGroup group = groupService.findOne(library.getExamId(), library.getSubjectCode(),
+                    library.getGroupNumber());
             if (group != null && student != null) {
                 obj.accumulate("success", true);
                 if (ExamType.MULTI_MEDIA.equals(exam.getType())) {
                     // 多媒体配置
                     obj.accumulate("fileServer", fileService.getFileServer());
                     obj.accumulate("urls", fileService.getJsonUri(student.getExamId(), student.getSecretNumber()));
-                    List<ExamQuestion> questions = questionService
-                            .findByExamAndSubjectAndObjectiveAndGroupNumber(library.getExamId(),
-                                    student.getSubjectCode(), false, group.getNumber());
+                    obj.accumulate("paperUrl",
+                            fileService.getPaperUri(student.getExamId(), student.getSubjectCode(), FormatType.JSON));
+                    List<ExamQuestion> questions = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(
+                            library.getExamId(), student.getSubjectCode(), false, group.getNumber());
                     List<String> strings = new ArrayList<String>();
                     for (ExamQuestion examQuestion : questions) {
                         strings.add(examQuestion.getQuestionNumber());
@@ -180,8 +183,10 @@ public class TrialController extends BaseExamController {
                 } else {
                     // 裁切图配置
                     obj.accumulate("fileServer", fileService.getFileServer());
-                    obj.accumulate("urls", fileService
-                            .getSliceUris(student.getExamId(), student.getSecretNumber(), 1, student.getSliceCount()));
+                    obj.accumulate(
+                            "urls",
+                            fileService.getSliceUris(student.getExamId(), student.getSecretNumber(), 1,
+                                    student.getSliceCount()));
                     obj.accumulate("pictureConfig", group.getPictureConfigList());
                 }
                 // 评卷记录集合

+ 8 - 8
stmms-web/src/main/java/cn/com/qmth/stmms/admin/thread/DataSyncThread.java

@@ -70,9 +70,9 @@ public class DataSyncThread implements Runnable {
 
     public static final String SIZE = "size";
 
-    public DataSyncThread(DataSync dataSync, Integer pageSize, LockService lockService, DataSyncService dataSyncService,
-            ExamService examService, ExamStudentService studentService, ExamSubjectService subjectService,
-            FileService fileService) {
+    public DataSyncThread(DataSync dataSync, Integer pageSize, LockService lockService,
+            DataSyncService dataSyncService, ExamService examService, ExamStudentService studentService,
+            ExamSubjectService subjectService, FileService fileService) {
         this.dataSync = dataSync;
         this.lockService = lockService;
         this.dataSyncService = dataSyncService;
@@ -115,11 +115,10 @@ public class DataSyncThread implements Runnable {
                 datas.put(SUBJECT_CODE, subjectCode);
                 String paperResult = subjectPaperHttp.httpAction(null, datas.toString());
                 JSONObject paperJson = JSONObject.fromObject(paperResult);
-                String paper = paperJson.getString("subjectivePaperList");
+                String paper = paperJson.getString("subjectivePaper");
                 byte[] paperData = paper.getBytes(StandardCharsets.UTF_8);
-                fileService
-                        .uploadPaper(new ByteArrayInputStream(paperData), BinaryUtil.encodeMD5(paperData), exam.getId(),
-                                subjectCode, FormatType.JSON);
+                fileService.uploadPaper(new ByteArrayInputStream(paperData), BinaryUtil.encodeMD5(paperData),
+                        exam.getId(), subjectCode, FormatType.JSON);
                 // 获取考生
                 Long startId = 0L;
                 ExamSubject examSubject = subjectService.find(exam.getId(), subjectCode);
@@ -183,12 +182,13 @@ public class DataSyncThread implements Runnable {
                         examStudent.setAnswers(null);
                         examStudent.setBatchCode(null);
                         examStudent.setUploadTime(now);
+                        examStudent.setSecretNumber(examStudent.getExamNumber());
                         list.add(examStudent);
 
                         String answerJson = student.getString(SUBJECTIVES);
                         byte[] jsonData = answerJson.getBytes(StandardCharsets.UTF_8);
                         fileService.uploadJson(new ByteArrayInputStream(jsonData), BinaryUtil.encodeMD5(jsonData),
-                                exam.getId(), examStudent.getExamNumber());
+                                exam.getId(), examStudent.getSecretNumber());
                     }
                     int count = studentService.batchSave(list);
                     if (count > 0) {

+ 3 - 2
stmms-web/src/main/java/cn/com/qmth/stmms/student/StudentScoreController.java

@@ -37,8 +37,9 @@ public class StudentScoreController {
         if (school == null) {
             model.addAttribute("message", "...");
         }
+
         model.addAttribute("school", school);
-        return "modules/card/login";
+        return "modules/student/login";
     }
 
     @RequestMapping(value = "/{schoolId}/query", method = RequestMethod.POST)
@@ -47,7 +48,7 @@ public class StudentScoreController {
         List<ExamStudent> list = studentService.findBySchoolIdAndStudentCodeAndName(schoolId, studentCode.trim(),
                 name.trim());
         model.addAttribute("list", list);
-        return "modules/card/list";
+        return "modules/student/list";
     }
 
 }

+ 26 - 11
stmms-web/src/main/webapp/WEB-INF/views/include/trialDetail.jsp

@@ -67,17 +67,32 @@
                         });
                     } else if (data.fileServer != undefined && data.questionNumbers != undefined) {
                         var url = data.fileServer + data.urls;
+                        var paperUrl = data.fileServer + data.paperUrl;
                         var questionNumbers = data.questionNumbers.split(",");
                         let questionArr = {};
                         questionNumbers.forEach(questionNumber => {
                             questionArr[questionNumber] = true;
                         });
-                        $.get(url, function (result) {
-                            let questions = JSON.parse(result) || [];
-                            //var result = '[{"mainNumber": 6,"subNumber": 19,"body": {"sections": [{ "blocks":[{"type": "text","value": "我是题目我是题目我是题目"}]}]},"answer": {"sections": [{"blocks":[{"type": "image","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/20/3_8_20_15748452889591137.jpeg"}]},{"blocks":[{"type": "audio","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/19/3_8_19_15748452552644264.mp3"}]}]},"studentAnswer": {"sections": [{"blocks":[{"type": "image","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/20/3_8_20_15748452889591137.jpeg"},{"type": "image","value": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1582709869784&di=39683b1330bd09bebd93c95fe925ca70&imgtype=0&src=http%3A%2F%2Fn.sinaimg.cn%2Fsinacn10108%2F170%2Fw600h370%2F20190222%2Fd6de-htknpmh2595255.jpg"},{"type": "text","value": "我是答案答案daan"}]}]}}]';
-                            //let questions = JSON.parse(result);
-
-                            questions.forEach(question => {
+                        let paperqQuestions=[];
+				        $.ajax({
+				            type: "GET",
+				            url: paperUrl,
+				            dataType: "json",
+				            success: function (data) {
+				            	paperqQuestions = data.subjectives;
+				            }
+				        })
+                        $.ajax({
+				            type: "GET",
+				            url: answerUrl,
+				            dataType: "json",
+				            success: function (data) {
+                            	let questions = JSON.parse(data) || [];
+                            	//var data = '[{"mainNumber": 6,"subNumber": 19,"body": {"sections": [{ "blocks":[{"type": "text","value": "我是题目我是题目我是题目"}]}]},"answer": {"sections": [{"blocks":[{"type": "image","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/20/3_8_20_15748452889591137.jpeg"}]},{"blocks":[{"type": "audio","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/19/3_8_19_15748452552644264.mp3"}]}]},"studentAnswer": {"sections": [{"blocks":[{"type": "image","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/20/3_8_20_15748452889591137.jpeg"},{"type": "image","value": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1582709869784&di=39683b1330bd09bebd93c95fe925ca70&imgtype=0&src=http%3A%2F%2Fn.sinaimg.cn%2Fsinacn10108%2F170%2Fw600h370%2F20190222%2Fd6de-htknpmh2595255.jpg"},{"type": "text","value": "我是答案答案daan"}]}]}}]';
+                            	//let questions = JSON.parse(data);
+                             for (var j in questions) {
+                				var question = questions[j];
+                				var paperQuestion = paperqQuestions[j];
                                 // 按题号过滤
                                 if (questionArr[question.mainNumber + "." + question.subNumber] === true) {
                                     let numberTitle = {
@@ -118,17 +133,17 @@
                                     this.holder = $('#trial-left-div');
                                     $(renderSection(numberTitle)).appendTo(this.holder);
                                     $(renderSection(bodyTitle)).appendTo(this.holder);
-                                    if (question.parentBody != null && question.parentBody != undefined) {
-                                        $(renderRichText(question.parentBody)).appendTo(this.holder);
+                                    if (paperQuestion.parentBody != null && paperQuestion.parentBody != undefined) {
+                                        $(renderRichText(paperQuestion.parentBody)).appendTo(this.holder);
                                     }
-                                    $(renderRichText(question.body)).appendTo(this.holder);
+                                    $(renderRichText(paperQuestion.body)).appendTo(this.holder);
                                     $(renderSection(answerTitle)).appendTo(this.holder);
                                     $(renderRichText(question.studentAnswer)).appendTo(this.holder);
                                     $(renderSection(standardTitle)).appendTo(this.holder);
-                                    $(renderRichText(question.answer)).appendTo(this.holder);
+                                    $(renderRichText(paperQuestion.answer)).appendTo(this.holder);
                                     trialDetailModal.setContent($('#trial-detail-content'));
                                 }
-                            });
+                            }
                         }).error(function () {
                             trialDetailModal.setTitle('加载失败')
                         });

+ 0 - 72
stmms-web/src/main/webapp/WEB-INF/views/modules/card/login.jsp

@@ -1,72 +0,0 @@
-<%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
-<html>
-<head>
-    <title><spring:message code="user.login.submit"/></title>
-    <meta name="decorator" content="default"/>
-    <%@include file="/WEB-INF/views/include/head.jsp" %>
-    <link rel="stylesheet" href="${ctxStatic}/common/login.css">
-    <script type="text/javascript">
-        $(document).ready(function () {
-            $("#showType").hide();
-            $("#adminLogin").click(function () {
-                $("#adminLogin").addClass("on");
-                $("#markLogin").removeClass("on");
-                $("#showType").attr("value", "admin-login");
-            });
-            $("#markLogin").click(function () {
-                $("#markLogin").addClass("on");
-                $("#adminLogin").removeClass("on");
-                $("#showType").attr("value", "mark-login");
-            });
-            if (self.frameElement && self.frameElement.tagName == "IFRAME") {
-                parent.location.reload();
-            }
-            load();
-        });
-    </script>
-</head>
-<body>
-<div class="container">
-    <div class="middle cl">
-        <div class="left">
-            <div class="logo"><img
-                    src="${ctxStatic}/images/<c:if test="${indexLogo ==null||indexLogo =='' }">logo@2x.png</c:if><c:if test="${indexLogo !=null }">${indexLogo }</c:if>"/>
-            </div>
-            <p>Copyright &#169武汉启明软件 2012-2014</p>
-        </div>
-        <div class="right">
-            <div class="title">
-                <h1 data-i18n-text="user.login.title">高校考试管理平台</h1>
-                <c:if test="${loginType == 'admin-login' }"><p data-i18n-text="user.login.admin">管理员登录</p></c:if>
-                <c:if test="${loginType == 'mark-login' }"><p data-i18n-text="user.login.marker">评卷员登录</p></c:if>
-                <c:if test="${loginType == null || loginType == '' }">
-                    <p><span><a href="#" class="<c:if test="${showType == 'admin-login' ||showType==null}">on</c:if>"
-                                id="adminLogin" data-i18n-text="user.login.admin">管理员登录</a></span>
-                        <span><a href="#" class="<c:if test="${showType == 'mark-login' }">on</c:if>" id="markLogin" data-i18n-text="user.login.marker">评卷员登录</a></span></p>
-                </c:if>
-            </div>
-            <div class="loginbox">
-                <form action="${ctx}/login" method="post" role="form" id="loginForm">
-                    <input id="showType" name="showType" value="${showType}"/>
-                    <div class="input-group">
-                        <input type="text" class="form-control required" id="loginName" name="loginName" placeholder="请输入用户名"
-                               autocomplete="off" value="${loginName }" data-i18n-placeholder="user.login.name"/>
-                    </div>
-                    <div class="input-group">
-                        <input type="password" class="form-control required" id="password" name="password" placeholder="请输入密码"
-                               autocomplete="off" data-i18n-placeholder="user.login.password"/>
-                    </div>
-                    <c:if test="${message != null }">
-                    <div class="point <c:if test="${message != null }"></c:if><c:if test="${message == null }">hide</c:if>">
-                        <em class="error"><spring:message code="${message }"/></em>
-                    </div>
-                    </c:if>
-                    <div class="login-btn"><input class="opacity" type="submit" value="登 录" data-i18n-value="user.login.submit"/></div>
-                </form>
-            </div>
-        </div>
-    </div>
-</div>
-</body>
-</html>

+ 8 - 3
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/dataSync.jsp

@@ -27,7 +27,7 @@
 </head>
 <body>
 	<ul class="nav nav-tabs">
-		<li><a href="${ctx}/admin/exam-list">考试列表</a></li>
+		<li><a href="${ctx}/admin/exam/list">考试列表</a></li>
 		<li class="active"><a href="##">数据同步</a></li>
 	</ul><br/>
 	<form:form id="inputForm" modelAttribute="dataSync" action="${ctx}/admin/exam/data/sync/save" method="post" class="form-horizontal">
@@ -83,14 +83,19 @@
 			</div>
 		</div>
 		</c:if>
-
+		<div class="control-group">
+			<label class="control-label">试卷内容接口地址</label>
+			<div class="controls">
+				<textarea name="subjectPaperUrl" class="input-xxlarge required" <c:if test="${dataSync.cloudExamId!=null }">readonly</c:if>>${dataSync.subjectPaperUrl }</textarea>
+			</div>
+		</div>
 		<div class="form-actions">
 			<c:if test="${!dataSync.finished || running }">
 			<input id="btnSubmit" class="btn btn-primary" type="submit" value="开始同步"/>
 			</c:if>
 			
 			&nbsp;
-			<a href="${ctx}/admin/exam-list" class="btn"/>返回</a>
+			<a href="${ctx}/admin/exam/list" class="btn"/>返回</a>
 		</div>
 	</form:form>
 </body>

+ 22 - 10
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/jsonView.jsp

@@ -22,29 +22,41 @@
 </div>
 </body>
 <script type="text/javascript">
-    var url = "${fileServer}${answerUrl}";
+    var answerUrl = "${fileServer}${answerUrl}";
+    var paperUrl = "${fileServer}${paperUrl}";
     var questionNumbers = "${questionNumbers}";
 
     $(document).ready(function () {
-        initJsonPopover(url, questionNumbers);
+        initJsonPopover(answerUrl,paperUrl, questionNumbers);
     });
 
-    function initJsonPopover(url, questionNumbers) {
+    function initJsonPopover(answerUrl, paperUrl,questionNumbers) {
         questionNumbers = questionNumbers.split(",");
         let questionArr = {};
         questionNumbers.forEach(questionNumber => {
             questionArr[questionNumber] = true;
         });
+        let paperqQuestions=[];
         $('#json-view-content').empty();
         $.ajax({
             type: "GET",
-            url: url,
+            url: paperUrl,
+            dataType: "json",
+            success: function (data) {
+            	paperqQuestions = data.subjectives;
+            }
+        })
+        $.ajax({
+            type: "GET",
+            url: answerUrl,
             dataType: "json",
             success: function (data) {
                 //var data ='[{"mainNumber": 6,"subNumber": 1,"body": {"sections": [{ "blocks":[{"type": "text","value": "我是题目我是题目我是题目"}]}]},"answer": {"sections": [{"blocks":[{"type": "audio","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/19/3_8_19_15748452552644264.mp3"}]}]},"studentAnswer": {"sections": [{"blocks":[{"type": "image","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/20/3_8_20_15748452889591137.jpeg"},{"type": "image","value": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1582709869784&di=39683b1330bd09bebd93c95fe925ca70&imgtype=0&src=http%3A%2F%2Fn.sinaimg.cn%2Fsinacn10108%2F170%2Fw600h370%2F20190222%2Fd6de-htknpmh2595255.jpg"}]}]}}]';
                 //data = JSON.parse(data);
                 let questions = data || [];
-                questions.forEach(question => {
+                for (var j in questions) {
+                	var question = questions[j];
+                	var paperQuestion = paperqQuestions[j];
                     // 按题号过滤
                     if (questionArr[question.mainNumber + "." + question.subNumber] === true || questionNumbers == "") {
                         let numberTitle = {
@@ -85,16 +97,16 @@
                         this.holder = $('#json-view-content');
                         $(renderSection(numberTitle)).appendTo(this.holder);
                         $(renderSection(bodyTitle)).appendTo(this.holder);
-                        if (question.parentBody != null && question.parentBody != undefined) {
-                            $(renderRichText(question.parentBody)).appendTo(this.holder);
+                        if (paperQuestion.parentBody != null && paperQuestion.parentBody != undefined) {
+                            $(renderRichText(paperQuestion.parentBody)).appendTo(this.holder);
                         }
-                        $(renderRichText(question.body)).appendTo(this.holder);
+                        $(renderRichText(paperQuestion.body)).appendTo(this.holder);
                         $(renderSection(answerTitle)).appendTo(this.holder);
                         $(renderRichText(question.studentAnswer)).appendTo(this.holder);
                         $(renderSection(standardTitle)).appendTo(this.holder);
-                        $(renderRichText(question.answer)).appendTo(this.holder);
+                        $(renderRichText(paperQuestion.answer)).appendTo(this.holder);
                     }
-                });
+                }
                 if (this.viewer != undefined) {
                     this.viewer.destroy();
                 }

+ 16 - 3
stmms-web/src/main/webapp/static/mark-json/js/json-loader.js

@@ -12,15 +12,28 @@ function JsonLoader(option) {
 
 JsonLoader.prototype.build = function (task, callback) {
     var self = this;
-    if (task != undefined && task.jsonUrl != undefined) {
+    if (task != undefined && task.jsonUrl != undefined && task.paperUrl != undefined) {
 //      TODO-测试代码,读取固定的json文件
 //         var result = '[{"mainNumber": 2,"subNumber": 10,"body": {"sections": [{ "blocks":[{"type": "text","value": "我是题目我是题目我是题目"}]}]},"answer": {"sections": [{"blocks":[{"type": "image","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/20/3_8_20_15748452889591137.jpeg"}]},{"blocks":[{"type": "audio","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/19/3_8_19_15748452552644264.mp3"}]}]},"studentAnswer": {"sections": [{"blocks":[{"type": "image","value": "https://ecs-test-static.qmth.com.cn/oe-answer-file/3/8/20/3_8_20_15748452889591137.jpeg"},{"type": "image","value": "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1582709869784&di=39683b1330bd09bebd93c95fe925ca70&imgtype=0&src=http%3A%2F%2Fn.sinaimg.cn%2Fsinacn10108%2F170%2Fw600h370%2F20190222%2Fd6de-htknpmh2595255.jpg"},{"type": "text","value": "我是答案答案daan"}]}]}}]';
 //         task.jsonData = JSON.parse(result);
 //         callback();
-         var url = this.jsonServer + task.jsonUrl;
+         var answerUrl = this.jsonServer + task.jsonUrl;
+         var paperUrl = this.jsonServer + task.paperUrl;
          $.ajax({  
              type:"GET",  
-             url:url,  
+             url:paperUrl,  
+             dataType:"json",  
+             success:function(data){
+	             task.paperData = data;
+             },
+             error:function () {
+                 console.log('json load error:' + url);
+                 callback('json load error');
+             }
+         });
+         $.ajax({  
+             type:"GET",  
+             url:answerUrl,  
              dataType:"json",  
              success:function(data){
 	             task.jsonData = data;

+ 5 - 2
stmms-web/src/main/webapp/static/mark-json/js/json-view.js

@@ -47,7 +47,10 @@ JsonView.prototype.render = function () {
         });
 
         let questions = this.task.jsonData || [];
-        questions.forEach(question => {
+        let paperqQuestions = this.task.paperData || [];
+        for (var j in questions) {
+        	var question = questions[j];
+        	var paperQuestion = paperqQuestions[j];
             // 按题号过滤
             if (questionNumbers[question.mainNumber + "." + question.subNumber] === true) {
                 let numberTitle = {
@@ -96,7 +99,7 @@ JsonView.prototype.render = function () {
                 $(renderSection(standardTitle)).appendTo(this.holder);
                 $(renderRichText(question.answer)).appendTo(this.holder);
             }
-        });
+        }
         if (this.viewer != undefined) {
             this.viewer.destroy();
         }