Forráskód Böngészése

修改管理端与评卷端,将需要修改的地方由现有studentId改为显示secretNumber

luoshi 4 éve
szülő
commit
f84819193c
17 módosított fájl, 836 hozzáadás és 816 törlés
  1. 4 5
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/TrialHistoryDao.java
  2. 18 13
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/ProblemHistory.java
  3. 105 96
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/query/ProblemHistorySearchQuery.java
  4. 1 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java
  5. 119 117
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/ProblemHistoryServiceImpl.java
  6. 3 3
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/TrialServiceImpl.java
  7. 4 5
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/TrialService.java
  8. 2 2
      stmms-common/src/main/java/cn/com/qmth/stmms/common/utils/MurmurHash.java
  9. 4 6
      stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java
  10. 214 208
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/libraryList.jsp
  11. 149 148
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/problemHistory.jsp
  12. 120 120
      stmms-web/src/main/webapp/WEB-INF/views/modules/exam/trialList.jsp
  13. 8 8
      stmms-web/src/main/webapp/static/mark-leader/js/modules/header-mark-status.js
  14. 17 17
      stmms-web/src/main/webapp/static/mark-leader/js/modules/mark-history.js
  15. 18 18
      stmms-web/src/main/webapp/static/mark-leader/js/modules/mark-status.js
  16. 8 8
      stmms-web/src/main/webapp/static/mark-new/js/modules/header-mark-status.js
  17. 42 42
      stmms-web/src/main/webapp/static/mark-new/js/modules/mark-history.js

+ 4 - 5
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/dao/TrialHistoryDao.java

@@ -1,14 +1,13 @@
 package cn.com.qmth.stmms.biz.mark.dao;
 
-import java.util.List;
-
+import cn.com.qmth.stmms.biz.mark.model.TrialHistory;
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
 import org.springframework.data.jpa.repository.Query;
 
-import cn.com.qmth.stmms.biz.mark.model.TrialHistory;
+import java.util.List;
 
 public interface TrialHistoryDao extends JpaRepository<TrialHistory, Integer>, JpaSpecificationExecutor<TrialHistory> {
 
@@ -41,8 +40,8 @@ public interface TrialHistoryDao extends JpaRepository<TrialHistory, Integer>, J
     @Query("delete TrialHistory m where m.pk.markerId=?1")
     void deleteByMarkerId(Integer markerId);
 
-    List<TrialHistory> findByExamIdAndSubjectCodeAndGroupNumberAndPkMarkerIdAndStudentId(Integer examId,
-            String subjectCode, Integer groupNumber, Integer markerId, Integer studentId, Pageable query);
+    List<TrialHistory> findByExamIdAndSubjectCodeAndGroupNumberAndPkMarkerIdAndSecretNumber(Integer examId,
+            String subjectCode, Integer groupNumber, Integer markerId, String secretNumber, Pageable query);
 
     List<TrialHistory> findByExamIdAndSubjectCodeAndGroupNumberAndPkMarkerIdAndMarkerScore(Integer examId,
             String subjectCode, Integer groupNumber, Integer markerId, Double markerScore, Pageable query);

+ 18 - 13
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/model/ProblemHistory.java

@@ -1,23 +1,14 @@
 package cn.com.qmth.stmms.biz.mark.model;
 
-import java.io.Serializable;
-import java.util.Date;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.EnumType;
-import javax.persistence.Enumerated;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-
 import cn.com.qmth.stmms.biz.user.model.User;
 import cn.com.qmth.stmms.common.enums.HistoryStatus;
 
+import javax.persistence.*;
+import java.io.Serializable;
+import java.util.Date;
+
 /**
  * 问题卷记录表
- * 
  */
 @Entity
 @Table(name = "m_problem_history")
@@ -71,6 +62,12 @@ public class ProblemHistory implements Serializable {
     @Column(name = "exam_number")
     private String examNumber;
 
+    /**
+     * 考生密号
+     */
+    @Column(name = "secret_number")
+    private String secretNumber;
+
     /**
      * 处理用户ID
      */
@@ -151,6 +148,14 @@ public class ProblemHistory implements Serializable {
         this.examNumber = examNumber;
     }
 
+    public String getSecretNumber() {
+        return secretNumber;
+    }
+
+    public void setSecretNumber(String secretNumber) {
+        this.secretNumber = secretNumber;
+    }
+
     public Integer getUserId() {
         return userId;
     }

+ 105 - 96
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/query/ProblemHistorySearchQuery.java

@@ -1,96 +1,105 @@
-package cn.com.qmth.stmms.biz.mark.query;
-
-import org.springframework.data.domain.Sort;
-import org.springframework.data.domain.Sort.Direction;
-
-import cn.com.qmth.stmms.biz.common.BaseQuery;
-import cn.com.qmth.stmms.biz.mark.model.ProblemHistory;
-import cn.com.qmth.stmms.common.enums.HistoryStatus;
-
-public class ProblemHistorySearchQuery extends BaseQuery<ProblemHistory> {
-
-    private int examId;
-
-    private String subjectCode;
-
-    private Integer studentId;
-
-    private Integer problemId;
-
-    private String examNumber;
-
-    private int groupNumber;
-
-    private HistoryStatus status;
-
-    private int userId;
-
-    public void orderByExamNumber() {
-        setSort(new Sort(Direction.ASC, "examNumber"));
-    }
-
-    public int getExamId() {
-        return examId;
-    }
-
-    public void setExamId(int examId) {
-        this.examId = examId;
-    }
-
-    public String getSubjectCode() {
-        return subjectCode;
-    }
-
-    public void setSubjectCode(String subjectCode) {
-        this.subjectCode = subjectCode;
-    }
-
-    public Integer getStudentId() {
-        return studentId;
-    }
-
-    public void setStudentId(Integer studentId) {
-        this.studentId = studentId;
-    }
-
-    public Integer getProblemId() {
-        return problemId;
-    }
-
-    public void setProblemId(Integer problemId) {
-        this.problemId = problemId;
-    }
-
-    public String getExamNumber() {
-        return examNumber;
-    }
-
-    public void setExamNumber(String examNumber) {
-        this.examNumber = examNumber;
-    }
-
-    public HistoryStatus getStatus() {
-        return status;
-    }
-
-    public void setStatus(HistoryStatus status) {
-        this.status = status;
-    }
-
-    public int getUserId() {
-        return userId;
-    }
-
-    public void setUserId(int userId) {
-        this.userId = userId;
-    }
-
-    public int getGroupNumber() {
-        return groupNumber;
-    }
-
-    public void setGroupNumber(int groupNumber) {
-        this.groupNumber = groupNumber;
-    }
-
-}
+package cn.com.qmth.stmms.biz.mark.query;
+
+import cn.com.qmth.stmms.biz.common.BaseQuery;
+import cn.com.qmth.stmms.biz.mark.model.ProblemHistory;
+import cn.com.qmth.stmms.common.enums.HistoryStatus;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.domain.Sort.Direction;
+
+public class ProblemHistorySearchQuery extends BaseQuery<ProblemHistory> {
+
+    private int examId;
+
+    private String subjectCode;
+
+    private Integer studentId;
+
+    private Integer problemId;
+
+    private String examNumber;
+
+    private String secretNumber;
+
+    private int groupNumber;
+
+    private HistoryStatus status;
+
+    private int userId;
+
+    public void orderByExamNumber() {
+        setSort(new Sort(Direction.ASC, "examNumber"));
+    }
+
+    public int getExamId() {
+        return examId;
+    }
+
+    public void setExamId(int examId) {
+        this.examId = examId;
+    }
+
+    public String getSubjectCode() {
+        return subjectCode;
+    }
+
+    public void setSubjectCode(String subjectCode) {
+        this.subjectCode = subjectCode;
+    }
+
+    public Integer getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Integer studentId) {
+        this.studentId = studentId;
+    }
+
+    public Integer getProblemId() {
+        return problemId;
+    }
+
+    public void setProblemId(Integer problemId) {
+        this.problemId = problemId;
+    }
+
+    public String getExamNumber() {
+        return examNumber;
+    }
+
+    public void setExamNumber(String examNumber) {
+        this.examNumber = examNumber;
+    }
+
+    public String getSecretNumber() {
+        return secretNumber;
+    }
+
+    public void setSecretNumber(String secretNumber) {
+        this.secretNumber = secretNumber;
+    }
+
+    public HistoryStatus getStatus() {
+        return status;
+    }
+
+    public void setStatus(HistoryStatus status) {
+        this.status = status;
+    }
+
+    public int getUserId() {
+        return userId;
+    }
+
+    public void setUserId(int userId) {
+        this.userId = userId;
+    }
+
+    public int getGroupNumber() {
+        return groupNumber;
+    }
+
+    public void setGroupNumber(int groupNumber) {
+        this.groupNumber = groupNumber;
+    }
+
+}

+ 1 - 0
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/MarkServiceImpl.java

@@ -464,6 +464,7 @@ public class MarkServiceImpl implements MarkService {
         history.setCreateTime(new Date());
         history.setExamId(library.getExamId());
         history.setExamNumber(library.getExamNumber());
+        history.setSecretNumber(library.getSecretNumber());
         history.setStudentId(library.getStudentId());
         history.setLibraryId(library.getId());
         history.setSubjectCode(library.getSubjectCode());

+ 119 - 117
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/ProblemHistoryServiceImpl.java

@@ -1,117 +1,119 @@
-package cn.com.qmth.stmms.biz.mark.service.Impl;
-
-import java.util.Date;
-import java.util.LinkedList;
-import java.util.List;
-
-import javax.persistence.criteria.CriteriaBuilder;
-import javax.persistence.criteria.CriteriaQuery;
-import javax.persistence.criteria.Predicate;
-import javax.persistence.criteria.Root;
-
-import org.apache.commons.lang.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import cn.com.qmth.stmms.biz.common.BaseQueryService;
-import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
-import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
-import cn.com.qmth.stmms.biz.mark.dao.ProblemHistoryDao;
-import cn.com.qmth.stmms.biz.mark.model.ProblemHistory;
-import cn.com.qmth.stmms.biz.mark.query.ProblemHistorySearchQuery;
-import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
-import cn.com.qmth.stmms.biz.mark.service.ProblemHistoryService;
-import cn.com.qmth.stmms.common.enums.HistoryStatus;
-
-@Service
-public class ProblemHistoryServiceImpl extends BaseQueryService<ProblemHistory> implements ProblemHistoryService {
-
-    @Autowired
-    private ProblemHistoryDao historyDao;
-
-    @Autowired
-    private MarkLibraryService libraryService;
-
-    @Autowired
-    private ExamSubjectService subjectService;
-
-    @Autowired
-    private ExamStudentService studentService;
-
-    @Override
-    public ProblemHistory save(ProblemHistory p) {
-        return historyDao.save(p);
-    }
-
-    @Override
-    public long countByExamIdAndProblemId(Integer examId, Integer problemId) {
-        return historyDao.countByExamIdAndProblemId(examId, problemId);
-    }
-
-    @Override
-    public List<String> findProblemSubjectCode(Integer examId) {
-        return historyDao.findProblemSubjectCode(examId);
-    }
-
-    @Transactional
-    @Override
-    public boolean resetByLibraryId(Integer libraryId, Integer userId) {
-        ProblemHistory history = historyDao.findByLibraryIdAndStatus(libraryId, HistoryStatus.WAITING);
-        if (history != null) {
-            history.setUserId(userId);
-            history.setUpdateTime(new Date());
-            history.setStatus(HistoryStatus.BACK);
-            historyDao.save(history);
-            return true;
-        }
-        return false;
-    }
-
-    @Override
-    public ProblemHistorySearchQuery findByQuery(final ProblemHistorySearchQuery query) {
-        checkQuery(query);
-        Page<ProblemHistory> result = historyDao.findAll(buildSpecification(query), query);
-        fillResult(result, query);
-        return query;
-    }
-
-    private Specification<ProblemHistory> buildSpecification(final ProblemHistorySearchQuery query) {
-        return new Specification<ProblemHistory>() {
-
-            @Override
-            public Predicate toPredicate(Root<ProblemHistory> root, CriteriaQuery<?> cQuery, CriteriaBuilder cb) {
-                List<Predicate> predicates = new LinkedList<Predicate>();
-                if (query.getExamId() > 0) {
-                    predicates.add(cb.equal(root.get("examId"), query.getExamId()));
-                }
-                if (StringUtils.isNotBlank(query.getSubjectCode())) {
-                    predicates.add(cb.equal(root.get("subjectCode"), query.getSubjectCode()));
-                }
-                if (StringUtils.isNotBlank(query.getExamNumber())) {
-                    predicates.add(cb.equal(root.get("examNumber"), query.getExamNumber()));
-                }
-                if (query.getStudentId() != null) {
-                    predicates.add(cb.equal(root.get("studentId"), query.getStudentId()));
-                }
-                if (query.getUserId() > 0) {
-                    predicates.add(cb.equal(root.get("userId"), query.getUserId()));
-                }
-                if (query.getGroupNumber() > 0) {
-                    predicates.add(cb.equal(root.get("groupNumber"), query.getGroupNumber()));
-                }
-                if (query.getStatus() != null) {
-                    predicates.add(cb.equal(root.get("status").as(HistoryStatus.class), query.getStatus()));
-                }
-                if (query.getProblemId() != null) {
-                    predicates.add(cb.equal(root.get("problemId"), query.getProblemId()));
-                }
-                return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
-                        .size()]));
-            }
-        };
-    }
-
-}
+package cn.com.qmth.stmms.biz.mark.service.Impl;
+
+import cn.com.qmth.stmms.biz.common.BaseQueryService;
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.mark.dao.ProblemHistoryDao;
+import cn.com.qmth.stmms.biz.mark.model.ProblemHistory;
+import cn.com.qmth.stmms.biz.mark.query.ProblemHistorySearchQuery;
+import cn.com.qmth.stmms.biz.mark.service.MarkLibraryService;
+import cn.com.qmth.stmms.biz.mark.service.ProblemHistoryService;
+import cn.com.qmth.stmms.common.enums.HistoryStatus;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.jpa.domain.Specification;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+@Service
+public class ProblemHistoryServiceImpl extends BaseQueryService<ProblemHistory> implements ProblemHistoryService {
+
+    @Autowired
+    private ProblemHistoryDao historyDao;
+
+    @Autowired
+    private MarkLibraryService libraryService;
+
+    @Autowired
+    private ExamSubjectService subjectService;
+
+    @Autowired
+    private ExamStudentService studentService;
+
+    @Override
+    public ProblemHistory save(ProblemHistory p) {
+        return historyDao.save(p);
+    }
+
+    @Override
+    public long countByExamIdAndProblemId(Integer examId, Integer problemId) {
+        return historyDao.countByExamIdAndProblemId(examId, problemId);
+    }
+
+    @Override
+    public List<String> findProblemSubjectCode(Integer examId) {
+        return historyDao.findProblemSubjectCode(examId);
+    }
+
+    @Transactional
+    @Override
+    public boolean resetByLibraryId(Integer libraryId, Integer userId) {
+        ProblemHistory history = historyDao.findByLibraryIdAndStatus(libraryId, HistoryStatus.WAITING);
+        if (history != null) {
+            history.setUserId(userId);
+            history.setUpdateTime(new Date());
+            history.setStatus(HistoryStatus.BACK);
+            historyDao.save(history);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public ProblemHistorySearchQuery findByQuery(final ProblemHistorySearchQuery query) {
+        checkQuery(query);
+        Page<ProblemHistory> result = historyDao.findAll(buildSpecification(query), query);
+        fillResult(result, query);
+        return query;
+    }
+
+    private Specification<ProblemHistory> buildSpecification(final ProblemHistorySearchQuery query) {
+        return new Specification<ProblemHistory>() {
+
+            @Override
+            public Predicate toPredicate(Root<ProblemHistory> root, CriteriaQuery<?> cQuery, CriteriaBuilder cb) {
+                List<Predicate> predicates = new LinkedList<Predicate>();
+                if (query.getExamId() > 0) {
+                    predicates.add(cb.equal(root.get("examId"), query.getExamId()));
+                }
+                if (StringUtils.isNotBlank(query.getSubjectCode())) {
+                    predicates.add(cb.equal(root.get("subjectCode"), query.getSubjectCode()));
+                }
+                if (StringUtils.isNotBlank(query.getExamNumber())) {
+                    predicates.add(cb.equal(root.get("examNumber"), query.getExamNumber()));
+                }
+                if (StringUtils.isNotBlank(query.getSecretNumber())) {
+                    predicates.add(cb.equal(root.get("secretNumber"), query.getSecretNumber()));
+                }
+                if (query.getStudentId() != null) {
+                    predicates.add(cb.equal(root.get("studentId"), query.getStudentId()));
+                }
+                if (query.getUserId() > 0) {
+                    predicates.add(cb.equal(root.get("userId"), query.getUserId()));
+                }
+                if (query.getGroupNumber() > 0) {
+                    predicates.add(cb.equal(root.get("groupNumber"), query.getGroupNumber()));
+                }
+                if (query.getStatus() != null) {
+                    predicates.add(cb.equal(root.get("status").as(HistoryStatus.class), query.getStatus()));
+                }
+                if (query.getProblemId() != null) {
+                    predicates.add(cb.equal(root.get("problemId"), query.getProblemId()));
+                }
+                return predicates.isEmpty() ?
+                        cb.conjunction() :
+                        cb.and(predicates.toArray(new Predicate[predicates.size()]));
+            }
+        };
+    }
+
+}

+ 3 - 3
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/Impl/TrialServiceImpl.java

@@ -154,7 +154,7 @@ public class TrialServiceImpl extends BaseQueryService<TrialLibrary> implements
 
     @Override
     public List<TrialHistory> findHistory(Integer examId, String subjectCode, Integer groupNumber, Integer markerId,
-            Integer studentId, int pageNumber, int pageSize, Sort sort) {
+            String secretNumber, int pageNumber, int pageSize, Sort sort) {
         BaseQuery<TrialHistory> query = new BaseQuery<>();
         query.setPageNumber(pageNumber);
         query.setPageSize(pageSize);
@@ -164,7 +164,7 @@ public class TrialServiceImpl extends BaseQueryService<TrialLibrary> implements
             query.setSort(new Sort(Direction.DESC, "markerTime"));
         }
         return historyDao
-                .findByExamIdAndSubjectCodeAndGroupNumberAndPkMarkerIdAndStudentId(examId, subjectCode, groupNumber,
-                        markerId, studentId, query);
+                .findByExamIdAndSubjectCodeAndGroupNumberAndPkMarkerIdAndSecretNumber(examId, subjectCode, groupNumber,
+                        markerId, secretNumber, query);
     }
 }

+ 4 - 5
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/mark/service/TrialService.java

@@ -1,14 +1,13 @@
 package cn.com.qmth.stmms.biz.mark.service;
 
-import java.util.List;
-
-import org.springframework.data.domain.Sort;
-
 import cn.com.qmth.stmms.biz.mark.model.TrialHistory;
 import cn.com.qmth.stmms.biz.mark.model.TrialLibrary;
 import cn.com.qmth.stmms.biz.mark.model.TrialTag;
 import cn.com.qmth.stmms.biz.mark.model.TrialTrack;
 import cn.com.qmth.stmms.biz.mark.query.TrialLibrarySearchQuery;
+import org.springframework.data.domain.Sort;
+
+import java.util.List;
 
 public interface TrialService {
 
@@ -37,6 +36,6 @@ public interface TrialService {
     List<TrialTag> findTag(Integer libraryId, Integer markerId);
 
     List<TrialHistory> findHistory(Integer examId, String subjectCode, Integer groupNumber, Integer markerId,
-            Integer studentId, int pageNumber, int pageSize, Sort querySort);
+            String secretNumber, int pageNumber, int pageSize, Sort querySort);
 
 }

+ 2 - 2
stmms-common/src/main/java/cn/com/qmth/stmms/common/utils/MurmurHash.java

@@ -207,8 +207,8 @@ public class MurmurHash {
     }
 
     public static void main(String[] args) {
-        System.out.println(hash32("1000001".getBytes(), "1000001".getBytes().length, 0));
-        System.out.println(Hashing.murmur3_32().hashBytes("1000001".getBytes()).asInt());
+        System.out.println(hash32string("10000001"));
+        System.out.println(Integer.toUnsignedString(Hashing.murmur3_32().hashBytes("10000001".getBytes()).asInt()));
     }
 
 }

+ 4 - 6
stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java

@@ -441,7 +441,7 @@ public class MarkController extends BaseController {
     public Object history(HttpServletRequest request, @RequestParam int pageNumber, @RequestParam int pageSize,
             @RequestParam String order, @RequestParam String sort,
             @RequestParam(required = false, defaultValue = "false") Boolean isTag,
-            @RequestParam(required = false) Integer studentId) throws Exception {
+            @RequestParam(required = false) String secretNumber) throws Exception {
         Marker marker = RequestUtils.getWebUser(request).getMarker();
         List<Task> list = new ArrayList<>();
         Direction d = Direction.DESC;
@@ -466,6 +466,7 @@ public class MarkController extends BaseController {
             query.addStatus(LibraryStatus.MARKED);
             query.addStatus(LibraryStatus.INSPECTED);
             query.setGroupNumber(marker.getGroupNumber());
+            query.setSecretNumber(secretNumber);
             query.setPageNumber(pageNumber);
             query.setPageSize(pageSize);
             if (querySort != null) {
@@ -473,9 +474,6 @@ public class MarkController extends BaseController {
             } else {
                 query.orderByMarkerTimeDesc();
             }
-            if (studentId != null) {
-                query.setStudentId(studentId);
-            }
             list = taskService.findByQuery(query);
             for (Task task : list) {
                 task.setPrevious(true);
@@ -483,10 +481,10 @@ public class MarkController extends BaseController {
         } else if (group != null && group.getStatus() == MarkStatus.TRIAL) {
             // 试评查找给分历史记录
             List<TrialHistory> historyList = new ArrayList<TrialHistory>();
-            if (studentId != null) {
+            if (secretNumber != null) {
                 historyList = trialService
                         .findHistory(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber(),
-                                marker.getId(), studentId, pageNumber, pageSize, querySort);
+                                marker.getId(), secretNumber, pageNumber, pageSize, querySort);
             } else {
                 historyList = trialService
                         .findHistory(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber(),

+ 214 - 208
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/libraryList.jsp

@@ -1,236 +1,242 @@
 <%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
 <html>
 <head>
-	<title>评卷任务</title>
-	<meta name="decorator" content="default"/>
-	<%@include file="/WEB-INF/views/include/head.jsp" %>
-	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
+    <title>评卷任务</title>
+    <meta name="decorator" content="default"/>
+    <%@include file="/WEB-INF/views/include/head.jsp" %>
+    <style type="text/css">.sort {
+        color: #0663A2;
+        cursor: pointer;
+    }</style>
 </head>
 <body>
-    <ul class="nav nav-tabs">
-        <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
-        <li><a href="${ctx}/admin/exam/marker?subjectCode=${query.subjectCode}">评卷员管理</a></li>
-        <li><a href="${ctx}/admin/exam/trial?subjectCode=${query.subjectCode}">试评管理</a></li>
-        <li class="active"><a href="##">任务管理</a></li>
-        <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${query.subjectCode}">仲裁管理</a></li>
-        <li><a href="${ctx}/admin/exam/quality?subjectCode=${query.subjectCode}">质量监控</a></li>
-    </ul>
-	<form id="searchForm" action="${ctx}/admin/exam/library" method="post" class="breadcrumb form-search">
-	    <input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
-	    <input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
-	    <div>
-			<label>科目</label>
-			<select class="input-large" id="subject-select" name="subjectCode">
-				<c:forEach items="${subjectList}" var="item">
-				<option value="${item.code}" <c:if test="${item.code==query.subjectCode}">selected</c:if>>${item.code}-${item.name}</option>
-				</c:forEach>
-			</select>
-			<label>大题</label>
-            <select class="input-medium" id="group-select" name="groupNumber">
-                <c:forEach items="${groupList}" var="item">
+<ul class="nav nav-tabs">
+    <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
+    <li><a href="${ctx}/admin/exam/marker?subjectCode=${query.subjectCode}">评卷员管理</a></li>
+    <li><a href="${ctx}/admin/exam/trial?subjectCode=${query.subjectCode}">试评管理</a></li>
+    <li class="active"><a href="##">任务管理</a></li>
+    <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${query.subjectCode}">仲裁管理</a></li>
+    <li><a href="${ctx}/admin/exam/quality?subjectCode=${query.subjectCode}">质量监控</a></li>
+</ul>
+<form id="searchForm" action="${ctx}/admin/exam/library" method="post" class="breadcrumb form-search">
+    <input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+    <input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
+    <div>
+        <label>科目</label>
+        <select class="input-large" id="subject-select" name="subjectCode">
+            <c:forEach items="${subjectList}" var="item">
+                <option value="${item.code}" <c:if test="${item.code==query.subjectCode}">selected</c:if>>${item.code}-${item.name}</option>
+            </c:forEach>
+        </select>
+        <label>大题</label>
+        <select class="input-medium" id="group-select" name="groupNumber">
+            <c:forEach items="${groupList}" var="item">
                 <option value="${item.number}" <c:if test="${item.number==query.groupNumber}">selected</c:if>>${item.number}-${item.title}</option>
-                </c:forEach>
-            </select>
-            <label>状态</label>
-            <select class="input-small" id="status-select" name="status">
-                <option value="">不限</option>
-                <c:forEach items="${statusList}" var="item">
-                	 <option value="${item.value}" <c:if test="${item.value==status.value}">selected</c:if>>${item.name}</option>
-                </c:forEach>
-            </select>
-            <label>评卷员</label>
-            <select class="input-medium" id="marker-select" name="markerId">
-                <option value="0">不限</option>
-                <c:forEach items="${markerList}" var="item">
+            </c:forEach>
+        </select>
+        <label>状态</label>
+        <select class="input-small" id="status-select" name="status">
+            <option value="">不限</option>
+            <c:forEach items="${statusList}" var="item">
+                <option value="${item.value}" <c:if test="${item.value==status.value}">selected</c:if>>${item.name}</option>
+            </c:forEach>
+        </select>
+        <label>评卷员</label>
+        <select class="input-medium" id="marker-select" name="markerId">
+            <option value="0">不限</option>
+            <c:forEach items="${markerList}" var="item">
                 <option value="${item.id}" <c:if test="${item.id==query.markerId}">selected</c:if>>${item.loginName}</option>
-                </c:forEach>
-            </select>
-            <br/><br/>
-            <label>准考证号</label>
-            <input type="text" name="examNumber" value="${query.examNumber}" maxlength="20" class="input-medium"/>
-			&nbsp;
-			<label>考生编号</label>
-            <input type="text" name="studentId" id="studentId" value="${query.studentId}" maxlength="10" class="input-medium"onkeyup="this.value=this.value.replace(/\D/g,'')"/>
-            &nbsp;
-            <label>总分:从</label>
-			<input  type="number" id="startScroe"  name="startScroe"value="${query.startScroe}" class="input-mini"/>
-			<label> 到&nbsp;&nbsp;&nbsp;</label>
-			<input type="number"  id="endScroe" name="endScroe"  value="${query.endScroe}"  class="input-mini"/>
-			&nbsp;&nbsp;
-			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
-			&nbsp;
-			<c:if test="${examType!='MULTI_MEDIA'}">
-			<a target="_blank" href="${ctx}/admin/exam/inspected/start?subjectCode=${query.subjectCode}&groupNumber=${query.groupNumber}" class="btn">待复核:${inspectedCount }</a>
-			</c:if>
-		</div>
-	</form>
-	<tags:message content="${message}"/>
-	<table id="contentTable" class="table table-striped table-bordered table-condensed">
-		<thead>
-			<tr>
-				<th>科目代码</th>
-				<th>分组序号</th>
-				<th>准考证号</th>
-				<th>考生编号</th>
-				<th>状态</th>
-				<th>评卷员</th>
-				<th>评卷总分</th>
-				<th>给分明细</th>
-				<th>评卷时间</th>
-				<th>操作</th>
-			</tr>
-		</thead>
-		<tbody>
-		<c:forEach items="${query.result}" var="result">
-			<tr>
-				<td>${result.subjectCode}</td>
-				<td>${result.groupNumber}</td>
-				<td>${result.examNumber}</td>
-				<td>${result.studentId}</td>
-				<td>${result.status.name}</td>
-                <td>
-                    <c:if test="${result.marker!=null}">
+            </c:forEach>
+        </select>
+        <br/><br/>
+        <label>准考证号</label>
+        <input type="text" name="examNumber" value="${query.examNumber}" maxlength="20" class="input-medium"/>
+        &nbsp;
+        <label>考生编号</label>
+        <input type="text" name="secretNumber" id="secretNumber" value="${query.secretNumber}" class="input-medium"/>
+        &nbsp;
+        <label>总分:从</label>
+        <input type="number" id="startScroe" name="startScroe" value="${query.startScroe}" class="input-mini"/>
+        <label> 到&nbsp;&nbsp;&nbsp;</label>
+        <input type="number" id="endScroe" name="endScroe" value="${query.endScroe}" class="input-mini"/>
+        &nbsp;&nbsp;
+        <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+        &nbsp;
+        <c:if test="${examType!='MULTI_MEDIA'}">
+            <a target="_blank" href="${ctx}/admin/exam/inspected/start?subjectCode=${query.subjectCode}&groupNumber=${query.groupNumber}" class="btn">待复核:${inspectedCount }</a>
+        </c:if>
+    </div>
+</form>
+<tags:message content="${message}"/>
+<table id="contentTable" class="table table-striped table-bordered table-condensed">
+    <thead>
+    <tr>
+        <th>科目代码</th>
+        <th>分组序号</th>
+        <th>准考证号</th>
+        <th>考生编号</th>
+        <th>状态</th>
+        <th>评卷员</th>
+        <th>评卷总分</th>
+        <th>给分明细</th>
+        <th>评卷时间</th>
+        <th>操作</th>
+    </tr>
+    </thead>
+    <tbody>
+    <c:forEach items="${query.result}" var="result">
+        <tr>
+            <td>${result.subjectCode}</td>
+            <td>${result.groupNumber}</td>
+            <td>${result.examNumber}</td>
+            <td>${result.secretNumber}</td>
+            <td>${result.status.name}</td>
+            <td>
+                <c:if test="${result.marker!=null}">
                     ${result.marker.loginName}
-                    </c:if>
-                    <c:if test="${result.marker==null}">
+                </c:if>
+                <c:if test="${result.marker==null}">
                     &nbsp;
-                    </c:if>
-                </td>
-				<td>
-				    <c:if test="${result.markerScore!=null}">
-				    <fmt:formatNumber pattern="###.#" value="${result.markerScore}"/>
-				    </c:if>
-				    <c:if test="${result.markerScore==null}">
-				    &nbsp;
-				    </c:if>
-				</td>
-				<td>
-				    <c:if test="${result.markerScoreList!=null}">
+                </c:if>
+            </td>
+            <td>
+                <c:if test="${result.markerScore!=null}">
+                    <fmt:formatNumber pattern="###.#" value="${result.markerScore}"/>
+                </c:if>
+                <c:if test="${result.markerScore==null}">
+                    &nbsp;
+                </c:if>
+            </td>
+            <td>
+                <c:if test="${result.markerScoreList!=null}">
                     ${result.markerScoreList}
-                    </c:if>
-                    <c:if test="${result.markerScoreList==null}">
+                </c:if>
+                <c:if test="${result.markerScoreList==null}">
+                    &nbsp;
+                </c:if>
+            </td>
+            <td>
+                <c:if test="${result.markerTime!=null}">
+                    <fmt:formatDate value="${result.markerTime}" pattern="yyyy-MM-dd HH:mm:ss"/>
+                </c:if>
+                <c:if test="${result.markerTime==null}">
                     &nbsp;
+                </c:if>
+            </td>
+            <td>
+                <c:if test="${result.status.value==1 || result.status.value==3 ||result.status.value==5 ||result.status.value==6}">
+                    <c:if test="${examType=='MULTI_MEDIA'}">
+                        <a class="json-link" href="${ctx}/admin/exam/library/getJson?studentId=${result.studentId}&groupNumber=${result.groupNumber}" target="_blank">原图</a>
                     </c:if>
-				</td>
-				<td>
-				    <c:if test="${result.markerTime!=null}">
-                    <fmt:formatDate value="${result.markerTime}" pattern="yyyy-MM-dd HH:mm:ss" />
+                    <c:if test="${examType!='MULTI_MEDIA'}">
+                        <a class="track-link" href="#" data-image-url="${ctx}/admin/exam/track/byLibrary?libraryId=${result.id}" data-title="${result.examNumber}">阅卷轨迹</a>
                     </c:if>
-                    <c:if test="${result.markerTime==null}">
+                </c:if>
+                <c:if test="${result.status.value==1 || result.status.value==5 ||result.status.value==6}">
                     &nbsp;
-                    </c:if>
-				</td>
-				<td>
-				    <c:if test="${result.status.value==1 || result.status.value==3 ||result.status.value==5 ||result.status.value==6}">
-				   		<c:if test="${examType=='MULTI_MEDIA'}">
-				    		<a class="json-link" href="${ctx}/admin/exam/library/getJson?studentId=${result.studentId}&groupNumber=${result.groupNumber}" target="_blank">原图</a> 
-				    	</c:if>
-				    	<c:if test="${examType!='MULTI_MEDIA'}">
-	 				    	<a class="track-link" href="#" data-image-url="${ctx}/admin/exam/track/byLibrary?libraryId=${result.id}" data-title="${result.examNumber}">阅卷轨迹</a>
-				    	</c:if>
-				    </c:if>
-				    <c:if test="${result.status.value==1 || result.status.value==5 ||result.status.value==6}">
-				    &nbsp;
                     <a href="##" data-id="${result.id}" class="back-link">打回</a>
-					</c:if>
-				</td>
-			</tr>
-		</c:forEach>
-		</tbody>
-	</table>
-	<div class="pagination">${query}</div>
-	<%@include file="/WEB-INF/views/include/trackView.jsp" %>
+                </c:if>
+            </td>
+        </tr>
+    </c:forEach>
+    </tbody>
+</table>
+<div class="pagination">${query}</div>
+<%@include file="/WEB-INF/views/include/trackView.jsp" %>
 <script type="text/javascript">
-$('.back-link').click(function(){
-	if(!confirm('确定要打回该评卷任务吗?')){
-	    return;
-	}
-	$.post('${ctx}/admin/exam/library/back', {id: $(this).attr('data-id')}, function(result){
-	    if(result.success==true){
-            alert('打回成功');
-            $("#searchForm").submit();
-        }else{
-            alert(result.message);
+    $('.back-link').click(function () {
+        if (!confirm('确定要打回该评卷任务吗?')) {
+            return;
         }
-	});
-});
-$('.track-link').click(function(){
-    initTrackPopover($(this).attr('data-title'),$(this).attr('data-image-url'));
-    return false;
-});
-$('#subject-select').change(function(){
-    var code = $(this).val();
-    $('#group-select').empty();
-    if(code==''){
-        $('#group-select').val('').trigger('change');
-        return;
-    }
-    $.post('${ctx}/admin/exam/group/query', {subjectCode: code, status: 'FORMAL'}, function(result){
-        var parent = $('#group-select');
-        var first = '';
-        for(var i=0;i<result.length;i++){
-            var group = result[i];
-            $('<option value="'+group.number+'">'+group.number+'-'+group.title+'</option>').appendTo(parent);
-            if(i==0){
-                first = group.number;
+        $.post('${ctx}/admin/exam/library/back', {id: $(this).attr('data-id')}, function (result) {
+            if (result.success == true) {
+                alert('打回成功');
+                $("#searchForm").submit();
+            } else {
+                alert(result.message);
             }
-        }
-        parent.val(first).trigger('change');
+        });
     });
-});
-$('#group-select').change(function(){
-    var subjectCode = $('#subject-select').val();
-    var groupNumber = $('#group-select').val();
-    $('#marker-select').empty();
-    $('#marker-select').append('<option value="0">不限</option>');
-    $('#marker-select').val('0').trigger('change');
-    if(subjectCode=='' || groupNumber==''||groupNumber==null){
-        return;
-    }
-    $.post('${ctx}/admin/exam/marker/query', {subjectCode: subjectCode, groupNumber: groupNumber}, function(result){
-        var parent = $('#marker-select');
-        var first = '';
-        for(var i=0;i<result.length;i++){
-            var marker = result[i];
-            $('<option value="'+marker.id+'">'+marker.loginName+'</option>').appendTo(parent);
-            if(i==0){
-                first = marker.id;
+    $('.track-link').click(function () {
+        initTrackPopover($(this).attr('data-title'), $(this).attr('data-image-url'));
+        return false;
+    });
+    $('#subject-select').change(function () {
+        var code = $(this).val();
+        $('#group-select').empty();
+        if (code == '') {
+            $('#group-select').val('').trigger('change');
+            return;
+        }
+        $.post('${ctx}/admin/exam/group/query', {subjectCode: code, status: 'FORMAL'}, function (result) {
+            var parent = $('#group-select');
+            var first = '';
+            for (var i = 0; i < result.length; i++) {
+                var group = result[i];
+                $('<option value="' + group.number + '">' + group.number + '-' + group.title + '</option>').appendTo(parent);
+                if (i == 0) {
+                    first = group.number;
+                }
             }
+            parent.val(first).trigger('change');
+        });
+    });
+    $('#group-select').change(function () {
+        var subjectCode = $('#subject-select').val();
+        var groupNumber = $('#group-select').val();
+        $('#marker-select').empty();
+        $('#marker-select').append('<option value="0">不限</option>');
+        $('#marker-select').val('0').trigger('change');
+        if (subjectCode == '' || groupNumber == '' || groupNumber == null) {
+            return;
         }
-        //parent.val(first).trigger('change');
+        $.post('${ctx}/admin/exam/marker/query', {subjectCode: subjectCode, groupNumber: groupNumber}, function (result) {
+            var parent = $('#marker-select');
+            var first = '';
+            for (var i = 0; i < result.length; i++) {
+                var marker = result[i];
+                $('<option value="' + marker.id + '">' + marker.loginName + '</option>').appendTo(parent);
+                if (i == 0) {
+                    first = marker.id;
+                }
+            }
+            //parent.val(first).trigger('change');
+        });
     });
-});
-function page(n,s){
-    $("#pageNumber").val(n);
-    $("#pageSize").val(s);
-    $("#searchForm").submit();
-    return false;
-}
-function goSearch(){
-	var startScroe = $("#startScroe").val();var endScore = $("#endScroe").val();
-    if(startScroe.length>0){
-        if(endScore.length == 0){
-            alert("请输入结束分数值!");return false;
+
+    function page(n, s) {
+        $("#pageNumber").val(n);
+        $("#pageSize").val(s);
+        $("#searchForm").submit();
+        return false;
+    }
+
+    function goSearch() {
+        var startScroe = $("#startScroe").val();
+        var endScore = $("#endScroe").val();
+        if (startScroe.length > 0) {
+            if (endScore.length == 0) {
+                alert("请输入结束分数值!");
+                return false;
+            }
         }
-    }if(endScore.length>0){
-        if(startScroe.length == 0){
-            alert("请输入开始分数值!");return false;
+        if (endScore.length > 0) {
+            if (startScroe.length == 0) {
+                alert("请输入开始分数值!");
+                return false;
+            }
         }
-    }if(endScore.length>0 && startScroe.length > 0){
-        if(parseInt(startScroe) > parseInt(endScore)){
-            alert("开始分值必须小于结束分值");return false;
+        if (endScore.length > 0 && startScroe.length > 0) {
+            if (parseInt(startScroe) > parseInt(endScore)) {
+                alert("开始分值必须小于结束分值");
+                return false;
+            }
         }
+        $("#pageNumber").val(1);
+        $("#searchForm").submit();
+        return false;
     }
-    $("#pageNumber").val(1);
-    var studentId = parseInt($("#studentId").val());
-    if( $("#studentId").val()!="" && studentId>2147483647 ){
-    	alert("考生编号不合法");
-    }else{
-	    $("#searchForm").submit();
-    }
-    return false;
-}
-</script>	
+</script>
 </body>
 </html>

+ 149 - 148
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/problemHistory.jsp

@@ -1,149 +1,150 @@
-<%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
-<html>
-<head>
-	<title>标记试卷处理</title>
-	<meta name="decorator" content="default"/>
-	<%@include file="/WEB-INF/views/include/head.jsp" %>
-	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
-</head>
-<body>
-	<form id="searchForm" action="${ctx}/admin/exam/problem/history" method="post" class="breadcrumb form-search">
-		<input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
-		<input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
-		<div>
-			<label>科目</label>
-			<select class="input-large" name="subjectCode" id="subject-select">
-				<option value="">请选择</option>
-				<c:forEach items="${subjectList}" var="subject">
-				<option value="${subject.code}" <c:if test="${subject.code==query.subjectCode}">selected</c:if>>${subject.code}-${subject.name}</option>
-				</c:forEach>
-			</select>
-			<label>大题</label>
-            <select class="input-medium" id="group-select" name="groupNumber">
-             	<option value="0">请选择</option>
-                <c:forEach items="${groupList}" var="item">
-                <option value="${item.number}" <c:if test="${item.number==query.groupNumber}">selected</c:if>>${item.number}-${item.title}</option>
-                </c:forEach>
-            </select>
-			<label>类型</label>
-			<select class="input-medium" name="problemId">
-				<option value="">请选择</option>
-				<c:forEach items="${problemList}" var="problem">
-				<option value="${problem.id}" <c:if test="${problem.id==query.problemId}">selected</c:if>>${problem.name}</option>
-				</c:forEach>
-			</select>
-			&nbsp;
-			<label>考生编号</label>
-            <input type="text" name="studentId" id="studentId" value="${query.studentId}" maxlength="10" class="input-small"onkeyup="this.value=this.value.replace(/\D/g,'')"/>
-            &nbsp;
-			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
-		</div>
-	</form>
-	<tags:message content="${message}"/>
-	<table id="contentTable" class="table table-striped table-bordered table-condensed">
-		<thead>
-			<tr>
-				<th>科目</th>
-				<th>分组序号</th>
-				<th>准考证号</th>
-				<th>考生编号</th>
-				<th>姓名</th>
-				<th>提交时间</th>
-				<th>问题类型</th>
-				<th>操作</th>
-			</tr>
-		</thead>
-		<tbody>
-		<c:forEach items="${resultList}" var="result">
-			<tr>
-				<td>${result.subjectCode}-${result.subjectName}</td>
-				<td>${result.number}</td>
-				<td>${result.examNumber}</td>
-				<td>${result.id}</td>
-				<td>${result.name}</td>
-				<td>${result.markTime}</td>
-				<td>${result.problemType.name}</td>
-				<td>
-				   		<c:if test="${examType=='MULTI_MEDIA'}">
-				    		<a class="json-link" href="${ctx}/admin/exam/library/getJson?studentId=${result.id}&groupNumber=${result.number}" target="_blank">原图</a> 
-				    	</c:if>
-				    	<c:if test="${examType!='MULTI_MEDIA'}">
-	 				    	<a class="track-link" href="#" data-image-url="${ctx}/admin/exam/track/byLibrary?libraryId=${result.libraryId}" data-title="${result.examNumber}">阅卷轨迹</a>
-				    	</c:if>
-				    &nbsp;
-                    <a href="##" data-id="${result.libraryId}" class="back-link">打回</a>
-				</td>
-			</tr>
-		</c:forEach>
-		</tbody>
-	</table>
-	<div class="pagination">${query}</div>
-	<%@include file="/WEB-INF/views/include/trackView.jsp" %>
-<script type="text/javascript">
-$(document).ready(function() {
-    /* new jBox('Image', {
-    	imageFade: 0,
-    	delayOpen: 0,
-    	delayClose: 0,
-    	maxHeight: $(window).height()*0.88
-    }); */
-    $('.back-link').click(function(){
-    	if(!confirm('确定要打回该评卷任务吗?')){
-    	    return;
-    	}
-    	$.post('${ctx}/admin/exam/library/back', {id: $(this).attr('data-id')}, function(result){
-    	    if(result.success==true){
-                alert('打回成功');
-                $("#searchForm").submit();
-            }else{
-                alert(result.message);
-            }
-    	});
-    });
-    $('.track-link').click(function(){
-        initTrackPopover($(this).attr('data-title'),$(this).attr('data-image-url'));
-        return false;
-    });
-    $('#subject-select').change(function(){
-        var code = $(this).val();
-        $('#group-select').empty();
-        $("<option value='0'>请选择</option>").appendTo('#group-select');
-        if(code==''){
-            $('#group-select').val('').trigger('change');
-            return;
-        }
-        
-        $.post('${ctx}/admin/exam/group/query', {subjectCode: code, status: 'FORMAL'}, function(result){
-            var parent = $('#group-select');
-            var first = '';
-            for(var i=0;i<result.length;i++){
-                var group = result[i];
-                $('<option value="'+group.number+'">'+group.number+'-'+group.title+'</option>').appendTo(parent);
-                if(i==0){
-                    first = group.number;
-                }
-            }
-            parent.val(first).trigger('change');
-        });
-    });
-});
-function page(n,s){
-	$("#pageNumber").val(n);
-	$("#searchForm").attr('action', '${ctx}/admin/exam/problem/history');
-	$("#searchForm").submit();
-	return false;
-}
-function goSearch(){
-    var studentId = parseInt($("#studentId").val());
-    if( $("#studentId").val()!="" && studentId>2147483647 ){
-    	alert("考生编号不合法");return false;
-    };
-	$("#pageNumber").val(1);
-	$("#searchForm").attr('action', '${ctx}/admin/exam/problem/history');
-	$("#searchForm").submit();
-	return false;
-}
-</script>	
-</body>
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
+<html>
+<head>
+    <title>标记试卷处理</title>
+    <meta name="decorator" content="default"/>
+    <%@include file="/WEB-INF/views/include/head.jsp" %>
+    <style type="text/css">.sort {
+        color: #0663A2;
+        cursor: pointer;
+    }</style>
+</head>
+<body>
+<form id="searchForm" action="${ctx}/admin/exam/problem/history" method="post" class="breadcrumb form-search">
+    <input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+    <input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
+    <div>
+        <label>科目</label>
+        <select class="input-large" name="subjectCode" id="subject-select">
+            <option value="">请选择</option>
+            <c:forEach items="${subjectList}" var="subject">
+                <option value="${subject.code}" <c:if test="${subject.code==query.subjectCode}">selected</c:if>>${subject.code}-${subject.name}</option>
+            </c:forEach>
+        </select>
+        <label>大题</label>
+        <select class="input-medium" id="group-select" name="groupNumber">
+            <option value="0">请选择</option>
+            <c:forEach items="${groupList}" var="item">
+                <option value="${item.number}" <c:if test="${item.number==query.groupNumber}">selected</c:if>>${item.number}-${item.title}</option>
+            </c:forEach>
+        </select>
+        <label>类型</label>
+        <select class="input-medium" name="problemId">
+            <option value="">请选择</option>
+            <c:forEach items="${problemList}" var="problem">
+                <option value="${problem.id}" <c:if test="${problem.id==query.problemId}">selected</c:if>>${problem.name}</option>
+            </c:forEach>
+        </select>
+        &nbsp;
+        <label>考生编号</label>
+        <input type="text" name="secretNumber" id="secretNumber" value="${query.secretNumber}" class="input-medium"/>
+        &nbsp;
+        <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+    </div>
+</form>
+<tags:message content="${message}"/>
+<table id="contentTable" class="table table-striped table-bordered table-condensed">
+    <thead>
+    <tr>
+        <th>科目</th>
+        <th>分组序号</th>
+        <th>准考证号</th>
+        <th>考生编号</th>
+        <th>姓名</th>
+        <th>提交时间</th>
+        <th>问题类型</th>
+        <th>操作</th>
+    </tr>
+    </thead>
+    <tbody>
+    <c:forEach items="${resultList}" var="result">
+        <tr>
+            <td>${result.subjectCode}-${result.subjectName}</td>
+            <td>${result.number}</td>
+            <td>${result.examNumber}</td>
+            <td>${result.id}</td>
+            <td>${result.name}</td>
+            <td>${result.markTime}</td>
+            <td>${result.problemType.name}</td>
+            <td>
+                <c:if test="${examType=='MULTI_MEDIA'}">
+                    <a class="json-link" href="${ctx}/admin/exam/library/getJson?studentId=${result.id}&groupNumber=${result.number}" target="_blank">原图</a>
+                </c:if>
+                <c:if test="${examType!='MULTI_MEDIA'}">
+                    <a class="track-link" href="#" data-image-url="${ctx}/admin/exam/track/byLibrary?libraryId=${result.libraryId}" data-title="${result.examNumber}">阅卷轨迹</a>
+                </c:if>
+                &nbsp;
+                <a href="##" data-id="${result.libraryId}" class="back-link">打回</a>
+            </td>
+        </tr>
+    </c:forEach>
+    </tbody>
+</table>
+<div class="pagination">${query}</div>
+<%@include file="/WEB-INF/views/include/trackView.jsp" %>
+<script type="text/javascript">
+    $(document).ready(function () {
+        /* new jBox('Image', {
+            imageFade: 0,
+            delayOpen: 0,
+            delayClose: 0,
+            maxHeight: $(window).height()*0.88
+        }); */
+        $('.back-link').click(function () {
+            if (!confirm('确定要打回该评卷任务吗?')) {
+                return;
+            }
+            $.post('${ctx}/admin/exam/library/back', {id: $(this).attr('data-id')}, function (result) {
+                if (result.success == true) {
+                    alert('打回成功');
+                    $("#searchForm").submit();
+                } else {
+                    alert(result.message);
+                }
+            });
+        });
+        $('.track-link').click(function () {
+            initTrackPopover($(this).attr('data-title'), $(this).attr('data-image-url'));
+            return false;
+        });
+        $('#subject-select').change(function () {
+            var code = $(this).val();
+            $('#group-select').empty();
+            $("<option value='0'>请选择</option>").appendTo('#group-select');
+            if (code == '') {
+                $('#group-select').val('').trigger('change');
+                return;
+            }
+
+            $.post('${ctx}/admin/exam/group/query', {subjectCode: code, status: 'FORMAL'}, function (result) {
+                var parent = $('#group-select');
+                var first = '';
+                for (var i = 0; i < result.length; i++) {
+                    var group = result[i];
+                    $('<option value="' + group.number + '">' + group.number + '-' + group.title + '</option>').appendTo(parent);
+                    if (i == 0) {
+                        first = group.number;
+                    }
+                }
+                parent.val(first).trigger('change');
+            });
+        });
+    });
+
+    function page(n, s) {
+        $("#pageNumber").val(n);
+        $("#searchForm").attr('action', '${ctx}/admin/exam/problem/history');
+        $("#searchForm").submit();
+        return false;
+    }
+
+    function goSearch() {
+        $("#pageNumber").val(1);
+        $("#searchForm").attr('action', '${ctx}/admin/exam/problem/history');
+        $("#searchForm").submit();
+        return false;
+    }
+</script>
+</body>
 </html>

+ 120 - 120
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/trialList.jsp

@@ -1,134 +1,134 @@
 <%@ page contentType="text/html;charset=UTF-8" %>
-<%@ include file="/WEB-INF/views/include/taglib.jsp"%>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
 <html>
 <head>
-	<title>试评任务</title>
-	<meta name="decorator" content="default"/>
-	<%@include file="/WEB-INF/views/include/head.jsp" %>
-	<style type="text/css">.sort{color:#0663A2;cursor:pointer;}</style>
+    <title>试评任务</title>
+    <meta name="decorator" content="default"/>
+    <%@include file="/WEB-INF/views/include/head.jsp" %>
+    <style type="text/css">.sort {
+        color: #0663A2;
+        cursor: pointer;
+    }</style>
 </head>
 <body>
-    <ul class="nav nav-tabs">
-        <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
-        <li><a href="${ctx}/admin/exam/marker?subjectCode=${query.subjectCode}">评卷员管理</a></li>
-        <li class="active"><a href="##">试评管理</a></li>
-        <li><a href="${ctx}/admin/exam/library?subjectCode=${query.subjectCode}">任务管理</a></li>
-        <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${query.subjectCode}">仲裁管理</a></li>
-        <li><a href="${ctx}/admin/exam/quality?subjectCode=${query.subjectCode}">质量监控</a></li>
-    </ul>
-	<form id="searchForm" action="${ctx}/admin/exam/trial" method="post" class="breadcrumb form-search">
-	    <input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
-	    <input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
-	    <div>
-			<label>科目</label>
-			<select class="input-large" id="subject-select" name="subjectCode">
-				<c:forEach items="${subjectList}" var="item">
-				<option value="${item.code}" <c:if test="${item.code==query.subjectCode}">selected</c:if>>${item.code}-${item.name}</option>
-				</c:forEach>
-			</select>
-			<label>大题</label>
-            <select class="input-medium" id="group-select" name="groupNumber">
-                <c:forEach items="${groupList}" var="item">
+<ul class="nav nav-tabs">
+    <li><a href="${ctx}/admin/exam/group?subjectCode=${query.subjectCode}">大题管理</a></li>
+    <li><a href="${ctx}/admin/exam/marker?subjectCode=${query.subjectCode}">评卷员管理</a></li>
+    <li class="active"><a href="##">试评管理</a></li>
+    <li><a href="${ctx}/admin/exam/library?subjectCode=${query.subjectCode}">任务管理</a></li>
+    <li><a href="${ctx}/admin/exam/arbitrate?subjectCode=${query.subjectCode}">仲裁管理</a></li>
+    <li><a href="${ctx}/admin/exam/quality?subjectCode=${query.subjectCode}">质量监控</a></li>
+</ul>
+<form id="searchForm" action="${ctx}/admin/exam/trial" method="post" class="breadcrumb form-search">
+    <input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+    <input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
+    <div>
+        <label>科目</label>
+        <select class="input-large" id="subject-select" name="subjectCode">
+            <c:forEach items="${subjectList}" var="item">
+                <option value="${item.code}" <c:if test="${item.code==query.subjectCode}">selected</c:if>>${item.code}-${item.name}</option>
+            </c:forEach>
+        </select>
+        <label>大题</label>
+        <select class="input-medium" id="group-select" name="groupNumber">
+            <c:forEach items="${groupList}" var="item">
                 <option value="${item.number}" <c:if test="${item.number==query.groupNumber}">selected</c:if>>${item.number}-${item.title}</option>
-                </c:forEach>
-            </select>
-            <label>准考证号</label>
-            <input type="text" name="examNumber" value="${query.examNumber}" maxlength="20" class="input-small"/>
-			<label>考生编号</label>
-            <input type="text" name="studentId" id="studentId" value="${query.studentId}" maxlength="10" class="input-small" onkeyup="this.value=this.value.replace(/\D/g,'')"/>
-            &nbsp;
-			<input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
-		</div>
-	</form>
-	<tags:message content="${message}"/>
-	<table id="contentTable" class="table table-striped table-bordered table-condensed">
-		<thead>
-			<tr>
-				<th>科目代码</th>
-				<th>分组序号</th>
-				<th>准考证号</th>
-				<th>考生编号</th>
-				<th>评卷员</th>
-				<th>操作</th>
-			</tr>
-		</thead>
-		<tbody>
-		<c:forEach items="${query.result}" var="result">
-			<tr>
-				<td>${result.subjectCode}</td>
-				<td>${result.groupNumber}</td>
-				<td>${result.examNumber}</td>
-				<td>${result.studentId}</td>
-				<td>${result.markCount}</td>
-				<td>
-				    <c:if test="${result.markCount>0}">
-				    <a href="##" class="detail-link" data-title="试评给分详情" data-id="${result.id}">详情</a>
-				    <c:if test="${group!=null && group.status==TRIAL}">
-				    &nbsp;
-                    <a href="##" class="reset-link" data-id="${result.id}">重置</a>
-					</c:if>
-					</c:if>
-				</td>
-			</tr>
-		</c:forEach>
-		</tbody>
-	</table>
-	<div class="pagination">${query}</div>
-	<%@include file="/WEB-INF/views/include/trialDetail.jsp" %>
+            </c:forEach>
+        </select>
+        <label>准考证号</label>
+        <input type="text" name="examNumber" value="${query.examNumber}" maxlength="20" class="input-medium"/>
+        <label>考生编号</label>
+        <input type="text" name="secretNumber" id="secretNumber" value="${query.secretNumber}" maxlength="10" class="input-medium"/>
+        &nbsp;
+        <input id="btnSubmit" class="btn btn-primary" type="button" value="查询" onclick="goSearch()"/>
+    </div>
+</form>
+<tags:message content="${message}"/>
+<table id="contentTable" class="table table-striped table-bordered table-condensed">
+    <thead>
+    <tr>
+        <th>科目代码</th>
+        <th>分组序号</th>
+        <th>准考证号</th>
+        <th>考生编号</th>
+        <th>评卷员</th>
+        <th>操作</th>
+    </tr>
+    </thead>
+    <tbody>
+    <c:forEach items="${query.result}" var="result">
+        <tr>
+            <td>${result.subjectCode}</td>
+            <td>${result.groupNumber}</td>
+            <td>${result.examNumber}</td>
+            <td>${result.secretNumber}</td>
+            <td>${result.markCount}</td>
+            <td>
+                <c:if test="${result.markCount>0}">
+                    <a href="##" class="detail-link" data-title="试评给分详情" data-id="${result.id}">详情</a>
+                    <c:if test="${group!=null && group.status==TRIAL}">
+                        &nbsp;
+                        <a href="##" class="reset-link" data-id="${result.id}">重置</a>
+                    </c:if>
+                </c:if>
+            </td>
+        </tr>
+    </c:forEach>
+    </tbody>
+</table>
+<div class="pagination">${query}</div>
+<%@include file="/WEB-INF/views/include/trialDetail.jsp" %>
 <script type="text/javascript">
-$('.reset-link').click(function(){
-	if(!confirm('确定要重置该试评任务吗?')){
-	    return;
-	}
-	$.post('${ctx}/admin/exam/trial/reset', {libraryId: $(this).attr('data-id')}, function(result){
-	    if(result.success==true){
-            alert('重置成功');
-            $("#searchForm").submit();
-        }else{
-            alert(result.message);
+    $('.reset-link').click(function () {
+        if (!confirm('确定要重置该试评任务吗?')) {
+            return;
         }
-	});
-});
-$('.detail-link').click(function(){
-    initTrialDetailPopover($(this).attr('data-title'), $(this).attr('data-id'));
-    return false;
-});
-$('#subject-select').change(function(){
-    var code = $(this).val();
-    $('#group-select').empty();
-    if(code==''){
-        $('#group-select').val('').trigger('change');
-        return;
-    }
-    $.post('${ctx}/admin/exam/group/query', {subjectCode: code, status: 'TRIAL'}, function(result){
-        var parent = $('#group-select');
-        var first = '';
-        for(var i=0;i<result.length;i++){
-            var group = result[i];
-            $('<option value="'+group.number+'">'+group.number+'-'+group.title+'</option>').appendTo(parent);
-            if(i==0){
-                first = group.number;
+        $.post('${ctx}/admin/exam/trial/reset', {libraryId: $(this).attr('data-id')}, function (result) {
+            if (result.success == true) {
+                alert('重置成功');
+                $("#searchForm").submit();
+            } else {
+                alert(result.message);
             }
+        });
+    });
+    $('.detail-link').click(function () {
+        initTrialDetailPopover($(this).attr('data-title'), $(this).attr('data-id'));
+        return false;
+    });
+    $('#subject-select').change(function () {
+        var code = $(this).val();
+        $('#group-select').empty();
+        if (code == '') {
+            $('#group-select').val('').trigger('change');
+            return;
         }
-        parent.val(first).trigger('change');
+        $.post('${ctx}/admin/exam/group/query', {subjectCode: code, status: 'TRIAL'}, function (result) {
+            var parent = $('#group-select');
+            var first = '';
+            for (var i = 0; i < result.length; i++) {
+                var group = result[i];
+                $('<option value="' + group.number + '">' + group.number + '-' + group.title + '</option>').appendTo(parent);
+                if (i == 0) {
+                    first = group.number;
+                }
+            }
+            parent.val(first).trigger('change');
+        });
     });
-});
-function page(n,s){
-    $("#pageNumber").val(n);
-    $("#pageSize").val(s);
-    $("#searchForm").submit();
-    return false;
-}
-function goSearch(){
-    $("#pageNumber").val(1);
-    var studentId = parseInt($("#studentId").val()); 
-    if( $("#studentId").val()!="" && studentId>2147483647 ){
-    	alert("考生编号不合法");
-    }else{
-	    $("#searchForm").submit();
+
+    function page(n, s) {
+        $("#pageNumber").val(n);
+        $("#pageSize").val(s);
+        $("#searchForm").submit();
+        return false;
+    }
+
+    function goSearch() {
+        $("#pageNumber").val(1);
+        $("#searchForm").submit();
+        return false;
     }
-    return false;
-}
-</script>	
+</script>
 </body>
 </html>

+ 8 - 8
stmms-web/src/main/webapp/static/mark-leader/js/modules/header-mark-status.js

@@ -1,5 +1,5 @@
 //评卷状态模块
-var header_mark_status = function(option, success) {
+var header_mark_status = function (option, success) {
     var object = new HeaderMarkStatus(option);
     success();
     return object;
@@ -9,12 +9,12 @@ function HeaderMarkStatus(option) {
     this.markControl = option.markControl;
     this.title = option.title;
     this.init();
-    this.markControl.on('task.get.before', this, function(event, context, statusInfo) {
+    this.markControl.on('task.get.before', this, function (event, context, statusInfo) {
         //this.topStatus.find('#type-name').html('正在领取任务');
         this.secretArea.hide();
         this.blockTitle.hide();
     });
-    this.markControl.on('task.get.success', this, function(event, context, eventObject) {
+    this.markControl.on('task.get.success', this, function (event, context, eventObject) {
         var task = context.task;
         //状态栏区域
         this.blockTitle.show();
@@ -24,21 +24,21 @@ function HeaderMarkStatus(option) {
         //this.topStatus.find('#type-name').html(typeName);
 
         this.secretArea.show();
-        this.topStatus.find('#secret-number').html(task.studentId);
+        this.topStatus.find('#secret-number').html(task.studentNumber);
     });
-    this.markControl.on('task.get.none', this, function(event, context, status) {
+    this.markControl.on('task.get.none', this, function (event, context, status) {
         this.secretArea.hide();
         this.blockTitle.hide();
         this.topStatus.find('#block-title').html();
         //this.topStatus.find('#type-name').html('');
         this.topStatus.find('#secret-number').html('');
     });
-    this.markControl.on('mark.status.change', this, function(event, context, status) {
+    this.markControl.on('mark.status.change', this, function (event, context, status) {
         this.render(status);
     });
 }
 
-HeaderMarkStatus.prototype.init = function() {
+HeaderMarkStatus.prototype.init = function () {
     this.progress = getDom(this.progress_dom, this.markControl).prependTo(this.markControl.container.header);
     this.topStatus = getDom(this.top_status_dom, this.markControl).prependTo(this.markControl.container.header);
     this.secretArea = this.topStatus.find('#secret-area');
@@ -49,7 +49,7 @@ HeaderMarkStatus.prototype.init = function() {
     this.topStatus.find('#status-title').html(this.title);
 }
 
-HeaderMarkStatus.prototype.render = function(status) {
+HeaderMarkStatus.prototype.render = function (status) {
     if (status != undefined && status.valid === true) {
         this.progress.show();
         //进度信息区域

+ 17 - 17
stmms-web/src/main/webapp/static/mark-leader/js/modules/mark-history.js

@@ -1,5 +1,5 @@
 //回评模块
-var mark_history = function(option, success) {
+var mark_history = function (option, success) {
     var object = new MarkHistory(option);
     success();
     return object;
@@ -15,11 +15,11 @@ function MarkHistory(option) {
 
     this.markControl.initMarkFunction();
     this.container.toggleButton = getDom(this.toggle_button_dom, this.markControl).appendTo(this.markControl.container.assistant.functionList);
-    this.container.toggleButton.click(this, function(event) {
+    this.container.toggleButton.click(this, function (event) {
         event.data.toggle(true);
     });
 
-    this.markControl.on('history.get.success', this, function(event, context, data) {
+    this.markControl.on('history.get.success', this, function (event, context, data) {
         var taskList = data.result;
         this.taskList = [];
         this.loading = false;
@@ -29,7 +29,7 @@ function MarkHistory(option) {
             for (var i in taskList) {
                 var task = taskList[i];
                 var row = getDom(this.history_row_dom, this.markControl).appendTo(this.container.list);
-                row.find('.history-secret-number').html(task.studentId);
+                row.find('.history-secret-number').html(task.studentNumber);
 
                 var date = new Date();
                 date.setTime(task.markTime);
@@ -52,7 +52,7 @@ function MarkHistory(option) {
                 // }
             }
         }
-        this.container.list.find('td').click(this, function(event) {
+        this.container.list.find('td').click(this, function (event) {
             var markHistory = event.data;
             var index = $(event.target).parent().attr('data-index');
             markHistory.onTaskSelect(index);
@@ -64,36 +64,36 @@ function MarkHistory(option) {
             this.onTaskSelect(0);
         }
     });
-    this.markControl.on('history.get.error', this, function(event, context, data) {
+    this.markControl.on('history.get.error', this, function (event, context, data) {
         alert('暂时无法读取评卷历史,请稍后重试');
     });
-    this.markControl.on('task.submit.success', this, function(event, context, data) {
+    this.markControl.on('task.submit.success', this, function (event, context, data) {
         if (this.enable) {
             this.toggle(false);
         }
     });
-    this.markControl.on('task.get.success', this, function(event, context, data) {
+    this.markControl.on('task.get.success', this, function (event, context, data) {
         this.loading = false;
     });
 }
 
-MarkHistory.prototype.init = function() {
+MarkHistory.prototype.init = function () {
     this.container.empty();
 
     this.container.header = getDom(this.header_dom, this.markControl).appendTo(this.container);
     this.container.paginator = getDom(this.paginator_dom, this.markControl).appendTo(this.container);
     this.container.list = getDom(this.history_list_dom, this.markControl).appendTo(this.container).find('#history-list');
 
-    this.container.header.find('#close-history-button').click(this, function(event) {
+    this.container.header.find('#close-history-button').click(this, function (event) {
         event.data.toggle(false);
         this.markControl.context.task = undefined;
         this.markControl.getTask();
     })
-    this.container.paginator.find('#last-page-button').click(this, function(event) {
+    this.container.paginator.find('#last-page-button').click(this, function (event) {
         var markHistory = event.data;
         markHistory.onSearch(markHistory.pageNumber + 1);
     });
-    this.container.paginator.find('#next-page-button').click(this, function(event) {
+    this.container.paginator.find('#next-page-button').click(this, function (event) {
         var markHistory = event.data;
         if (markHistory.pageNumber > 1) {
             markHistory.onSearch(markHistory.pageNumber - 1);
@@ -101,7 +101,7 @@ MarkHistory.prototype.init = function() {
     });
 }
 
-MarkHistory.prototype.toggle = function(enable) {
+MarkHistory.prototype.toggle = function (enable) {
     this.enable = enable;
     if (enable) {
         this.init();
@@ -120,7 +120,7 @@ MarkHistory.prototype.toggle = function(enable) {
     }
 }
 
-MarkHistory.prototype.updateHeader = function() {
+MarkHistory.prototype.updateHeader = function () {
     this.container.header.find('#history-start').html(this.pageSize * (this.pageNumber - 1));
     this.container.header.find('#history-end').html(this.pageSize * this.pageNumber);
 
@@ -141,7 +141,7 @@ MarkHistory.prototype.updateHeader = function() {
     }
 }
 
-MarkHistory.prototype.onSearch = function(pageNumber) {
+MarkHistory.prototype.onSearch = function (pageNumber) {
     if (pageNumber == undefined || pageNumber < 1) {
         pageNumber = 1;
     }
@@ -151,10 +151,10 @@ MarkHistory.prototype.onSearch = function(pageNumber) {
     });
 }
 
-MarkHistory.prototype.onTaskSelect = function(index) {
+MarkHistory.prototype.onTaskSelect = function (index) {
     var number = new String(index);
     if (this.taskList != undefined && index < this.taskList.length && this.loading != true) {
-        this.container.list.find('tr').each(function(index, obj) {
+        this.container.list.find('tr').each(function (index, obj) {
             if ($(obj).attr('data-index') == number) {
                 $(obj).addClass('active');
             } else {

+ 18 - 18
stmms-web/src/main/webapp/static/mark-leader/js/modules/mark-status.js

@@ -1,5 +1,5 @@
 //评卷状态模块
-var mark_status = function(option, success) {
+var mark_status = function (option, success) {
     var object = new MarkStatus(option);
     success();
     return object;
@@ -8,14 +8,14 @@ var mark_status = function(option, success) {
 function MarkStatus(option) {
     this.markControl = option.markControl;
     this.init(option);
-    this.markControl.on('task.get.before', this, function(event, context, statusInfo) {
+    this.markControl.on('task.get.before', this, function (event, context, statusInfo) {
         this.topStatus.find('#stage-name').html('正在加载');
     });
-    this.markControl.on('task.get.success', this, function(event, context, eventObject) {
+    this.markControl.on('task.get.success', this, function (event, context, eventObject) {
         var task = context.task;
         //修改页面显示
         this.topStatus.find('#stage-name').html('');
-        this.topStatus.find('#student-number').html(task.studentId);
+        this.topStatus.find('#student-number').html(task.studentNumber);
         this.studentTitle.show();
 
         if (task.objectiveScore != undefined) {
@@ -26,31 +26,31 @@ function MarkStatus(option) {
         }
         this.checkTopCount(task);
     });
-    this.markControl.on('task.get.none', this, function(event, context, status) {
+    this.markControl.on('task.get.none', this, function (event, context, status) {
         this.topStatus.find('#stage-name').html('');
         this.topStatus.find('#student-number').html('');
         this.studentTitle.hide();
         this.objectiveArea.hide();
     });
-    this.markControl.on('task.get.finish', this, function(event, context, status) {
+    this.markControl.on('task.get.finish', this, function (event, context, status) {
         this.topStatus.find('#stage-name').html('');
         this.topStatus.find('#student-number').html('');
         this.studentTitle.hide();
         this.objectiveArea.hide();
     });
-    this.markControl.on('mark.status.change', this, function(event, context, status) {
+    this.markControl.on('mark.status.change', this, function (event, context, status) {
         this.status = status;
         this.render(status);
     });
-    this.markControl.on('view.sidebar.open', this, function(event, context, eventObject) {
+    this.markControl.on('view.sidebar.open', this, function (event, context, eventObject) {
         this.blockProgress.hide();
     });
-    this.markControl.on('view.sidebar.close', this, function(event, context, eventObject) {
+    this.markControl.on('view.sidebar.close', this, function (event, context, eventObject) {
         this.blockProgress.show();
     });
 }
 
-MarkStatus.prototype.init = function(option) {
+MarkStatus.prototype.init = function (option) {
     this.topStatus = getDom(this.status_dom, this.markControl).prependTo(this.markControl.container.header);
     this.blockProgress = getDom(this.progress_dom, this.markControl).insertAfter(this.topStatus);
     this.subjectTitle = this.topStatus.find('#subject-title');
@@ -61,20 +61,20 @@ MarkStatus.prototype.init = function(option) {
     this.popover.hide();
     this.popover.appendTo(this.markControl.container);
     var self = this;
-    this.popover.find('#continue-button').click(function() {
+    this.popover.find('#continue-button').click(function () {
         self.ignoreTopCount = true;
         self.popover.hide();
     });
 
     this.subjectTitle.find('#subject-name').html(option.subjectName);
     if (option.subjectSelectUrl != undefined) {
-        this.subjectTitle.click(function() {
+        this.subjectTitle.click(function () {
             window.location.href = option.subjectSelectUrl;
         });
     }
 }
 
-MarkStatus.prototype.checkTopCount = function(task) {
+MarkStatus.prototype.checkTopCount = function (task) {
     //任务限额提示
     if (task != undefined && task.previous != true && this.status != undefined && this.status.topCount > 0 && this.status.markedCount >= this.status.topCount && this.ignoreTopCount != true) {
         this.popover.show();
@@ -83,7 +83,7 @@ MarkStatus.prototype.checkTopCount = function(task) {
     }
 }
 
-MarkStatus.prototype.render = function(status) {
+MarkStatus.prototype.render = function (status) {
     if (status != undefined && status.valid === true) {
         var topCount = status.topCount;
         this.topStatus.find('#mark-count').html(status.personCount);
@@ -100,10 +100,10 @@ MarkStatus.prototype.render = function(status) {
             } else if (markedPercent == '0' && markedCount > 0) {
                 markedPercent = '1';
             }
-            if(topCount > 0){
-                if(this.blockProgress.find('#top-count').length == 0){
-                  this.blockProgress.find('#todo-count').after('<i>任务数<em id="top-count"></em></i>');
-                  this.blockProgress.find('#top-count').html(topCount);
+            if (topCount > 0) {
+                if (this.blockProgress.find('#top-count').length == 0) {
+                    this.blockProgress.find('#todo-count').after('<i>任务数<em id="top-count"></em></i>');
+                    this.blockProgress.find('#top-count').html(topCount);
                 }
             }
             this.blockProgress.find('#total-count').html(totalCount);

+ 8 - 8
stmms-web/src/main/webapp/static/mark-new/js/modules/header-mark-status.js

@@ -1,5 +1,5 @@
 //评卷状态模块
-var header_mark_status = function(option, success) {
+var header_mark_status = function (option, success) {
     var object = new HeaderMarkStatus(option);
     success();
     return object;
@@ -9,28 +9,28 @@ function HeaderMarkStatus(option) {
     this.markControl = option.markControl;
     this.title = option.title;
     this.init();
-    this.markControl.on('task.get.before', this, function(event, context, statusInfo) {
+    this.markControl.on('task.get.before', this, function (event, context, statusInfo) {
         this.secretArea.hide();
         this.blockTitle.html('正在领取任务');
     });
-    this.markControl.on('task.get.success', this, function(event, context, eventObject) {
+    this.markControl.on('task.get.success', this, function (event, context, eventObject) {
         var task = context.task;
         //状态栏区域
         this.blockTitle.html('');
 
         this.secretArea.show();
-        this.topStatus.find('#secret-number').html(task.studentId);
+        this.topStatus.find('#secret-number').html(task.studentNumber);
     });
-    this.markControl.on('task.get.none', this, function(event, context, status) {
+    this.markControl.on('task.get.none', this, function (event, context, status) {
         this.secretArea.hide();
         this.blockTitle.html('');
     });
-    this.markControl.on('mark.status.change', this, function(event, context, status) {
+    this.markControl.on('mark.status.change', this, function (event, context, status) {
         this.render(status);
     });
 }
 
-HeaderMarkStatus.prototype.init = function() {
+HeaderMarkStatus.prototype.init = function () {
     this.progress = getDom(this.progress_dom, this.markControl).prependTo(this.markControl.container.header);
     this.topStatus = getDom(this.top_status_dom, this.markControl).prependTo(this.markControl.container.header);
     this.secretArea = this.topStatus.find('#secret-area');
@@ -41,7 +41,7 @@ HeaderMarkStatus.prototype.init = function() {
     this.topStatus.find('#status-title').html(this.title);
 }
 
-HeaderMarkStatus.prototype.render = function(status) {
+HeaderMarkStatus.prototype.render = function (status) {
     if (status != undefined && status.valid === true) {
         this.progress.show();
         //进度信息区域

+ 42 - 42
stmms-web/src/main/webapp/static/mark-new/js/modules/mark-history.js

@@ -1,5 +1,5 @@
 //回评模块
-var mark_history = function(option, success) {
+var mark_history = function (option, success) {
     var object = new MarkHistory(option);
     success();
     return object;
@@ -18,11 +18,11 @@ function MarkHistory(option) {
 
     this.markControl.initMarkFunction();
     this.container.toggleButton = getDom(this.toggle_button_dom, this.markControl).appendTo(this.markControl.container.assistant.functionList);
-    this.container.toggleButton.click(this, function(event) {
+    this.container.toggleButton.click(this, function (event) {
         event.data.toggle(true);
     });
 
-    this.markControl.on('history.get.success', this, function(event, context, data) {
+    this.markControl.on('history.get.success', this, function (event, context, data) {
         var taskList = data.result;
         this.taskList = [];
         this.loading = false;
@@ -33,7 +33,7 @@ function MarkHistory(option) {
                 var task = taskList[i];
                 task.totalScore = parseNumber(task.totalScore);
                 var row = getDom(this.history_row_dom, this.markControl).appendTo(this.container.list);
-                row.find('.history-secret-number').html(task.studentId);
+                row.find('.history-secret-number').html(task.studentNumber);
                 if (task.tags != undefined && task.tags != null) {
                     row.find('.history-secret-number').addClass('tips');
                 }
@@ -58,7 +58,7 @@ function MarkHistory(option) {
                 // }
             }
         }
-        this.container.list.find('td').click(this, function(event) {
+        this.container.list.find('td').click(this, function (event) {
             var markHistory = event.data;
             var index = $(event.target).parent().attr('data-index');
             markHistory.onTaskSelect(index);
@@ -71,31 +71,31 @@ function MarkHistory(option) {
             this.onTaskSelect(0);
         }
     });
-    this.markControl.on('history.get.error', this, function(event, context, data) {
+    this.markControl.on('history.get.error', this, function (event, context, data) {
         alert(getMessage("mark.history.error"));
     });
-    this.markControl.on('task.submit.success', this, function(event, context, data) {
+    this.markControl.on('task.submit.success', this, function (event, context, data) {
         if (this.enable) {
             this.toggle(false);
         }
     });
-    this.markControl.on('task.get.success', this, function(event, context, data) {
+    this.markControl.on('task.get.success', this, function (event, context, data) {
         this.loading = false;
     });
-    this.markControl.on('history.submit.success', this, function(event, context, task) {
+    this.markControl.on('history.submit.success', this, function (event, context, task) {
         if (task.previous == true) {
             this.updateTaskScore(task.totalScore);
         }
-        if(task.problem == true){
-        	var self = this;
-        	self.toggle(false);
-        	self.markControl.context.task = undefined;
+        if (task.problem == true) {
+            var self = this;
+            self.toggle(false);
+            self.markControl.context.task = undefined;
             self.markControl.getTask();
         }
     });
 }
 
-MarkHistory.prototype.init = function() {
+MarkHistory.prototype.init = function () {
     this.container.empty();
 
     this.container.paginator = getDom(this.paginator_dom, this.markControl).appendTo(this.container);
@@ -104,12 +104,12 @@ MarkHistory.prototype.init = function() {
     this.container.list = getDom(this.history_list_dom, this.markControl).appendTo(this.container).find('#history-list');
 
     var self = this;
-    this.container.header.find('#close-history-button').click(this, function(event) {
+    this.container.header.find('#close-history-button').click(this, function (event) {
         event.data.toggle(false);
         self.markControl.context.task = undefined;
         self.markControl.getTask();
     })
-    this.container.paginator.find('#last-page-button').click(this, function(event) {
+    this.container.paginator.find('#last-page-button').click(this, function (event) {
         var markHistory = event.data;
         if (markHistory.taskList.length < markHistory.pageSize) {
             return;
@@ -121,7 +121,7 @@ MarkHistory.prototype.init = function() {
         }
         markHistory.onSearch(markHistory.pageNumber + 1, markHistory.order, markHistory.sort, markHistory.isTag);
     });
-    this.container.paginator.find('#next-page-button').click(this, function(event) {
+    this.container.paginator.find('#next-page-button').click(this, function (event) {
         var markHistory = event.data;
         if (markHistory.pageNumber == 1) {
             return;
@@ -135,11 +135,11 @@ MarkHistory.prototype.init = function() {
             markHistory.onSearch(markHistory.pageNumber - 1, markHistory.order, markHistory.sort, markHistory.isTag);
         }
     });
-    this.container.find('#studentId-search').click(this, function(event) {
+    this.container.find('#number-search').click(this, function (event) {
         var markHistory = event.data;
-        var studentId = self.container.find('#studentId-in').val();
+        var number = self.container.find('#number-in').val();
         var re = /^[1-9]+[0-9]*]*$/;
-        if (!re.test(studentId)) {
+        if (!re.test(number)) {
             alert(getMessage("mark.history.number.error"));
             return;
         }
@@ -148,26 +148,26 @@ MarkHistory.prototype.init = function() {
         } else {
             markHistory.isTag = false;
         }
-        markHistory.onSearch(0, markHistory.order, markHistory.sort, markHistory.isTag, studentId);
+        markHistory.onSearch(0, markHistory.order, markHistory.sort, markHistory.isTag, number);
     });
-    this.container.find('#time-sort-th').click(this, function(event) {
+    this.container.find('#time-sort-th').click(this, function (event) {
         self.orderSearch("time");
     });
-    this.container.find('#studentId-sort-th').click(this, function(event) {
-        self.orderSearch("studentId");
+    this.container.find('#number-sort-th').click(this, function (event) {
+        self.orderSearch("number");
     });
-    this.container.find('#score-sort-th').click(this, function(event) {
+    this.container.find('#score-sort-th').click(this, function (event) {
         self.orderSearch("score");
     });
 
     self.updateSort(self.order, self.sort);
     self.updateLoading();
 
-    this.container.find('#studentId-in').click(this, function(event) {
+    this.container.find('#number-in').click(this, function (event) {
         self.markControl.trigger('mark.focus.change');
     });
 }
-MarkHistory.prototype.orderSearch = function(order) {
+MarkHistory.prototype.orderSearch = function (order) {
     this.order = order;
     if (this.sort == "asc") {
         this.sort = "desc";
@@ -182,7 +182,7 @@ MarkHistory.prototype.orderSearch = function(order) {
     this.onSearch(this.pageNumber, this.order, this.sort, this.isTag);
 }
 
-MarkHistory.prototype.toggle = function(enable) {
+MarkHistory.prototype.toggle = function (enable) {
     this.enable = enable;
     if (enable) {
         this.init();
@@ -201,7 +201,7 @@ MarkHistory.prototype.toggle = function(enable) {
     }
 }
 
-MarkHistory.prototype.updatePage = function() {
+MarkHistory.prototype.updatePage = function () {
     this.container.paginator.find('#history-start').html(this.pageSize * (this.pageNumber - 1));
     this.container.paginator.find('#history-end').html(this.pageSize * this.pageNumber);
 
@@ -217,7 +217,7 @@ MarkHistory.prototype.updatePage = function() {
     //    }
 
 }
-MarkHistory.prototype.updateLoading = function() {
+MarkHistory.prototype.updateLoading = function () {
     if (this.loading) {
         this.container.find('#history-loading').show();
     } else {
@@ -225,9 +225,9 @@ MarkHistory.prototype.updateLoading = function() {
     }
 }
 
-MarkHistory.prototype.updateSort = function(order, sort) {
+MarkHistory.prototype.updateSort = function (order, sort) {
     this.container.find('#time-sort').removeClass();
-    this.container.find('#studentId-sort').removeClass();
+    this.container.find('#number-sort').removeClass();
     this.container.find('#score-sort').removeClass();
     if (sort == 'desc') {
         this.container.find('#' + order + '-sort').addClass("down");
@@ -238,7 +238,7 @@ MarkHistory.prototype.updateSort = function(order, sort) {
 
 }
 
-MarkHistory.prototype.onSearch = function(pageNumber, order, sort, isTag, studentId) {
+MarkHistory.prototype.onSearch = function (pageNumber, order, sort, isTag, number) {
     if (pageNumber == undefined || pageNumber < 1) {
         pageNumber = 1;
     }
@@ -251,8 +251,8 @@ MarkHistory.prototype.onSearch = function(pageNumber, order, sort, isTag, studen
     if (isTag == undefined) {
         isTag = false;
     }
-    if (studentId == undefined || studentId == "") {
-        studentId = null;
+    if (number == undefined || number == "") {
+        number = null;
     }
     this.markControl.getHistory({
         pageNumber: pageNumber,
@@ -260,14 +260,14 @@ MarkHistory.prototype.onSearch = function(pageNumber, order, sort, isTag, studen
         order: order,
         sort: sort,
         isTag: isTag,
-        studentId: studentId
+        secretNumber: number
     });
 }
 
-MarkHistory.prototype.onTaskSelect = function(index) {
+MarkHistory.prototype.onTaskSelect = function (index) {
     var number = new String(index);
     if (this.taskList != undefined && index < this.taskList.length && this.loading != true) {
-        this.container.list.find('tr').each(function(index, obj) {
+        this.container.list.find('tr').each(function (index, obj) {
             if ($(obj).attr('data-index') == number) {
                 $(obj).addClass('active');
             } else {
@@ -281,8 +281,8 @@ MarkHistory.prototype.onTaskSelect = function(index) {
     }
 }
 
-MarkHistory.prototype.updateTaskScore = function(score) {
-    this.container.list.find('tr').each(function(index, obj) {
+MarkHistory.prototype.updateTaskScore = function (score) {
+    this.container.list.find('tr').each(function (index, obj) {
         if ($(obj).hasClass("active")) {
             $(obj).find('td').last().html(score);
         }
@@ -304,12 +304,12 @@ MarkHistory.prototype.paginator_dom = '<div class="c-page">\
 
 MarkHistory.prototype.history_search_dom = '<div class="c-scbar cl">\
 <table id="history-search" cellpadding="0" cellspacing="0" width="100%">\
-<tr><td class="sc"><span><input type="text" placeholder="查找试卷" id="studentId-in" maxlength="10" data-i18n-placeholder="mark.history.search"/><em id="studentId-search"></em></span></td>\
+<tr><td class="sc"><span><input type="text" placeholder="查找试卷" id="number-in" maxlength="10" data-i18n-placeholder="mark.history.search"/><em id="number-search"></em></span></td>\
 </tr></table></div>';
 
 MarkHistory.prototype.history_list_dom = '<div class="sublist"><div class="c-table">\
 <table class="table table-hover" cellpadding="0" cellspacing="0" width="100%"><thead><tr>\
-<th id="studentId-sort-th"><span data-i18n-text="mark.history.number">编号</span><em class="up" id="studentId-sort"></th>\
+<th id="number-sort-th"><span data-i18n-text="mark.history.number">编号</span><em class="up" id="number-sort"></th>\
 <th id="time-sort-th"><span data-i18n-text="mark.history.time">时间</span><em class="up" id="time-sort"></em></th>\
 <th id="score-sort-th"><span data-i18n-text="mark.history.score">总分</span><em class="up" id="score-sort"></th></tr></thead>\
 <tbody class="loding" id="history-loading"><tr><td colspan="3"><div><img src="{staticServer}/mark-new/images/loding.gif"/></div><p data-i18n-text="mark.history.loading">正在加载请稍候</p></td></tr></tbody>\