Bläddra i källkod

导入任务等页面整合

insomniaLee 4 år sedan
förälder
incheckning
d292c6c28f

+ 46 - 0
src/main/java/com/mooctest/controller/DataImportController.java

@@ -0,0 +1,46 @@
+package com.mooctest.controller;
+
+import com.mooctest.service.TaskService;
+import com.mooctest.util.ImportDataMap;
+import lombok.AllArgsConstructor;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.ui.Model;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.multipart.MultipartFile;
+
+@Controller
+public class DataImportController {
+
+    @Autowired
+    TaskService  taskService;
+
+    @GetMapping("/importTask")
+    public String importTask(Model model){
+        return "importTask";
+    }
+
+    @GetMapping("/importData")
+    public String importTask2(Model model){
+        model.addAttribute("type_map", ImportDataMap.typeMap);
+        return "data_import";
+    }
+
+    @PostMapping("/importTask")
+    @ResponseBody
+    public String importTask2(@RequestParam("number")String number, @RequestParam("number")String originId,
+                              @RequestParam("zipFile") MultipartFile zipFile, @RequestParam("jsonFile") MultipartFile jsonFile){
+        return taskService.importTask(number, originId, zipFile, jsonFile)?"success":"导入失败";
+    }
+
+
+    @PostMapping("/exportTask")
+    @ResponseBody
+    public String exportTask(@RequestParam("caseId") String caseId) {
+
+        return taskService.exportTask(caseId) ? "success" : "导出失败";
+    }
+}

+ 2 - 3
src/main/java/com/mooctest/controller/PaperController.java

@@ -29,8 +29,7 @@ public class PaperController {
     @Autowired
     ExcelInputService excelInputService;
 
-    @Autowired
-    ImportDataMap importDataMap;
+
 
     private String ITEM_GROUP_NAME = "item_group_list";
 
@@ -43,7 +42,7 @@ public class PaperController {
 
     @GetMapping("/addExcel")
     public String addExcel (Model model){
-        model.addAttribute("type_map", importDataMap.typeMap);
+        model.addAttribute("type_map", ImportDataMap.typeMap);
         return "add_excel_pro";
     }
 

+ 2 - 19
src/main/java/com/mooctest/controller/TaskController.java

@@ -9,6 +9,7 @@ import com.mooctest.model.BugData;
 import com.mooctest.model.MasterReport;
 import com.mooctest.model.Task;
 import com.mooctest.service.*;
+import com.mooctest.util.ImportDataMap;
 import com.mooctest.util.ReportUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -180,10 +181,7 @@ public class TaskController {
         return "addCrowdTask";
     }
 
-    @GetMapping("/importTask")
-    public String importTask(Model model){
-        return "importTask";
-    }
+
 
     @PostMapping("/addCrowdTask")
     @ResponseBody
@@ -191,23 +189,8 @@ public class TaskController {
                                         @RequestParam("time")String time, @RequestParam("type")String type,
                                         @RequestParam("os")String os, @RequestParam("threePage") MultipartFile threePage,
                                         Model model){
-
         return taskService.addCrowdTask(name, description, time, type, os, threePage);
     }
 
-    @PostMapping("/importTask")
-    @ResponseBody
-    public String importTask2(@RequestParam("number")String number,@RequestParam("number")String originId,
-                              @RequestParam("zipFile") MultipartFile zipFile,@RequestParam("jsonFile") MultipartFile jsonFile){
-        
 
-        return taskService.importTask(number, originId, zipFile, jsonFile)?"success":"导出失败";
-    }
-
-    @PostMapping("/exportTask")
-    @ResponseBody
-    public String exportTask(@RequestParam("caseId") String caseId) {
-
-        return taskService.exportTask(caseId) ? "success" : "导出失败";
-    }
 }

+ 1 - 3
src/main/java/com/mooctest/service/ExcelInputService.java

@@ -34,8 +34,6 @@ public class ExcelInputService {
     @Autowired
     ExtendBugDao extendBugDao;
 
-    @Autowired
-    ImportDataMap importDataMap;
 
     // 接收前端文件,并将MultipartFile文件转换成File文件,并返回文件路径
     public String saveMultipartFile(MultipartFile file, String fileSaveName){
@@ -84,7 +82,7 @@ public class ExcelInputService {
         Task task = new Task(task_id, case_id, task_name);
         taskDao.save(task);
         Map<String, Boolean> insert_map = new HashMap<>();
-        Map<String, String> typeMap = importDataMap.data.get(comeFrom);
+        Map<String, String> typeMap = ImportDataMap.data.get(comeFrom);
         String appTitle = typeMap.get("title");
         String appBugCategor =  typeMap.get("bug_category");
         String appSeverity =  typeMap.get("severity");

+ 1 - 1
src/main/java/com/mooctest/util/ImportDataMap.java

@@ -6,7 +6,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 
-@Component
+
 public class ImportDataMap{
 
     public static Map<String,String> typeMap = new HashMap<>();

+ 1 - 80
src/main/resources/templates/add_excel_pro.html

@@ -141,93 +141,17 @@
                                 <span name="file_span" style="color: #ff0000"></span>
                             </div>
                         </div>
-
-
                         <span id="submit_span"></span>
                         <input class="btn btn-success pull-right" type="button" value="提交" id="submit_file" onmousemove="checkSubmit()" onclick="check_success()">
                     </form>
                 </div>
             </div>
-
-
-
-
         </section>
-
     </div>
 
 
-    <div class="modal fade" id="modal-default">
-        <div class="modal-dialog">
-            <div class="modal-content">
-                <div class="modal-header">
-                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                        <span aria-hidden="true">&times;</span></button>
-                    <h4 class="modal-title">预览</h4>
-                </div>
-                <div class="modal-body" id="modalBody">
-                    <form class="form-horizontal" id="formBody">
 
-                    </form>
 
-                </div>
-                <div class="modal-footer">
-                    <button type="button" class="btn btn-default pull-left" data-dismiss="modal">关闭</button>
-                    <!--                    <button type="button" class="btn btn-primary"></button>-->
-                </div>
-            </div>
-        </div>
-    </div>
-
-    <div class="modal fade" id="modal-alert">
-        <div class="modal-dialog">
-            <div class="modal-content">
-                <div class="modal-header">
-                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                        <span aria-hidden="true">&times;</span></button>
-                    <h4 class="modal-title">预览</h4>
-                </div>
-                <div class="modal-body" id="modalAlertBody">
-                    <form class="form-horizontal" id="formAlertBody">
-
-                    </form>
-
-                </div>
-                <div class="modal-footer">
-                    <button type="button" class="btn btn-default pull-left" data-dismiss="modal">关闭</button>
-                </div>
-            </div>
-        </div>
-    </div>
-
-
-
-
-    <div class="modal fade" id="modal-reload">
-        <div class="modal-dialog">
-            <div class="modal-content">
-                <div class="modal-header">
-                    <button type="button" class="close" data-dismiss="modal" aria-label="Close">
-                        <span aria-hidden="true">&times;</span></button>
-                    <h4 class="modal-title">从已有任务加载数据</h4>
-                </div>
-                <div class="modal-body" >
-                    <form class="form-horizontal" >
-                        <div class="form-group">
-                            <label class="col-sm-2 control-label">JobId</label>
-                            <div class="col-sm-10">
-                                <input  onchange="checkNull(event)" class="form-control" id="jobid" placeholder="请输入任务名称"/>
-                            </div>
-                        </div>
-                    </form>
-                </div>
-                <div class="modal-footer">
-                    <button type="button" class="btn btn-default pull-left" data-dismiss="modal">关闭</button>
-                    <button type="button" class="btn btn-primary" onclick="reloadJob()">确认</button>
-                </div>
-            </div>
-        </div>
-    </div>
 </div>
 
 
@@ -288,10 +212,7 @@
         $('.select2').select2()
         ruleId = 0;
         ratioIndex =0 ;
-        var taskListTable = $('#task-list').DataTable({
-            searching: true,
-            pageLength: 25
-        });
+
     });
 
 

+ 1 - 1
src/main/resources/templates/base.html

@@ -48,7 +48,7 @@
         <!-- Logo -->
         <a href="/home" class="logo">
             <span class="logo-lg">
-                    <b>众包审核</b>
+                    <b>慕测信创众包后台</b>
                 </span>
         </a>
         <nav class="navbar navbar-static-top">

+ 349 - 0
src/main/resources/templates/data_import.html

@@ -0,0 +1,349 @@
+<!DOCTYPE html>
+<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org"
+      xmlns:layout="http://www.ultraq.net.nz/web/thymeleaf/layout"
+      layout:decorator="main">
+<head>
+    <link rel="stylesheet" href="/static/css/applications.css" type="text/css"/>
+    <!-- dataTables -->
+    <link rel="stylesheet" type="text/css"
+          href="/static/AdminLTE/bower_components/datatables.net-bs/css/dataTables.bootstrap.min.css"/>
+    <!-- Font Awesome -->
+    <link rel="stylesheet" href="/static/AdminLTE/bower_components/font-awesome/css/font-awesome.min.css"/>
+    <!-- Ionicons -->
+    <link rel="stylesheet" href="/static/AdminLTE/bower_components/Ionicons/css/ionicons.min.css"/>
+    <!-- daterange picker -->
+    <link rel="stylesheet" href="/static/AdminLTE/bower_components/bootstrap-daterangepicker/daterangepicker.css"/>
+    <!-- bootstrap datepicker -->
+    <link rel="stylesheet" href="/static/AdminLTE/bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css"/>
+    <!-- iCheck for checkboxes and radio inputs -->
+    <link rel="stylesheet" href="/static/AdminLTE/plugins/iCheck/all.css"/>
+    <!-- Bootstrap time Picker -->
+    <link rel="stylesheet" href="/static/AdminLTE/plugins/timepicker/bootstrap-timepicker.min.css"/>
+    <!-- Select2 -->
+    <link rel="stylesheet" type="text/css" href="/static/AdminLTE/bower_components/select2/dist/css/select2.min.css"/>
+    <!-- Theme style -->
+    <link rel="stylesheet" href="/static/AdminLTE/dist/css/AdminLTE.min.css"/>
+    <!-- AdminLTE Skins. Choose a skin from the css/skins
+         folder instead of downloading all of them to reduce the load. -->
+    <link rel="stylesheet" href="/static/AdminLTE/dist/css/skins/_all-skins.min.css"/>
+</head>
+<body>
+<th:block layout:fragment="sidebar">
+    <li th:replace="/home::mainSidebar">
+</th:block>
+
+
+
+
+<th:block layout:fragment="maincontent">
+    <section class="content-header">
+        <ul id="myTab" class="nav nav-tabs">
+            <li class="active">
+                <a href="#otherReport" data-toggle="tab">导入第三方报告</a>
+            </li>
+            <li>
+                <a href="#selfReport" data-toggle="tab">导入本系统报告</a>
+            </li>
+        </ul>
+        <ol class="breadcrumb">
+            <li><a href="/home"><i class="fa fa-dashboard"></i> 主页</a></li>
+            <li><a href="/importTask">导入众测任务</a></li>
+        </ol>
+    </section>
+
+    <div id="myTabContent" class="tab-content">
+        <div class="content tab-pane fade in active" id="otherReport">
+            <row>
+                <div  class = col-sm-6>
+                    <div class="box box-primary" >
+                        <div class="box-header with-border">
+                            <h3 class="box-title">基本信息</h3>
+                            <input class="btn btn-success pull-right" type="button" value="提交" id="submit_file" onmousemove="checkSubmit()" onclick="check_success()">
+
+                        </div>
+
+                        <div class="box-body" >
+                            <form id="form" action="/add_excel_pro" class="form-horizontal"  method="post" enctype="multipart/form-data">
+                                <!-- text input -->
+
+                                <div class="form-group">
+                                    <label class="col-sm-3 control-label">名称</label>
+                                    <div class="col-sm-9">
+                                        <input type="text" class="form-control" id="name" name="name" style="width: 35%" onblur="checkName()" />
+                                        <span name="name_span" style="color: #ff0000"></span>
+                                    </div>
+                                </div>
+
+                                <div class="form-group">
+                                    <label class="col-sm-3 control-label">文件来源</label>
+                                    <div class="col-sm-9">
+                                        <select id="come" class="form-control" style="width: 35%">
+                                            <option th:each="mapItem : ${type_map}"
+                                                    th:value="${mapItem.key}" th:text="${mapItem.value}"></option>
+                                        </select>
+                                    </div>
+                                </div>
+
+                                <div class="form-group">
+                                    <label   class="col-sm-3 control-label">导入Bug文件</label>
+                                    <div class="col-sm-9">
+                                        <a  href="http://crowdtest-data.oss-cn-hangzhou.aliyuncs.com/%E6%A8%A1%E6%9D%BF%E6%96%87%E4%BB%B6.xls">文件模板</a>
+                                        <input  type="file"  id="excel_file" name="excelFile" onchange="checkFile()" />
+                                        <span name="file_span" style="color: #ff0000"></span>
+                                    </div>
+                                </div>
+<!--                                <span id="submit_span"></span>-->
+                                </form>
+                        </div>
+                    </div>
+                </div>
+            </row>
+        </div>
+        <div class="content tab-pane fade  " id="selfReport">
+            <row>
+                <div  class = col-sm-6>
+                    <div class="box box-primary" >
+                        <div class="box-header with-border">
+                            <h3 class="box-title">基本信息</h3>
+                            <button class="btn btn-success pull-right" onclick="importTask()">
+                                导入
+                            </button>
+                        </div>
+                        <!-- /.box-header -->
+                        <div class="box-body">
+                            <form class="form-horizontal">
+                                <!-- text input -->
+                                <div class="form-group">
+                                    <label class="col-sm-3 control-label">单位序列号</label>
+                                    <div class="col-sm-9">
+                                        <input  onchange="checkNull(event)" class="form-control" id="number" placeholder="请输入单位名称"/>
+                                    </div>
+                                </div>
+                                <!-- text input -->
+                                <div class="form-group">
+                                    <label class="col-sm-3 control-label">原始任务id</label>
+                                    <div class="col-sm-9">
+                                        <input  onchange="checkNull(event)" class="form-control" id="originId" placeholder="请输入原始任务id"/>
+                                    </div>
+                                </div>
+
+
+                                <div class="form-group">
+                                    <label for="zipFile" class="col-sm-3 control-label">导入zip文件</label>
+                                    <div class="col-sm-9">
+                                        <input  type="file" id="zipFile"/>
+                                        <!--                               <p class="help-block">Example block-level help text here.</p>-->
+                                    </div>
+                                </div>
+                                <div class="form-group">
+                                    <label for="jsonFile" class="col-sm-3 control-label">导入json文件</label>
+                                    <div class="col-sm-9">
+                                        <input  type="file" id="jsonFile"/>
+                                        <!--                               <p class="help-block">Example block-level help text here.</p>-->
+                                    </div>
+                                </div>
+                            </form>
+                        </div>
+                    </div>
+                </div>
+            </row>
+        </div>
+    </div>
+
+
+
+</th:block>
+</body>
+</html>
+<!-- jQuery 3 -->
+<!--<script src="/static/AdminLTE/bower_components/jquery/dist/jquery.min.js"></script>-->
+<!-- Bootstrap 3.3.7 -->
+<script src="/static/AdminLTE/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
+<!-- InputMask -->
+<script src="/static/AdminLTE/plugins/input-mask/jquery.inputmask.js"></script>
+<script src="/static/AdminLTE/plugins/input-mask/jquery.inputmask.date.extensions.js"></script>
+<script src="/static/AdminLTE/plugins/input-mask/jquery.inputmask.extensions.js"></script>
+<!-- date-range-picker -->
+<script src="/static/AdminLTE/bower_components/moment/min/moment.min.js"></script>
+<script src="/static/AdminLTE/bower_components/bootstrap-daterangepicker/daterangepicker.js"></script>
+<!-- bootstrap datepicker -->
+<script src="/static/AdminLTE/bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js"></script>
+<!-- bootstrap time picker -->
+<script src="/static/AdminLTE/plugins/timepicker/bootstrap-timepicker.min.js"></script>
+<!-- SlimScroll -->
+<script src="/static/AdminLTE/bower_components/jquery-slimscroll/jquery.slimscroll.min.js"></script>
+<!-- iCheck 1.0.1 -->
+<script src="/static/AdminLTE/plugins/iCheck/icheck.min.js"></script>
+<!-- FastClick -->
+<script src="/static/AdminLTE/bower_components/fastclick/lib/fastclick.js"></script>
+
+<script src="/static/AdminLTE/bower_components/bootstrap-notify/dist/bootstrap-notify.min.js"></script>
+<!--<script src="/static/js/app_info.js"></script>-->
+<script type="text/javascript">
+    $(document).ready(function(){
+        $('#crowdSidebar').addClass('active');
+        $('#crowdSidebarMenu-importData').addClass('active');
+    });
+
+
+
+    importTask = function(){
+        var data = new FormData();
+        data.append('number',$('#number').val());
+        data.append('originId',$('#originId').val());
+        data.append("zipFile",document.getElementById('zipFile').files[0])
+        data.append("jsonFile",document.getElementById('jsonFile').files[0])
+        $.ajax({
+            url: '/importTask',
+            data:data,
+            type: 'POST',
+            processData: false,
+            contentType: false,
+            success: function (result) {
+
+                if(result != 'success'){
+                    $.notify({
+                        message: result
+                    },{
+                        // settings
+                        delay: 100,
+                        timer: 1000,
+                        type: 'error'
+                    });
+                }else {
+                    $.notify({
+                        message: '导入成功'
+                    },{
+                        // settings
+                        delay: 100,
+                        timer: 3000,
+                        type: 'success'
+                    });
+                }
+            }
+        });
+    }
+
+
+    checkNull = function (event) {
+        var num = event.target.value;
+        console.log(num)
+        if(num!=null&&num.length!=0){
+            console.log(event.target.parentElement.parentElement)
+            event.target.parentElement.parentElement.setAttribute("class","form-group has-success")
+            if(event.target.nextSibling!=null){
+                event.target.nextSibling.remove();
+            }
+        }else{
+            var newNode = document.createElement("span");
+            newNode.setAttribute("class","help-block")
+            newNode.innerHTML =" 请填写 ";
+            if(event.target.nextSibling==null){
+                event.target.parentNode.insertBefore(newNode,event.target.nextSibling)
+            }
+            event.target.parentElement.parentElement.setAttribute("class","form-group has-error")
+        }
+    }
+
+
+    function checkFile() {
+        var fileName = document.getElementsByName("excelFile")[0].value;
+        console.info(fileName)
+        var index = fileName.lastIndexOf(".");
+        var file_type = fileName.substr(index+1);
+        var file_span = document.getElementsByName("file_span")[0];
+
+        var file = document.getElementById("excel_file").files[0];
+        var file_size=file.size;//文件的字节数
+
+
+        if(file_type != "xls" && file_type != "xlsx" && file_type != "csv"){
+            file_span.innerText="文件类型错误,请导入excel文件";
+            file_flag = false;
+        }else {
+            file_span.innerText="";
+            if(file_size > 1048576){
+                file_span.innerText="文件大小超过1M,请上传小于1M文件";
+                file_flag = false;
+            }else {
+                file_span.innerText="";
+                file_flag = true;
+            }
+        }
+
+        checkSubmit();
+    }
+
+    function checkSubmit() {
+        var submit_button = document.getElementById("submit_file");
+        if(name_flag && file_flag){
+            submit_button.removeAttribute("disabled");
+        }else{
+            submit_button.setAttribute("disabled", true);
+        }
+
+    }
+
+    function checkName() {
+        var name = document.getElementsByName("name")[0].value;
+        var name_span = document.getElementsByName("name_span")[0];
+        if(name == null || name == "" || name.trim().length == 0){
+            name_span.innerText= "输入字段不能为空";
+            name_flag = false;
+        }else{
+            name_span.innerText= "";
+            name_flag = true;
+        }
+        checkSubmit();
+    }
+
+    function check_success(){
+        var params = new FormData();
+        params.append("name",$("#name").val())
+        params.append("excelFile",document.getElementById('excel_file').files[0])
+        params.append("come",$("#come").val());
+        $.ajax({
+            type:"post",
+            url:"/add_excel_pro",
+            processData: false,
+            contentType: false,
+            data:params,
+            dataType:'json',
+            success:function(result){
+                console.info(result);
+                if(result["file_is_null"] == false && result["insert_success"] == true){
+                    $.notify({
+                        message: '导入成功'
+                    },{
+                        // settings
+                        delay: 100,
+                        timer: 1000,
+                        type: 'success'
+                    });
+                }else{
+                    $.notify({
+                        message: '导入失败,请按文件模板样式导入文件'
+                    },{
+                        // settings
+                        delay: 100,
+                        timer: 1000,
+                        type: 'danger'
+                    });
+                }
+
+
+            },
+            error:function(data){
+                $.notify({
+                    message: '网络错误'
+                },{
+                    // settings
+                    delay: 100,
+                    timer: 1000,
+                    type: 'warning'
+                });
+            }
+        })
+    }
+
+</script>

+ 4 - 9
src/main/resources/templates/home.html

@@ -46,17 +46,12 @@
                         </li>
                         <li id="crowdSidebarMenu-addCrowdTask">
                             <a href="/addCrowdTask">
-                                <i class="fa fa-plus"></i>新建众测任务
+                                <i class="fa fa-plus"></i>新建任务
                             </a>
                         </li>
-                        <li id="crowdSidebarMenu-addExcel">
-                            <a href="/addExcel">
-                                <i class="fa fa-file-excel-o"></i>导入第三方项目
-                            </a>
-                        </li>
-                        <li id="crowdSidebarMenu-importTask">
-                            <a href="/importTask">
-                                <i class="fa  fa-object-ungroup"></i>导入任务
+                        <li id="crowdSidebarMenu-importData">
+                            <a href="/importData">
+                                <i class="fa fa-file-excel-o"></i>数据导入
                             </a>
                         </li>
                     </ul>

+ 3 - 8
src/main/resources/templates/task_detail.html

@@ -109,14 +109,9 @@
                     <i class="fa fa-plus"></i>新建众测任务
                 </a>
             </li>
-            <li id="crowdSidebarMenu-addExcel">
-                <a href="/addExcel">
-                    <i class="fa fa-file-excel-o"></i>导入第三方项目
-                </a>
-            </li>
-            <li id="crowdSidebarMenu-importTask">
-                <a href="/importTask">
-                    <i class="fa  fa-object-ungroup"></i>导入任务
+            <li id="crowdSidebarMenu-importData">
+                <a href="/importData">
+                    <i class="fa fa-file-excel-o"></i>数据导入
                 </a>
             </li>
         </ul>