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,