|
@@ -0,0 +1,416 @@
|
|
|
|
+<!DOCTYPE html>
|
|
|
|
+<html lang="zh-CN" xmlns:th="http://www.thymeleaf.org"
|
|
|
|
+ xmlns:layout="http://www.ultraq.net.nz/web/thymeleaf/layout"
|
|
|
|
+ layout:decorator="base">
|
|
|
|
+<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"/>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ <style>
|
|
|
|
+ body {
|
|
|
|
+ padding-right: 0px !important;
|
|
|
|
+ }
|
|
|
|
+ *.modal-open {
|
|
|
|
+ overflow-y: scroll;
|
|
|
|
+ padding-right: 0 !important;
|
|
|
|
+ }
|
|
|
|
+ .content {
|
|
|
|
+ padding-left: 45px;
|
|
|
|
+ padding-right: 45px;
|
|
|
|
+ }
|
|
|
|
+ .box {
|
|
|
|
+ margin-bottom: 50px;
|
|
|
|
+ }
|
|
|
|
+ .box-header button{
|
|
|
|
+ margin-right: 5px;
|
|
|
|
+ }
|
|
|
|
+ .table tr td {
|
|
|
|
+ padding-right: 10px;
|
|
|
|
+ padding-left: 10px;
|
|
|
|
+ border-top: 1px solid #f4f4f4;
|
|
|
|
+ border-right: 1px solid #f4f4f4;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ td .form-group {
|
|
|
|
+ margin-bottom: 0px;
|
|
|
|
+ }
|
|
|
|
+ </style>
|
|
|
|
+</head>
|
|
|
|
+<body>
|
|
|
|
+<div layout:fragment="mainbody">
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ <aside class="main-sidebar">
|
|
|
|
+ <section class="sidebar">
|
|
|
|
+ <div class="user-panel">
|
|
|
|
+ <div class="pull-left image">
|
|
|
|
+ <img src="/static/images/avatar/avatar-admin.jpg" class="img-circle" alt="User Image" />
|
|
|
|
+ </div>
|
|
|
|
+ <div class="pull-left info">
|
|
|
|
+ <p>Admin</p>
|
|
|
|
+ <a href="#">
|
|
|
|
+ <i class="fa fa-circle text-success"></i>
|
|
|
|
+ Online
|
|
|
|
+ </a>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <!-- Search form -->
|
|
|
|
+ <form action="#" method="get" class="sidebar-form">
|
|
|
|
+ <div class="input-group">
|
|
|
|
+ <input type="text" name="q" class="form-control" placeholder="Search..." />
|
|
|
|
+ <span class="input-group-btn">
|
|
|
|
+ <button type="submit" name="search" id="search-btn" class="btn btn-flat">
|
|
|
|
+ <i class="fa fa-search"></i>
|
|
|
|
+ </button>
|
|
|
|
+ </span>
|
|
|
|
+ </div>
|
|
|
|
+ </form>
|
|
|
|
+
|
|
|
|
+ <!-- Sidebar Menu -->
|
|
|
|
+ <ul class="sidebar-menu tree" data-widget="tree">
|
|
|
|
+ <li>
|
|
|
|
+ <a href="/addPaper">
|
|
|
|
+ <i class="glyphicon glyphicon-pencil"></i>
|
|
|
|
+ <span>
|
|
|
|
+ 新建试卷
|
|
|
|
+ </span>
|
|
|
|
+ </a>
|
|
|
|
+ </li>
|
|
|
|
+
|
|
|
|
+ <li>
|
|
|
|
+ <a href="/papers">
|
|
|
|
+ <i class="glyphicon glyphicon-tasks"></i>
|
|
|
|
+ <span>
|
|
|
|
+ 试卷列表
|
|
|
|
+ </span>
|
|
|
|
+ </a>
|
|
|
|
+ </li>
|
|
|
|
+ <li>
|
|
|
|
+ <a href="/review/jobs">
|
|
|
|
+ <i class="glyphicon glyphicon-tasks"></i>
|
|
|
|
+ <span>
|
|
|
|
+ JOB列表
|
|
|
|
+ </span>
|
|
|
|
+ </a>
|
|
|
|
+ </li>
|
|
|
|
+
|
|
|
|
+ </ul>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ </section>
|
|
|
|
+ </aside>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ <div class="content-wrapper">
|
|
|
|
+ <!-- Content Header (Page header) -->
|
|
|
|
+ <section class="content-header">
|
|
|
|
+ <h1>
|
|
|
|
+ 新建众审任务
|
|
|
|
+ <small>众包审核</small>
|
|
|
|
+ </h1>
|
|
|
|
+ <ol class="breadcrumb">
|
|
|
|
+ <li><a href="/home"><i class="fa fa-dashboard"></i> 主页</a></li>
|
|
|
|
+ <li><a href="/addTask">新建试卷</a></li>
|
|
|
|
+ </ol>
|
|
|
|
+ </section>
|
|
|
|
+
|
|
|
|
+ <!-- Main content -->
|
|
|
|
+ <section class="content" id="maincontent">
|
|
|
|
+
|
|
|
|
+ <div class="box box-primary" >
|
|
|
|
+ <div class="box-header with-border">
|
|
|
|
+ <h3 class="box-title">基本信息</h3>
|
|
|
|
+ </div>
|
|
|
|
+
|
|
|
|
+ <div class="box-body">
|
|
|
|
+ <form id="form" action="/excelToMongo" class="form-horizontal" method="post" enctype="multipart/form-data">
|
|
|
|
+ <!-- text input -->
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="col-sm-2 control-label">名称</label>
|
|
|
|
+ <div class="col-sm-10">
|
|
|
|
+ <input type="text" class="form-control" id="name" name="name" onblur="checkName()" />
|
|
|
|
+ <span name="name_span" style="color: #ff0000"></span>
|
|
|
|
+ </div>
|
|
|
|
+ </div>
|
|
|
|
+ <div class="form-group">
|
|
|
|
+ <label class="col-sm-2 control-label">导入Bug文件</label>
|
|
|
|
+ <div class="col-sm-10">
|
|
|
|
+ <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>
|
|
|
|
+ <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">×</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">×</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">×</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>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+</body>
|
|
|
|
+</html>
|
|
|
|
+
|
|
|
|
+<script src="/static/AdminLTE/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
|
|
|
|
+<script src="/static/AdminLTE/bower_components/datatables.net/js/jquery.dataTables.min.js"></script>
|
|
|
|
+<script src="/static/AdminLTE/bower_components/datatables.net-bs/js/dataTables.bootstrap.min.js"></script>
|
|
|
|
+<script src="/static/AdminLTE/bower_components/select2/dist/js/select2.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>
|
|
|
|
+<!-- AdminLTE App -->
|
|
|
|
+<!--<script src="/static/AdminLTE/dist/js/adminlte.min.js"></script>-->
|
|
|
|
+<!-- AdminLTE for demo purposes -->
|
|
|
|
+<script src="/static/AdminLTE/dist/js/demo.js"></script>
|
|
|
|
+<!-- add Task js for this file only -->
|
|
|
|
+<script src="/static/js/add_paper.js"></script>
|
|
|
|
+<script src="/static/AdminLTE/bower_components/bootstrap-notify/dist/bootstrap-notify.min.js"></script>
|
|
|
|
+<script type="text/javascript" src="http://www.jq22.com/demo/clipboard.js-master201703170013/dist/clipboard.min.js"></script>
|
|
|
|
+
|
|
|
|
+<script type="text/javascript" xmlns:th="http://www.thymeleaf.org" th:inline="javascript">
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ var ruleId ;
|
|
|
|
+ var ratioIndex;
|
|
|
|
+ /*<![CDATA[*/
|
|
|
|
+ var reportHost = [[${reportHost}]]
|
|
|
|
+ /*]]>*/
|
|
|
|
+
|
|
|
|
+ var name_flag = false;
|
|
|
|
+ var file_flag = false;
|
|
|
|
+
|
|
|
|
+ $(document).ready(function(){
|
|
|
|
+ $('[data-toggle="tooltip"]').tooltip();
|
|
|
|
+ //Initialize Select2 Elements
|
|
|
|
+ $('.select2').select2()
|
|
|
|
+ ruleId = 0;
|
|
|
|
+ ratioIndex =0 ;
|
|
|
|
+ var taskListTable = $('#task-list').DataTable({
|
|
|
|
+ searching: true,
|
|
|
|
+ pageLength: 25
|
|
|
|
+ });
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ 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_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])
|
|
|
|
+ $.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>
|