diff --git a/src/components/basis/dron/BasisIdntform.js b/src/components/basis/dron/BasisIdntform.js index de98a8f9..2cbbb1b9 100644 --- a/src/components/basis/dron/BasisIdntform.js +++ b/src/components/basis/dron/BasisIdntform.js @@ -17,6 +17,7 @@ import { X } from 'react-feather'; import Repeater from '@components/repeater'; export const BasisIdntfForm = props => { + console.log(props.data); return ( @@ -81,7 +82,11 @@ export const BasisIdntfForm = props => { name={`idntfNum`} onChange={e => props.handlerInput(e, i)} value={props.data[i].idntfNum} - readOnly={props.data[i].isSave} + readOnly={ + props.mode === 'create' + ? props.data[i].isSave + : true + } bsSize='sm' > @@ -145,7 +150,7 @@ export const BasisIdntfForm = props => { > - + { 삭제 + + {props.data[i].isSave && ( + { + props.modifyData(); + }} + outline + {...(props.data[i].disabled === undefined + ? { disabled: false } + : props.data[i].disabled + ? { disabled: true } + : { disabled: false })} + > + 수정 + + )} + )} diff --git a/src/containers/basis/dron/BasisIdntfContainer.js b/src/containers/basis/dron/BasisIdntfContainer.js index dba9e579..c80ca5fd 100644 --- a/src/containers/basis/dron/BasisIdntfContainer.js +++ b/src/containers/basis/dron/BasisIdntfContainer.js @@ -7,6 +7,8 @@ import { ErrorModal } from '../../../components/modal/ErrorModal'; export const BasisIdntfContainer = props => { const dispatch = useDispatch(); + // 추가하고 저장인지, 수정하고 저장인지 판단 useState + const [mode, setMode] = useState('create'); // 식별장치 목록 (저장 이전 데이터 포함) const [idntDataList, setIdntfDataList] = useState([]); @@ -14,7 +16,7 @@ export const BasisIdntfContainer = props => { const { listIdntf, detail, isRefreshIdntf } = useSelector( state => state.dronState ); - console.log(listIdntf); + // 유저 정보 const { user } = useSelector(state => state.authState); @@ -157,6 +159,7 @@ export const BasisIdntfContainer = props => { saveArr; dispatch( Actions.IDNTF_CREATE.request({ + mode, arcrftSno: detail?.arcrftSno, data: saveArr.map(i => ({ ...i, @@ -174,8 +177,22 @@ export const BasisIdntfContainer = props => { } }; + const modifyData = () => { + setMode('update'); + setIdntfDataList([ + { + ...idntfData, + id: Math.random(), + idntfNum: idntDataList[0].idntfNum, + ownerNm: idntDataList[0].ownerNm, + hpno: idntDataList[0].hpno + } + ]); + }; + // 식별장치 추가 버튼 클릭 시 const addData = () => { + setMode('create'); setIdntfDataList([...idntDataList, { ...idntfData, id: Math.random() }]); }; @@ -219,9 +236,11 @@ export const BasisIdntfContainer = props => { count={idntDataList?.length} handlerInput={handlerInput} addData={addData} + modifyData={modifyData} deletaData={deletaData} handlerSave={handlerCreate} isMyGroup={props.isMyGroup} + mode={mode} /> diff --git a/src/modules/basis/dron/actions/basisDronAction.ts b/src/modules/basis/dron/actions/basisDronAction.ts index d964289f..209ab754 100644 --- a/src/modules/basis/dron/actions/basisDronAction.ts +++ b/src/modules/basis/dron/actions/basisDronAction.ts @@ -56,8 +56,8 @@ const IDNTF_DELETE_FAILURE = 'basis/idntf/IDNTF_DELETE_FAILURE'; const SELECT_GROUP = 'basis/dron/SELECT_GROUP'; export const LIST = createAsyncAction(LIST_REQUEST, LIST_SUCCESS, LIST_FAILURE)< -DronState, - { data: DronData[]; count: number,total: number }, + DronState, + { data: DronData[]; count: number; total: number }, AxiosError >(); @@ -79,7 +79,7 @@ export const IDNTF_CREATE = createAsyncAction( IDNTF_CREATE_REQUEST, IDNTF_CREATE_SUCCESS, IDNTF_CREATE_FAILURE -)(); +)<{ mode: string; data: IdntfData[]; arcrftSno: number }, string, AxiosError>(); export const CREATE = createAsyncAction( CREATE_REQUEST, diff --git a/src/modules/basis/dron/apis/basisDronApi.ts b/src/modules/basis/dron/apis/basisDronApi.ts index b2513727..5bfc2515 100644 --- a/src/modules/basis/dron/apis/basisDronApi.ts +++ b/src/modules/basis/dron/apis/basisDronApi.ts @@ -15,6 +15,13 @@ export const dronAPI = { idntfList: async (id: number) => { return await axios.get(`api/bas/dron/idntf/list/${id}`); }, + idntfUpdate: async (item: { id: number; data: any[] }) => { + return await axios.put(`/api/bas/dron/idntf/update/${item.id}`, { + idntfNum: item.data[0].idntfNum, + ownerNm: item.data[0].ownerNm, + hpno: item.data[0].hpno + }); + }, detail: async (id: number) => { return await axios.get(`api/bas/dron/detail/${id}`); @@ -28,8 +35,8 @@ export const dronAPI = { return res; }, - idntfCreate: async (data: IdntfData[]) => { - const res = await axios.post('api/bas/dron/idntf/create', data); + idntfCreate: async (item: { data: any[]; arcrftSno: number }) => { + const res = await axios.post('api/bas/dron/idntf/create', item); return res; }, diff --git a/src/modules/basis/dron/sagas/basisDronSaga.ts b/src/modules/basis/dron/sagas/basisDronSaga.ts index 962044ad..e313191f 100644 --- a/src/modules/basis/dron/sagas/basisDronSaga.ts +++ b/src/modules/basis/dron/sagas/basisDronSaga.ts @@ -148,8 +148,19 @@ function* createIdntfSaga( ) { try { const detail = action.payload; + let res; + if (detail.mode === 'update') { + res = yield call(Apis.dronAPI.idntfUpdate, { + data: detail.data, + id: detail.arcrftSno + }); + } else { + res = yield call(Apis.dronAPI.idntfCreate, { + data: detail.data, + arcrftSno: detail.arcrftSno + }); + } - const res = yield call(Apis.dronAPI.idntfCreate, detail); const { data } = res; if (data.result) {