From 9d2055fa7c59fbb0959e63fda09ee685c8ee6b9d Mon Sep 17 00:00:00 2001 From: caadiq Date: Tue, 24 Mar 2026 20:33:03 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=EC=9A=B4=EC=86=A1=EC=9E=A5=20=EB=B2=88?= =?UTF-8?q?=ED=98=B8=20=EC=9E=90=EB=8F=99=20=EC=A0=95=EB=A6=AC=20+=20?= =?UTF-8?q?=EB=82=A0=EC=A7=9C=EC=97=90=20=EC=9A=94=EC=9D=BC=20=ED=91=9C?= =?UTF-8?q?=EC=8B=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 운송장 번호 입력 시 공백/하이픈 실시간 제거 - 택배 카드 날짜에 요일 추가 (월, 화, ...) Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/src/components/ParcelCard.jsx | 3 ++- frontend/src/components/ParcelForm.jsx | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/frontend/src/components/ParcelCard.jsx b/frontend/src/components/ParcelCard.jsx index 343f515..67e96ca 100644 --- a/frontend/src/components/ParcelCard.jsx +++ b/frontend/src/components/ParcelCard.jsx @@ -1,5 +1,6 @@ import { useQuery } from "@tanstack/react-query"; import dayjs from "dayjs"; +import "dayjs/locale/ko"; import StatusBadge from "./StatusBadge"; import { fetchCarriers } from "@/api/parcels"; @@ -34,7 +35,7 @@ function ParcelCard({ parcel, onClick }) {
- {dayjs(parcel.created_at).format("YYYY.MM.DD")} + {dayjs(parcel.created_at).locale("ko").format("YYYY.MM.DD (dd)")}
diff --git a/frontend/src/components/ParcelForm.jsx b/frontend/src/components/ParcelForm.jsx index 4d0d7d0..18c4f53 100644 --- a/frontend/src/components/ParcelForm.jsx +++ b/frontend/src/components/ParcelForm.jsx @@ -34,7 +34,7 @@ function ParcelForm({ onClose }) { setError(""); mutation.mutate({ carrierId, - trackingNumber: trackingNumber.replace(/\s/g, ""), + trackingNumber: trackingNumber.replace(/[\s\-]/g, ""), label: label || undefined, }); }; @@ -69,7 +69,7 @@ function ParcelForm({ onClose }) { setTrackingNumber(e.target.value)} + onChange={(e) => setTrackingNumber(e.target.value.replace(/[\s\-]/g, ""))} placeholder="운송장 번호 입력" className="w-full border border-gray-300 rounded-lg px-3 lg:px-4 py-2 lg:py-2.5 text-sm lg:text-base focus:outline-none focus:ring-2 focus:ring-primary/30 focus:border-primary" required