사이트·관리자 봉투 물류 기능(수불·통계·레포트·재고·발주)과 DB·메뉴·E2E를 운영 반영한다.
통계 분석(전년대비·월별·계절별), 수급계획·LOT 수불, 지정판매소·실사·메뉴 링크 등을 포함한다. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -42,6 +42,12 @@ tailwind.config = {
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style data-purpose="global-font-scale">
|
||||
/* 전체 텍스트 +2px 확대 (요청). rem 기반 텍스트는 비례 확대된다.
|
||||
다만 헤더 로고(.app-brand)는 원래 크기 유지하기 위해 root 기준 16px 로 reset. */
|
||||
html { font-size: 18px; }
|
||||
.app-brand, .app-brand * { font-size: 16px; }
|
||||
</style>
|
||||
<style data-purpose="table-layout">
|
||||
.data-table { width: 100%; border-collapse: collapse; font-family: 'Malgun Gothic', 'Noto Sans KR', sans-serif; }
|
||||
.data-table th, .data-table td { border: 1px solid #ccc; padding: 4px 8px; white-space: nowrap; font-size: 13px; }
|
||||
@@ -60,7 +66,7 @@ body { overflow: hidden; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body class="bg-gray-100 text-gray-800 flex flex-col h-screen font-sans antialiased select-none">
|
||||
<body class="bg-gray-100 text-gray-800 flex flex-col h-screen font-sans antialiased">
|
||||
<!-- BEGIN: Top Navigation -->
|
||||
<header class="relative bg-white border-b border-gray-300 h-12 flex items-center justify-between px-4 shrink-0 z-[100]">
|
||||
<div class="flex items-center gap-4">
|
||||
@@ -136,5 +142,44 @@ body { overflow: hidden; }
|
||||
<span>종량제 시스템</span>
|
||||
<span><?= date('Y.m.d (D) g:i:sA') ?></span>
|
||||
</footer>
|
||||
<script>
|
||||
(() => {
|
||||
const normalize = (s) => String(s || '').replace(/\s+/g, '').trim();
|
||||
const renumberTable = (table) => {
|
||||
const headRow = table.querySelector('thead tr');
|
||||
if (!headRow) return;
|
||||
const headers = Array.from(headRow.querySelectorAll('th'));
|
||||
const numberCol = headers.findIndex((th) => normalize(th.textContent) === '번호');
|
||||
if (numberCol < 0) return;
|
||||
|
||||
const body = table.querySelector('tbody');
|
||||
if (!body) return;
|
||||
const rows = Array.from(body.querySelectorAll(':scope > tr')).filter((tr) => {
|
||||
const cells = tr.querySelectorAll('td');
|
||||
if (cells.length === 0) return false;
|
||||
if (cells.length === 1 && Number(cells[0].getAttribute('colspan') || '1') > 1) return false;
|
||||
return true;
|
||||
});
|
||||
|
||||
let no = rows.length;
|
||||
rows.forEach((tr) => {
|
||||
const cells = tr.querySelectorAll('td');
|
||||
if (cells[numberCol]) {
|
||||
cells[numberCol].textContent = String(no--);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
const run = () => {
|
||||
document.querySelectorAll('table').forEach(renumberTable);
|
||||
};
|
||||
|
||||
if (document.readyState === 'loading') {
|
||||
document.addEventListener('DOMContentLoaded', run, { once: true });
|
||||
} else {
|
||||
run();
|
||||
}
|
||||
})();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user