Files
frontend/apps/sn/app/components/ui/operFileUploadForm.tsx
T

67 lines
2.5 KiB
TypeScript

"use client"
import { SelectBox } from '@common/business_components/ui';
import React, { useState, useEffect } from 'react'
import FileUploadForm from './fileUploadForm';
import { yearOptions, getQuarterOptions } from '@/components/lib/utils';
const operFileUploadForm = ({ title, onSubmit }: { title: string, onSubmit: (files: string, year: string, quarter: string, code: string, id: string) => void }) => {
const [atflCd, setAtflCd] = useState<string | null>(null);
const [atflId, setAtflId] = useState<string | null>(null);
const [selectedYear, setSelectedYear] = useState<string>(yearOptions[0]?.val || '');
const [quaterOptions, setQuaterOptions] = useState(() => getQuarterOptions(selectedYear));
const [selectedQuarter, setSelectedQuarter] = useState<string>(quaterOptions[0]?.val || '');
// 년도가 변경될 때 분기 옵션 업데이트
useEffect(() => {
const updatedQuarterOptions = getQuarterOptions(selectedYear);
setQuaterOptions(updatedQuarterOptions);
// 분기 옵션이 변경되면 첫 번째 옵션으로 자동 선택
setSelectedQuarter(updatedQuarterOptions[0]?.val || '');
}, [selectedYear]);
// 년도 변경 핸들러
const handleYearChange = (value: string | number) => {
const yearValue = String(value);
setSelectedYear(yearValue);
};
return (
<div>
<div className='card-header'>
<h3 className="text-2xl font-medium">{title}</h3>
</div>
<div className="card p-6">
<div className="grid grid-col-2 items-center space-x-4">
<div className='flex'>
<SelectBox
className="w-50 mr-3 ml-4"
selectClass="rounded-lg bg-white"
label="년도"
selectArray={yearOptions}
onSelectValue={handleYearChange}
value={selectedYear}
/>
<SelectBox
className="w-50"
selectClass="rounded-lg bg-white"
label="분기"
selectArray={quaterOptions}
onSelectValue={(value: string | number) => setSelectedQuarter(String(value))}
value={selectedQuarter}
/>
<FileUploadForm
onSubmit={(files, year, quarter, code, id) => {
onSubmit(files, (selectedYear ?? year) || '', (selectedQuarter ?? quarter) || '', code, id);
}}
showButton={true}
showPreview={true}
accept={""} />
</div>
</div>
</div>
</div>
)
}
export default operFileUploadForm