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) {