junh_eee(이준희)
8 months ago
17 changed files with 367 additions and 343 deletions
@ -1,14 +1,14 @@
|
||||
import axios from '../../utils/customAxiosUtil'; |
||||
|
||||
/** |
||||
* 변수명은 주어 + API로 작성한다. |
||||
* 변수명은 주체 + API로 작성한다. |
||||
* api는 Action 함수명과 동일하게 작성한다. |
||||
* 특별한 경우가 아니면 return은 즉시 해준다. |
||||
*/ |
||||
|
||||
export const sampleAPI = { |
||||
// 드론 목록 조회
|
||||
droneList: async () => { |
||||
getDroneList: async () => { |
||||
return await axios.get('api/bas/dron/list...'); |
||||
} |
||||
}; |
||||
|
@ -1,117 +0,0 @@
|
||||
import { AxiosError } from 'axios'; |
||||
import { createAsyncAction, ActionType, createAction } from 'typesafe-actions'; |
||||
|
||||
import { DronData, DronState, SelectData, IdntfData } from '../models'; |
||||
|
||||
//# 목록 조회
|
||||
const LIST_REQUEST = 'basis/dron/LIST_REQUEST'; |
||||
const LIST_SUCCESS = 'basis/dron/LIST_SUCCESS'; |
||||
const LIST_FAILURE = 'basis/dron/LIST_FAILURE'; |
||||
|
||||
//# 상세 조회
|
||||
const DETAIL_REQUEST = 'basis/dron/DETAIL_REQUEST'; |
||||
const DETAIL_SUCCESS = 'basis/dron/DETAIL_SUCCESS'; |
||||
const DETAIL_FAILURE = 'basis/dron/DETAIL_FAILURE'; |
||||
|
||||
//## 생성
|
||||
const CREATE_REQUEST = 'basis/dron/CREATE_REQUEST'; |
||||
const CREATE_SUCCESS = 'basis/dron/CREATE_SUCCESS'; |
||||
const CREATE_FAILURE = 'basis/dron/CREATE_FAILURE'; |
||||
|
||||
//## 수정
|
||||
const UPDATE_REQUEST = 'basis/dron/UPDATE_REQUEST'; |
||||
const UPDATE_SUCCESS = 'basis/dron/UPDATE_SUCCESS'; |
||||
const UPDATE_FAILURE = 'basis/dron/UPDATE_FAILURE'; |
||||
|
||||
//## 삭제
|
||||
const DELETE_REQUEST = 'basis/dron/DELETE_REQUEST'; |
||||
const DELETE_SUCCESS = 'basis/dron/DELETE_SUCCESS'; |
||||
const DELETE_FAILURE = 'basis/dron/DELETE_FAILURE'; |
||||
|
||||
//식별번호 목록 조회
|
||||
const IDNTF_LIST_REQUEST = 'basis/idntf/IDNTF_LIST_REQUEST'; |
||||
const IDNTF_LIST_SUCCESS = 'basis/idntf/IDNTF_LIST_SUCCESS'; |
||||
const IDNTF_LIST_FAILURE = 'basis/idntf/IDNTF_LIST_FAILURE'; |
||||
|
||||
const DISPATCH_RESET_IDNTF = 'basis/idntf/IDNTF_RESET'; |
||||
|
||||
//식별번호 생성
|
||||
|
||||
const IDNTF_CREATE_REQUEST = 'basis/idntf/IDNTF_CREATE_REQUEST'; |
||||
const IDNTF_CREATE_SUCCESS = 'basis/idntf/IDNTF_CREATE_SUCCESS'; |
||||
const IDNTF_CREATE_FAILURE = 'basis/idntf/IDNTF_CREATE_FAILURE'; |
||||
|
||||
//식별번호 삭제
|
||||
const IDNTF_DELETE_REQUEST = 'basis/idntf/IDNTF_DELETE_REQUEST'; |
||||
const IDNTF_DELETE_SUCCESS = 'basis/idntf/IDNTF_DELETE_SUCCESS'; |
||||
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 }, |
||||
AxiosError |
||||
>(); |
||||
|
||||
export const IDNTF_LIST = createAsyncAction( |
||||
IDNTF_LIST_REQUEST, |
||||
IDNTF_LIST_SUCCESS, |
||||
IDNTF_LIST_FAILURE |
||||
)<number, { data: IdntfData[]; count: number }, AxiosError>(); |
||||
|
||||
export const DETAIL = createAsyncAction( |
||||
DETAIL_REQUEST, |
||||
DETAIL_SUCCESS, |
||||
DETAIL_FAILURE |
||||
)<number, DronData, AxiosError>(); |
||||
|
||||
export const RESET_IDNTF = createAction(DISPATCH_RESET_IDNTF)(); |
||||
|
||||
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, |
||||
CREATE_SUCCESS, |
||||
CREATE_FAILURE |
||||
)<DronData, string, AxiosError>(); |
||||
|
||||
export const UPDATE = createAsyncAction( |
||||
UPDATE_REQUEST, |
||||
UPDATE_SUCCESS, |
||||
UPDATE_FAILURE |
||||
)<DronData, String, AxiosError>(); |
||||
|
||||
export const DELETE = createAsyncAction( |
||||
DELETE_REQUEST, |
||||
DELETE_SUCCESS, |
||||
DELETE_FAILURE |
||||
)<number, string, AxiosError>(); |
||||
|
||||
export const IDNTF_DELETE = createAsyncAction( |
||||
IDNTF_DELETE_REQUEST, |
||||
IDNTF_DELETE_SUCCESS, |
||||
IDNTF_DELETE_FAILURE |
||||
)<string, string, AxiosError>(); |
||||
|
||||
export const SELECT = createAction(SELECT_GROUP)<SelectData>(); |
||||
|
||||
const actions = { |
||||
LIST, |
||||
DETAIL, |
||||
CREATE, |
||||
UPDATE, |
||||
DELETE, |
||||
IDNTF_LIST, |
||||
IDNTF_CREATE, |
||||
IDNTF_DELETE, |
||||
RESET_IDNTF, |
||||
SELECT |
||||
}; |
||||
|
||||
export type DronAction = ActionType<typeof actions>; |
@ -1,55 +0,0 @@
|
||||
import { createReducer } from 'typesafe-actions'; |
||||
import produce from 'immer'; |
||||
|
||||
import * as Actions from '../actions'; |
||||
import { DronState, initDron } from '../models'; |
||||
|
||||
export const dronReducer = createReducer<DronState, Actions.DronAction>( |
||||
initDron |
||||
) |
||||
.handleAction(Actions.LIST.success, (state, action) => |
||||
produce(state, draft => { |
||||
const { data, count, total } = action.payload; |
||||
draft.list = data; |
||||
draft.count = count; |
||||
draft.total = total; |
||||
}) |
||||
) |
||||
.handleAction(Actions.IDNTF_LIST.success, (state, action) => |
||||
produce(state, draft => { |
||||
const { data, count } = action.payload; |
||||
draft.listIdntf = data; |
||||
draft.isRefreshIdntf = false; |
||||
draft.idntfCount = count; |
||||
}) |
||||
) |
||||
.handleAction(Actions.SELECT, (state, action) => |
||||
produce(state, draft => { |
||||
const selectData = action.payload; |
||||
draft.selectData = selectData; |
||||
}) |
||||
) |
||||
.handleAction(Actions.IDNTF_CREATE.success, (state, action) => |
||||
produce(state, draft => { |
||||
draft.isRefreshIdntf = true; |
||||
}) |
||||
) |
||||
.handleAction(Actions.IDNTF_DELETE.success, (state, action) => |
||||
produce(state, draft => { |
||||
draft.isRefreshIdntf = true; |
||||
}) |
||||
) |
||||
.handleAction(Actions.RESET_IDNTF, (state, action) => |
||||
produce(state, draft => { |
||||
draft.detail = undefined; |
||||
draft.listIdntf = undefined; |
||||
draft.isRefreshIdntf = false; |
||||
draft.idntfCount = 0; |
||||
}) |
||||
) |
||||
.handleAction(Actions.DETAIL.success, (state, action) => |
||||
produce(state, draft => { |
||||
const data = action.payload; |
||||
draft.detail = data; |
||||
}) |
||||
); |
@ -0,0 +1,132 @@
|
||||
import { AxiosError } from 'axios'; |
||||
import { createAsyncAction, ActionType, createAction } from 'typesafe-actions'; |
||||
|
||||
import { IDroneDetail, SelectData, IdntfData, IIdntfUpdateRq } from '../models'; |
||||
|
||||
// 드론 목록 조회
|
||||
const GET_DRONE_LIST_REQUEST = 'basis/drone/GET_DRONE_LIST_REQUEST'; |
||||
const GET_DRONE_LIST_SUCCESS = 'basis/drone/GET_DRONE_LIST_SUCCESS'; |
||||
const GET_DRONE_LIST_FAILURE = 'basis/drone/GET_DRONE_LIST_FAILURE'; |
||||
|
||||
// 드론 상세 조회
|
||||
const GET_DRONE_DETAIL_REQUEST = 'basis/drone/GET_DRONE_DETAIL_REQUEST'; |
||||
const GET_DRONE_DETAIL_SUCCESS = 'basis/drone/GET_DRONE_DETAIL_SUCCESS'; |
||||
const GET_DRONE_DETAIL_FAILURE = 'basis/drone/GET_DRONE_DETAIL_FAILURE'; |
||||
|
||||
// 드론 생성
|
||||
const CREATE_DRONE_REQUEST = 'basis/drone/CREATE_DRONE_REQUEST'; |
||||
const CREATE_DRONE_SUCCESS = 'basis/drone/CREATE_DRONE_SUCCESS'; |
||||
const CREATE_DRONE_FAILURE = 'basis/drone/CREATE_DRONE_FAILURE'; |
||||
|
||||
// 드론 수정
|
||||
const UPDATE_DRONE_REQUEST = 'basis/drone/UPDATE_DRONE_REQUEST'; |
||||
const UPDATE_DRONE_SUCCESS = 'basis/drone/UPDATE_DRONE_SUCCESS'; |
||||
const UPDATE_DRONE_FAILURE = 'basis/drone/UPDATE_DRONE_FAILURE'; |
||||
|
||||
// 드론 삭제
|
||||
const DELETE_DRONE_REQUEST = 'basis/drone/DELETE_DRONE_REQUEST'; |
||||
const DELETE_DRONE_SUCCESS = 'basis/drone/DELETE_DRONE_SUCCESS'; |
||||
const DELETE_DRONE_FAILURE = 'basis/drone/DELETE_DRONE_FAILURE'; |
||||
|
||||
// 식별장치 조회
|
||||
const GET_IDNTF_LIST_REQUEST = 'basis/idntf/GET_IDNTF_LIST_REQUEST'; |
||||
const GET_IDNTF_LIST_SUCCESS = 'basis/idntf/GET_IDNTF_LIST_SUCCESS'; |
||||
const GET_IDNTF_LIST_FAILURE = 'basis/idntf/GET_IDNTF_LIST_FAILURE'; |
||||
|
||||
// 식별장치 생성
|
||||
const CREATE_IDNTF_REQUEST = 'basis/idntf/CREATE_IDNTF_REQUEST'; |
||||
const CREATE_IDNTF_SUCCESS = 'basis/idntf/CREATE_IDNTF_SUCCESS'; |
||||
const CREATE_IDNTF_FAILURE = 'basis/idntf/CREATE_IDNTF_FAILURE'; |
||||
|
||||
// 식별장치 수정
|
||||
const UPDATE_IDNTF_REQUEST = 'basis/idntf/UPDATE_IDNTF_REQUEST'; |
||||
const UPDATE_IDNTF_SUCCESS = 'basis/idntf/UPDATE_IDNTF_SUCCESS'; |
||||
const UPDATE_IDNTF_FAILURE = 'basis/idntf/UPDATE_IDNTF_FAILURE'; |
||||
|
||||
//식별장치 삭제
|
||||
const DELETE_IDNTF_REQUEST = 'basis/idntf/DELETE_IDNTF_REQUEST'; |
||||
const DELETE_IDNTF_SUCCESS = 'basis/idntf/DELETE_IDNTF_SUCCESS'; |
||||
const DELETE_IDNTF_FAILURE = 'basis/idntf/DELETE_IDNTF_FAILURE'; |
||||
|
||||
// 드론 탭에서 그룹 선택
|
||||
const DISPATCH_SELECT_GROUP = 'basis/drone/SELECT_GROUP'; |
||||
|
||||
const DISPATCH_RESET_IDNTF = 'basis/idntf/IDNTF_RESET'; |
||||
|
||||
export const getDroneList = createAsyncAction( |
||||
GET_DRONE_LIST_REQUEST, |
||||
GET_DRONE_LIST_SUCCESS, |
||||
GET_DRONE_LIST_FAILURE |
||||
)<string, { data: IDroneDetail[]; total: number }, AxiosError>(); |
||||
|
||||
export const getDroneDetail = createAsyncAction( |
||||
GET_DRONE_DETAIL_REQUEST, |
||||
GET_DRONE_DETAIL_SUCCESS, |
||||
GET_DRONE_DETAIL_FAILURE |
||||
)<number, IDroneDetail, AxiosError>(); |
||||
|
||||
export const createDrone = createAsyncAction( |
||||
CREATE_DRONE_REQUEST, |
||||
CREATE_DRONE_SUCCESS, |
||||
CREATE_DRONE_FAILURE |
||||
)<IDroneDetail, string, AxiosError>(); |
||||
|
||||
export const updateDrone = createAsyncAction( |
||||
UPDATE_DRONE_REQUEST, |
||||
UPDATE_DRONE_SUCCESS, |
||||
UPDATE_DRONE_FAILURE |
||||
)<IDroneDetail, String, AxiosError>(); |
||||
|
||||
export const deleteDrone = createAsyncAction( |
||||
DELETE_DRONE_REQUEST, |
||||
DELETE_DRONE_SUCCESS, |
||||
DELETE_DRONE_FAILURE |
||||
)<number, string, AxiosError>(); |
||||
|
||||
export const getIdntfList = createAsyncAction( |
||||
GET_IDNTF_LIST_REQUEST, |
||||
GET_IDNTF_LIST_SUCCESS, |
||||
GET_IDNTF_LIST_FAILURE |
||||
)<number, { data: IdntfData[]; count: number }, AxiosError>(); |
||||
|
||||
export const createIdntf = createAsyncAction( |
||||
CREATE_IDNTF_REQUEST, |
||||
CREATE_IDNTF_SUCCESS, |
||||
CREATE_IDNTF_FAILURE |
||||
)<{ mode: string; data: IdntfData[]; arcrftSno: number }, string, AxiosError>(); |
||||
|
||||
export const updateIdntf = createAsyncAction( |
||||
UPDATE_IDNTF_REQUEST, |
||||
UPDATE_IDNTF_SUCCESS, |
||||
UPDATE_IDNTF_FAILURE |
||||
)< |
||||
{ mode: string; data: IIdntfUpdateRq[]; arcrftSno: number }, |
||||
string, |
||||
AxiosError |
||||
>(); |
||||
|
||||
export const deleteIdntf = createAsyncAction( |
||||
DELETE_IDNTF_REQUEST, |
||||
DELETE_IDNTF_SUCCESS, |
||||
DELETE_IDNTF_FAILURE |
||||
)<string, string, AxiosError>(); |
||||
|
||||
export const selectGroup = createAction(DISPATCH_SELECT_GROUP)<SelectData>(); |
||||
|
||||
export const resetIdntf = createAction(DISPATCH_RESET_IDNTF)(); |
||||
|
||||
const actions = { |
||||
getDroneList, |
||||
getDroneDetail, |
||||
createDrone, |
||||
updateDrone, |
||||
deleteDrone, |
||||
getIdntfList, |
||||
createIdntf, |
||||
updateIdntf, |
||||
deleteIdntf, |
||||
resetIdntf, |
||||
selectGroup |
||||
}; |
||||
|
||||
export type DronAction = ActionType<typeof actions>; |
@ -1,54 +1,54 @@
|
||||
import axios from '../../../utils/customAxiosUtil'; |
||||
import qs from 'qs'; |
||||
import { DronData } from '../models'; |
||||
import { IDroneDetail } from '../models'; |
||||
|
||||
export const dronAPI = { |
||||
// 드론 목록 조회
|
||||
list: async (data: string) => { |
||||
export const droneAPI = { |
||||
// 드론 목록
|
||||
droneList: async (data: string) => { |
||||
const queryString = qs.stringify(data, { |
||||
addQueryPrefix: true, |
||||
arrayFormat: 'repeat' |
||||
}); |
||||
return await axios.get(`api/bas/dron/list${queryString}`); |
||||
}, |
||||
// 식별장치 목록 조회
|
||||
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) => { |
||||
// 드론 상세
|
||||
droneDetail: async (id: number) => { |
||||
return await axios.get(`api/bas/dron/detail/${id}`); |
||||
}, |
||||
//드론 생성
|
||||
create: async (data: DronData) => { |
||||
// 드론 생성
|
||||
droneCreate: async (data: IDroneDetail) => { |
||||
return await axios.post('api/bas/dron/create', data); |
||||
}, |
||||
// 식별장치 생성
|
||||
idntfCreate: async (item: { data: any[]; arcrftSno: number }) => { |
||||
return await axios.post('api/bas/dron/idntf/create', item); |
||||
}, |
||||
// 드론 수정
|
||||
update: async (data: DronData) => { |
||||
droneUpdate: async (data: IDroneDetail) => { |
||||
return await axios.put('api/bas/dron/update', data); |
||||
}, |
||||
// 드론 삭제
|
||||
delete: async (id: number) => { |
||||
droneDelete: async (id: number) => { |
||||
return await axios.delete(`api/bas/dron/delete/${id}`); |
||||
}, |
||||
// 식별장치 목록
|
||||
idntfList: async (id: number) => { |
||||
return await axios.get(`api/bas/dron/idntf/list/${id}`); |
||||
}, |
||||
// 식별장치 생성
|
||||
idntfCreate: async (item: { data: any[]; arcrftSno: number }) => { |
||||
return await axios.post('api/bas/dron/idntf/create', item); |
||||
}, |
||||
// 식별장치 수정
|
||||
idntfUpdate: async (item: { data: any[]; arcrftSno: number }) => { |
||||
return await axios.put(`/api/bas/dron/idntf/update/${item.arcrftSno}`, { |
||||
idntfNum: item.data[0].idntfNum, |
||||
ownerNm: item.data[0].ownerNm, |
||||
hpno: item.data[0].hpno |
||||
}); |
||||
}, |
||||
// 식별장치 삭제
|
||||
idntfDelete: async (id: string) => { |
||||
return await axios.delete(`api/bas/dron/idntf/delete/${id}`); |
||||
}, |
||||
// 드론 이미지 업로드
|
||||
fileupload: async (file: any) => { |
||||
fileUpload: async (file: any) => { |
||||
let form = new FormData(); |
||||
form.append('file', file); |
||||
return await axios.post('api/file/upload', form); |
@ -0,0 +1,54 @@
|
||||
import { createReducer } from 'typesafe-actions'; |
||||
import produce from 'immer'; |
||||
|
||||
import * as Actions from '../actions'; |
||||
import { IDroneState, initialState } from '../models'; |
||||
|
||||
export const dronReducer = createReducer<IDroneState, Actions.DronAction>( |
||||
initialState |
||||
) |
||||
.handleAction(Actions.getDroneList.success, (state, action) => |
||||
produce(state, draft => { |
||||
const { data, total } = action.payload; |
||||
draft.droneList = data; |
||||
draft.droneTotal = total; |
||||
}) |
||||
) |
||||
.handleAction(Actions.getIdntfList.success, (state, action) => |
||||
produce(state, draft => { |
||||
const { data, count } = action.payload; |
||||
draft.idntfList = data; |
||||
draft.isRefreshIdntf = false; |
||||
draft.idntfCount = count; |
||||
}) |
||||
) |
||||
.handleAction(Actions.selectGroup, (state, action) => |
||||
produce(state, draft => { |
||||
const selectData = action.payload; |
||||
draft.selectGroup = selectData; |
||||
}) |
||||
) |
||||
.handleAction(Actions.createIdntf.success, (state, action) => |
||||
produce(state, draft => { |
||||
draft.isRefreshIdntf = true; |
||||
}) |
||||
) |
||||
.handleAction(Actions.deleteIdntf.success, (state, action) => |
||||
produce(state, draft => { |
||||
draft.isRefreshIdntf = true; |
||||
}) |
||||
) |
||||
.handleAction(Actions.resetIdntf, (state, action) => |
||||
produce(state, draft => { |
||||
draft.droneDetail = undefined; |
||||
draft.idntfList = undefined; |
||||
draft.isRefreshIdntf = false; |
||||
draft.idntfCount = 0; |
||||
}) |
||||
) |
||||
.handleAction(Actions.getDroneDetail.success, (state, action) => |
||||
produce(state, draft => { |
||||
const data = action.payload; |
||||
draft.droneDetail = data; |
||||
}) |
||||
); |
Loading…
Reference in new issue