diff --git a/plugin/think-plugs-static/stc/public/static/plugs/system/queue.js b/plugin/think-plugs-static/stc/public/static/plugs/system/queue.js
index f7a56ba83..df342d2b2 100644
--- a/plugin/think-plugs-static/stc/public/static/plugs/system/queue.js
+++ b/plugin/think-plugs-static/stc/public/static/plugs/system/queue.js
@@ -14,12 +14,51 @@
layui.define(function (exports) {
- let template = '
';
+ let template = [
+ '',
+ '
',
+ '
...
',
+ '
# {{d.code}}
',
+ '
',
+ '
',
+ '
',
+ '
执行日志实时刷新
',
+ '
',
+ '
',
+ '
'
+ ].join('');
+
+ function injectStyle() {
+ if (document.getElementById('ta-queue-style')) return;
+ let style = document.createElement('style');
+ style.id = 'ta-queue-style';
+ style.innerHTML = [
+ '.ta-queue-layer{border-radius:10px;overflow:hidden;}',
+ '.ta-queue-layer .layui-layer-title{height:48px;line-height:48px;font-weight:600;border-bottom:1px solid #edf0f5;background:#fff;}',
+ '.ta-queue-layer .layui-layer-content{overflow:hidden;background:#f6f8fb;}',
+ '.ta-queue-box{padding:18px 20px 20px;background:#f6f8fb;}',
+ '.ta-queue-status{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 15px;background:#fff;border:1px solid #edf0f5;border-radius:10px;box-shadow:0 4px 18px rgba(15,35,60,.04);}',
+ '.ta-queue-status-title{min-width:0;flex:1;font-weight:600;}',
+ '.ta-queue-status-title b{font-weight:600;}',
+ '.ta-queue-status-code{flex-shrink:0;max-width:220px;color:#8c98a8;font-size:12px;line-height:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}',
+ '.ta-queue-progress{height:12px;margin:14px 2px 0;border-radius:999px;background:#e8edf5;overflow:hidden;}',
+ '.ta-queue-progress .layui-progress-bar{border-radius:999px;}',
+ '.ta-queue-progress .layui-progress-text{top:-6px;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.2);}',
+ '.ta-queue-log{margin-top:14px;border-radius:10px;background:#222b33;border:1px solid #1a222a;overflow:hidden;box-shadow:inset 0 0 0 1px rgba(255,255,255,.02);}',
+ '.ta-queue-log-head{height:36px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;background:#172027;color:#dce5ee;font-size:13px;}',
+ '.ta-queue-log-head small{font-size:12px;font-weight:400;color:#7f8b98;}',
+ '.ta-queue-log code{display:block;height:185px;margin:0;padding:12px 14px;border:0;background:#222b33;color:#dce5ee;font-family:Consolas,Monaco,Menlo,monospace;font-size:12px;line-height:22px;white-space:normal;overflow:auto;}',
+ '.ta-queue-log code p{height:22px;line-height:22px;margin:0;color:#dce5ee;}',
+ '.ta-queue-log code .color-desc{color:#8c98a8!important;}'
+ ].join('');
+ document.head.appendChild(style);
+ }
function Queue(code, doScript, element) {
let queue = this;
+ injectStyle();
(this.doAjax = true) && (this.doReload = false) || layer.open({
- type: 1, title: false, area: ['560px', '315px'], anim: 2, shadeClose: false, end: function () {
+ type: 1, title: '任务执行进度', area: ['620px', '390px'], skin: 'ta-queue-layer', anim: 2, shadeClose: false, end: function () {
queue.doAjax = queue.doReload && doScript && $.layTable.reload(((element || {}).dataset || {}).tableId || true) && false;
}, content: laytpl(template).render({code: code}), success: function ($elem) {
new Progress($elem, code, queue, doScript);
diff --git a/plugin/think-plugs-system/src/builder/QueueBuilder.php b/plugin/think-plugs-system/src/builder/QueueBuilder.php
index cad72a554..a5c62c894 100644
--- a/plugin/think-plugs-system/src/builder/QueueBuilder.php
+++ b/plugin/think-plugs-system/src/builder/QueueBuilder.php
@@ -31,26 +31,30 @@ class QueueBuilder
$buttons->button('优化数据库', [
'data-table-id' => 'QueueTable',
'data-queue' => apiuri('system/plugs/optimize'),
+ 'class' => 'layui-btn-normal',
]);
if ($iswin || php_sapi_name() === 'cli') {
$buttons->button('启动服务', [
'type' => 'button',
'data-queue-service' => null,
'data-service-url' => apiuri('system/queue/start'),
+ 'class' => 'layui-btn-primary',
], null, 'button');
$buttons->button('关闭服务', [
'type' => 'button',
'data-queue-service' => null,
'data-service-url' => apiuri('system/queue/stop'),
+ 'class' => 'layui-btn-warm',
], null, 'button');
}
$buttons->button('定时清理', [
'type' => 'button',
'data-table-id' => 'QueueTable',
'data-queue' => url('clean')->build(),
+ 'class' => 'layui-btn-primary',
], null, 'button');
}
- $buttons->batchAction('批量删除', url('remove')->build(), 'id#{id}', '确定批量删除记录吗?', [], 'remove');
+ $buttons->batchAction('批量删除', url('remove')->build(), 'id#{id}', '确定批量删除记录吗?', ['class' => 'layui-btn-danger'], 'remove');
if ($super) {
$buttons->button('复制启动命令', [
'data-copy' => $command,