|
@@ -0,0 +1,464 @@
|
|
|
+{{include "com/inc.html"}}
|
|
|
+<!-- Main Header -->
|
|
|
+{{include "com/header.html"}}
|
|
|
+<!-- Left side column. 权限菜单 -->
|
|
|
+{{include "com/menu.html"}}
|
|
|
+<div class="content-wrapper">
|
|
|
+ <section class="content-header">
|
|
|
+ <h1>
|
|
|
+ <small></small>
|
|
|
+ </h1>
|
|
|
+ <ol class="breadcrumb">
|
|
|
+ <li><a href="#"><i class="fa fa-dashboard"></i> 任务列表</a></li>
|
|
|
+ </ol>
|
|
|
+ </section>
|
|
|
+ <!-- Main content -->
|
|
|
+ <section class="content">
|
|
|
+ <div class="row">
|
|
|
+ <div class="col-xs-12">
|
|
|
+ <div class="box">
|
|
|
+ <div class="box-body">
|
|
|
+
|
|
|
+ <div class="form-horizontal">
|
|
|
+ <div class="box-body margin">
|
|
|
+ <h3><i class="glyphicon glyphicon-exclamation-sign" style="margin-right: 6px"></i>数据情况
|
|
|
+ </h3>
|
|
|
+ <div class="form-group" style="margin-left: 15px">
|
|
|
+ <span class="form-inline panel-body">分发总量/数据总量(条):
|
|
|
+ <input type="text" class="form-control" readonly value="{{.T.allNoGiveDataNum}}/{{.T.allGiveDataNum}}">
|
|
|
+ </span>
|
|
|
+ </div>
|
|
|
+ <div class="form-group" style="margin-left: 10px">
|
|
|
+ <div class="col-xs-6" style="width: auto">
|
|
|
+ <label class="form-inline">数据总量:
|
|
|
+ <input type="text" class="form-control" style="width: 80px" readonly value="{{.T.allGiveDataNum}}"></label>
|
|
|
+ <label class="form-inline" style="margin-left: 20px">已分发:
|
|
|
+ <input type="text" class="form-control" style="width: 80px" readonly value="0"></label>
|
|
|
+ <label class="form-inline" style="margin-left: 20px">待分发:
|
|
|
+ <input type="text" class="form-control" style="width: 80px" readonly value="0"></label>
|
|
|
+ <label class="form-inline" style="margin-left: 20px">已标注:
|
|
|
+ <input type="text" class="form-control" style="width: 80px" readonly value="0"></label>
|
|
|
+ </div>
|
|
|
+ <div class="col-xs-6 form-group">
|
|
|
+ <label class="form-inline">操作:
|
|
|
+ <input type="button" class="btn btn-info" onclick="dispatchTak('0')" value="分发">
|
|
|
+ <input type="button" class="btn btn-primary" value="质检">
|
|
|
+ <input type="button" class="btn btn-success" value="质检结果">
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <hr>
|
|
|
+ <div class="form-horizontal">
|
|
|
+ <div class="box-body margin">
|
|
|
+ <h3><i class="glyphicon glyphicon-tasks" style="margin-right: 6px"></i>数据清洗任务列表
|
|
|
+ </h3>
|
|
|
+
|
|
|
+ <table id="dataTable" class="table table-bordered table-hover">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th></th>
|
|
|
+ <th>用户账号</th>
|
|
|
+ <th>项目名称</th>
|
|
|
+ <th>数据量</th>
|
|
|
+ <th>任务状态</th>
|
|
|
+ <th>完成进度</th>
|
|
|
+ <th>开始时间</th>
|
|
|
+ <th>完成时间</th>
|
|
|
+ <th>操作</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!-- /.box-body -->
|
|
|
+ </div>
|
|
|
+ <!-- /.box -->
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </section>
|
|
|
+</div>
|
|
|
+
|
|
|
+
|
|
|
+<div class="modal fade" id="modal-create-project" tabindex="-1" role="dialog" aria-hidden="true">
|
|
|
+ <div class="modal-dialog" style="width: 30%">
|
|
|
+ <div class="modal-content">
|
|
|
+ <div class="modal-header">
|
|
|
+ <div class="modal-header">
|
|
|
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
|
+ <div class="edit-info">
|
|
|
+ <span class="glyphicon glyphicon-alert" aria-hidden="true"></span>
|
|
|
+ <span class="h4">新建项目</span>
|
|
|
+ </div>
|
|
|
+ <div class="edit-form">
|
|
|
+ <hr>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="radio-inline">
|
|
|
+ <input type="radio" name="stype" value="coll" checked>数据库导入
|
|
|
+ </label>
|
|
|
+ <label class="radio-inline">
|
|
|
+ <input type="radio" name="stype" value="excel">Excel表导入
|
|
|
+ </label>
|
|
|
+ </div>
|
|
|
+ <form id="model-form-project" class="form-horizontal" enctype="multipart/form-data">
|
|
|
+ <div class="box-body">
|
|
|
+ <div class="form-group margin-bottom">
|
|
|
+ <label class="col-sm-3 control-label"><span style="color:red;">* </span>项目名称</label>
|
|
|
+ <div class="col-sm-5">
|
|
|
+ <input type="text" class="form-control" id="project-name" placeholder="项目名称">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div id="import-coll">
|
|
|
+ <h5><i class="glyphicon glyphicon-bookmark"
|
|
|
+ style="color: #00c4ff;margin-right: 6px"></i>数据来源</h5>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label"><span
|
|
|
+ style="color:red;">* </span>数据库名</label>
|
|
|
+ <div class="col-sm-5">
|
|
|
+ <input type="text" class="form-control" id="db-name" value="jyqyfw"
|
|
|
+ readonly>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label"><span
|
|
|
+ style="color:red;">* </span>数据表名</label>
|
|
|
+ <div class="col-sm-5">
|
|
|
+ <input type="text" class="form-control" id="coll-name"
|
|
|
+ value="usermail_history" readonly>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label"><span
|
|
|
+ style="color:red;">* </span>数据导出ID</label>
|
|
|
+ <div class="col-sm-6">
|
|
|
+ <input type="text" class="form-control" id="data-id" placeholder="数据导出ID">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div id="import-excel" style="display: none">
|
|
|
+ <h5><i class="glyphicon glyphicon-bookmark"
|
|
|
+ style="color: #00c4ff;margin-right: 6px"></i>数据信息</h5>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label"><span
|
|
|
+ style="color:red;">* </span>公司名称</label>
|
|
|
+ <div class="col-sm-6">
|
|
|
+ <input type="text" class="form-control" id="company-name"
|
|
|
+ placeholder="公司名称">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label">部门名称</label>
|
|
|
+ <div class="col-sm-6">
|
|
|
+ <input type="text" class="form-control" id="dpart-name" placeholder="部门名称">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label">规则名称</label>
|
|
|
+ <div class="col-sm-6">
|
|
|
+ <input type="text" class="form-control" id="rule-name" placeholder="规则名称">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label">选择文件</label>
|
|
|
+ <div class="col-sm-6">
|
|
|
+ <input type="file" name="file" id="uploadfile">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <h5><i class="glyphicon glyphicon-bookmark"
|
|
|
+ style="color: #00c4ff;margin-right: 6px"></i>数据存储</h5>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label"><span style="color:red;">* </span>数据库名</label>
|
|
|
+ <div class="col-sm-6">
|
|
|
+ <input type="text" class="form-control" value="jyqykhfw" readonly>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label"><span style="color:red;">* </span>数据表名</label>
|
|
|
+ <div class="col-sm-6">
|
|
|
+ <input type="text" class="form-control" id="coll-save-name" placeholder="数据表名">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="modal-footer">
|
|
|
+ <input type="button" onclick="importData()" class="btn btn-primary" value="导入">
|
|
|
+ <input type="button" onclick="cancelModel()" class="btn btn-default" value="取消">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div><!-- /.modal -->
|
|
|
+</div>
|
|
|
+
|
|
|
+
|
|
|
+<div class="modal fade" id="modal-edit-project" tabindex="-1" role="dialog" aria-hidden="true">
|
|
|
+ <div class="modal-dialog" style="width: 30%">
|
|
|
+ <div class="modal-content">
|
|
|
+ <div class="modal-header">
|
|
|
+ <div class="modal-header">
|
|
|
+ <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
|
|
|
+ <div class="edit-info">
|
|
|
+ <span class="glyphicon glyphicon-alert" aria-hidden="true"></span>
|
|
|
+ <span class="h4">编辑项目</span>
|
|
|
+ </div>
|
|
|
+ <div class="edit-form">
|
|
|
+ <hr>
|
|
|
+ <form class="form-horizontal" enctype="multipart/form-data">
|
|
|
+ <div class="box-body">
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label">公司名称</label>
|
|
|
+ <div class="col-sm-5">
|
|
|
+ <input type="text" class="form-control" id="company-edit-name" readonly>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label">部门名称</label>
|
|
|
+ <div class="col-sm-5">
|
|
|
+ <input type="text" class="form-control" id="dpart-edit-name">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label">规则名称</label>
|
|
|
+ <div class="col-sm-5">
|
|
|
+ <input type="text" class="form-control" id="rule-edit-name">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label">售后人员</label>
|
|
|
+ <div class="col-sm-6">
|
|
|
+ <input type="text" class="form-control" id="edit-person">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="form-group">
|
|
|
+ <label class="col-sm-3 control-label">选择标注字段</label>
|
|
|
+ <div class="col-sm-6">
|
|
|
+ <select class="form-control selectpicker" multiple
|
|
|
+ id="markFieldSelect"></select>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="modal-footer">
|
|
|
+ <input type="button" onclick="saveData()" class="btn btn-primary saveBtn" value="保存">
|
|
|
+ <input type="button" onclick="cancelModel()" class="btn btn-default" value="取消">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div><!-- /.modal -->
|
|
|
+</div>
|
|
|
+
|
|
|
+
|
|
|
+{{include "com/footer.html"}}
|
|
|
+<script>
|
|
|
+ menuActive("task/list");
|
|
|
+
|
|
|
+ let stype = "coll";
|
|
|
+ let fields = {{ .T.fields }}
|
|
|
+
|
|
|
+ $(function () {
|
|
|
+ ttable = $('#dataTable').dataTable({
|
|
|
+ "paging": true,
|
|
|
+ "lengthChange": false,
|
|
|
+ "searching": true,
|
|
|
+ "ordering": false,
|
|
|
+ "info": true,
|
|
|
+ "autoWidth": false,
|
|
|
+ "serverSide": true,
|
|
|
+ "ajax": {
|
|
|
+ "url": "",
|
|
|
+ "type": "post",
|
|
|
+ "data": {"status": "-1"}
|
|
|
+ },
|
|
|
+ "language": {
|
|
|
+ "url": "/dist/js/dataTables.chinese.lang"
|
|
|
+ },
|
|
|
+ "fnDrawCallback": function () {
|
|
|
+ $("ul.pagination").prepend(" 转到第 <input type='text' id='changePage' style='width:20px;'> 页 <a type='text' href='javascript:void(0);' id='dataTable-btn' style='text-align:center'>GO</a>");
|
|
|
+ $('#dataTable-btn').click(function (e) {
|
|
|
+ var redirectpage = 0
|
|
|
+ if ($("#changePage").val() && $("#changePage").val() > 0) {
|
|
|
+ var redirectpage = $("#changePage").val() - 1;
|
|
|
+ }
|
|
|
+ ttable.page(redirectpage).draw(false);
|
|
|
+ });
|
|
|
+ this.api().column(0).nodes().each(function (cell, i) {
|
|
|
+ cell.innerHTML = i + 1;
|
|
|
+ });
|
|
|
+ },
|
|
|
+ "columns": [
|
|
|
+ {"data": "", width: "1%"},
|
|
|
+ {"data": "s_personname", width: "5%"},
|
|
|
+ {"data": "s_projectname", width: "4%"},
|
|
|
+ {"data": "i_givenum", width: "4%"},
|
|
|
+ {"data": "", width: "4%"},
|
|
|
+ {"data": "", width: "4%"},
|
|
|
+ {"data": "", width: "4%"},
|
|
|
+ {"data": "", width: "4%"},
|
|
|
+ {
|
|
|
+ "data": "_id", width: "11%", render: function (val, a, row, pos) {
|
|
|
+ tmp = '<div>' +
|
|
|
+ '<a class="btn btn-sm btn-primary" onclick="editPro(\'' + pos.row + '\')">收回</a> ' +
|
|
|
+ '<a class="btn btn-sm btn-warning" href="/front/project/clear?pid=' + val + '">质检</a> ' +
|
|
|
+ '<a class="btn btn-sm btn-info" onclick="del(\'' + val + '\')">关闭</a> ' +
|
|
|
+ '</div>';
|
|
|
+ return tmp
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ });
|
|
|
+
|
|
|
+ $('input[type=radio][name=stype]').change(function () {
|
|
|
+ if (this.value === 'coll') {
|
|
|
+ stype = "coll"
|
|
|
+ $("#import-coll").attr("style", "display:block;")
|
|
|
+ $("#import-excel").attr("style", "display:none;")
|
|
|
+ } else if (this.value === 'excel') {
|
|
|
+ stype = "excel"
|
|
|
+ $("#import-coll").attr("style", "display:none;")
|
|
|
+ $("#import-excel").attr("style", "display:block;")
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ for (var i in fields) {
|
|
|
+ var opt = document.createElement('option');
|
|
|
+ opt.innerText = fields[i]["s_name"];
|
|
|
+ opt.value = fields[i]["s_code"];
|
|
|
+ $('#markFieldSelect')[0].appendChild(opt)
|
|
|
+ }
|
|
|
+ $("#markFieldSelect").selectpicker("refresh");
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ function del(id) {
|
|
|
+ showConfirm("确定删除该用户组?", function () {
|
|
|
+ $.ajax({
|
|
|
+ url: "",
|
|
|
+ type: 'POST',
|
|
|
+ data: {"id": id},
|
|
|
+ success: function (r) {
|
|
|
+ if (r.rep) {
|
|
|
+ ttable.ajax.reload();
|
|
|
+ } else {
|
|
|
+ showTip("状态修改失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ function createPro() {
|
|
|
+ $("#modal-create-project").modal('show')
|
|
|
+ }
|
|
|
+
|
|
|
+ function cancelModel() {
|
|
|
+ document.getElementById("model-form-project").reset();
|
|
|
+ $("#modal-create-project").modal('hide')
|
|
|
+ $("#modal-edit-project").modal('hide')
|
|
|
+ }
|
|
|
+
|
|
|
+ function importData() {
|
|
|
+ if (stype === "coll") {
|
|
|
+ projectmap["s_name"] = $('#project-name').val()
|
|
|
+ projectmap["s_sourceinfo"] = $('#coll-save-name').val()
|
|
|
+ projectmap["s_type"] = stype
|
|
|
+ projectmap["s_historyid"] = $('#data-id').val()
|
|
|
+ $.ajax({
|
|
|
+ url: "/front/project/save",
|
|
|
+ type: 'POST',
|
|
|
+ data: projectmap,
|
|
|
+ success: function (r) {
|
|
|
+ if (r.success) {
|
|
|
+
|
|
|
+ $("#modal-create-project").modal('hide')
|
|
|
+ ttable.api().ajax.reload();
|
|
|
+ } else {
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else if (stype === "excel") {
|
|
|
+ let formData = new FormData();
|
|
|
+ formData.append("s_name", $('#project-name').val())
|
|
|
+ formData.append("s_sourceinfo", $('#coll-save-name').val())
|
|
|
+ formData.append("s_historyid", $('#data-id').val())
|
|
|
+ formData.append("s_entname", $('#company-name').val())
|
|
|
+ formData.append("s_departname", $('#dpart-name').val())
|
|
|
+ formData.append("s_rulename", $('#rule-name').val())
|
|
|
+ formData.append("s_type", stype)
|
|
|
+ let file = $('#uploadfile')[0].files[0]
|
|
|
+ if (file) {
|
|
|
+ formData.append("xlsx", file)
|
|
|
+ $.ajax({
|
|
|
+ url: "/front/project/save",
|
|
|
+ type: 'POST',
|
|
|
+ data: formData,
|
|
|
+ cache: false,
|
|
|
+ processData: false,
|
|
|
+ contentType: false,
|
|
|
+ success: function (r) {
|
|
|
+ if (r.rep) {
|
|
|
+ $("#modal-create-project").modal('hide')
|
|
|
+ ttable.api().ajax.reload();
|
|
|
+ } else {
|
|
|
+ showTip("状态修改失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ showTip("请选择上传文件");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function editPro(index) {
|
|
|
+ projectmap = ttable.fnGetData()[index]
|
|
|
+ console.log(projectmap)
|
|
|
+ $('#modal-edit-project').modal('show')
|
|
|
+ $('#company-edit-name').val(projectmap["s_entname"])
|
|
|
+ $('#rule-edit-name').val(projectmap["s_rulename"])
|
|
|
+ $('#dpart-edit-name').val(projectmap["s_departname"])
|
|
|
+ }
|
|
|
+
|
|
|
+ function saveData() {
|
|
|
+ stype = "edit"
|
|
|
+ let tmp = projectmap
|
|
|
+ tmp["s_entname"] = $('#company-edit-name').val()
|
|
|
+ tmp["s_rulename"] = $('#rule-edit-name').val()
|
|
|
+ tmp["s_departname"] = $('#dpart-edit-name').val()
|
|
|
+
|
|
|
+ let fieldArr = $('#markFieldSelect').val();
|
|
|
+ let m = {}
|
|
|
+ if (fieldArr.length > 0) {
|
|
|
+ for (const i in fields) {
|
|
|
+ if (fieldArr.indexOf(fields[i]["s_code"]) > -1) {
|
|
|
+ m[fields[i]["s_code"]] = fields[i]["s_name"]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ tmp["v_field"] = m
|
|
|
+ if (tmp !== projectmap) {
|
|
|
+ $.ajax({
|
|
|
+ url: "/front/project/save",
|
|
|
+ type: 'POST',
|
|
|
+ data: projectmap,
|
|
|
+ success: function (r) {
|
|
|
+ if (r.rep) {
|
|
|
+ ttable.api().ajax.reload();
|
|
|
+ } else {
|
|
|
+ showTip("保存失败");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ showTip("未做修改");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+</script>
|