88 lines
3.3 KiB
HTML
88 lines
3.3 KiB
HTML
|
|
<!DOCTYPE html>
|
||
|
|
<html lang="zh-TW">
|
||
|
|
<head>
|
||
|
|
<meta charset="UTF-8" />
|
||
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
|
|
<title>刷卡補填 · 吉八小</title>
|
||
|
|
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||
|
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||
|
|
<link rel="preconnect" href="https://font.emtech.cc" crossorigin />
|
||
|
|
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
||
|
|
<link href="https://font.emtech.cc/css/TaipeiSansTC.css" rel="stylesheet" />
|
||
|
|
<script>
|
||
|
|
(function () {
|
||
|
|
var p = localStorage.getItem("pts_theme") || "system";
|
||
|
|
var dark = window.matchMedia("(prefers-color-scheme: dark)").matches;
|
||
|
|
var t = p === "light" || p === "dark" ? p : dark ? "dark" : "light";
|
||
|
|
document.documentElement.setAttribute("data-theme", t);
|
||
|
|
document.documentElement.classList.toggle("dark", t === "dark");
|
||
|
|
})();
|
||
|
|
</script>
|
||
|
|
<link rel="stylesheet" href="/static/style.css" />
|
||
|
|
</head>
|
||
|
|
<body>
|
||
|
|
<div class="container narrow">
|
||
|
|
<header class="topbar compact">
|
||
|
|
<div>
|
||
|
|
<h1>刷卡補填</h1>
|
||
|
|
<p class="subtitle" id="connLine">檢查 CompBase 連線…</p>
|
||
|
|
</div>
|
||
|
|
<div class="topbar-actions">
|
||
|
|
<div class="theme-toggle" title="外觀">
|
||
|
|
<button type="button" class="theme-btn" data-theme-option="light">淺</button>
|
||
|
|
<button type="button" class="theme-btn" data-theme-option="dark">深</button>
|
||
|
|
<button type="button" class="theme-btn" data-theme-option="system">系統</button>
|
||
|
|
</div>
|
||
|
|
<nav class="nav">
|
||
|
|
<a href="/" class="nav-link">填工時</a>
|
||
|
|
<a href="/compbase" class="nav-link active">刷卡補填</a>
|
||
|
|
<a href="/settings" class="nav-link">設定</a>
|
||
|
|
</nav>
|
||
|
|
</div>
|
||
|
|
</header>
|
||
|
|
|
||
|
|
<section class="card">
|
||
|
|
<h2>一鍵補漏刷退</h2>
|
||
|
|
<p class="hint">
|
||
|
|
登入 CompBase → 出勤檢視 → 找出「應刷未刷」→ 自動選正常下班時間送出。
|
||
|
|
與 PTS 工時無關;預設使用設定裡的 PTS 帳密做 NTLM。
|
||
|
|
</p>
|
||
|
|
|
||
|
|
<div class="form-row">
|
||
|
|
<label>
|
||
|
|
近 N 天
|
||
|
|
<input type="number" id="days" min="1" max="62" value="14" />
|
||
|
|
</label>
|
||
|
|
<label>
|
||
|
|
刷退時間
|
||
|
|
<select id="outTimeMode">
|
||
|
|
<option value="expected">正常工時下班(推薦)</option>
|
||
|
|
<option value="latest_option">下拉最後一個可用時間</option>
|
||
|
|
</select>
|
||
|
|
</label>
|
||
|
|
</div>
|
||
|
|
|
||
|
|
<label class="checkbox dry-run-row">
|
||
|
|
<input type="checkbox" id="dryRun" checked />
|
||
|
|
試跑(只掃描/預覽,不送出)
|
||
|
|
</label>
|
||
|
|
|
||
|
|
<div class="actions">
|
||
|
|
<button type="button" id="scanBtn" class="btn secondary">掃描</button>
|
||
|
|
<button type="button" id="fillBtn" class="btn primary">一鍵補填</button>
|
||
|
|
</div>
|
||
|
|
<p id="actionStatus" class="settings-status"></p>
|
||
|
|
</section>
|
||
|
|
|
||
|
|
<section class="card">
|
||
|
|
<h2>結果</h2>
|
||
|
|
<div id="resultView" class="plan-view">
|
||
|
|
<p class="hint">選天數後按「掃描」或「一鍵補填」。</p>
|
||
|
|
</div>
|
||
|
|
</section>
|
||
|
|
</div>
|
||
|
|
<script src="/static/common.js"></script>
|
||
|
|
<script src="/static/compbase.js"></script>
|
||
|
|
</body>
|
||
|
|
</html>
|