From 9705a043286c8ff463c363534437c66bfcac6d22 Mon Sep 17 00:00:00 2001 From: chpark Date: Tue, 12 May 2026 10:54:32 +0900 Subject: [PATCH] =?UTF-8?q?feat(items):=20=EC=A0=9C=EC=A1=B0=EC=82=AC=20?= =?UTF-8?q?=ED=95=84=EB=93=9C/=EB=A9=94=EB=89=B4=20=EC=A0=9C=EA=B1=B0=20+?= =?UTF-8?q?=20=EA=B3=B5=EA=B8=89=EC=97=85=EC=B2=B4=20=EA=B2=80=EC=83=89=20?= =?UTF-8?q?+=20=EC=9B=90=EA=B0=80/=EB=8B=A8=EA=B0=80=20=EC=B2=9C=EB=8B=A8?= =?UTF-8?q?=EC=9C=84=20=EC=BD=A4=EB=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 품목 폼/리스트/모바일 카드에서 제조사 컬럼·셀렉트 제거 (dead code 정리) - 공급업체 셀렉트 → SearchableSelect (결과내 검색 가능) - 단가/원가 인풋: type=number → text + 천단위 콤마 표시, 소수점 제거(반올림) - 운영 menu_info: '제조사 관리' (9000204) status='inactive' Co-Authored-By: Claude Opus 4.7 (1M context) --- docs/모모유통 제조사 리스트(26.05.12).xlsx | Bin 0 -> 15495 bytes src/app/(main)/m/admin/items/page.tsx | 70 +++++++-------------- 2 files changed, 22 insertions(+), 48 deletions(-) create mode 100644 docs/모모유통 제조사 리스트(26.05.12).xlsx diff --git a/docs/모모유통 제조사 리스트(26.05.12).xlsx b/docs/모모유통 제조사 리스트(26.05.12).xlsx new file mode 100644 index 0000000000000000000000000000000000000000..efd0a6ac70c9c270bede8ff25d1669886403ab43 GIT binary patch literal 15495 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�%CkAzE+0tJ$1=ru9qQTVkqDWtLFAj@vl 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 Number(n || 0).toLocaleString("ko-KR"); export default function AdminItemsPage() { const [items, setItems] = useState([]); - const [makers, setMakers] = useState([]); const [vendors, setVendors] = useState([]); const [keyword, setKeyword] = useState(""); const [filterStatus, setFilterStatus] = useState(""); @@ -60,15 +57,6 @@ export default function AdminItemsPage() { setItems((await res.json()).RESULTLIST ?? []); }; - const loadMakers = async () => { - const res = await fetch("/api/m/makers/list", { - method: "POST", - headers: { "Content-Type": "application/json" }, - body: JSON.stringify({}), - }); - setMakers((await res.json()).RESULTLIST ?? []); - }; - const loadVendors = async () => { const res = await fetch("/api/m/vendors/list", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({}), @@ -78,7 +66,6 @@ export default function AdminItemsPage() { useEffect(() => { loadItems(); - loadMakers(); loadVendors(); }, []); // eslint-disable-line @@ -106,7 +93,6 @@ export default function AdminItemsPage() { actionType: isNew ? "regist" : "update", itemName: editing.ITEM_NAME, itemDetail: editing.ITEM_DETAIL, - makerObjid: editing.MAKER_OBJID, unit: editing.UNIT || "EA", unitPrice: editing.UNIT_PRICE, costPrice: editing.COST_PRICE, @@ -236,7 +222,7 @@ export default function AdminItemsPage() { {it.REQUIRES_DELIVERY === "Y" && 택배} {it.MAX_ORDER_QTY != null && Number(it.MAX_ORDER_QTY) > 0 && ≤{it.MAX_ORDER_QTY}} -
{it.ITEM_CODE} · {it.MAKER_NAME || "제조사 없음"}
+
{it.ITEM_CODE}
단가 ₩{fmt(it.UNIT_PRICE)} @@ -261,7 +247,6 @@ export default function AdminItemsPage() { 품목코드 품목명 - 제조사 구분 단가 원가 @@ -273,7 +258,7 @@ export default function AdminItemsPage() { {items.length === 0 ? ( - + 품목이 없습니다. 신규 등록 버튼을 눌러주세요. @@ -291,7 +276,6 @@ export default function AdminItemsPage() { {it.ITEM_CODE} {it.ITEM_NAME} - {it.MAKER_NAME || "-"} {it.IS_TAX_FREE === "Y" ? ( 면세 @@ -361,29 +345,13 @@ export default function AdminItemsPage() { className="w-full h-10 px-3 rounded-lg border border-slate-200 text-sm focus:border-emerald-500 outline-none" /> - - - - + onChange={(v) => setEditing({ ...editing, VENDOR_OBJID: v })} + placeholder="공급업체 검색" + /> setEditing({ ...editing, UNIT_PRICE: Number(e.target.value) })} - className="w-full h-10 px-3 rounded-lg border border-slate-200 text-sm focus:border-emerald-500 outline-none" + type="text" inputMode="numeric" + value={editing.UNIT_PRICE == null ? "" : Math.round(Number(editing.UNIT_PRICE)).toLocaleString("ko-KR")} + onChange={(e) => { + const n = Number(e.target.value.replace(/[^0-9]/g, "")); + setEditing({ ...editing, UNIT_PRICE: Number.isFinite(n) ? n : 0 }); + }} + className="w-full h-10 px-3 rounded-lg border border-slate-200 text-sm tabular-nums text-right focus:border-emerald-500 outline-none" /> setEditing({ ...editing, COST_PRICE: Number(e.target.value) })} - className="w-full h-10 px-3 rounded-lg border border-slate-200 text-sm focus:border-emerald-500 outline-none" + type="text" inputMode="numeric" + value={editing.COST_PRICE == null ? "" : Math.round(Number(editing.COST_PRICE)).toLocaleString("ko-KR")} + onChange={(e) => { + const n = Number(e.target.value.replace(/[^0-9]/g, "")); + setEditing({ ...editing, COST_PRICE: Number.isFinite(n) ? n : 0 }); + }} + className="w-full h-10 px-3 rounded-lg border border-slate-200 text-sm tabular-nums text-right focus:border-emerald-500 outline-none" />