新增作业计划调度管理,支持界面化配置,支持集群,支持日志查询
This commit is contained in:
@@ -31,7 +31,7 @@ jdbc:
|
||||
# testSql: SELECT 1
|
||||
|
||||
# PostgreSql 数据库配置
|
||||
# type: postgre
|
||||
# type: postgresql
|
||||
# driver: org.postgresql.Driver
|
||||
# url: jdbc:postgresql://localhost:5432/jeesite
|
||||
# username: jeesite
|
||||
@@ -186,11 +186,21 @@ user:
|
||||
# 任务调度
|
||||
job:
|
||||
|
||||
# 是否自动启动任务调度(集群情况下开启一个服务)
|
||||
# 是否自动启动任务调度(可关闭)
|
||||
autoStartup: true
|
||||
|
||||
# 任务调度启动延迟设置(单位:秒)(建议设置项目启动完成后的时间)
|
||||
startupDelay: 60
|
||||
|
||||
# 任务调度线程池
|
||||
threadPool:
|
||||
threadCount: 10
|
||||
threadPriority: 5
|
||||
|
||||
# 任务调度集群设置
|
||||
jobStore:
|
||||
isClustered: true
|
||||
clusterCheckinInterval: 1000
|
||||
|
||||
# 内容管理
|
||||
cms:
|
||||
|
||||
@@ -1,528 +0,0 @@
|
||||
/**
|
||||
* 每周期
|
||||
*/
|
||||
function everyTime(dom) {
|
||||
var item = $("input[name=v_" + dom.name + "]");
|
||||
item.val("*");
|
||||
item.change();
|
||||
}
|
||||
|
||||
/**
|
||||
* 不指定
|
||||
*/
|
||||
function unAppoint(dom) {
|
||||
var name = dom.name;
|
||||
var val = "?";
|
||||
if (name == "year"){
|
||||
val = "";
|
||||
}
|
||||
var item = $("input[name=v_" + name + "]");
|
||||
item.val(val);
|
||||
item.change();
|
||||
}
|
||||
|
||||
/**
|
||||
* 周期
|
||||
*/
|
||||
function cycle(dom) {
|
||||
var name = dom.name;
|
||||
var ns = $(dom).parent().find(".numberspinner");
|
||||
var start = ns.eq(0).numberspinner("getValue");
|
||||
var end = ns.eq(1).numberspinner("getValue");
|
||||
var item = $("input[name=v_" + name + "]");
|
||||
item.val(start + "-" + end);
|
||||
item.change();
|
||||
}
|
||||
|
||||
/**
|
||||
* 从开始
|
||||
*/
|
||||
function startOn(dom) {
|
||||
var name = dom.name;
|
||||
var ns = $(dom).parent().find(".numberspinner");
|
||||
var start = ns.eq(0).numberspinner("getValue");
|
||||
var end = ns.eq(1).numberspinner("getValue");
|
||||
var item = $("input[name=v_" + name + "]");
|
||||
item.val(start + "/" + end);
|
||||
item.change();
|
||||
}
|
||||
|
||||
/**
|
||||
* 本月最后一天
|
||||
*/
|
||||
function lastDay(dom){
|
||||
var item = $("input[name=v_" + dom.name + "]");
|
||||
item.val("L");
|
||||
item.change();
|
||||
}
|
||||
|
||||
/**
|
||||
* 星期几的第几周
|
||||
*/
|
||||
function weekOfDay(dom){
|
||||
var name = dom.name;
|
||||
var ns = $(dom).parent().find(".numberspinner");
|
||||
var start = ns.eq(0).numberspinner("getValue");
|
||||
var end = ns.eq(1).numberspinner("getValue");
|
||||
var item = $("input[name=v_" + name + "]");
|
||||
item.val(start + "#" + end);
|
||||
item.change();
|
||||
}
|
||||
|
||||
/**
|
||||
* 本月最后一个星期
|
||||
*/
|
||||
function lastWeek(dom){
|
||||
var item = $("input[name=v_" + dom.name + "]");
|
||||
var ns = $(dom).parent().find(".numberspinner");
|
||||
var start = ns.eq(0).numberspinner("getValue");
|
||||
item.val(start+"L");
|
||||
item.change();
|
||||
}
|
||||
|
||||
/**
|
||||
* 每月几号的最近工作日
|
||||
*/
|
||||
function workDay(dom) {
|
||||
var name = dom.name;
|
||||
var ns = $(dom).parent().find(".numberspinner");
|
||||
var start = ns.eq(0).numberspinner("getValue");
|
||||
var item = $("input[name=v_" + name + "]");
|
||||
item.val(start + "W");
|
||||
item.change();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取URL地址参数
|
||||
*/
|
||||
function getQueryString(paramName, url) {
|
||||
var reg = new RegExp("(^|&)" + paramName + "=([^&]*)(&|$)", "i");
|
||||
if (!url || url == ""){
|
||||
url = window.location.search;
|
||||
}else{
|
||||
url = url.substring(url.indexOf("?"));
|
||||
}
|
||||
r = url.substr(1).match(reg)
|
||||
if (r != null) {
|
||||
return unescape(r[2]);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* 事件绑定
|
||||
*/
|
||||
$(function() {
|
||||
|
||||
$(".numberspinner").numberspinner({
|
||||
onChange:function(){
|
||||
$(this).closest("div.line").children().eq(0).click();
|
||||
}
|
||||
});
|
||||
|
||||
var cron = $("#cron");
|
||||
cron.change(function () {
|
||||
btnFan();
|
||||
//设置最近五次运行时间
|
||||
$.ajax({
|
||||
type: 'post',
|
||||
url: getQueryString('ctx') + "/sys/job/checkCron",
|
||||
dataType: "json",
|
||||
data: { "cron": $("#cron").val() },
|
||||
success: function (data) {
|
||||
$("#runTime").html(data.message);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
var vals = $("input[name^='v_']");
|
||||
vals.change(function() {
|
||||
var item = [];
|
||||
vals.each(function() {
|
||||
item.push(this.value);
|
||||
});
|
||||
//获取当前选中tab
|
||||
var currentIndex = 0;
|
||||
$(".tabs>li").each(function (i, item) {
|
||||
if($(item).hasClass("tabs-selected")){
|
||||
currentIndex =i;
|
||||
return false;
|
||||
}
|
||||
|
||||
});
|
||||
//如果当前选中项是日(日和周互斥)ThinkGem 2016-10-12
|
||||
if (currentIndex == 3){
|
||||
if (item[currentIndex] == "?"){
|
||||
item[currentIndex + 2] = "1";
|
||||
}else{
|
||||
item[currentIndex + 2] = "?";
|
||||
}
|
||||
}
|
||||
//如果当前选中项是星期(日和周互斥)ThinkGem 2016-10-12
|
||||
if (currentIndex == 5){
|
||||
if (item[currentIndex] == "?"){
|
||||
item[currentIndex - 2] = "1";
|
||||
}else{
|
||||
item[currentIndex - 2] = "?";
|
||||
}
|
||||
}
|
||||
//日和周同为?的时候,取舍周(日和周互斥)ThinkGem 2016-10-12
|
||||
if (item[3] == "?" && item[5] == "?"){
|
||||
item[3] = "1";
|
||||
}
|
||||
//如果后一项不为* 那么前一项肯定不为为*,要不然就成了每秒执行了 ThinkGem 2016-10-12
|
||||
for (var i = currentIndex; i >= 1; i--) {
|
||||
if ((item[i] != "*" && item[i - 1] == "*") || currentIndex == "6") {
|
||||
if (i == 4){
|
||||
item[i - 1] = "1";
|
||||
}else if (i <= 3){
|
||||
item[i - 1] = "0";
|
||||
}
|
||||
}
|
||||
}
|
||||
//当前选中项之后的如果不为*则都设置成*
|
||||
if (item[currentIndex] == "*") {
|
||||
for (var i = currentIndex + 1; i < item.length; i++) {
|
||||
if (i == 5) {
|
||||
item[i] = "?";
|
||||
} else {
|
||||
item[i] = "*";
|
||||
}
|
||||
}
|
||||
}
|
||||
cron.val(item.join(" ")).change();
|
||||
});
|
||||
|
||||
var secondList = $(".secondList").children();
|
||||
$("#sencond_appoint").click(function(){
|
||||
if (this.checked) {
|
||||
if ($(secondList).filter(":checked").length == 0) {
|
||||
$(secondList.eq(0)).attr("checked", true);
|
||||
}
|
||||
secondList.eq(0).change();
|
||||
}
|
||||
});
|
||||
secondList.change(function() {
|
||||
var sencond_appoint = $("#sencond_appoint").prop("checked");
|
||||
if (sencond_appoint) {
|
||||
var vals = [];
|
||||
secondList.each(function() {
|
||||
if (this.checked) {
|
||||
vals.push(this.value);
|
||||
}
|
||||
});
|
||||
var val = "?";
|
||||
if (vals.length > 0 && vals.length < 59) {
|
||||
val = vals.join(",");
|
||||
}else if(vals.length == 59){
|
||||
val = "*";
|
||||
}
|
||||
var item = $("input[name=v_second]");
|
||||
item.val(val);
|
||||
item.change();
|
||||
}
|
||||
});
|
||||
|
||||
var minList = $(".minList").children();
|
||||
$("#min_appoint").click(function(){
|
||||
if (this.checked) {
|
||||
if ($(minList).filter(":checked").length == 0) {
|
||||
$(minList.eq(0)).attr("checked", true);
|
||||
}
|
||||
minList.eq(0).change();
|
||||
}
|
||||
});
|
||||
minList.change(function() {
|
||||
var min_appoint = $("#min_appoint").prop("checked");
|
||||
if (min_appoint) {
|
||||
var vals = [];
|
||||
minList.each(function() {
|
||||
if (this.checked) {
|
||||
vals.push(this.value);
|
||||
}
|
||||
});
|
||||
var val = "?";
|
||||
if (vals.length > 0 && vals.length < 59) {
|
||||
val = vals.join(",");
|
||||
}else if(vals.length == 59){
|
||||
val = "*";
|
||||
}
|
||||
var item = $("input[name=v_min]");
|
||||
item.val(val);
|
||||
item.change();
|
||||
}
|
||||
});
|
||||
|
||||
var hourList = $(".hourList").children();
|
||||
$("#hour_appoint").click(function(){
|
||||
if (this.checked) {
|
||||
if ($(hourList).filter(":checked").length == 0) {
|
||||
$(hourList.eq(0)).attr("checked", true);
|
||||
}
|
||||
hourList.eq(0).change();
|
||||
}
|
||||
});
|
||||
hourList.change(function() {
|
||||
var hour_appoint = $("#hour_appoint").prop("checked");
|
||||
if (hour_appoint) {
|
||||
var vals = [];
|
||||
hourList.each(function() {
|
||||
if (this.checked) {
|
||||
vals.push(this.value);
|
||||
}
|
||||
});
|
||||
var val = "?";
|
||||
if (vals.length > 0 && vals.length < 24) {
|
||||
val = vals.join(",");
|
||||
}else if(vals.length == 24){
|
||||
val = "*";
|
||||
}
|
||||
var item = $("input[name=v_hour]");
|
||||
item.val(val);
|
||||
item.change();
|
||||
}
|
||||
});
|
||||
|
||||
var dayList = $(".dayList").children();
|
||||
$("#day_appoint").click(function(){
|
||||
if (this.checked) {
|
||||
if ($(dayList).filter(":checked").length == 0) {
|
||||
$(dayList.eq(0)).attr("checked", true);
|
||||
}
|
||||
dayList.eq(0).change();
|
||||
}
|
||||
});
|
||||
dayList.change(function() {
|
||||
var day_appoint = $("#day_appoint").prop("checked");
|
||||
if (day_appoint) {
|
||||
var vals = [];
|
||||
dayList.each(function() {
|
||||
if (this.checked) {
|
||||
vals.push(this.value);
|
||||
}
|
||||
});
|
||||
var val = "?";
|
||||
if (vals.length > 0 && vals.length < 31) {
|
||||
val = vals.join(",");
|
||||
}else if(vals.length == 31){
|
||||
val = "*";
|
||||
}
|
||||
var item = $("input[name=v_day]");
|
||||
item.val(val);
|
||||
item.change();
|
||||
}
|
||||
});
|
||||
|
||||
var mouthList = $(".mouthList").children();
|
||||
$("#mouth_appoint").click(function(){
|
||||
if (this.checked) {
|
||||
if ($(mouthList).filter(":checked").length == 0) {
|
||||
$(mouthList.eq(0)).attr("checked", true);
|
||||
}
|
||||
mouthList.eq(0).change();
|
||||
}
|
||||
});
|
||||
mouthList.change(function() {
|
||||
var mouth_appoint = $("#mouth_appoint").prop("checked");
|
||||
if (mouth_appoint) {
|
||||
var vals = [];
|
||||
mouthList.each(function() {
|
||||
if (this.checked) {
|
||||
vals.push(this.value);
|
||||
}
|
||||
});
|
||||
var val = "?";
|
||||
if (vals.length > 0 && vals.length < 12) {
|
||||
val = vals.join(",");
|
||||
}else if(vals.length == 12){
|
||||
val = "*";
|
||||
}
|
||||
var item = $("input[name=v_mouth]");
|
||||
item.val(val);
|
||||
item.change();
|
||||
}
|
||||
});
|
||||
|
||||
var weekList = $(".weekList").children();
|
||||
$("#week_appoint").click(function(){
|
||||
if (this.checked) {
|
||||
if ($(weekList).filter(":checked").length == 0) {
|
||||
$(weekList.eq(0)).attr("checked", true);
|
||||
}
|
||||
weekList.eq(0).change();
|
||||
}
|
||||
});
|
||||
weekList.change(function() {
|
||||
var week_appoint = $("#week_appoint").prop("checked");
|
||||
if (week_appoint) {
|
||||
var vals = [];
|
||||
weekList.each(function() {
|
||||
if (this.checked) {
|
||||
vals.push(this.value);
|
||||
}
|
||||
});
|
||||
var val = "?";
|
||||
if (vals.length > 0 && vals.length < 7) {
|
||||
val = vals.join(",");
|
||||
}else if(vals.length == 7){
|
||||
val = "*";
|
||||
}
|
||||
var item = $("input[name=v_week]");
|
||||
item.val(val);
|
||||
item.change();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// =========== 以下是反解析代码 =============
|
||||
|
||||
function btnFan() {
|
||||
//获取参数中表达式的值
|
||||
var txt = $("#cron").val();
|
||||
if (txt) {
|
||||
var regs = txt.split(' ');
|
||||
$("input[name=v_second]").val(regs[0]);
|
||||
$("input[name=v_min]").val(regs[1]);
|
||||
$("input[name=v_hour]").val(regs[2]);
|
||||
$("input[name=v_day]").val(regs[3]);
|
||||
$("input[name=v_mouth]").val(regs[4]);
|
||||
$("input[name=v_week]").val(regs[5]);
|
||||
initObj(regs[0], "second");
|
||||
initObj(regs[1], "min");
|
||||
initObj(regs[2], "hour");
|
||||
initDay(regs[3]);
|
||||
initMonth(regs[4]);
|
||||
initWeek(regs[5]);
|
||||
if (regs.length > 6) {
|
||||
$("input[name=v_year]").val(regs[6]);
|
||||
initYear(regs[6]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function initObj(strVal, strid) {
|
||||
var ary = null;
|
||||
var objRadio = $("input[name='" + strid + "'");
|
||||
if (strVal == "*") {
|
||||
objRadio.eq(0).attr("checked", "checked");
|
||||
} else if (strVal.split('-').length > 1) {
|
||||
ary = strVal.split('-');
|
||||
objRadio.eq(1).attr("checked", "checked");
|
||||
$("#" + strid + "Start_0").numberspinner('setValue', ary[0]);
|
||||
$("#" + strid + "End_0").numberspinner('setValue', ary[1]);
|
||||
} else if (strVal.split('/').length > 1) {
|
||||
ary = strVal.split('/');
|
||||
objRadio.eq(2).attr("checked", "checked");
|
||||
$("#" + strid + "Start_1").numberspinner('setValue', ary[0]);
|
||||
$("#" + strid + "End_1").numberspinner('setValue', ary[1]);
|
||||
} else {
|
||||
objRadio.eq(3).attr("checked", "checked");
|
||||
if (strVal != "?") {
|
||||
ary = strVal.split(",");
|
||||
for (var i = 0; i < ary.length; i++) {
|
||||
$("." + strid + "List input[value='" + ary[i] + "']").attr("checked", "checked");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function initDay(strVal) {
|
||||
var ary = null;
|
||||
var objRadio = $("input[name='day'");
|
||||
if (strVal == "*") {
|
||||
objRadio.eq(0).attr("checked", "checked");
|
||||
} else if (strVal == "?") {
|
||||
objRadio.eq(1).attr("checked", "checked");
|
||||
} else if (strVal.split('-').length > 1) {
|
||||
ary = strVal.split('-');
|
||||
objRadio.eq(2).attr("checked", "checked");
|
||||
$("#dayStart_0").numberspinner('setValue', ary[0]);
|
||||
$("#dayEnd_0").numberspinner('setValue', ary[1]);
|
||||
} else if (strVal.split('/').length > 1) {
|
||||
ary = strVal.split('/');
|
||||
objRadio.eq(3).attr("checked", "checked");
|
||||
$("#dayStart_1").numberspinner('setValue', ary[0]);
|
||||
$("#dayEnd_1").numberspinner('setValue', ary[1]);
|
||||
} else if (strVal.split('W').length > 1) {
|
||||
ary = strVal.split('W');
|
||||
objRadio.eq(4).attr("checked", "checked");
|
||||
$("#dayStart_2").numberspinner('setValue', ary[0]);
|
||||
} else if (strVal == "L") {
|
||||
objRadio.eq(5).attr("checked", "checked");
|
||||
} else {
|
||||
objRadio.eq(6).attr("checked", "checked");
|
||||
ary = strVal.split(",");
|
||||
for (var i = 0; i < ary.length; i++) {
|
||||
$(".dayList input[value='" + ary[i] + "']").attr("checked", "checked");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function initMonth(strVal) {
|
||||
var ary = null;
|
||||
var objRadio = $("input[name='mouth'");
|
||||
if (strVal == "*") {
|
||||
objRadio.eq(0).attr("checked", "checked");
|
||||
// } else if (strVal == "?") {
|
||||
// objRadio.eq(1).attr("checked", "checked");
|
||||
} else if (strVal.split('-').length > 1) {
|
||||
ary = strVal.split('-');
|
||||
objRadio.eq(2-1).attr("checked", "checked");
|
||||
$("#mouthStart_0").numberspinner('setValue', ary[0]);
|
||||
$("#mouthEnd_0").numberspinner('setValue', ary[1]);
|
||||
} else if (strVal.split('/').length > 1) {
|
||||
ary = strVal.split('/');
|
||||
objRadio.eq(3-1).attr("checked", "checked");
|
||||
$("#mouthStart_1").numberspinner('setValue', ary[0]);
|
||||
$("#mouthEnd_1").numberspinner('setValue', ary[1]);
|
||||
} else {
|
||||
objRadio.eq(4-1).attr("checked", "checked");
|
||||
ary = strVal.split(",");
|
||||
for (var i = 0; i < ary.length; i++) {
|
||||
$(".mouthList input[value='" + ary[i] + "']").attr("checked", "checked");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function initWeek(strVal) {
|
||||
var ary = null;
|
||||
var objRadio = $("input[name='week'");
|
||||
if (strVal == "*") {
|
||||
objRadio.eq(0).attr("checked", "checked");
|
||||
} else if (strVal == "?") {
|
||||
objRadio.eq(1).attr("checked", "checked");
|
||||
} else if (strVal.split('-').length > 1) {
|
||||
ary = strVal.split('-');
|
||||
objRadio.eq(2).attr("checked", "checked");
|
||||
$("#weekStart_0").numberspinner('setValue', ary[0]);
|
||||
$("#weekEnd_0").numberspinner('setValue', ary[1]);
|
||||
} else if (strVal.split('#').length > 1) {
|
||||
ary = strVal.split('#');
|
||||
objRadio.eq(3).attr("checked", "checked");
|
||||
$("#weekStart_1").numberspinner('setValue', ary[0]);
|
||||
$("#weekEnd_1").numberspinner('setValue', ary[1]);
|
||||
} else if (strVal.split('L').length > 1) {
|
||||
ary = strVal.split('L');
|
||||
objRadio.eq(4).attr("checked", "checked");
|
||||
$("#weekStart_2").numberspinner('setValue', ary[0]);
|
||||
} else {
|
||||
objRadio.eq(5).attr("checked", "checked");
|
||||
ary = strVal.split(",");
|
||||
for (var i = 0; i < ary.length; i++) {
|
||||
$(".weekList input[value='" + ary[i] + "']").attr("checked", "checked");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function initYear(strVal) {
|
||||
var ary = null;
|
||||
var objRadio = $("input[name='year'");
|
||||
if (strVal == "*") {
|
||||
objRadio.eq(1).attr("checked", "checked");
|
||||
} else if (strVal.split('-').length > 1) {
|
||||
ary = strVal.split('-');
|
||||
objRadio.eq(2).attr("checked", "checked");
|
||||
$("#yearStart_0").numberspinner('setValue', ary[0]);
|
||||
$("#yearEnd_0").numberspinner('setValue', ary[1]);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
Before Width: | Height: | Size: 194 B |
Binary file not shown.
|
Before Width: | Height: | Size: 115 B |
Binary file not shown.
|
Before Width: | Height: | Size: 150 B |
@@ -1,354 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Cron表达式生成器</title>
|
||||
<script src="../../jquery/jquery-1.12.4.min.js" type="text/javascript"></script>
|
||||
<link href="easyui/themes/bootstrap/easyui.css" rel="stylesheet" type="text/css" />
|
||||
<script src="easyui/jquery.easyui.min.js" type="text/javascript"></script>
|
||||
<script src="cron.js" type="text/javascript"></script>
|
||||
</head>
|
||||
<body style="margin:0">
|
||||
<div class="easyui-layout"
|
||||
style="width: 630px; height: 520px; border: 1px rgb(202, 196, 196) solid; border-radius: 5px;">
|
||||
<div style="height: 100%;">
|
||||
<a href="javascript:location=location" style="position:absolute;top:7px;right:10px;z-index:100;font-size:12px">刷新</a>
|
||||
<div class="easyui-tabs" data-options="fit:true,border:false">
|
||||
<div title="秒">
|
||||
<div class="line">
|
||||
<input type="radio" checked="checked" name="second" onclick="everyTime(this)"> 每秒
|
||||
允许的通配符[, - * /]
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="second" onclick="cycle(this)"> 周期从 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:1,max:58" value="1"
|
||||
id="secondStart_0">- <input class="numberspinner" style="width: 60px;"
|
||||
data-options="min:2,max:59" value="2" id="secondEnd_0">秒
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="second" onclick="startOn(this)"> 从 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:0,max:59" value="0"
|
||||
id="secondStart_1">秒开始,每 <input class="numberspinner" style="width: 60px;"
|
||||
data-options="min:1,max:59" value="1" id="secondEnd_1">秒执行一次
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="second" id="sencond_appoint"> 指定
|
||||
</div>
|
||||
<div class="imp secondList">
|
||||
<input type="checkbox" value="0">00 <input type="checkbox" value="1">01 <input
|
||||
type="checkbox" value="2">02 <input type="checkbox" value="3">03 <input
|
||||
type="checkbox" value="4">04 <input type="checkbox" value="5">05 <input
|
||||
type="checkbox" value="6">06 <input type="checkbox" value="7">07 <input
|
||||
type="checkbox" value="8">08 <input type="checkbox" value="9">09
|
||||
</div>
|
||||
<div class="imp secondList">
|
||||
<input type="checkbox" value="10">10 <input type="checkbox" value="11">11 <input
|
||||
type="checkbox" value="12">12 <input type="checkbox" value="13">13 <input
|
||||
type="checkbox" value="14">14 <input type="checkbox" value="15">15 <input
|
||||
type="checkbox" value="16">16 <input type="checkbox" value="17">17 <input
|
||||
type="checkbox" value="18">18 <input type="checkbox" value="19">19
|
||||
</div>
|
||||
<div class="imp secondList">
|
||||
<input type="checkbox" value="20">20 <input type="checkbox" value="21">21 <input
|
||||
type="checkbox" value="22">22 <input type="checkbox" value="23">23 <input
|
||||
type="checkbox" value="24">24 <input type="checkbox" value="25">25 <input
|
||||
type="checkbox" value="26">26 <input type="checkbox" value="27">27 <input
|
||||
type="checkbox" value="28">28 <input type="checkbox" value="29">29
|
||||
</div>
|
||||
<div class="imp secondList">
|
||||
<input type="checkbox" value="30">30 <input type="checkbox" value="31">31 <input
|
||||
type="checkbox" value="32">32 <input type="checkbox" value="33">33 <input
|
||||
type="checkbox" value="34">34 <input type="checkbox" value="35">35 <input
|
||||
type="checkbox" value="36">36 <input type="checkbox" value="37">37 <input
|
||||
type="checkbox" value="38">38 <input type="checkbox" value="39">39
|
||||
</div>
|
||||
<div class="imp secondList">
|
||||
<input type="checkbox" value="40">40 <input type="checkbox" value="41">41 <input
|
||||
type="checkbox" value="42">42 <input type="checkbox" value="43">43 <input
|
||||
type="checkbox" value="44">44 <input type="checkbox" value="45">45 <input
|
||||
type="checkbox" value="46">46 <input type="checkbox" value="47">47 <input
|
||||
type="checkbox" value="48">48 <input type="checkbox" value="49">49
|
||||
</div>
|
||||
<div class="imp secondList">
|
||||
<input type="checkbox" value="50">50 <input type="checkbox" value="51">51 <input
|
||||
type="checkbox" value="52">52 <input type="checkbox" value="53">53 <input
|
||||
type="checkbox" value="54">54 <input type="checkbox" value="55">55 <input
|
||||
type="checkbox" value="56">56 <input type="checkbox" value="57">57 <input
|
||||
type="checkbox" value="58">58 <input type="checkbox" value="59">59
|
||||
</div>
|
||||
</div>
|
||||
<div title="分钟">
|
||||
<div class="line">
|
||||
<input type="radio" checked="checked" name="min" onclick="everyTime(this)"> 分钟
|
||||
允许的通配符[, - * /]
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="min" onclick="cycle(this)"> 周期从 <input class="numberspinner"
|
||||
style="width: 60px;" data-options="min:1,max:58" value="1" id="minStart_0">- <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:2,max:59" value="2"
|
||||
id="minEnd_0">分钟
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="min" onclick="startOn(this)"> 从 <input class="numberspinner"
|
||||
style="width: 60px;" data-options="min:0,max:59" value="0" id="minStart_1">分钟开始,每 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:1,max:59" value="1"
|
||||
id="minEnd_1">分钟执行一次
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="min" id="min_appoint"> 指定
|
||||
</div>
|
||||
<div class="imp minList">
|
||||
<input type="checkbox" value="0">00 <input type="checkbox" value="1">01 <input
|
||||
type="checkbox" value="2">02 <input type="checkbox" value="3">03 <input
|
||||
type="checkbox" value="4">04 <input type="checkbox" value="5">05 <input
|
||||
type="checkbox" value="6">06 <input type="checkbox" value="7">07 <input
|
||||
type="checkbox" value="8">08 <input type="checkbox" value="9">09
|
||||
</div>
|
||||
<div class="imp minList">
|
||||
<input type="checkbox" value="10">10 <input type="checkbox" value="11">11 <input
|
||||
type="checkbox" value="12">12 <input type="checkbox" value="13">13 <input
|
||||
type="checkbox" value="14">14 <input type="checkbox" value="15">15 <input
|
||||
type="checkbox" value="16">16 <input type="checkbox" value="17">17 <input
|
||||
type="checkbox" value="18">18 <input type="checkbox" value="19">19
|
||||
</div>
|
||||
<div class="imp minList">
|
||||
<input type="checkbox" value="20">20 <input type="checkbox" value="21">21 <input
|
||||
type="checkbox" value="22">22 <input type="checkbox" value="23">23 <input
|
||||
type="checkbox" value="24">24 <input type="checkbox" value="25">25 <input
|
||||
type="checkbox" value="26">26 <input type="checkbox" value="27">27 <input
|
||||
type="checkbox" value="28">28 <input type="checkbox" value="29">29
|
||||
</div>
|
||||
<div class="imp minList">
|
||||
<input type="checkbox" value="30">30 <input type="checkbox" value="31">31 <input
|
||||
type="checkbox" value="32">32 <input type="checkbox" value="33">33 <input
|
||||
type="checkbox" value="34">34 <input type="checkbox" value="35">35 <input
|
||||
type="checkbox" value="36">36 <input type="checkbox" value="37">37 <input
|
||||
type="checkbox" value="38">38 <input type="checkbox" value="39">39
|
||||
</div>
|
||||
<div class="imp minList">
|
||||
<input type="checkbox" value="40">40 <input type="checkbox" value="41">41 <input
|
||||
type="checkbox" value="42">42 <input type="checkbox" value="43">43 <input
|
||||
type="checkbox" value="44">44 <input type="checkbox" value="45">45 <input
|
||||
type="checkbox" value="46">46 <input type="checkbox" value="47">47 <input
|
||||
type="checkbox" value="48">48 <input type="checkbox" value="49">49
|
||||
</div>
|
||||
<div class="imp minList">
|
||||
<input type="checkbox" value="50">50 <input type="checkbox" value="51">51 <input
|
||||
type="checkbox" value="52">52 <input type="checkbox" value="53">53 <input
|
||||
type="checkbox" value="54">54 <input type="checkbox" value="55">55 <input
|
||||
type="checkbox" value="56">56 <input type="checkbox" value="57">57 <input
|
||||
type="checkbox" value="58">58 <input type="checkbox" value="59">59
|
||||
</div>
|
||||
</div>
|
||||
<div title="小时">
|
||||
<div class="line">
|
||||
<input type="radio" checked="checked" name="hour" onclick="everyTime(this)"> 小时
|
||||
允许的通配符[, - * /]
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="hour" onclick="cycle(this)"> 周期从 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:0,max:23" value="0"
|
||||
id="hourStart_0">- <input class="numberspinner" style="width: 60px;"
|
||||
data-options="min:2,max:23" value="2" id="hourEnd_1">小时
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="hour" onclick="startOn(this)"> 从 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:0,max:23" value="0"
|
||||
id="hourStart_1">小时开始,每 <input class="numberspinner" style="width: 60px;"
|
||||
data-options="min:1,max:23" value="1" id="hourEnd_1">小时执行一次
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="hour" id="hour_appoint"> 指定
|
||||
</div>
|
||||
<div class="imp hourList">
|
||||
上午: <input type="checkbox" value="0">00 <input type="checkbox" value="1">01 <input
|
||||
type="checkbox" value="2">02 <input type="checkbox" value="3">03 <input
|
||||
type="checkbox" value="4">04 <input type="checkbox" value="5">05 <input
|
||||
type="checkbox" value="6">06 <input type="checkbox" value="7">07 <input
|
||||
type="checkbox" value="8">08 <input type="checkbox" value="9">09 <input
|
||||
type="checkbox" value="10">10 <input type="checkbox" value="11">11
|
||||
</div>
|
||||
<div class="imp hourList">
|
||||
下午: <input type="checkbox" value="12">12 <input type="checkbox" value="13">13
|
||||
<input type="checkbox" value="14">14 <input type="checkbox" value="15">15 <input
|
||||
type="checkbox" value="16">16 <input type="checkbox" value="17">17 <input
|
||||
type="checkbox" value="18">18 <input type="checkbox" value="19">19 <input
|
||||
type="checkbox" value="20">20 <input type="checkbox" value="21">21 <input
|
||||
type="checkbox" value="22">22 <input type="checkbox" value="23">23
|
||||
</div>
|
||||
</div>
|
||||
<div title="日">
|
||||
<div class="line">
|
||||
<input type="radio" checked="checked" name="day" onclick="everyTime(this)"> 日 允许的通配符[,
|
||||
- * / L W]
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="day" onclick="unAppoint(this)"> 不指定
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="day" onclick="cycle(this)"> 周期从 <input class="numberspinner"
|
||||
style="width: 60px;" data-options="min:1,max:31" value="1" id="dayStart_0">- <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:2,max:31" value="2"
|
||||
id="dayEnd_0">日
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="day" onclick="startOn(this)"> 从 <input class="numberspinner"
|
||||
style="width: 60px;" data-options="min:1,max:31" value="1" id="dayStart_1">日开始,每 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:1,max:31" value="1"
|
||||
id="dayEnd_1">天执行一次
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="day" onclick="workDay(this)"> 每月 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:1,max:31" value="1"
|
||||
id="dayStart_2">号最近的那个工作日
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="day" onclick="lastDay(this)"> 本月最后一天
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="day" id="day_appoint"> 指定
|
||||
</div>
|
||||
<div class="imp dayList">
|
||||
<input type="checkbox" value="1">1 <input type="checkbox" value="2">2 <input
|
||||
type="checkbox" value="3">3 <input type="checkbox" value="4">4 <input
|
||||
type="checkbox" value="5">5 <input type="checkbox" value="6">6 <input
|
||||
type="checkbox" value="7">7 <input type="checkbox" value="8">8 <input
|
||||
type="checkbox" value="9">9 <input type="checkbox" value="10">10 <input
|
||||
type="checkbox" value="11">11 <input type="checkbox" value="12">12 <input
|
||||
type="checkbox" value="13">13 <input type="checkbox" value="14">14 <input
|
||||
type="checkbox" value="15">15 <input type="checkbox" value="16">16
|
||||
</div>
|
||||
<div class="imp dayList">
|
||||
<input type="checkbox" value="17">17 <input type="checkbox" value="18">18 <input
|
||||
type="checkbox" value="19">19 <input type="checkbox" value="20">20 <input
|
||||
type="checkbox" value="21">21 <input type="checkbox" value="22">22 <input
|
||||
type="checkbox" value="23">23 <input type="checkbox" value="24">24 <input
|
||||
type="checkbox" value="25">25 <input type="checkbox" value="26">26 <input
|
||||
type="checkbox" value="27">27 <input type="checkbox" value="28">28 <input
|
||||
type="checkbox" value="29">29 <input type="checkbox" value="30">30 <input
|
||||
type="checkbox" value="31">31
|
||||
</div>
|
||||
</div>
|
||||
<div title="月">
|
||||
<div class="line">
|
||||
<input type="radio" checked="checked" name="mouth" onclick="everyTime(this)"> 月
|
||||
允许的通配符[, - * /]
|
||||
</div>
|
||||
<!-- <div class="line"> -->
|
||||
<!-- <input type="radio" name="mouth" onclick="unAppoint(this)"> 不指定</div> -->
|
||||
<div class="line">
|
||||
<input type="radio" name="mouth" onclick="cycle(this)"> 周期从 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:1,max:12" value="1"
|
||||
id="mouthStart_0">- <input class="numberspinner" style="width: 60px;"
|
||||
data-options="min:2,max:12" value="2" id="mouthEnd_0">月
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" id="mouth_3" name="mouth" onclick="startOn(this)"> 从 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:1,max:12" value="1"
|
||||
id="mouthStart_1">日开始,每 <input class="numberspinner" style="width: 60px;"
|
||||
data-options="min:1,max:12" value="1" id="mouthEnd_1">月执行一次
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="mouth" id="mouth_appoint"> 指定
|
||||
</div>
|
||||
<div class="imp mouthList">
|
||||
<input type="checkbox" value="1">1 <input type="checkbox" value="2">2 <input
|
||||
type="checkbox" value="3">3 <input type="checkbox" value="4">4 <input
|
||||
type="checkbox" value="5">5 <input type="checkbox" value="6">6 <input
|
||||
type="checkbox" value="7">7 <input type="checkbox" value="8">8 <input
|
||||
type="checkbox" value="9">9 <input type="checkbox" value="10">10 <input
|
||||
type="checkbox" value="11">11 <input type="checkbox" value="12">12
|
||||
</div>
|
||||
</div>
|
||||
<div title="周">
|
||||
<div class="line">
|
||||
<input type="radio" checked="checked" name="week" onclick="everyTime(this)"> 周
|
||||
允许的通配符[, - * / L #]
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="week" onclick="unAppoint(this)"> 不指定
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="week" onclick="cycle(this)"> 周期 从星期 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:1,max:7" value="1"
|
||||
id="weekStart_0">- <input class="numberspinner" style="width: 60px;"
|
||||
data-options="min:2,max:7" value="2" id="weekEnd_0">
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="week" onclick="weekOfDay(this)"> 星期 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:1,max:7" value="1"
|
||||
id="weekStart_1">的, 第 <input class="numberspinner" style="width: 60px;"
|
||||
data-options="min:1,max:4" value="1" id="weekEnd_1">周
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="week" onclick="lastWeek(this)"> 本月最后一个星期 <input
|
||||
class="numberspinner" style="width: 60px;" data-options="min:1,max:7" id="weekStart_2"
|
||||
value="1">
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="week" id="week_appoint"> 指定
|
||||
</div>
|
||||
<div class="imp weekList">
|
||||
<input type="checkbox" value="1">1 周日 <input type="checkbox" value="2">2 周一 <input
|
||||
type="checkbox" value="3">3 周二 <input type="checkbox" value="4">4 周三 <input
|
||||
type="checkbox" value="5">5 周四 <input type="checkbox" value="6">6 周五 <input
|
||||
type="checkbox" value="7">7 周六
|
||||
</div>
|
||||
</div>
|
||||
<div title="年">
|
||||
<div class="line">
|
||||
<input type="radio" checked="checked" name="year" onclick="unAppoint(this)"> 不指定
|
||||
允许的通配符[, - * /] 非必填
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="year" onclick="everyTime(this)"> 每年
|
||||
</div>
|
||||
<div class="line">
|
||||
<input type="radio" name="year" onclick="cycle(this)"> 周期 从 <input
|
||||
class="numberspinner" style="width: 90px;" data-options="min:2013,max:3000" id="yearStart_0"
|
||||
value="2016">- <input class="numberspinner" style="width: 90px;"
|
||||
data-options="min:2014,max:3000" id="yearEnd_0" value="2019">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div data-options="region:'south',border:false" style="height: 245px">
|
||||
<fieldset style="border-radius: 3px; height: 200px;">
|
||||
<legend>表达式</legend>
|
||||
<table style="width: 100%">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td align="center">秒</td>
|
||||
<td align="center">分钟</td>
|
||||
<td align="center">小时</td>
|
||||
<td align="center">日</td>
|
||||
<td align="center">月 <br /></td>
|
||||
<td align="center">星期</td>
|
||||
<td align="center">年</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>表达式字段:</td>
|
||||
<td><input type="text" name="v_second" class="col" value="*" readonly="readonly" /></td>
|
||||
<td><input type="text" name="v_min" class="col" value="*" readonly="readonly" /></td>
|
||||
<td><input type="text" name="v_hour" class="col" value="*" readonly="readonly" /></td>
|
||||
<td><input type="text" name="v_day" class="col" value="*" readonly="readonly" /></td>
|
||||
<td><input type="text" name="v_mouth" class="col" value="*" readonly="readonly" /></td>
|
||||
<td><input type="text" name="v_week" class="col" value="?" readonly="readonly" /></td>
|
||||
<td><input type="text" name="v_year" class="col" readonly="readonly" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Cron 表达式:</td>
|
||||
<td colspan="5"><input type="text" name="cron" style="width: 98%;" value="* * * * * ?"
|
||||
id="cron" /></td>
|
||||
<td colspan="2"><input type="button" value="表达式反解析到界面" id="btnFan" onclick="btnFan()" /></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="8"><div id="runTime" style="height: 120px; overflow: auto;"></div></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user