mirror of
https://gitee.com/zoujingli/ThinkAdmin.git
synced 2025-04-06 03:58:04 +08:00
修改任务管理
This commit is contained in:
parent
abac876111
commit
9c072d44c8
@ -2,7 +2,7 @@
|
||||
|
||||
{block name="button"}
|
||||
<!--{if auth("add")}-->
|
||||
<button data-modal='{:url("add")}' data-title="添加权限" class='layui-btn layui-btn-sm layui-btn-primary'>添加权限</button>
|
||||
<button data-modal='{:url("add")}' data-table-id="RoleData" class='layui-btn layui-btn-sm layui-btn-primary'>添加权限</button>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if auth("remove")}-->
|
||||
@ -26,17 +26,17 @@
|
||||
sort: {field: 'sort desc,id', type: 'desc'},
|
||||
cols: [[
|
||||
{checkbox: true, fixed: true},
|
||||
{field: 'sort', title: '排序权重', align: 'center', width: 100, sort: true, templet: '#SortInputTpl'},
|
||||
{field: 'sort', title: '排序权重', align: 'center', width: 100, sort: true, templet: '#SortInputRoleDataTpl'},
|
||||
{field: 'title', title: '权限名称', align: 'center', minWidth: 140},
|
||||
{field: 'desc', title: '权限描述', align: 'center', minWidth: 110, templet: '<div>{{d.desc||"-"}}</div>'},
|
||||
{field: 'status', title: '权限状态', align: 'center', minWidth: 110, templet: '#StatusSwitchTpl'},
|
||||
{field: 'status', title: '权限状态', align: 'center', minWidth: 110, templet: '#StatusSwitchRoleDataTpl'},
|
||||
{field: 'create_at', title: '创建时间', align: 'center', minWidth: 170, sort: true},
|
||||
{toolbar: '#toolbar', title: '操作面板', align: 'center', minWidth: 210, fixed: 'right'},
|
||||
{toolbar: '#ToolbarRoleDataTpl', title: '操作面板', align: 'center', minWidth: 210, fixed: 'right'},
|
||||
]]
|
||||
});
|
||||
|
||||
// 数据状态切换操作
|
||||
layui.form.on('switch(StatusSwitch)', function (obj) {
|
||||
layui.form.on('switch(StatusSwitchRoleData)', function (obj) {
|
||||
$.form.load("{:url('state')}", {id: obj.value, status: obj.elem.checked > 0 ? 1 : 0}, 'post', function (ret) {
|
||||
if (ret.code < 1) $.msg.error(ret.info, 3, function () {
|
||||
$('#RoleData').trigger('reload'); // 操作异常时重载数据
|
||||
@ -49,21 +49,21 @@
|
||||
</script>
|
||||
|
||||
<!-- 列表排序权重模板 -->
|
||||
<script type="text/html" id="SortInputTpl">
|
||||
<input min="0" type="number" data-blur-number="0" data-action-blur="{:sysuri()}" data-value="id#{{d.id}};action#sort;sort#{value}" data-loading="false" value="{{d.sort}}" class="layui-input text-center">
|
||||
<script type="text/html" id="SortInputRoleDataTpl">
|
||||
<input type="number" min="0" data-blur-number="0" data-action-blur="{:sysuri()}" data-value="id#{{d.id}};action#sort;sort#{value}" data-loading="false" value="{{d.sort}}" class="layui-input text-center">
|
||||
</script>
|
||||
|
||||
<!-- 数据状态切换模板 -->
|
||||
<script type="text/html" id="StatusSwitchTpl">
|
||||
<script type="text/html" id="StatusSwitchRoleDataTpl">
|
||||
<!--{if auth("state")}-->
|
||||
<input type="checkbox" value="{{d.id}}" lay-skin="switch" lay-text="已激活|已禁用" lay-filter="StatusSwitch" {{d.status>0?'checked':''}}>
|
||||
<input type="checkbox" value="{{d.id}}" lay-skin="switch" lay-text="已激活|已禁用" lay-filter="StatusSwitchRoleData" {{d.status>0?'checked':''}}>
|
||||
<!--{else}-->
|
||||
{{d.status ? '<b class="color-green">已启用</b>' : '<b class="color-red">已禁用</b>'}}
|
||||
<!--{/if}-->
|
||||
</script>
|
||||
|
||||
<!-- 数据操作工具条模板 -->
|
||||
<script type="text/html" id="toolbar">
|
||||
<script type="text/html" id="ToolbarRoleDataTpl">
|
||||
<!--{if auth('edit')}-->
|
||||
<a class="layui-btn layui-btn-primary layui-btn-sm" data-title="编辑权限" data-modal='{:url("edit")}?id={{d.id}}'>编 辑</a>
|
||||
<!--{/if}-->
|
||||
|
@ -42,6 +42,4 @@
|
||||
<button class="layui-btn layui-btn-primary"><i class="layui-icon"></i> 搜 索</button>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
<script>layui.form.render()</script>
|
||||
</fieldset>
|
||||
</fieldset>
|
@ -15,7 +15,6 @@
|
||||
{/if}{/foreach}
|
||||
</select>
|
||||
<script>
|
||||
layui.form.render();
|
||||
(function (callable) {
|
||||
layui.form.on('select(DataType)', callable);
|
||||
callable({value: "{$vo.type|default=''}" || $('[lay-filter=DataType]').val()});
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
{block name="button"}
|
||||
<!--{if auth("add")}-->
|
||||
<button data-modal='{:url("add")}?type={$type|default=""}' data-title="添加数据" class='layui-btn layui-btn-sm layui-btn-primary'>添加数据</button>
|
||||
<button data-modal='{:url("add")}?type={$type|default=""}' data-table-id="BaseData" data-title="添加数据" class='layui-btn layui-btn-sm layui-btn-primary'>添加数据</button>
|
||||
<!--{/if}-->
|
||||
|
||||
<!--{if auth("remove")}-->
|
||||
|
@ -5,7 +5,7 @@
|
||||
<button data-action='{:url("remove")}' data-rule="id#{id}" data-table-id="OplogData" data-confirm="确定要删除选中的日志吗?" class='layui-btn layui-btn-sm layui-btn-primary'>批量删除</button>
|
||||
<!--{/if}-->
|
||||
<!--{if auth("clear")}-->
|
||||
<button data-load='{:url("clear")}' data-confirm="确定要清空所有日志吗?" class='layui-btn layui-btn-sm layui-btn-primary'>清空日志</button>
|
||||
<button data-load='{:url("clear")}' data-table-id="OplogData" data-confirm="确定要清空所有日志吗?" class='layui-btn layui-btn-sm layui-btn-primary'>清空日志</button>
|
||||
<!--{/if}-->
|
||||
{/block}
|
||||
|
||||
|
@ -1,6 +1,7 @@
|
||||
<fieldset>
|
||||
<legend>条件搜索</legend>
|
||||
<form class="layui-form layui-form-pane form-search" action="{:sysuri()}" onsubmit="return false" method="get" autocomplete="off">
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">操作账号</label>
|
||||
<div class="layui-input-inline">
|
||||
@ -14,12 +15,14 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">操作节点</label>
|
||||
<label class="layui-input-inline">
|
||||
<input name="node" value="{$get.node|default=''}" placeholder="请输入操作内容" class="layui-input">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">操作行为</label>
|
||||
<div class="layui-input-inline">
|
||||
@ -33,24 +36,28 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">操作描述</label>
|
||||
<label class="layui-input-inline">
|
||||
<input name="content" value="{$get.content|default=''}" placeholder="请输入操作内容" class="layui-input">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">访问地址</label>
|
||||
<label class="layui-input-inline">
|
||||
<input name="geoip" value="{$get.geoip|default=''}" placeholder="请输入访问地址" class="layui-input">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<label class="layui-form-label">操作时间</label>
|
||||
<label class="layui-input-inline">
|
||||
<input data-date-range name="create_at" value="{$get.create_at|default=''}" placeholder="请选择操作时间" class="layui-input">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<button type="submit" class="layui-btn layui-btn-primary"><i class="layui-icon"></i> 搜 索</button>
|
||||
<button type="button" data-form-export="{:url('index')}?type={$type|default=''}" class="layui-btn layui-btn-primary">
|
||||
@ -61,7 +68,6 @@
|
||||
</fieldset>
|
||||
|
||||
<script>
|
||||
window.form.render();
|
||||
require(['excel'], function (excel) {
|
||||
excel.bind(function (data) {
|
||||
data.forEach(function (item, index) {
|
||||
|
@ -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 {
|
||||
return d.exec_time + ' <span class="color-desc">( 单次任务 )</span> ';
|
||||
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 {
|
||||
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: '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: '执行时间', minWidth: 175, templet: function (d) {
|
||||
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}
|
||||
|
@ -57,14 +57,14 @@
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<div class="layui-form-item layui-inline layui-hide">
|
||||
<label class="layui-form-label">执行时间</label>
|
||||
<label class="layui-input-inline">
|
||||
<input data-date-range name="enter_time" value="{$get.enter_time|default=''}" placeholder="请选择执行时间" class="layui-input">
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="layui-form-item layui-inline">
|
||||
<div class="layui-form-item layui-inline layui-hide">
|
||||
<label class="layui-form-label">创建时间</label>
|
||||
<label class="layui-input-inline">
|
||||
<input data-date-range name="create_at" value="{$get.create_at|default=''}" placeholder="请选择创建时间" class="layui-input">
|
||||
|
@ -203,7 +203,7 @@
|
||||
|
||||
.layui-form-select {
|
||||
dl {
|
||||
top: 32px;
|
||||
top: 31px;
|
||||
padding: 0;
|
||||
border-width: 0;
|
||||
box-shadow: @ShadowMaxOuter;
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user