Files
zhgh_zjvtit/target/classes/views/platform/sys/task/index.html
T
2026-08-26 14:25:17 +08:00

327 lines
15 KiB
HTML

<!--#
layout("/layouts/platform.html"){
#-->
<div id="app" v-cloak>
<guava>
<el-card shadow="never">
<el-row type="flex" justify="end">
<el-button @click="openAdd" size="medium" type="primary">
<i class="ti-plus"></i>
新建任务
</el-button>
</el-row>
</el-card>
<el-card class="mt10" shadow="never">
<el-table :data="tableData" @sort-change="pageOrder" header-align="center" style="width: 100%">
<el-table-column sortable prop="name" label="任务名称" header-align="center"></el-table-column>
<el-table-column prop="jobClass" label="执行类" header-align="center" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="data" label="执行参数" header-align="center" :show-overflow-tooltip="true"></el-table-column>
<el-table-column prop="cron" label="定时规则" header-align="center" align="center"></el-table-column>
<el-table-column prop="exeAt" label="执行时间" header-align="center" align="center">
<template slot-scope="scope">{{formatAt(scope.row.exeAt)}}</template>
</el-table-column>
<el-table-column sortable prop="disabled" label="启用状态" header-align="center" align="center">
<template slot-scope="scope">
<i v-if="scope.row.disabled" class="fa fa-circle text-danger ml5"></i>
<i v-if="!scope.row.disabled" class="fa fa-circle text-success ml5"></i>
</template>
</el-table-column>
<el-table-column label="操作" width="120">
<template slot-scope="scope">
<el-dropdown @command="dropdownCommand">
<el-button size="mini">
<i class="ti-settings"></i>
<span class="ti-angle-down"></span>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item :command="{type:'enable',id:scope.row.id,name:scope.row.name,row:scope.row}">启用</el-dropdown-item>
<el-dropdown-item :command="{type:'disable',id:scope.row.id,name:scope.row.name,row:scope.row}">
禁用
</el-dropdown-item>
<el-dropdown-item divided :command="{type:'edit',id:scope.row.id}">修改</el-dropdown-item>
<el-dropdown-item :command="{type:'delete',id:scope.row.id,name:scope.row.name}">删除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</template>
</el-table-column>
</el-table>
<!--#include("/layouts/pagination.html"){}#-->
</el-card>
</guava>
<el-dialog title="新建任务" :visible.sync="addDialogVisible" :close-on-click-modal="false" width="50%">
<el-form :model="formData" ref="addForm" :rules="formRules" size="small" label-width="80px">
<el-form-item prop="name" label="任务名称">
<el-input maxlength="100" placeholder="任务名称" v-model="formData.name" auto-complete="off" tabindex="1" type="text"></el-input>
</el-form-item>
<el-form-item prop="jobClass" label="执行类">
<el-input placeholder="执行类" v-model="formData.jobClass" auto-complete="off" tabindex="2" type="text"></el-input>
</el-form-item>
<el-form-item prop="cron" label="执行周期">
<el-input placeholder="Cron表达式" v-model="formData.cron" auto-complete="off" tabindex="3" type="text">
<template slot="append">
<a href="${base}/platform/sys/task/cron" style="color: #409eff" target="_blank">表达式生成器</a>
</template>
</el-input>
</el-form-item>
<el-form-item prop="data" label="执行参数(Json)">
<el-input type="textarea" v-model="formData.data" placeholder="{}" tabindex="4"></el-input>
</el-form-item>
<el-form-item prop="disabled" label="启用状态">
<el-switch v-model="formData.disabled" active-color="#ff4949" inactive-color="#13ce66"></el-switch>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="addDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doAdd">确 定</el-button>
</span>
</el-dialog>
<el-dialog title="修改任务" :visible.sync="editDialogVisible" :close-on-click-modal="false" width="50%">
<el-form :model="formData" ref="editForm" :rules="formRules" size="small" label-width="80px">
<el-form-item prop="name" label="任务名称">
<el-input maxlength="100" placeholder="任务名称" v-model="formData.name" auto-complete="off" tabindex="1" type="text"></el-input>
</el-form-item>
<el-form-item prop="jobClass" label="执行类">
<el-input placeholder="执行类" v-model="formData.jobClass" auto-complete="off" tabindex="2" type="text"></el-input>
</el-form-item>
<el-form-item prop="cron" label="执行周期">
<el-input placeholder="Cron表达式" v-model="formData.cron" auto-complete="off" tabindex="3" type="text">
<template slot="append">
<a href="${base}/platform/sys/task/cron" style="color: #409eff" target="_blank">表达式生成器</a>
</template>
</el-input>
</el-form-item>
<el-form-item prop="data" label="执行参数(Json)">
<el-input type="textarea" v-model="formData.data" placeholder="{}" tabindex="4"></el-input>
</el-form-item>
<el-form-item prop="disabled" label="启用状态">
<el-switch v-model="formData.disabled" active-color="#ff4949" inactive-color="#13ce66"></el-switch>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="editDialogVisible = false">取 消</el-button>
<el-button type="primary" @click="doEdit">确 定</el-button>
</span>
</el-dialog>
</div>
<script nonce="${cspNonce!}">
new Vue({
el: "#app",
data: function () {
return {
addDialogVisible: false,
editDialogVisible: false,
tableData: [],
pageForm: {
pageNumber: 1,
pageSize: 10,
totalCount: 0,
pageOrderName: "",
pageOrderBy: ""
},
formData: {
id: ""
},
formRules: {
name: [{ required: true, message: "任务名称", trigger: "blur" }],
jobClass: [{ required: true, message: "执行类", trigger: "blur" }],
cron: [{ required: true, message: "执行周期", trigger: "blur" }]
}
}
},
methods: {
pageOrder: function (column) {
//按字段排序
this.pageForm.pageOrderName = column.prop
this.pageForm.pageOrderBy = column.order
this.pageData()
},
pageNumberChange: function (val) {
//页码更新操作
this.pageForm.pageNumber = val
this.pageData()
},
pageSizeChange: function (val) {
//分页大小更新操作
this.pageForm.pageSize = val
this.pageData()
},
pageData: function () {
//加载分页数据
var self = this
$.post(
base + "/platform/sys/task/data",
self.pageForm,
function (data) {
if (data.code == 0) {
self.tableData = data.data.list
self.pageForm.totalCount = data.data.totalCount
} else {
self.$message({
message: data.msg,
type: "error"
})
}
},
"json"
)
},
formatAt: function (val) {
if (val && val > 0) return moment(val).format("YYYY-MM-DD HH:mm:ss")
return ""
},
doSearch: function () {
this.pageForm.pageNumber = 1
this.pageData()
},
openAdd: function () {
var self = this
this.addDialogVisible = true
this.formData = {} //打开新增窗口,表单先清空
if (this.$refs["addForm"]) this.$refs["addForm"].resetFields()
},
doAdd: function () {
var self = this
self.$refs["addForm"].validate(function (valid) {
if (valid) {
$.post(
base + "/platform/sys/task/addDo",
self.formData,
function (data) {
if (data.code == 0) {
self.$message({
message: data.msg,
type: "success"
})
self.addDialogVisible = false
} else {
self.$message({
message: data.msg,
type: "error"
})
}
self.pageData() //添加失败也可以入库,所以加载一下看看
},
"json"
)
}
})
},
doEdit: function () {
var self = this
self.$refs["editForm"].validate(function (valid) {
if (valid) {
$.post(
base + "/platform/sys/task/editDo",
self.formData,
function (data) {
if (data.code == 0) {
self.$message({
message: data.msg,
type: "success"
})
self.doSearch() //查询是带条件的,加载新建用户选择的单位用户数据
//self.pageData();
self.editDialogVisible = false
} else {
self.$message({
message: data.msg,
type: "error"
})
}
},
"json"
)
}
})
},
dropdownCommand: function (command) {
//监听下拉框事件
var self = this
if ("enable" == command.type || "disable" == command.type) {
$.post(
base + "/platform/sys/task/" + command.type + "/" + command.id,
{},
function (data) {
if (data.code == 0) {
self.$message({
message: data.msg,
type: "success"
})
if ("disable" == command.type) {
command.row.disabled = true
}
if ("enable" == command.type) {
command.row.disabled = false
}
} else {
self.$message({
message: data.msg,
type: "error"
})
}
},
"json"
)
}
if ("edit" == command.type) {
$.post(
base + "/platform/sys/task/edit/" + command.id,
{},
function (data) {
if (data.code == 0) {
self.formData = data.data //加载后台表单数据
self.editDialogVisible = true //打开编辑窗口
} else {
self.$message({
message: data.msg,
type: "error"
})
}
},
"json"
)
}
if ("delete" == command.type) {
self.$confirm("此操作将删除 " + command.name, "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
callback: function (a, b) {
if ("confirm" == a) {
//确认后再执行
$.post(
base + "/platform/sys/task/delete/" + command.id,
{},
function (data) {
if (data.code == 0) {
self.$message({
message: data.msg,
type: "success"
})
self.doSearch()
} else {
self.$message({
message: data.msg,
type: "error"
})
}
},
"json"
)
}
}
})
}
}
},
created: function () {
this.pageData()
}
})
</script>
<!--#
}
#-->