maxiaoshan 3 năm trước cách đây
mục cha
commit
ee9ba7b640
2 tập tin đã thay đổi với 128 bổ sung86 xóa
  1. 29 6
      src/lua/spiderwarn.go
  2. 99 80
      src/web/templates/lua/spiderwarn.html

+ 29 - 6
src/lua/spiderwarn.go

@@ -3,14 +3,16 @@ package lua
 import (
 	"encoding/json"
 	"fmt"
-	"github.com/go-xweb/xweb"
-	"go.mongodb.org/mongo-driver/bson/primitive"
 	"mongodb"
 	qu "qfw/util"
 	"qfw/util/redis"
+	"strings"
 	"time"
 	"udptask"
 	. "util"
+
+	"github.com/go-xweb/xweb"
+	"go.mongodb.org/mongo-driver/bson/primitive"
 )
 
 /*
@@ -20,10 +22,10 @@ import (
 type Lua struct {
 	*xweb.Action
 	//spider_warn
-	spiderWarn xweb.Mapper `xweb:"/lua/spiderwarn"` //spider_warn异常数据
-	spiderEdit xweb.Mapper `xweb:"/lua/spideredit"` //编辑异常数据
-	spiderSave xweb.Mapper `xweb:"/lua/spiersave"`  //数据更新、保存
-
+	spiderWarn   xweb.Mapper `xweb:"/lua/spiderwarn"`   //spider_warn异常数据
+	spiderEdit   xweb.Mapper `xweb:"/lua/spideredit"`   //编辑异常数据
+	spiderSave   xweb.Mapper `xweb:"/lua/spiersave"`    //数据更新、保存
+	spiderUpdate xweb.Mapper `xweb:"/lua/spiderupdate"` //批量更新状态
 }
 
 func (l *Lua) SpiderWarn() {
@@ -35,6 +37,8 @@ func (l *Lua) SpiderWarn() {
 		limit, _ := l.GetInteger("length")
 		draw, _ := l.GetInteger("draw")
 		startTime, _ := l.GetInt("starttime")
+		searchStr := l.GetString("search[value]")
+		search := strings.TrimSpace(searchStr)
 		qu.Debug(startTime, start, limit, draw, level)
 		sort := `{"%s":%d}`
 		orderIndex := l.GetString("order[0][column]")
@@ -56,12 +60,22 @@ func (l *Lua) SpiderWarn() {
 		if level != -1 {
 			query["level"] = level
 		}
+		if search != "" {
+			query["$or"] = []interface{}{
+				map[string]interface{}{"site": map[string]interface{}{"$regex": search}},
+				map[string]interface{}{"code": map[string]interface{}{"$regex": search}},
+			}
+		}
 		fields := map[string]interface{}{
 			"data": 0,
 		}
 		count := MgoS.Count("spider_warn_err", query)
 		qu.Debug("query:", query, "sort:", sort, count)
+		// page := start / 10
 		list, _ := MgoS.Find("spider_warn_err", query, sort, fields, false, start, limit)
+		// for _, l := range *list {
+		// 	v["num"] = k + 1 + page*10
+		// }
 		l.ServeJson(map[string]interface{}{
 			"data":            list,
 			"draw":            draw,
@@ -228,6 +242,15 @@ L:
 	l.ServeJson(map[string]interface{}{"success": success, "rep": rep})
 }
 
+func (l *Lua) SpiderUpdate() {
+	defer qu.Catch()
+	ids := strings.Split(l.GetString("ids"), ",")
+	for _, id := range ids {
+		TagToSpiderWarnErr(2, id, "无需更新", map[string]interface{}{})
+	}
+	l.ServeJson(map[string]interface{}{"success": true})
+}
+
 func TagToSpiderWarnErr(state int, id, reason string, update map[string]interface{}) {
 	defer qu.Catch()
 	set := map[string]interface{}{

+ 99 - 80
src/web/templates/lua/spiderwarn.html

@@ -9,7 +9,7 @@
     <section class="content-header">
         <h1>
             <small>
-<!--                <button type="button" class="btn btn-primary" data-toggle="modal" onclick="add()">新增用户</button>-->
+                <button type="button" class="btn btn-primary" data-toggle="modal" onclick="delSelect()">批量删除</button>
             </small>
         </h1>
         <ol class="breadcrumb">
@@ -23,7 +23,7 @@
             <div class="col-xs-12">
                 <div class="box">
                     <div class="box-body">
-                        <div>
+                       <!-- <div>
                             <div id="status-div" style="width: 205px;float: right">
                                 <span class="input-group date date-picker" id="starttime" data-provide="datepicker">
                                     <input type="text" class="form-control form-filter input-sm" readonly name="starttime" placeholder="开始日期" />
@@ -40,13 +40,13 @@
                                     <option value='2'>错误</option>
                                 </select>
                             </div>
-
-                        </div>
+                        </div>-->
 
                         <table id="spiderwarn" class="table table-bordered table-hover">
                             <thead>
                             <tr>
-                                <th>编号</th>
+                                <th><input type="checkbox" id="selrow" onclick="selectrow(this)"/></th>
+                                <th>ID</th>
                                 <th>爬虫</th>
                                 <th>站点</th>
                                 <th>类型</th>
@@ -65,53 +65,6 @@
     </section>
 </div>
 
-<div class="modal fade" id="modal-info">
-    <div class="modal-dialog">
-        <form id="userform" class="form-horizontal" role="form">
-            <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">
-                    <div class="form-group">
-                        <label for="code" class="col-sm-2 control-label">账号:</label>
-                        <div class="col-sm-10">
-                            <input id="email" name="email" type="email" class="form-control" placeholder="请输入账号">
-                        </div>
-                    </div>
-                    <div class="form-group">
-                        <label for="code" class="col-sm-2 control-label">密码:</label>
-                        <div class="col-sm-10">
-                            <input id="pwd" name="pwd" type="password" class="form-control" placeholder="请输入密码">
-                        </div>
-                    </div>
-                    <div class="form-group">
-                        <label for="site" class="col-sm-2 control-label">姓名:</label>
-                        <div class="col-sm-10">
-                            <input id="name" name="name" type="text" class="form-control" placeholder="请输入姓名">
-                        </div>
-                    </div>
-                    <div class="form-group">
-                        <label for="modify" class="col-sm-2 control-label">角色:</label>
-                        <div class="col-sm-10">
-                            <select id="role_select" class="form-control"></select>
-                        </div>
-                    </div>
-                </div>
-                <div class="modal-footer">
-                    <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
-                    <button type="button" class="btn btn-primary" onclick="save()">保存</button>
-                </div>
-            </div>
-            <!-- /.modal-content -->
-        </form>
-    </div>
-    <!-- /.modal-dialog -->
-</div>
-<!-- /.modal -->
-
 <!-- footer -->
 {{include "com/footer.html"}}
 
@@ -128,17 +81,21 @@
                 "url": "/dist/js/dataTables.chinese.lang"
             },
             "columnDefs": [
-                { "orderable": false, "targets": [0,2,5,6] } //设置列不可排序
+                { "orderable": false, "targets": [0,1,3,6,7] } //设置列不可排序
             ],
-            "order": [[1,"desc"]],
+            "order": [[2,"desc"]],
             "paging": true,
             "lengthChange": false,
-            "searching": false,
+            "searching": true,
             "ordering": true,
             "info": true,
             "serverSide": true,
             "autoWidth":false,
+            "bLengthChange":true,//支持分页数选择
             "columns": [
+                { "data": "_id",render:function(val,a,row){
+            				return "<input type='checkbox' value='"+val+"' />"
+            			}},
                 {
                     "data": "_id", render: function (val, a, row) {
                         return val="<a href='"+row.href+"' title='"+row.title+"' target='_blank'>"+row._id+"</a>"
@@ -155,40 +112,102 @@
                 {"data": "field"},
                 {"data": "info"},
                 {
-                    "data": "_id", render: function (val, a, row) {
-                        return "<a href='/lua/spideredit?id="+val+"'><i class='fa fa-fw fa-edit text-yellow'></i></a>";
-                    }
+                  "data": "_id", render: function (val, a, row) {
+                      return "<a href='/lua/spideredit?id="+val+"'><i class='fa fa-fw fa-edit text-yellow'></i></a>";
+                  }
                 }
             ],
             "fnServerParams": function (e) {
-                let st = $('#starttime').datepicker('getDate')
+              if($('#starttime').length !=0){
+                var st = $('#starttime').datepicker('getDate')
+                console.log(st)
                 if (st != null) {
-                    let s = st.toLocaleDateString()
-                    let sc = Date.parse(new Date(s).toString())/1000
-                    e.starttime = sc
+                  var s = st.toLocaleDateString()
+                  var sc = Date.parse(new Date(s).toString())/1000
+                  e.starttime = sc
                 }
-                let level = $("#errtype").val();
-                if(level){
-                    e.level = level;
-                }else{
-                    e.level= -1;
-                }
-
+              }
+              var level = $("#errtype").val();
+              if(level){
+                  e.level = level;
+              }else{
+                  e.level= -1;
+              }
             }
         });
-        $('.date-picker').datepicker({
-            language: 'zh-CN',
-            autoclose: true,
-            clearBtn: true, //清除按钮
-            todayBtn: false, //今日按钮
-            format: "yyyy-mm-dd"
-        });
-        $('#starttime').datepicker('setDate',new Date().toLocaleDateString());//设置初始时间
-        $('#starttime').datepicker().on('changeDate', function (e) {
-            ttable.ajax.reload();
+        ttable.on('init.dt', function () {
+          var errStype = "<div style='margin-top: -4px'>"+
+            "<span class='input-group date date-picker' id='starttime' data-provide='datepicker'>"+
+                "<input type='text' class='form-control form-filter input-sm' readonly name='starttime' placeholder='开始日期' />"+
+                 "<span class='input-group-addon'>"+
+                    "<i class='fa fa-calendar'></i>"+
+                  "</span>"+
+            "</span>"+
+         "</div>&nbsp;"
+          
+          var selectStype="<div class='form-group' style='margin-top: -4px'><label for='name'>异常类型:</label>"+
+    				"<select id='errtype' onchange='checkclick(this.value)' class='form-control input-sm'>"+
+    				   "<option value='-1'>全部</option>"+
+              "<option value='1'>警告</option>"+
+              "<option value='2'>错误</option>"+
+    				"</select></div>"
+          $("#spiderwarn_filter").prepend(errStype);
+    				$("#spiderwarn_filter").prepend("&nbsp;");
+    				$("#spiderwarn_filter").prepend(selectStype);
+          $("#spiderwarn_length").parent().css("width", "30%")
+          $("#spiderwarn_filter").parent().css("width", "70%")
+          $("#spiderwarn_filter").css({"display": "flex","text-align": "right","align-items": "center","justify-content": "flex-end"})
+        
+          $('.date-picker').datepicker({
+              language: 'zh-CN',
+              autoclose: true,
+              clearBtn: true, //清除按钮
+              todayBtn: false, //今日按钮
+              format: "yyyy-mm-dd"
+          });
+          $('#starttime').datepicker('setDate',new Date().toLocaleDateString());//设置初始时间
+          $('#starttime').datepicker().on('changeDate', function (e) {
+              ttable.ajax.reload();
+          });
+        })
+    });
+    //批量删除
+    function delSelect(){
+      var ids=[];
+    		$("#spiderwarn td input[type=checkbox]").each(function(){
+    			if($(this).prop("checked")){
+    				ids.push($(this).attr("value"));
+    			}
+    		});
+      if(ids.length > 0){
+        showConfirm("确定批量处理?", function() {
+          $.ajax({
+            url: "/lua/spiderupdate",
+            type: "post",
+            data: {"ids":ids.join(",")},
+            success: function(r){
+              if(r&&r.success){
+                $("#selrow").prop('checked',false);
+                 ttable.ajax.reload();
+              }
+            }
+          })
         })
-    })
+      }else{
+        alert("请选择要删除的数据!") 
+      }
+    }
+    
     function checkclick(){
         ttable.ajax.reload();
     }
+    function selectrow(me){
+    		var sel=$(me);
+    		var isSelected=sel.prop('checked');
+    		if(isSelected){
+    			$("#spiderwarn td input[type=checkbox]").prop("checked",true);
+    		}else{
+    			$("#spiderwarn td input[type=checkbox]").prop("checked",false);
+    		}
+    	}
 </script>