|
|
@ -49,6 +49,10 @@ export default function ControlApprovalsTable(props) { |
|
|
|
// 체크박스 선택
|
|
|
|
// 체크박스 선택
|
|
|
|
const [checkList, setCheckList] = useState([]); |
|
|
|
const [checkList, setCheckList] = useState([]); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const [currentRow, setCurrentRow] = useState(null); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const [currentPlanAreaSno, setCurrentPlanAreaSno] = useState(null); |
|
|
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
useEffect(() => { |
|
|
|
let approvalCdValue = { S: 0, F: 0, C: 0, U: 0 }; |
|
|
|
let approvalCdValue = { S: 0, F: 0, C: 0, U: 0 }; |
|
|
|
|
|
|
|
|
|
|
@ -78,8 +82,6 @@ export default function ControlApprovalsTable(props) { |
|
|
|
} |
|
|
|
} |
|
|
|
}, [laancAprvList]); |
|
|
|
}, [laancAprvList]); |
|
|
|
|
|
|
|
|
|
|
|
const [currentPlanAreaSno, setCurrentPlanAreaSno] = useState(null); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// input 수정 컴포넌트
|
|
|
|
// input 수정 컴포넌트
|
|
|
|
const EditableCell = ({ |
|
|
|
const EditableCell = ({ |
|
|
|
editable, |
|
|
|
editable, |
|
|
@ -93,15 +95,51 @@ export default function ControlApprovalsTable(props) { |
|
|
|
const save = async () => { |
|
|
|
const save = async () => { |
|
|
|
try { |
|
|
|
try { |
|
|
|
const values = await form.validateFields(); |
|
|
|
const values = await form.validateFields(); |
|
|
|
|
|
|
|
const newValue = values[`${record.planAreaSno}_${dataIndex}`]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (record[dataIndex] !== newValue) { |
|
|
|
|
|
|
|
setCurrentRow({ |
|
|
|
|
|
|
|
planAreaSno: record.planAreaSno, |
|
|
|
|
|
|
|
dataIndex: dataIndex, |
|
|
|
|
|
|
|
originalValue: record[dataIndex], // 원래 값을 저장
|
|
|
|
|
|
|
|
newValue: values[`${record.planAreaSno}_${dataIndex}`] // 새로운 값을 저장
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 변경된 값이 반영된 상태에서 모달을 띄웁니다.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
let descValue = ''; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
switch (dataIndex) { |
|
|
|
|
|
|
|
case 'fltElev': |
|
|
|
|
|
|
|
descValue = `신청 고도를`; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 'era': |
|
|
|
|
|
|
|
descValue = `긴급 구조 기관을`; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 'rm': |
|
|
|
|
|
|
|
descValue = `비고를`; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 'dtl': |
|
|
|
|
|
|
|
descValue = `세부 사항을`; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 'reqRadius': |
|
|
|
|
|
|
|
descValue = `요청 반경을`; |
|
|
|
|
|
|
|
break; |
|
|
|
|
|
|
|
case 'reqElev': |
|
|
|
|
|
|
|
descValue = `요청 고도를`; |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
} |
|
|
|
setModal({ |
|
|
|
setModal({ |
|
|
|
isOpen: true, |
|
|
|
isOpen: true, |
|
|
|
title: '수정 확인', |
|
|
|
title: '수정 확인', |
|
|
|
desc: '데이터를 수정하시겠습니까?', |
|
|
|
desc: `${descValue} 수정하시겠습니까?`, |
|
|
|
type: 'edit', |
|
|
|
type: 'edit', |
|
|
|
row: { ...record, ...values } |
|
|
|
row: { ...record, ...values } |
|
|
|
}); |
|
|
|
}); |
|
|
|
} catch (errInfo) {} |
|
|
|
} |
|
|
|
|
|
|
|
} catch (errInfo) { |
|
|
|
|
|
|
|
console.error('Save failed:', errInfo); |
|
|
|
|
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
let childNode = children; |
|
|
|
let childNode = children; |
|
|
@ -112,9 +150,15 @@ export default function ControlApprovalsTable(props) { |
|
|
|
className='editable-input' |
|
|
|
className='editable-input' |
|
|
|
name={`${record.planAreaSno}_${dataIndex}`} // 고유한 이름 설정
|
|
|
|
name={`${record.planAreaSno}_${dataIndex}`} // 고유한 이름 설정
|
|
|
|
initialValue={record[dataIndex]} |
|
|
|
initialValue={record[dataIndex]} |
|
|
|
onClick={e => e.stopPropagation()} // 클릭 이벤트 전파 중지
|
|
|
|
|
|
|
|
> |
|
|
|
> |
|
|
|
<Input onPressEnter={save} onBlur={save} /> |
|
|
|
<Input |
|
|
|
|
|
|
|
onPressEnter={save} |
|
|
|
|
|
|
|
onBlur={e => { |
|
|
|
|
|
|
|
e.stopPropagation(); |
|
|
|
|
|
|
|
save(); |
|
|
|
|
|
|
|
}} |
|
|
|
|
|
|
|
onClick={e => e.stopPropagation()} |
|
|
|
|
|
|
|
/> |
|
|
|
</Form.Item> |
|
|
|
</Form.Item> |
|
|
|
); |
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
@ -122,6 +166,48 @@ export default function ControlApprovalsTable(props) { |
|
|
|
return <td {...restProps}>{childNode}</td>; |
|
|
|
return <td {...restProps}>{childNode}</td>; |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const handleCancel = () => { |
|
|
|
|
|
|
|
if (currentRow) { |
|
|
|
|
|
|
|
const { planAreaSno, dataIndex, originalValue } = currentRow; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 필드의 원래 값을 다시 설정
|
|
|
|
|
|
|
|
form.setFieldsValue({ |
|
|
|
|
|
|
|
[`${planAreaSno}_${dataIndex}`]: originalValue |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const handleSave = async row => { |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
const updateRes = await dispatch( |
|
|
|
|
|
|
|
updateLaancAprv([ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
planAreaSno: row.key, |
|
|
|
|
|
|
|
reqRadius: row[`${row.key}_reqRadius`] || '', |
|
|
|
|
|
|
|
fltElev: row[`${row.key}_fltElev`] || '', |
|
|
|
|
|
|
|
reqElev: row[`${row.key}_reqElev`] || '', |
|
|
|
|
|
|
|
dtl: row[`${row.key}_dtl`] || '', |
|
|
|
|
|
|
|
era: row[`${row.key}_era`] || '', |
|
|
|
|
|
|
|
rm: row[`${row.key}_rm`] || '' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
]) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (updateRes.meta.requestStatus === 'fulfilled') { |
|
|
|
|
|
|
|
props.handlerSearch( |
|
|
|
|
|
|
|
props.filterId, |
|
|
|
|
|
|
|
{ startDate: props.startDate, endDate: props.endDate }, |
|
|
|
|
|
|
|
props.filterArea |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
setEditingKey(''); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
handlerErrorModal(ERROR_TITLE, ERROR_MESSAGE, true); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} catch (errInfo) { |
|
|
|
|
|
|
|
handlerErrorModal(ERROR_TITLE, ERROR_MESSAGE, true); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
// 데이터
|
|
|
|
// 데이터
|
|
|
|
const columns = [ |
|
|
|
const columns = [ |
|
|
|
{ |
|
|
|
{ |
|
|
@ -483,48 +569,6 @@ export default function ControlApprovalsTable(props) { |
|
|
|
} |
|
|
|
} |
|
|
|
]; |
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
const handleIsModal = record => { |
|
|
|
|
|
|
|
dispatch( |
|
|
|
|
|
|
|
openModal({ |
|
|
|
|
|
|
|
header: '재검토 사유', |
|
|
|
|
|
|
|
body: record.reviewedReason, |
|
|
|
|
|
|
|
type: 'review' |
|
|
|
|
|
|
|
}) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
const handleSave = async row => { |
|
|
|
|
|
|
|
try { |
|
|
|
|
|
|
|
const updateRes = await dispatch( |
|
|
|
|
|
|
|
updateLaancAprv([ |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
planAreaSno: row.key, |
|
|
|
|
|
|
|
reqRadius: row[`${row.key}_reqRadius`] || '', |
|
|
|
|
|
|
|
fltElev: row[`${row.key}_fltElev`] || '', |
|
|
|
|
|
|
|
reqElev: row[`${row.key}_reqElev`] || '', |
|
|
|
|
|
|
|
dtl: row[`${row.key}_dtl`] || '', |
|
|
|
|
|
|
|
era: row[`${row.key}_era`] || '', |
|
|
|
|
|
|
|
rm: row[`${row.key}_rm`] || '' |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
]) |
|
|
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (updateRes.meta.requestStatus === 'fulfilled') { |
|
|
|
|
|
|
|
setEditingKey(''); |
|
|
|
|
|
|
|
// await dispatch(
|
|
|
|
|
|
|
|
// getLaancAprvList({
|
|
|
|
|
|
|
|
// searchStDt: props.startDate,
|
|
|
|
|
|
|
|
// searchEndDt: props.endDate
|
|
|
|
|
|
|
|
// })
|
|
|
|
|
|
|
|
// );
|
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
handlerErrorModal(ERROR_TITLE, ERROR_MESSAGE, true); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} catch (errInfo) { |
|
|
|
|
|
|
|
handlerErrorModal(ERROR_TITLE, ERROR_MESSAGE, true); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 테이블 데이터
|
|
|
|
// 테이블 데이터
|
|
|
|
const mergedColumns = columns.map(col => { |
|
|
|
const mergedColumns = columns.map(col => { |
|
|
|
if (!col.editable) { |
|
|
|
if (!col.editable) { |
|
|
@ -542,6 +586,7 @@ export default function ControlApprovalsTable(props) { |
|
|
|
}) |
|
|
|
}) |
|
|
|
}; |
|
|
|
}; |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
// 단순 메시지 표출 모달
|
|
|
|
// 단순 메시지 표출 모달
|
|
|
|
const handlerErrorModal = (header, body, isRefresh) => { |
|
|
|
const handlerErrorModal = (header, body, isRefresh) => { |
|
|
|
dispatch( |
|
|
|
dispatch( |
|
|
@ -629,8 +674,13 @@ export default function ControlApprovalsTable(props) { |
|
|
|
|
|
|
|
|
|
|
|
// 테이블 행 클릭 이벤트
|
|
|
|
// 테이블 행 클릭 이벤트
|
|
|
|
const handleRowClick = row => { |
|
|
|
const handleRowClick = row => { |
|
|
|
|
|
|
|
const activeElement = document.activeElement; |
|
|
|
|
|
|
|
if (activeElement && activeElement.tagName === 'INPUT') { |
|
|
|
|
|
|
|
activeElement.blur(); // 강제로 blur 이벤트를 발생시킴
|
|
|
|
|
|
|
|
} else { |
|
|
|
handlerOpenModal(row.approvalCd, row.fltElev, row.fltElevMax); |
|
|
|
handlerOpenModal(row.approvalCd, row.fltElev, row.fltElevMax); |
|
|
|
props.handlerDetail([row]); |
|
|
|
props.handlerDetail([row]); |
|
|
|
|
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
const handlePageChange = () => { |
|
|
|
const handlePageChange = () => { |
|
|
@ -947,6 +997,7 @@ export default function ControlApprovalsTable(props) { |
|
|
|
? updateReviewedType('P', currentPlanAreaSno) |
|
|
|
? updateReviewedType('P', currentPlanAreaSno) |
|
|
|
: handleSave(modal.row) |
|
|
|
: handleSave(modal.row) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
handleCancel={handleCancel} |
|
|
|
color='primary' |
|
|
|
color='primary' |
|
|
|
/> |
|
|
|
/> |
|
|
|
)} |
|
|
|
)} |
|
|
|