Merge branch 'main' of http://39.117.244.52:3000/kjs/ERP-node into lhj
; Please enter a commit message to explain why this merge is necessary, ; especially if it merges an updated upstream into a topic branch. ; ; Lines starting with ';' will be ignored, and an empty message aborts ; the commit.
This commit is contained in:
commit
b5b229122b
|
|
@ -365,6 +365,7 @@ export const InteractiveScreenViewerDynamic: React.FC<InteractiveScreenViewerPro
|
||||||
isInteractive={true}
|
isInteractive={true}
|
||||||
formData={formData}
|
formData={formData}
|
||||||
originalData={originalData || undefined}
|
originalData={originalData || undefined}
|
||||||
|
initialData={originalData || undefined} // 🆕 조건부 컨테이너 등에서 initialData로 전달
|
||||||
onFormDataChange={handleFormDataChange}
|
onFormDataChange={handleFormDataChange}
|
||||||
screenId={screenInfo?.id}
|
screenId={screenInfo?.id}
|
||||||
tableName={screenInfo?.tableName}
|
tableName={screenInfo?.tableName}
|
||||||
|
|
|
||||||
|
|
@ -413,10 +413,12 @@ export const DynamicComponentRenderer: React.FC<DynamicComponentRendererProps> =
|
||||||
groupedData: props.groupedData, // ✅ 언더스코어 제거하여 직접 전달
|
groupedData: props.groupedData, // ✅ 언더스코어 제거하여 직접 전달
|
||||||
_groupedData: props.groupedData, // 하위 호환성 유지
|
_groupedData: props.groupedData, // 하위 호환성 유지
|
||||||
// 🆕 UniversalFormModal용 initialData 전달
|
// 🆕 UniversalFormModal용 initialData 전달
|
||||||
// originalData가 비어있지 않으면 originalData 사용, 아니면 formData 사용
|
// 우선순위: props.initialData > originalData > formData
|
||||||
// 생성 모드에서는 originalData가 빈 객체이므로 formData를 사용해야 함
|
// 조건부 컨테이너에서 전달된 initialData가 있으면 그것을 사용
|
||||||
_initialData: (originalData && Object.keys(originalData).length > 0) ? originalData : formData,
|
_initialData: props.initialData || ((originalData && Object.keys(originalData).length > 0) ? originalData : formData),
|
||||||
_originalData: originalData,
|
_originalData: originalData,
|
||||||
|
// 🆕 initialData도 직접 전달 (조건부 컨테이너 → 내부 컴포넌트)
|
||||||
|
initialData: props.initialData,
|
||||||
// 🆕 탭 관련 정보 전달 (탭 내부의 테이블 컴포넌트에서 사용)
|
// 🆕 탭 관련 정보 전달 (탭 내부의 테이블 컴포넌트에서 사용)
|
||||||
parentTabId: props.parentTabId,
|
parentTabId: props.parentTabId,
|
||||||
parentTabsComponentId: props.parentTabsComponentId,
|
parentTabsComponentId: props.parentTabsComponentId,
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,16 @@ export function ConditionalContainerComponent({
|
||||||
className,
|
className,
|
||||||
groupedData, // 🆕 그룹 데이터
|
groupedData, // 🆕 그룹 데이터
|
||||||
onSave, // 🆕 EditModal의 handleSave 콜백
|
onSave, // 🆕 EditModal의 handleSave 콜백
|
||||||
|
initialData, // 🆕 수정 모드: 초기 데이터 (발주일, 담당자, 메모 등)
|
||||||
}: ConditionalContainerProps) {
|
}: ConditionalContainerProps) {
|
||||||
|
// 🔍 디버그: initialData 수신 확인
|
||||||
|
React.useEffect(() => {
|
||||||
|
console.log("[ConditionalContainer] initialData 수신:", {
|
||||||
|
hasInitialData: !!initialData,
|
||||||
|
initialDataKeys: initialData ? Object.keys(initialData) : [],
|
||||||
|
initialData,
|
||||||
|
});
|
||||||
|
}, [initialData]);
|
||||||
|
|
||||||
// 화면 컨텍스트 (데이터 제공자로 등록)
|
// 화면 컨텍스트 (데이터 제공자로 등록)
|
||||||
const screenContext = useScreenContextOptional();
|
const screenContext = useScreenContextOptional();
|
||||||
|
|
@ -221,6 +230,7 @@ export function ConditionalContainerComponent({
|
||||||
onSave={onSave}
|
onSave={onSave}
|
||||||
controlField={controlField}
|
controlField={controlField}
|
||||||
selectedCondition={selectedValue}
|
selectedCondition={selectedValue}
|
||||||
|
initialData={initialData}
|
||||||
/>
|
/>
|
||||||
))}
|
))}
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -244,6 +254,7 @@ export function ConditionalContainerComponent({
|
||||||
onSave={onSave}
|
onSave={onSave}
|
||||||
controlField={controlField}
|
controlField={controlField}
|
||||||
selectedCondition={selectedValue}
|
selectedCondition={selectedValue}
|
||||||
|
initialData={initialData}
|
||||||
/>
|
/>
|
||||||
) : null
|
) : null
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,17 @@ export function ConditionalSectionViewer({
|
||||||
onSave, // 🆕 EditModal의 handleSave 콜백
|
onSave, // 🆕 EditModal의 handleSave 콜백
|
||||||
controlField, // 🆕 조건부 컨테이너의 제어 필드명
|
controlField, // 🆕 조건부 컨테이너의 제어 필드명
|
||||||
selectedCondition, // 🆕 현재 선택된 조건 값
|
selectedCondition, // 🆕 현재 선택된 조건 값
|
||||||
|
initialData, // 🆕 수정 모드: 초기 데이터 (발주일, 담당자, 메모 등)
|
||||||
}: ConditionalSectionViewerProps) {
|
}: ConditionalSectionViewerProps) {
|
||||||
|
// 🔍 디버그: initialData 수신 확인
|
||||||
|
React.useEffect(() => {
|
||||||
|
console.log("[ConditionalSectionViewer] initialData 수신:", {
|
||||||
|
sectionId,
|
||||||
|
hasInitialData: !!initialData,
|
||||||
|
initialDataKeys: initialData ? Object.keys(initialData) : [],
|
||||||
|
initialData,
|
||||||
|
});
|
||||||
|
}, [initialData, sectionId]);
|
||||||
const { userId, userName, user } = useAuth();
|
const { userId, userName, user } = useAuth();
|
||||||
const [isLoading, setIsLoading] = useState(false);
|
const [isLoading, setIsLoading] = useState(false);
|
||||||
const [components, setComponents] = useState<ComponentData[]>([]);
|
const [components, setComponents] = useState<ComponentData[]>([]);
|
||||||
|
|
@ -191,6 +201,7 @@ export function ConditionalSectionViewer({
|
||||||
onFormDataChange={onFormDataChange}
|
onFormDataChange={onFormDataChange}
|
||||||
groupedData={groupedData}
|
groupedData={groupedData}
|
||||||
onSave={hasUniversalFormModal ? undefined : onSave}
|
onSave={hasUniversalFormModal ? undefined : onSave}
|
||||||
|
initialData={initialData}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ export interface ConditionalContainerProps {
|
||||||
onFormDataChange?: (fieldName: string, value: any) => void;
|
onFormDataChange?: (fieldName: string, value: any) => void;
|
||||||
groupedData?: Record<string, any>[]; // 🆕 그룹 데이터 (EditModal → ModalRepeaterTable)
|
groupedData?: Record<string, any>[]; // 🆕 그룹 데이터 (EditModal → ModalRepeaterTable)
|
||||||
onSave?: () => Promise<void>; // 🆕 EditModal의 handleSave 콜백
|
onSave?: () => Promise<void>; // 🆕 EditModal의 handleSave 콜백
|
||||||
|
initialData?: Record<string, any>; // 🆕 수정 모드: 초기 데이터 (발주일, 담당자, 메모 등)
|
||||||
|
|
||||||
// 화면 편집기 관련
|
// 화면 편집기 관련
|
||||||
isDesignMode?: boolean; // 디자인 모드 여부
|
isDesignMode?: boolean; // 디자인 모드 여부
|
||||||
|
|
@ -82,5 +83,7 @@ export interface ConditionalSectionViewerProps {
|
||||||
// 🆕 조건부 컨테이너 정보 (자식 화면에 전달)
|
// 🆕 조건부 컨테이너 정보 (자식 화면에 전달)
|
||||||
controlField?: string; // 제어 필드명 (예: "inbound_type")
|
controlField?: string; // 제어 필드명 (예: "inbound_type")
|
||||||
selectedCondition?: string; // 현재 선택된 조건 값 (예: "PURCHASE_IN")
|
selectedCondition?: string; // 현재 선택된 조건 값 (예: "PURCHASE_IN")
|
||||||
|
// 🆕 수정 모드: 초기 데이터 전달 (발주일, 담당자, 메모 등)
|
||||||
|
initialData?: Record<string, any>;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue