Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7ffc02e887 | ||
|
|
cbacb27bb1 |
@@ -98,7 +98,7 @@ const DomesticPopulationTab = ({ tab, statsYr, onFileButtonClick }: Props) => {
|
||||
enableSort={false}
|
||||
getGridRef={rightGridRef} // ← 추가
|
||||
onDataCellClick={({ row, fieldName }) => {
|
||||
if (fieldName === "mpinCd") return;
|
||||
if (fieldName === "sbstAdmdstCd") return;
|
||||
if (fieldName === "admdstCd") {
|
||||
const gridView = rightGridRef.current?.gridView as
|
||||
| GridViewWithEditCommit
|
||||
@@ -108,7 +108,7 @@ const DomesticPopulationTab = ({ tab, statsYr, onFileButtonClick }: Props) => {
|
||||
tab.setRightRowData((prev) =>
|
||||
prev.map((r) =>
|
||||
r.admdstCd === row.admdstCd
|
||||
? { ...r, mpinCd: String(row.admdstCd ?? "") }
|
||||
? { ...r, sbstAdmdstCd: String(row.admdstCd ?? "") }
|
||||
: r,
|
||||
),
|
||||
);
|
||||
@@ -117,7 +117,7 @@ const DomesticPopulationTab = ({ tab, statsYr, onFileButtonClick }: Props) => {
|
||||
}
|
||||
}}
|
||||
onCellDblClick={({ row, fieldName }) => {
|
||||
if (fieldName !== "mpinCd") return;
|
||||
if (fieldName !== "sbstAdmdstCd") return;
|
||||
void tab.handleRightRowClick(fromGridRow<DomesticPopulationItem>(row), statsYr);
|
||||
}}
|
||||
/>
|
||||
|
||||
@@ -97,7 +97,7 @@ const ForeignPopulationTab = ({ tab, statsYr, onFileButtonClick }: Props) => {
|
||||
enableSort={false}
|
||||
getGridRef={rightGridRef}
|
||||
onDataCellClick={({ row, fieldName }) => {
|
||||
if (fieldName === "mpinCd") return;
|
||||
if (fieldName === "sbstAdmdstCd") return;
|
||||
if (fieldName === "admdstCd") {
|
||||
const gridView = rightGridRef.current?.gridView as
|
||||
| GridViewWithEditCommit
|
||||
@@ -107,7 +107,7 @@ const ForeignPopulationTab = ({ tab, statsYr, onFileButtonClick }: Props) => {
|
||||
tab.setRightRowData((prev) =>
|
||||
prev.map((r) =>
|
||||
r.admdstCd === row.admdstCd
|
||||
? { ...r, mpinCd: String(row.admdstCd ?? "") }
|
||||
? { ...r, sbstAdmdstCd: String(row.admdstCd ?? "") }
|
||||
: r,
|
||||
),
|
||||
);
|
||||
@@ -116,7 +116,7 @@ const ForeignPopulationTab = ({ tab, statsYr, onFileButtonClick }: Props) => {
|
||||
}
|
||||
}}
|
||||
onCellDblClick={({ row, fieldName }) => {
|
||||
if (fieldName !== "mpinCd") return;
|
||||
if (fieldName !== "sbstAdmdstCd") return;
|
||||
void tab.handleRightRowClick(fromGridRow<ForeignPopulationItem>(row), statsYr);
|
||||
}}
|
||||
/>
|
||||
|
||||
@@ -126,12 +126,12 @@ export function usePopulationMappingTab<TRow extends PopulationMappingRow>(
|
||||
|
||||
await run(async () => {
|
||||
const regList = rightRowData
|
||||
.filter((row) => String(row.mpinCd ?? "").trim() !== "")
|
||||
.filter((row) => String(row.sbstAdmdstCd ?? "").trim() !== "")
|
||||
.map((row) => ({
|
||||
statsYr,
|
||||
admdstCd: String(row.admdstCd ?? ""),
|
||||
admdstNm: String(row.admdstNm ?? ""),
|
||||
subAdmdstCd: String(row.mpinCd ?? ""),
|
||||
sbstAdmdstCd: String(row.sbstAdmdstCd ?? ""),
|
||||
}));
|
||||
|
||||
const res = await config.saveFinal(statsYr, regList);
|
||||
@@ -167,7 +167,7 @@ const handleRightRowClick = async (rowData: TRow, statsYr: string) => {
|
||||
const rowIndex = selectedRowIndexRef.current;
|
||||
if (rowIndex === null) return;
|
||||
setRightRowData((prev) =>
|
||||
prev.map((row, idx) => (idx === rowIndex ? { ...row, mpinCd: item["admdstCd"] ?? "" } : row)),
|
||||
prev.map((row, idx) => (idx === rowIndex ? { ...row, sbstAdmdstCd: item["admdstCd"] ?? "" } : row)),
|
||||
);
|
||||
selectedRowIndexRef.current = null;
|
||||
};
|
||||
|
||||
@@ -14,7 +14,7 @@ export interface ForeignPopulationItem {
|
||||
frgnrMlPpltnCnt: number;
|
||||
frgnrFmlPpltnCnt: number;
|
||||
/** 미매핑 리스트(우측) 전용 - 매핑 대상 행정구역코드(상위코드) */
|
||||
mpinCd: string;
|
||||
sbstAdmdstCd: string;
|
||||
}
|
||||
|
||||
export type ForeignPopulationListResponse = ApiResponse<ForeignPopulationItem[]>;
|
||||
@@ -88,7 +88,7 @@ export interface PopulationMappingRegItem {
|
||||
statsYr: string;
|
||||
admdstCd: string;
|
||||
admdstNm: string;
|
||||
subAdmdstCd: string;
|
||||
sbstAdmdstCd: string;
|
||||
}
|
||||
|
||||
/** 좌/우 그리드 행이 공통으로 가져야 하는 최소 필드 */
|
||||
@@ -96,7 +96,7 @@ export interface PopulationMappingRow {
|
||||
admdstCd: string;
|
||||
admdstNm: string;
|
||||
/** 우측(미매핑 리스트) 전용 필드. 좌측 데이터에는 존재하지 않을 수 있음 */
|
||||
mpinCd?: string;
|
||||
sbstAdmdstCd?: string;
|
||||
}
|
||||
|
||||
/** usePopulationMappingTab에 주입하는 API/검증 설정 - 내국인/외국인 탭이 이 설정만 다르게 넘김 */
|
||||
|
||||
@@ -94,8 +94,8 @@ export const DomesticPopulationRightColumnConfig: ColumnInfoList = {
|
||||
styleName: "rg-cell-readonly",
|
||||
},
|
||||
{
|
||||
name: "mpinCd",
|
||||
fieldName: "mpinCd",
|
||||
name: "sbstAdmdstCd",
|
||||
fieldName: "sbstAdmdstCd",
|
||||
header: { text: "맵핑코드" },
|
||||
width: 130,
|
||||
editable: true
|
||||
@@ -134,7 +134,7 @@ export const DomesticPopulationRightColumnConfig: ColumnInfoList = {
|
||||
columnLayout: [
|
||||
"admdstCd",
|
||||
"admdstNm",
|
||||
"mpinCd",
|
||||
"sbstAdmdstCd",
|
||||
{
|
||||
name: "populationGroup",
|
||||
header: { text: "인구수" },
|
||||
|
||||
@@ -111,8 +111,8 @@ export const ForeignPopulationRightColumnConfig: ColumnInfoList = {
|
||||
styleName: "rg-cell-readonly",
|
||||
},
|
||||
{
|
||||
name: "mpinCd",
|
||||
fieldName: "mpinCd",
|
||||
name: "sbstAdmdstCd",
|
||||
fieldName: "sbstAdmdstCd",
|
||||
header: { text: "맵핑코드" },
|
||||
width: 130,
|
||||
editable: true
|
||||
@@ -153,7 +153,7 @@ export const ForeignPopulationRightColumnConfig: ColumnInfoList = {
|
||||
"sido",
|
||||
"gugun",
|
||||
"admdstNm",
|
||||
"mpinCd",
|
||||
"sbstAdmdstCd",
|
||||
{
|
||||
name: "populationGroup",
|
||||
header: { text: "외국인수" },
|
||||
|
||||
@@ -67,14 +67,14 @@ export interface EcptReqCountResponse {
|
||||
|
||||
export interface ThreeStageStatusResponse {
|
||||
statsYr: string;
|
||||
laeStatusCd: string;
|
||||
laeStatusNm: string;
|
||||
laeRejected: boolean;
|
||||
ctpvStatusCd: string;
|
||||
ctpvStatusNm: string;
|
||||
ctpvRejected: boolean;
|
||||
pbcpStatusCd: string;
|
||||
pbcpStatusNm: string;
|
||||
lclgvSbmsnSttsCd: string;
|
||||
lclgvSbmsnSttsNm: string;
|
||||
lclgvRejected: boolean;
|
||||
mctpvPicSbmsnSttsCd: string;
|
||||
mctpvPicSbmsnSttsNm: string;
|
||||
mctpvRejected: boolean;
|
||||
pbcpSbmsnSttsCd: string;
|
||||
pbcpSbmsnSttsNm: string;
|
||||
pbcpRejected: boolean;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@ export interface DomesticPopulationItem {
|
||||
domplMlPpltnCnt: number; // 내국인 남성 인구수
|
||||
domplFmlPpltnCnt: number; // 내국인 여성 인구수
|
||||
/** 미매핑 리스트 전용 - 매핑 대상 행정구역코드 (상위코드) */
|
||||
mpinCd: string;
|
||||
sbstAdmdstCd: string;
|
||||
}
|
||||
|
||||
/** 엑셀 업로드 요청 파라미터 */
|
||||
|
||||
@@ -57,11 +57,11 @@ const STEPS: StepDef[] = [
|
||||
];
|
||||
|
||||
interface ThreeStageData {
|
||||
laeStatusCd: string;
|
||||
laeRejected: boolean;
|
||||
ctpvStatusCd: string;
|
||||
ctpvRejected: boolean;
|
||||
pbcpStatusCd: string;
|
||||
lclgvSbmsnSttsCd: string;
|
||||
lclgvRejected: boolean;
|
||||
mctpvPicSbmsnSttsCd: string;
|
||||
mctpvRejected: boolean;
|
||||
pbcpSbmsnSttsCd: string;
|
||||
pbcpRejected: boolean;
|
||||
}
|
||||
|
||||
@@ -73,9 +73,9 @@ interface ThreeStageData {
|
||||
function resolveCheckedSteps(data?: ThreeStageData): boolean[] {
|
||||
if (!data) return STEPS.map(() => false);
|
||||
|
||||
const lae = Number(data.laeStatusCd);
|
||||
const ctpv = Number(data.ctpvStatusCd);
|
||||
const pbcp = Number(data.pbcpStatusCd);
|
||||
const lae = Number(data.lclgvSbmsnSttsCd);
|
||||
const ctpv = Number(data.mctpvPicSbmsnSttsCd);
|
||||
const pbcp = Number(data.pbcpSbmsnSttsCd);
|
||||
|
||||
return [
|
||||
lae >= 1,
|
||||
@@ -86,14 +86,14 @@ function resolveCheckedSteps(data?: ThreeStageData): boolean[] {
|
||||
];
|
||||
}
|
||||
|
||||
// input/submit/approve → lae 반려여부, review → ctpv, verify → pbcp
|
||||
// input/submit/approve → lclgv 반려여부, review → mctpv, verify → pbcp
|
||||
function resolveRejectedFlags(data?: ThreeStageData): boolean[] {
|
||||
if (!data) return STEPS.map(() => false);
|
||||
return [
|
||||
data.laeRejected,
|
||||
data.laeRejected,
|
||||
data.laeRejected,
|
||||
data.ctpvRejected,
|
||||
data.lclgvRejected,
|
||||
data.lclgvRejected,
|
||||
data.lclgvRejected,
|
||||
data.mctpvRejected,
|
||||
data.pbcpRejected,
|
||||
];
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user