V2.7 增加agent执行器
This commit is contained in:
@@ -74,7 +74,7 @@
|
||||
title:"新增禁用命令",
|
||||
content: '/ban/add',
|
||||
area:['500px','250px'],
|
||||
cancel:function(){
|
||||
cancel:function(index){
|
||||
window.location.reload();
|
||||
layer.close(index);
|
||||
}
|
||||
@@ -92,7 +92,7 @@
|
||||
title:"编辑禁用命令",
|
||||
content: '/ban/edit?id='+data.id,
|
||||
area:['500px','250px'],
|
||||
cancel:function(){
|
||||
cancel:function(index){
|
||||
window.location.reload();
|
||||
layer.close(index);
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@
|
||||
|
||||
<div class="layui-footer" style="border-top: 2px solid #e4e4e4">
|
||||
<!-- 底部固定区域 -->
|
||||
© Power by <a href="http://www.haodaquan.com/" target="_blank">PPGo_Job V2.6 </a>
|
||||
© Power by <a href="http://www.haodaquan.com/" target="_blank">PPGo_Job {{.version}}</a>
|
||||
</div>
|
||||
</div>
|
||||
<script src="/static/layui/layui.js"></script>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
|
||||
<div style="margin: 10px 0px">
|
||||
<blockquote class="layui-elem-quote">
|
||||
说明:提交之前请先测试服务器资源是否可以连通
|
||||
说明:提交之前请先测试执行器资源是否可以连通
|
||||
</blockquote>
|
||||
</div>
|
||||
<form class="layui-form" action="" method="post" >
|
||||
|
||||
@@ -23,12 +23,13 @@
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="radio" name="connection_type" lay-verify="type" value="0" title="SSH" {{if eq .server.connection_type 0}}checked{{end}}>
|
||||
<input type="radio" name="connection_type" lay-verify="type" value="1" title="Telnet" {{if eq .server.connection_type 1}}checked{{end}}>
|
||||
<input type="radio" name="connection_type" lay-verify="type" value="2" title="Agent" {{if eq .server.connection_type 2}}checked{{end}}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">服务器名称</label>
|
||||
<label class="layui-form-label mw200">器名称</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="server_name" id="server_name" lay-verify="required" autocomplete="off" placeholder="服务器名称" class="layui-input" value="{{.server.server_name}}">
|
||||
</div>
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="radio" name="connection_type" lay-verify="type" value="0" title="SSH" {{if eq .server.connection_type 0}}checked{{end}}>
|
||||
<input type="radio" name="connection_type" lay-verify="type" value="1" title="Telnet" {{if eq .server.connection_type 1}}checked{{end}}>
|
||||
<input type="radio" name="connection_type" lay-verify="type" value="2" title="Agent" {{if eq .server.connection_type 2}}checked{{end}}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<form class="layui-form" action="" onsubmit="javascript:return false;">
|
||||
<div class="demoTable">
|
||||
<div class="layui-inline" style="width: 40%">
|
||||
<input class="layui-input" name="serverName" id="serverName" autocomplete="off" placeholder="资源名称" >
|
||||
<input class="layui-input" name="serverName" id="serverName" autocomplete="off" placeholder="执行资源名称" >
|
||||
</div>
|
||||
<div class="layui-inline" style="width: 20%;text-align: left;">
|
||||
<select name="serverGroupId" id="serverGroupId">
|
||||
@@ -53,13 +53,12 @@
|
||||
,url: '/server/table'
|
||||
,cols: [[
|
||||
// {checkbox: true, fixed: true},
|
||||
{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
||||
,{field:'server_name',title: '资源名称'}
|
||||
,{field:'group_name',title: '分组名称'}
|
||||
,{field:'connection_type', title: '连接类型'}
|
||||
,{field:'type', title: '登录类型'}
|
||||
{field:'id', title: 'ID', align:'center',sort: true, width:80}
|
||||
,{field:'server_name',title: '执行资源名称',width:350}
|
||||
,{field:'connection_type', title: '类型',width:100}
|
||||
,{field:'ip_port', title: 'IP端口'}
|
||||
,{field:'group_name',title: '分组名称',width:200}
|
||||
,{field:'detail', title: '备注'}
|
||||
// ,{field:'status_text', title: '状态'}
|
||||
,{fixed: 'right', width:160, align:'center', toolbar: '#bar'}
|
||||
]]
|
||||
,id: 'listReload'
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
|
||||
<form class="layui-form" action="" method="post">
|
||||
<div class="layui-form-item">
|
||||
@@ -14,7 +15,7 @@
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">所属分组</label>
|
||||
<label class="layui-form-label mw200">任务分组</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="group_id" lay-verify="required">
|
||||
{{range $k, $v := .taskGroup}}
|
||||
@@ -25,28 +26,35 @@
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">服务器资源</label>
|
||||
<div class="layui-block">
|
||||
<div class="layui-col-md3"></div>
|
||||
<div class="layui-col-md9">
|
||||
<div style="margin-bottom: 20px;">
|
||||
<input type="checkbox" name="server_id" lay-skin="primary" title="本地服务器" value="0">
|
||||
</div>
|
||||
<div class="layui-row layui-col-space10">
|
||||
{{range $k, $v := .serverGroup}}
|
||||
<div class="layui-col-md12" ><i class="layui-icon"></i> {{$v.GroupName}}</div>
|
||||
<label class="layui-form-label mw200">执行资源</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<select name="server_id" lay-verify="required" lay-search xm-select="select_server" >
|
||||
<option value="">请选择</option>
|
||||
<option value="0">本机执行</option>
|
||||
{{range $k, $v := .serverGroup}}
|
||||
<optgroup label="{{$v.GroupName}}">
|
||||
{{range $kk, $vv := $v.Servers}}
|
||||
<div class="layui-col-md4">
|
||||
<input type="checkbox" name="server_id" lay-skin="primary" title="{{$vv}}" value="{{$kk}}">
|
||||
</div>
|
||||
<option value="{{$kk}}">{{$vv}}</option>
|
||||
{{end}}
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
</optgroup>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">执行策略</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="radio" name="server_type" value="0" lay-filter="server_type" title="同时执行" checked>
|
||||
<input type="radio" name="server_type" value="1" lay-filter="server_type" title="轮询执行">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">任务说明</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
@@ -71,7 +79,7 @@
|
||||
<label class="layui-form-label mw200">时间表达式</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="text" name="cron_spec" id="cron_spec" lay-verify="required" autocomplete="off"
|
||||
placeholder="时间表达式" class="layui-input" value="">
|
||||
placeholder="*/40 * * * * " class="layui-input" value="">
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"><a href="/help" target="_blank"><i class="fa fa-question-circle"
|
||||
aria-hidden="true"></i></a>
|
||||
@@ -81,7 +89,7 @@
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">命令脚本</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<textarea name="command" id="command" rows="5" placeholder="请输入命令内容" class="layui-textarea"></textarea>
|
||||
<textarea name="command" id="command" rows="5" placeholder="echo hello world && ls -a" class="layui-textarea"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -125,14 +133,16 @@
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item notify">
|
||||
<label class="layui-form-label mw200">通知用户</label>
|
||||
<div class="layui-input-inline mw400 ">
|
||||
{{range $k, $v := .adminInfo}}
|
||||
<input type="checkbox" name="notify_user" lay-filter="notify_user" title="{{$v.RealName}}"
|
||||
value="{{$v.Id}}" lay-skin="primary">
|
||||
{{end}}
|
||||
|
||||
<div class="layui-form-item notify">
|
||||
<label class="layui-form-label mw200">通知用户</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<select name="notify_user" lay-search xm-select="select_notify" >
|
||||
<option value="">请选择</option>
|
||||
{{range $k, $v := .adminInfo}}
|
||||
<option value="{{$v.Id}}">{{$v.RealName}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
@@ -148,9 +158,25 @@
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
layui.use(['form', 'element', 'layer', 'jquery'], function () {
|
||||
|
||||
layui.config({
|
||||
base:'/static/admin/js/'
|
||||
}).extend({
|
||||
formSelects: 'formSelects-v3'
|
||||
});
|
||||
layui.use(['form', 'element', 'layer', 'jquery','formSelects'], function () {
|
||||
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
|
||||
var $ = layui.jquery;
|
||||
var formSelects = layui.formSelects;
|
||||
|
||||
formSelects.render({
|
||||
name : 'select_server',
|
||||
});
|
||||
|
||||
formSelects.render({
|
||||
name : 'select_notify',
|
||||
});
|
||||
|
||||
var error_info = "{{.flash.error}}";
|
||||
if (error_info) {
|
||||
layer.msg(error_info, {icon: 2, shade: 0.3}, function () {
|
||||
@@ -165,20 +191,6 @@
|
||||
});
|
||||
|
||||
|
||||
var notify_user_ids = [];
|
||||
form.on('checkbox(notify_user)', function (data) {
|
||||
if (data.elem.checked == true) {
|
||||
notify_user_ids.push(data.value)
|
||||
} else {
|
||||
$.each(notify_user_ids, function (index, item) {
|
||||
// index是索引值(即下标) item是每次遍历得到的值;
|
||||
if (item == data.value) {
|
||||
notify_user_ids.splice(index, 1);
|
||||
}
|
||||
});
|
||||
}
|
||||
$("#notify_user_ids").val(notify_user_ids.join(","));
|
||||
});
|
||||
|
||||
form.on('radio(is_notify)', function (data) {
|
||||
if (data.value == 1) {
|
||||
@@ -191,10 +203,18 @@
|
||||
form.on('submit(sub)', function (data) {
|
||||
|
||||
var form_data = data.field;
|
||||
|
||||
//选择执行器
|
||||
var ids = formSelects.value('select_server'); //获取选中的
|
||||
if (ids.length<1){
|
||||
layer.msg("请选择执行资源");
|
||||
return false;
|
||||
}
|
||||
|
||||
var server_arr = new Array();
|
||||
$("input:checkbox[name=server_id]:checked").each(function(){
|
||||
server_arr.push($(this).val());
|
||||
});
|
||||
$.each(ids,function (k,v) {
|
||||
server_arr.push(v.val);
|
||||
})
|
||||
|
||||
form_data.server_ids = server_arr.join(",");
|
||||
|
||||
@@ -203,17 +223,28 @@
|
||||
return false;
|
||||
}
|
||||
|
||||
var notify_user_arr = new Array();
|
||||
$("input:checkbox[name=notify_user]:checked").each(function(){
|
||||
notify_user_arr.push($(this).val());
|
||||
});
|
||||
form_data.notify_user_ids = notify_user_arr.join(",");
|
||||
|
||||
if (form_data.is_notify==1 && form_data.notify_user_ids==="") {
|
||||
layer.msg("请选择通知用户");
|
||||
return false;
|
||||
//选择通知人
|
||||
if (form_data.is_notify==1 ) {
|
||||
var ids = formSelects.value('select_notify'); //获取选中的
|
||||
if (ids.length<1){
|
||||
layer.msg("请选择通知人");
|
||||
return false;
|
||||
}
|
||||
|
||||
var notify_arr = new Array();
|
||||
$.each(ids,function (k,v) {
|
||||
notify_arr.push(v.val);
|
||||
})
|
||||
|
||||
form_data.notify_user_ids = notify_arr.join(",");
|
||||
|
||||
if (form_data.notify_user_ids==="" || form_data.notify_user_ids===null){
|
||||
layer.msg("请选择通知人");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$.post('{{urlfor "TaskController.AjaxSave"}}', form_data, function (out) {
|
||||
if (out.status == 0) {
|
||||
layer.msg("操作成功", {icon: 1, shade: 0.3, time: 1000}, function () {
|
||||
|
||||
@@ -53,11 +53,11 @@
|
||||
,url: '/task/table?status=2'
|
||||
,cols: [[
|
||||
{checkbox: true, fixed: true},
|
||||
{field:'id', title: 'ID', align:'center',sort: true, width:50}
|
||||
{field:'id', title: 'ID', align:'center',sort: true, width:100}
|
||||
,{field:'task_name',title: '任务名称'}
|
||||
,{field:'description',title: '任务说明'}
|
||||
,{field:'cron_spec',title: '执行时间', width:150}
|
||||
,{field:'pre_time', width:170,title: '上次执行时间'}
|
||||
,{field:'execute_times', width:70,title: '次数'}
|
||||
,{field:'execute_times', width:100,title: '次数'}
|
||||
,{fixed:'right', width:150, align:'center', title:'操作', toolbar: '#bar'}
|
||||
]]
|
||||
,id: 'listReload'
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
}
|
||||
</style>
|
||||
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
|
||||
<form class="layui-form" action="" method="post" >
|
||||
<form class="layui-form" action="javascript:void(0)" method="post" >
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">任务名称</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
@@ -16,31 +16,40 @@
|
||||
<label class="layui-form-label mw200">所属分组</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="group_id" lay-verify="required">
|
||||
{{range $k, $v := .taskGroup}}
|
||||
<option value="{{$k}}" {{if eq $k $.task.GroupId}}selected{{end}}>{{$v}}</option>
|
||||
{{end}}
|
||||
{{range $k, $v := .taskGroup}}
|
||||
<option value="{{$k}}" {{if eq $k $.task.GroupId}}selected{{end}}>{{$v}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">执行资源</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<select name="server_id" xm-select="select_server" >
|
||||
<option value="">请选择</option>
|
||||
<option value="0">本机执行</option>
|
||||
{{range $k, $v := .serverGroup}}
|
||||
<optgroup label="{{$v.GroupName}}">
|
||||
{{range $kk, $vv := $v.Servers}}
|
||||
<option value="{{$kk}}">{{$vv}}</option>
|
||||
{{end}}
|
||||
</optgroup>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">服务器资源</label>
|
||||
<div class="layui-inline">
|
||||
|
||||
<div class="layui-input-inline">
|
||||
<select name="server_id">
|
||||
<option value="0">本地服务器</option>
|
||||
{{range $k, $v := .serverGroup}}
|
||||
<optgroup label="{{$v.GroupName}}">
|
||||
{{range $kk, $vv := $v.Servers}}
|
||||
<option value="{{$kk}}" {{if eq $kk $.task.ServerId}}selected{{end}} >{{$vv}}</option>
|
||||
{{end}}
|
||||
</optgroup>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<label class="layui-form-label mw200">执行策略</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="radio" name="server_type" value="0" lay-filter="server_type" title="同时执行" {{if eq .task.ServerType 0}}checked{{end}}>
|
||||
<input type="radio" name="server_type" value="1" lay-filter="server_type" title="轮询执行" {{if eq .task.ServerType 1}}checked{{end}}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -95,28 +104,42 @@
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item notify">
|
||||
<hr>
|
||||
<label class="layui-form-label mw200">通知类型</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="radio" name="notify_type" lay-verify="required" value="0" title="邮件" {{if eq .task.NotifyType 0}}checked{{end}}>
|
||||
<input type="radio" name="notify_type" lay-verify="required" value="1" title="短信" {{if eq .task.NotifyType 1}}checked{{end}}>
|
||||
<input type="radio" name="notify_type" lay-verify="required" value="2" title="钉钉" {{if eq .task.NotifyType 2}}checked{{end}}>
|
||||
<input type="radio" name="notify_type" lay-verify="required" value="3" title="微信" {{if eq .task.NotifyType 3}}checked{{end}}>
|
||||
<input type="radio" name="notify_type" value="0" lay-filter="notify_type" title="邮件" {{if eq .task.NotifyType 0}}checked{{end}}>
|
||||
<input type="radio" name="notify_type" value="1" lay-filter="notify_type" title="短信" {{if eq .task.NotifyType 1}}checked{{end}}>
|
||||
<input type="radio" name="notify_type" value="2" lay-filter="notify_type" title="钉钉" {{if eq .task.NotifyType 2}}checked{{end}}>
|
||||
<input type="radio" name="notify_type" value="3" lay-filter="notify_type" title="微信" {{if eq .task.NotifyType 3}}checked{{end}}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item notify">
|
||||
<label class="layui-form-label mw200">通知用户</label>
|
||||
<div class="layui-input-inline mw400 ">
|
||||
{{range $k, $v := .adminInfo}}
|
||||
<input type="checkbox" name="notify_user" lay-filter="notify_user" title="{{$v.RealName}}" value="{{$v.Id}}" lay-skin="primary" {{range $ks,$vs:=$.notify_user_ids}} {{if eq $v.Id $vs}}checked{{end}}{{end}}>
|
||||
{{end}}
|
||||
<input type="hidden" name="notify_user_ids" id="notify_user_ids" value="{{.task.NotifyUserIds}}">
|
||||
<div class="layui-form-item notify">
|
||||
<label class="layui-form-label mw200">通知模板</label>
|
||||
<div class="layui-input-inline">
|
||||
<select name="notify_tpl_id" lay-filter="notify_tpl_id">
|
||||
<option value="0">请选择</option>
|
||||
{{range $k, $v := .notifyTpl}}
|
||||
<option value="{{$v.id}}" {{if eq $.task.NotifyTplId $v.id}} selected {{end}}>{{$v.tpl_name}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
<input type="hidden" name="id" id="id" value="0">
|
||||
|
||||
<div class="layui-form-item notify">
|
||||
<label class="layui-form-label mw200">通知用户</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<select name="notify_user" lay-search xm-select="select_notify" >
|
||||
<option value="">请选择</option>
|
||||
{{range $k, $v := .adminInfo}}
|
||||
<option value="{{$v.Id}}">{{$v.RealName}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200"></label>
|
||||
<div class="layui-input-inline mw400">
|
||||
@@ -127,16 +150,38 @@
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
layui.use(['form','element','layer','jquery'],function(){
|
||||
layui.config({
|
||||
base:'/static/admin/js/'
|
||||
}).extend({
|
||||
formSelects: 'formSelects-v3'
|
||||
}).use(['form','element','layer','jquery','formSelects'],function(){
|
||||
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
|
||||
var $ = layui.jquery;
|
||||
var error_info = "{{.flash.error}}";
|
||||
if(error_info){
|
||||
layer.msg(error_info,{icon: 2,shade:0.3},function () {
|
||||
window.history.go(-1)
|
||||
})
|
||||
return;
|
||||
}
|
||||
|
||||
var formSelects = layui.formSelects;
|
||||
|
||||
var server_id = {{$.service_ids}};
|
||||
formSelects.render({
|
||||
init : server_id,
|
||||
name : 'select_server',
|
||||
});
|
||||
|
||||
var select_notify = {{$.notify_user_ids}};
|
||||
|
||||
console.log(select_notify);
|
||||
formSelects.render({
|
||||
init : select_notify,
|
||||
name : 'select_notify',
|
||||
});
|
||||
|
||||
var error_info = "{{.flash.error}}";
|
||||
if(error_info){
|
||||
layer.msg(error_info,{icon: 2,shade:0.3},function () {
|
||||
self.location=document.referrer;
|
||||
})
|
||||
return;
|
||||
}
|
||||
|
||||
$("#des").on('click',function () {
|
||||
layer.tips('设为“是”的话,如果该任务在上一个时间点还没执行完,则略过不执行', '#des', {
|
||||
tips: [1, '#0FA6D8'] //还可配置颜色
|
||||
@@ -154,34 +199,91 @@
|
||||
}
|
||||
});
|
||||
|
||||
var notify_user_ids = [];
|
||||
form.on('checkbox(notify_user)', function(data){
|
||||
if(data.elem.checked==true){
|
||||
notify_user_ids.push(data.value)
|
||||
}else{
|
||||
$.each(notify_user_ids,function(index,item){
|
||||
// index是索引值(即下标) item是每次遍历得到的值;
|
||||
if(item==data.value){
|
||||
notify_user_ids.splice(index,1);
|
||||
}
|
||||
});
|
||||
form.on('submit(sub)', function(data){
|
||||
var isAdmin = "{{.isAdmin}}";
|
||||
var msg = "编辑任务需要重新审核,是否确认需要编辑?";
|
||||
var okmsg = "操作成功,可去【任务审核】中查看该任务";
|
||||
|
||||
if (isAdmin==1){
|
||||
msg = "是否确认需要编辑?";
|
||||
okmsg = "操作成功";
|
||||
}
|
||||
$("#notify_user_ids").val(notify_user_ids.join(","));
|
||||
|
||||
layer.confirm(msg, {icon: 3, title:'提示'}, function(index){
|
||||
var form_data = data.field;
|
||||
|
||||
//选择执行器
|
||||
var ids = formSelects.value('select_server'); //获取选中的
|
||||
if (ids.length<1){
|
||||
layer.msg("请选择执行资源");
|
||||
return false;
|
||||
}
|
||||
|
||||
var server_arr = new Array();
|
||||
$.each(ids,function (k,v) {
|
||||
server_arr.push(v.val);
|
||||
})
|
||||
|
||||
form_data.server_ids = server_arr.join(",");
|
||||
|
||||
if (form_data.server_ids==="" || form_data.server_ids===null){
|
||||
layer.msg("请选择服务器资源");
|
||||
return false;
|
||||
}
|
||||
|
||||
//选择通知人
|
||||
if (form_data.is_notify==1 ) {
|
||||
var ids = formSelects.value('select_notify'); //获取选中的
|
||||
if (ids.length<1){
|
||||
layer.msg("请选择通知人");
|
||||
return false;
|
||||
}
|
||||
|
||||
var notify_arr = new Array();
|
||||
$.each(ids,function (k,v) {
|
||||
notify_arr.push(v.val);
|
||||
});
|
||||
|
||||
form_data.notify_user_ids = notify_arr.join(",");
|
||||
if (form_data.notify_user_ids==="" || form_data.notify_user_ids===null){
|
||||
layer.msg("请选择通知人");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$.post('{{urlfor "TaskController.AjaxSave"}}', form_data, function (out) {
|
||||
if (out.status == 0) {
|
||||
layer.msg(okmsg,{icon: 1,shade:0.3,time:1000},function () {
|
||||
// self.location=document.referrer;
|
||||
window.parent.deleteCurrentTab();
|
||||
})
|
||||
} else {
|
||||
layer.msg(out.message);
|
||||
return false;
|
||||
}
|
||||
}, "json");
|
||||
|
||||
setTimeout(function(){
|
||||
layer.closeAll('loading');
|
||||
}, 2000);
|
||||
layer.close(index);
|
||||
});
|
||||
});
|
||||
|
||||
form.on('submit(sub)', function(data){
|
||||
var form_data = data.field;
|
||||
$.post('{{urlfor "TaskController.AjaxSave"}}', form_data, function (out) {
|
||||
if (out.status == 0) {
|
||||
layer.msg("复制成功!,请到列表中查看",{icon: 1,shade:0.3,time:1000},function () {
|
||||
//self.location=document.referrer;
|
||||
window.parent.deleteCurrentTab();
|
||||
})
|
||||
form.on('radio(notify_type)', function (data) {
|
||||
$.post('{{urlfor "TaskController.AjaxNotifyType"}}', {notify_type: data.value}, function (out) {
|
||||
if (out.code == 0) {
|
||||
$('select[name="notify_tpl_id"]').empty();
|
||||
$('<option value="0" selected>请选择</option>').appendTo('select[name="notify_tpl_id"]');
|
||||
for (var i = 0; i < out.data.length; i++) {
|
||||
$('<option value="' + out.data[i].id + '">' + out.data[i].tpl_name + '</option>').appendTo('select[name="notify_tpl_id"]');
|
||||
}
|
||||
|
||||
form.render();
|
||||
} else {
|
||||
layer.msg(out.message)
|
||||
}
|
||||
}, "json");
|
||||
return false;
|
||||
});
|
||||
|
||||
//但是,如果你的HTML是动态生成的,自动渲染就会失效
|
||||
|
||||
@@ -64,8 +64,14 @@
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>服务资源</td>
|
||||
<td> {{.serverName}}</td>
|
||||
<td>执行资源</td>
|
||||
<td> {{str2html .serverName}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td>执行策略</td>
|
||||
<td> {{.ServerType}}</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
@@ -114,7 +120,7 @@
|
||||
<td>通知用户</td>
|
||||
<td>
|
||||
{{range $k, $v := .adminInfo}}
|
||||
{{$v.RealName}}
|
||||
{{$v.RealName}} <br>
|
||||
{{end}}
|
||||
</td>
|
||||
<td></td>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
}
|
||||
</style>
|
||||
<div class="layui-layout layui-layout-admin" style="padding-left: 40px;margin-top: 20px;">
|
||||
<form class="layui-form" action="javascript:return false;" method="post" >
|
||||
<form class="layui-form" action="javascript:void(0)" method="post" >
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">任务名称</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
@@ -24,29 +24,35 @@
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">服务器资源</label>
|
||||
<div class="layui-block">
|
||||
<div class="layui-col-md3"></div>
|
||||
<div class="layui-col-md9">
|
||||
<div style="margin-bottom: 20px;">
|
||||
<input type="checkbox" name="server_id" lay-skin="primary" title="本地服务器" value="0" {{range $ks,$vs:=$.service_ids}} {{if eq 0 $vs}}checked{{end}}{{end}}>
|
||||
</div>
|
||||
<div class="layui-row layui-col-space10">
|
||||
{{range $k, $v := .serverGroup}}
|
||||
<div class="layui-col-md12" ><i class="layui-icon"></i> {{$v.GroupName}}</div>
|
||||
{{range $kk, $vv := $v.Servers}}
|
||||
<div class="layui-col-md4">
|
||||
<input type="checkbox" name="server_id" lay-skin="primary" title="{{$vv}}" value="{{$kk}}" {{range $ks,$vs:=$.service_ids}} {{if eq $kk $vs}}checked{{end}}{{end}}>
|
||||
</div>
|
||||
{{end}}
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">执行资源</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<select name="server_id" xm-select="select_server" >
|
||||
<option value="">请选择</option>
|
||||
<option value="0">本机执行</option>
|
||||
{{range $k, $v := .serverGroup}}
|
||||
<optgroup label="{{$v.GroupName}}">
|
||||
{{range $kk, $vv := $v.Servers}}
|
||||
<option value="{{$kk}}">{{$vv}}</option>
|
||||
{{end}}
|
||||
</optgroup>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">执行策略</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
<input type="radio" name="server_type" value="0" lay-filter="server_type" title="同时执行" {{if eq .task.ServerType 0}}checked{{end}}>
|
||||
<input type="radio" name="server_type" value="1" lay-filter="server_type" title="轮询执行" {{if eq .task.ServerType 1}}checked{{end}}>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200">任务说明</label>
|
||||
<div class="layui-input-inline mw400">
|
||||
@@ -121,16 +127,20 @@
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item notify">
|
||||
<div class="layui-form-item notify">
|
||||
<label class="layui-form-label mw200">通知用户</label>
|
||||
<div class="layui-input-inline mw400 ">
|
||||
{{range $k, $v := .adminInfo}}
|
||||
<input type="checkbox" name="notify_user" lay-filter="notify_user" title="{{$v.RealName}}" value="{{$v.Id}}" lay-skin="primary" {{range $ks,$vs:=$.notify_user_ids}} {{if eq $v.Id $vs}}checked{{end}}{{end}}>
|
||||
{{end}}
|
||||
<input type="hidden" name="notify_user_ids" id="notify_user_ids" value="{{.task.NotifyUserIds}}">
|
||||
<div class="layui-input-inline mw400">
|
||||
<select name="notify_user" lay-search xm-select="select_notify" >
|
||||
<option value="">请选择</option>
|
||||
{{range $k, $v := .adminInfo}}
|
||||
<option value="{{$v.Id}}">{{$v.RealName}}</option>
|
||||
{{end}}
|
||||
</select>
|
||||
</div>
|
||||
<div class="layui-form-mid layui-word-aux"></div>
|
||||
</div>
|
||||
|
||||
|
||||
<input type="hidden" name="id" id="id" value="{{.task.Id}}">
|
||||
<div class="layui-form-item">
|
||||
<label class="layui-form-label mw200"></label>
|
||||
@@ -142,10 +152,30 @@
|
||||
</form>
|
||||
</div>
|
||||
<script>
|
||||
layui.use(['form','element','layer','jquery'],function(){
|
||||
layui.config({
|
||||
base:'/static/admin/js/'
|
||||
}).extend({
|
||||
formSelects: 'formSelects-v3'
|
||||
}).use(['form','element','layer','jquery','formSelects'],function(){
|
||||
var form = layui.form; //只有执行了这一步,部分表单元素才会自动修饰成功
|
||||
var $ = layui.jquery;
|
||||
|
||||
var formSelects = layui.formSelects;
|
||||
|
||||
var server_id = {{$.service_ids}};
|
||||
formSelects.render({
|
||||
init : server_id,
|
||||
name : 'select_server',
|
||||
});
|
||||
|
||||
var select_notify = {{$.notify_user_ids}};
|
||||
|
||||
console.log(select_notify);
|
||||
formSelects.render({
|
||||
init : select_notify,
|
||||
name : 'select_notify',
|
||||
});
|
||||
|
||||
var error_info = "{{.flash.error}}";
|
||||
if(error_info){
|
||||
layer.msg(error_info,{icon: 2,shade:0.3},function () {
|
||||
@@ -171,22 +201,6 @@
|
||||
}
|
||||
});
|
||||
|
||||
var notify_user_ids = [];
|
||||
form.on('checkbox(notify_user)', function(data){
|
||||
if(data.elem.checked==true){
|
||||
notify_user_ids.push(data.value)
|
||||
}else{
|
||||
$.each(notify_user_ids,function(index,item){
|
||||
// index是索引值(即下标) item是每次遍历得到的值;
|
||||
if(item==data.value){
|
||||
notify_user_ids.splice(index,1);
|
||||
}
|
||||
});
|
||||
}
|
||||
$("#notify_user_ids").val(notify_user_ids.join(","));
|
||||
});
|
||||
|
||||
|
||||
form.on('submit(sub)', function(data){
|
||||
var isAdmin = "{{.isAdmin}}";
|
||||
var msg = "编辑任务需要重新审核,是否确认需要编辑?";
|
||||
@@ -198,19 +212,46 @@
|
||||
}
|
||||
|
||||
layer.confirm(msg, {icon: 3, title:'提示'}, function(index){
|
||||
|
||||
var form_data = data.field;
|
||||
var ids = [];
|
||||
$("input[name=server_id][type=checkbox]").each(function() {
|
||||
if ($(this).prop("checked")) {
|
||||
ids.push($(this).val());
|
||||
}
|
||||
});
|
||||
|
||||
//选择执行器
|
||||
var ids = formSelects.value('select_server'); //获取选中的
|
||||
if (ids.length<1){
|
||||
layer.msg("请选择服务资源");
|
||||
layer.msg("请选择执行资源");
|
||||
return false;
|
||||
}
|
||||
form_data.server_ids = ids.join(",");
|
||||
|
||||
var server_arr = new Array();
|
||||
$.each(ids,function (k,v) {
|
||||
server_arr.push(v.val);
|
||||
})
|
||||
|
||||
form_data.server_ids = server_arr.join(",");
|
||||
|
||||
if (form_data.server_ids==="" || form_data.server_ids===null){
|
||||
layer.msg("请选择服务器资源");
|
||||
return false;
|
||||
}
|
||||
|
||||
//选择通知人
|
||||
if (form_data.is_notify==1 ) {
|
||||
var ids = formSelects.value('select_notify'); //获取选中的
|
||||
if (ids.length<1){
|
||||
layer.msg("请选择通知人");
|
||||
return false;
|
||||
}
|
||||
|
||||
var notify_arr = new Array();
|
||||
$.each(ids,function (k,v) {
|
||||
notify_arr.push(v.val);
|
||||
});
|
||||
|
||||
form_data.notify_user_ids = notify_arr.join(",");
|
||||
if (form_data.notify_user_ids==="" || form_data.notify_user_ids===null){
|
||||
layer.msg("请选择通知人");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$.post('{{urlfor "TaskController.AjaxSave"}}', form_data, function (out) {
|
||||
if (out.status == 0) {
|
||||
@@ -219,8 +260,8 @@
|
||||
window.parent.deleteCurrentTab();
|
||||
})
|
||||
} else {
|
||||
layer.msg(out.message)
|
||||
return
|
||||
layer.msg(out.message);
|
||||
return false;
|
||||
}
|
||||
}, "json");
|
||||
|
||||
|
||||
@@ -58,12 +58,12 @@
|
||||
,url: '/task/table'
|
||||
,cols: [[
|
||||
{checkbox: true, fixed: true},
|
||||
{field:'id', title: 'ID', align:'center', width:50,sort: true}
|
||||
,{field:'task_name',width:300, title: '任务名称'}
|
||||
,{field:'description',title: '任务说明'}
|
||||
{field:'id', title: 'ID', align:'center', width:100,sort: true}
|
||||
,{field:'task_name', title: '任务名称'}
|
||||
,{field:'cron_spec',title: '时间表达式', width:150}
|
||||
,{field:'next_time', width:170,title: '下次执行时间'}
|
||||
,{field:'pre_time', title: '上次执行时间'}
|
||||
,{field:'execute_times', title: '次数'}
|
||||
,{field:'pre_time', title: '上次执行时间',width:170,}
|
||||
,{field:'execute_times', title: '次数',width:100}
|
||||
,{width:120, align:'center', title:'操作', toolbar: '#bar'}
|
||||
]]
|
||||
,id: 'listReload'
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
{checkbox: true, fixed: true}
|
||||
// ,{field:'id', title: 'ID', align:'center',sort: true, width:150}
|
||||
,{field:'task_id', title: '任务ID', align:'center',width:100}
|
||||
,{field:'server_name', title: '服务器', width:150}
|
||||
,{field:'server_name', title: '服务器', width:250}
|
||||
,{field:'start_time',title: '开始时间'}
|
||||
,{field:'process_time',width:100, title: '执行时间'}
|
||||
,{field:'output_size',title: '输出'}
|
||||
|
||||
Reference in New Issue
Block a user