|
@@ -3,10 +3,10 @@
|
|
|
{block name="button"}
|
|
|
<!--{if isset($super) and $super}-->
|
|
|
<a class="layui-btn layui-btn-sm layui-btn-primary" data-queue="{:url('admin/api.plugs/optimize')}">优化数据库</a>
|
|
|
-<!--{if $iswin}-->
|
|
|
+{if $iswin}
|
|
|
<button data-load='{:url("admin/api.queue/start")}' class='layui-btn layui-btn-sm layui-btn-primary'>开启后台服务</button>
|
|
|
<button data-load='{:url("admin/api.queue/stop")}' class='layui-btn layui-btn-sm layui-btn-primary'>关闭后台服务</button>
|
|
|
-<!--{/if}-->
|
|
|
+{/if}
|
|
|
<!--{/if}-->
|
|
|
|
|
|
<!--{if auth("clean")}-->
|
|
@@ -19,132 +19,102 @@
|
|
|
{/block}
|
|
|
|
|
|
{block name="content"}
|
|
|
+<div class="think-box-notify">
|
|
|
+ <b>任务统计:</b>待处理 {$total.pre|default=0} 个任务,处理中 {$total.dos|default=0} 个任务,待处理 {$total.oks|default=0} 个任务,已失败 {$total.ers|default=0} 个任务。
|
|
|
+</div>
|
|
|
<div class="think-box-shadow">
|
|
|
- <div class="layui-row layui-col-space20 portal-block-container notselect">
|
|
|
- <div class="layui-col-sm6 layui-col-md6 layui-col-lg3">
|
|
|
- <div class="portal-block-item nowrap" style="background:linear-gradient(-125deg,#57bdbf,#2f9de2)">
|
|
|
- <div class="font-w7 font-s16">等待处理</div>
|
|
|
- <div>{$total.pre|default=0}</div>
|
|
|
- <div>待处理的任务数量</div>
|
|
|
- </div>
|
|
|
- <i class="portal-block-icon layui-icon layui-icon-star"></i>
|
|
|
- </div>
|
|
|
- <div class="layui-col-sm6 layui-col-md6 layui-col-lg3">
|
|
|
- <div class="portal-block-item nowrap" style="background:linear-gradient(-125deg,#ff7d7d,#fb2c95)">
|
|
|
- <div class="font-w7 font-s16">正在处理</div>
|
|
|
- <div>{$total.dos|default=0}</div>
|
|
|
- <div>处理中的任务数量</div>
|
|
|
- </div>
|
|
|
- <i class="portal-block-icon layui-icon layui-icon-log"></i>
|
|
|
- </div>
|
|
|
- <div class="layui-col-sm6 layui-col-md6 layui-col-lg3">
|
|
|
- <div class="portal-block-item nowrap" style="background:linear-gradient(-113deg,#c543d8,#925cc3)">
|
|
|
- <div class="font-w7 font-s16">处理完成</div>
|
|
|
- <div>{$total.oks|default=0}</div>
|
|
|
- <div>处理完成的任务数量</div>
|
|
|
- </div>
|
|
|
- <i class="portal-block-icon layui-icon layui-icon-release"></i>
|
|
|
- </div>
|
|
|
- <div class="layui-col-sm6 layui-col-md6 layui-col-lg3">
|
|
|
- <div class="portal-block-item nowrap" style="background:linear-gradient(-141deg,#ecca1b,#f39526)">
|
|
|
- <div class="font-w7 font-s16">处理失败</div>
|
|
|
- <div>{$total.ers|default=0}</div>
|
|
|
- <div>处理失败的任务数量</div>
|
|
|
- </div>
|
|
|
- <i class="portal-block-icon layui-icon layui-icon-engine"></i>
|
|
|
- </div>
|
|
|
- </div>
|
|
|
-
|
|
|
{include file='queue/index_search'}
|
|
|
<table id="QueueData" data-url="{:sysuri()}" data-target-search="form.form-search"></table>
|
|
|
</div>
|
|
|
{/block}
|
|
|
|
|
|
{block name='script'}
|
|
|
+<style>
|
|
|
+ #QueueData + div tbody .layui-table-cell {
|
|
|
+ height: 42px;
|
|
|
+ line-height: 22px;
|
|
|
+ }
|
|
|
+
|
|
|
+ #QueueData + div tbody .layui-table-cell .layui-btn {
|
|
|
+ margin-top: 8px;
|
|
|
+ }
|
|
|
+
|
|
|
+ #QueueData + div tbody .layui-table-cell.laytable-cell-checkbox {
|
|
|
+ line-height: 42px;
|
|
|
+ }
|
|
|
+</style>
|
|
|
<script>
|
|
|
$(function () {
|
|
|
$('#QueueData').layTable({
|
|
|
- even: true,
|
|
|
- sort: {field: 'loops_time desc,code', type: 'desc'},
|
|
|
+ height: 'full',
|
|
|
+ even: true, sort: {field: 'loops_time desc,id', type: 'desc'},
|
|
|
cols: [[
|
|
|
{checkbox: true, fixed: 'left'},
|
|
|
- {field: 'code', title: '任务编号', width: 140, sort: true},
|
|
|
- {field: 'title', title: '任务名称', minWidth: 100},
|
|
|
- {field: 'command', title: '任务指令', minWidth: 100},
|
|
|
{
|
|
|
- field: 'exec_time', title: '计划时间', minWidth: 245, templet: function (d) {
|
|
|
- d.exec_time = d.exec_time || 0, d.loops_time = d.loops_time || 0;
|
|
|
+ field: 'id', title: '任务名称', minWidth: 230, sort: true, templet: function (d) {
|
|
|
if (d.loops_time > 0) {
|
|
|
- return d.exec_time + ' ( 每 <b class="color-blue">' + d.loops_time + '</b> 秒 ) ';
|
|
|
+ d.one = '<span class="layui-badge think-bg-blue">循</span>';
|
|
|
+ } else {
|
|
|
+ d.one = '<span class="layui-badge think-bg-red">次</span>';
|
|
|
+ }
|
|
|
+ if (d.rscript === 1) {
|
|
|
+ d.two = '<span class="layui-badge layui-bg-green">复</span>';
|
|
|
} else {
|
|
|
- return d.exec_time + ' <span class="color-desc">( 单次任务 )</span> ';
|
|
|
+ d.two = '<span class="layui-badge think-bg-violet">单</span>';
|
|
|
}
|
|
|
+ return laytpl('{{d.one}}任务编号:<b>{{d.code}}</b><br>{{d.two}}任务名称:{{d.title}}').render(d);
|
|
|
}
|
|
|
},
|
|
|
{
|
|
|
- field: 'loops_time', title: '执行时间', minWidth: 175, templet: function (d) {
|
|
|
+ field: 'exec_time', title: '任务计划', minWidth: 300, templet: function (d) {
|
|
|
+ d.html = '执行指令:' + d.command + '<br>计划执行:' + d.exec_time;
|
|
|
+ if (d.loops_time > 0) {
|
|
|
+ return d.html + ' ( 每 <b class="color-blue">' + d.loops_time + '</b> 秒 ) ';
|
|
|
+ } else {
|
|
|
+ return d.html + ' <span class="color-desc">( 单次任务 )</span> ';
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ {
|
|
|
+ field: 'loops_time', title: '执行状态', width: 400, templet: function (d) {
|
|
|
+ d.html = [
|
|
|
+ '<span class="layui-badge layui-badge-middle layui-bg-gray pull-left" style="width:2em">未知</span>',
|
|
|
+ '<span class="layui-badge layui-badge-middle layui-bg-black pull-left" style="width:2em">等待</span>',
|
|
|
+ '<span class="layui-badge layui-badge-middle layui-bg-blue pull-left" style="width:2em">执行</span>',
|
|
|
+ '<span class="layui-badge layui-badge-middle layui-bg-green pull-left" style="width:2em">完成</span>',
|
|
|
+ '<span class="layui-badge layui-badge-middle layui-bg-red pull-left" style="width:2em">失败</span>',
|
|
|
+ ][d.status] || '';
|
|
|
+ d.html += '执行时间:';
|
|
|
d.enter_time = d.enter_time || '', d.outer_time = d.outer_time || '0.0000';
|
|
|
if (d.enter_time.length > 12) {
|
|
|
- return d.enter_time.substr(12) + '<span class="color-desc"> ( 耗时 ' + d.outer_time + ' )</span>';
|
|
|
+ d.html += d.enter_time.substring(12) + '<span class="color-desc"> ( 耗时 ' + d.outer_time + ' )</span>';
|
|
|
+ d.html += ',已执行 <b>' + (d.attempts || 0) + '</b> 次';
|
|
|
} else {
|
|
|
- return '<span class="color-desc">任务未执行</span>'
|
|
|
+ d.html += '<span class="color-desc">任务未执行</span>'
|
|
|
}
|
|
|
+ return d.html + '<br>执行结果:<span class="color-blue">' + (d.exec_desc || '-') + '</span>';
|
|
|
}
|
|
|
},
|
|
|
- {field: 'attempts', title: '执行次数', minWidth: 95, align: 'center', sort: true, templet: "<div>{{d.attempts||0}}</div>"},
|
|
|
- {field: 'exec_desc', title: '执行结果', minWidth: 180},
|
|
|
- {field: 'create_at', title: '创建时间', align: 'center', minWidth: 170},
|
|
|
- {toolbar: '#toolbar', title: '操作面板', align: 'center', width: 260, fixed: 'right',}
|
|
|
+ {toolbar: '#toolbar', title: '操作面板', align: 'center', minWidth: 200}
|
|
|
]]
|
|
|
});
|
|
|
});
|
|
|
</script>
|
|
|
|
|
|
<script type="text/html" id="toolbar">
|
|
|
- {{# if(d.loops_time>0){ }}
|
|
|
- <span class="layui-badge think-bg-blue">循</span>
|
|
|
- {{# }else{ }}
|
|
|
- <span class="layui-badge think-bg-red">次</span>
|
|
|
- {{# } }}
|
|
|
|
|
|
- {{# if(d.rscript===1){ }}
|
|
|
- <span class="layui-badge layui-bg-green">复</span>
|
|
|
+ <!--{if auth('redo')}-->
|
|
|
+ {{# if(d.status===4||d.status===3){ }}
|
|
|
+ <a class="layui-btn layui-btn-sm" data-confirm="确定要重置该任务吗?" data-queue="{:url('redo')}?code={{d.code}}">重 置</a>
|
|
|
{{# }else{ }}
|
|
|
- <span class="layui-badge think-bg-violet">单</span>
|
|
|
+ <a class="layui-btn layui-btn-sm layui-btn-disabled">重 置</a>
|
|
|
{{# } }}
|
|
|
-
|
|
|
- {{# if(d.status===1){ }}
|
|
|
- <span class="layui-badge layui-bg-black">等待处理</span>
|
|
|
- <span class="layui-badge think-bg-gray"><i class="layui-icon font-s12"></i></span>
|
|
|
- {{# }else if(d.status===2){ }}
|
|
|
- <span class="layui-badge layui-bg-green">正在处理</span>
|
|
|
- <!--{if auth('redo')}-->
|
|
|
- <span class="layui-badge think-bg-gray"><i class="layui-icon font-s12"></i></span>
|
|
|
<!--{/if}-->
|
|
|
- {{# }else if(d.status===3){ }}
|
|
|
- <span class="layui-badge layui-bg-blue">处理完成</span>
|
|
|
- <!--{if auth('redo')}-->
|
|
|
- <a class="layui-badge layui-bg-green" data-confirm="确定要重置该任务吗?" data-queue="{:url('redo')}?code={{d.code}}">
|
|
|
- <i class="layui-icon font-s12"></i>
|
|
|
- </a>
|
|
|
- <!--{/if}-->
|
|
|
- {{# }else if(d.status===4){ }}
|
|
|
- <span class="layui-badge layui-bg-red">处理失败</span>
|
|
|
- <!--{if auth('redo')}-->
|
|
|
- <a class="layui-badge layui-bg-green" data-confirm="确定要重置该任务吗?" data-queue="{:url('redo')}?code={{d.code}}">
|
|
|
- <i class="layui-icon font-s12"></i>
|
|
|
- </a>
|
|
|
- <!--{/if}-->
|
|
|
- {{# } }}
|
|
|
|
|
|
<!--{if auth('remove')}-->
|
|
|
- <a class='layui-badge layui-bg-red' data-confirm="确定要删除该任务吗?" data-action='{:url("remove")}' data-value="id#{{d.id}}">
|
|
|
- <i class="layui-icon font-s12"></i>
|
|
|
- </a>
|
|
|
+ <a class='layui-btn layui-btn-sm layui-btn-danger' data-confirm="确定要删除该任务吗?" data-action='{:url("remove")}' data-value="id#{{d.id}}">删 除</a>
|
|
|
<!--{/if}-->
|
|
|
|
|
|
- <a class='layui-badge layui-bg-orange margin-0' onclick="$.loadQueue('{{d.code}}',false,this)">
|
|
|
- <i class="layui-icon font-s12"></i>
|
|
|
- </a>
|
|
|
+ <a class='layui-btn layui-btn-sm layui-btn-normal' onclick="$.loadQueue('{{d.code}}',false,this)">日 志</a>
|
|
|
</script>
|
|
|
{/block}
|