index.html 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. {extend name='table'}
  2. {block name="button"}
  3. <!--{if isset($super) and $super}-->
  4. <a data-table-id="QueueTable" class="layui-btn layui-btn-sm layui-btn-primary" data-queue="{:url('admin/api.plugs/optimize')}">优化数据库</a>
  5. <!--{/if}-->
  6. <!--{if isset($super) and $super and $iswin}-->
  7. <button data-load='{:url("admin/api.queue/start")}' class='layui-btn layui-btn-sm layui-btn-primary'>开启服务</button>
  8. <button data-load='{:url("admin/api.queue/stop")}' class='layui-btn layui-btn-sm layui-btn-primary'>关闭服务</button>
  9. <!--{/if}-->
  10. <!--{if auth("clean")}-->
  11. <button data-table-id="QueueTable" data-queue='{:url("clean")}' class='layui-btn layui-btn-sm layui-btn-primary'>定时清理</button>
  12. <!--{/if}-->
  13. <!--{if auth("remove")}-->
  14. <button data-table-id="QueueTable" data-action='{:url("remove")}' data-rule="id#{id}" data-confirm="确定批量删除记录吗?" class='layui-btn layui-btn-sm layui-btn-primary'>批量删除</button>
  15. <!--{/if}-->
  16. {/block}
  17. {block name="content"}
  18. <div class="think-box-notify">
  19. <!--{if isset($super) and $super}-->
  20. <b>服务状态:</b><b class="margin-right-5" data-queue-message><span class="color-desc">检查中</span></b>
  21. <b data-tips-text="点击可复制【服务启动指令】" class="layui-icon pointer margin-right-20" data-copy="{$command|default=''}">&#xe60e;</b>
  22. <script>$('[data-queue-message]').load('{:sysuri("admin/api.queue/status")}');</script>
  23. <!--{/if}-->
  24. <b>任务统计:</b>待处理 <b class="color-text" data-extra="pre">{$total.pre|default=0}</b> 个任务,处理中 <b class="color-blue" data-extra="dos">{$total.dos|default=0}</b> 个任务,已完成 <b class="color-green" data-extra="oks">{$total.oks|default=0}</b> 个任务,已失败 <b class="color-red" data-extra="ers">{$total.ers|default=0}</b> 个任务。
  25. </div>
  26. <div class="think-box-shadow">
  27. {include file='queue/index_search'}
  28. <table id="QueueTable" data-url="{:sysuri()}" data-target-search="form.form-search"></table>
  29. </div>
  30. {/block}
  31. {block name='script'}
  32. <style>
  33. #QueueTable + div tbody .layui-table-cell {
  34. height: 44px;
  35. line-height: 22px;
  36. }
  37. #QueueTable + div tbody .layui-table-cell .layui-btn {
  38. margin-top: 8px;
  39. }
  40. #QueueTable + div tbody .layui-table-cell.laytable-cell-checkbox {
  41. line-height: 44px;
  42. }
  43. </style>
  44. <script>
  45. $(function () {
  46. $('#QueueTable').layTable({
  47. even: true, height: 'full',
  48. sort: {field: 'loops_time desc,id', type: 'desc'},
  49. // 扩展数据处理,需要返回原 items 数据
  50. filter: function (items, result) {
  51. return result && result.extra && $('[data-extra]').map(function () {
  52. this.innerHTML = result.extra[this.dataset.extra] || 0;
  53. }), items;
  54. },
  55. cols: [[
  56. {checkbox: true, fixed: 'left'},
  57. {
  58. field: 'id', title: '任务名称', width: '25%', sort: true, templet: function (d) {
  59. if (d.loops_time > 0) {
  60. d.one = '<span class="layui-badge think-bg-blue">循</span>';
  61. } else {
  62. d.one = '<span class="layui-badge think-bg-red">次</span>';
  63. }
  64. if (d.rscript === 1) {
  65. d.two = '<span class="layui-badge layui-bg-green">复</span>';
  66. } else {
  67. d.two = '<span class="layui-badge think-bg-violet">单</span>';
  68. }
  69. return laytpl('{{-d.one}}任务编号:<b>{{d.code}}</b><br>{{-d.two}}任务名称:{{d.title}}').render(d);
  70. }
  71. },
  72. {
  73. field: 'exec_time', title: '任务计划', width: '25%', templet: function (d) {
  74. d.html = '执行指令:' + d.command + '<br>计划执行:' + d.exec_time;
  75. if (d.loops_time > 0) {
  76. return d.html + ' ( 每 <b class="color-blue">' + d.loops_time + '</b> 秒 ) ';
  77. } else {
  78. return d.html + ' <span class="color-desc">( 单次任务 )</span> ';
  79. }
  80. }
  81. },
  82. {
  83. field: 'loops_time', title: '执行状态', width: '30%', templet: function (d) {
  84. d.html = ([
  85. '<span class="pull-left layui-badge layui-badge-middle layui-bg-gray">未知</span>',
  86. '<span class="pull-left layui-badge layui-badge-middle layui-bg-black">等待</span>',
  87. '<span class="pull-left layui-badge layui-badge-middle layui-bg-blue">执行</span>',
  88. '<span class="pull-left layui-badge layui-badge-middle layui-bg-green">完成</span>',
  89. '<span class="pull-left layui-badge layui-badge-middle layui-bg-red">失败</span>',
  90. ][d.status] || '') + '执行时间:';
  91. d.enter_time = d.enter_time || '', d.outer_time = d.outer_time || '0.0000';
  92. if (d.enter_time.length > 12) {
  93. d.html += d.enter_time.substring(12) + '<span class="color-desc"> ( 耗时 ' + d.outer_time + ' ) </span>';
  94. d.html += ' 已执行 <b class="color-blue">' + (d.attempts || 0) + '</b> 次';
  95. } else {
  96. d.html += '<span class="color-desc">任务未执行</span>'
  97. }
  98. return d.html + '<br>执行结果:<span class="color-blue">' + (d.exec_desc || '<span class="color-desc">未获取到执行结果</span>') + '</span>';
  99. }
  100. },
  101. {toolbar: '#toolbar', title: '操作面板', align: 'center', minWidth: 200, fixed: 'right'}
  102. ]]
  103. });
  104. });
  105. </script>
  106. <script type="text/html" id="toolbar">
  107. <!--{if auth('redo')}-->
  108. {{# if(d.status===4||d.status===3){ }}
  109. <a class="layui-btn layui-btn-sm" data-confirm="确定要重置该任务吗?" data-queue="{:url('redo')}?code={{d.code}}">重 置</a>
  110. {{# }else{ }}
  111. <a class="layui-btn layui-btn-sm layui-btn-disabled">重 置</a>
  112. {{# } }}
  113. <!--{/if}-->
  114. <!--{if auth('remove')}-->
  115. <a class='layui-btn layui-btn-sm layui-btn-danger' data-confirm="确定要删除该任务吗?" data-action='{:url("remove")}' data-value="id#{{d.id}}">删 除</a>
  116. <!--{/if}-->
  117. <a class='layui-btn layui-btn-sm layui-btn-normal' onclick="$.loadQueue('{{d.code}}',false,this)">日 志</a>
  118. </script>
  119. {/block}