unknown 6 年之前
父節點
當前提交
dd307568e1

+ 3 - 1
src/jy/admin/task/task.go

@@ -20,7 +20,9 @@ func init() {
 	Admin.GET("/task", func(c *gin.Context) {
 		c.HTML(200, "task_list.html", nil)
 	})
-
+	Admin.GET("/taskclear", func(c *gin.Context) {
+		c.HTML(200, "task_clear_list.html", nil)
+	})
 	//获取任务列表
 	Admin.POST("/task/list", func(c *gin.Context) {
 		data, _ := Mgo.Find("task", ``, `{"_id":-1}`, nil, false, -1, -1)

+ 172 - 2
src/jy/admin/version.go

@@ -4,7 +4,6 @@ package admin
 import (
 	. "jy/mongodbutil"
 	"jy/util"
-	"log"
 	"net/http"
 	qu "qfw/util"
 	"strings"
@@ -21,6 +20,13 @@ func init() {
 			gin.H{},
 		)
 	})
+	Admin.GET("/clearversion", func(c *gin.Context) {
+		c.HTML(
+			http.StatusOK, "clearversion.html",
+			gin.H{},
+		)
+	})
+	//任务版本
 	Admin.POST("/version/data", func(c *gin.Context) {
 		data, _ := Mgo.Find("version", `{"delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
 		c.JSON(200, gin.H{"data": data})
@@ -49,7 +55,6 @@ func init() {
 				}
 				if iscopyfiled {
 					list, _ := Mgo.Find("versioninfo", `{"vid":"`+s_pversionid+`","delete":false}`, nil, nil, false, -1, -1)
-					log.Println(s_pversionid, len(*list))
 					for _, v := range *list {
 						delete(v, "_id")
 						v["l_createtime"] = time.Now().Unix()
@@ -236,6 +241,171 @@ func init() {
 		//b := Mgo.Del("versioninfo", `{"_id":"`+_id+`"}`)
 		c.JSON(200, gin.H{"rep": b})
 	})
+
+	//清理版本
+	Admin.POST("/clearversion/data", func(c *gin.Context) {
+		data, _ := Mgo.Find("clearversion", `{"delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
+		c.JSON(200, gin.H{"data": data})
+	})
+	Admin.POST("/clearversion/save", func(c *gin.Context) {
+		_id, _ := c.GetPostForm("_id")
+		data := GetPostForm(c)
+		if _id != "" {
+			Mgo.UpdateById("clearversion", _id, map[string]interface{}{"$set": data})
+			c.JSON(200, gin.H{"rep": true})
+		} else {
+			clearversion, _ := c.GetPostForm("clearversion")
+			tmp, _ := Mgo.FindOne("version", `{"clearversion":"`+clearversion+`","delete":false}`)
+			if len(*tmp) > 0 {
+				c.JSON(200, gin.H{"rep": false})
+			} else {
+				//				s_pversionid, _ := c.GetPostForm("s_pversionid")
+				//				iscopyfiled, _ := data["iscopyfiled"].(bool)
+				data["l_createtime"] = time.Now().Unix()
+				s_username := sessions.Default(c).Get("username").(string)
+				data["s_username"] = s_username
+				data["delete"] = false
+				Mgo.Save("clearversion", data)
+				//				vid := Mgo.Save("clearversion", data)
+				//				if s_pversionid != "" {
+				//					copyComRules(version, s_pversionid, s_username)
+				//				}
+				//				if iscopyfiled {
+				//					list, _ := Mgo.Find("versioninfo", `{"vid":"`+s_pversionid+`","delete":false}`, nil, nil, false, -1, -1)
+				//					for _, v := range *list {
+				//						delete(v, "_id")
+				//						v["l_createtime"] = time.Now().Unix()
+				//						v["s_username"] = sessions.Default(c).Get("username")
+				//						v["l_lasttime"] = time.Now().Unix()
+				//						v["vid"] = vid
+				//						v["delete"] = false
+				//						pid := Mgo.Save("versioninfo", v)
+				//						s_field := qu.ObjToString(v["s_field"])
+				//						//克隆属性配置
+				//						copyFieldRules(vid, pid, s_field, s_pversionid, s_username)
+				//					}
+				//					//克隆分包属性
+				//					list2, _ := Mgo.Find("pkg_info", `{"vid":"`+s_pversionid+`","delete":false}`, nil, nil, false, -1, -1)
+				//					for _, v := range *list2 {
+				//						delete(v, "_id")
+				//						v["l_createtime"] = time.Now().Unix()
+				//						v["s_username"] = sessions.Default(c).Get("username")
+				//						v["l_lasttime"] = time.Now().Unix()
+				//						v["vid"] = vid
+				//						v["delete"] = false
+				//						pid := Mgo.Save("pkg_info", v)
+				//						s_field := qu.ObjToString(v["s_field"])
+				//						//克隆属性配置
+				//						copyPkgRules(vid, pid, s_field, s_pversionid, s_username)
+				//					}
+				//				}
+				c.JSON(200, gin.H{"rep": true})
+			}
+		}
+	})
+	Admin.POST("/clearversion/use", func(c *gin.Context) {
+		_id, _ := c.GetPostForm("_id")
+		isuse, _ := c.GetPostForm("isuse")
+		if isuse == "true" { //启用确保只有一个版本
+			l, _ := Mgo.Find("clearversion", `{"isuse":true}`, nil, nil, false, -1, -1)
+			if len(*l) > 0 {
+				c.JSON(200, gin.H{"rep": false})
+				return
+			}
+		}
+		bisuse := false
+		if isuse == "true" {
+			bisuse = true
+		}
+		set := map[string]interface{}{
+			"$set": map[string]interface{}{
+				"isuse": bisuse,
+			},
+		}
+		b := Mgo.UpdateById("clearversion", _id, set)
+		c.JSON(200, gin.H{"rep": b})
+	})
+	Admin.POST("/clearversion/del", func(c *gin.Context) { //删除版本
+		_id, _ := c.GetPostForm("_id")
+		//s_version, _ := c.GetPostForm("clearversion")
+		b := Mgo.UpdateById("clearversion", _id, `{"$set":{"delete":true}}`)
+		//b := Mgo.Del("version", `{"_id":"`+_id+`"}`)
+		//级联删除
+		//刪除属性配置
+		//删除分包配置
+		//删除逻辑
+		//删除属性配置中的前置规则
+		//删除属性配置中的抽取规则
+		//删除属性配置中的后置规则
+
+		//刪除属性配置
+		//go DelVersionInfo(_id)
+		//删除分包配置
+		//go DelPkgInfo(_id)
+		//删除版本的通用前置规则
+		//go DelRulePre(s_version)
+		//删除版本的通用后置规则
+		//go DelRuleBack(s_version)
+		//删除标签库
+		//go DelTag(s_version)
+		//删除版本的通用前置规则
+		//go DelCleanUp(s_version)
+		c.JSON(200, gin.H{"rep": b})
+	})
+	Admin.GET("/clearversion/info", func(c *gin.Context) {
+		vid := c.Query("vid")
+		v, _ := Mgo.Find("clearversion", `{}`, `{"_id":-1}`, `{"version":1}`, false, -1, -1)
+		c.HTML(
+			http.StatusOK, "clearversioninfo.html",
+			gin.H{"vid": vid, "clearversions": v},
+		)
+	})
+	Admin.POST("/clearversion/infodata", func(c *gin.Context) {
+		vid, _ := c.GetPostForm("vid")
+		list, _ := Mgo.Find("clearversioninfo", `{"vid":"`+vid+`","delete":false}`, `{"_id":-1}`, nil, false, -1, -1)
+		c.JSON(200, gin.H{"data": list, "vid": vid})
+	})
+	Admin.POST("/clearversion/infosave", func(c *gin.Context) {
+		_id, _ := c.GetPostForm("_id")
+		data := GetPostForm(c)
+		if _id != "" {
+			Mgo.UpdateById("clearversioninfo", _id, map[string]interface{}{"$set": data})
+			c.JSON(200, gin.H{"rep": true})
+		} else {
+			s_field, _ := c.GetPostForm("s_field")
+			vid, _ := c.GetPostForm("vid")
+			tmp, _ := Mgo.FindOne("clearversioninfo", `{"s_field":"`+s_field+`","vid":"`+vid+`","delete":false}`)
+			if len(*tmp) > 0 {
+				c.JSON(200, gin.H{"rep": false})
+			} else {
+				data["l_createtime"] = time.Now().Unix()
+				data["s_username"] = sessions.Default(c).Get("username")
+				data["l_lasttime"] = time.Now().Unix()
+				data["delete"] = false
+				Mgo.Save("clearversioninfo", data)
+				//				pid := Mgo.Save("clearversioninfo", data)
+				fromvid, _ := data["s_pversionid"].(string)
+				if fromvid != "" {
+					//					copyFieldRules(vid, pid, s_field, fromvid, sessions.Default(c).Get("username").(string))
+				}
+				c.JSON(200, gin.H{"rep": true})
+			}
+		}
+	})
+	Admin.POST("/clearversion/infouse", func(c *gin.Context) {
+		_id, _ := c.GetPostForm("_id")
+		isuse, _ := c.GetPostForm("isuse")
+		b := Mgo.UpdateById("clearversioninfo", _id, `{"$set":{"isuse":`+isuse+`}}`)
+		c.JSON(200, gin.H{"rep": b})
+	})
+	Admin.POST("/clearversion/infodel", func(c *gin.Context) {
+		_id, _ := c.GetPostForm("_id")
+		b := Mgo.UpdateById("clearversioninfo", _id, `{"$set":{"delete":true}}`)
+		//		v, _ := Mgo.FindById("clearversioninfo", _id, `{"vid":1}`)
+		//		go DelLogic(qu.ObjToString((*v)["vid"]), _id)
+		c.JSON(200, gin.H{"rep": b})
+	})
+
 }
 
 //克隆版本通用属性

+ 195 - 0
src/web/templates/admin/clearversion.html

@@ -0,0 +1,195 @@
+{{template "inc"}}
+<!-- Main Header -->
+{{template "header"}}
+<!-- Left side column. 权限菜单 -->
+{{template "memu"}}
+
+<!-- Content Wrapper. Contains page content -->
+<div class="content-wrapper">
+	<section class="content-header">
+		<h1>
+			<small><a class="btn btn-primary opr" opr="new">新增清理版本</a></small>
+		</h1>
+		<ol class="breadcrumb">
+		  <li><a href="/admin/version"><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">
+		            <table id="dataTable" class="table table-bordered table-hover">
+		              <thead>
+		              <tr>
+		                <th>版本号</th>
+						<th>创建人</th>
+						<th>描述</th>
+						<th>是否启用</th>
+						<th>通用规则</th>
+						<th>操作</th>
+		              </tr>
+		              </thead>
+		            </table>
+		        </div>
+	          <!-- /.box-body -->
+	        </div>
+        <!-- /.box -->
+		</div>
+	</div>
+  </section>
+</div>
+	
+<!-- footer -->
+{{template "dialog"}}
+{{template "footer"}}
+
+<script>
+menuActive("clearversion")
+$(function () {
+	ttable=$('#dataTable').DataTable({
+		"paging"      : false,
+		"lengthChange": false,
+		"searching"   : true,
+		"ordering"    : false,
+		"info"        : true,
+		"autoWidth"   : false,
+		"ajax": {
+			"url": "/admin/clearversion/data",
+			"type": "post",
+			"data":{}
+		},
+		"language": {
+            "url": "/res/dist/js/dataTables.chinese.lang"
+        },
+		"columns": [
+            { "data": "clearversion"},
+			{ "data": "s_username"},
+			{ "data": "s_descript","width":"25%"},
+			{ "data": "isuse",render:function(val,a,row){
+				tmp=""
+				if(val){
+					tmp="<a href='#' title='停用' onclick='use(\""+row._id+"\","+false+")'><i class='fa fa-fw fa-circle text-green'></i></a>已启用"
+				}else{
+					tmp="<a href='#' title='启用' onclick='use(\""+row._id+"\","+true+")'><i class='fa fa-fw fa-circle text-red'></i></a>未启用"
+				}
+				return tmp
+			}},
+			{ "data":"_id",render:function(val,a,row){
+				return '<div class="btn-group">'+
+						'<a class="btn btn-sm btn-success" href="/admin/clearversion/info?vid='+val+'" >属性配置</a>'+
+					'</div>';
+			}},
+			{ "data":"_id","width":"25%",render:function(val,a,row){
+				return '<div class="btn-group">'+
+						//'<a class="btn btn-sm btn-success" href="/admin/version/info?vid='+val+'" >属性配置</a>'+
+						//'<a class="btn btn-sm btn-info" href="/admin/version/pkginfo?vid='+val+'" >分包配置</a>'+
+						'<a class="btn btn-sm btn-primary opr" opr="edit">编&nbsp;&nbsp;辑</a>'+
+						'<a class="btn btn-sm btn-danger" href="#" onclick="del(\''+val+'\',\''+row["clearversion"]+'\')">删&nbsp;&nbsp;除</a>'
+					'</div>';
+			}}
+       	]
+	});
+	ttable.on('init.dt', function () {
+		$(".opr").click(function(){
+			var n=$(this).attr("opr")
+			var _tit="",htmlObj={},obj,tag=[]
+			switch(n){
+			case "edit":
+				obj=ttable.row($(this).closest("tr")).data();
+			case "new":
+				tag=[
+					{label:"版本名称",s_label:"clearversion",placeholder:"版本名称",must:true},
+					{label:"描述",s_label:"s_descript",placeholder:"描述信息",must:true},
+					//{label:"城市抽取",s_label:"isextractcity",type:"tpl_list_local",list:[{"s_name":"是","_id":true},{"s_name":"否","_id":false}],default:false},
+					{label:"克隆版本",s_label:"s_pversionid",type:"tpl_list_local"},//url:"/admin/getversions"},
+					{label:"克隆属性",s_label:"iscopyfiled",type:"tpl_list_local",list:[{"s_name":"是","_id":true},{"s_name":"否","_id":false}],default:false},
+					{s_label:"isuse",type:"tpl_hidden"},
+					{s_label:"_id",type:"tpl_hidden"}
+				]
+				if(n == "new"){
+					_tit="新增清理版本";
+				}else{
+					_tit="编辑版本";
+					tag[0]={label:"版本名称",s_label:"clearversion",placeholder:"版本名称",must:true,disabled:true}
+				}
+				htmlObj={
+					title:_tit,
+					tag:tag,
+					bts:[
+						{label:"保存",class:"btn-primary",
+							fun:function(){
+								var obj={}
+								var bcon=true
+								$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+									var val=$(el).val();
+									obj[el.id]=$(el).val()
+									if(el.id!="_id"&&$(el).attr("must")&&!val){
+										bcon=false
+										return false
+									}
+								})
+								if (bcon){	
+									if(obj.isuse != "true"){
+										obj.isuse = false
+									}
+									$.post("/admin/clearversion/save",obj,function(data){
+										if(data&&data.rep){
+											window.location.href="/admin/clearversion"			
+										}else{
+											showTip("已存在!",1000)
+										}
+									},'json')
+								}else{
+									alert("红色标签的表单不能为空!")
+								}
+							}
+						}
+					]
+				}
+			OpenDialog(htmlObj,obj)
+			break;
+			}
+		});
+	})
+})
+function use(_id,isuse){
+	smg=""
+	if(isuse){
+		smg="确定启用?"
+	}else{
+		smg="确定停用?"
+	}
+	showConfirm(smg, function() {
+		$.ajax({
+			url:"/admin/clearversion/use",
+			type:"post",
+			data:{"_id":_id,"isuse":isuse},
+			success:function(r){
+				if(r.rep){				
+					window.location.href="/admin/clearversion"	
+				}else{
+					showTip("启用失败", 1000, function() {});
+				}
+			}
+		})
+	});
+}
+function del(_id,clearversion){
+	showConfirm("确定删除?", function() {
+		$.ajax({
+			url:"/admin/clearversion/del",
+			type:"post",
+			data:{"_id":_id,"clearversion":clearversion},
+			success:function(r){
+				if(r.rep){				
+					window.location.href="/admin/clearversion"
+				}else{
+					showTip("删除失败", 1000, function() {});
+				}
+			}
+		})
+	});
+}
+</script>

+ 189 - 0
src/web/templates/admin/clearversioninfo.html

@@ -0,0 +1,189 @@
+{{template "inc"}}
+<!-- Main Header -->
+{{template "header"}}
+<!-- Left side column. 权限菜单 -->
+{{template "memu"}}
+
+<!-- Content Wrapper. Contains page content -->
+<div class="content-wrapper">
+	<section class="content-header">
+		<h1>
+			<small><a class="btn btn-primary opr" opr="new">新增清理字段</a></small>
+		</h1>
+		<ol class="breadcrumb">
+		  <li><a href="/admin/version"><i class="fa fa-dashboard"></i>版本管理</a></li>
+		  <li class="active"><a href="/admin/version/info?vid={{.vid}}">属性配置</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>
+						<th>操作</th>
+		              </tr>
+		              </thead>
+		            </table>
+		        </div>
+	          <!-- /.box-body -->
+	        </div>
+        <!-- /.box -->
+		</div>
+	</div>
+  </section>
+</div>
+	
+<!-- footer -->
+{{template "dialog"}}
+{{template "footer"}}
+
+<script>
+menuActive("clearversion");
+$(function () {
+	ttable=$('#dataTable').DataTable({
+		"paging"      : false,
+		"lengthChange": false,
+		"searching"   : true,
+		"ordering"    : false,
+		"info"        : true,
+		"autoWidth"   : false,
+		"language": {
+            "url": "/res/dist/js/dataTables.chinese.lang"
+        },
+		"ajax": {
+			"url": "/admin/clearversion/infodata",
+			"type": "post",
+			"data":{"vid":{{ .vid}} }
+		 },
+		"columns": [
+			{ "data": "s_field"},
+			{ "data": "s_descrip"},
+			{ "data": "s_username"},
+			{ "data": "isuse",render:function(val,a,row){
+				tmp=""
+				if(val){
+					tmp="<a href='#' title='停用' onclick='use(\""+row._id+"\","+false+")'><i class='fa fa-fw fa-circle text-green'></i></a>已启用"
+				}else{
+					tmp="<a href='#' title='启用' onclick='use(\""+row._id+"\","+true+")'><i class='fa fa-fw fa-circle text-red'></i></a>未启用"
+				}
+				return tmp
+			}},
+			{"data":"_id",render:function(val,a,row){
+				return '<a class="btn btn-sm btn-success" href="/admin/rulelogic?vid={{.vid}}&pid='+val+'">配置逻辑</a>'
+			}},
+			{"data":"_id",render:function(val,a,row){
+				return '<a class="btn btn-sm btn-primary opr" opr="edit">编辑</a>&nbsp;<a class="btn btn-sm btn-danger" href="#" onclick="del(\''+val+'\')">删除</a>'
+			}}
+       	]
+	});
+	ttable.on('init.dt', function () {
+		$(".opr").click(function(){
+			var n=$(this).attr("opr")
+			var _tit="",htmlObj={},obj,tag=[]
+			switch(n){
+			case "edit":	
+                obj=ttable.row($(this).closest("tr")).data()		
+			case "new":
+                tag=[
+						{label:"属性名称",s_label:"s_field",type:"tpl_list_local",url:"/admin/getfields",must:true},
+						{label:"描述",s_label:"s_descrip",placeholder:"描述信息"},
+						//{label:"是否审核",s_label:"isaudit",type:"tpl_list_local",list:[{"s_name":"是","_id":true},{"s_name":"否","_id":false}],default:false},
+						{label:"克隆版本",s_label:"s_pversionid",type:"tpl_list_local",url:"/admin/getversions"},
+                        {s_label:"_id",type:"tpl_hidden"},
+						{s_label:"vid",type:"tpl_hidden"},
+						{s_label:"isuse",type:"tpl_hidden"},
+					]
+				if(n=="edit"){
+					_tit="编辑-"+obj.s_field
+                    tag[0]={label:"属性名称",s_label:"s_field",type:"tpl_list_local",url:"/admin/getfields",must:true,disabled:true}
+                    tag[2]={label:"克隆版本",s_label:"s_pversionid",type:"tpl_list_local",url:"/admin/getversions",disabled:true}
+				}else{
+					_tit="新增清理字段"
+					obj={"vid":"{{.vid}}","isuse":false}
+				}
+				htmlObj={
+					title:_tit,
+					tag:tag,
+					bts:[
+						{label:"保存",class:"btn-primary",
+							fun:function(){
+								var obj={}
+								var bcon=true
+								$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+									var val=$(el).val();
+									obj[el.id]=$(el).val()
+									if(el.id!="_id"&&$(el).attr("must")&&!val){
+										bcon=false
+										return false
+									}
+								})
+								if (bcon){	
+                                    //console.log(obj)							
+									$.post("/admin/clearversion/infosave",obj,function(data){
+										if(data&&data.rep){
+											window.location.href="/admin/clearversion/info?vid={{.vid}}"			
+										}else{
+											showTip("已存在!",1000)
+										}
+									},'json')
+								}else{
+									alert("红色标签的表单不能为空!")
+								}
+							}
+						}
+					]
+				}
+			OpenDialog(htmlObj,obj)
+			break;
+			}
+		});
+	})
+})
+function use(_id,isuse){
+	smg=""
+	if(isuse){
+		smg="确定启用?"
+	}else{
+		smg="确定停用?"
+	}
+	showConfirm(smg, function() {
+		$.ajax({
+			url:"/admin/clearversion/infouse",
+			type:"post",
+			data:{"_id":_id,"isuse":isuse},
+			success:function(r){
+				if(r.rep){				
+					window.location.href="/admin/clearversion/info?vid={{.vid}}"
+				}else{
+					showTip("启用失败", 1000, function() {});
+				}
+			}
+		})
+	});
+}
+function del(_id){
+	showConfirm("确定删除?", function() {
+		$.ajax({
+			url:"/admin/clearversion/infodel",
+			type:"post",
+			data:{"_id":_id},
+			success:function(r){
+				if(r.rep){				
+					ttable.ajax.reload();
+				}else{
+					showTip("删除失败", 1000, function() {});
+				}
+			}
+		})
+	});
+}
+</script>

+ 13 - 1
src/web/templates/admin/com_memu.html

@@ -12,10 +12,22 @@
           	</a>
           	<ul class="treeview-menu">
 	            <li><a href="/admin/task"><i class="fa fa-link"></i>抽取任务</a></li>
+				<li><a href="/admin/taskclear"><i class="fa fa-link"></i>清理任务</a></li>
 				<li><a href="/admin/task/export"><i class="fa fa-link"></i>导出任务</a></li>
 			</ul>
         </li>
-		<li><a href="/admin/version"><i class="fa fa-navicon"></i><span>版本管理</span></a></li>
+		<li class="treeview">
+          	<a href="#"><i class="fa fa-clock-o"></i> <span>版本管理</span>
+            <span class="pull-right-container">
+                <i class="fa fa-angle-left pull-right"></i>
+            </span>
+          	</a>
+          	<ul class="treeview-menu">
+	            <li><a href="/admin/version"><i class="fa fa-link"></i>抽取版本</a></li>
+				<li><a href="/admin/clearversion"><i class="fa fa-link"></i>清理版本</a></li>
+			</ul>
+        </li>
+		<!--<li><a href="/admin/version"><i class="fa fa-navicon"></i><span>版本管理</span></a></li>-->
 		<li><a href="/admin/audit/recogfield"><i class="fa fa-navicon"></i><span>质量审核</span></a></li>
 		<li class="treeview">
           	<a href="#"><i class="fa fa-laptop"></i> <span>统计</span>

+ 244 - 0
src/web/templates/admin/task_clear_list.html

@@ -0,0 +1,244 @@
+{{template "inc"}}
+<!-- Main Header -->
+{{template "header"}}
+<!-- Left side column. 权限菜单 -->
+{{template "memu"}}
+
+<div class="content-wrapper">
+	<section class="content-header">
+		<h1>
+			<small><a class="btn btn-primary opr" opr="new">新增清理任务</a></small>
+		</h1>
+		<ol class="breadcrumb">
+		  <li><a href="/admin/task/list"><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">
+		            <table id="dataTable" class="table table-bordered table-hover">
+		              <thead>
+		              <tr>
+		                <th>任务名称</th> <th>创建时间</th> <th>创建人</th> <th>描述</th><th>运行状态</th> <th>操作</th>
+		              </tr>
+		              </thead>
+		            </table>
+		        </div>
+	          <!-- /.box-body -->
+	        </div>
+        <!-- /.box -->
+		</div>
+	</div>
+  </section>
+</div>
+{{template "dialog"}}
+{{template "footer"}}
+<script>
+menuActive("taskclear")
+$(function () {
+	ttable=$('#dataTable').DataTable({
+		"paging"      : false,
+		"lengthChange": false,
+		"searching"   : false,
+		"ordering"    : false,
+		"info"        : true,
+		"autoWidth"   : false,
+		"ajax": {
+			"url": "/admin/task/list",
+			"type": "post",
+			"data":{}
+		 },
+		"language": {
+            "url": "/res/dist/js/dataTables.chinese.lang"
+        },
+		"columns": [
+            { "data": "s_taskname"},
+			{ "data": "l_createtime",render:function(val){
+				var dt=new Date()
+				dt.setTime(parseInt(val)*1000)
+				return dt.format("yyyy-MM-dd hh:mm:ss")
+			}},
+			{ "data": "s_username"},
+			{ "data": "s_descript","width":"25%"},
+			{ "data": "runstatus",render:function(val){
+				if(val){
+					return "<i class='fa fa-fw fa-circle text-green'></i>运行中"
+				}else{
+					return "<i class='fa fa-fw fa-circle text-danger'></i>未启动"
+				}
+			}},
+			{ "data":"_id","width":"25%",render:function(val,a,row,pos){
+				tmp = '<div>'+
+					'<a class="btn btn-sm btn-primary opr" opr="edit" row="'+pos.row+'" >编辑</a> '+
+					'<a class="btn btn-sm btn-success opr" opr="start" onclick="start(\''+row._id+'\')">启动</a> '+
+					'<a class="btn btn-sm btn-info opr" opr="stop" onclick="stop(\''+row._id+'\')">停止</a> '+
+					//'<a class="btn btn-sm btn-warning opr" opr="test" taskid="'+val+'">测试</a>'+
+					'</div>';
+				return  tmp
+			}}
+       	]
+	});
+	ttable.on('init.dt', function () {
+		$(".opr").click(function(){
+			var n=$(this).attr("opr");
+			var taskid=$(this).attr("taskid");
+			var htmlObj={},obj,tag=[],bts=[];
+			var _tit="";
+			switch(n){
+			case "edit":			
+				obj=ttable.row($(this).closest("tr")).data();	
+			case "test":
+				obj=ttable.row($(this).closest("tr")).data();
+			case "new":
+				/*表单*/
+				addtask=[
+					{label:"任务名称",s_label:"s_taskname",placeholder:"剑鱼抽取",must:true},
+					{label:"源库连接",s_label:"s_mgoaddr",must:true},
+					{label:"源数据库",s_label:"s_mgodb",must:true},
+					{label:"源表",s_label:"s_mgocoll",must:true},
+					{label:"保存表",s_label:"s_mgosavecoll",placeholder:"127.0.0.1:27080/extract/bidding(数据库地址/数据库/表)",must:true},
+					{label:"描述",s_label:"s_descript",type:"tpl_text"},
+					/*
+					{label:"是否追踪",s_label:"i_track",type:"tpl_list_local",must:true,list:[{"s_name":"是","_id":1},{"s_name":"否","_id":0}],default:0,fun:function(){
+						var to=$("#i_track")					
+						to.val($(this).attr("_id"))
+						$("#s_show",to.closest("div")).val($(this).text())
+						//追踪表样式
+						$("#s_trackcoll").attr("must",$(this).attr("_id")==1)
+						$("#s_trackcoll").closest("div.row").find("label").css("color",$(this).attr("_id")==1?"red":"")
+					}},
+					{label:"追踪记录表",s_label:"s_trackcoll",must:function(){
+						return  obj&&obj.i_track
+					}()},
+					{label:"是否统计",s_label:"i_count",type:"tpl_list_local",must:true,list:[{"s_name":"是","_id":1},{"s_name":"否","_id":0}],default:0},
+					*/
+					{label:"使用版本",s_label:"s_version",type:"tpl_list_local",must:true,url:"/admin/task/getversion"},
+					{label:"并发数量",s_label:"i_process",placeholder:"5",must:true},
+					{s_label:"_id",type:"tpl_hidden"},
+					{label:"起始id",s_label:"s_extlastid",must:true}
+				];
+				/*testtask=[
+					{label:"起始id",s_label:"s_startid",must:true},
+					{label:"数据数量",s_label:"s_datanum",placeholder:"5",must:true}
+				];*/
+				/*按钮*/
+				//新增保存按钮
+				addtaskbtn=[
+					{label:"保存",class:"btn-primary",
+						fun:function(){
+							var obj={}
+							var bcon=true
+							$("#_con").find("input[id!=s_show],textarea").each(function(i,el){
+								var val=$(el).val();
+								if(el.id!="_id"&&$(el).attr("must")&&!val){
+									bcon=false
+									return false
+								}
+								obj[el.id]=$(el).val()
+							})
+							if (bcon){								
+								$.post("/admin/task/save",obj,function(data){
+									if(data&&data.rep){
+										window.location.href="/admin/task"								
+									}else{
+										alert(data.msg)
+									}
+								},'json')
+							}else{
+								alert("红色标签的表单不能为空!")
+							}
+						}
+					}
+				];
+				//测试启动按钮
+				/*testtaskbtn=[
+					{label:"Run",class:"btn-danger",
+						fun:function(){
+							var reg = /^[0-9]*$/;
+							var id = $("#s_startid").val();
+							var num = $("#s_datanum").val();
+							var bcon = true;
+							if(id == ""){
+								bcon = false;
+								alert("红色标签的表单不能为空!");
+								return
+							}
+							if(num != ""){//验证数字
+								if(!reg.test(num)){
+									bcon = false;
+									alert("数据数量填写错误!");
+									return
+								}
+							}else{
+								num = "5";
+							}
+							if(bcon){								
+								$.post("/admin/task/test",{"startid":id,"num":num,"taskid":taskid},function(data){
+									if(data&&data.rep){
+										$("#myModal").modal("hide");
+										alert("测试完成!");								
+									}else{
+										alert("起始id输入错误!");	
+									}
+								},'json')
+								
+							}else{
+								alert("红色标签的表单不能为空!")
+							}
+						}
+					}
+				];*/
+				
+				if(n == "new"){
+					_tit="新增抽取任务";
+					tag = com.pushArry(tag,addtask);
+					bts = com.pushArry(bts,addtaskbtn);
+				//}else if(n == "test"){
+				//	_tit="测试任务";
+				//	tag = com.pushArry(tag,testtask);
+				//	bts = com.pushArry(bts,testtaskbtn);
+				}else if(n == "edit"){
+					_tit="编辑-"+obj.s_taskname;
+					tag = com.pushArry(tag,addtask);
+					bts = com.pushArry(bts,addtaskbtn);
+				}
+				htmlObj={
+					title:_tit,
+					tag:tag,
+					bts:bts
+				}
+			OpenDialog(htmlObj,obj)
+			break;
+			}
+		});
+	})
+	
+})
+function start(_id){
+	showConfirm("确定启动?", function() {
+		$.ajax({
+			url:"/admin/task/start",
+			type:"post",
+			data:{"_id":_id},
+			success:function(r){
+				window.location.reload()
+			}
+		})
+	});
+}
+function stop(_id){
+	showConfirm("确定启动?", function() {
+		$.ajax({
+			url:"/admin/task/stop",
+			type:"post",
+			data:{"_id":_id},
+			success:function(r){
+				window.location.reload()
+			}
+		})
+	});
+}
+</script>