모달열기 기능 통합
This commit is contained in:
@@ -2629,25 +2629,10 @@ export class ButtonActionExecutor {
|
||||
|
||||
dataSourceId = dataSourceId || context.tableName || "default";
|
||||
|
||||
console.log("🔍 [handleModal] 데이터 조회 시도:", {
|
||||
dataSourceId,
|
||||
autoDetectDataSource,
|
||||
hasAllComponents: !!context.allComponents,
|
||||
allComponentsCount: context.allComponents?.length,
|
||||
});
|
||||
|
||||
// modalDataStore에서 데이터 가져오기
|
||||
try {
|
||||
const { useModalDataStore } = await import("@/stores/modalDataStore");
|
||||
const dataRegistry = useModalDataStore.getState().dataRegistry;
|
||||
|
||||
console.log("📦 [handleModal] modalDataStore 상태:", {
|
||||
registryKeys: Object.keys(dataRegistry),
|
||||
targetKey: dataSourceId,
|
||||
hasData: !!dataRegistry[dataSourceId],
|
||||
dataLength: dataRegistry[dataSourceId]?.length || 0,
|
||||
});
|
||||
|
||||
const modalData = dataRegistry[dataSourceId] || [];
|
||||
|
||||
if (modalData.length === 0) {
|
||||
@@ -2658,15 +2643,19 @@ export class ButtonActionExecutor {
|
||||
|
||||
selectedData = modalData.map((item: any) => item.originalData || item);
|
||||
const rawParentData = modalData[0]?.originalData || modalData[0] || {};
|
||||
parentData = { ...rawParentData };
|
||||
|
||||
// 필드 매핑 적용
|
||||
if (config.fieldMappings?.length) {
|
||||
// 매핑이 있으면 매핑된 필드만 전달
|
||||
parentData = {};
|
||||
config.fieldMappings.forEach((mapping) => {
|
||||
if (mapping.sourceField && mapping.targetField && rawParentData[mapping.sourceField] !== undefined) {
|
||||
parentData[mapping.targetField] = rawParentData[mapping.sourceField];
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 매핑이 없으면 모든 필드 전달 (동일 컬럼명 자동 매핑)
|
||||
parentData = { ...rawParentData };
|
||||
}
|
||||
} catch (error) {
|
||||
console.error("❌ 데이터 확인 실패:", error);
|
||||
@@ -2676,16 +2665,20 @@ export class ButtonActionExecutor {
|
||||
} else {
|
||||
// 2-2. 기본 모드: context에서 직접 가져오기
|
||||
selectedData = context.selectedRowsData || [];
|
||||
parentData = context.splitPanelParentData || {};
|
||||
const rawParentData = context.splitPanelParentData || selectedData[0] || {};
|
||||
|
||||
// 필드 매핑 적용
|
||||
if (config.fieldMappings?.length && selectedData.length > 0) {
|
||||
const rawParentData = selectedData[0] || {};
|
||||
// 매핑이 있으면 매핑된 필드만 전달
|
||||
parentData = {};
|
||||
config.fieldMappings.forEach((mapping) => {
|
||||
if (mapping.sourceField && mapping.targetField && rawParentData[mapping.sourceField] !== undefined) {
|
||||
parentData[mapping.targetField] = rawParentData[mapping.sourceField];
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 매핑이 없으면 모든 필드 전달 (동일 컬럼명 자동 매핑)
|
||||
parentData = { ...rawParentData };
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2749,14 +2742,6 @@ export class ButtonActionExecutor {
|
||||
}
|
||||
|
||||
// 4. 모달 열기 이벤트 발생
|
||||
console.log("🚀 [handleModal] 모달 열기 이벤트 발생:", {
|
||||
screenId: config.targetScreenId,
|
||||
title: finalTitle,
|
||||
selectedDataCount: selectedData.length,
|
||||
parentDataKeys: Object.keys(parentData),
|
||||
parentData: parentData,
|
||||
});
|
||||
|
||||
// passSelectedData가 true이면 editData로 전달 (수정 모드처럼 모든 필드 표시)
|
||||
const isPassDataMode = passSelectedData && selectedData.length > 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user