job.html 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <!DOCTYPE html>
  2. <html lang="zh" xmlns:th="http://www.thymeleaf.org"
  3. xmlns:shiro="http://www.pollix.at/thymeleaf/shiro">
  4. <meta charset="utf-8">
  5. <head th:include="include :: header"></head>
  6. <body class="gray-bg">
  7. <div class="container-div">
  8. <div class="row">
  9. <div class="col-sm-12 search-collapse">
  10. <form id="job-form">
  11. <div class="select-list">
  12. <ul>
  13. <li>
  14. 任务名称:<input type="text" name="jobName"/>
  15. </li>
  16. <li>
  17. 方法名称:<input type="text" name="methodName"/>
  18. </li>
  19. <li>
  20. 任务状态:<select name="status" th:with="type=${@dict.getType('sys_job_status')}">
  21. <option value="">所有</option>
  22. <option th:each="dict : ${type}" th:text="${dict.dictLabel}" th:value="${dict.dictValue}"></option>
  23. </select>
  24. </li>
  25. <li>
  26. <a class="btn btn-primary btn-rounded btn-sm" onclick="$.table.search()"><i class="fa fa-search"></i>&nbsp;搜索</a>
  27. <a class="btn btn-success btn-rounded btn-sm" onclick="$.table.exportExcel()" shiro:hasPermission="monitor:job:export"><i class="fa fa-download"></i>&nbsp;导出</a>
  28. </li>
  29. </ul>
  30. </div>
  31. </form>
  32. </div>
  33. <div class="btn-group hidden-xs" id="toolbar" role="group">
  34. <a class="btn btn-outline btn-success btn-rounded" onclick="$.operate.add()" shiro:hasPermission="monitor:job:add">
  35. <i class="fa fa-plus"></i> 新增
  36. </a>
  37. <a class="btn btn-outline btn-danger btn-rounded" onclick="$.operate.removeAll()" shiro:hasPermission="monitor:job:remove">
  38. <i class="fa fa-trash-o"></i> 删除
  39. </a>
  40. <a class="btn btn-outline btn-info btn-rounded" onclick="javascript:jobLog()" shiro:hasPermission="monitor:job:list">
  41. <i class="fa fa-list"></i> 日志
  42. </a>
  43. </div>
  44. <div class="col-sm-12 select-table table-striped">
  45. <table id="bootstrap-table" data-mobile-responsive="true"></table>
  46. </div>
  47. </div>
  48. </div>
  49. <div th:include="include :: footer"></div>
  50. <script th:inline="javascript">
  51. var editFlag = [[${@permission.hasPermi('monitor:job:edit')}]];
  52. var removeFlag = [[${@permission.hasPermi('monitor:job:remove')}]];
  53. var statusFlag = [[${@permission.hasPermi('monitor:job:changeStatus')}]];
  54. var datas = [[${@dict.getType('sys_job_status')}]];
  55. var prefix = ctx + "monitor/job"
  56. $(function() {
  57. var options = {
  58. url: prefix + "/list",
  59. createUrl: prefix + "/add",
  60. updateUrl: prefix + "/edit/{id}",
  61. removeUrl: prefix + "/remove",
  62. exportUrl: prefix + "/export",
  63. sortName: "createTime",
  64. sortOrder: "desc",
  65. modalName: "任务",
  66. search: false,
  67. showExport: false,
  68. columns: [{
  69. checkbox: true
  70. },
  71. {
  72. field: 'jobId',
  73. title: '任务编号'
  74. },
  75. {
  76. field: 'jobName',
  77. title: '任务名称',
  78. sortable: true
  79. },
  80. {
  81. field: 'jobGroup',
  82. title: '任务组名',
  83. sortable: true
  84. },
  85. {
  86. field: 'methodName',
  87. title: '方法名称'
  88. },
  89. {
  90. field: 'methodParams',
  91. title: '方法参数'
  92. },
  93. {
  94. field: 'cronExpression',
  95. title: '执行表达式'
  96. },
  97. {
  98. field: 'status',
  99. title: '任务状态',
  100. align: 'center',
  101. formatter: function(value, row, index) {
  102. return $.table.selectDictLabel(datas, value);
  103. }
  104. },
  105. {
  106. field: 'createTime',
  107. title: '创建时间',
  108. sortable: true
  109. },
  110. {
  111. title: '操作',
  112. align: 'center',
  113. formatter: function(value, row, index) {
  114. var actions = [];
  115. actions.push(statusTools(row));
  116. actions.push('<a class="btn btn-primary btn-xs ' + statusFlag + '" href="#" onclick="run(\'' + row.jobId + '\')"><i class="fa fa-play-circle-o"></i> 执行</a> ');
  117. actions.push('<a class="btn btn-success btn-xs ' + editFlag + '" href="#" onclick="$.operate.edit(\'' + row.jobId + '\')"><i class="fa fa-edit"></i>编辑</a> ');
  118. actions.push('<a class="btn btn-danger btn-xs ' + removeFlag + '" href="#" onclick="$.operate.remove(\'' + row.jobId + '\')"><i class="fa fa-remove"></i>删除</a>');
  119. return actions.join('');
  120. }
  121. }]
  122. };
  123. $.table.init(options);
  124. });
  125. function statusTools(row) {
  126. if (row.status == 1) {
  127. return '<a class="btn btn-info btn-xs ' + statusFlag + '" href="#" onclick="start(\'' + row.jobId + '\')"><i class="fa fa-play"></i>启用</a> ';
  128. } else {
  129. return '<a class="btn btn-warning btn-xs ' + statusFlag + '" href="#" onclick="stop(\'' + row.jobId + '\')"><i class="fa fa-pause"></i>暂停</a> ';
  130. }
  131. }
  132. /*立即执行一次*/
  133. function run(jobId) {
  134. $.modal.confirm("确认要立即执行任务吗?", function() {
  135. $.operate.post(prefix + "/run", { "jobId": jobId});
  136. })
  137. }
  138. /*调度任务-停用*/
  139. function stop(jobId) {
  140. $.modal.confirm("确认要停用任务吗?", function() {
  141. $.operate.post(prefix + "/changeStatus", { "jobId": jobId, "status": 1 });
  142. })
  143. }
  144. /*调度任务-启用*/
  145. function start(jobId) {
  146. $.modal.confirm("确认要启用任务吗?", function() {
  147. $.operate.post(prefix + "/changeStatus", { "jobId": jobId, "status": 0 });
  148. })
  149. }
  150. //调度日志查询
  151. function jobLog(id) {
  152. var url = ctx + 'monitor/jobLog';
  153. createMenuItem(url, "调度日志");
  154. }
  155. </script>
  156. </body>
  157. </html>