job_list.html 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>定时任务</title>
  7. <link rel="stylesheet" href="../../lib/layui/css/layui.css">
  8. <style>
  9. body { padding: 15px; }
  10. .search-form { margin-bottom: 15px; padding: 15px; background: #fff; border-radius: 4px; }
  11. </style>
  12. </head>
  13. <body>
  14. <div class="search-form">
  15. <form class="layui-form layui-form-pane" lay-filter="searchForm">
  16. <div class="layui-form-item">
  17. <div class="layui-inline">
  18. <label class="layui-form-label">任务名称</label>
  19. <div class="layui-input-inline">
  20. <input type="text" name="jobName" placeholder="请输入任务名称" class="layui-input">
  21. </div>
  22. </div>
  23. <div class="layui-inline">
  24. <label class="layui-form-label">任务状态</label>
  25. <div class="layui-input-inline">
  26. <select name="jobStatus" class="layui-select">
  27. <option value="">全部</option>
  28. <option value="0">停止</option>
  29. <option value="1">运行中</option>
  30. </select>
  31. </div>
  32. </div>
  33. <div class="layui-inline">
  34. <button type="button" class="layui-btn" id="btnSearch"><i class="layui-icon layui-icon-search"></i> 搜索</button>
  35. <button type="reset" class="layui-btn layui-btn-primary">重置</button>
  36. </div>
  37. </div>
  38. </form>
  39. </div>
  40. <div class="table-toolbar">
  41. <button class="layui-btn layui-btn-sm" id="btnAdd"><i class="layui-icon layui-icon-add-1"></i> 添加</button>
  42. </div>
  43. <table id="tableList" lay-filter="tableList"></table>
  44. <script type="text/html" id="toolbar">
  45. {{# if(d.jobStatus === '0') { }}
  46. <a class="layui-btn layui-btn-xs layui-btn-normal" lay-event="start"><i class="layui-icon layui-icon-play"></i> 启动</a>
  47. {{# } else { }}
  48. <a class="layui-btn layui-btn-xs layui-btn-warm" lay-event="stop"><i class="layui-icon layui-icon-pause"></i> 暂停</a>
  49. {{# } }}
  50. <a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i> 编辑</a>
  51. <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i> 删除</a>
  52. </script>
  53. <script type="text/html" id="statusTpl">
  54. {{# if(d.jobStatus === '1') { }}
  55. <span class="layui-badge layui-bg-green">运行中</span>
  56. {{# } else { }}
  57. <span class="layui-badge layui-bg-gray">已停止</span>
  58. {{# } }}
  59. </script>
  60. <script src="../../lib/layui/layui.js"></script>
  61. <script src="../../js/config.js"></script>
  62. <script src="../../js/common.js"></script>
  63. <script>
  64. layui.use(['table', 'layer', 'form'], function() {
  65. var table = layui.table;
  66. var layer = layui.layer;
  67. var form = layui.form;
  68. var tableIns = TableRender.init({
  69. elem: '#tableList',
  70. url: Config.api.timersJob.page,
  71. cols: [[
  72. { field: 'jobName', title: '任务名称', width: 180 },
  73. { field: 'jobGroup', title: '任务分组', width: 120 },
  74. { field: 'actionClass', title: '执行类', width: 250 },
  75. { field: 'cron', title: 'CRON表达式', width: 150 },
  76. { field: 'jobStatus', title: '状态', width: 100, templet: '#statusTpl' },
  77. { field: 'createTime', title: '创建时间', width: 170, templet: function(d) { return Common.formatDate(d.createTime); } },
  78. { field: 'remark', title: '备注' },
  79. { fixed: 'right', title: '操作', width: 220, align: 'center', toolbar: '#toolbar' }
  80. ]]
  81. });
  82. $('#btnSearch').click(function() {
  83. table.reload('tableList', {
  84. where: form.val('searchForm'),
  85. page: { curr: 1 }
  86. });
  87. });
  88. $('#btnAdd').click(function() {
  89. Common.open({
  90. title: '添加定时任务',
  91. area: ['600px', '480px'],
  92. content: 'job_form.html?id='
  93. });
  94. });
  95. table.on('tool(tableList)', function(obj) {
  96. var data = obj.data;
  97. var event = obj.event;
  98. if (event === 'start') {
  99. Common.confirm('确定要启动任务 【' + data.jobName + '】 吗?', function() {
  100. Common.post(Config.api.timersJob.start + '/' + data.id, {}, function(res) {
  101. Common.success('启动成功', function() {
  102. table.reload('tableList');
  103. });
  104. });
  105. });
  106. } else if (event === 'stop') {
  107. Common.confirm('确定要暂停任务 【' + data.jobName + '】 吗?', function() {
  108. Common.post(Config.api.timersJob.stop + '/' + data.id, {}, function(res) {
  109. Common.success('暂停成功', function() {
  110. table.reload('tableList');
  111. });
  112. });
  113. });
  114. } else if (event === 'edit') {
  115. Common.open({
  116. title: '编辑定时任务',
  117. area: ['600px', '480px'],
  118. content: 'job_form.html?id=' + data.id
  119. });
  120. } else if (event === 'del') {
  121. Common.confirm('确定要删除任务 【' + data.jobName + '】 吗?', function() {
  122. Common.del(Config.api.timersJob.remove + '/' + data.id, function(res) {
  123. Common.success('删除成功', function() {
  124. obj.del();
  125. });
  126. });
  127. });
  128. }
  129. });
  130. });
  131. </script>
  132. </body>
  133. </html>