diff --git a/backend/managerRoutes.js b/backend/managerRoutes.js index df1e066..abdf0a7 100644 --- a/backend/managerRoutes.js +++ b/backend/managerRoutes.js @@ -392,7 +392,6 @@ export default function () { } const wantXlsx = String(req.query.format || 'csv').toLowerCase() === 'xlsx' - const wantTxt = String(req.query.format || '').toLowerCase() === 'txt' let workerIdClause = '' let departmentClause = '' @@ -523,39 +522,6 @@ export default function () { byWorkerForXlsx.set(`${w.username}||${w.full_name}||${w.department}`, perWorkerRows) } - // ===== TXT branch ===== - if (wantTxt) { - const lines = [] - for (const wId in workByDay) { - const w = workByDay[wId] - const seen = new Set() - for (const day of Object.keys(w.days).sort()) { - const events = w.days[day].slice().sort((a, b) => a.time - b.time) - for (const e of events) { - const code = e.type === 'clock_in' ? '1' : '0' - const date = ymdInTZ(e.time, TZ) - const timeStr = new Intl.DateTimeFormat('en-GB', { - timeZone: TZ, - hour: '2-digit', - minute: '2-digit', - second: '2-digit', - hour12: false, - }).format(e.time) - const line = `${w.username},"${code}","${date} ${timeStr}";"${w.full_name}"` - if (!seen.has(line)) { - seen.add(line) - lines.push(line) - } - } - } - } - res.set('X-Export-TZ', TZ) - res.header('Content-Type', 'text/plain') - .attachment(`attendance_${startDate}_to_${endDate}.txt`) - .send(lines.join('\n')) - return - } - // ===== XLSX branch: grouped header + per-day summary sheet ===== if (wantXlsx) { const wb = new ExcelJS.Workbook() diff --git a/src/components/PersonnelManagement.vue b/src/components/PersonnelManagement.vue index e5a4df6..284f332 100644 --- a/src/components/PersonnelManagement.vue +++ b/src/components/PersonnelManagement.vue @@ -95,13 +95,6 @@ {{ exportLoading ? $t('exporting') : $t('exportAll') }} -