2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-07 11:57:17 +08:00
Files
panel/public/panel/views/task.html
2023-08-15 02:02:50 +08:00

231 lines
9.1 KiB
HTML

<!--
Name: 任务中心
Author: 耗子
Date: 2023-07-22
-->
<title>任务中心</title>
<div class="layui-fluid" id="component-tabs">
<div class="layui-row">
<div class="layui-col-md12">
<div class="layui-card">
<div class="layui-card-header">任务列表</div>
<div class="layui-card-body">
<div class="layui-tab">
<ul class="layui-tab-title">
<li class="layui-this">进行中</li>
<li>等待中</li>
<li>已完成</li>
<li>已失败</li>
</ul>
<div class="layui-tab-content">
<div class="layui-tab-item layui-show">
<script type="text/html" template
lay-url="/api/panel/task/list?status=running&page=1&limit=10"
lay-done="layui.data.done(d);">
{{# if(d.data.total != 0){ }}
<blockquote class="layui-elem-quote">{{ d.data.items[0].name }}</blockquote>
<pre id="plugin-install-log" class="layui-code">
日志获取中...
</pre>
{{# } else { }}
<blockquote class="layui-elem-quote">暂无任务</blockquote>
{{# } }}
</script>
</div>
<div class="layui-tab-item">
<table id="panel-task-waiting" lay-filter="panel-task-waiting"></table>
</div>
<div class="layui-tab-item">
<table id="panel-task-finished" lay-filter="panel-task-finished"></table>
<script type="text/html" id="panel-task-finished-control-tpl">
<a class="layui-btn layui-btn-xs" lay-event="remove">移除</a>
</script>
</div>
<div class="layui-tab-item">
<table id="panel-task-failed" lay-filter="panel-task-failed"></table>
<script type="text/html" id="panel-task-failed-control-tpl">
<a class="layui-btn layui-btn-xs" lay-event="remove">移除</a>
</script>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
function render_plugin_install_log(d) {
layui.use(['admin', 'jquery'], function () {
let admin = layui.admin
, $ = layui.jquery;
admin.req({
url: "/api/panel/task/log?id=" + d.data.items[0].id
, type: 'get'
, success: function (result) {
if (result.code !== 0) {
$('#plugin-install-log').html('实时安装日志获取失败,请刷新重试!');
return false;
}
if (result.data.includes('完成') || result.data.includes('错误')) {
setTimeout(function () {
location.reload();
}, 2000);
}
$('#plugin-install-log').html(result.data);
}
})
});
}
layui.data.done = function (d) {
if (d.data.items[0] !== undefined) {
render_plugin_install_log(d);
setInterval(function () {
render_plugin_install_log(d);
}, 2000);
}
};
layui.use(['admin', 'table', 'jquery'], function () {
var table = layui.table
, admin = layui.admin;
table.render({
elem: '#panel-task-waiting'
, url: '/api/panel/task/list?status=waiting'
, cols: [[
{field: 'id', hide: true, title: 'ID', sort: true}
, {field: 'name', fixed: 'left', title: '任务名'}
, {field: 'created_at', title: '创建时间', width: 200}
]]
, page: true
, text: {
none: '无数据'
}
, parseData: function (res) {
return {
"code": res.code,
"msg": res.message,
"count": res.data.total,
"data": res.data.items
};
}
});
table.render({
elem: '#panel-task-finished'
, id: 'panel-task-finished-table'
, url: '/api/panel/task/list?status=finished'
, cols: [[
{field: 'id', hide: true, title: 'ID', sort: true}
, {field: 'name', fixed: 'left', title: '任务名'}
, {field: 'created_at', title: '创建时间', width: 200}
, {field: 'updated_at', title: '完成时间', width: 200}
, {
field: 'control'
, title: '操作'
, width: 100
, templet: '#panel-task-finished-control-tpl'
, align: 'center'
}
]]
, page: true
, text: {
none: '无数据'
}
, parseData: function (res) {
return {
"code": res.code,
"msg": res.message,
"count": res.data.total,
"data": res.data.items
};
}
});
table.on('tool(panel-task-finished)', function (obj) {
let data = obj.data;
if (obj.event === 'remove') {
layer.confirm('确定移除该记录吗?', function (index) {
layer.close(index);
admin.req({
url: '/api/panel/task/delete',
type: 'post',
data: {
id: data.id
}
, success: function (res) {
if (res.code == 0) {
layer.msg('移除任务:' + data.name + ' 成功!', {icon: 1, time: 1000}, function () {
table.reload('panel-task-finished-table');
});
} else {
layer.msg(res.message, {icon: 2, time: 1000});
}
}
});
});
}
});
table.render({
elem: '#panel-task-failed'
, id: 'panel-task-failed-table'
, url: '/api/panel/task/list?status=failed'
, cols: [[
{field: 'id', hide: true, title: 'ID', sort: true}
, {field: 'name', fixed: 'left', title: '任务名'}
, {field: 'created_at', title: '创建时间', width: 200}
, {field: 'updated_at', title: '完成时间', width: 200}
, {
field: 'control'
, title: '操作'
, width: 100
, templet: '#panel-task-failed-control-tpl'
, fixed: 'right'
, align: 'center'
}
]]
, page: true
, text: {
none: '无数据'
}
, parseData: function (res) {
return {
"code": res.code,
"msg": res.message,
"count": res.data.total,
"data": res.data.items
};
}
});
table.on('tool(panel-task-failed)', function (obj) {
let data = obj.data;
if (obj.event === 'remove') {
layer.confirm('确定移除该记录吗?', function (index) {
layer.close(index);
admin.req({
url: '/api/panel/task/delete',
type: 'post',
data: {
id: data.id
}
, success: function (res) {
if (res.code == 0) {
layer.msg('移除任务:' + data.name + ' 成功!', {icon: 1, time: 1000}, function () {
table.reload('panel-task-failed-table');
});
} else {
layer.msg(res.message, {icon: 2, time: 1000});
}
}
});
});
}
});
});
</script>