chore(邮件发送模块): 更新SQLite共享内存临时文件

This commit is contained in:
yangxiangyuan
2026-07-30 09:31:01 +08:00
parent 154b79c8f1
commit 398758800e
7 changed files with 256 additions and 172 deletions
+54
View File
@@ -385,6 +385,60 @@ input[type='number'] { -moz-appearance: textfield; appearance: textfield; }
.runner-main { flex: 1; display: flex; flex-direction: column; }
.runner-label { font-size: 16px; color: var(--text-secondary); margin-bottom: 4px; }
/* 横屏/大屏两栏容器 — JS 用 .runner-split-layout / .runner-col-left / .runner-col-right */
.runner-split-layout {
display: flex;
flex-direction: column;
gap: 16px;
flex: 1;
min-height: 0;
}
.runner-col-left, .runner-col-right {
display: flex;
flex-direction: column;
min-width: 0;
min-height: 0;
}
.runner-col-right {
justify-content: flex-end;
}
.runner-col-right .runner-footer {
margin-top: 0;
}
@media (orientation: landscape) and (min-height: 420px), (min-width: 900px) {
.runner-container { padding: 18px 28px; padding-top: calc(12px + env(safe-area-inset-top)); }
.runner-header { margin-bottom: 10px; }
.runner-progress { margin-bottom: 12px; }
.runner-split-layout {
flex-direction: row;
gap: 24px;
align-items: stretch;
}
.runner-col-left,
.runner-col-right {
flex: 1 1 0;
}
.runner-col-left {
justify-content: center;
align-items: stretch;
padding: 8px 12px;
}
.runner-col-right {
justify-content: space-between;
padding: 8px 12px;
overflow-y: auto;
border-left: 1px solid var(--border);
}
.runner-col-left .runner-next-card { margin-bottom: 0; }
.runner-timer {
font-size: clamp(72px, 14vw, 128px);
margin: 8px 0 16px;
}
.runner-current { font-size: clamp(28px, 4.2vw, 46px); }
.runner-next { font-size: clamp(22px, 3vw, 34px); }
}
/* 当前动作名 — JS 用 .runner-current */
.runner-current { font-size: 34px; font-weight: 700; margin-bottom: 8px; line-height: 1.2; word-break: break-word; }
.runner-current.current-action { color: var(--primary); }
+35 -31
View File
@@ -1261,39 +1261,43 @@
'<div class="runner-loop-text">第 ' + rs.currentLoop + ' 轮 ' + (totalLoops ? '/ 共 ' + totalLoops + ' 轮' : '/ 无限循环') + ' · 步骤 ' + (rs.currentStepIndex + 1) + ' / ' + totalSteps + '</div>' +
'</div>' +
'<div class="runner-progress"><div class="runner-progress-bar" id="runnerStepBar"></div></div>' +
'<div class="runner-main">' +
'<div class="runner-label">当前动作</div>' +
'<div class="runner-current ' + (isAction ? 'current-action' : 'current-rest') + '">' + escHtml(step.name || '—') + '</div>' +
'<div class="runner-timer" id="runnerTimer">--:--</div>' +
'<div class="runner-next-card">' +
'<div class="runner-label">下一个动作</div>' +
'<div class="runner-next">' + (nextStep ? escHtml(nextStep.name) : '本轮结束') + '</div>' +
'<div class="runner-split-layout">' +
'<div class="runner-col-left runner-main">' +
'<div class="runner-label">当前动作</div>' +
'<div class="runner-current ' + (isAction ? 'current-action' : 'current-rest') + '">' + escHtml(step.name || '—') + '</div>' +
'<div class="runner-timer" id="runnerTimer">--:--</div>' +
'<div class="runner-next-card">' +
'<div class="runner-label">下一个动作</div>' +
'<div class="runner-next">' + (nextStep ? escHtml(nextStep.name) : '本轮结束') + '</div>' +
'</div>' +
'</div>' +
'</div>' +
'<div class="runner-footer">' +
'<div class="runner-info-card">' +
'<div class="runner-info-row"><span class="runner-info-label">已执行</span><span class="runner-info-value">第 ' + rs.currentLoop + ' 轮,步骤 ' + (rs.currentStepIndex + 1) + '/' + totalSteps + '</span></div>' +
'<div class="runner-info-row"><span class="runner-info-label">预计剩余</span><span class="runner-info-value runner-info-highlight" id="runnerInfoRemaining">—</span></div>' +
'<div class="runner-info-row"><span class="runner-info-label">全局时长</span><span class="runner-info-value runner-info-highlight">' + (globalDurationSec !== null ? '约 ' + formatDuration(globalDurationSec) : '无限循环') + '</span></div>' +
'</div>' +
'<div class="runner-buttons">' +
'<button type="button" class="runner-btn" id="btnRunnerPause"><span class="btn-text">' + (rs.status === 'paused' ? '继续' : '暂停') + '</span></button>' +
'<button type="button" class="runner-btn" id="btnRunnerSkip"><span class="btn-text">跳过</span></button>' +
'<button type="button" class="runner-btn runner-btn-danger" id="btnRunnerStop"><span class="btn-text">结束</span></button>' +
'</div>' +
(globalDurationSec !== null && globalDurationSec > 0 ? (
'<div class="runner-global">' +
'<div class="runner-global-header"><span class="runner-global-label">执行进度</span><span class="runner-global-percent" id="runnerGlobalPercent">0%</span></div>' +
'<div class="runner-global-bar-wrap"><div class="runner-global-bar" id="runnerGlobalBar"></div></div>' +
'<div class="runner-global-stats">' +
'<span id="runnerGlobalExecuted">已执行 ' + formatDuration(0) + '</span>' +
'<span class="runner-global-divider">/</span>' +
'<span>总时长 ' + formatDuration(globalDurationSec) + '</span>' +
'<span class="runner-global-divider">·</span>' +
'<span class="runner-global-remaining" id="runnerGlobalRemaining">剩余 ' + formatDuration(0) + '</span>' +
'<div class="runner-col-right">' +
'<div class="runner-footer">' +
'<div class="runner-info-card">' +
'<div class="runner-info-row"><span class="runner-info-label">已执行</span><span class="runner-info-value">第 ' + rs.currentLoop + ' 轮,步骤 ' + (rs.currentStepIndex + 1) + '/' + totalSteps + '</span></div>' +
'<div class="runner-info-row"><span class="runner-info-label">预计剩余</span><span class="runner-info-value runner-info-highlight" id="runnerInfoRemaining">—</span></div>' +
'<div class="runner-info-row"><span class="runner-info-label">全局时长</span><span class="runner-info-value runner-info-highlight">' + (globalDurationSec !== null ? '约 ' + formatDuration(globalDurationSec) : '无限循环') + '</span></div>' +
'</div>' +
'</div>'
) : '') +
'<div class="runner-buttons">' +
'<button type="button" class="runner-btn" id="btnRunnerPause"><span class="btn-text">' + (rs.status === 'paused' ? '继续' : '暂停') + '</span></button>' +
'<button type="button" class="runner-btn" id="btnRunnerSkip"><span class="btn-text">跳过</span></button>' +
'<button type="button" class="runner-btn runner-btn-danger" id="btnRunnerStop"><span class="btn-text">结束</span></button>' +
'</div>' +
(globalDurationSec !== null && globalDurationSec > 0 ? (
'<div class="runner-global">' +
'<div class="runner-global-header"><span class="runner-global-label">执行进度</span><span class="runner-global-percent" id="runnerGlobalPercent">0%</span></div>' +
'<div class="runner-global-bar-wrap"><div class="runner-global-bar" id="runnerGlobalBar"></div></div>' +
'<div class="runner-global-stats">' +
'<span id="runnerGlobalExecuted">已执行 ' + formatDuration(0) + '</span>' +
'<span class="runner-global-divider">/</span>' +
'<span>总时长 ' + formatDuration(globalDurationSec) + '</span>' +
'<span class="runner-global-divider">·</span>' +
'<span class="runner-global-remaining" id="runnerGlobalRemaining">剩余 ' + formatDuration(0) + '</span>' +
'</div>' +
'</div>'
) : '') +
'</div>' +
'</div>' +
'</div>';
container.classList.toggle('is-paused', rs.status === 'paused');