@ -1,35 +1,18 @@
< template >
< div class = "app-container" >
< el-form :model = "queryParams" ref = "queryForm" :inline = "true" v-show = "showSearch" label-width="68 px" >
< el -form -item label = "任务名称" prop = "jobN ame" >
< el-input
v-model = "queryParams.jobName"
placeholder = "请输入任务名称"
clearable
size = "small"
@keyup.enter.native ="handleQuery"
/ >
< / el-form-item >
< el-form-item label = "任务组名" prop = "jobGroup" >
< el-select v-model = "queryParams.jobGroup" placeholder="请选择任务组名" clearable size="small" >
< el -option
v-for = "dict in jobGroupOptions"
:key = "dict.dictValue"
:label = "dict.dictLabel"
:value = "dict.dictValue"
/ >
< / el-select >
< el-form :model = "queryParams" ref = "queryForm" :inline = "true" v-show = "showSearch" label-width="100 px" >
< el -form -item label = "任务名称" prop = "n ame" >
< el-input v-model = "queryParams.name" placeholder="请输入任务名称" clearable size="small" @keyup.enter.native="handleQuery" />
< / el -form -item >
< el-form-item label = "任务状态" prop = "status" >
< el-select v-model = "queryParams.status" placeholder="请选择任务状态" clearable size="small" >
< el -option
v-for = "dict in statusOptions"
:key = "dict.dictValue"
:label = "dict.dictLabel"
:value = "dict.dictValue"
/ >
< el -option v-for = "dict in this.getDictDatas(DICT_TYPE.INF_JOB_STATUS)"
:key = "dict.value" :label = "dict.label" :value = "dict.value" / >
< / el-select >
< / el-form-item >
< el-form-item label = "处理器的名字" prop = "handlerName" >
< el-input v-model = "queryParams.handlerName" placeholder="请输入处理器的名字" clearable size="small" @keyup.enter.native="handleQuery" />
< / el -form -item >
< el-form-item >
< el-button type = "cyan" icon = "el-icon-search" size = "mini" @click ="handleQuery" > 搜索 < / el -button >
< el-button icon = "el-icon-refresh" size = "mini" @click ="resetQuery" > 重置 < / el -button >
@ -38,171 +21,69 @@
< el-row :gutter = "10" class = "mb8" >
< el-col :span = "1.5" >
< el-button
type = "primary"
icon = "el-icon-plus"
size = "mini"
@click ="handleAdd"
v-hasPermi = "['monitor:job:add']"
> 新增 < / el-button >
< el-button type = "primary" icon = "el-icon-plus" size = "mini" @click ="handleAdd"
v-hasPermi = "['monitor:job:add']" > 新增 < / el -button >
< / el-col >
< el-col :span = "1.5" >
< el-button
type = "success"
icon = "el-icon-edit"
size = "mini"
:disabled = "single"
@click ="handleUpdate"
v-hasPermi = "['monitor:job:edit']"
> 修改 < / el-button >
< el-button type = "warning" icon = "el-icon-download" size = "mini" @click ="handleExport"
v-hasPermi = "['monitor:job:export']" > 导出 < / el -button >
< / el-col >
< el-col :span = "1.5" >
< el-button
type = "danger"
icon = "el-icon-delete"
size = "mini"
:disabled = "multiple"
@click ="handleDelete"
v-hasPermi = "['monitor:job:remove']"
> 删除 < / el-button >
< / el-col >
< el-col :span = "1.5" >
< el-button
type = "warning"
icon = "el-icon-download"
size = "mini"
@click ="handleExport"
v-hasPermi = "['monitor:job:export']"
> 导出 < / el-button >
< / el-col >
< el-col :span = "1.5" >
< el-button
type = "info"
icon = "el-icon-s-operation"
size = "mini"
@click ="handleJobLog"
v-hasPermi = "['monitor:job:query']"
> 日志 < / el-button >
< el-button type = "info" icon = "el-icon-s-operation" size = "mini" @click ="handleJobLog"
v-hasPermi = "['monitor:job:query']" > 日志 < / el -button >
< / el-col >
< right-toolbar :showSearch.sync = "showSearch" @queryTable ="getList" > < / right -toolbar >
< / el-row >
< el-table v-loading = "loading" :data="jobList" @selection-change="handleSelectionChange" >
< el -table -column type = "selection" width = "55 " align = "center" / >
< el-table-column label = "任务编号 " align = "center" prop = "jobId " / >
< el-table-column label = "任务名称 " align = "center" prop = "jobName" :show-overflow-tooltip = "true" / >
< el-table-column label = "任务组名" align = "center" prop = "jobGroup" :formatter = "jobGroupFormat" / >
< el-table-column label = "调用目标字符串" align = "center" prop = "invokeTarget" :show-overflow-tooltip = "true" / >
< el-table-column label = "cron执行表达式" align = "center" prop = "cronExpression" :show-overflow-tooltip = "true" / >
< el-table-column label = "状态" align = "center" >
< el-table v-loading = "loading" :data="jobList" >
< el -table -column label = "任务编号 " align = "center" prop = "id" / >
< el-table-column label = "任务名称 " align = "center" prop = "name " / >
< el-table-column label = "任务状态 " align = "center" prop = "status" >
< template slot -scope = " scope " >
< el-switch
v-model = "scope.row.status"
active -value = " 0 "
inactive -value = " 1 "
@change ="handleStatusChange(scope.row)"
> < / el-switch >
< span > { { getDictDataLabel ( DICT _TYPE . INF _JOB _STATUS , scope . row . status ) } } < / span >
< / template >
< / el-table-column >
< / el-table-column > >
< el-table-column label = "处理器的名字" align = "center" prop = "handlerName" / >
< el-table-column label = "处理器的参数" align = "center" prop = "handlerParam" / >
< el-table-column label = "CRON 表达式" align = "center" prop = "cronExpression" / >
< el-table-column label = "操作" align = "center" class -name = " small -padding fixed -width " >
< template slot -scope = " scope " >
< el-button size = "mini" type = "text" icon = "el-icon-view" @click ="handleView(scope.row)"
v-hasPermi = "['monitor:job:query']" > 详细 < / el -button >
< el-button size = "mini" type = "text" icon = "el-icon-view" @click ="handleUpdate(scope.row)"
v-hasPermi = "['monitor:job:query']" > 修改 < / el -button >
< el-button
size = "mini"
type = "text"
icon = "el-icon-caret-right"
@click ="handleRun(scope.row)"
v-hasPermi = "['monitor:job:changeStatus']"
size = "mini"
type = "text"
icon = "el-icon-caret-right"
@click ="handleRun(scope.row)"
v-hasPermi = "['monitor:job:changeStatus']"
> 执行一次 < / el-button >
< el-button
size = "mini"
type = "text"
icon = "el-icon-view"
@click ="handleView(scope.row)"
v-hasPermi = "['monitor:job:query']"
> 详细 < / el-button >
< / template >
< / el-table-column >
< / el-table >
< pagination
v-show = "total>0"
:total = "total"
:page.sync = "queryParams.pageNum"
:limit.sync = "queryParams.pageSize"
@pagination ="getList"
/ >
<!-- 分页组件 -- >
< pagination v-show = "total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
@pagination ="getList" />
< ! - - 添加或修改定时任务对话框 - - >
< el-dialog :title = "title" :visible.sync = "open" width = "7 00px" append -to -body >
< el-dialog :title = "title" :visible.sync = "open" width = "5 00px" append -to -body >
< el-form ref = "form" :model = "form" :rules = "rules" label -width = " 120px " >
< el-row >
< el-col :span = "12" >
< el-form-item label = "任务名称" prop = "jobName" >
< el-input v-model = "form.jobName" placeholder="请输入任务名称" / >
< / el-form-item >
< / el-col >
< el-col :span = "12 " >
< el-form-item label = "任务分组" prop = "jobGroup" >
< el-select v-model = "form.jobGroup" placeholder="请选择" >
< el-option
v-for = "dict in jobGroupOptions"
:key = "dict.dictValue"
:label = "dict.dictLabel"
:value = "dict.dictValue"
> </ el-option >
< / el-select >
< / el-form-item >
< / el-col >
< el-col :span = "24" >
< el-form-item prop = "invokeTarget" >
< span slot = "label" >
调用方法
< el-tooltip placement = "top" >
< div slot = "content" >
Bean调用示例 : ryTask . ryParams ( 'ry' )
< br / > Class类调用示例 : com . ruoyi . quartz . task . RyTask . ryParams ( 'ry' )
< br / > 参数说明 : 支持字符串 , 布尔类型 , 长整型 , 浮点型 , 整型
< / div >
< i class = "el-icon-question" > < / i >
< / el-tooltip >
< / span >
< el-input v-model = "form.invokeTarget" placeholder="请输入调用目标字符串" / >
< / el-form-item >
< / el-col >
< el-col :span = "12" >
< el-form-item label = "cron表达式" prop = "cronExpression" >
< el-input v-model = "form.cronExpression" placeholder="请输入cron执行表达式" / >
< / el-form-item >
< / el-col >
< el-col :span = "12" >
< el-form-item label = "是否并发" prop = "concurrent" >
< el-radio-group v-model = "form.concurrent" size="small" >
< el -radio -button label = "0" > 允许 < / el-radio-button >
< el-radio-button label = "1" > 禁止 < / el-radio-button >
< / el-radio-group >
< / el-form-item >
< / el-col >
< el-col :span = "24" >
< el-form-item label = "错误策略" prop = "misfirePolicy" >
< el-radio-group v-model = "form.misfirePolicy" size="small" >
< el -radio -button label = "1" > 立即执行 < / el-radio-button >
< el-radio-button label = "2" > 执行一次 < / el-radio-button >
< el-radio-button label = "3" > 放弃执行 < / el-radio-button >
< / el-radio-group >
< / el-form-item >
< / el-col >
< el-col :span = "24" >
< el-form-item label = "状态" >
< el-radio-group v-model = "form.status" >
< el -radio
v-for = "dict in statusOptions"
:key = "dict.dictValue"
:label = "dict.dictValue"
> { { dict . dictLabel } } < / el-radio >
< / el-radio-group >
< / el-form-item >
< / el-col >
< / el-row >
< el-form-item label = "任务名称" prop = "name" >
< el-input v-model = "form.name" placeholder="请输入任务名称" / >
</ el-form-item >
< el-form-item label = "处理器的名字" prop = "handlerName" >
< el-input v-model = "form.handlerName" placeholder="请输入处理器的名字" v-bind:readonly="form.id !== undefined" / >
< / el-form-item >
< el-form-item label = "处理器的参数" prop = "handlerParam " >
< el-input v-model = "form.handlerParam" placeholder="请输入处理器的参数" / >
< / el-form-item >
< el-form-item label = "CRON 表达式" prop = "cronExpression" >
< el-input v-model = "form.cronExpression" placeholder="请输入CRON 表达式" / >
< / el-form-item >
< el-form-item label = "监控超时时间" prop = "monitorTimeout" >
< el-input v-model = "form.monitorTimeout" placeholder="请输入监控超时时间,单位:毫秒" / >
< / el-form-item >
< / el-form >
< div slot = "footer" class = "dialog-footer" >
< el-button type = "primary" @click ="submitForm" > 确 定 < / el -button >
@ -212,44 +93,20 @@
<!-- 任务日志详细 -- >
< el-dialog title = "任务详细" :visible.sync = "openView" width = "700px" append -to -body >
< el-form ref = "form" :model = "form" label -width = " 1 20px" size = "mini" >
< el-form ref = "form" :model = "form" label -width = " 20 0px " size = "mini" >
< el-row >
< el-col :span = "12" >
< el-form-item label = "任务编号:" > { { form . jobId } } < / el-form-item >
< el-form-item label = "任务名称:" > { { form . jobName } } < / el-form-item >
< / el-col >
< el-col :span = "12" >
< el-form-item label = "任务分组:" > { { jobGroupFormat ( form ) } } < / el-form-item >
< el-form-item label = "创建时间:" > { { form . createTime } } < / el-form-item >
< / el-col >
< el-col :span = "12" >
< el-form-item label = "cron表达式: " > { { form . cronExpression } } < / el-form-item >
< / el-col >
< el-col :span = "12" >
< el-form-item label = "下次执行时间:" > { { parseTime ( form . nextValidTime ) } } < / el-form-item >
< / el-col >
< el-col :span = "24" >
< el-form-item label = "调用目标方法 : " > { { form . invokeTarget } } < / el-form-item >
< / el-col >
< el-col :span = "12 " >
< el-form-item label = "任务状态 : " >
< div v-if = "form.status == 0" > 正常 < / div >
< div v-else-if = "form.status == 1" > 失败 < / div >
</ el -form -item >
< / el-col >
< el-col :span = "12" >
< el-form-item label = "是否并发 : " >
< div v-if = "form.concurrent == 0" > 允许 < / div >
< div v-else-if = "form.concurrent == 1" > 禁止 < / div >
< / el -form -item >
< / el-col >
< el-col :span = "12" >
< el-form-item label = "执行策略:" >
< div v-if = "form.misfirePolicy == 0" > 默认策略 < / div >
< div v-else-if = "form.misfirePolicy == 1" > 立即执行 < / div >
< div v-else-if = "form.misfirePolicy == 2" > 执行一次 < / div >
< div v-else-if = "form.misfirePolicy == 3" > 放弃执行 < / div >
< / el -form -item >
< el-form-item label = "任务编号 : " > { { form . id } } < / el-form-item >
< el-form-item label = "任务名称:" > { { form . name } } < / el-form-item >
< el-form-item label = "任务名称: " > { { getDictDataLabel ( DICT _TYPE . INF _JOB _STATUS , form . status ) } } < / el-form-item >
< el-form-item label = "处理器的名字 : " > { { form . handlerName } } < / el-form-item >
< el-form-item label = "处理器的参数:" > { { form . handlerParam } } < / el-form-item >
< el-form-item label = "cron表达式: " > { { form . cronExpression } } < / el-form-item >
<el-form-item label = "最后一次执行的开始时间:" > { { parseTime ( form . executeBeginTime ) } } < / el -form-item>
< el-form-item label = "最后一次执行的开始时间:" > { { parseTime ( form . executeEndTime ) } } < / el-form-item >
< el-form-item label = "上一次触发时间:" > { { parseTime ( form . firePrevTime ) } } < / el-form-item >
< el-form-item label = "下一次触发时间 : " > { { parseTime ( form . fireNextTime ) } } < / el-form-item >
< el-form-item label = "监控超时时间:" > { { form . monitorTimeout > 0 ? form . monitorTimeout + " 毫秒" : "未开启" } } < / el-form-item >
< / el-col >
< / el-row >
< / el-form >
@ -257,6 +114,7 @@
< el-button @click ="openView = false" > 关 闭 < / el -button >
< / div >
< / el-dialog >
< / div >
< / template >
@ -269,12 +127,6 @@ export default {
return {
// 遮罩层
loading : true ,
// 选中数组
ids : [ ] ,
// 非单个禁用
single : true ,
// 非多个禁用
multiple : true ,
// 显示搜索条件
showSearch : true ,
// 总条数
@ -287,83 +139,59 @@ export default {
open : false ,
// 是否显示详细弹出层
openView : false ,
// 任务组名字典
jobGroupOptions : [ ] ,
// 状态字典
statusOptions : [ ] ,
// 查询参数
queryParams : {
pageNum : 1 ,
pageNo : 1 ,
pageSize : 10 ,
jobN ame: undefined ,
jobGroup : undefined ,
status : undefined
n ame: undefined ,
status : undefined ,
handlerName : undefined
} ,
// 表单参数
form : { } ,
// 表单校验
rules : {
jobN ame: [
{ required : true , message : "任务名称 不能为空" , trigger : "blur" }
] ,
invokeTarget : [
{ required : true , message : "调用目标字符串不能为空" , trigger : "blur" }
] ,
cronExpression : [
{ required : true , message : "cron执行表达式不能为空" , trigger : "blur" }
]
n ame: [ { required : true , message : "任务名称不能为空" , trigger : "blur" } ] ,
handlerName : [ { required : true , message : "处理器的名字 不能为空" , trigger : "blur" } ] ,
cronExpression : [ { required : true , message : "CRON 表达式不能为空" , trigger : "blur" } ] ,
}
} ;
} ,
created ( ) {
this . getList ( ) ;
this . getDicts ( "sys_job_group" ) . then ( response => {
this . jobGroupOptions = response . data ;
} ) ;
this . getDicts ( "sys_job_status" ) . then ( response => {
this . statusOptions = response . data ;
} ) ;
} ,
methods : {
/** 查询定时任务列表 */
getList ( ) {
this . loading = true ;
listJob ( this . queryParams ) . then ( response => {
this . jobList = response . rows ;
this . total = response . total ;
this . jobList = response . data . list ;
this . total = response . data . total;
this . loading = false ;
} ) ;
} ,
// 任务组名字典翻译
jobGroupFormat ( row , column ) {
return this . selectDictLabel ( this . jobGroupOptions , row . jobGroup ) ;
} ,
// 状态字典翻译
statusFormat ( row , column ) {
return this . selectDictLabel ( this . statusOptions , row . status ) ;
} ,
// 取消按钮
/** 取消按钮 */
cancel ( ) {
this . open = false ;
this . reset ( ) ;
} ,
// 表单重置
/** 表单重置 */
reset ( ) {
this . form = {
jobI d: undefined ,
jobN ame: undefined ,
jobGroup : undefined ,
invokeTarget : undefined ,
i d: undefined ,
n ame: undefined ,
handlerName : undefined ,
handlerParam : undefined ,
cronExpression : undefined ,
misfirePolicy : 1 ,
concurrent : 1 ,
status : "0"
monitorTimeout : undefined ,
} ;
this . resetForm ( "form" ) ;
} ,
/** 搜索按钮操作 */
handleQuery ( ) {
this . queryParams . pageNum = 1 ;
this . queryParams . pageNo = 1 ;
this . getList ( ) ;
} ,
/** 重置按钮操作 */
@ -371,21 +199,15 @@ export default {
this . resetForm ( "queryForm" ) ;
this . handleQuery ( ) ;
} ,
// 多选框选中数据
handleSelectionChange ( selection ) {
this . ids = selection . map ( item => item . jobId ) ;
this . single = selection . length != 1 ;
this . multiple = ! selection . length ;
} ,
// 任务状态修改
handleStatusChange ( row ) {
let text = row . status === "0" ? "启用" : "停用" ;
this . $confirm ( '确认要"' + text + '""' + row . jobN ame + '"任务吗?' , "警告" , {
this . $confirm ( '确认要"' + text + '""' + row . n ame + '"任务吗?' , "警告" , {
confirmButtonText : "确定" ,
cancelButtonText : "取消" ,
type : "warning"
} ) . then ( function ( ) {
return changeJobStatus ( row . jobI d, row . status ) ;
return changeJobStatus ( row . i d, row . status ) ;
} ) . then ( ( ) => {
this . msgSuccess ( text + "成功" ) ;
} ) . catch ( function ( ) {
@ -394,19 +216,19 @@ export default {
} ,
/* 立即执行一次 */
handleRun ( row ) {
this . $confirm ( '确认要立即执行一次"' + row . jobN ame + '"任务吗?' , "警告" , {
this . $confirm ( '确认要立即执行一次"' + row . n ame + '"任务吗?' , "警告" , {
confirmButtonText : "确定" ,
cancelButtonText : "取消" ,
type : "warning"
} ) . then ( function ( ) {
return runJob ( row . jobI d, row . jobGroup ) ;
return runJob ( row . i d, row . jobGroup ) ;
} ) . then ( ( ) => {
this . msgSuccess ( "执行成功" ) ;
} )
} ,
/** 任务详细信息 */
handleView ( row ) {
getJob ( row . jobI d) . then ( response => {
getJob ( row . i d) . then ( response => {
this . form = response . data ;
this . openView = true ;
} ) ;
@ -424,8 +246,8 @@ export default {
/** 修改按钮操作 */
handleUpdate ( row ) {
this . reset ( ) ;
const jobI d = row . jobId || this . ids ;
getJob ( jobI d) . then ( response => {
const i d = row . id ;
getJob ( i d) . then ( response => {
this . form = response . data ;
this . open = true ;
this . title = "修改任务" ;
@ -435,7 +257,7 @@ export default {
submitForm : function ( ) {
this . $refs [ "form" ] . validate ( valid => {
if ( valid ) {
if ( this . form . jobI d != undefined ) {
if ( this . form . i d !== undefined ) {
updateJob ( this . form ) . then ( response => {
this . msgSuccess ( "修改成功" ) ;
this . open = false ;
@ -453,13 +275,13 @@ export default {
} ,
/** 删除按钮操作 */
handleDelete ( row ) {
const jobI ds = row . jobI d || this . ids ;
this . $confirm ( '是否确认删除定时任务编号为"' + jobI ds + '"的数据项?' , "警告" , {
const i ds = row . i d || this . ids ;
this . $confirm ( '是否确认删除定时任务编号为"' + i ds + '"的数据项?' , "警告" , {
confirmButtonText : "确定" ,
cancelButtonText : "取消" ,
type : "warning"
} ) . then ( function ( ) {
return delJob ( jobI ds) ;
return delJob ( i ds) ;
} ) . then ( ( ) => {
this . getList ( ) ;
this . msgSuccess ( "删除成功" ) ;
@ -480,4 +302,4 @@ export default {
}
}
} ;
< / script >
< / script >