ting.yin 5 years ago
parent
commit
155674c7d2

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

@@ -17,6 +17,7 @@ import javax.persistence.Transient;
 
 import org.apache.commons.lang.StringUtils;
 
+import cn.com.qmth.stmms.biz.mark.model.ProblemType;
 import cn.com.qmth.stmms.biz.utils.ScoreItem;
 import cn.com.qmth.stmms.common.annotation.ExcelField;
 
@@ -288,6 +289,9 @@ public class ExamStudent implements Serializable {
     @Transient
     private List<ExamQuestion> objectiveQuestionList;
 
+    @Transient
+    private ProblemType problemType;
+
     public Integer getId() {
         return id;
     }
@@ -752,4 +756,12 @@ public class ExamStudent implements Serializable {
         this.objectiveQuestionList = objectiveQuestionList;
     }
 
+    public ProblemType getProblemType() {
+        return problemType;
+    }
+
+    public void setProblemType(ProblemType problemType) {
+        this.problemType = problemType;
+    }
+
 }

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

@@ -99,6 +99,9 @@ public class ProblemHistoryServiceImpl extends BaseQueryService<ProblemHistory>
                 if (query.getUserId() > 0) {
                     predicates.add(cb.equal(root.get("userId"), query.getUserId()));
                 }
+                if (query.getGroupNumber() > 0) {
+                    predicates.add(cb.equal(root.get("groupNumber"), query.getGroupNumber()));
+                }
                 if (query.getStatus() != null) {
                     predicates.add(cb.equal(root.get("status").as(HistoryStatus.class), query.getStatus()));
                 }

+ 0 - 31
stmms-common/src/main/java/cn/com/qmth/stmms/common/enums/ProblemType.java

@@ -1,31 +0,0 @@
-package cn.com.qmth.stmms.common.enums;
-
-public enum ProblemType {
-    FUZZY("试卷模糊", 0), MISPLACED("答错位置", 1), UNIDENTIFIED("无法判别", 2);
-
-    private String name;
-
-    private int value;
-
-    private ProblemType(String name, int value) {
-        this.name = name;
-        this.value = value;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    public int getValue() {
-        return value;
-    }
-
-    public static ProblemType findByValue(int value) {
-        for (ProblemType c : ProblemType.values()) {
-            if (c.getValue() == value) {
-                return c;
-            }
-        }
-        return null;
-    }
-}

+ 0 - 1
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/LibraryController.java

@@ -128,7 +128,6 @@ public class LibraryController extends BaseExamController {
         model.addAttribute("markerList",
                 markerService.findByExamAndSubjectAndGroup(examId, query.getSubjectCode(), query.getGroupNumber()));
         model.addAttribute("inspectedCount", inspectedCount);
-        model.addAttribute("jsonServer", jsonServer);
         Exam exam = examService.findById(examId);
         model.addAttribute("examType", exam.getType());
         return "modules/exam/libraryList";

+ 118 - 0
stmms-web/src/main/java/cn/com/qmth/stmms/admin/exam/ProblemHistoryController.java

@@ -0,0 +1,118 @@
+package cn.com.qmth.stmms.admin.exam;
+
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+import javax.servlet.http.HttpServletRequest;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import cn.com.qmth.stmms.biz.exam.model.Exam;
+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.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.ProblemHistory;
+import cn.com.qmth.stmms.biz.mark.model.ProblemType;
+import cn.com.qmth.stmms.biz.mark.query.ProblemHistorySearchQuery;
+import cn.com.qmth.stmms.biz.mark.service.ProblemHistoryService;
+import cn.com.qmth.stmms.biz.mark.service.ProblemTypeService;
+import cn.com.qmth.stmms.common.enums.HistoryStatus;
+import cn.com.qmth.stmms.common.enums.MarkStatus;
+import cn.com.qmth.stmms.common.utils.DateUtils;
+
+@Controller
+@RequestMapping("/admin/exam/problem/history")
+public class ProblemHistoryController extends BaseExamController {
+
+    protected static Logger log = LoggerFactory.getLogger(ProblemHistoryController.class);
+
+    @Autowired
+    private ProblemTypeService problemService;
+
+    @Autowired
+    private ProblemHistoryService historyService;
+
+    @Autowired
+    private ExamStudentService studentService;
+
+    @Autowired
+    private ExamSubjectService subjectService;
+
+    @Autowired
+    private ExamService examService;
+
+    @Autowired
+    private MarkGroupService groupService;
+
+    @Autowired
+    private ExamQuestionService questionService;
+
+    @RequestMapping
+    public String list(HttpServletRequest request, Model model, ProblemHistorySearchQuery query) {
+        int examId = getSessionExamId(request);
+        if (examId > 0) {
+            List<ProblemType> problemTypes = problemService.findByExamId(examId);
+            Map<Integer, ProblemType> problemMap = new HashMap<Integer, ProblemType>();
+            for (ProblemType problemType : problemTypes) {
+                problemMap.put(problemType.getId(), problemType);
+            }
+            query.setExamId(examId);
+            query.setStatus(HistoryStatus.WAITING);
+            query.orderByExamNumber();
+            query = historyService.findByQuery(query);
+
+            List<ExamStudent> list = new LinkedList<ExamStudent>();
+            for (ProblemHistory history : query.getResult()) {
+                ExamStudent student = studentService.findById(history.getStudentId());
+                student.setNumber(history.getGroupNumber());
+                student.setProblemType(problemMap.get(history.getProblemId()));
+                student.setMarkTime(DateUtils.formatDateTime(history.getCreateTime()));
+                student.setLibraryId(history.getLibraryId());
+                list.add(student);
+            }
+            model.addAttribute("resultList", list);
+            model.addAttribute("query", query);
+            model.addAttribute("subjectList", getProblemSubject(examId));
+            model.addAttribute("problemList", problemTypes);
+            List<MarkGroup> groupList = groupService.findByExamAndSubjectAndStatus(examId, query.getSubjectCode(),
+                    MarkStatus.FORMAL);
+            for (MarkGroup group : groupList) {
+                List<ExamQuestion> questions = questionService.findByExamAndSubjectAndObjectiveAndGroupNumber(examId,
+                        group.getSubjectCode(), false, group.getNumber());
+                group.setQuestionList(questions);
+            }
+            model.addAttribute("groupList", groupList);
+            model.addAttribute("statusList", HistoryStatus.getOptionList());
+            Exam exam = examService.findById(examId);
+            model.addAttribute("examType", exam.getType());
+            return "modules/exam/problemHistory";
+        }
+        return "redirect:/admin/exam/list";
+    }
+
+    private List<ExamSubject> getProblemSubject(int examId) {
+        List<ExamSubject> list = new LinkedList<ExamSubject>();
+        List<String> codes = historyService.findProblemSubjectCode(examId);
+        for (String code : codes) {
+            ExamSubject subject = subjectService.find(examId, code);
+            if (subject != null) {
+                list.add(subject);
+            }
+        }
+        return list;
+    }
+
+}

+ 2 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/examIndex.jsp

@@ -96,6 +96,7 @@
 											<li><a href="${ctx}/admin/exam/mark" target="mainFrame" ><i class="icon-pencil"></i>评卷管理</a></li>
 											<li><a href="${ctx}/admin/exam/score" target="mainFrame" ><i class="icon-search"></i>成绩查询</a></li>
 											<li><a href="${ctx}/admin/exam/reportSubjectRange" target="mainFrame" ><i class="icon-search"></i>成绩分析</a></li>
+											<li><a href="${ctx}/admin/exam/problem/history" target="mainFrame" ><i class="icon-tag"></i>问题试卷</a></li>	
 											<li><a href="${ctx}/admin/exam/check/answer" target="mainFrame" ><i class="icon-check"></i>数据检查</a></li>			
 											</c:if>
 											
@@ -104,6 +105,7 @@
                                             <li><a href="${ctx}/admin/exam/student" target="mainFrame" ><i class="icon-user"></i>考生管理</a></li>
                                             <li><a href="${ctx}/admin/exam/mark" target="mainFrame" ><i class="icon-pencil"></i>评卷管理</a></li>
                                             <li><a href="${ctx}/admin/exam/score" target="mainFrame" ><i class="icon-search"></i>成绩查询</a></li> 
+                                            <li><a href="${ctx}/admin/exam/problem/history" target="mainFrame" ><i class="icon-tag"></i>问题试卷</a></li>	
                                             <li><a href="${ctx}/admin/exam/reportSubjectRange" target="mainFrame" ><i class="icon-search"></i>成绩分析</a></li>     
                                             </c:if>
                                             

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

@@ -122,7 +122,7 @@
                     </c:if>
 				</td>
 				<td>
-				    <c:if test="${result.status.value==1 || result.status.value==3 ||result.status.value==5}">
+				    <c:if test="${result.status.value==1 || result.status.value==3 ||result.status.value==5 ||result.status.value==6}">
 				   		<c:if test="${examType=='MULTI_MEDIA'}">
 				    		<a class="json-link" href="${ctx}/admin/exam/library/getJson?studentId=${result.studentId}&groupNumber=${result.groupNumber}" target="_blank">原图</a> 
 				    	</c:if>

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

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

+ 4 - 0
stmms-web/src/main/webapp/WEB-INF/views/modules/exam/qualityProcess.jsp

@@ -19,6 +19,9 @@
 <script src="${ctxStatic}/perfect-scrollbar/min/perfect-scrollbar.min.js"></script>
 <link href="${ctxStatic}/perfect-scrollbar/min/perfect-scrollbar.min.css" rel="stylesheet">
 
+<script src="${ctxStatic}/i18n/jquery.i18n.properties.js" type="text/javascript"></script>
+<script src="${ctxStatic}/i18n/load.js" type="text/javascript"></script>
+
 <script type="text/javascript" src="${ctxStatic}/mark-new/js/mark-control.js"></script>
 <script type="text/javascript" src="${ctxStatic}/mark-new/js/task-control.js"></script>
 <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/sheet-view.js"></script>
@@ -29,6 +32,7 @@
 <script type="text/javascript" src="${ctxStatic}/mark-new/js/modules/single-image-view.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/quality-process.js"></script>
+
 </head>
 <body>
 	<div class="container-fluid" id="container"></div>

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

@@ -82,8 +82,8 @@
 	        <em class="error"></em>
 	        </div>
 	        <div class="login-btn">
-	        	<input class="opacity" type="submit" id="submit-button" value="确 定" data-i18n-value="user.reset.subimt"/>
-	        	<a href="${ctx}/logout" class="opacity" data-i18n-text="user.reset.logou">退 出</a>
+	        	<input class="opacity" type="submit" id="submit-button" value="确 定" data-i18n-value="user.reset.submit"/>
+	        	<a href="${ctx}/logout" class="opacity" data-i18n-text="user.reset.logout">退 出</a>
 	        </div>
 	      </form>
 	     </div>

+ 3 - 1
stmms-web/src/main/webapp/static/i18n/messages.properties

@@ -17,7 +17,7 @@ user.reset.logout=\u9000\u51fa
 user.reset.title=\u9996\u6b21\u767b\u9646\uff0c\u8bf7\u5b8c\u5584\u8d44\u6599
 user.reset.name=\u8f93\u5165\u7528\u6237\u540d
 user.reset.password=\u8f93\u5165\u65b0\u5bc6\u7801
-user.reset.again=\u518d\u6b21\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
@@ -91,6 +91,7 @@ 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
@@ -127,6 +128,7 @@ 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
 #json-view
 mark.json.loading=\u6b63\u5728\u52a0\u8f7d\u4e2d
 mark.json.student.answer=\u8003\u751f\u7b54\u6848\uff1a

+ 3 - 1
stmms-web/src/main/webapp/static/i18n/messages_en.properties

@@ -17,7 +17,7 @@ user.reset.logout=Logout
 user.reset.title=Supplement personal information
 user.reset.name=press your name
 user.reset.password=press new password
-user.reset.again=press new password again
+user.reset.password.again=press new password again
 user.reset.name.length=length cannot exceed 10 words
 user.reset.password.same=please keep the same password twice
 user.reset.password.length=password must be at least 4 word,cannot exceed 8 words
@@ -91,6 +91,7 @@ mark.history.success=successful,score:
 mark.history.problem=submit problem successful 
 mark.history.loading=loading..
 mark.history.error=Unable to read the history at this time. Please try again later
+mark.history.number.error=please press number
 #mark-board
 mark.board.submit=submit
 mark.board.total.score=Score\uff1a
@@ -127,6 +128,7 @@ mark.warning.task.error=get task failed
 mark.warning.task.finish=marking task finished
 mark.warning.task.loading=task loading
 mark.warning.close=close
+mark.warning.success=submit success,score: 
 #json-view
 mark.json.loading=loading...
 mark.json.student.answer=student answer:

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

@@ -17,7 +17,7 @@ user.reset.logout=\u30ed\u30b0\u30a2\u30a6\u30c8
 user.reset.title=\u521d\u30ed\u30b0\u30a4\u30f3\u306a\u306e\u3067\uff0c\u8cc7\u6599\u3092\u5b8c\u5099\u3057\u3066\u4e0b\u3055\u3044
 user.reset.name=\u30e6\u30fc\u30b6\u30fc\u30cd\u30fc\u30e0\u3092\u5165\u529b\u4e0b\u3055\u3044
 user.reset.password=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u4e0b\u3055\u3044
-user.reset.again=\u518d\u3073\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u4e0b\u3055\u3044
+user.reset.password.again=\u518d\u3073\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u5165\u529b\u4e0b\u3055\u3044
 user.reset.name.length=\u9577\u3055\u306f8\u6841\u3092\u8d85\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093
 user.reset.password.same=\u30d1\u30b9\u30ef\u30fc\u30c9\u3092\u4e00\u81f4\u3057\u3066\u4e0b\u3055\u3044
 user.reset.password.length=\u30d1\u30b9\u30ef\u30fc\u30c9\u306e\u9577\u3055\u306f\uff14\u6841\u4ee5\u4e0a\u3001\uff18\u6841\u4ee5\u4e0b\u3068\u306a\u308a\u307e\u3059
@@ -91,6 +91,7 @@ mark.history.success=\u30ec\u30d3\u30e5\u30fc\u6210\u529f\uff0c\u7dcf\u5f97\u70b
 mark.history.problem=\u30ec\u30d3\u30e5\u30fc\u6210\u529f\uff0c\u554f\u984c\u7528\u7d19\u306e\u63d0\u51fa\u304c\u6210\u529f\u3057\u305f
 mark.history.loading=\u30ed\u30fc\u30c7\u30a3\u30f3\u30b0
 mark.history.error=\u63a1\u70b9\u306e\u8a18\u9332\u306f\u3057\u3070\u3089\u304f\u8aad\u3080\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\uff0c\u5f8c\u3067\u3084\u308a\u76f4\u3057\u3066\u4e0b\u3055\u3044
+mark.history.number.error=\u6570\u5b57\u3092\u5165\u529b\u3057\u3066\u4e0b\u3055\u3044
 #mark-board
 mark.board.submit=\u63d0\u51fa
 mark.board.total.score=\u7dcf\u5f97\u70b9
@@ -112,8 +113,6 @@ mark.board.interval.error=\u9593\u9694\u30b9\u30b3\u30a2\u306b\u5408\u308f\u306a
 mark.board.gt=\u5927\u306a\u308a
 mark.board.lt=\u5c0f\u306a\u308a
 mark.board.number.error=\u6570\u5b57\u3067\u306f\u3042\u308a\u307e\u305b\u3093
-mark.board.step.error=\u5fc5\u987b\u9009\u62e9\u4e00\u9898\u5206\u53d1\uff01
-mark.board.step.same=\u4e0d\u80fd\u91cd\u65b0\u5206\u53d1\u5230\u540c\u4e00\u9898\uff01
 #sheet-view
 mark.sheet=\u539f\u56f3
 mark.sheet.check=\u539f\u56f3\u306e\u5207\u308a\u66ff\u3048
@@ -129,6 +128,7 @@ mark.warning.task.error=\u30bf\u30b9\u30af\u306e\u53d6\u5f97\u304c\u5931\u6557\u
 mark.warning.task.finish=\u3059\u3079\u3066\u306e\u30bf\u30b9\u30af\u306f\u5b8c\u6210\u3057\u305f
 mark.warning.task.loading=\u30bf\u30b9\u30af\u30ed\u30fc\u30c7\u30a3\u30f3\u30b0
 mark.warning.close=\u30af\u30ed\u30fc\u30ba
+mark.warning.success=\u30ec\u30d3\u30e5\u30fc\u6210\u529f\u3001\u7dcf\u5f97\u70b9\uff1a
 #json-view
 mark.json.loading=\u30ed\u30fc\u30c7\u30a3\u30f3\u30b0
 mark.json.student.answer=\u53d7\u9a13\u751f\u306e\u7b54\u3048\uff1a

+ 3 - 1
stmms-web/src/main/webapp/static/i18n/messages_zh.properties

@@ -17,7 +17,7 @@ user.reset.logout=\u9000\u51fa
 user.reset.title=\u9996\u6b21\u767b\u9646\uff0c\u8bf7\u5b8c\u5584\u8d44\u6599
 user.reset.name=\u8f93\u5165\u7528\u6237\u540d
 user.reset.password=\u8f93\u5165\u65b0\u5bc6\u7801
-user.reset.again=\u518d\u6b21\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
@@ -91,6 +91,7 @@ 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
@@ -127,6 +128,7 @@ 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
 #json-view
 mark.json.loading=\u6b63\u5728\u52a0\u8f7d\u4e2d
 mark.json.student.answer=\u8003\u751f\u7b54\u6848\uff1a

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

@@ -140,7 +140,7 @@ MarkHistory.prototype.init = function() {
         var studentId = self.container.find('#studentId-in').val();
         var re = /^[1-9]+[0-9]*]*$/;
         if (!re.test(studentId)) {
-            alert("请输入数字");
+            alert(getMessage("mark.history.number.error"));
             return;
         }
         if (self.container.search.find('#history-isTag').prop("checked")) {