Переглянути джерело

Merge branch 'dev_200331_openapi' of http://git.qmth.com.cn/luoshi/stmms-ft into dev_200331_openapi

luoshi 4 роки тому
батько
коміт
197bc5141d
25 змінених файлів з 1236 додано та 941 видалено
  1. 0 5
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java
  2. 2 15
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/MarkerDao.java
  3. 11 0
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/model/ExamStudent.java
  4. 4 9
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamStudentService.java
  5. 1 15
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/MarkerService.java
  6. 40 25
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java
  7. 11 113
      stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/MarkerServiceImpl.java
  8. 17 16
      stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java
  9. 16 6
      stmms-web/src/main/java/cn/com/qmth/stmms/student/StudentScoreController.java
  10. 6 2
      stmms-web/src/main/webapp/WEB-INF/views/modules/mark/markJson.jsp
  11. 6 1
      stmms-web/src/main/webapp/WEB-INF/views/modules/mark/markNew.jsp
  12. 7 1
      stmms-web/src/main/webapp/WEB-INF/views/modules/mark/markTrack.jsp
  13. 118 0
      stmms-web/src/main/webapp/WEB-INF/views/modules/student/list.jsp
  14. 54 0
      stmms-web/src/main/webapp/WEB-INF/views/modules/student/login.jsp
  15. 96 0
      stmms-web/src/main/webapp/static/common/login.css
  16. 257 243
      stmms-web/src/main/webapp/static/i18n/messages.properties
  17. 16 2
      stmms-web/src/main/webapp/static/i18n/messages_en.properties
  18. 258 244
      stmms-web/src/main/webapp/static/i18n/messages_ja.properties
  19. 257 243
      stmms-web/src/main/webapp/static/i18n/messages_zh.properties
  20. BIN
      stmms-web/src/main/webapp/static/images/user.png
  21. 1 0
      stmms-web/src/main/webapp/static/mark-json/js/mark-control.js
  22. 1 0
      stmms-web/src/main/webapp/static/mark-new/js/mark-control.js
  23. 1 1
      stmms-web/src/main/webapp/static/mark-new/js/modules/change-name.js
  24. 55 0
      stmms-web/src/main/webapp/static/mark-new/js/modules/switch-group.js
  25. 1 0
      stmms-web/src/main/webapp/static/mark-track/js/mark-control.js

+ 0 - 5
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/ExamStudentDao.java

@@ -182,11 +182,6 @@ public interface ExamStudentDao extends PagingAndSortingRepository<ExamStudent,
     public List<Double> findLowCountTotalSocreByExamIdAndSubjectCodeAndClass(Integer examId, String subjectCode,
             String className, int lowCount);
 
-    @Query("select s from ExamStudent s where s.studentCode=?2 and s.name=?3 and s.examId "
-            + "in (select e.id from Exam e where e.schoolId=?1)")
-    public List<ExamStudent> findBySchoolIdAndStudentCodeAndName(Integer schoolId, String studentCode, String name,
-            Pageable page);
-
     @Query("select s.className from ExamStudent s where s.examId=?1 group by s.className")
     public List<String> findDistinctClassName(Integer examId);
 

+ 2 - 15
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/dao/MarkerDao.java

@@ -2,6 +2,7 @@ package cn.com.qmth.stmms.biz.exam.dao;
 
 import cn.com.qmth.stmms.biz.exam.model.Marker;
 import cn.com.qmth.stmms.common.enums.MarkStatus;
+
 import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
 import org.springframework.data.jpa.repository.Modifying;
@@ -52,10 +53,6 @@ public interface MarkerDao extends PagingAndSortingRepository<Marker, Integer>,
     @Query("update Marker m set m.markSetting=?2 where m.id=?1")
     public void updateMarkSettingById(Integer id, String setting);
 
-    // @Modifying
-    // @Query("update Marker m set m.openAccountId=?2 where m.id=?1")
-    // public void updateOpenAccountById(Integer id, Integer accountId);
-
     @Modifying
     @Query("update Marker m set m.finishCount=null, m.validCount=null, m.avgSpeed=null, m.avgScore=null, m.stdevScore=null "
             + "where m.examId=?1 and m.subjectCode=?2 and m.groupNumber=?3")
@@ -77,16 +74,6 @@ public interface MarkerDao extends PagingAndSortingRepository<Marker, Integer>,
     @Query("select count(m) from Marker m where m.userId=?1")
     public long countByUserId(Integer userId);
 
-    // @Query(value =
-    // "select m from Marker m, MarkGroup g where m.openAccountId=?1 and m.enable=?2 "
-    // +
-    // "and m.examId=g.pk.examId and m.subjectCode=g.pk.subjectCode and m.groupNumber=g.pk.number and g.status in (?3)")
-    // List<Marker> findByOpenAccountIdAndEnableAndMarkStatus(Integer accountId,
-    // boolean enable, MarkStatus... status);
-
-    // @Query("select count(m) from Marker m where m.examId=?1 and m.subjectCode=?2 and m.groupNumber=?3 and m.openAccountId=?4")
-    // long countByExamIdAndSubjectCodeAndGroupNumberAndOpenAccountId(Integer
-    // examId, String subjectCode, Integer number,
-    // Integer openAccountId);
+    public List<Marker> findByExamIdAndSubjectCodeAndUserId(Integer examId, String subjectCode, Integer userId);
 
 }

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

@@ -297,6 +297,9 @@ public class ExamStudent implements Serializable {
     @Transient
     private String tagValue;
 
+    @Transient
+    private String examName;
+
     @Transient
     private List<ExamQuestion> subjectiveQuestionList;
 
@@ -807,4 +810,12 @@ public class ExamStudent implements Serializable {
         this.secretNumber = secretNumber;
     }
 
+    public String getExamName() {
+        return examName;
+    }
+
+    public void setExamName(String examName) {
+        this.examName = examName;
+    }
+
 }

+ 4 - 9
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/ExamStudentService.java

@@ -1,5 +1,9 @@
 package cn.com.qmth.stmms.biz.exam.service;
 
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
 import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
@@ -8,12 +12,6 @@ import cn.com.qmth.stmms.biz.utils.OriginTag;
 import cn.com.qmth.stmms.biz.utils.PictureTag;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-
-import org.springframework.data.domain.Pageable;
-
 public interface ExamStudentService {
 
     public ExamStudent findById(int id);
@@ -138,9 +136,6 @@ public interface ExamStudentService {
 
     public List<String> findDistinctClassName(Integer examId, String subjectCode);
 
-    public List<ExamStudent> findBySchoolIdAndStudentCodeAndName(Integer schoolId, String studentCode, String name,
-            Pageable page);
-
     public List<String> findDistinctClassName(Integer examId);
 
     public void updateSubjectiveStatusAndTime(Integer studentId, SubjectiveStatus inspected, Date inspectTime);

+ 1 - 15
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/MarkerService.java

@@ -13,15 +13,10 @@ public interface MarkerService {
 
     Marker findById(Integer id);
 
-    // Marker findByLoginName(String loginName);
-    //
     List<Marker> findByExamAndSubjectAndGroup(int examId, String subjectCode, int groupNumber);
 
     long countByExam(int examId);
 
-    // int batchCreate(ExamSubject subject, int groupNumber, int count, String
-    // password);
-
     MarkerSearchQuery findByQuery(MarkerSearchQuery query);
 
     List<Marker> getMarkCount(int examId);
@@ -32,8 +27,6 @@ public interface MarkerService {
 
     List<Marker> findMode(String commo);
 
-    // public List<Marker> findByStudentId(int studentId);
-
     public int batchSave(List<Marker> list);
 
     void updateMarkSetting(Integer id, String setting);
@@ -48,12 +41,5 @@ public interface MarkerService {
 
     void save(MarkGroup group, Integer[] userIds);
 
-    // void updateOpenAccountById(Integer id, Integer openAccountId);
-
-    // List<Marker> findByOpenAccountAndMarkStatus(Integer openAccountId,
-    // MarkStatus... status);
-
-    // long countByExamAndSubjectAndGroupAndOpenAccount(Integer examId, String
-    // subjectCode, Integer groupNumber,
-    // Integer openAccountId);
+    List<Marker> findByExamAndSubjectAndUserId(Integer examId, String subjectCode, Integer userId);
 }

+ 40 - 25
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/ExamStudentServiceImpl.java

@@ -1,10 +1,47 @@
 package cn.com.qmth.stmms.biz.exam.service.impl;
 
+import java.text.DecimalFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.persistence.criteria.CriteriaBuilder;
+import javax.persistence.criteria.CriteriaQuery;
+import javax.persistence.criteria.Expression;
+import javax.persistence.criteria.Predicate;
+import javax.persistence.criteria.Root;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang.math.RandomUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Sort;
+import org.springframework.data.domain.Sort.Direction;
+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.dao.ExamStudentDao;
-import cn.com.qmth.stmms.biz.exam.model.*;
+import cn.com.qmth.stmms.biz.exam.model.Exam;
+import cn.com.qmth.stmms.biz.exam.model.ExamPackage;
+import cn.com.qmth.stmms.biz.exam.model.ExamQuestion;
+import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
+import cn.com.qmth.stmms.biz.exam.model.ExamSubject;
+import cn.com.qmth.stmms.biz.exam.model.MarkGroup;
 import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
-import cn.com.qmth.stmms.biz.exam.service.*;
+import cn.com.qmth.stmms.biz.exam.service.CheckStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamPackageService;
+import cn.com.qmth.stmms.biz.exam.service.ExamQuestionService;
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
+import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
+import cn.com.qmth.stmms.biz.exam.service.ExamSubjectService;
+import cn.com.qmth.stmms.biz.exam.service.MarkGroupService;
 import cn.com.qmth.stmms.biz.mark.model.MarkLibrary;
 import cn.com.qmth.stmms.biz.mark.model.MarkSpecialTag;
 import cn.com.qmth.stmms.biz.mark.model.MarkTrack;
@@ -18,22 +55,6 @@ import cn.com.qmth.stmms.biz.utils.PictureTag;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
 import cn.com.qmth.stmms.common.enums.SubjectiveStatus;
 
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.math.RandomUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.domain.Sort;
-import org.springframework.data.domain.Sort.Direction;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.persistence.criteria.*;
-
-import java.text.DecimalFormat;
-import java.util.*;
-
 @Service
 public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implements ExamStudentService {
 
@@ -468,7 +489,7 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
                 // predicates.add(cb.between(evaluationItemSum,
                 // query.getStartScroe(), query.getEndScroe()));
                 // }
-                if (query.getExamId() > 0) {
+                if (query.getExamId() != null && query.getExamId() > 0) {
                     predicates.add(cb.equal(root.get("examId"), query.getExamId()));
                 }
                 if (query.getSchoolId() != null) {
@@ -979,12 +1000,6 @@ public class ExamStudentServiceImpl extends BaseQueryService<ExamStudent> implem
         return studentDao.findDistinctClassName(examId, subjectCode);
     }
 
-    @Override
-    public List<ExamStudent> findBySchoolIdAndStudentCodeAndName(Integer schoolId, String studentCode, String name,
-            Pageable page) {
-        return studentDao.findBySchoolIdAndStudentCodeAndName(schoolId, studentCode, name, page);
-    }
-
     @Override
     public List<String> findDistinctClassName(Integer examId) {
         return studentDao.findDistinctClassName(examId);

+ 11 - 113
stmms-biz/src/main/java/cn/com/qmth/stmms/biz/exam/service/impl/MarkerServiceImpl.java

@@ -10,6 +10,7 @@ import cn.com.qmth.stmms.biz.exam.service.MarkerService;
 import cn.com.qmth.stmms.biz.mark.dao.MarkLibraryDao;
 import cn.com.qmth.stmms.common.enums.LibraryStatus;
 import cn.com.qmth.stmms.common.enums.MarkStatus;
+
 import org.apache.commons.lang.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -21,6 +22,7 @@ import javax.persistence.criteria.CriteriaBuilder;
 import javax.persistence.criteria.CriteriaQuery;
 import javax.persistence.criteria.Predicate;
 import javax.persistence.criteria.Root;
+
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.List;
@@ -41,13 +43,7 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
     @Transactional
     @Override
     public Marker save(Marker marker) {
-        // Marker previous = findByLoginName(marker.getLoginName());
-        // if (previous == null || (marker.getId() != null &&
-        // previous.getId().equals(marker.getId()))) {
         return markerDao.save(marker);
-        // } else {
-        // return null;
-        // }
     }
 
     @Transactional
@@ -56,23 +52,11 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
         markerDao.updateMarkSettingById(id, setting);
     }
 
-    // @Transactional
-    // @Override
-    // public void updateOpenAccountById(Integer id, Integer accountId) {
-    // markerDao.updateOpenAccountById(id, accountId);
-    // }
-
     @Override
     public Marker findById(Integer id) {
         return markerDao.findOne(id);
     }
 
-    // @Override
-    // public Marker findByLoginName(String loginName) {
-    // List<Marker> list = markerDao.findByLoginName(loginName);
-    // return list != null && list.size() > 0 ? list.get(0) : null;
-    // }
-
     @Override
     public List<Marker> findByExamAndSubjectAndGroup(int examId, String subjectCode, int number) {
         return markerDao.findByExamIdAndSubjectCodeAndGroupNumber(examId, subjectCode, number, null);
@@ -88,78 +72,6 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
         return markerDao.countByExamIdAndSubjectCodeAndGroupNumber(examId, subjectCode, number);
     }
 
-    // @Transactional
-    // @Override
-    // public int batchCreate(ExamSubject subject, int groupNumber, int count,
-    // String password) {
-    // int result = 0;
-    // if (subject != null && count > 0) {
-    // if (groupNumber > 0) {
-    // result = saveMarker(subject, groupNumber, count, password);
-    // } else {
-    // List<MarkGroup> groups =
-    // groupService.findByExamAndSubject(subject.getExamId(),
-    // subject.getCode());
-    // for (MarkGroup markGroup : groups) {
-    // result = result + saveMarker(subject, markGroup.getNumber(), count,
-    // password);
-    // }
-    // }
-    // }
-    // return result;
-    // }
-
-    // private int saveMarker(ExamSubject subject, int groupNumber, int count,
-    // String password) {
-    // int result = 0;
-    // int start = 1;
-    // Marker previous = findLastMarker(subject.getExamId(), subject.getCode());
-    // if (previous != null) {
-    // start = previous.getNumber() + 1;
-    // }
-    // int end = start + count - 1;
-    // for (; start <= end; start++) {
-    // Marker marker = new Marker();
-    // marker.setExamId(subject.getExamId());
-    // marker.setSubjectCode(subject.getCode());
-    // if (StringUtils.isEmpty(password)) {
-    // Random random = new Random();
-    // for (int i = 0; i < 6; i++) {
-    // password += random.nextInt(10);
-    // }
-    // marker.setPassword(password);
-    // password = "";// 随机码生产后将密码置空
-    // } else {
-    // marker.setPassword(password);
-    // }
-    // marker.setEnable(true);
-    // marker.buildLoginName(start);
-    // marker.setLoginName(marker.getLoginName());
-    // marker.setName(marker.getLoginName());
-    // marker.setGroupNumber(groupNumber);
-    // marker.setClassCount(0);
-    // if (save(marker) != null) {
-    // result++;
-    // }
-    // }
-    // return result;
-    // }
-
-    // private Marker findLastMarker(int examId, String subjectCode) {
-    // Marker marker = null;
-    // List<Marker> list = markerDao.findByExamIdAndSubjectCode(examId,
-    // subjectCode, new BaseQuery<Marker>(1, 1,
-    // new Sort(Direction.DESC, "id")));
-    // if (list != null && !list.isEmpty()) {
-    // marker = list.get(0);
-    // }
-    // if (marker != null) {
-    // return Marker.parseLoginName(marker.getLoginName());
-    // } else {
-    // return null;
-    // }
-    // }
-
     @Override
     public List<Marker> getMarkCount(int examId) {
         List<Marker> list = new LinkedList<Marker>();
@@ -180,8 +92,8 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
     @Override
     public List<Marker> getMarkCount(int examId, Set<String> subjectCodes) {
         List<Marker> list = new LinkedList<Marker>();
-        List<Object[]> result = libraryDao
-                .countMarkerAndStatusAndSubjectCodeIn(examId, subjectCodes, LibraryStatus.MARKED);
+        List<Object[]> result = libraryDao.countMarkerAndStatusAndSubjectCodeIn(examId, subjectCodes,
+                LibraryStatus.MARKED);
         if (result != null) {
             for (Object[] array : result) {
                 try {
@@ -224,9 +136,8 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
                 if (query.getUserId() != null) {
                     predicates.add(cb.equal(root.get("userId"), query.getUserId()));
                 }
-                return predicates.isEmpty() ?
-                        cb.conjunction() :
-                        cb.and(predicates.toArray(new Predicate[predicates.size()]));
+                return predicates.isEmpty() ? cb.conjunction() : cb.and(predicates.toArray(new Predicate[predicates
+                        .size()]));
             }
         };
     }
@@ -243,8 +154,7 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
     }
 
     @Override
-    public Marker findByExamAndSubjectAndNumberAndUserId(int examId, String subjectCode, Integer number,
-            Integer userId) {
+    public Marker findByExamAndSubjectAndNumberAndUserId(int examId, String subjectCode, Integer number, Integer userId) {
         return markerDao.findByExamIdAndSubjectCodeAndGroupNumberAndUserId(examId, subjectCode, number, userId);
     }
 
@@ -285,20 +195,8 @@ public class MarkerServiceImpl extends BaseQueryService<Marker> implements Marke
         this.batchSave(list);
     }
 
-    // @Override
-    // public List<Marker> findByOpenAccountAndMarkStatus(Integer accountId,
-    // MarkStatus... status) {
-    // return markerDao.findByOpenAccountIdAndEnableAndMarkStatus(accountId,
-    // true, status);
-    // }
-
-    // @Override
-    // public long countByExamAndSubjectAndGroupAndOpenAccount(Integer examId,
-    // String subjectCode, Integer groupNumber,
-    // Integer openAccountId) {
-    // return
-    // markerDao.countByExamIdAndSubjectCodeAndGroupNumberAndOpenAccountId(examId,
-    // subjectCode, groupNumber,
-    // openAccountId);
-    // }
+    @Override
+    public List<Marker> findByExamAndSubjectAndUserId(Integer examId, String subjectCode, Integer userId) {
+        return markerDao.findByExamIdAndSubjectCodeAndUserId(examId, subjectCode, userId);
+    }
 }

+ 17 - 16
stmms-web/src/main/java/cn/com/qmth/stmms/mark/MarkController.java

@@ -154,8 +154,7 @@ public class MarkController extends BaseController {
     }
 
     @RequestMapping(value = "/subject-select", method = RequestMethod.POST)
-    public ModelAndView select(HttpServletRequest request, HttpServletResponse response,
-            @RequestParam Integer markerId) {
+    public ModelAndView select(HttpServletRequest request, HttpServletResponse response, @RequestParam Integer markerId) {
         WebUser user = RequestUtils.getWebUser(request);
         ModelAndView modelAndView = new ModelAndView("modules/mark/subjectSelect");
         Calendar rightNow = Calendar.getInstance();
@@ -228,8 +227,7 @@ public class MarkController extends BaseController {
                 markerService.save(marker);
             }
         }
-        ModelAndView view = new ModelAndView(
-                mode == MarkMode.TRACK ? "modules/mark/markTrack" : "modules/mark/markNew");
+        ModelAndView view = new ModelAndView(mode == MarkMode.TRACK ? "modules/mark/markTrack" : "modules/mark/markNew");
         view.addObject("forceMode", forceMode);
         view.addObject("sheetView", group.isSheetView());
         view.addObject("enableAllZero", group.isEnableAllZero());
@@ -273,9 +271,16 @@ public class MarkController extends BaseController {
         releaseMarker(marker);
 
         List<ProblemType> problemTypes = problemTypeService.findByExamId(marker.getExamId());
+        List<Marker> markers = markerService.findByExamAndSubjectAndUserId(marker.getExamId(), marker.getSubjectCode(),
+                marker.getUserId());
+        markers.remove(marker);
+        for (Marker m : markers) {
+            m.setMarkSetting(null);
+        }
         ObjectMapper mapper = new ObjectMapper();
         try {
             modelAndView.addObject("problemTypes", mapper.writeValueAsString(problemTypes));
+            modelAndView.addObject("groups", mapper.writeValueAsString(markers));
         } catch (JsonProcessingException e) {
             log.error("MarkController-问题类型获取出错", e);
         }
@@ -383,9 +388,8 @@ public class MarkController extends BaseController {
             List<MarkLibrary> list = new ArrayList<MarkLibrary>();
             // 需要判断评卷员是否绑定了班级
             long classCount = markerClassService.countByUserIdAndExamId(marker.getUserId(), marker.getExamId());
-            list = libraryService
-                    .findUnMarked(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber(), marker.getId(),
-                            marker.getUserId(), classCount > 0, retry, 20);
+            list = libraryService.findUnMarked(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber(),
+                    marker.getId(), marker.getUserId(), classCount > 0, retry, 20);
             if (list.isEmpty()) {
                 break;
             }
@@ -406,9 +410,8 @@ public class MarkController extends BaseController {
         int retry = 1;
         Task task = null;
         while (task == null) {
-            List<TrialLibrary> list = trialService
-                    .findUnMarkedLibrary(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber(),
-                            marker.getId(), retry, 10);
+            List<TrialLibrary> list = trialService.findUnMarkedLibrary(marker.getExamId(), marker.getSubjectCode(),
+                    marker.getGroupNumber(), marker.getId(), retry, 10);
             if (list.isEmpty()) {
                 break;
             }
@@ -503,13 +506,11 @@ public class MarkController extends BaseController {
             // 试评查找给分历史记录
             List<TrialHistory> historyList = new ArrayList<TrialHistory>();
             if (secretNumber != null) {
-                historyList = trialService
-                        .findHistory(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber(),
-                                marker.getId(), secretNumber, pageNumber, pageSize, querySort);
+                historyList = trialService.findHistory(marker.getExamId(), marker.getSubjectCode(),
+                        marker.getGroupNumber(), marker.getId(), secretNumber, pageNumber, pageSize, querySort);
             } else {
-                historyList = trialService
-                        .findHistory(marker.getExamId(), marker.getSubjectCode(), marker.getGroupNumber(),
-                                marker.getId(), pageNumber, pageSize, querySort, null);
+                historyList = trialService.findHistory(marker.getExamId(), marker.getSubjectCode(),
+                        marker.getGroupNumber(), marker.getId(), pageNumber, pageSize, querySort, null);
             }
             for (TrialHistory history : historyList) {
                 TrialLibrary library = trialService.findLibrary(history.getLibraryId());

+ 16 - 6
stmms-web/src/main/java/cn/com/qmth/stmms/student/StudentScoreController.java

@@ -1,7 +1,5 @@
 package cn.com.qmth.stmms.student;
 
-import java.util.List;
-
 import javax.servlet.http.HttpServletRequest;
 
 import org.slf4j.Logger;
@@ -15,6 +13,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
 
 import cn.com.qmth.stmms.biz.exam.model.ExamStudent;
 import cn.com.qmth.stmms.biz.exam.query.ExamStudentSearchQuery;
+import cn.com.qmth.stmms.biz.exam.service.ExamService;
 import cn.com.qmth.stmms.biz.exam.service.ExamStudentService;
 import cn.com.qmth.stmms.biz.school.model.School;
 import cn.com.qmth.stmms.biz.school.service.SchoolService;
@@ -31,24 +30,35 @@ public class StudentScoreController {
     @Autowired
     private ExamStudentService studentService;
 
+    @Autowired
+    private ExamService examService;
+
     @RequestMapping(value = "/{schoolId}", method = RequestMethod.GET)
     public String login(Model model, HttpServletRequest request, @PathVariable Integer schoolId) {
         School school = schoolService.findById(schoolId);
         if (school == null) {
             model.addAttribute("message", "...");
+            return "modules/student/login";
         }
 
         model.addAttribute("school", school);
         return "modules/student/login";
     }
 
-    @RequestMapping(value = "/{schoolId}/query", method = RequestMethod.POST)
+    @RequestMapping(value = "/{schoolId}", method = RequestMethod.POST)
     public String getSubject(Model model, HttpServletRequest request, @PathVariable Integer schoolId,
             ExamStudentSearchQuery query) {
-        List<ExamStudent> list = studentService.findBySchoolIdAndStudentCodeAndName(schoolId, query.getStudentCode(),
-                query.getName(), query);
+        School school = schoolService.findById(schoolId);
+        if (school == null) {
+            model.addAttribute("message", "...");
+            return "modules/student/login";
+        }
+        query.setSchoolId(schoolId);
+        query = studentService.findByQuery(query);
+        for (ExamStudent student : query.getResult()) {
+            student.setExamName(examService.findById(student.getExamId()).getName());
+        }
         model.addAttribute("school", schoolService.findById(schoolId));
-        model.addAttribute("list", list);
         model.addAttribute("query", query);
         return "modules/student/list";
     }

+ 6 - 2
stmms-web/src/main/webapp/WEB-INF/views/modules/mark/markJson.jsp

@@ -40,7 +40,7 @@
     <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/change-name.js"></script>
     <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/view-sidebar.js"></script>
     <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/problem-process.js"></script>
-
+    <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/switch-group.js"></script>
 </head>
 <body>
 <div class="container-fluid" id="container"></div>
@@ -69,7 +69,7 @@
                 'json-view': {},
                 'mark-status': {
                     simple: false,
-                    subjectName: '${subject.displayName}'
+                    subjectName: '${subject.displayName}_${marker.groupNumber}'
                 },
                 'mark-history': {
                     pageSize: 10
@@ -87,6 +87,10 @@
                 </c:if>
                 'change-name': {
                     url: '${ctx}/mark/change-name'
+                },
+                'switch-group': {
+                    url: '${ctx}/mark/subject-select',
+                    groups:'${groups}'
                 }
             }
         });

+ 6 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/mark/markNew.jsp

@@ -39,7 +39,7 @@
     <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/view-sidebar.js"></script>
     <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/specialTag.js"></script>
     <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/problem-process.js"></script>
-
+	<script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/switch-group.js"></script>
 </head>
 <body>
 <div class="container-fluid" id="container"></div>
@@ -73,6 +73,7 @@
                 'image-builder': {},
                 'mark-status': {
                     simple: false,
+                    subjectSelectUrl: '${ctx}/mark/subject-select',
                     subjectName: '${subject.displayName}_${marker.groupNumber}'
                 },
                 'mark-history': {
@@ -106,6 +107,10 @@
                 'change-name': {
                     url: '${ctx}/mark/change-name'
                 },
+                'switch-group': {
+                    url: '${ctx}/mark/subject-select',
+                    groups:'${groups}'
+                },
                 'view-sidebar': {
                     list: [
                         {

+ 7 - 1
stmms-web/src/main/webapp/WEB-INF/views/modules/mark/markTrack.jsp

@@ -32,6 +32,7 @@
     <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/view-sidebar.js"></script>
     <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/specialTag.js"></script>
     <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/problem-process.js"></script>
+    <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/switch-group.js"></script>
 </head>
 <body>
 <div class="container-fluid" id="container"></div>
@@ -65,7 +66,8 @@
                 'image-builder': {},
                 'mark-status': {
                     simple: false,
-                    subjectName: '${subject.displayName}'
+                    subjectSelectUrl: '${ctx}/mark/subject-select',
+                    subjectName: '${subject.displayName}_${marker.groupNumber}'
                 },
                 'mark-history': {
                     pageSize: 10
@@ -88,6 +90,10 @@
                 'change-name': {
                     url: '${ctx}/mark/change-name'
                 },
+                'switch-group': {
+                    url: '${ctx}/mark/subject-select',
+                    groups:'${groups}'
+                },
                 'specialTag': {},
                 'slice-view': {
                     server: '${fileServer}'

+ 118 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/student/list.jsp

@@ -0,0 +1,118 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
+<html>
+<head>
+    <title><spring:message code="user.login.submit"/></title>
+    <meta name="decorator" content="default"/>
+    <%@include file="/WEB-INF/views/include/head.jsp" %>
+    <link rel="stylesheet" href="${ctxStatic}/common/login.css">
+    <script type="text/javascript">
+        $(document).ready(function () {
+            if (self.frameElement && self.frameElement.tagName == "IFRAME") {
+                parent.location.reload();
+            }
+            load();
+        });
+        function page(n, s) {
+            $("#pageNumber").val(n);
+            $("#pageSize").val(s);
+            $("#searchForm").submit();
+            return false;
+        }
+    </script>
+</head>
+<body>
+<div class="container">
+<div class="wp">
+  <div class="header cl">
+  	<div class="z"><span class="current">当前学校:${school.name }</span></div>
+    <div class="y">
+    	<a class="user" href="">${query.name }</a>
+    	<a href="javascript:window.close()">退出</a>
+    </div>
+  </div>
+  <div class="table">
+  <form id="searchForm" action="${ctx}/student/${school.id}" method="post" style="display:none">
+  	<input type="hidden" name="studentCode" value="${query.studentCode }"/>
+  	<input type="hidden" name="name" value="${query.name }"/>
+    <input type="hidden" id="pageNumber" name="pageNumber" value="${query.pageNumber }"/>
+    <input type="hidden" id="pageSize" name="pageSize" value="${query.pageSize }"/>
+  </form>
+  	<table cellpadding="0" cellspacing="0" width="100%">
+    	<thead>
+        	<tr>
+            	<td data-i18n-text="student.search.list.examName">考试名称</td>
+            	<td data-i18n-text="student.search.list.subjectName">课程名称</td>
+            	<td data-i18n-text="student.search.list.objectiveScore">客观分</td>
+            	<td data-i18n-text="student.search.list.subjectiveScore">主观分</td>
+            	<td data-i18n-text="student.search.list.totalScore">总分</td>
+            	<td data-i18n-text="student.search.list.remark">备注</td>
+            </tr>
+        </thead>
+    	<tbody>
+    	 <c:forEach items="${query.result}" var="student">
+        	<tr>
+            	<td>${student.examName }</td>
+            	<td>${student.subjectCode }_${student.subjectName }</td>
+            	<td>
+                <c:choose>
+                    <c:when test="${student.absent == true || student.upload == false }">
+                        -
+                    </c:when>
+                    <c:when test="${student.breach == true}">
+                        0
+                    </c:when>
+                    <c:otherwise>
+                        ${student.objectiveScoreString}
+                    </c:otherwise>
+                </c:choose>
+            	</td>
+            	<td>
+                <c:choose>
+                    <c:when test="${student.absent == true || student.upload == false }">
+                        -
+                    </c:when>
+                    <c:when test="${student.breach == true}">
+                        0
+                    </c:when>
+                    <c:otherwise>
+                        ${student.subjectiveScoreString}
+                    </c:otherwise>
+                </c:choose>
+            	</td>
+            	<td>
+                <c:choose>
+                    <c:when test="${student.absent == true || student.upload == false }">
+                        -
+                    </c:when>
+                    <c:when test="${student.breach == true}">
+                        0
+                    </c:when>
+                    <c:otherwise>
+                        ${student.totalScoreString}
+                    </c:otherwise>
+                </c:choose>
+            	</td>
+            	<td><c:if test="${student.absent == true || student.upload == false }">
+                    缺考
+                	</c:if>
+                </td>
+            </tr>
+          </c:forEach>
+        </tbody>
+    </table>
+  </div>
+  <div class="page">
+   <!--  	<span class="pre"><a href="">上页</a></span>
+        <span class="cl">
+          <a class="current" href="">1</a>
+          <a href="">2</a>
+          <a href="">3</a>
+        </span>
+    	<span class="next"><a href="">下页</a></span> -->
+    	${query }
+    </div>
+</div>
+</div>
+</body>
+</html>

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

@@ -0,0 +1,54 @@
+<%@ page contentType="text/html;charset=UTF-8" %>
+<%@ include file="/WEB-INF/views/include/taglib.jsp" %>
+<html>
+<head>
+    <title><spring:message code="student.search.title"/></title>
+    <meta name="decorator" content="default"/>
+    <%@include file="/WEB-INF/views/include/head.jsp" %>
+    <link rel="stylesheet" href="${ctxStatic}/common/login.css">
+    <script type="text/javascript">
+        $(document).ready(function () {
+            if (self.frameElement && self.frameElement.tagName == "IFRAME") {
+                parent.location.reload();
+            }
+            load();
+        });
+    </script>
+</head>
+<body>
+<div class="container">
+    <div class="middle cl">
+        <div class="left">
+            <div class="logo"><img
+                    src="${ctxStatic}/images/<c:if test="${indexLogo ==null||indexLogo =='' }">logo@2x.png</c:if><c:if test="${indexLogo !=null }">${indexLogo }</c:if>"/>
+            </div>
+            <p>Copyright &#169武汉启明软件 2012-2014</p>
+        </div>
+        <div class="right">
+            <div class="title">
+                <h1 data-i18n-text="student.search.title">学生查询成绩</h1>
+                <p>${school.name }</p>
+            </div>
+            <div class="loginbox">
+                <form action="${ctx}/student/${school.id}" method="post" role="form" id="loginForm">
+                    <div class="input-group">
+                        <input type="text" class="form-control required" name="studentCode" placeholder="请输入学号"
+                               autocomplete="off" value="${studentCode }" data-i18n-placeholder="student.search.code"/>
+                    </div>
+                    <div class="input-group">
+                        <input type="text" class="form-control required" name="name" placeholder="请输入姓名"
+                               autocomplete="off" value="${name }" data-i18n-placeholder="student.search.name"/>
+                    </div>
+                    <c:if test="${message != null }">
+                    <div class="point <c:if test="${message != null }"></c:if><c:if test="${message == null }">hide</c:if>">
+                        <em class="error"><spring:message code="${message }"/></em>
+                    </div>
+                    </c:if>
+                    <div class="login-btn"><input class="opacity" type="submit" value="查 询" data-i18n-value="student.search.submit"/></div>
+                </form>
+            </div>
+        </div>
+    </div>
+</div>
+</body>
+</html>

+ 96 - 0
stmms-web/src/main/webapp/static/common/login.css

@@ -350,4 +350,100 @@ input#submit-button:hover  {
     -webkit-appearance: none;
     -moz-appearance: none;
 	padding-left: 20px;
+}
+
+/*list*/
+.wp {
+	width: 1200px;
+/*	align-self: flex-start;
+	padding: 10% 0;*/
+}
+.header {
+	height: 48px;
+	line-height: 48px;
+	overflow: hidden;
+	font-size: 14px;
+	color: #FFF;
+	background: #406ACC;
+	padding: 0 20px;
+}
+.header .z {
+	float: left;
+}
+.header .y {
+	float: right;
+}
+.header a {
+	font-size: 12px;
+	color: #FFF;
+	margin-left: 20px;
+}
+.header a.user {
+	background: url(../images/user.png) no-repeat 0 50%;
+	padding-left: 24px;
+}
+
+table {	
+    background: rgba(255,255,255,.75);
+	-moz-box-shadow: 0px 15px 15px 0px rgba(203,205,211,0.3);
+	-webkit-box-shadow: 0px 15px 15px 0px rgba(203,205,211,0.3);
+	box-shadow: 0px 15px 15px 0px rgba(203,205,211,0.3);
+}
+table td {
+	line-height: 20px;
+	text-align: center;
+	font-size: 14px;
+	color: #5F6376;
+	padding: 12px 20px;
+	border-top: 1px solid #E9EDF9;
+	border-left: 1px solid #E9EDF9;
+}
+table td:nth-child(1) {
+	border-left: 0;
+}
+thead td {
+	font-weight: 700;
+	color: #253566;
+}
+table tr:hover td {
+	background: rgba(255,255,255,.75);
+}
+
+.page {
+	padding: 20px 0;
+	text-align: center;
+	font-size: 12px;
+	font-family: Helvetica;
+}
+.page span {
+	display: inline-block;
+	height: 32px;
+	overflow: hidden;
+}
+.page a {
+	float: left;
+	width: 50px;
+	height: 32px;
+	line-height: 32px;
+	overflow: hidden;
+	font-style: normal;
+	color: #5F6376;
+	background: rgba(255,255,255,.75);
+	margin: 0 3px;
+}
+.page a:hover {
+	color: #406ACC;
+}
+.page span.pre a, .page span.next a {
+	width: 48px;
+}
+.page li.active a {
+	background: #406ACC;
+	color: #FFF;
+}
+.page li.disabled.controls  {
+	display:none;
+}
+.page ul{
+	margin-left: auto
 }

+ 257 - 243
stmms-web/src/main/webapp/static/i18n/messages.properties

@@ -1,277 +1,291 @@
 #login
-user.login.title=\u9AD8\u6821\u8003\u8BD5\u7BA1\u7406\u5E73\u53F0
-user.login.admin=\u7BA1\u7406\u5458\u767B\u5F55
-user.login.marker=\u8BC4\u5377\u5458\u767B\u5F55
-user.login.name=\u7528\u6237\u540D
-user.login.password=\u5BC6\u7801
-user.login.submit=\u767B\u5F55
-user.login.error.account=\u5E10\u53F7\u4E0D\u5B58\u5728
-user.login.error.finish=\u8BC4\u5377\u5DF2\u7ED3\u675F
-user.login.error.group=\u5927\u9898\u4E0D\u5B58\u5728
-user.login.error.disabled=\u5E10\u53F7\u5DF2\u7981\u7528
-user.login.error.password=\u5BC6\u7801\u9519\u8BEF
-user.login.error.access=\u7528\u6237\u6CA1\u6709\u8BBF\u95EE\u6743\u9650
+user.login.title=\u9ad8\u6821\u8003\u8bd5\u7ba1\u7406\u5e73\u53f0
+user.login.admin=\u7ba1\u7406\u5458\u767b\u5f55
+user.login.marker=\u8bc4\u5377\u5458\u767b\u5f55
+user.login.name=\u7528\u6237\u540d
+user.login.password=\u5bc6\u7801
+user.login.submit=\u767b\u5f55
+user.login.error.account=\u5e10\u53f7\u4e0d\u5b58\u5728
+user.login.error.finish=\u8bc4\u5377\u5df2\u7ed3\u675f
+user.login.error.group=\u5927\u9898\u4e0d\u5b58\u5728
+user.login.error.disabled=\u5e10\u53f7\u5df2\u7981\u7528
+user.login.error.password=\u5bc6\u7801\u9519\u8bef
+user.login.error.access=\u7528\u6237\u6ca1\u6709\u8bbf\u95ee\u6743\u9650
 #reset
-user.reset.submit=\u786E\u5B9A
-user.reset.logout=\u9000\u51FA
-user.reset.title=\u9996\u6B21\u767B\u5F55\uFF0C\u8BF7\u5B8C\u5584\u8D44\u6599
-user.reset.name=\u8F93\u5165\u7528\u6237\u540D
-user.reset.password=\u8F93\u5165\u65B0\u5BC6\u7801
-user.reset.password.again=\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801
-user.reset.name.length=\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC710\u4E2A\u5B57
-user.reset.password.same=\u4E24\u6B21\u5BC6\u7801\u8BF7\u4FDD\u6301\u4E00\u81F4
-user.reset.password.length=\u5BC6\u7801\u7684\u957F\u5EA6\u81F3\u5C114\u4F4D\uFF0C\u4E0D\u80FD\u8D85\u8FC78\u4F4D
+user.reset.submit=\u786e\u5b9a
+user.reset.logout=\u9000\u51fa
+user.reset.title=\u9996\u6b21\u767b\u5f55\uff0c\u8bf7\u5b8c\u5584\u8d44\u6599
+user.reset.name=\u8f93\u5165\u7528\u6237\u540d
+user.reset.password=\u8f93\u5165\u65b0\u5bc6\u7801
+user.reset.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+user.reset.name.length=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc710\u4e2a\u5b57
+user.reset.password.same=\u4e24\u6b21\u5bc6\u7801\u8bf7\u4fdd\u6301\u4e00\u81f4
+user.reset.password.length=\u5bc6\u7801\u7684\u957f\u5ea6\u81f3\u5c114\u4f4d\uff0c\u4e0d\u80fd\u8d85\u8fc78\u4f4d
 #mark-control
-mark.control.assistant=\u5C0F\u52A9\u624B
-mark.control.mode.track=\u5207\u6362\u5230\u8F68\u8FF9\u6A21\u5F0F
-mark.control.mode.common=\u5207\u6362\u5230\u666E\u901A\u6A21\u5F0F
-mark.control.function=\u8BC4\u5377\u529F\u80FD
-mark.control.logout=\u9000\u51FA
-mark.control.init.error=\u521D\u59CB\u5316\u5931\u8D25\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u91CD\u65B0\u52A0\u8F7D
-mark.control.task.not.exist=\u8BC4\u5377\u5927\u9898\u4E0D\u5B58\u5728
-mark.control.task.finish=\u8BC4\u5377\u5DF2\u7ED3\u675F
-mark.control.task.null=\u5F53\u524D\u65E0\u8BC4\u5377\u4EFB\u52A1
-mark.control.tsak.error=\u8BC4\u5377\u4EFB\u52A1\u63D0\u4EA4\u5931\u8D25\uFF0C\u8BF7\u5237\u65B0\u9875\u9762
+mark.control.assistant=\u5c0f\u52a9\u624b
+mark.control.mode.track=\u5207\u6362\u5230\u8f68\u8ff9\u6a21\u5f0f
+mark.control.mode.common=\u5207\u6362\u5230\u666e\u901a\u6a21\u5f0f
+mark.control.function=\u8bc4\u5377\u529f\u80fd
+mark.control.logout=\u9000\u51fa
+mark.control.init.error=\u521d\u59cb\u5316\u5931\u8d25\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u91cd\u65b0\u52a0\u8f7d
+mark.control.task.not.exist=\u8bc4\u5377\u5927\u9898\u4e0d\u5b58\u5728
+mark.control.task.finish=\u8bc4\u5377\u5df2\u7ed3\u675f
+mark.control.task.null=\u5f53\u524d\u65e0\u8bc4\u5377\u4efb\u52a1
+mark.control.tsak.error=\u8bc4\u5377\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25\uff0c\u8bf7\u5237\u65b0\u9875\u9762
 #status
-mark.status.student.number=\u8003\u751F\u7F16\u53F7
-mark.status.library.number=\u4EFB\u52A1\u7F16\u53F7
-mark.status.objective.score=\u5BA2\u89C2\u5F97\u5206
-mark.status.marked.count=\u5DF2\u8BC4
-mark.status.unmark.count=\u672A\u8BC4
-mark.status.top.count=\u5206\u914D
-mark.status.progress=\u8FDB\u5EA6
-mark.status.continue=\u7EE7\u7EED
-mark.status.top.count.finish=\u5206\u914D\u4EFB\u52A1\u5DF2\u8BC4\u5B8C\uFF0C\u662F\u5426\u7EE7\u7EED\uFF1F
-mark.status.loading=\u6B63\u5728\u52A0\u8F7D...
-mark.status.logout=\u9000\u51FA
+mark.status.student.number=\u8003\u751f\u7f16\u53f7
+mark.status.library.number=\u4efb\u52a1\u7f16\u53f7
+mark.status.objective.score=\u5ba2\u89c2\u5f97\u5206
+mark.status.marked.count=\u5df2\u8bc4
+mark.status.unmark.count=\u672a\u8bc4
+mark.status.top.count=\u5206\u914d
+mark.status.progress=\u8fdb\u5ea6
+mark.status.continue=\u7ee7\u7eed
+mark.status.top.count.finish=\u5206\u914d\u4efb\u52a1\u5df2\u8bc4\u5b8c\uff0c\u662f\u5426\u7ee7\u7eed\uff1f
+mark.status.loading=\u6b63\u5728\u52a0\u8f7d...
+mark.status.logout=\u9000\u51fa
 #single-image-view
-mark.single.zoom.in=\u653E\u5927
-mark.single.zoom.out=\u7F29\u5C0F
-mark.single.zoom.fit=\u9002\u5E94
-mark.single.student.answer=\u7B54\u5377
+mark.single.zoom.in=\u653e\u5927
+mark.single.zoom.out=\u7f29\u5c0f
+mark.single.zoom.fit=\u9002\u5e94
+mark.single.student.answer=\u7b54\u5377
 #chang name
-mark.change.name=\u4FEE\u6539\u4E2A\u4EBA\u4FE1\u606F
-mark.change.press.name=\u8F93\u5165\u7528\u6237\u540D
-mark.change.press.password=\u8F93\u5165\u65B0\u5BC6\u7801
-mark.change.press.password.again=\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801
-mark.change.confirm=\u786E\u5B9A
-mark.change.name.null=\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A
-mark.change.name.length=\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC78\u4E2A\u5B57
-mark.change.password.same=\u4E24\u6B21\u5BC6\u7801\u8BF7\u4FDD\u6301\u4E00\u81F4
-mark.change.password.length=\u5BC6\u7801\u7684\u957F\u5EA6\u81F3\u5C114\u4F4D
-mark.change.network.error=\u7F51\u7EDC\u901A\u4FE1\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5
-mark.change.error=\u4FEE\u6539\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5
+mark.change.name=\u4fee\u6539\u4e2a\u4eba\u4fe1\u606f
+mark.change.press.name=\u8f93\u5165\u7528\u6237\u540d
+mark.change.press.password=\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.press.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.confirm=\u786e\u5b9a
+mark.change.name.null=\u540d\u5b57\u4e0d\u80fd\u4e3a\u7a7a
+mark.change.name.length=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc78\u4e2a\u5b57
+mark.change.password.same=\u4e24\u6b21\u5bc6\u7801\u8bf7\u4fdd\u6301\u4e00\u81f4
+mark.change.password.length=\u5bc6\u7801\u7684\u957f\u5ea6\u81f3\u5c114\u4f4d
+mark.change.network.error=\u7f51\u7edc\u901a\u4fe1\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
+mark.change.error=\u4fee\u6539\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
 #specialTag
-mark.special.tag=\u7279\u6B8A\u6807\u8BB0
-mark.special.back=\u56DE\u9000
-mark.special.clear=\u5168\u90E8\u6E05\u9664
-mark.special.underline=\u4E0B\u5212\u7EBF
-mark.special.open=\u6253\u5F00
-mark.special.close=\u5173\u95ED
+mark.special.tag=\u7279\u6b8a\u6807\u8bb0
+mark.special.back=\u56de\u9000
+mark.special.clear=\u5168\u90e8\u6e05\u9664
+mark.special.underline=\u4e0b\u5212\u7ebf
+mark.special.open=\u6253\u5f00
+mark.special.close=\u5173\u95ed
 #problem-process
-mark.problem=\u95EE\u9898\u5377
-mark.problem.type=\u9009\u62E9\u95EE\u9898\u7C7B\u578B
-mark.problem.confirm=\u786E\u5B9A
-mark.problem.cancel=\u53D6\u6D88
-mark.problem.check=\u8BF7\u9009\u62E9\u95EE\u9898\u5206\u7C7B
+mark.problem=\u95ee\u9898\u5377
+mark.problem.type=\u9009\u62e9\u95ee\u9898\u7c7b\u578b
+mark.problem.confirm=\u786e\u5b9a
+mark.problem.cancel=\u53d6\u6d88
+mark.problem.check=\u8bf7\u9009\u62e9\u95ee\u9898\u5206\u7c7b
 #thumbnail
-mark.thumbnail=\u7F29\u7565\u56FE
-mark.thumbnail.open=\u6253\u5F00
-mark.thumbnail.close=\u5173\u95ED
+mark.thumbnail=\u7f29\u7565\u56fe
+mark.thumbnail.open=\u6253\u5f00
+mark.thumbnail.close=\u5173\u95ed
 #view-sidebar
-mark.sidebar=\u4FA7\u8FB9\u680F
-mark.sidebar.paper=\u8BD5\u5377
-mark.sidebar.answer=\u7B54\u6848
+mark.sidebar=\u4fa7\u8fb9\u680f
+mark.sidebar.paper=\u8bd5\u5377
+mark.sidebar.answer=\u7b54\u6848
 #mark-history
-mark.history.title=\u56DE\u8BC4
-mark.history.time=\u65F6\u95F4
-mark.history.number=\u7F16\u53F7
-mark.history.score=\u603B\u5206
-mark.history.search=\u67E5\u627E\u8BD5\u5377
-mark.history.pre=\u524D
-mark.history.success=\u56DE\u8BC4\u6210\u529F\uFF0C\u603B\u5206\uFF1A
-mark.history.problem=\u56DE\u8BC4\u6210\u529F\uFF0C\u5DF2\u63D0\u4EA4\u95EE\u9898\u5377
-mark.history.loading=\u6B63\u5728\u52A0\u8F7D\u8BF7\u7A0D\u5019
-mark.history.error=\u6682\u65F6\u65E0\u6CD5\u8BFB\u53D6\u8BC4\u5377\u5386\u53F2\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5
-mark.history.number.error=\u8BF7\u8F93\u5165\u6570\u5B57
+mark.history.title=\u56de\u8bc4
+mark.history.time=\u65f6\u95f4
+mark.history.number=\u7f16\u53f7
+mark.history.score=\u603b\u5206
+mark.history.search=\u67e5\u627e\u8bd5\u5377
+mark.history.pre=\u524d
+mark.history.success=\u56de\u8bc4\u6210\u529f\uff0c\u603b\u5206\uff1a
+mark.history.problem=\u56de\u8bc4\u6210\u529f\uff0c\u5df2\u63d0\u4ea4\u95ee\u9898\u5377
+mark.history.loading=\u6b63\u5728\u52a0\u8f7d\u8bf7\u7a0d\u5019
+mark.history.error=\u6682\u65f6\u65e0\u6cd5\u8bfb\u53d6\u8bc4\u5377\u5386\u53f2\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
+mark.history.number.error=\u8bf7\u8f93\u5165\u6570\u5b57
 #mark-board
-mark.board.submit=\u63D0\u4EA4
-mark.board.total.score=\u603B\u5206
-mark.board.score.zero=\u5168\u96F6\u5206
-mark.board.pass=\u8DF3 \u8FC7
-mark.board.choose.result=\u9009\u505A\u7ED3\u679C
-mark.board.keyboard=\u952E\u76D8\u7ED9\u5206 >>
-mark.board.mouse=<< \u9F20\u6807\u7ED9\u5206
-mark.board.interval=\u95F4\u9694
+mark.board.submit=\u63d0\u4ea4
+mark.board.total.score=\u603b\u5206
+mark.board.score.zero=\u5168\u96f6\u5206
+mark.board.pass=\u8df3 \u8fc7
+mark.board.choose.result=\u9009\u505a\u7ed3\u679c
+mark.board.keyboard=\u952e\u76d8\u7ed9\u5206 >>
+mark.board.mouse=<< \u9f20\u6807\u7ed9\u5206
+mark.board.interval=\u95f4\u9694
 mark.board.score=\u5206
-mark.board.back=\u56DE\u9000
-mark.board.clear.question=\u6E05\u9664\u672C\u9898
-mark.board.clear=\u6E05\u9664\u5168\u5377
-mark.board.question.not.mark=\u5F53\u524D\u4EFB\u52A1\u8FD8\u6709\u672A\u7ED9\u5206\u7684\u9898\uFF0C\u8BF7\u7EE7\u7EED\u7ED9\u5206
-mark.board.confirm=,\u786E\u8BA4\u63D0\u4EA4\u5417\uFF1F
-mark.board.zero.confirm=\u786E\u8BA4\u8981\u63D0\u4EA4\u5168\u96F6\u5206\u5417\uFF1F
-mark.board.null=\u65E0
-mark.board.interval.error=\u4E0D\u7B26\u5408\u5206\u503C\u95F4\u9694\u8981\u6C42
-mark.board.gt=\u4E0D\u80FD\u5927\u4E8E
-mark.board.lt=\u4E0D\u80FD\u5C0F\u4E8E
-mark.board.number.error=\u4E0D\u662F\u5408\u6CD5\u6570\u5B57
+mark.board.back=\u56de\u9000
+mark.board.clear.question=\u6e05\u9664\u672c\u9898
+mark.board.clear=\u6e05\u9664\u5168\u5377
+mark.board.question.not.mark=\u5f53\u524d\u4efb\u52a1\u8fd8\u6709\u672a\u7ed9\u5206\u7684\u9898\uff0c\u8bf7\u7ee7\u7eed\u7ed9\u5206
+mark.board.confirm=,\u786e\u8ba4\u63d0\u4ea4\u5417\uff1f
+mark.board.zero.confirm=\u786e\u8ba4\u8981\u63d0\u4ea4\u5168\u96f6\u5206\u5417\uff1f
+mark.board.null=\u65e0
+mark.board.interval.error=\u4e0d\u7b26\u5408\u5206\u503c\u95f4\u9694\u8981\u6c42
+mark.board.gt=\u4e0d\u80fd\u5927\u4e8e
+mark.board.lt=\u4e0d\u80fd\u5c0f\u4e8e
+mark.board.number.error=\u4e0d\u662f\u5408\u6cd5\u6570\u5b57
 #sheet-view
-mark.sheet=\u539F\u56FE
-mark.sheet.check=\u539F\u56FE\u5207\u6362
-mark.sheet.open=\u6253\u5F00
-mark.sheet.close=\u5173\u95ED
+mark.sheet=\u539f\u56fe
+mark.sheet.check=\u539f\u56fe\u5207\u6362
+mark.sheet.open=\u6253\u5f00
+mark.sheet.close=\u5173\u95ed
 #slice-view
 mark.slice=\u5168\u5377
 mark.slice.check=\u5168\u5377\u5207\u6362
-mark.slice.open=\u6253\u5F00
-mark.slice.close=\u5173\u95ED
+mark.slice.open=\u6253\u5f00
+mark.slice.close=\u5173\u95ed
 #answer-view
-mark.answer=\u6807\u7B54
+mark.answer=\u6807\u7b54
 #warning-info
-mark.warning.try.again=\u8BF7\u70B9\u51FB\u91CD\u8BD5
-mark.warning.force.special.tag=\u5F3A\u5236\u7279\u6B8A\u6807\u8BB0\u5DF2\u5F00\u542F\uFF0C\u81F3\u5C11\u4F7F\u7528\u4E00\u4E2A\u7279\u6B8A\u6807\u8BB0
-mark.warning.network.error=\u7F51\u7EDC\u5F02\u5E38\uFF0C\u4EFB\u52A1\u63D0\u4EA4\u5931\u8D25
-mark.warning.task.error=\u9886\u53D6\u8BC4\u5377\u4EFB\u52A1\u51FA\u9519
-mark.warning.task.finish=\u8BC4\u5377\u4EFB\u52A1\u5DF2\u5B8C\u6210
-mark.warning.task.loading=\u8BC4\u5377\u4EFB\u52A1\u6B63\u5728\u52A0\u8F7D\u4E2D
-mark.warning.close=\u5173\u95ED
-mark.warning.success=\u56DE\u8BC4\u6210\u529F\uFF0C\u603B\u5206\uFF1A
-mark.warning.problem=\u56DE\u8BC4\u95EE\u9898\u5377\u6210\u529F
+mark.warning.try.again=\u8bf7\u70b9\u51fb\u91cd\u8bd5
+mark.warning.force.special.tag=\u5f3a\u5236\u7279\u6b8a\u6807\u8bb0\u5df2\u5f00\u542f\uff0c\u81f3\u5c11\u4f7f\u7528\u4e00\u4e2a\u7279\u6b8a\u6807\u8bb0
+mark.warning.network.error=\u7f51\u7edc\u5f02\u5e38\uff0c\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25
+mark.warning.task.error=\u9886\u53d6\u8bc4\u5377\u4efb\u52a1\u51fa\u9519
+mark.warning.task.finish=\u8bc4\u5377\u4efb\u52a1\u5df2\u5b8c\u6210
+mark.warning.task.loading=\u8bc4\u5377\u4efb\u52a1\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.warning.close=\u5173\u95ed
+mark.warning.success=\u56de\u8bc4\u6210\u529f\uff0c\u603b\u5206\uff1a
+mark.warning.problem=\u56de\u8bc4\u95ee\u9898\u5377\u6210\u529f
 #json-view
-mark.json.loading=\u6B63\u5728\u52A0\u8F7D\u4E2D
-mark.json.student.answer=\u8003\u751F\u7B54\u6848\uFF1A
-mark.json.answer=\u6807\u7B54\uFF1A
-mark.json.body=\u9898\u5E72\uFF1A
-mark.json.question.number=\u9898\u53F7\uFF1A
+mark.json.loading=\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.json.student.answer=\u8003\u751f\u7b54\u6848\uff1a
+mark.json.answer=\u6807\u7b54\uff1a
+mark.json.body=\u9898\u5e72\uff1a
+mark.json.question.number=\u9898\u53f7\uff1a
 
 #index
-index.user=\u7528\u6237\u7BA1\u7406
-index.exam=\u8003\u8BD5\u7BA1\u7406
-index.student=\u8003\u751F\u7BA1\u7406
-index.paper=\u79D1\u76EE\u7BA1\u7406
-index.scan=\u626B\u63CF\u8FDB\u5EA6
-index.mark=\u8BC4\u5377\u7BA1\u7406
-index.score=\u6210\u7EE9\u67E5\u8BE2
-index.problem=\u95EE\u9898\u8BD5\u5377
-index.inspected=\u6210\u7EE9\u590D\u6838
-index.report.total=\u603B\u91CF\u5206\u6790
-index.report.subject=\u79D1\u76EE\u5206\u6790
-index.check=\u6570\u636E\u68C0\u67E5
-index.log=\u64CD\u4F5C\u65E5\u5FD7
+index.user=\u7528\u6237\u7ba1\u7406
+index.exam=\u8003\u8bd5\u7ba1\u7406
+index.student=\u8003\u751f\u7ba1\u7406
+index.paper=\u79d1\u76ee\u7ba1\u7406
+index.scan=\u626b\u63cf\u8fdb\u5ea6
+index.mark=\u8bc4\u5377\u7ba1\u7406
+index.score=\u6210\u7ee9\u67e5\u8be2
+index.problem=\u95ee\u9898\u8bd5\u5377
+index.inspected=\u6210\u7ee9\u590d\u6838
+index.report.total=\u603b\u91cf\u5206\u6790
+index.report.subject=\u79d1\u76ee\u5206\u6790
+index.check=\u6570\u636e\u68c0\u67e5
+index.log=\u64cd\u4f5c\u65e5\u5fd7
 
 #report.subject
-report.subject=\u603B\u91CF\u5206\u6790
-report.subject.name=\u79D1\u76EE
-report.subject.select=\u8BF7\u9009\u62E9
-report.subject.search=\u67E5\u8BE2
-report.subject.export=\u5BFC\u51FA
-report.subject.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.subject.name=\u79D1\u76EE
-report.subject.totalCount=\u62A5\u8003\u4EBA\u6570
-report.subject.absentCount=\u7F3A\u8003
-report.subject.breachCount=\u8FDD\u7EAA
-report.subject.realityCount=\u6709\u6548\u4EBA\u6570
-report.subject.avgScore=\u5E73\u5747\u5206
-report.subject.maxScore=\u6700\u9AD8\u5206
-report.subject.minScore=\u6700\u4F4E\u5206
-report.subject.passCount=\u53CA\u683C\u4EBA\u6570
-report.subject.passRate=\u53CA\u683C\u7387
+report.subject=\u603b\u91cf\u5206\u6790
+report.subject.name=\u79d1\u76ee
+report.subject.select=\u8bf7\u9009\u62e9
+report.subject.search=\u67e5\u8be2
+report.subject.export=\u5bfc\u51fa
+report.subject.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.subject.name=\u79d1\u76ee
+report.subject.totalCount=\u62a5\u8003\u4eba\u6570
+report.subject.absentCount=\u7f3a\u8003
+report.subject.breachCount=\u8fdd\u7eaa
+report.subject.realityCount=\u6709\u6548\u4eba\u6570
+report.subject.avgScore=\u5e73\u5747\u5206
+report.subject.maxScore=\u6700\u9ad8\u5206
+report.subject.minScore=\u6700\u4f4e\u5206
+report.subject.passCount=\u53ca\u683c\u4eba\u6570
+report.subject.passRate=\u53ca\u683c\u7387
 #report.range
-report.range=\u5206\u6BB5\u7EDF\u8BA1
-report.range.subject=\u79D1\u76EE
-report.range.select=\u8BF7\u9009\u62E9
-report.range.search=\u67E5\u8BE2
-report.range.export=\u5BFC\u51FA
-report.range.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.range.level=\u5C42\u6B21
-report.range.proportion=\u5360\u6BD4
-report.range.total=\u603B\u6570
-report.range.operation=\u64CD\u4F5C
-report.range.chart=\u5206\u6BB5\u56FE
+report.range=\u5206\u6bb5\u7edf\u8ba1
+report.range.subject=\u79d1\u76ee
+report.range.select=\u8bf7\u9009\u62e9
+report.range.search=\u67e5\u8be2
+report.range.export=\u5bfc\u51fa
+report.range.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.range.level=\u5c42\u6b21
+report.range.proportion=\u5360\u6bd4
+report.range.total=\u603b\u6570
+report.range.operation=\u64cd\u4f5c
+report.range.chart=\u5206\u6bb5\u56fe
 #report.college
-report.college=\u5B66\u9662\u5206\u6790
-report.college.subject=\u79D1\u76EE
-report.college.select=\u8BF7\u9009\u62E9
-report.college.search=\u67E5\u8BE2
-report.college.export=\u5BFC\u51FA
-report.college.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.college.name=\u5B66\u751F\u9662\u7CFB
-report.college.avgScore=\u5E73\u5747\u5206
-report.college.maxScore=\u6700\u9AD8\u5206
-report.college.minScore=\u6700\u4F4E\u5206
-report.college.passCount=\u53CA\u683C\u4EBA\u6570
-report.college.passRate=\u53CA\u683C\u7387
-report.college.excellentRate=\u4F18\u79C0\u7387
+report.college=\u5b66\u9662\u5206\u6790
+report.college.subject=\u79d1\u76ee
+report.college.select=\u8bf7\u9009\u62e9
+report.college.search=\u67e5\u8be2
+report.college.export=\u5bfc\u51fa
+report.college.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.college.name=\u5b66\u751f\u9662\u7cfb
+report.college.avgScore=\u5e73\u5747\u5206
+report.college.maxScore=\u6700\u9ad8\u5206
+report.college.minScore=\u6700\u4f4e\u5206
+report.college.passCount=\u53ca\u683c\u4eba\u6570
+report.college.passRate=\u53ca\u683c\u7387
+report.college.excellentRate=\u4f18\u79c0\u7387
 #report.teacher
-report.teacher=\u4EFB\u8BFE\u8001\u5E08\u5206\u6790
-report.teacher.subject=\u79D1\u76EE
-report.teacher.select=\u8BF7\u9009\u62E9
-report.teacher.search=\u67E5\u8BE2
-report.teacher.export=\u5BFC\u51FA
-report.teacher.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.teacher.name=\u4EFB\u8BFE\u8001\u5E08
-report.teacher.realityCount=\u6709\u6548\u4EBA\u6570
-report.teacher.passCount=\u53CA\u683C
-report.teacher.excellentCount=\u4F18\u79C0
-report.teacher.maxScore=\u6700\u9AD8\u5206
-report.teacher.minScore=\u6700\u4F4E\u5206
-report.teacher.passRate=\u53CA\u683C\u7387
-report.teacher.excellentRate=\u4F18\u79C0\u7387
-report.teacher.avgScore=\u5E73\u5747\u5206
-report.teacher.relativeAvgScore=\u5E73\u5747\u76F8\u5BF9\u5206
-report.teacher.return=\u8FD4\u56DE
+report.teacher=\u4efb\u8bfe\u8001\u5e08\u5206\u6790
+report.teacher.subject=\u79d1\u76ee
+report.teacher.select=\u8bf7\u9009\u62e9
+report.teacher.search=\u67e5\u8be2
+report.teacher.export=\u5bfc\u51fa
+report.teacher.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.teacher.name=\u4efb\u8bfe\u8001\u5e08
+report.teacher.realityCount=\u6709\u6548\u4eba\u6570
+report.teacher.passCount=\u53ca\u683c
+report.teacher.excellentCount=\u4f18\u79c0
+report.teacher.maxScore=\u6700\u9ad8\u5206
+report.teacher.minScore=\u6700\u4f4e\u5206
+report.teacher.passRate=\u53ca\u683c\u7387
+report.teacher.excellentRate=\u4f18\u79c0\u7387
+report.teacher.avgScore=\u5e73\u5747\u5206
+report.teacher.relativeAvgScore=\u5e73\u5747\u76f8\u5bf9\u5206
+report.teacher.return=\u8fd4\u56de
 #report.class
-report.class=\u73ED\u7EA7\u5206\u6790
-report.class.subject=\u79D1\u76EE
-report.class.select=\u8BF7\u9009\u62E9
-report.class.search=\u67E5\u8BE2
-report.class.export=\u5BFC\u51FA
-report.class.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.class.name=\u73ED\u7EA7
-report.class.avgScore=\u5E73\u5747\u5206
-report.class.maxScore=\u6700\u9AD8\u5206
-report.class.minScore=\u6700\u4F4E\u5206
-report.class.passCount=\u53CA\u683C\u6570
-report.class.passRate=\u53CA\u683C\u7387
-report.class.excellentCount=\u4F18\u79C0\u6570
-report.class.excellentRate=\u4F18\u79C0\u7387
+report.class=\u73ed\u7ea7\u5206\u6790
+report.class.subject=\u79d1\u76ee
+report.class.select=\u8bf7\u9009\u62e9
+report.class.search=\u67e5\u8be2
+report.class.export=\u5bfc\u51fa
+report.class.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.class.name=\u73ed\u7ea7
+report.class.avgScore=\u5e73\u5747\u5206
+report.class.maxScore=\u6700\u9ad8\u5206
+report.class.minScore=\u6700\u4f4e\u5206
+report.class.passCount=\u53ca\u683c\u6570
+report.class.passRate=\u53ca\u683c\u7387
+report.class.excellentCount=\u4f18\u79c0\u6570
+report.class.excellentRate=\u4f18\u79c0\u7387
 #report.question
-report.question.objective=\u5BA2\u89C2\u9898\u5206\u6790
-report.question.subjective=\u4E3B\u89C2\u9898\u5206\u6790
-report.question.subject=\u79D1\u76EE
-report.question.select=\u8BF7\u9009\u62E9
-report.question.search=\u67E5\u8BE2
-report.question.export=\u5BFC\u51FA
-report.question.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.question.paperType=\u8BD5\u5377\u7C7B\u578B
-report.question.name=\u9898\u76EE\u540D\u79F0
-report.question.mainNumber=\u5927\u9898\u53F7
-report.question.subNumber=\u5C0F\u9898\u53F7
+report.question.objective=\u5ba2\u89c2\u9898\u5206\u6790
+report.question.subjective=\u4e3b\u89c2\u9898\u5206\u6790
+report.question.subject=\u79d1\u76ee
+report.question.select=\u8bf7\u9009\u62e9
+report.question.search=\u67e5\u8be2
+report.question.export=\u5bfc\u51fa
+report.question.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.question.paperType=\u8bd5\u5377\u7c7b\u578b
+report.question.name=\u9898\u76ee\u540d\u79f0
+report.question.mainNumber=\u5927\u9898\u53f7
+report.question.subNumber=\u5c0f\u9898\u53f7
 report.question.score=\u5355\u9898\u5206\u6570
-report.question.avgScore=\u5355\u9898\u5E73\u5747\u5206
-report.question.stdev=\u5355\u9898\u6807\u51C6\u5DEE
-report.question.scoreRate=\u5F97\u5206\u7387
-report.question.fullScoreRate=\u6EE1\u5206\u7387
+report.question.avgScore=\u5355\u9898\u5e73\u5747\u5206
+report.question.stdev=\u5355\u9898\u6807\u51c6\u5dee
+report.question.scoreRate=\u5f97\u5206\u7387
+report.question.fullScoreRate=\u6ee1\u5206\u7387
 #report.group
 report.group=\u5927\u9898\u5206\u6790
-report.group.subject=\u79D1\u76EE
-report.group.select=\u8BF7\u9009\u62E9
-report.group.search=\u67E5\u8BE2
-report.group.export=\u5BFC\u51FA
-report.group.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.group.name=\u9898\u76EE\u540D\u79F0
-report.group.number=\u9898\u53F7
-report.group.totalScore=\u6EE1\u5206
-report.group.maxScore=\u6700\u9AD8\u5206
-report.group.minScore=\u6700\u4F4E\u5206
-report.group.avgScore=\u5E73\u5747\u5206
-report.group.stdev=\u6807\u51C6\u5DEE
-report.group.coefficient=\u5DEE\u5F02\u7CFB\u6570
-report.group.scoreRate=\u5F97\u5206\u7387
-report.group.zeroCount=\u96F6\u5206\u4EBA\u6570
-report.group.fullCount=\u6EE1\u5206\u4EBA\u6570
+report.group.subject=\u79d1\u76ee
+report.group.select=\u8bf7\u9009\u62e9
+report.group.search=\u67e5\u8be2
+report.group.export=\u5bfc\u51fa
+report.group.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.group.name=\u9898\u76ee\u540d\u79f0
+report.group.number=\u9898\u53f7
+report.group.totalScore=\u6ee1\u5206
+report.group.maxScore=\u6700\u9ad8\u5206
+report.group.minScore=\u6700\u4f4e\u5206
+report.group.avgScore=\u5e73\u5747\u5206
+report.group.stdev=\u6807\u51c6\u5dee
+report.group.coefficient=\u5dee\u5f02\u7cfb\u6570
+report.group.scoreRate=\u5f97\u5206\u7387
+report.group.zeroCount=\u96f6\u5206\u4eba\u6570
+report.group.fullCount=\u6ee1\u5206\u4eba\u6570
 #report.massage
-report.massage.school.null=\u627E\u4E0D\u5230\u5B66\u6821
+report.massage.school.null=\u627e\u4e0d\u5230\u5b66\u6821
 #head
-head.title=\u4E91\u9605\u5377
-head.logout=\u9000\u51FA
+head.title=\u4e91\u9605\u5377
+head.logout=\u9000\u51fa
+
+#student search
+student.search.title=\u5b66\u751f\u67e5\u8be2\u6210\u7ee9
+student.search.code=\u8bf7\u8f93\u5165\u5b66\u53f7
+student.search.name=\u8bf7\u8f93\u5165\u59d3\u540d
+student.search.submit=\u67e5\u8be2
+student.search.error=\u5b66\u6821\u4e0d\u5b58\u5728
+#student search list
+student.search.list.examName=\u8003\u8bd5\u540d\u79f0
+student.search.list.subjectName=\u8bfe\u7a0b\u540d\u79f0
+student.search.list.objectiveScore=\u5ba2\u89c2\u5206
+student.search.list.subjectiveScore=\u4e3b\u89c2\u5206
+student.search.list.totalScore=\u603b\u5206
+student.search.list.remark=\u5907\u6ce8

+ 16 - 2
stmms-web/src/main/webapp/static/i18n/messages_en.properties

@@ -96,7 +96,7 @@ mark.history.error=Unable to read the history at this time. Please try again lat
 mark.history.number.error=please press number
 #mark-board
 mark.board.submit=submit
-mark.board.total.score=Score\uFF1A
+mark.board.total.score=Score\uff1a
 mark.board.score.zero=all zero
 mark.board.pass=pass
 mark.board.choose.result=choose result
@@ -274,4 +274,18 @@ report.group.fullCount=full count
 report.massage.school.null=can not find school
 #head
 head.title=Marking System
-head.logout=logout
+head.logout=logout
+
+#student search
+student.search.title=Student score query
+student.search.code=student code
+student.search.name=name
+student.search.submit=Submit
+student.search.error=school not found
+#student search list
+student.search.list.examName=exam name
+student.search.list.subjectName=subject name
+student.search.list.objectiveScore=objective score
+student.search.list.subjectiveScore=subjective score
+student.search.list.totalScore=total score
+student.search.list.remark=\u5907\u6ce8

+ 258 - 244
stmms-web/src/main/webapp/static/i18n/messages_ja.properties

@@ -1,277 +1,291 @@
 #login
-user.login.title=\u30C7\u30B8\u30BF\u30EB\u63A1\u70B9\u30B7\u30B9\u30C6\u30E0\u3078\u30ED\u30B0\u30A4\u30F3
-user.login.admin=\u7BA1\u7406\u8005\u767B\u9332
-user.login.marker=\u63A1\u70B9\u8005\u767B\u9332
-user.login.name=\u30E6\u30FC\u30B6\u30FC\u540D
-user.login.password=\u30D1\u30B9\u30EF\u30FC\u30C9
-user.login.submit=\u30ED\u30B0\u30A4\u30F3
-user.login.error.account=\u8A72\u5F53\u3059\u308B\u30A2\u30AB\u30A6\u30F3\u30C8\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
-user.login.error.finish=\u63A1\u70B9\u4F5C\u696D\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F
-user.login.error.group=\u8A72\u5F53\u3059\u308B\u5927\u554F\u304C\u5B58\u5728\u3057\u307E\u305B\u3093
-user.login.error.disabled=\u3053\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306F\u73FE\u5728\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093
-user.login.error.password=\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u9593\u9055\u3063\u3066\u3044\u307E\u3059
-user.login.error.access=\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u6A29\u5229\u304C\u3042\u308A\u307E\u305B\u3093
+user.login.title=\u30c7\u30b8\u30bf\u30eb\u63a1\u70b9\u30b7\u30b9\u30c6\u30e0\u3078\u30ed\u30b0\u30a4\u30f3
+user.login.admin=\u7ba1\u7406\u8005\u767b\u9332
+user.login.marker=\u63a1\u70b9\u8005\u767b\u9332
+user.login.name=\u30e6\u30fc\u30b6\u30fc\u540d
+user.login.password=\u30d1\u30b9\u30ef\u30fc\u30c9
+user.login.submit=\u30ed\u30b0\u30a4\u30f3
+user.login.error.account=\u8a72\u5f53\u3059\u308b\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u5b58\u5728\u3057\u307e\u305b\u3093
+user.login.error.finish=\u63a1\u70b9\u4f5c\u696d\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f
+user.login.error.group=\u8a72\u5f53\u3059\u308b\u5927\u554f\u304c\u5b58\u5728\u3057\u307e\u305b\u3093
+user.login.error.disabled=\u3053\u306e\u30a2\u30ab\u30a6\u30f3\u30c8\u306f\u73fe\u5728\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093
+user.login.error.password=\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u9593\u9055\u3063\u3066\u3044\u307e\u3059
+user.login.error.access=\u30a2\u30af\u30bb\u30b9\u3059\u308b\u6a29\u5229\u304c\u3042\u308a\u307e\u305b\u3093
 #reset
-user.reset.submit=\u78BA\u5B9A
-user.reset.logout=\u30ED\u30B0\u30A2\u30A6\u30C8
-user.reset.title=\u65B0\u898F\u767B\u9332
-user.reset.name=\u30E6\u30FC\u30B6\u30FC\u540D
-user.reset.password=\u30D1\u30B9\u30EF\u30FC\u30C9
-user.reset.password.again=\u30D1\u30B9\u30EF\u30FC\u30C9\u306E\u518D\u5165\u529B
-user.reset.name.length=\u30D1\u30B9\u30EF\u30FC\u30C9\u306F10\u6587\u5B57\u4EE5\u5185\u306B\u3057\u3066\u304F\u3060\u3055\u3044
-user.reset.password.same=\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093
-user.reset.password.length=4\u6587\u5B57\u4EE5\u4E0A\u30018\u6587\u5B57\u4EE5\u5185\u306E\u30D1\u30B9\u30EF\u30FC\u30C9\u3092\u4F5C\u6210\u3057\u3066\u304F\u3060\u3055\u3044
+user.reset.submit=\u78ba\u5b9a
+user.reset.logout=\u30ed\u30b0\u30a2\u30a6\u30c8
+user.reset.title=\u65b0\u898f\u767b\u9332
+user.reset.name=\u30e6\u30fc\u30b6\u30fc\u540d
+user.reset.password=\u30d1\u30b9\u30ef\u30fc\u30c9
+user.reset.password.again=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u518d\u5165\u529b
+user.reset.name.length=\u30d1\u30b9\u30ef\u30fc\u30c9\u306f10\u6587\u5b57\u4ee5\u5185\u306b\u3057\u3066\u304f\u3060\u3055\u3044
+user.reset.password.same=\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093
+user.reset.password.length=4\u6587\u5b57\u4ee5\u4e0a\u30018\u6587\u5b57\u4ee5\u5185\u306e\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u4f5c\u6210\u3057\u3066\u304f\u3060\u3055\u3044
 #mark-control
-mark.control.assistant=\u305D\u306E\u4ED6\u306E\u6A5F\u80FD
-mark.control.mode.track=\u90E8\u5206\u63A1\u70B9\u30E2\u30FC\u30C9\u306B\u5207\u308A\u66FF\u3048\u308B
-mark.control.mode.common=\u901A\u5E38\u63A1\u70B9\u30E2\u30FC\u30C9\u306B\u5207\u308A\u66FF\u3048\u308B
-mark.control.function=\u63A1\u70B9\u6A5F\u80FD
+mark.control.assistant=\u305d\u306e\u4ed6\u306e\u6a5f\u80fd
+mark.control.mode.track=\u90e8\u5206\u63a1\u70b9\u30e2\u30fc\u30c9\u306b\u5207\u308a\u66ff\u3048\u308b
+mark.control.mode.common=\u901a\u5e38\u63a1\u70b9\u30e2\u30fc\u30c9\u306b\u5207\u308a\u66ff\u3048\u308b
+mark.control.function=\u63a1\u70b9\u6a5f\u80fd
 mark.control.logout=EXIT
-mark.control.init.error=\u30C7\u30FC\u30BF\u30FC\u66F4\u65B0\u304C\u5931\u6557\u3057\u305F\u306E\u3067\u3001\u518D\u5EA6\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3057\u3066\u304F\u3060\u3055\u3044
-mark.control.task.not.exist=\u8A72\u5F53\u3059\u308B\u5927\u554F\u304C\u5B58\u5728\u3057\u307E\u305B\u3093
-mark.control.task.finish=\u63A1\u70B9\u4F5C\u696D\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F
-mark.control.task.null=\u63A1\u70B9\u5BFE\u8C61\u304C\u3042\u308A\u307E\u305B\u3093
-mark.control.tsak.error=\u63D0\u51FA\u306B\u5931\u6557\u3057\u305F\u306E\u3067\u3001\u518D\u5EA6\u8A66\u3057\u3066\u304F\u3060\u3055\u3044
+mark.control.init.error=\u30c7\u30fc\u30bf\u30fc\u66f4\u65b0\u304c\u5931\u6557\u3057\u305f\u306e\u3067\u3001\u518d\u5ea6\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3057\u3066\u304f\u3060\u3055\u3044
+mark.control.task.not.exist=\u8a72\u5f53\u3059\u308b\u5927\u554f\u304c\u5b58\u5728\u3057\u307e\u305b\u3093
+mark.control.task.finish=\u63a1\u70b9\u4f5c\u696d\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f
+mark.control.task.null=\u63a1\u70b9\u5bfe\u8c61\u304c\u3042\u308a\u307e\u305b\u3093
+mark.control.tsak.error=\u63d0\u51fa\u306b\u5931\u6557\u3057\u305f\u306e\u3067\u3001\u518d\u5ea6\u8a66\u3057\u3066\u304f\u3060\u3055\u3044
 #status
-mark.status.student.number=\u53D7\u9A13\u8005\u7BA1\u7406\u756A\u53F7
-mark.status.library.number=\u63A1\u70B9\u30BF\u30B9\u30AF\u7BA1\u7406\u756A\u53F7
-mark.status.objective.score=\u30DE\u30FC\u30AF\u63A1\u70B9\u306E\u70B9\u6570
-mark.status.marked.count=\u63A1\u70B9\u30BF\u30B9\u30AF\u7D42\u4E86
-mark.status.unmark.count=\u63A1\u70B9\u30BF\u30B9\u30AF\u672A\u7D42\u4E86
-mark.status.top.count=\u5272\u308A\u5F53\u3066\u3089\u308C\u305F\u7B54\u6848\u7528\u7D19\u6570
-mark.status.progress=\u9032\u6357\u72B6\u6CC1
-mark.status.continue=\u5F15\u304D\u7D9A\u304D\u63A1\u70B9\u3057\u307E\u3059\u304B
-mark.status.top.count.finish=\u5272\u308A\u5F53\u3066\u3089\u308C\u305F\u30BF\u30B9\u30AF\u304C\u5B8C\u6210\u3057\u307E\u3057\u305F\u3002\u5F15\u304D\u7D9A\u304D\u63A1\u70B9\u3057\u307E\u3059\u304B\uFF1F
-mark.status.loading=\u30ED\u30FC\u30C9\u4E2D\u2026
-mark.status.logout=\u30ED\u30B0\u30A2\u30A6\u30C8
+mark.status.student.number=\u53d7\u9a13\u8005\u7ba1\u7406\u756a\u53f7
+mark.status.library.number=\u63a1\u70b9\u30bf\u30b9\u30af\u7ba1\u7406\u756a\u53f7
+mark.status.objective.score=\u30de\u30fc\u30af\u63a1\u70b9\u306e\u70b9\u6570
+mark.status.marked.count=\u63a1\u70b9\u30bf\u30b9\u30af\u7d42\u4e86
+mark.status.unmark.count=\u63a1\u70b9\u30bf\u30b9\u30af\u672a\u7d42\u4e86
+mark.status.top.count=\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u7b54\u6848\u7528\u7d19\u6570
+mark.status.progress=\u9032\u6357\u72b6\u6cc1
+mark.status.continue=\u5f15\u304d\u7d9a\u304d\u63a1\u70b9\u3057\u307e\u3059\u304b
+mark.status.top.count.finish=\u5272\u308a\u5f53\u3066\u3089\u308c\u305f\u30bf\u30b9\u30af\u304c\u5b8c\u6210\u3057\u307e\u3057\u305f\u3002\u5f15\u304d\u7d9a\u304d\u63a1\u70b9\u3057\u307e\u3059\u304b\uff1f
+mark.status.loading=\u30ed\u30fc\u30c9\u4e2d\u2026
+mark.status.logout=\u30ed\u30b0\u30a2\u30a6\u30c8
 #single-image-view
-mark.single.zoom.in=\u62E1\u5927
-mark.single.zoom.out=\u7E2E\u5C0F
-mark.single.zoom.fit=\u753B\u9762\u30B5\u30A4\u30BA\u306B\u5408\u308F\u305B\u3066\u8868\u793A
-mark.single.student.answer=\u7B54\u6848\u7528\u7D19
+mark.single.zoom.in=\u62e1\u5927
+mark.single.zoom.out=\u7e2e\u5c0f
+mark.single.zoom.fit=\u753b\u9762\u30b5\u30a4\u30ba\u306b\u5408\u308f\u305b\u3066\u8868\u793a
+mark.single.student.answer=\u7b54\u6848\u7528\u7d19
 #chang name
-mark.change.name=\u30E6\u30FC\u30B6\u30FC\u30CB\u30C3\u30AF\u30CD\u30FC\u30E0\u5165\u529B
-mark.change.press.name=\u30E6\u30FC\u30B6\u30FC\u540D\u5165\u529B
-mark.change.press.password=\u30D1\u30B9\u30EF\u30FC\u30C9\u5165\u529B
-mark.change.press.password.again=\u30D1\u30B9\u30EF\u30FC\u30C9\u518D\u5165\u529B
-mark.change.confirm=\u78BA\u5B9A
-mark.change.name.null=\u30E6\u30FC\u30B6\u30FC\u540D\u5165\u529B
-mark.change.name.length=8\u6587\u5B57\u4EE5\u5185\u306B\u3057\u3066\u304F\u3060\u3055\u3044
-mark.change.password.same=\u30D1\u30B9\u30EF\u30FC\u30C9\u304C\u4E00\u81F4\u3057\u307E\u305B\u3093
-mark.change.password.length=\u30D1\u30B9\u30EF\u30FC\u30C9\u306E\u6587\u5B57\u6570\u306F\uFF14\u6587\u5B57\u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059
-mark.change.network.error=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u306E\u4E0D\u5177\u5408\u304C\u751F\u3058\u305F\u305F\u3081\u3001\u3084\u308A\u76F4\u3057\u3066\u4E0B\u3055\u3044
-mark.change.error=\u64CD\u4F5C\u304C\u5931\u6557\u3057\u307E\u3057\u305F\u3002\u518D\u5EA6\u8A66\u3057\u3066\u304F\u3060\u3055\u3044
+mark.change.name=\u30e6\u30fc\u30b6\u30fc\u30cb\u30c3\u30af\u30cd\u30fc\u30e0\u5165\u529b
+mark.change.press.name=\u30e6\u30fc\u30b6\u30fc\u540d\u5165\u529b
+mark.change.press.password=\u30d1\u30b9\u30ef\u30fc\u30c9\u5165\u529b
+mark.change.press.password.again=\u30d1\u30b9\u30ef\u30fc\u30c9\u518d\u5165\u529b
+mark.change.confirm=\u78ba\u5b9a
+mark.change.name.null=\u30e6\u30fc\u30b6\u30fc\u540d\u5165\u529b
+mark.change.name.length=8\u6587\u5b57\u4ee5\u5185\u306b\u3057\u3066\u304f\u3060\u3055\u3044
+mark.change.password.same=\u30d1\u30b9\u30ef\u30fc\u30c9\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093
+mark.change.password.length=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u6587\u5b57\u6570\u306f\uff14\u6587\u5b57\u4ee5\u4e0a\u304c\u5fc5\u8981\u3067\u3059
+mark.change.network.error=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u4e0d\u5177\u5408\u304c\u751f\u3058\u305f\u305f\u3081\u3001\u3084\u308a\u76f4\u3057\u3066\u4e0b\u3055\u3044
+mark.change.error=\u64cd\u4f5c\u304c\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u518d\u5ea6\u8a66\u3057\u3066\u304f\u3060\u3055\u3044
 #specialTag
-mark.special.tag=\u7279\u6B8A\u8A18\u53F7
-mark.special.back=\u623B\u308B
-mark.special.clear=\u3059\u3079\u3066\u306E\u63A1\u70B9\u3092\u524A\u9664
-mark.special.underline=\u30A2\u30F3\u30C0\u30FC\u30E9\u30A4\u30F3
-mark.special.open=\u958B\u304F
-mark.special.close=\u9589\u3058\u308B
+mark.special.tag=\u7279\u6b8a\u8a18\u53f7
+mark.special.back=\u623b\u308b
+mark.special.clear=\u3059\u3079\u3066\u306e\u63a1\u70b9\u3092\u524a\u9664
+mark.special.underline=\u30a2\u30f3\u30c0\u30fc\u30e9\u30a4\u30f3
+mark.special.open=\u958b\u304f
+mark.special.close=\u9589\u3058\u308b
 #problem-process
-mark.problem=\u7B54\u6848\u7528\u7D19\u554F\u984C\u3042\u308A
-mark.problem.type=\u554F\u984C\u30BF\u30A4\u30D7\u3092\u9078\u629E
-mark.problem.confirm=\u78BA\u5B9A
-mark.problem.cancel=\u30AD\u30E3\u30F3\u30BB\u30EB
-mark.problem.check=\u554F\u984C\u30BF\u30A4\u30D7\u3092\u9078\u629E\u3057\u3066\u4E0B\u3055\u3044
+mark.problem=\u7b54\u6848\u7528\u7d19\u554f\u984c\u3042\u308a
+mark.problem.type=\u554f\u984c\u30bf\u30a4\u30d7\u3092\u9078\u629e
+mark.problem.confirm=\u78ba\u5b9a
+mark.problem.cancel=\u30ad\u30e3\u30f3\u30bb\u30eb
+mark.problem.check=\u554f\u984c\u30bf\u30a4\u30d7\u3092\u9078\u629e\u3057\u3066\u4e0b\u3055\u3044
 #thumbnail
-mark.thumbnail=\u30B5\u30E0\u30CD\u30A4\u30EB\u8868\u793A
-mark.thumbnail.open=\u958B\u304F
-mark.thumbnail.close=\u9589\u3058\u308B
+mark.thumbnail=\u30b5\u30e0\u30cd\u30a4\u30eb\u8868\u793a
+mark.thumbnail.open=\u958b\u304f
+mark.thumbnail.close=\u9589\u3058\u308b
 #view-sidebar
-mark.sidebar=\u30B5\u30A4\u30C9\u30D0\u30FC
-mark.sidebar.paper=\u554F\u984C\u7528\u7D19
-mark.sidebar.answer=\u6A19\u6E96\u89E3\u7B54
+mark.sidebar=\u30b5\u30a4\u30c9\u30d0\u30fc
+mark.sidebar.paper=\u554f\u984c\u7528\u7d19
+mark.sidebar.answer=\u6a19\u6e96\u89e3\u7b54
 #mark-history
-mark.history.title=\u518D\u63A1\u70B9
+mark.history.title=\u518d\u63a1\u70b9
 mark.history.time=\u6642\u9593
-mark.history.number=\u756A\u53F7
-mark.history.score=\u5408\u8A08\u70B9
-mark.history.search=\u7B54\u6848\u7528\u7D19\u306E\u691C\u7D22
-mark.history.pre=\u623B\u308B
-mark.history.success=\u518D\u63A1\u70B9\u7D42\u4E86\u3000\u5408\u8A08\u70B9\uFF1A
-mark.history.problem=\u518D\u63A1\u70B9\u7D42\u4E86\u3000\u63D0\u51FA\u6E08\u307F\u3000
-mark.history.loading=\u30ED\u30FC\u30C9\u4E2D\u2026
-mark.history.error=\u63A1\u70B9\u8A18\u9332\u306E\u8AAD\u8FBC\u307F\u304C\u3067\u304D\u307E\u305B\u3093\u3002\u3057\u3070\u3089\u304F\u3057\u3066\u304B\u3089\u3082\u3046\u4E00\u5EA6\u8A66\u3057\u3066\u304F\u3060\u3055\u3044
-mark.history.number.error=\u8A8D\u8B58\u3067\u304D\u306A\u3044\u6587\u5B57
+mark.history.number=\u756a\u53f7
+mark.history.score=\u5408\u8a08\u70b9
+mark.history.search=\u7b54\u6848\u7528\u7d19\u306e\u691c\u7d22
+mark.history.pre=\u623b\u308b
+mark.history.success=\u518d\u63a1\u70b9\u7d42\u4e86\u3000\u5408\u8a08\u70b9\uff1a
+mark.history.problem=\u518d\u63a1\u70b9\u7d42\u4e86\u3000\u63d0\u51fa\u6e08\u307f\u3000
+mark.history.loading=\u30ed\u30fc\u30c9\u4e2d\u2026
+mark.history.error=\u63a1\u70b9\u8a18\u9332\u306e\u8aad\u8fbc\u307f\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u3057\u3070\u3089\u304f\u3057\u3066\u304b\u3089\u3082\u3046\u4e00\u5ea6\u8a66\u3057\u3066\u304f\u3060\u3055\u3044
+mark.history.number.error=\u8a8d\u8b58\u3067\u304d\u306a\u3044\u6587\u5b57
 #mark-board
-mark.board.submit=\u63D0\u51FA
-mark.board.total.score=\u5408\u8A08\u70B9
-mark.board.score.zero=\u5408\u8A08\u70B9\uFF1A0
-mark.board.pass=\u30B9\u30AD\u30C3\u30D7 
-mark.board.choose.result=\u63A1\u70B9
-mark.board.keyboard=\u30AD\u30FC\u30DC\u30FC\u30C9\u63A1\u70B9 >>
-mark.board.mouse=<< \u30DE\u30A6\u30B9\u63A1\u70B9
-mark.board.interval=\u9593\u9694\u8A2D\u5B9A
-mark.board.score=\u70B9\u6570
-mark.board.back=\u623B\u308B
-mark.board.clear.question=\u90E8\u5206\u63A1\u70B9\u524A\u9664
-mark.board.clear=\u5168\u63A1\u70B9\u306E\u524A\u9664
-mark.board.question.not.mark=\u672A\u63A1\u70B9\u306E\u554F\u984C\u304C\u3042\u308A\u307E\u3059
-mark.board.confirm=,\u63D0\u51FA\u3057\u307E\u3059\u304B\uFF1F
-mark.board.zero.confirm=\u5408\u8A08\u70B9\u306F0\u3067\u3059\u3002\u63D0\u51FA\u3057\u307E\u3059\u304B\uFF1F
+mark.board.submit=\u63d0\u51fa
+mark.board.total.score=\u5408\u8a08\u70b9
+mark.board.score.zero=\u5408\u8a08\u70b9\uff1a0
+mark.board.pass=\u30b9\u30ad\u30c3\u30d7 
+mark.board.choose.result=\u63a1\u70b9
+mark.board.keyboard=\u30ad\u30fc\u30dc\u30fc\u30c9\u63a1\u70b9 >>
+mark.board.mouse=<< \u30de\u30a6\u30b9\u63a1\u70b9
+mark.board.interval=\u9593\u9694\u8a2d\u5b9a
+mark.board.score=\u70b9\u6570
+mark.board.back=\u623b\u308b
+mark.board.clear.question=\u90e8\u5206\u63a1\u70b9\u524a\u9664
+mark.board.clear=\u5168\u63a1\u70b9\u306e\u524a\u9664
+mark.board.question.not.mark=\u672a\u63a1\u70b9\u306e\u554f\u984c\u304c\u3042\u308a\u307e\u3059
+mark.board.confirm=,\u63d0\u51fa\u3057\u307e\u3059\u304b\uff1f
+mark.board.zero.confirm=\u5408\u8a08\u70b9\u306f0\u3067\u3059\u3002\u63d0\u51fa\u3057\u307e\u3059\u304b\uff1f
 mark.board.null=
-mark.board.interval.error=\u70B9\u6570\u306E\u6700\u5C0F\u9593\u9694\u3068\u4E00\u81F4\u3057\u3066\u3044\u307E\u305B\u3093
-mark.board.gt=\u4EE5\u4E0B
-mark.board.lt=\u4EE5\u4E0A
-mark.board.number.error=\u8A8D\u8B58\u3067\u304D\u306A\u3044\u6587\u5B57
+mark.board.interval.error=\u70b9\u6570\u306e\u6700\u5c0f\u9593\u9694\u3068\u4e00\u81f4\u3057\u3066\u3044\u307e\u305b\u3093
+mark.board.gt=\u4ee5\u4e0b
+mark.board.lt=\u4ee5\u4e0a
+mark.board.number.error=\u8a8d\u8b58\u3067\u304d\u306a\u3044\u6587\u5b57
 #sheet-view
-mark.sheet=\u7B54\u6848\u7528\u7D19
-mark.sheet.check=\u7B54\u6848\u7528\u7D19\u306E\u5207\u66FF
-mark.sheet.open=\u958B\u304F
-mark.sheet.close=\u9589\u3058\u308B
+mark.sheet=\u7b54\u6848\u7528\u7d19
+mark.sheet.check=\u7b54\u6848\u7528\u7d19\u306e\u5207\u66ff
+mark.sheet.open=\u958b\u304f
+mark.sheet.close=\u9589\u3058\u308b
 #slice-view
-mark.slice=\u7B54\u6848\u7528\u7D19
-mark.slice.check=\u7B54\u6848\u7528\u7D19\u306E\u5207\u66FF
-mark.slice.open=\u958B\u304F
-mark.slice.close=\u9589\u3058\u308B
+mark.slice=\u7b54\u6848\u7528\u7d19
+mark.slice.check=\u7b54\u6848\u7528\u7d19\u306e\u5207\u66ff
+mark.slice.open=\u958b\u304f
+mark.slice.close=\u9589\u3058\u308b
 #answer-view
-mark.answer=\u6A21\u7BC4\u89E3\u7B54
+mark.answer=\u6a21\u7bc4\u89e3\u7b54
 #warning-info
-mark.warning.try.again=\u3084\u308A\u76F4\u3057\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u4E0B\u3055\u3044
-mark.warning.force.special.tag=\u7279\u6B8A\u8A18\u53F7\u6A5F\u80FD\u304C\u30AA\u30F3\u306B\u306A\u3063\u3066\u3044\u308B\u306E\u3067\u3001\u7279\u6B8A\u8A18\u53F7\u3092\u6700\u4F4E\u4E00\u3064\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044
-mark.warning.network.error=\u30CD\u30C3\u30C8\u30EF\u30FC\u30AF\u306E\u4E0D\u5177\u5408\u304C\u751F\u3058\u305F\u305F\u3081\u3001\u63D0\u51FA\u304C\u5931\u6557\u3057\u307E\u3057\u305F
-mark.warning.task.error=\u30C7\u30FC\u30BF\u30FC\u306E\u8AAD\u8FBC\u307F\u304C\u5931\u6557\u3057\u307E\u3057\u305F
-mark.warning.task.finish=\u63A1\u70B9\u304C\u7D42\u4E86\u3057\u307E\u3057\u305F
-mark.warning.task.loading=\u7B54\u6848\u7528\u7D19\u3092\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u4E2D\u2026
-mark.warning.close=\u9589\u3058\u308B
-mark.warning.success=\u518D\u63A1\u70B9\u7D42\u4E86\u3001\u5408\u8A08\u70B9\uFF1A
-mark.warning.problem=\u554F\u984C\u3042\u308A\u306E\u7B54\u6848\u7528\u7D19\u306E\u518D\u63A1\u70B9\u7D42\u4E86
+mark.warning.try.again=\u3084\u308a\u76f4\u3057\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u4e0b\u3055\u3044
+mark.warning.force.special.tag=\u7279\u6b8a\u8a18\u53f7\u6a5f\u80fd\u304c\u30aa\u30f3\u306b\u306a\u3063\u3066\u3044\u308b\u306e\u3067\u3001\u7279\u6b8a\u8a18\u53f7\u3092\u6700\u4f4e\u4e00\u3064\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044
+mark.warning.network.error=\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u306e\u4e0d\u5177\u5408\u304c\u751f\u3058\u305f\u305f\u3081\u3001\u63d0\u51fa\u304c\u5931\u6557\u3057\u307e\u3057\u305f
+mark.warning.task.error=\u30c7\u30fc\u30bf\u30fc\u306e\u8aad\u8fbc\u307f\u304c\u5931\u6557\u3057\u307e\u3057\u305f
+mark.warning.task.finish=\u63a1\u70b9\u304c\u7d42\u4e86\u3057\u307e\u3057\u305f
+mark.warning.task.loading=\u7b54\u6848\u7528\u7d19\u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u4e2d\u2026
+mark.warning.close=\u9589\u3058\u308b
+mark.warning.success=\u518d\u63a1\u70b9\u7d42\u4e86\u3001\u5408\u8a08\u70b9\uff1a
+mark.warning.problem=\u554f\u984c\u3042\u308a\u306e\u7b54\u6848\u7528\u7d19\u306e\u518d\u63a1\u70b9\u7d42\u4e86
 #json-view
-mark.json.loading=\u30ED\u30FC\u30C9\u4E2D\u2026
-mark.json.student.answer=\u53D7\u9A13\u8005\u306E\u56DE\u7B54\uFF1A
-mark.json.answer=\u6A21\u7BC4\u89E3\u7B54\uFF1A
-mark.json.body=\u8A66\u9A13\u554F\u984C\uFF1A
-mark.json.question.number=\u8A66\u9A13\u554F\u984C\u756A\u53F7\uFF1A
+mark.json.loading=\u30ed\u30fc\u30c9\u4e2d\u2026
+mark.json.student.answer=\u53d7\u9a13\u8005\u306e\u56de\u7b54\uff1a
+mark.json.answer=\u6a21\u7bc4\u89e3\u7b54\uff1a
+mark.json.body=\u8a66\u9a13\u554f\u984c\uff1a
+mark.json.question.number=\u8a66\u9a13\u554f\u984c\u756a\u53f7\uff1a
 
 #index
-index.user=\u30E6\u30FC\u30B6\u30FC\u7BA1\u7406
-index.exam=\u8A66\u9A13\u7BA1\u7406
-index.student=\u53D7\u9A13\u751F\u7BA1\u7406
-index.paper=\u79D1\u76EE\u7BA1\u7406
-index.scan=\u30B9\u30AD\u30E3\u30F3\u9032\u5EA6
-index.mark=\u30DE\u30FC\u30AD\u30F3\u30B0\u7BA1\u7406
-index.score=\u6210\u7E3E\u30AF\u30A8\u30EA\u30FC
-index.inspected=\u6210\u7E3E\u590D\u6838
-index.problem=\u554F\u984C\u3042\u308B\u8A66\u9A13\u7528\u7D19
-index.report.total=\u96C6\u8A08\u5206\u6790
-index.report.subject=\u79D1\u76EE\u5225\u5206\u6790
-index.check=\u30C7\u30FC\u30BF\u691C\u67FB
-index.log=\u64CD\u4F5C\u8A18\u9332
+index.user=\u30e6\u30fc\u30b6\u30fc\u7ba1\u7406
+index.exam=\u8a66\u9a13\u7ba1\u7406
+index.student=\u53d7\u9a13\u751f\u7ba1\u7406
+index.paper=\u79d1\u76ee\u7ba1\u7406
+index.scan=\u30b9\u30ad\u30e3\u30f3\u9032\u5ea6
+index.mark=\u30de\u30fc\u30ad\u30f3\u30b0\u7ba1\u7406
+index.score=\u6210\u7e3e\u30af\u30a8\u30ea\u30fc
+index.inspected=\u6210\u7e3e\u590d\u6838
+index.problem=\u554f\u984c\u3042\u308b\u8a66\u9a13\u7528\u7d19
+index.report.total=\u96c6\u8a08\u5206\u6790
+index.report.subject=\u79d1\u76ee\u5225\u5206\u6790
+index.check=\u30c7\u30fc\u30bf\u691c\u67fb
+index.log=\u64cd\u4f5c\u8a18\u9332
 
 #report.subject
-report.subject=\u96C6\u8A08\u5206\u6790
-report.subject.name=\u79D1\u76EE
-report.subject.select=\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044
-report.subject.search=\u30AF\u30A8\u30EA\u30FC
-report.subject.export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
-report.subject.chart=\u7D71\u8A08\u56F3\u3092\u898B\u308B
-report.subject.name=\u79D1\u76EE
-report.subject.totalCount=\u5FDC\u52DF\u8005\u6570
-report.subject.absentCount=\u6B20\u5E2D
-report.subject.breachCount=\u4E0D\u6B63\u884C\u70BA
-report.subject.realityCount=\u6709\u52B9\u8005\u6570
-report.subject.avgScore=\u5E73\u5747\u70B9
-report.subject.maxScore=\u6700\u9AD8\u70B9
-report.subject.minScore=\u6700\u4F4E\u70B9
-report.subject.passCount=\u5408\u683C\u8005\u6570
-report.subject.passRate=\u5408\u683C\u7387
+report.subject=\u96c6\u8a08\u5206\u6790
+report.subject.name=\u79d1\u76ee
+report.subject.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
+report.subject.search=\u30af\u30a8\u30ea\u30fc
+report.subject.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
+report.subject.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
+report.subject.name=\u79d1\u76ee
+report.subject.totalCount=\u5fdc\u52df\u8005\u6570
+report.subject.absentCount=\u6b20\u5e2d
+report.subject.breachCount=\u4e0d\u6b63\u884c\u70ba
+report.subject.realityCount=\u6709\u52b9\u8005\u6570
+report.subject.avgScore=\u5e73\u5747\u70b9
+report.subject.maxScore=\u6700\u9ad8\u70b9
+report.subject.minScore=\u6700\u4f4e\u70b9
+report.subject.passCount=\u5408\u683c\u8005\u6570
+report.subject.passRate=\u5408\u683c\u7387
 #report.range
-report.range=\u70B9\u6570\u533A\u5206\u7D71\u8A08
-report.range.subject=\u79D1\u76EE
-report.range.select=\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044
-report.range.search=\u30AF\u30A8\u30EA\u30FC
-report.range.export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
-report.range.chart=\u7D71\u8A08\u56F3\u3092\u898B\u308B
-report.range.level=\u5B66\u6B74
+report.range=\u70b9\u6570\u533a\u5206\u7d71\u8a08
+report.range.subject=\u79d1\u76ee
+report.range.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
+report.range.search=\u30af\u30a8\u30ea\u30fc
+report.range.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
+report.range.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
+report.range.level=\u5b66\u6b74
 report.range.proportion=\u5272\u5408
-report.range.total=\u7DCF\u4EBA\u6570
-report.range.operation=\u64CD\u4F5C\u6A5F\u80FD
-report.range.chart=\u7D71\u8A08\u56F3\u8868
+report.range.total=\u7dcf\u4eba\u6570
+report.range.operation=\u64cd\u4f5c\u6a5f\u80fd
+report.range.chart=\u7d71\u8a08\u56f3\u8868
 #report.college
-report.college=\u5B66\u90E8\u5225\u5206\u6790
-report.college.subject=\u79D1\u76EE
-report.college.select=\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044
-report.college.search=\u30AF\u30A8\u30EA\u30FC
-report.college.export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
-report.college.chart=\u7D71\u8A08\u56F3\u3092\u898B\u308B
-report.college.name=\u6240\u5C5E\u5B66\u90E8
-report.college.avgScore=\u5E73\u5747\u70B9
-report.college.maxScore=\u6700\u9AD8\u70B9
-report.college.minScore=\u6700\u4F4E\u70B9
-report.college.passCount=\u5408\u683C\u8005\u6570
-report.college.passRate=\u5408\u683C\u7387
-report.college.excellentRate=\u9AD8\u5F97\u70B9\u7387
+report.college=\u5b66\u90e8\u5225\u5206\u6790
+report.college.subject=\u79d1\u76ee
+report.college.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
+report.college.search=\u30af\u30a8\u30ea\u30fc
+report.college.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
+report.college.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
+report.college.name=\u6240\u5c5e\u5b66\u90e8
+report.college.avgScore=\u5e73\u5747\u70b9
+report.college.maxScore=\u6700\u9ad8\u70b9
+report.college.minScore=\u6700\u4f4e\u70b9
+report.college.passCount=\u5408\u683c\u8005\u6570
+report.college.passRate=\u5408\u683c\u7387
+report.college.excellentRate=\u9ad8\u5f97\u70b9\u7387
 #report.teacher
-report.teacher=\u62C5\u4EFB\u306B\u3064\u3044\u3066\u306E\u8A55\u4FA1
-report.teacher.subject=\u79D1\u76EE
-report.teacher.select=\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044
-report.teacher.search=\u30AF\u30A8\u30EA\u30FC
-report.teacher.export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
-report.teacher.chart=\u7D71\u8A08\u56F3\u3092\u898B\u308B
-report.teacher.name=\u62C5\u4EFB
-report.teacher.realityCount=\u6709\u52B9\u8005\u6570
-report.teacher.passCount=\u5408\u683C\u8005\u6570
-report.teacher.excellentCount=\u9AD8\u5F97\u70B9\u8005\u6570
-report.teacher.maxScore=\u6700\u9AD8\u70B9
-report.teacher.minScore=\u6700\u4F4E\u70B9
-report.teacher.passRate=\u5408\u683C\u7387
-report.teacher.excellentRate=\u9AD8\u5F97\u70B9\u7387
-report.teacher.avgScore=\u5E73\u5747\u70B9
-report.teacher.relativeAvgScore=\u5E73\u5747\u70B9\u5DEE\u5206
-report.teacher.return=\u623B\u308B
+report.teacher=\u62c5\u4efb\u306b\u3064\u3044\u3066\u306e\u8a55\u4fa1
+report.teacher.subject=\u79d1\u76ee
+report.teacher.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
+report.teacher.search=\u30af\u30a8\u30ea\u30fc
+report.teacher.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
+report.teacher.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
+report.teacher.name=\u62c5\u4efb
+report.teacher.realityCount=\u6709\u52b9\u8005\u6570
+report.teacher.passCount=\u5408\u683c\u8005\u6570
+report.teacher.excellentCount=\u9ad8\u5f97\u70b9\u8005\u6570
+report.teacher.maxScore=\u6700\u9ad8\u70b9
+report.teacher.minScore=\u6700\u4f4e\u70b9
+report.teacher.passRate=\u5408\u683c\u7387
+report.teacher.excellentRate=\u9ad8\u5f97\u70b9\u7387
+report.teacher.avgScore=\u5e73\u5747\u70b9
+report.teacher.relativeAvgScore=\u5e73\u5747\u70b9\u5dee\u5206
+report.teacher.return=\u623b\u308b
 #report.class
-report.class=\u30AF\u30E9\u30B9\u3054\u3068\u5206\u6790
-report.class.subject=\u79D1\u76EE
-report.class.select=\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044
-report.class.search=\u30AF\u30A8\u30EA\u30FC
-report.class.export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
-report.class.chart=\u7D71\u8A08\u56F3\u3092\u898B\u308B
-report.class.name=\u30AF\u30E9\u30B9
-report.class.avgScore=\u5E73\u5747\u70B9
-report.class.maxScore=\u6700\u9AD8\u70B9
-report.class.minScore=\u6700\u4F4E\u70B9
-report.class.passCount=\u5408\u683C\u8005\u6570
-report.class.passRate=\u5408\u683C\u7387
-report.class.excellentCount=\u9AD8\u5F97\u70B9\u8005\u6570
-report.class.excellentRate=\u9AD8\u5F97\u70B9\u7387
+report.class=\u30af\u30e9\u30b9\u3054\u3068\u5206\u6790
+report.class.subject=\u79d1\u76ee
+report.class.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
+report.class.search=\u30af\u30a8\u30ea\u30fc
+report.class.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
+report.class.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
+report.class.name=\u30af\u30e9\u30b9
+report.class.avgScore=\u5e73\u5747\u70b9
+report.class.maxScore=\u6700\u9ad8\u70b9
+report.class.minScore=\u6700\u4f4e\u70b9
+report.class.passCount=\u5408\u683c\u8005\u6570
+report.class.passRate=\u5408\u683c\u7387
+report.class.excellentCount=\u9ad8\u5f97\u70b9\u8005\u6570
+report.class.excellentRate=\u9ad8\u5f97\u70b9\u7387
 #report.question
-report.question.objective=\u30DE\u30FC\u30AF\u30B7\u30FC\u30C8\u65B9\u5F0F\u554F\u984C\u306B\u3064\u3044\u3066\u306E\u5206\u6790
-report.question.subjective=\u8A18\u8FF0\u554F\u984C\u306B\u3064\u3044\u3066\u306E\u5206\u6790
-report.question.subject=\u79D1\u76EE
-report.question.select=\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044
-report.question.search=\u30AF\u30A8\u30EA\u30FC
-report.question.export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
-report.question.chart=\u7D71\u8A08\u56F3\u3092\u898B\u308B
-report.question.paperType=\u7B54\u6848\u7528\u7D19\u306E\u5206\u985E
-report.question.name=\u8A2D\u554F\u540D\u79F0
-report.question.mainNumber=\u5927\u554F\u756A\u53F7
-report.question.subNumber=\u5C0F\u554F\u756A\u53F7
-report.question.score=\u914D\u70B9
-report.question.avgScore=\u5E73\u5747\u70B9
-report.question.stdev=\u6A19\u6E96\u504F\u5DEE
-report.question.scoreRate=\u5F97\u70B9\u7387
-report.question.fullScoreRate=\u6E80\u70B9\u7387
+report.question.objective=\u30de\u30fc\u30af\u30b7\u30fc\u30c8\u65b9\u5f0f\u554f\u984c\u306b\u3064\u3044\u3066\u306e\u5206\u6790
+report.question.subjective=\u8a18\u8ff0\u554f\u984c\u306b\u3064\u3044\u3066\u306e\u5206\u6790
+report.question.subject=\u79d1\u76ee
+report.question.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
+report.question.search=\u30af\u30a8\u30ea\u30fc
+report.question.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
+report.question.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
+report.question.paperType=\u7b54\u6848\u7528\u7d19\u306e\u5206\u985e
+report.question.name=\u8a2d\u554f\u540d\u79f0
+report.question.mainNumber=\u5927\u554f\u756a\u53f7
+report.question.subNumber=\u5c0f\u554f\u756a\u53f7
+report.question.score=\u914d\u70b9
+report.question.avgScore=\u5e73\u5747\u70b9
+report.question.stdev=\u6a19\u6e96\u504f\u5dee
+report.question.scoreRate=\u5f97\u70b9\u7387
+report.question.fullScoreRate=\u6e80\u70b9\u7387
 #report.group
-report.group=\u5927\u554F\u306B\u3064\u3044\u3066\u306E\u5206\u6790
-report.group.subject=\u79D1\u76EE
-report.group.select=\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044
-report.group.search=\u30AF\u30A8\u30EA\u30FC
-report.group.export=\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
-report.group.chart=\u7D71\u8A08\u56F3\u3092\u898B\u308B
-report.group.name=\u8A2D\u554F\u540D\u79F0
-report.group.number=\u554F\u984C\u756A\u53F7
-report.group.totalScore=\u6E80\u70B9
-report.group.maxScore=\u6700\u9AD8\u70B9
-report.group.minScore=\u6700\u4F4E\u70B9
-report.group.avgScore=\u5E73\u5747\u70B9
-report.group.stdev=\u6A19\u6E96\u504F\u5DEE
-report.group.coefficient=\u4E0D\u7B49\u7387
-report.group.scoreRate=\u5F97\u70B9\u7387
-report.group.zeroCount=0\u70B9\u8005\u6570
-report.group.fullCount=\u6E80\u70B9\u8005\u6570
+report.group=\u5927\u554f\u306b\u3064\u3044\u3066\u306e\u5206\u6790
+report.group.subject=\u79d1\u76ee
+report.group.select=\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044
+report.group.search=\u30af\u30a8\u30ea\u30fc
+report.group.export=\u30a8\u30af\u30b9\u30dd\u30fc\u30c8
+report.group.chart=\u7d71\u8a08\u56f3\u3092\u898b\u308b
+report.group.name=\u8a2d\u554f\u540d\u79f0
+report.group.number=\u554f\u984c\u756a\u53f7
+report.group.totalScore=\u6e80\u70b9
+report.group.maxScore=\u6700\u9ad8\u70b9
+report.group.minScore=\u6700\u4f4e\u70b9
+report.group.avgScore=\u5e73\u5747\u70b9
+report.group.stdev=\u6a19\u6e96\u504f\u5dee
+report.group.coefficient=\u4e0d\u7b49\u7387
+report.group.scoreRate=\u5f97\u70b9\u7387
+report.group.zeroCount=0\u70b9\u8005\u6570
+report.group.fullCount=\u6e80\u70b9\u8005\u6570
 #report.massage
-report.massage.school.null=\u8A72\u5F53\u5B66\u6821\u898B\u3064\u304B\u3089\u306A\u3044
+report.massage.school.null=\u8a72\u5f53\u5b66\u6821\u898b\u3064\u304b\u3089\u306a\u3044
 #head
-head.title=\u30C7\u30B8\u30BF\u30EB\u63A1\u70B9\u30B7\u30B9\u30C6\u30E0
-head.logout=\u30ED\u30B0\u30A2\u30A6\u30C8
+head.title=\u30c7\u30b8\u30bf\u30eb\u63a1\u70b9\u30b7\u30b9\u30c6\u30e0
+head.logout=\u30ed\u30b0\u30a2\u30a6\u30c8
+
+#student search
+student.search.title=\u5b66\u751f\u67e5\u8be2\u6210\u7ee9
+student.search.code=\u756a\u53f7
+student.search.name=\u30e6\u30fc\u30b6\u30fc\u540d
+student.search.submit=\u691c\u7d22
+student.search.error=\u5b66\u6821\u4e0d\u5b58\u5728
+#student search list
+student.search.list.examName=\u8003\u8bd5\u540d\u79f0
+student.search.list.subjectName=\u8bfe\u7a0b\u540d\u79f0
+student.search.list.objectiveScore=\u5ba2\u89c2\u5206
+student.search.list.subjectiveScore=\u4e3b\u89c2\u5206
+student.search.list.totalScore=\u603b\u5206
+student.search.list.remark=\u5907\u6ce8

+ 257 - 243
stmms-web/src/main/webapp/static/i18n/messages_zh.properties

@@ -1,277 +1,291 @@
 #login
-user.login.title=\u9AD8\u6821\u8003\u8BD5\u7BA1\u7406\u5E73\u53F0
-user.login.admin=\u7BA1\u7406\u5458\u767B\u5F55
-user.login.marker=\u8BC4\u5377\u5458\u767B\u5F55
-user.login.name=\u7528\u6237\u540D
-user.login.password=\u5BC6\u7801
-user.login.submit=\u767B\u5F55
-user.login.error.account=\u5E10\u53F7\u4E0D\u5B58\u5728
-user.login.error.finish=\u8BC4\u5377\u5DF2\u7ED3\u675F
-user.login.error.group=\u5927\u9898\u4E0D\u5B58\u5728
-user.login.error.disabled=\u5E10\u53F7\u5DF2\u7981\u7528
-user.login.error.password=\u5BC6\u7801\u9519\u8BEF
-user.login.error.access=\u7528\u6237\u6CA1\u6709\u8BBF\u95EE\u6743\u9650
+user.login.title=\u9ad8\u6821\u8003\u8bd5\u7ba1\u7406\u5e73\u53f0
+user.login.admin=\u7ba1\u7406\u5458\u767b\u5f55
+user.login.marker=\u8bc4\u5377\u5458\u767b\u5f55
+user.login.name=\u7528\u6237\u540d
+user.login.password=\u5bc6\u7801
+user.login.submit=\u767b\u5f55
+user.login.error.account=\u5e10\u53f7\u4e0d\u5b58\u5728
+user.login.error.finish=\u8bc4\u5377\u5df2\u7ed3\u675f
+user.login.error.group=\u5927\u9898\u4e0d\u5b58\u5728
+user.login.error.disabled=\u5e10\u53f7\u5df2\u7981\u7528
+user.login.error.password=\u5bc6\u7801\u9519\u8bef
+user.login.error.access=\u7528\u6237\u6ca1\u6709\u8bbf\u95ee\u6743\u9650
 #reset
-user.reset.submit=\u786E\u5B9A
-user.reset.logout=\u9000\u51FA
-user.reset.title=\u9996\u6B21\u767B\u5F55\uFF0C\u8BF7\u5B8C\u5584\u8D44\u6599
-user.reset.name=\u8F93\u5165\u7528\u6237\u540D
-user.reset.password=\u8F93\u5165\u65B0\u5BC6\u7801
-user.reset.password.again=\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801
-user.reset.name.length=\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC710\u4E2A\u5B57
-user.reset.password.same=\u4E24\u6B21\u5BC6\u7801\u8BF7\u4FDD\u6301\u4E00\u81F4
-user.reset.password.length=\u5BC6\u7801\u7684\u957F\u5EA6\u81F3\u5C114\u4F4D\uFF0C\u4E0D\u80FD\u8D85\u8FC78\u4F4D
+user.reset.submit=\u786e\u5b9a
+user.reset.logout=\u9000\u51fa
+user.reset.title=\u9996\u6b21\u767b\u5f55\uff0c\u8bf7\u5b8c\u5584\u8d44\u6599
+user.reset.name=\u8f93\u5165\u7528\u6237\u540d
+user.reset.password=\u8f93\u5165\u65b0\u5bc6\u7801
+user.reset.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+user.reset.name.length=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc710\u4e2a\u5b57
+user.reset.password.same=\u4e24\u6b21\u5bc6\u7801\u8bf7\u4fdd\u6301\u4e00\u81f4
+user.reset.password.length=\u5bc6\u7801\u7684\u957f\u5ea6\u81f3\u5c114\u4f4d\uff0c\u4e0d\u80fd\u8d85\u8fc78\u4f4d
 #mark-control
-mark.control.assistant=\u5C0F\u52A9\u624B
-mark.control.mode.track=\u5207\u6362\u5230\u8F68\u8FF9\u6A21\u5F0F
-mark.control.mode.common=\u5207\u6362\u5230\u666E\u901A\u6A21\u5F0F
-mark.control.function=\u8BC4\u5377\u529F\u80FD
-mark.control.logout=\u9000\u51FA
-mark.control.init.error=\u521D\u59CB\u5316\u5931\u8D25\uFF0C\u8BF7\u5237\u65B0\u9875\u9762\u91CD\u65B0\u52A0\u8F7D
-mark.control.task.not.exist=\u8BC4\u5377\u5927\u9898\u4E0D\u5B58\u5728
-mark.control.task.finish=\u8BC4\u5377\u5DF2\u7ED3\u675F
-mark.control.task.null=\u5F53\u524D\u65E0\u8BC4\u5377\u4EFB\u52A1
-mark.control.tsak.error=\u8BC4\u5377\u4EFB\u52A1\u63D0\u4EA4\u5931\u8D25\uFF0C\u8BF7\u5237\u65B0\u9875\u9762
+mark.control.assistant=\u5c0f\u52a9\u624b
+mark.control.mode.track=\u5207\u6362\u5230\u8f68\u8ff9\u6a21\u5f0f
+mark.control.mode.common=\u5207\u6362\u5230\u666e\u901a\u6a21\u5f0f
+mark.control.function=\u8bc4\u5377\u529f\u80fd
+mark.control.logout=\u9000\u51fa
+mark.control.init.error=\u521d\u59cb\u5316\u5931\u8d25\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u91cd\u65b0\u52a0\u8f7d
+mark.control.task.not.exist=\u8bc4\u5377\u5927\u9898\u4e0d\u5b58\u5728
+mark.control.task.finish=\u8bc4\u5377\u5df2\u7ed3\u675f
+mark.control.task.null=\u5f53\u524d\u65e0\u8bc4\u5377\u4efb\u52a1
+mark.control.tsak.error=\u8bc4\u5377\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25\uff0c\u8bf7\u5237\u65b0\u9875\u9762
 #status
-mark.status.student.number=\u8003\u751F\u7F16\u53F7
-mark.status.library.number=\u4EFB\u52A1\u7F16\u53F7
-mark.status.objective.score=\u5BA2\u89C2\u5F97\u5206
-mark.status.marked.count=\u5DF2\u8BC4
-mark.status.unmark.count=\u672A\u8BC4
-mark.status.top.count=\u5206\u914D
-mark.status.progress=\u8FDB\u5EA6
-mark.status.continue=\u7EE7\u7EED
-mark.status.top.count.finish=\u5206\u914D\u4EFB\u52A1\u5DF2\u8BC4\u5B8C\uFF0C\u662F\u5426\u7EE7\u7EED\uFF1F
-mark.status.loading=\u6B63\u5728\u52A0\u8F7D...
-mark.status.logout=\u9000\u51FA
+mark.status.student.number=\u8003\u751f\u7f16\u53f7
+mark.status.library.number=\u4efb\u52a1\u7f16\u53f7
+mark.status.objective.score=\u5ba2\u89c2\u5f97\u5206
+mark.status.marked.count=\u5df2\u8bc4
+mark.status.unmark.count=\u672a\u8bc4
+mark.status.top.count=\u5206\u914d
+mark.status.progress=\u8fdb\u5ea6
+mark.status.continue=\u7ee7\u7eed
+mark.status.top.count.finish=\u5206\u914d\u4efb\u52a1\u5df2\u8bc4\u5b8c\uff0c\u662f\u5426\u7ee7\u7eed\uff1f
+mark.status.loading=\u6b63\u5728\u52a0\u8f7d...
+mark.status.logout=\u9000\u51fa
 #single-image-view
-mark.single.zoom.in=\u653E\u5927
-mark.single.zoom.out=\u7F29\u5C0F
-mark.single.zoom.fit=\u9002\u5E94
-mark.single.student.answer=\u7B54\u5377
+mark.single.zoom.in=\u653e\u5927
+mark.single.zoom.out=\u7f29\u5c0f
+mark.single.zoom.fit=\u9002\u5e94
+mark.single.student.answer=\u7b54\u5377
 #chang name
-mark.change.name=\u4FEE\u6539\u4E2A\u4EBA\u4FE1\u606F
-mark.change.press.name=\u8F93\u5165\u7528\u6237\u540D
-mark.change.press.password=\u8F93\u5165\u65B0\u5BC6\u7801
-mark.change.press.password.again=\u518D\u6B21\u8F93\u5165\u65B0\u5BC6\u7801
-mark.change.confirm=\u786E\u5B9A
-mark.change.name.null=\u540D\u5B57\u4E0D\u80FD\u4E3A\u7A7A
-mark.change.name.length=\u957F\u5EA6\u4E0D\u80FD\u8D85\u8FC78\u4E2A\u5B57
-mark.change.password.same=\u4E24\u6B21\u5BC6\u7801\u8BF7\u4FDD\u6301\u4E00\u81F4
-mark.change.password.length=\u5BC6\u7801\u7684\u957F\u5EA6\u81F3\u5C114\u4F4D
-mark.change.network.error=\u7F51\u7EDC\u901A\u4FE1\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5
-mark.change.error=\u4FEE\u6539\u5931\u8D25\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5
+mark.change.name=\u4fee\u6539\u4e2a\u4eba\u4fe1\u606f
+mark.change.press.name=\u8f93\u5165\u7528\u6237\u540d
+mark.change.press.password=\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.press.password.again=\u518d\u6b21\u8f93\u5165\u65b0\u5bc6\u7801
+mark.change.confirm=\u786e\u5b9a
+mark.change.name.null=\u540d\u5b57\u4e0d\u80fd\u4e3a\u7a7a
+mark.change.name.length=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc78\u4e2a\u5b57
+mark.change.password.same=\u4e24\u6b21\u5bc6\u7801\u8bf7\u4fdd\u6301\u4e00\u81f4
+mark.change.password.length=\u5bc6\u7801\u7684\u957f\u5ea6\u81f3\u5c114\u4f4d
+mark.change.network.error=\u7f51\u7edc\u901a\u4fe1\u9519\u8bef\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
+mark.change.error=\u4fee\u6539\u5931\u8d25\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
 #specialTag
-mark.special.tag=\u7279\u6B8A\u6807\u8BB0
-mark.special.back=\u56DE\u9000
-mark.special.clear=\u5168\u90E8\u6E05\u9664
-mark.special.underline=\u4E0B\u5212\u7EBF
-mark.special.open=\u6253\u5F00
-mark.special.close=\u5173\u95ED
+mark.special.tag=\u7279\u6b8a\u6807\u8bb0
+mark.special.back=\u56de\u9000
+mark.special.clear=\u5168\u90e8\u6e05\u9664
+mark.special.underline=\u4e0b\u5212\u7ebf
+mark.special.open=\u6253\u5f00
+mark.special.close=\u5173\u95ed
 #problem-process
-mark.problem=\u95EE\u9898\u5377
-mark.problem.type=\u9009\u62E9\u95EE\u9898\u7C7B\u578B
-mark.problem.confirm=\u786E\u5B9A
-mark.problem.cancel=\u53D6\u6D88
-mark.problem.check=\u8BF7\u9009\u62E9\u95EE\u9898\u5206\u7C7B
+mark.problem=\u95ee\u9898\u5377
+mark.problem.type=\u9009\u62e9\u95ee\u9898\u7c7b\u578b
+mark.problem.confirm=\u786e\u5b9a
+mark.problem.cancel=\u53d6\u6d88
+mark.problem.check=\u8bf7\u9009\u62e9\u95ee\u9898\u5206\u7c7b
 #thumbnail
-mark.thumbnail=\u7F29\u7565\u56FE
-mark.thumbnail.open=\u6253\u5F00
-mark.thumbnail.close=\u5173\u95ED
+mark.thumbnail=\u7f29\u7565\u56fe
+mark.thumbnail.open=\u6253\u5f00
+mark.thumbnail.close=\u5173\u95ed
 #view-sidebar
-mark.sidebar=\u4FA7\u8FB9\u680F
-mark.sidebar.paper=\u8BD5\u5377
-mark.sidebar.answer=\u7B54\u6848
+mark.sidebar=\u4fa7\u8fb9\u680f
+mark.sidebar.paper=\u8bd5\u5377
+mark.sidebar.answer=\u7b54\u6848
 #mark-history
-mark.history.title=\u56DE\u8BC4
-mark.history.time=\u65F6\u95F4
-mark.history.number=\u7F16\u53F7
-mark.history.score=\u603B\u5206
-mark.history.search=\u67E5\u627E\u8BD5\u5377
-mark.history.pre=\u524D
-mark.history.success=\u56DE\u8BC4\u6210\u529F\uFF0C\u603B\u5206\uFF1A
-mark.history.problem=\u56DE\u8BC4\u6210\u529F\uFF0C\u5DF2\u63D0\u4EA4\u95EE\u9898\u5377
-mark.history.loading=\u6B63\u5728\u52A0\u8F7D\u8BF7\u7A0D\u5019
-mark.history.error=\u6682\u65F6\u65E0\u6CD5\u8BFB\u53D6\u8BC4\u5377\u5386\u53F2\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5
-mark.history.number.error=\u8BF7\u8F93\u5165\u6570\u5B57
+mark.history.title=\u56de\u8bc4
+mark.history.time=\u65f6\u95f4
+mark.history.number=\u7f16\u53f7
+mark.history.score=\u603b\u5206
+mark.history.search=\u67e5\u627e\u8bd5\u5377
+mark.history.pre=\u524d
+mark.history.success=\u56de\u8bc4\u6210\u529f\uff0c\u603b\u5206\uff1a
+mark.history.problem=\u56de\u8bc4\u6210\u529f\uff0c\u5df2\u63d0\u4ea4\u95ee\u9898\u5377
+mark.history.loading=\u6b63\u5728\u52a0\u8f7d\u8bf7\u7a0d\u5019
+mark.history.error=\u6682\u65f6\u65e0\u6cd5\u8bfb\u53d6\u8bc4\u5377\u5386\u53f2\uff0c\u8bf7\u7a0d\u540e\u91cd\u8bd5
+mark.history.number.error=\u8bf7\u8f93\u5165\u6570\u5b57
 #mark-board
-mark.board.submit=\u63D0\u4EA4
-mark.board.total.score=\u603B\u5206
-mark.board.score.zero=\u5168\u96F6\u5206
-mark.board.pass=\u8DF3 \u8FC7
-mark.board.choose.result=\u9009\u505A\u7ED3\u679C
-mark.board.keyboard=\u952E\u76D8\u7ED9\u5206 >>
-mark.board.mouse=<< \u9F20\u6807\u7ED9\u5206
-mark.board.interval=\u95F4\u9694
+mark.board.submit=\u63d0\u4ea4
+mark.board.total.score=\u603b\u5206
+mark.board.score.zero=\u5168\u96f6\u5206
+mark.board.pass=\u8df3 \u8fc7
+mark.board.choose.result=\u9009\u505a\u7ed3\u679c
+mark.board.keyboard=\u952e\u76d8\u7ed9\u5206 >>
+mark.board.mouse=<< \u9f20\u6807\u7ed9\u5206
+mark.board.interval=\u95f4\u9694
 mark.board.score=\u5206
-mark.board.back=\u56DE\u9000
-mark.board.clear.question=\u6E05\u9664\u672C\u9898
-mark.board.clear=\u6E05\u9664\u5168\u5377
-mark.board.question.not.mark=\u5F53\u524D\u4EFB\u52A1\u8FD8\u6709\u672A\u7ED9\u5206\u7684\u9898\uFF0C\u8BF7\u7EE7\u7EED\u7ED9\u5206
-mark.board.confirm=,\u786E\u8BA4\u63D0\u4EA4\u5417\uFF1F
-mark.board.zero.confirm=\u786E\u8BA4\u8981\u63D0\u4EA4\u5168\u96F6\u5206\u5417\uFF1F
-mark.board.null=\u65E0
-mark.board.interval.error=\u4E0D\u7B26\u5408\u5206\u503C\u95F4\u9694\u8981\u6C42
-mark.board.gt=\u4E0D\u80FD\u5927\u4E8E
-mark.board.lt=\u4E0D\u80FD\u5C0F\u4E8E
-mark.board.number.error=\u4E0D\u662F\u5408\u6CD5\u6570\u5B57
+mark.board.back=\u56de\u9000
+mark.board.clear.question=\u6e05\u9664\u672c\u9898
+mark.board.clear=\u6e05\u9664\u5168\u5377
+mark.board.question.not.mark=\u5f53\u524d\u4efb\u52a1\u8fd8\u6709\u672a\u7ed9\u5206\u7684\u9898\uff0c\u8bf7\u7ee7\u7eed\u7ed9\u5206
+mark.board.confirm=,\u786e\u8ba4\u63d0\u4ea4\u5417\uff1f
+mark.board.zero.confirm=\u786e\u8ba4\u8981\u63d0\u4ea4\u5168\u96f6\u5206\u5417\uff1f
+mark.board.null=\u65e0
+mark.board.interval.error=\u4e0d\u7b26\u5408\u5206\u503c\u95f4\u9694\u8981\u6c42
+mark.board.gt=\u4e0d\u80fd\u5927\u4e8e
+mark.board.lt=\u4e0d\u80fd\u5c0f\u4e8e
+mark.board.number.error=\u4e0d\u662f\u5408\u6cd5\u6570\u5b57
 #sheet-view
-mark.sheet=\u539F\u56FE
-mark.sheet.check=\u539F\u56FE\u5207\u6362
-mark.sheet.open=\u6253\u5F00
-mark.sheet.close=\u5173\u95ED
+mark.sheet=\u539f\u56fe
+mark.sheet.check=\u539f\u56fe\u5207\u6362
+mark.sheet.open=\u6253\u5f00
+mark.sheet.close=\u5173\u95ed
 #slice-view
 mark.slice=\u5168\u5377
 mark.slice.check=\u5168\u5377\u5207\u6362
-mark.slice.open=\u6253\u5F00
-mark.slice.close=\u5173\u95ED
+mark.slice.open=\u6253\u5f00
+mark.slice.close=\u5173\u95ed
 #answer-view
-mark.answer=\u6807\u7B54
+mark.answer=\u6807\u7b54
 #warning-info
-mark.warning.try.again=\u8BF7\u70B9\u51FB\u91CD\u8BD5
-mark.warning.force.special.tag=\u5F3A\u5236\u7279\u6B8A\u6807\u8BB0\u5DF2\u5F00\u542F\uFF0C\u81F3\u5C11\u4F7F\u7528\u4E00\u4E2A\u7279\u6B8A\u6807\u8BB0
-mark.warning.network.error=\u7F51\u7EDC\u5F02\u5E38\uFF0C\u4EFB\u52A1\u63D0\u4EA4\u5931\u8D25
-mark.warning.task.error=\u9886\u53D6\u8BC4\u5377\u4EFB\u52A1\u51FA\u9519
-mark.warning.task.finish=\u8BC4\u5377\u4EFB\u52A1\u5DF2\u5B8C\u6210
-mark.warning.task.loading=\u8BC4\u5377\u4EFB\u52A1\u6B63\u5728\u52A0\u8F7D\u4E2D
-mark.warning.close=\u5173\u95ED
-mark.warning.success=\u56DE\u8BC4\u6210\u529F\uFF0C\u603B\u5206\uFF1A
-mark.warning.problem=\u56DE\u8BC4\u95EE\u9898\u5377\u6210\u529F
+mark.warning.try.again=\u8bf7\u70b9\u51fb\u91cd\u8bd5
+mark.warning.force.special.tag=\u5f3a\u5236\u7279\u6b8a\u6807\u8bb0\u5df2\u5f00\u542f\uff0c\u81f3\u5c11\u4f7f\u7528\u4e00\u4e2a\u7279\u6b8a\u6807\u8bb0
+mark.warning.network.error=\u7f51\u7edc\u5f02\u5e38\uff0c\u4efb\u52a1\u63d0\u4ea4\u5931\u8d25
+mark.warning.task.error=\u9886\u53d6\u8bc4\u5377\u4efb\u52a1\u51fa\u9519
+mark.warning.task.finish=\u8bc4\u5377\u4efb\u52a1\u5df2\u5b8c\u6210
+mark.warning.task.loading=\u8bc4\u5377\u4efb\u52a1\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.warning.close=\u5173\u95ed
+mark.warning.success=\u56de\u8bc4\u6210\u529f\uff0c\u603b\u5206\uff1a
+mark.warning.problem=\u56de\u8bc4\u95ee\u9898\u5377\u6210\u529f
 #json-view
-mark.json.loading=\u6B63\u5728\u52A0\u8F7D\u4E2D
-mark.json.student.answer=\u8003\u751F\u7B54\u6848\uFF1A
-mark.json.answer=\u6807\u7B54\uFF1A
-mark.json.body=\u9898\u5E72\uFF1A
-mark.json.question.number=\u9898\u53F7\uFF1A
+mark.json.loading=\u6b63\u5728\u52a0\u8f7d\u4e2d
+mark.json.student.answer=\u8003\u751f\u7b54\u6848\uff1a
+mark.json.answer=\u6807\u7b54\uff1a
+mark.json.body=\u9898\u5e72\uff1a
+mark.json.question.number=\u9898\u53f7\uff1a
 
 #index
-index.user=\u7528\u6237\u7BA1\u7406
-index.exam=\u8003\u8BD5\u7BA1\u7406
-index.student=\u8003\u751F\u7BA1\u7406
-index.paper=\u79D1\u76EE\u7BA1\u7406
-index.scan=\u626B\u63CF\u8FDB\u5EA6
-index.mark=\u8BC4\u5377\u7BA1\u7406
-index.score=\u6210\u7EE9\u67E5\u8BE2
-index.inspected=\u6210\u7EE9\u590D\u6838
-index.problem=\u95EE\u9898\u8BD5\u5377
-index.report.total=\u603B\u91CF\u5206\u6790
-index.report.subject=\u79D1\u76EE\u5206\u6790
-index.check=\u6570\u636E\u68C0\u67E5
-index.log=\u64CD\u4F5C\u65E5\u5FD7
+index.user=\u7528\u6237\u7ba1\u7406
+index.exam=\u8003\u8bd5\u7ba1\u7406
+index.student=\u8003\u751f\u7ba1\u7406
+index.paper=\u79d1\u76ee\u7ba1\u7406
+index.scan=\u626b\u63cf\u8fdb\u5ea6
+index.mark=\u8bc4\u5377\u7ba1\u7406
+index.score=\u6210\u7ee9\u67e5\u8be2
+index.inspected=\u6210\u7ee9\u590d\u6838
+index.problem=\u95ee\u9898\u8bd5\u5377
+index.report.total=\u603b\u91cf\u5206\u6790
+index.report.subject=\u79d1\u76ee\u5206\u6790
+index.check=\u6570\u636e\u68c0\u67e5
+index.log=\u64cd\u4f5c\u65e5\u5fd7
 
 #report.subject
-report.subject=\u603B\u91CF\u5206\u6790
-report.subject.name=\u79D1\u76EE
-report.subject.select=\u8BF7\u9009\u62E9
-report.subject.search=\u67E5\u8BE2
-report.subject.export=\u5BFC\u51FA
-report.subject.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.subject.name=\u79D1\u76EE
-report.subject.totalCount=\u62A5\u8003\u4EBA\u6570
-report.subject.absentCount=\u7F3A\u8003
-report.subject.breachCount=\u8FDD\u7EAA
-report.subject.realityCount=\u6709\u6548\u4EBA\u6570
-report.subject.avgScore=\u5E73\u5747\u5206
-report.subject.maxScore=\u6700\u9AD8\u5206
-report.subject.minScore=\u6700\u4F4E\u5206
-report.subject.passCount=\u53CA\u683C\u4EBA\u6570
-report.subject.passRate=\u53CA\u683C\u7387
+report.subject=\u603b\u91cf\u5206\u6790
+report.subject.name=\u79d1\u76ee
+report.subject.select=\u8bf7\u9009\u62e9
+report.subject.search=\u67e5\u8be2
+report.subject.export=\u5bfc\u51fa
+report.subject.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.subject.name=\u79d1\u76ee
+report.subject.totalCount=\u62a5\u8003\u4eba\u6570
+report.subject.absentCount=\u7f3a\u8003
+report.subject.breachCount=\u8fdd\u7eaa
+report.subject.realityCount=\u6709\u6548\u4eba\u6570
+report.subject.avgScore=\u5e73\u5747\u5206
+report.subject.maxScore=\u6700\u9ad8\u5206
+report.subject.minScore=\u6700\u4f4e\u5206
+report.subject.passCount=\u53ca\u683c\u4eba\u6570
+report.subject.passRate=\u53ca\u683c\u7387
 #report.range
-report.range=\u5206\u6BB5\u7EDF\u8BA1
-report.range.subject=\u79D1\u76EE
-report.range.select=\u8BF7\u9009\u62E9
-report.range.search=\u67E5\u8BE2
-report.range.export=\u5BFC\u51FA
-report.range.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.range.level=\u5C42\u6B21
-report.range.proportion=\u5360\u6BD4
-report.range.total=\u603B\u6570
-report.range.operation=\u64CD\u4F5C
-report.range.chart=\u5206\u6BB5\u56FE
+report.range=\u5206\u6bb5\u7edf\u8ba1
+report.range.subject=\u79d1\u76ee
+report.range.select=\u8bf7\u9009\u62e9
+report.range.search=\u67e5\u8be2
+report.range.export=\u5bfc\u51fa
+report.range.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.range.level=\u5c42\u6b21
+report.range.proportion=\u5360\u6bd4
+report.range.total=\u603b\u6570
+report.range.operation=\u64cd\u4f5c
+report.range.chart=\u5206\u6bb5\u56fe
 #report.college
-report.college=\u5B66\u9662\u5206\u6790
-report.college.subject=\u79D1\u76EE
-report.college.select=\u8BF7\u9009\u62E9
-report.college.search=\u67E5\u8BE2
-report.college.export=\u5BFC\u51FA
-report.college.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.college.name=\u5B66\u751F\u9662\u7CFB
-report.college.avgScore=\u5E73\u5747\u5206
-report.college.maxScore=\u6700\u9AD8\u5206
-report.college.minScore=\u6700\u4F4E\u5206
-report.college.passCount=\u53CA\u683C\u4EBA\u6570
-report.college.passRate=\u53CA\u683C\u7387
-report.college.excellentRate=\u4F18\u79C0\u7387
+report.college=\u5b66\u9662\u5206\u6790
+report.college.subject=\u79d1\u76ee
+report.college.select=\u8bf7\u9009\u62e9
+report.college.search=\u67e5\u8be2
+report.college.export=\u5bfc\u51fa
+report.college.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.college.name=\u5b66\u751f\u9662\u7cfb
+report.college.avgScore=\u5e73\u5747\u5206
+report.college.maxScore=\u6700\u9ad8\u5206
+report.college.minScore=\u6700\u4f4e\u5206
+report.college.passCount=\u53ca\u683c\u4eba\u6570
+report.college.passRate=\u53ca\u683c\u7387
+report.college.excellentRate=\u4f18\u79c0\u7387
 #report.teacher
-report.teacher=\u4EFB\u8BFE\u8001\u5E08\u5206\u6790
-report.teacher.subject=\u79D1\u76EE
-report.teacher.select=\u8BF7\u9009\u62E9
-report.teacher.search=\u67E5\u8BE2
-report.teacher.export=\u5BFC\u51FA
-report.teacher.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.teacher.name=\u4EFB\u8BFE\u8001\u5E08
-report.teacher.realityCount=\u6709\u6548\u4EBA\u6570
-report.teacher.passCount=\u53CA\u683C
-report.teacher.excellentCount=\u4F18\u79C0
-report.teacher.maxScore=\u6700\u9AD8\u5206
-report.teacher.minScore=\u6700\u4F4E\u5206
-report.teacher.passRate=\u53CA\u683C\u7387
-report.teacher.excellentRate=\u4F18\u79C0\u7387
-report.teacher.avgScore=\u5E73\u5747\u5206
-report.teacher.relativeAvgScore=\u5E73\u5747\u76F8\u5BF9\u5206
-report.teacher.return=\u8FD4\u56DE
+report.teacher=\u4efb\u8bfe\u8001\u5e08\u5206\u6790
+report.teacher.subject=\u79d1\u76ee
+report.teacher.select=\u8bf7\u9009\u62e9
+report.teacher.search=\u67e5\u8be2
+report.teacher.export=\u5bfc\u51fa
+report.teacher.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.teacher.name=\u4efb\u8bfe\u8001\u5e08
+report.teacher.realityCount=\u6709\u6548\u4eba\u6570
+report.teacher.passCount=\u53ca\u683c
+report.teacher.excellentCount=\u4f18\u79c0
+report.teacher.maxScore=\u6700\u9ad8\u5206
+report.teacher.minScore=\u6700\u4f4e\u5206
+report.teacher.passRate=\u53ca\u683c\u7387
+report.teacher.excellentRate=\u4f18\u79c0\u7387
+report.teacher.avgScore=\u5e73\u5747\u5206
+report.teacher.relativeAvgScore=\u5e73\u5747\u76f8\u5bf9\u5206
+report.teacher.return=\u8fd4\u56de
 #report.class
-report.class=\u73ED\u7EA7\u5206\u6790
-report.class.subject=\u79D1\u76EE
-report.class.select=\u8BF7\u9009\u62E9
-report.class.search=\u67E5\u8BE2
-report.class.export=\u5BFC\u51FA
-report.class.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.class.name=\u73ED\u7EA7
-report.class.avgScore=\u5E73\u5747\u5206
-report.class.maxScore=\u6700\u9AD8\u5206
-report.class.minScore=\u6700\u4F4E\u5206
-report.class.passCount=\u53CA\u683C\u6570
-report.class.passRate=\u53CA\u683C\u7387
-report.class.excellentCount=\u4F18\u79C0\u6570
-report.class.excellentRate=\u4F18\u79C0\u7387
+report.class=\u73ed\u7ea7\u5206\u6790
+report.class.subject=\u79d1\u76ee
+report.class.select=\u8bf7\u9009\u62e9
+report.class.search=\u67e5\u8be2
+report.class.export=\u5bfc\u51fa
+report.class.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.class.name=\u73ed\u7ea7
+report.class.avgScore=\u5e73\u5747\u5206
+report.class.maxScore=\u6700\u9ad8\u5206
+report.class.minScore=\u6700\u4f4e\u5206
+report.class.passCount=\u53ca\u683c\u6570
+report.class.passRate=\u53ca\u683c\u7387
+report.class.excellentCount=\u4f18\u79c0\u6570
+report.class.excellentRate=\u4f18\u79c0\u7387
 #report.question
-report.question.objective=\u5BA2\u89C2\u9898\u5206\u6790
-report.question.subjective=\u4E3B\u89C2\u9898\u5206\u6790
-report.question.subject=\u79D1\u76EE
-report.question.select=\u8BF7\u9009\u62E9
-report.question.search=\u67E5\u8BE2
-report.question.export=\u5BFC\u51FA
-report.question.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.question.paperType=\u8BD5\u5377\u7C7B\u578B
-report.question.name=\u9898\u76EE\u540D\u79F0
-report.question.mainNumber=\u5927\u9898\u53F7
-report.question.subNumber=\u5C0F\u9898\u53F7
+report.question.objective=\u5ba2\u89c2\u9898\u5206\u6790
+report.question.subjective=\u4e3b\u89c2\u9898\u5206\u6790
+report.question.subject=\u79d1\u76ee
+report.question.select=\u8bf7\u9009\u62e9
+report.question.search=\u67e5\u8be2
+report.question.export=\u5bfc\u51fa
+report.question.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.question.paperType=\u8bd5\u5377\u7c7b\u578b
+report.question.name=\u9898\u76ee\u540d\u79f0
+report.question.mainNumber=\u5927\u9898\u53f7
+report.question.subNumber=\u5c0f\u9898\u53f7
 report.question.score=\u5355\u9898\u5206\u6570
-report.question.avgScore=\u5355\u9898\u5E73\u5747\u5206
-report.question.stdev=\u5355\u9898\u6807\u51C6\u5DEE
-report.question.scoreRate=\u5F97\u5206\u7387
-report.question.fullScoreRate=\u6EE1\u5206\u7387
+report.question.avgScore=\u5355\u9898\u5e73\u5747\u5206
+report.question.stdev=\u5355\u9898\u6807\u51c6\u5dee
+report.question.scoreRate=\u5f97\u5206\u7387
+report.question.fullScoreRate=\u6ee1\u5206\u7387
 #report.group
 report.group=\u5927\u9898\u5206\u6790
-report.group.subject=\u79D1\u76EE
-report.group.select=\u8BF7\u9009\u62E9
-report.group.search=\u67E5\u8BE2
-report.group.export=\u5BFC\u51FA
-report.group.chart=\u67E5\u770B\u7EDF\u8BA1\u56FE
-report.group.name=\u9898\u76EE\u540D\u79F0
-report.group.number=\u9898\u53F7
-report.group.totalScore=\u6EE1\u5206
-report.group.maxScore=\u6700\u9AD8\u5206
-report.group.minScore=\u6700\u4F4E\u5206
-report.group.avgScore=\u5E73\u5747\u5206
-report.group.stdev=\u6807\u51C6\u5DEE
-report.group.coefficient=\u5DEE\u5F02\u7CFB\u6570
-report.group.scoreRate=\u5F97\u5206\u7387
-report.group.zeroCount=\u96F6\u5206\u4EBA\u6570
-report.group.fullCount=\u6EE1\u5206\u4EBA\u6570
+report.group.subject=\u79d1\u76ee
+report.group.select=\u8bf7\u9009\u62e9
+report.group.search=\u67e5\u8be2
+report.group.export=\u5bfc\u51fa
+report.group.chart=\u67e5\u770b\u7edf\u8ba1\u56fe
+report.group.name=\u9898\u76ee\u540d\u79f0
+report.group.number=\u9898\u53f7
+report.group.totalScore=\u6ee1\u5206
+report.group.maxScore=\u6700\u9ad8\u5206
+report.group.minScore=\u6700\u4f4e\u5206
+report.group.avgScore=\u5e73\u5747\u5206
+report.group.stdev=\u6807\u51c6\u5dee
+report.group.coefficient=\u5dee\u5f02\u7cfb\u6570
+report.group.scoreRate=\u5f97\u5206\u7387
+report.group.zeroCount=\u96f6\u5206\u4eba\u6570
+report.group.fullCount=\u6ee1\u5206\u4eba\u6570
 #report.massage
-report.massage.school.null=\u627E\u4E0D\u5230\u5B66\u6821
+report.massage.school.null=\u627e\u4e0d\u5230\u5b66\u6821
 #head
-head.title=\u4E91\u9605\u5377
-head.logout=\u9000\u51FA
+head.title=\u4e91\u9605\u5377
+head.logout=\u9000\u51fa
+
+#student search
+student.search.title=\u5b66\u751f\u67e5\u8be2\u6210\u7ee9
+student.search.code=\u8bf7\u8f93\u5165\u5b66\u53f7
+student.search.name=\u8bf7\u8f93\u5165\u59d3\u540d
+student.search.submit=\u67e5\u8be2
+student.search.error=\u5b66\u6821\u4e0d\u5b58\u5728
+#student search list
+student.search.list.examName=\u8003\u8bd5\u540d\u79f0
+student.search.list.subjectName=\u8bfe\u7a0b\u540d\u79f0
+student.search.list.objectiveScore=\u5ba2\u89c2\u5206
+student.search.list.subjectiveScore=\u4e3b\u89c2\u5206
+student.search.list.totalScore=\u603b\u5206
+student.search.list.remark=\u5907\u6ce8

BIN
stmms-web/src/main/webapp/static/images/user.png


+ 1 - 0
stmms-web/src/main/webapp/static/mark-json/js/mark-control.js

@@ -659,6 +659,7 @@ MarkControl.prototype.center_dom = '<div class="center-content span12"></div>';
 MarkControl.prototype.center_header_dom = '<div class="row-fluid"><div class="header"><p class="tips">\
 <em>\
 <a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.control.assistant">小助手</span></a></em>\
+<a href="##" class="btn" id="switch-group-button">切换分组</a>\
 <a class="useinfo" href="#"><i class="icon-user icon-white"></i><i id="mark-user-name"></i></a>\
 <a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="mark.control.logout">退出</i></a>\
 </p></div></div>';

+ 1 - 0
stmms-web/src/main/webapp/static/mark-new/js/mark-control.js

@@ -662,6 +662,7 @@ MarkControl.prototype.center_dom = '<div class="center-content span12"></div>';
 MarkControl.prototype.center_header_dom = '<div class="row-fluid"><div class="header"><p class="tips">\
 <em><a href="##" class="btn" id="switch-track-button" style="display:none" data-i18n-text="mark.control.mode.track">切换到轨迹模式</a>\
 <a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.control.assistant"> 小助手</span></a></em>\
+<a href="##" class="btn" id="switch-group-button">切换分组</a>\
 <a class="useinfo" href="#"><i class="icon-user icon-white"></i><i id="mark-user-name"></i></a>\
 <a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="mark.control.logout">退出</i></a>\
 </p></div></div>';

+ 1 - 1
stmms-web/src/main/webapp/static/mark-new/js/modules/change-name.js

@@ -1,4 +1,4 @@
-//评卷状态模块
+//修改用户名模块
 var change_name = function(option, success) {
     var object = new ChangeName(option);
     success();

+ 55 - 0
stmms-web/src/main/webapp/static/mark-new/js/modules/switch-group.js

@@ -0,0 +1,55 @@
+//切换分组模块
+var switch_group = function(option, success) {
+    var object = new SwitchGroup(option);
+    success();
+    return object;
+}
+
+function SwitchGroup(option) {
+    this.markControl = option.markControl;
+    this.url = option.url;
+    this.groups =JSON.parse(option.groups);
+    this.popover = getDom(this.popover_dom, this.markControl);
+    this.popover.cancelButton = this.popover.find('p.image-close');
+    this.popover.submitButton = this.popover.find('a.btn');
+    this.popover.appendTo(this.markControl.container);
+    $("#groupForm").attr("action", this.url);
+
+    var self = this;
+    if(this.groups.length > 0){
+    	for (var i = 0; i < this.groups.length; i++) {
+    		var name = getDom("<option value="+this.groups[i].id+">分组序号:"+this.groups[i].groupNumber+"</option>").appendTo(self.popover.find('#groupSelect'));
+    	}
+    }
+    
+    
+    this.markControl.container.header.find('#switch-group-button').click(function() {
+        self.toggle(true);
+    });
+    this.popover.cancelButton.click(function() {
+        self.toggle(false);
+    });
+    this.popover.submitButton.click(function() {
+    	var markerId= self.popover.find('#groupSelect').val();
+    	if(markerId==0){
+    		return;
+    	}
+    	$("#groupForm").submit();
+    });
+}
+
+SwitchGroup.prototype.toggle = function(enable) {
+    if (enable == true) {
+        this.enable = true;
+        this.popover.show();
+    } else {
+        this.enable = false;
+        this.popover.hide();
+    }
+}
+
+SwitchGroup.prototype.popover_dom = '<div class="message-popover" style="display:none"><div class="popover-header">\
+<p class="title" >切换分组</p><p class="image-close"><img src="{staticServer}/mark-new/images/images-close.png" /></p></div>\
+<div class="popover-cont"><form id="groupForm" method="post"><select name="markerId" id="groupSelect"><option value="0">请选择</option></select></form></div>\
+<a href="#" class="btn btn-small btn-info " id="groupFormSubmit" data-i18n-text="mark.change.confirm">确定</a>\
+</div>';

+ 1 - 0
stmms-web/src/main/webapp/static/mark-track/js/mark-control.js

@@ -658,6 +658,7 @@ MarkControl.prototype.center_dom = '<div class="center-content span12"></div>';
 MarkControl.prototype.center_header_dom = '<div class="row-fluid"><div class="header"><p class="tips">\
 <em><a href="##" class="btn" id="switch-common-button" style="display:none" data-i18n-text="mark.control.mode.common">切换到普通模式</a>\
 <a href="javascript:void(0)" id="assistant-button" class="btn"><i class="icon-wrench"></i><span data-i18n-text="mark.control.assistant"> 小助手</span></a></em>\
+<a href="##" class="btn" id="switch-group-button">切换分组</a>\
 <a class="useinfo" href="#"><i class="icon-user icon-white"></i><i id="mark-user-name"></i></a>\
 <a class="logout" id="logout-link" href="{logoutUrl}"><i class="icon-off icon-white"></i> <i id="logout-title" data-i18n-text="mark.control.logout">退出</i></a>\
 </p></div></div>';