diff --git a/B09_Estimation/B09_Estimation_UI_Tab_CostSheet.ts b/B09_Estimation/B09_Estimation_UI_Tab_CostSheet.ts index d28d2c6f..f23c7f67 100644 --- a/B09_Estimation/B09_Estimation_UI_Tab_CostSheet.ts +++ b/B09_Estimation/B09_Estimation_UI_Tab_CostSheet.ts @@ -12,6 +12,7 @@ import { ui_locales, currentLanguageIndex } from "@ui/ui_template_locale"; import { createButton, showToast } from "@ui/ui_template_elements"; import { API_BASE_URL } from "@config/config_frontend"; import type { B09Tab, B09TabContext } from "./B09_Estimation_UI_Shell_Types"; +import { injectSheetStyles, unconfirmedBadge } from "./B09_Estimation_UI_Sheet"; function L(key: keyof typeof ui_locales): string { return ui_locales[key][currentLanguageIndex]; @@ -227,12 +228,12 @@ function drawPanel(ctx: B09TabContext, sheet: CostSheetDto, reload: () => void): buttons.append( createButton({ label: "제비율표", - variant: "outlined", + variant: "ghost", onClick: () => ctx.open("rate_table"), }), createButton({ label: "다시 계산", - variant: "outlined", + variant: "ghost", onClick: () => { drafts.delete(projectId); reload(); @@ -267,15 +268,17 @@ function drawBody(ctx: B09TabContext, sheet: CostSheetDto): void { `요율 판 ${sheet.rate_version.effective_date} · 직접비는 설계내역서 합계`, ), ); - if (sheet.bill_missing_count || sheet.bill_unconfirmed_count) { + // 표현은 내역서·구조물도와 한 벌(「금액을 못 세운 줄 N건」 · 「미확정 N건」 배지). + if (sheet.bill_missing_count) { head.append( el( "span", "b09cs__warn", - `⚠ 내역서 단가 없는 줄 ${sheet.bill_missing_count} · 미확정 ${sheet.bill_unconfirmed_count}건 — 직접비가 덜 섬`, + `⚠ 내역서 ${L("B09_Sheet_Missing")} ${sheet.bill_missing_count}${L("B09_Sheet_Count")} — 직접비가 덜 섬`, ), ); } + if (sheet.bill_unconfirmed_count) head.append(unconfirmedBadge(sheet.bill_unconfirmed_count)); if (sheet.waste_note) head.append(el("span", "b09cs__meta", `폐기물처리비: ${sheet.waste_note}`)); wrap.append(head); @@ -314,6 +317,7 @@ function drawBody(ctx: B09TabContext, sheet: CostSheetDto): void { function render(ctx: B09TabContext): void { injectStyles(); + injectSheetStyles(); if (!ctx.projectId) { ctx.body.append(el("div", "b09cs__meta", "프로젝트를 고르세요")); return; diff --git a/B09_Estimation/B09_Estimation_UI_Tab_RateTable.ts b/B09_Estimation/B09_Estimation_UI_Tab_RateTable.ts index 22bf6fb8..6e85dad8 100644 --- a/B09_Estimation/B09_Estimation_UI_Tab_RateTable.ts +++ b/B09_Estimation/B09_Estimation_UI_Tab_RateTable.ts @@ -94,7 +94,7 @@ function drawPanel(ctx: B09TabContext): void { select.append(option); } pick.append(select); - const edit = createButton({ label: "수 정", variant: "outlined", disabled: true }); + const edit = createButton({ label: "수 정", variant: "ghost", disabled: true }); edit.title = "요율 수정은 원가계산이 프로젝트 요율을 받는 칸이 선 뒤에 열림"; box.append( pick, @@ -102,7 +102,7 @@ function drawPanel(ctx: B09TabContext): void { el("span", "b09rt__meta", "요율은 조달청 제비율 판 그대로 — 지금은 보기 전용"), createButton({ label: "원가계산서", - variant: "outlined", + variant: "ghost", onClick: () => ctx.open("cost_sheet"), }), );