Ver código fonte

任务列表

apple 5 anos atrás
pai
commit
861c27969c

+ 2 - 0
src/main.go

@@ -33,6 +33,8 @@ func init() {
 	xweb.AddAction(&service.CommonRule{})
 	xweb.AddAction(&service.Feedback{})
 	xweb.AddAction(&service.Private{})
+	xweb.AddAction(&service.TaskRule{})
+	xweb.AddAction(&service.RepairRule{})
 	xweb.RootApp().AppConfig.SessionTimeout = 1 * time.Hour
 	xweb.RootApp().Logger.SetOutputLevel(4)
 

+ 18 - 0
src/service/repair_rule.go

@@ -0,0 +1,18 @@
+package service
+
+import (
+	"github.com/go-xweb/xweb"
+	qu "qfw/util"
+)
+
+type RepairRule struct {
+	*xweb.Action
+	taskList     xweb.Mapper `xweb:"/service/jianyu/repair"`         //标签列表
+}
+
+
+func (jy *RepairRule) TaskList() {
+	defer qu.Catch()
+	jy.Render("repair/jianyu_repair.html")
+
+}

+ 116 - 0
src/service/task_rule.go

@@ -0,0 +1,116 @@
+package service
+
+import (
+	"github.com/go-xweb/xweb"
+	"gopkg.in/mgo.v2/bson"
+	qu "qfw/util"
+	"strings"
+	"time"
+	. "util"
+)
+
+type TaskRule struct {
+	*xweb.Action
+	taskList     xweb.Mapper `xweb:"/service/task/list"`         //任务列表
+	taskCreate   xweb.Mapper `xweb:"/service/task/create"`       //任务创建
+	taskEdit  	 xweb.Mapper `xweb:"/service/task/edit"`         //任务编辑
+	taskSave   	 xweb.Mapper `xweb:"/service/task/save"`       	 //任务保存
+}
+
+//展示列表
+func (task *TaskRule) TaskList() {
+	defer qu.Catch()
+	if task.Method() == "POST" {
+		searchStr := task.GetString("search[value]")
+		search := strings.TrimSpace(searchStr)
+		query := bson.M{}
+		if search != "" {
+			query["$or"] = []interface{}{
+				bson.M{"s_taskname": bson.M{"$regex": search}},
+			}
+		}
+		data, _ := Mgo.Find("taskinfo", query, `{"i_createtime":-1}`, nil, false, -1, -1)
+		count := Mgo.Count("taskinfo", query)
+		task.ServeJson(map[string]interface{}{
+			"data":            data,
+			"recordsFiltered": count,
+			"recordsTotal":    count,
+		})
+	}else {
+		task.Render("task/task_list.html")
+	}
+}
+
+//创建
+func (task *TaskRule) TaskCreate() {
+	defer qu.Catch()
+	if task.Method() == "POST" {
+
+	} else {
+		task.T["taskType"] = TaskTypeMap //任务类型
+		task.Render("task/task_create.html")
+	}
+}
+
+//编辑
+func (task *TaskRule) TaskEdit() {
+	defer qu.Catch()
+	id := task.GetString("id")         //标签列表编辑
+	query := bson.M{}
+	query["_id"] = qu.StringTOBsonId(id)
+	data, _ := Mgo.FindOneByField("taskinfo", query, `{}`)
+	(*data)["id"] = qu.BsonIdToSId((*data)["_id"])
+	task.T["data"] = *data
+	task.T["taskType"] = TaskTypeMap
+	task.Render("private/task_edit.html", &task.T)
+}
+
+//保存
+func (task *TaskRule) TaskSave() {
+	defer qu.Catch()
+	if task.Method() == "POST" {
+		user := task.GetSession("user").(map[string]interface{})
+		data := GetPostForm(task.Request)
+
+		id := data["id"].(string)
+		delete(data, "id")
+		curtime := time.Now().Unix()
+		if id == "" { //新建
+			data["i_createtime"] = curtime
+			data["s_createuser"] = user["name"]
+		}else {
+			data["i_updatetime"] = curtime
+			data["s_updateuser"] = user["name"]
+		}
+		id, rep := saveTaskMongo(id,data)
+		task.ServeJson(map[string]interface{}{
+			"rep":       rep,
+		})
+	}
+}
+
+
+
+
+
+
+
+//******方法
+func saveTaskMongo(id string, rdata map[string]interface{}) (rid string, rep bool) {
+	defer qu.Catch()
+	if id == "" {
+		rid = Mgo.Save("taskinfo", rdata)
+		if rid != "" {
+			rep = true
+		} else {
+			rep = false
+		}
+	} else {
+		rid = id
+		query := bson.M{
+			"_id": qu.StringTOBsonId(id),
+		}
+		rep = Mgo.Update("taskinfo", query, bson.M{"$set": rdata}, false, false)
+	}
+	return
+}

+ 7 - 1
src/util/config.go

@@ -27,7 +27,7 @@ var (
 	MatchTypeMap2 map[string]interface{}    //匹配方式
 	ExistFiled    []string                  //存在的字段
 	ScopeClassMap *[]map[string]interface{} //公告行业
-
+	TaskTypeMap   *[]map[string]interface{} //任务类型
 )
 
 func InitMgoPool() {
@@ -55,6 +55,7 @@ func InitOther() {
 	initMatchType()
 	initExitField()
 	initScopeClass()
+	initTaskType()
 	initEs()
 	initMgoEn()
 	Subday = qu.Float64All(Sysconfig["subday"])
@@ -132,6 +133,11 @@ func initScopeClass() {
 	ScopeClassMap, _ = Mgo.Find("code_scopeclass", `{}`, `{"_id": 1}`, `{}`, false, -1, -1)
 }
 
+func initTaskType() {
+	TaskTypeMap, _ = Mgo.Find("code_task", `{}`, `{"_id": 1}`, `{}`, false, -1, -1)
+}
+
+
 func initEs() {
 	EsIndex, EsType = qu.ObjToString(Sysconfig["elasticsearch_index"]), qu.ObjToString(Sysconfig["elasticsearch_type"])
 	elastic.InitElasticSize(qu.ObjToString(Sysconfig["elasticsearch"]), qu.IntAllDef(qu.Int64All(Sysconfig["elasticPoolSize"]), 30))

+ 10 - 0
src/web/templates/repair/jianyu_repair.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>

+ 258 - 0
src/web/templates/task/task_create.html

@@ -0,0 +1,258 @@
+{{include "com/inc.html"}}
+<!-- Main Header -->
+{{include "com/header.html"}}
+<!-- Left side column. 权限菜单 -->
+{{include "com/menu.html"}}
+{{include "com/modal.html"}}
+<script src="/time/js/angular.min.js"></script>
+<script src="/time/js/wui-date.js"></script>
+<div class="content-wrapper">
+    <section class="content-header">
+        <h1>新建任务</h1>
+        <ol class="breadcrumb">
+            <li><a href="#"><i class="fa fa-dashboard"></i> 首页</a></li>
+            <li><a href="/service/rule/list">任务列表</a></li>
+            <li><a href="#">新任务</a></li>
+        </ol>
+    </section>
+    <!-- Main content -->
+    <section class="content">
+        <div class="nav-tabs-custom">
+            <ul class="nav nav-tabs edit-step">
+                </br>
+                <button class="btn btn-primary btn-sm" style="float: right;margin-top: 7px;margin-right: 10px" onclick="saveTask()"><i class="fa fa-fw fa-file-text fa-lg"></i>保存任务</button>
+                </br></br></br>
+            </ul>
+            <form class="form-horizontal">
+                {{/*<div class="box box-primary">*/}}
+                <div class="box-body">
+                    {{/*第一组*/}}
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>任务名称</label>
+                        <div class="col-sm-3">
+                            <input type="text" class="form-control" id="taskname" placeholder="请输入任务名称" required>
+                        </div>
+                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>任务类型</label>
+                        <div class="col-sm-3">
+                            <select class="form-control selectpicker" id="taskTypeSelect">
+                            </select>
+                            <script>
+                                $('#taskTypeSelect').on('hide.bs.select', function () {
+                                    var num = $(this).val()
+                                    var index = Number(num)-Number(1)
+                                    if ($(this).val() == 0) {
+                                        dict["s_tasktype"] = ""
+                                    }else {
+                                        dict["s_tasktype"] = codeType[index]["name"]
+                                    }
+
+                                })
+                            </script>
+
+                        </div>
+
+                    </div>
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>起始id</label>
+                        <div class="col-sm-3">
+                            <input type="text" class="form-control" id="startid" placeholder="请输入起始id" required>
+                        </div>
+                    </div>
+                    <hr>
+                    {{/*第二组*/}}
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>from方式类型</label>
+                        <div class="col-sm-3">
+                            <select class="form-control selectpicker" id="fromTypeSelect">
+                                <option selected:disabled style="diaplay:none" value=0>请选择</option>
+                                <option value=1>es</option>
+                                <option value=2>mongodb</option>
+                            </select>
+                            <script>
+                                $('#fromTypeSelect').on('changed.bs.select', function () {
+                                    if ($(this).val() == 0) {
+                                        dict["s_fromtype"] = ""
+                                    }else if ($(this).val() == 1) {
+                                        dict["s_fromtype"] = "es"
+                                    } else if ($(this).val() == 2) {
+                                        dict["s_fromtype"] = "mongodb"
+                                    }
+                                })
+                            </script>
+                        </div>
+                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>from地址</label>
+                        <div class="col-sm-3">
+                            <input type="text" class="form-control" id="fromdburl" placeholder="请输入地址"
+                                   value="">
+                        </div>
+                    </div>
+
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>from数据库</label>
+                        <div class="col-sm-3">
+                            <input type="text" class="form-control" id="fromdbname" placeholder="请输入数据库名"
+                                   value="">
+                        </div>
+                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>from表</label>
+                        <div class="col-sm-3">
+                            <input type="text" class="form-control" id="fromdbcoll" placeholder="请输入表名"
+                                   value="" required>
+                        </div>
+                    </div>
+                    <hr>
+                    {{/*第三组*/}}
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>to方式类型</label>
+                        <div class="col-sm-3">
+                            <select class="form-control selectpicker" id="toTypeSelect">
+                                <option selected:disabled style="diaplay:none" value=0>请选择</option>
+                                <option value=1>es</option>
+                                <option value=2>mongodb</option>
+                            </select>
+                            <script>
+                                $('#toTypeSelect').on('changed.bs.select', function () {
+                                    if ($(this).val() == 0) {
+                                        dict["s_totype"] = ""
+                                    }else if ($(this).val() == 1) {
+                                        dict["s_totype"] = "es"
+                                    } else if ($(this).val() == 2) {
+                                        dict["s_totype"] = "mongodb"
+                                    }
+                                })
+                            </script>
+                        </div>
+                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>to地址</label>
+                        <div class="col-sm-3">
+                            <input type="text" class="form-control" id="todburl" placeholder="请输入地址"
+                                   value="">
+                        </div>
+                    </div>
+                    <div class="form-group">
+                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>to数据库</label>
+                        <div class="col-sm-3">
+                            <input type="text" class="form-control" id="todbname" placeholder="请输入数据库名"
+                                   value="">
+                        </div>
+                        <label class="col-sm-2 control-label"><span style="color:red;">* </span>to表</label>
+                        <div class="col-sm-3">
+                            <input type="text" class="form-control" id="todbcoll" placeholder="请输入表明"
+                                   value="" required>
+                        </div>
+                    </div>
+                </div>
+
+            </form>
+        </div>
+    </section>
+</div>
+
+{{include "com/dialog.html"}}
+{{include "com/footer.html"}}
+<script>
+    menuActive("/service/task/list");
+    var codeType = {{.T.taskType}};
+    var dict = {
+        "id":"",
+        "s_taskname": "",
+        "s_isuse": "0",
+        "s_tasktype": "",
+        "s_startid":"",
+        "s_fromtype": "",
+        "s_fromdburl": "",
+        "s_fromdbname": "",
+        "s_fromdbcoll": "",
+        "s_totype": "",
+        "s_todburl": "",
+        "s_todbname": "",
+        "s_todbcoll": "",
+        "i_createtime": "",
+        "s_createuser": "",
+        "i_updatetime": "",
+        "s_updateuser": "",
+
+    };
+
+    //选择器添加数据
+    var index = Number(0)
+    for (var i in codeType) {
+        var name = codeType[i]["name"]
+        if (i==0) {
+            $("#taskTypeSelect").append("<option selected:disabled style=\"diaplay:none\" value="+index+">请选择</option>");
+            index++
+        }
+        $("#taskTypeSelect").append("<option value="+index+">"+name+"</option>");
+        index++
+
+    }
+
+
+
+
+
+
+    // dict["s_tagname"] = $('#tagname').val();
+    // dict["s_salesperson"] = $('#salename').val();
+    // dict["s_serverperson"] = $("#serverperson").val();
+    // dict["s_customername"] = $("#customername").val();
+    // dict["s_globaladdkey"] = $('#g_addkey').val();
+    // dict["s_globalnotkey"] = $('#g_notkey').val();
+
+
+    // if ($('#starttime').find("input").val() != "") {
+    //     var start = $('#starttime').find("input").val();
+    //     start = new Date(start).getTime() / 1000;
+    //     dataMap["i_starttime"] = start;
+    // }
+    // if ($('#endtime').find("input").val() != "") {
+    //     var end = $('#endtime').find("input").val();
+    //     end = new Date(end).getTime() / 1000;
+    //     dataMap["i_endtime"] = end;s
+    // }
+
+
+    //
+    function checkDict(data)  {
+        if (data["s_taskname"]==""||data["s_tasktype"]==""||data["s_startid"]==""||
+            data["s_fromdburl"]==""||data["s_fromdbname"]==""|| data["s_fromdbcoll"]==""||
+            data["s_fromtype"]==""|| data["s_todburl"]==""||data["s_todbname"]==""||
+            data["s_todbcoll"]==""|| data["s_totype"]=="") {
+            return true
+        }
+        return false
+    }
+    function saveTask() {
+        dict["s_taskname"] = $('#taskname').val();
+        dict["s_startid"] = $('#startid').val();
+        dict["s_fromdburl"] = $('#fromdburl').val();
+        dict["s_fromdbname"] = $("#fromdbname").val();
+        dict["s_fromdbcoll"] = $("#fromdbcoll").val();
+        dict["s_todburl"] = $('#todburl').val();
+        dict["s_todbname"] = $('#todbname').val();
+        dict["s_todbcoll"] = $("#todbcoll").val();
+
+
+        if (checkDict(dict)) {
+            let msg = "请完善所有信息"
+            showMsg(msg);
+            return;
+        }
+        $.ajax({
+            url: "/service/task/save",
+            type: 'POST',
+            data: dict,
+            success: function (task) {
+                if (task.rep) {
+                    window.location.href="/service/task/list"
+                } else {
+                    showTip("保存失败",1000);
+                }
+            }
+        })
+    }
+
+
+
+
+
+
+</script>

+ 10 - 0
src/web/templates/task/task_edit.html

@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <title>Title</title>
+</head>
+<body>
+
+</body>
+</html>

+ 124 - 0
src/web/templates/task/task_list.html

@@ -0,0 +1,124 @@
+{{include "com/inc.html"}}
+<!-- Main Header -->
+{{include "com/header.html"}}
+<!-- Left side column. 权限菜单 -->
+{{include "com/menu.html"}}
+{{include "com/modal.html"}}
+<div class="content-wrapper" id="showbtn">
+    <section class="content-header">
+        <h1>
+            <small><a href="/service/task/create" class="btn btn-primary opr">新增任务</a></small>
+        </h1>
+        <ol class="breadcrumb">
+            <li><a href="#"><i class="fa fa-dashboard"></i> 首页</a></li>
+            <li><a href="/service/task/list"> 任务列表</a></li>
+        </ol>
+    </section>
+    <!-- Main content -->
+    <section class="content">
+        <div class="row">
+            <div class="col-xs-12">
+                <div class="box">
+                    <div class="box-body">
+                        <table id="dataTable" class="table table-bordered table-hover">
+                            <thead>
+                            <tr>
+                                <th>编号</th>
+                                <th>任务名称</th>
+                                <th>修改时间</th>
+                                <th>操作</th>
+                                <th>功能</th>
+                            </tr>
+                            </thead>
+                        </table>
+                    </div>
+                    <!-- /.box-body -->
+                </div>
+                <!-- /.box -->
+            </div>
+        </div>
+    </section>
+</div>
+
+{{include "com/dialog.html"}}
+{{include "com/footer.html"}}
+<script>
+    menuActive("/task/list");
+    $(function () {
+        ttable = $('#dataTable').DataTable({
+            "paging": true,
+            "lengthChange": false,
+            "searching": true,
+            "ordering": false,
+            "info": true,
+            "autoWidth": false,
+            "serverSide": true,
+            "ajax": {
+                "url": "/service/task/list",
+                "type": "post",
+                "data": {}
+            },
+            "language": {
+                "url": "/dist/js/dataTables.chinese.lang"
+            },
+            "fnDrawCallback": function () {
+                $("ul.pagination").prepend("&nbsp;&nbsp;&nbsp;转到第 <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": null,width:"10%"},
+                {"data": "s_taskname"},
+                {"data": "i_updatetime",width:"20%", render: function (val) {
+                        var dt = new Date()
+                        dt.setTime(parseInt(val) * 1000);
+                        return dt.format("yyyy-MM-dd hh-mm-ss")
+                    }},
+                {"data": "_id", width:"20%",render: function (val, a, row, pos) {
+                        var s = [val, row.s_dataid];
+                        tmp = '<div>' +
+                            '<a class="btn btn-sm btn-primary" href="/service/task/edit?id='+val+'">编辑</a>'+
+                            '&nbsp'+'&nbsp'+
+                            '<a class="btn btn-sm btn-danger" onclick="del(\''+s+'\')">删除</a>'+
+                            '</div>';
+                        return tmp
+                    }},
+                {"data": "_id", width:"20%",render: function (val, a, row, pos) {
+                        var s = [val, row.s_dataid];
+                        tmp = '<div>' +
+                            '<a class="btn btn-sm btn-primary" onclick="del(\''+s+'\')">启动</a>'+
+                            '&nbsp'+'&nbsp'+
+                            '<a class="btn btn-sm btn-danger" onclick="del(\''+s+'\')">关闭</a>'+
+                            '</div>';
+                        return tmp
+                    }}
+            ]
+        });
+    });
+
+    function del(s){
+        showConfirm("确定删除?", function() {
+            $.ajax({
+                url:"/service/task/del",
+                type:"post",
+                data:{"_id": s.split(",")[0], "s_dataid": s.split(",")[1]},
+                success:function(r){
+                    if(r.rep){
+                        ttable.ajax.reload();
+                    }else{
+                        alert("删除失败");
+                    }
+                }
+            })
+        });
+    }
+
+</script>