junh_eee(이준희)
8 months ago
10 changed files with 200 additions and 5 deletions
@ -0,0 +1,18 @@ |
|||||||
|
import { createSlice } from '@reduxjs/toolkit'; |
||||||
|
import { initDron } from './droneState'; |
||||||
|
import { getDroneList } from './droneThunk'; |
||||||
|
|
||||||
|
const droneSlice = createSlice({ |
||||||
|
name: 'droneSlice', |
||||||
|
initialState: initDron, |
||||||
|
reducers: {}, |
||||||
|
extraReducers: builder => { |
||||||
|
builder.addCase(getDroneList.fulfilled, (state, action) => { |
||||||
|
const data = action.payload; |
||||||
|
state.droneList = data.items; |
||||||
|
state.droneTotal = data.total; |
||||||
|
}); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
|
export const droneReducer2 = droneSlice.reducer; |
@ -0,0 +1,95 @@ |
|||||||
|
export const initDron: IDroneState = { |
||||||
|
droneList: undefined, |
||||||
|
droneTotal: 0, |
||||||
|
droneDetail: undefined, |
||||||
|
|
||||||
|
idntfList: undefined, |
||||||
|
idntfCount: 0, |
||||||
|
|
||||||
|
selectGroup: undefined, |
||||||
|
isRefreshIdntf: false, |
||||||
|
page: 1 |
||||||
|
}; |
||||||
|
|
||||||
|
export interface IDroneState { |
||||||
|
droneList: IDrone[] | undefined; |
||||||
|
droneTotal: number | 0; |
||||||
|
droneDetail: IDrone | undefined; |
||||||
|
|
||||||
|
idntfList: IIdntf[] | undefined; |
||||||
|
idntfCount: number | 0; |
||||||
|
|
||||||
|
selectGroup: ISelectGroup | undefined; |
||||||
|
isRefreshIdntf: boolean | false; |
||||||
|
page: number | 1; |
||||||
|
} |
||||||
|
|
||||||
|
export interface ISelectGroup { |
||||||
|
groupId: string; |
||||||
|
groupNm: string; |
||||||
|
} |
||||||
|
|
||||||
|
export interface IDrone { |
||||||
|
groupId: string; |
||||||
|
arcrftSno: number; |
||||||
|
arcrftHght: number; |
||||||
|
arcrftLngth: number; |
||||||
|
arcrftModelNm: string; |
||||||
|
arcrftTypeCd: string; |
||||||
|
arcrftWdth: number; |
||||||
|
arcrftWght: number; |
||||||
|
cameraYn: string; |
||||||
|
createDt: string; |
||||||
|
createUserId: string; |
||||||
|
insrncYn: string; |
||||||
|
prdctCmpnNm: string; |
||||||
|
prdctNum: string; |
||||||
|
takeoffWght: number; |
||||||
|
updateDt: string; |
||||||
|
updateUserId: string; |
||||||
|
wghtTypeCd: string; |
||||||
|
} |
||||||
|
|
||||||
|
export interface ICreateDroneRq { |
||||||
|
arcrftModelNm: string; |
||||||
|
arcrftTypeCd: string; |
||||||
|
cameraYn: string; |
||||||
|
createUserId: string; |
||||||
|
groupId: string; |
||||||
|
groupNm: string; |
||||||
|
imageUrl: string; |
||||||
|
insrncYn: string; |
||||||
|
prdctCmpnNm: string; |
||||||
|
prdctNum: string; |
||||||
|
updateUserId: string; |
||||||
|
wghtTypeCd: string; |
||||||
|
} |
||||||
|
|
||||||
|
export interface IUpdateDroneRq extends ICreateDroneRq { |
||||||
|
arcrftSno: number; |
||||||
|
} |
||||||
|
|
||||||
|
export interface IIdntf { |
||||||
|
idntfNum: string; |
||||||
|
arcrftSno: number; |
||||||
|
idntfTypeCd: string; |
||||||
|
ownerNm: string; |
||||||
|
hpno: string; |
||||||
|
updateDt: string; |
||||||
|
createDt: string; |
||||||
|
cstmrSno: number; |
||||||
|
groupId: string; |
||||||
|
} |
||||||
|
|
||||||
|
export interface ICreateIdntfRq { |
||||||
|
idntfNum: string; |
||||||
|
idntfTypeCd: string; |
||||||
|
ownerNm: string; |
||||||
|
hpno: string; |
||||||
|
} |
||||||
|
|
||||||
|
export interface IUpdateIdntfRq { |
||||||
|
idntfNum: string; |
||||||
|
ownerNm: string; |
||||||
|
hpno: string; |
||||||
|
} |
@ -0,0 +1,21 @@ |
|||||||
|
import axios from '../../../../modules/utils/customAxiosUtil'; |
||||||
|
import qs from 'qs'; |
||||||
|
|
||||||
|
import { createAsyncThunk } from '@reduxjs/toolkit'; |
||||||
|
|
||||||
|
// 드론 목록 조회
|
||||||
|
export const getDroneList = createAsyncThunk( |
||||||
|
'basis/getDroneList', |
||||||
|
async (data: any) => { |
||||||
|
try { |
||||||
|
const queryString = qs.stringify(data, { |
||||||
|
addQueryPrefix: true, |
||||||
|
arrayFormat: 'repeat' |
||||||
|
}); |
||||||
|
const res = await axios.get(`api/bas/dron/list${queryString}`); |
||||||
|
return res.data; |
||||||
|
} catch (error) { |
||||||
|
console.error(error); |
||||||
|
} |
||||||
|
} |
||||||
|
); |
@ -0,0 +1,11 @@ |
|||||||
|
import { combineReducers } from '@reduxjs/toolkit'; |
||||||
|
import { droneReducer2 } from './features/basis/drone/droneSlice'; |
||||||
|
|
||||||
|
const rootReducer = (state: any, action: any) => { |
||||||
|
const combineReducer = combineReducers({ |
||||||
|
drone: droneReducer2 |
||||||
|
}); |
||||||
|
|
||||||
|
return combineReducer(state, action); |
||||||
|
}; |
||||||
|
export default rootReducer; |
@ -0,0 +1,17 @@ |
|||||||
|
import { configureStore } from '@reduxjs/toolkit'; |
||||||
|
import rootReducer from './rootReducer'; |
||||||
|
import { |
||||||
|
TypedUseSelectorHook, |
||||||
|
useDispatch as useDispatchs, |
||||||
|
useSelector as useSelectors |
||||||
|
} from 'react-redux'; |
||||||
|
|
||||||
|
export const store = configureStore({ |
||||||
|
reducer: rootReducer |
||||||
|
}); |
||||||
|
|
||||||
|
export type RootState = ReturnType<typeof rootReducer>; |
||||||
|
export const useSelector: TypedUseSelectorHook<RootState> = useSelectors; |
||||||
|
|
||||||
|
type AppDispatch = typeof store.dispatch; |
||||||
|
export const useDispatch = () => useDispatchs<AppDispatch>(); |
Loading…
Reference in new issue