From 7c9848cbc56e3af207c369703268fc2c12ae3b94 Mon Sep 17 00:00:00 2001 From: swcho Date: Wed, 13 Aug 2025 15:35:09 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=8B=9C=EB=8F=84,=20=EC=8B=9C=EA=B5=B0?= =?UTF-8?q?=EA=B5=AC=20=EC=88=9C=EC=84=9C=20Custom=20=EC=A0=95=EB=A0=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/sn/app/store/index.ts | 42 +++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) diff --git a/apps/sn/app/store/index.ts b/apps/sn/app/store/index.ts index e27d2922f..99ab25ce9 100644 --- a/apps/sn/app/store/index.ts +++ b/apps/sn/app/store/index.ts @@ -18,7 +18,43 @@ export const fetchCtpv = async (set: (state: any) => void) => { text: f.properties.mctpv_korn_nm, val: f.properties.mctpv_cd, })) - .sort((a, b) => a.text.localeCompare(b.text, 'ko')); + .sort((a, b) => { + // 커스텀 순서 정의 + const customOrder = [ + "서울특별시", + "부산광역시", + "대구광역시", + "인천광역시", + "광주광역시", + "대전광역시", + "울산광역시", + "세종특별자치시", + "경기도", + "강원특별자치도", // 경기도 다음에 배치 + "충청북도", + "충청남도", + "전북특별자치도", // 충청남도 다음에 배치 + "전라남도", + "경상북도", + "경상남도", + "제주특별자치도" + ]; + + const indexA = customOrder.indexOf(a.text); + const indexB = customOrder.indexOf(b.text); + + // 둘 다 커스텀 순서에 있으면 해당 순서로 + if (indexA !== -1 && indexB !== -1) { + return indexA - indexB; + } + + // 하나만 커스텀 순서에 있으면 그것을 앞으로 + if (indexA !== -1) return -1; + if (indexB !== -1) return 1; + + // 둘 다 커스텀 순서에 없으면 기본 알파벳 순서 + return a.text.localeCompare(b.text, 'ko'); + }); console.log('시도 데이터', list); set({ ctpv: list }); @@ -53,8 +89,8 @@ export const fetchBIZ_TY_CD = async (set: (state: any) => void) => { try { const res = await getCmsData(`/api/v1/code/cache/BIZTYCD`); const filtered: BIZ_CD_TYPE[] = Array.isArray(res) - ? (res as BIZ_CD_TYPE[]).filter(item => item?.lwpoCd !== "AQAAA") - : []; + ? (res as BIZ_CD_TYPE[]).filter(item => item?.lwpoCd !== "AQAAA") + : []; set({ BIZ_TY_CD: filtered }); } catch (e: any) { // alert("BIZ_TY_CD 데이터 로드 실패: " + e.message);