From a68a5e0214a1018b38b1e2983d7e0813c8a8193f Mon Sep 17 00:00:00 2001 From: umsangdon Date: Mon, 14 Sep 2026 01:42:12 +0900 Subject: [PATCH] =?UTF-8?q?fix(b09):=20=EC=9B=90=EA=B0=80=EA=B3=84?= =?UTF-8?q?=EC=82=B0=EC=84=9C=C2=B7=EC=9A=94=EC=9C=A8=ED=91=9C=20=ED=83=AD?= =?UTF-8?q?=20=EB=8B=A8=EC=B6=94=20variant=20=EB=A5=BC=20ghost=20=EB=A1=9C?= =?UTF-8?q?=20=C2=B7=20=E3=80=8C=EA=B8=88=EC=95=A1=EC=9D=84=20=EB=AA=BB=20?= =?UTF-8?q?=EC=84=B8=EC=9A=B4=20=EC=A4=84=20N=EA=B1=B4=E3=80=8D=C2=B7?= =?UTF-8?q?=E3=80=8C=EB=AF=B8=ED=99=95=EC=A0=95=20N=EA=B1=B4=E3=80=8D=20?= =?UTF-8?q?=ED=91=9C=ED=98=84=EC=9D=84=20=EB=82=B4=EC=97=AD=EC=84=9C?= =?UTF-8?q?=EC=99=80=20=ED=95=9C=20=EB=B2=8C=EB=A1=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01BW6Jdsh18WPtYUR6THZJqn --- B09_Estimation/B09_Estimation_UI_Tab_CostSheet.ts | 12 ++++++++---- B09_Estimation/B09_Estimation_UI_Tab_RateTable.ts | 4 ++-- 2 files changed, 10 insertions(+), 6 deletions(-) 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"), }), );