|
@@ -0,0 +1,326 @@
|
|
|
+{{include "head.html"}}
|
|
|
+<div class="content-wrapper">
|
|
|
+ <section class="content-header">
|
|
|
+ <h1>
|
|
|
+ 重点任务列表
|
|
|
+ <small>
|
|
|
+<!-- <a class="btn btn-default btn-sm" id="batchAssign" onclick="batchAssign()">批量分发</a>-->
|
|
|
+<!-- <a class="btn btn-default btn-sm" id="batchClose" onclick="batchClose()">批量关闭</a>-->
|
|
|
+<!-- <a class="btn btn-default btn-sm" id="batchDeal" onclick="batchDeal()">批量处理</a>-->
|
|
|
+ </small>
|
|
|
+ </h1>
|
|
|
+ <ol class="breadcrumb">
|
|
|
+ <li><a href="#"><i class="fa fa-dashboard"></i> 导入</a></li>
|
|
|
+ <li class="active">列表</li>
|
|
|
+ </ol>
|
|
|
+ </section>
|
|
|
+ <section class="content">
|
|
|
+ <div class="box">
|
|
|
+ <div class="box-body">
|
|
|
+ <table id="task" class="table table-bordered table-striped">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th>网站</th>
|
|
|
+ <th>栏目</th>
|
|
|
+ <th>爬虫</th>
|
|
|
+ <th>维护人</th>
|
|
|
+ <th>是否修复</th>
|
|
|
+ <th>栏目有新数据</th>
|
|
|
+ <th>是否超期</th>
|
|
|
+ <th>爬虫状态</th>
|
|
|
+ <th>创建时间</th>
|
|
|
+ <th>最迟修复时间</th>
|
|
|
+ <th>最后修改时间</th>
|
|
|
+ <th>来源</th>
|
|
|
+ <th>原因</th>
|
|
|
+ <th class="hidden-xs">操作</th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </section>
|
|
|
+<script>
|
|
|
+ $(function(){
|
|
|
+
|
|
|
+ ttable = $('#task').DataTable({
|
|
|
+ "language": {
|
|
|
+ "url": "/js/dataTables.chinese.lang"
|
|
|
+ },
|
|
|
+ "ajax": {
|
|
|
+ "url": "/center/sitetask",
|
|
|
+ "type": "POST"
|
|
|
+
|
|
|
+ },
|
|
|
+ "columnDefs": [
|
|
|
+ { "orderable": false, "targets": [0,1,2,3,4,5,6,7,10,11,12,13] } //设置列不可排序
|
|
|
+ ],
|
|
|
+ "order": [[9,"desc"]], //默认排序列
|
|
|
+ "lengthChange":false,
|
|
|
+ "serverSide": true,
|
|
|
+ "searching": true,
|
|
|
+ "ordering": true,
|
|
|
+ "info": true,
|
|
|
+ "autoWidth": false,
|
|
|
+ "columns": [
|
|
|
+ {"data": "s_site"},
|
|
|
+ {"data": "s_channel"},
|
|
|
+ {"data": "s_spidercode"},
|
|
|
+ {"data": "s_modifyuser"},
|
|
|
+ {"data": "b_repair","width":"3%",render:function(val,a,row){
|
|
|
+ if(val){
|
|
|
+ return "是"
|
|
|
+ }
|
|
|
+ return "否"
|
|
|
+ }},
|
|
|
+ {"data": "b_latestdata","width":"4%",render:function(val,a,row){
|
|
|
+ if(val){
|
|
|
+ return "是"
|
|
|
+ }
|
|
|
+ return "否"
|
|
|
+ }},
|
|
|
+ {"data": "b_overdue","width":"3%",render:function(val,a,row){
|
|
|
+ if(val){
|
|
|
+ return "是"
|
|
|
+ }
|
|
|
+ return "否"
|
|
|
+ }},
|
|
|
+ { "data": "i_state","width":"5%",render:function(val,a,row){
|
|
|
+ var state=row.i_state;
|
|
|
+ if(state==0){
|
|
|
+ val="<span class='text-info text-bold'>待完成</span>";
|
|
|
+ }else if(state==1){
|
|
|
+ val="<span class='text-primary text-bold'>待审核</span>";
|
|
|
+ }else if(state==2){
|
|
|
+ val="<span class='text-danger text-bold'>未通过</span>";
|
|
|
+ }else if(state==3){
|
|
|
+ val="<span class='text-success text-bold'>已通过</span>";
|
|
|
+ }else if(state==4){
|
|
|
+ val="<span class='text-danger text-bold'>已作废</span>";
|
|
|
+ }else if(state==5){
|
|
|
+ val="<span class='text-success text-bold'>已上架</span>";
|
|
|
+ }else if(state==6){
|
|
|
+ val="<span class='text-danger text-bold'>已下架</span>";
|
|
|
+ }else if(state==7){
|
|
|
+ val="<span class='text-danger text-bold'>无发布</span>";
|
|
|
+ }else if(state==8){
|
|
|
+ val="<span class='text-danger text-bold'>需登录</span>";
|
|
|
+ }else if(state==9){
|
|
|
+ val="<span class='text-danger text-bold'>转python</span>";
|
|
|
+ }else if(state==10){
|
|
|
+ val="<span class='text-danger text-bold'>已删除</span>";
|
|
|
+ }else if(state==11){
|
|
|
+ val="<span class='text-danger text-bold'>已上线</span>";
|
|
|
+ }
|
|
|
+ return val;
|
|
|
+ }},
|
|
|
+ {"data": "l_create_time","width":"6%",render:function(val,a,row){
|
|
|
+ var dt = new Date()
|
|
|
+ dt.setTime(parseInt(val) * 1000);
|
|
|
+ return dt.format("yyyy-MM-dd hh:mm:ss");
|
|
|
+ }},
|
|
|
+ {"data": "l_max_repair_time","width":"8%",render:function(val,a,row){
|
|
|
+ var dt = new Date()
|
|
|
+ dt.setTime(parseInt(val) * 1000);
|
|
|
+ return dt.format("yyyy-MM-dd hh:mm:ss");
|
|
|
+ }},
|
|
|
+ {"data": "l_update_time","width":"7%",render:function(val,a,row){
|
|
|
+ var dt = new Date()
|
|
|
+ dt.setTime(parseInt(val) * 1000);
|
|
|
+ return dt.format("yyyy-MM-dd hh:mm:ss");
|
|
|
+ }},
|
|
|
+ {"data": "s_source","width":"3%"},
|
|
|
+ {"data": "s_reason"},
|
|
|
+ {"data": "_id","width":"5%",render:function(val,a,row){
|
|
|
+ var div=$("<div><div class=\"btn-group\"></div></div>");
|
|
|
+ {{if eq (session "auth") 1}}
|
|
|
+ var buttonWatch=$('<a type="button" target="_blank" class="btn btn-sm btn-primary">编辑</a>');
|
|
|
+ buttonWatch.attr("onclick","editSiteTask('"+row['s_spidercode']+"','"+row['encode']+"')");
|
|
|
+ div.find(".btn-group").append(buttonWatch);
|
|
|
+ {{else}}
|
|
|
+ var buttonClose=$('<a type="button" class="btn btn-sm btn-danger">关闭</a>');
|
|
|
+ buttonClose.attr("onclick","closeSiteTask('"+row['_id']+"')");
|
|
|
+ div.find(".btn-group").append(buttonClose);
|
|
|
+ {{end}}
|
|
|
+ return div.html();
|
|
|
+ }}
|
|
|
+ ],
|
|
|
+ // "fnDrawCallback": function(table) {
|
|
|
+ // $("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) {
|
|
|
+ // redirectpage = $("#changePage").val() - 1;
|
|
|
+ // }
|
|
|
+ // ttable.page(redirectpage).draw(false);
|
|
|
+ // });
|
|
|
+ // },
|
|
|
+ "fnServerParams": function (e) {
|
|
|
+ var codestate = $("#codestate").val();
|
|
|
+ var latestdata = $("#latestdata").val();
|
|
|
+ var overdue = $("#overdue").val();
|
|
|
+ var repair = $("#repair").val();
|
|
|
+ var modifyuser = $("#modifyuser").val();
|
|
|
+ //爬虫状态
|
|
|
+ if(codestate){
|
|
|
+ e.codestate = codestate;
|
|
|
+ }else{
|
|
|
+ e.codestate="-1";
|
|
|
+ }
|
|
|
+ //是否有新数据
|
|
|
+ if(latestdata){
|
|
|
+ e.latestdata = latestdata;
|
|
|
+ }else{
|
|
|
+ e.latestdata="-1";
|
|
|
+ }
|
|
|
+ //是否超期
|
|
|
+ if(overdue){
|
|
|
+ e.overdue = overdue;
|
|
|
+ }else{
|
|
|
+ e.overdue="-1";
|
|
|
+ }
|
|
|
+ //是否修复
|
|
|
+ if(repair){
|
|
|
+ e.repair = repair;
|
|
|
+ }else{
|
|
|
+ e.repair="-1";
|
|
|
+ }
|
|
|
+ //维护人
|
|
|
+ if(modifyuser){
|
|
|
+ e.modifyuser = modifyuser;
|
|
|
+ }else{
|
|
|
+ e.modifyuser="-1";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // common.setActive("index_sitetask");
|
|
|
+ common.menuActive("sitetask");
|
|
|
+ ttable.on('init.dt', function () {
|
|
|
+ //爬虫状态
|
|
|
+ var opt="<option value='-1'>全部</option>";
|
|
|
+ var opt1="<option value='0'>待完成</option>";
|
|
|
+ var opt2="<option value='1'>待审核</option>"+
|
|
|
+ "<option value='2'>未通过</option>"+
|
|
|
+ "<option value='3'>已通过</option>";
|
|
|
+ var opt3="<option value='4'>已作废</option>"+
|
|
|
+ "<option value='5'>已上架</option>"+
|
|
|
+ "<option value='6'>已下架</option>";
|
|
|
+ var opt4="<option value='7'>无发布</option>"+
|
|
|
+ "<option value='8'>需登录</option>"+
|
|
|
+ "<option value='9'>转python</option>"+
|
|
|
+ "<option value='10'>已删除</option>"+
|
|
|
+ "<option value='11'>已上线</option>";
|
|
|
+ opt=opt+opt1+opt2+opt3+opt4;
|
|
|
+ var selectstate="<div class='form-group'><label for='name'>爬虫状态:</label>"+
|
|
|
+ "<select id='codestate' onchange='checkclick(this.value)' class='form-control input-sm'>"+
|
|
|
+ opt+
|
|
|
+ "</select></div>";
|
|
|
+ $("#task_filter").prepend(" ");
|
|
|
+ $("#task_filter").prepend(selectstate);
|
|
|
+
|
|
|
+
|
|
|
+ //栏目有新数据
|
|
|
+ var latestdata="<option value='-1'>全部</option>";
|
|
|
+ latestdata+="<option value='1'>是</option>";
|
|
|
+ latestdata+="<option value='0'>否</option>";
|
|
|
+ var selectlatestdata="<div class='form-group'><label for='name'>是否有新数据:</label>"+
|
|
|
+ "<select id='latestdata' onchange='checkclick(this.value)' class='form-control input-sm'>"+
|
|
|
+ latestdata+
|
|
|
+ "</select></div>";
|
|
|
+ $("#task_filter").prepend(" ");
|
|
|
+ $("#task_filter").prepend(selectlatestdata);
|
|
|
+
|
|
|
+ //是否超期overdue
|
|
|
+ var overdue="<option value='-1'>全部</option>";
|
|
|
+ overdue+="<option value='1'>是</option>";
|
|
|
+ overdue+="<option value='0'>否</option>";
|
|
|
+ var selectoverdue="<div class='form-group'><label for='name'>是否超期:</label>"+
|
|
|
+ "<select id='overdue' onchange='checkclick(this.value)' class='form-control input-sm'>"+
|
|
|
+ overdue+
|
|
|
+ "</select></div>";
|
|
|
+ $("#task_filter").prepend(" ");
|
|
|
+ $("#task_filter").prepend(selectoverdue);
|
|
|
+
|
|
|
+ //是否修复
|
|
|
+ var repair="<option value='-1'>全部</option>"
|
|
|
+ repair+="<option value='1'>是</option>";
|
|
|
+ repair+="<option value='0'>否</option>";
|
|
|
+ var selectrepair="<div class='form-group'><label for='name'>是否修复:</label>"+
|
|
|
+ "<select id='repair' onchange='checkclick(this.value)' class='form-control input-sm'>"+
|
|
|
+ repair+
|
|
|
+ "</select></div>"
|
|
|
+ $("#task_filter").prepend(" ");
|
|
|
+ $("#task_filter").prepend(selectrepair);
|
|
|
+
|
|
|
+ //维护人
|
|
|
+ var modifyuser="<option value='-1'>全部</option>";
|
|
|
+ {{if gt (session "auth") 1}}
|
|
|
+ var modifyusers = {{.T.modifyusers}};
|
|
|
+ for(k in modifyusers){
|
|
|
+ modifyuser+="<option value='"+modifyusers[k]["s_name"]+"'>"+modifyusers[k]["s_name"]+"</option>";
|
|
|
+ }
|
|
|
+ {{end}}
|
|
|
+ var selectModifyuser="<div class='form-group'><label for='name'>维护人:</label>"+
|
|
|
+ "<select id='modifyuser' onchange='checkclick(this.value)' class='form-control input-sm'>"+
|
|
|
+ modifyuser+
|
|
|
+ "</select></div>"
|
|
|
+ $("#task_filter").prepend(" ");
|
|
|
+ $("#task_filter").prepend(selectModifyuser);
|
|
|
+ //修改样式
|
|
|
+ $("#task_wrapper .col-sm-6").css({width:"100%"});
|
|
|
+ });
|
|
|
+ // ttable.on('preXhr.dt', function ( e, settings, data ) {
|
|
|
+ // $("[type=search]").keypress(function(){
|
|
|
+ // setCookie("task",$("[type=search]").val());
|
|
|
+ // })
|
|
|
+ // })
|
|
|
+ })
|
|
|
+ function checkclick(urgency){
|
|
|
+ ttable.ajax.reload();
|
|
|
+ }
|
|
|
+
|
|
|
+ function closeSiteTask(id) {
|
|
|
+ showConfirm("确定关闭任务?",function(){
|
|
|
+ $.post("/center/sitetask/close",{"id":id},function(r){
|
|
|
+ if(r == "y"){
|
|
|
+ showTip("关闭成功", 1000);
|
|
|
+ $('#com-alert').on('hidden.bs.modal', function () {
|
|
|
+ ttable.ajax.reload();
|
|
|
+ })
|
|
|
+ }else if(r == "n"){
|
|
|
+ showTip("关闭失败", 1000);
|
|
|
+ }else{
|
|
|
+ showTip("没有权限", 1000);
|
|
|
+ }
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ function editSiteTask(code,encode) {
|
|
|
+ $.post("/center/sitetask/edit",{"spidercode":code},function(r){
|
|
|
+ console.log(r)
|
|
|
+ if(r && r.taskid != ""){//有常规任务,跳转任务编辑页
|
|
|
+ if(r.relatecode != ""){
|
|
|
+ showConfirm("请注意修改关联爬虫:"+relatecode, function() {
|
|
|
+ $.get("/center/task/createrelatetask?relatecode="+relatecode+"&id="+id,function(r){
|
|
|
+ if (r&&r.ok){
|
|
|
+ window.location.href="/center/task/edit/"+r.taskid+"__1";
|
|
|
+ }else{
|
|
|
+ showTip("关联爬虫任务创建失败", 1000, function() {});
|
|
|
+ }
|
|
|
+ })
|
|
|
+ });
|
|
|
+ }else{
|
|
|
+ window.location.href="/center/task/edit/"+r.taskid+"__1";
|
|
|
+ }
|
|
|
+ }else{//无常规任务,直接修改爬虫
|
|
|
+ window.location.href="/center/spider/edit/"+encode+"__";
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+</script>
|
|
|
+</div>
|
|
|
+{{include "bottom.html"}}
|