Browse Source

비행계획승인 권한별 제어 수정

pull/2/head
junh_eee(이준희) 2 years ago
parent
commit
f568021390
  1. 59
      src/components/basis/flight/aprv/FlightPlanAprvGroupGrid.js
  2. 190
      src/containers/basis/flight/aprv/FlightPlanAprvContainer.js

59
src/components/basis/flight/aprv/FlightPlanAprvGroupGrid.js

@ -2,64 +2,7 @@ import React from 'react';
import { GridDatabase } from '../../../crud/grid/GridDatatable'; import { GridDatabase } from '../../../crud/grid/GridDatatable';
import { Card, Button } from 'reactstrap'; import { Card, Button } from 'reactstrap';
const FlightPlanAprvGroupGrid = ({ const FlightPlanAprvGroupGrid = ({ data, count, columns }) => {
data,
count,
selectGroup,
handlerGroupCancel,
handleGroupSelect
}) => {
const columns = [
{
// id: 'groupNm',
name: '그룹 명',
selector: 'groupNm',
minWidth: '102px',
sortable: true,
cell: row => <div>{row.groupNm}</div>
// cell: row => {
// return row?.groupNm;
// }
},
{
// id: 'groupId',
name: '그룹 코드',
selector: 'groupId',
minWidth: '102px',
sortable: true,
cell: row => <div>{row.groupId}</div>
},
{
name: '',
sortable: true,
cell: row => {
return selectGroup?.groupId === row?.groupId ? (
<Button.Ripple
color='danger'
className='badge badge-danger'
onClick={() => handlerGroupCancel()}
>
선택취소
</Button.Ripple>
) : (
<Button.Ripple
color='primary'
className='badge badge-primary'
onClick={() => {
handleGroupSelect({
groupId: row?.groupId,
groupNm: row?.groupNm,
groupAuthCd: row?.groupAuthCd
});
}}
>
상세보기
</Button.Ripple>
);
}
}
];
return ( return (
<> <>
<div className='cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'> <div className='cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>

190
src/containers/basis/flight/aprv/FlightPlanAprvContainer.js

@ -44,34 +44,92 @@ const FlightPlanAprvContainer = () => {
color: '' color: ''
}); });
const columns = [
{
// id: 'groupNm',
name: '그룹 명',
selector: 'groupNm',
minWidth: '102px',
sortable: true,
cell: row => <div>{row.groupNm}</div>
// cell: row => {
// return row?.groupNm;
// }
},
{
// id: 'groupId',
name: '그룹 코드',
selector: 'groupId',
minWidth: '102px',
sortable: true,
cell: row => <div>{row.groupId}</div>
},
{
name: '',
sortable: true,
cell: row => {
return selectGroup?.groupId === row?.groupId ? (
<Button.Ripple
color='danger'
className='badge badge-danger'
onClick={() => handlerGroupCancel()}
>
선택취소
</Button.Ripple>
) : (
<Button.Ripple
color='primary'
className='badge badge-primary'
onClick={() => {
handleGroupSelect({
groupId: row?.groupId,
groupNm: row?.groupNm,
groupAuthCd: row?.groupAuthCd
});
}}
>
상세보기
</Button.Ripple>
);
}
}
];
const handleGroupSelect = ({ groupId, groupNm, groupAuthCd }) => { const handleGroupSelect = ({ groupId, groupNm, groupAuthCd }) => {
// 권한 상관 없이 모두 조회 가능
const param = searchData; const param = searchData;
param.cstmrSno = user.cstmrSno; param.cstmrSno = user.cstmrSno;
param.groupId = groupId; param.groupId = groupId;
if (groupAuthCd === 'CREATER' || groupAuthCd === 'ADMIN') {
dispatch(
FlightAction.FLIGHT_PLAN_GROUP_SELECT({
cstmrSno: user.cstmrSno,
groupId: groupId,
groupNm: groupNm
})
);
dispatch( // groupId sessionStorage에 보관 (1 브라우저 1 tab에만 유효)
FlightAction.FLIGHT_PLAN_GROUP_SELECT({ sessionStorage.setItem('groupId', groupId);
cstmrSno: user.cstmrSno, sessionStorage.setItem('cstmrSno', user.cstmrSno);
groupId: groupId,
groupNm: groupNm
})
);
// groupId sessionStorage에 보관 (1 브라우저 1 tab에만 유효)
sessionStorage.setItem('groupId', groupId);
sessionStorage.setItem('cstmrSno', user.cstmrSno);
setSearchData(prevState => {
return {
...prevState,
cstmrSno: user.cstmrSno,
groupId: groupId
};
});
dispatch(FlightAction.FLIGHT_PLAN_LIST.request(param)); setSearchData(prevState => {
return {
...prevState,
cstmrSno: user.cstmrSno,
groupId: groupId
};
});
dispatch(FlightAction.FLIGHT_PLAN_LIST.request(param));
} else {
setModal({
isOpen: true,
title: '권한 확인',
desc: '승인정보 확인을 위해서는 운영자 권한이 필요합니다. 운영자에게 권한을 부여받고 다시 시도해 주세요.',
color: 'info'
});
return;
}
}; };
const handlerGroupCancel = () => { const handlerGroupCancel = () => {
@ -88,50 +146,6 @@ const FlightPlanAprvContainer = () => {
history.push(`/basis/flight/plan/detail/${id}`); history.push(`/basis/flight/plan/detail/${id}`);
}; };
// const columns = [
// { id: 'planSno', name: '번호', cell: (row, i) => <div>{i + 1}</div> },
// {
// id: 'fltPurpose',
// name: '비행목적',
// cell: row => <div>{row.fltPurpose}</div>
// },
// {
// id: 'fltMethod',
// name: '비행방식',
// cell: row => {
// const displayName =
// (row.areaList &&
// row.areaList.length > 0 &&
// row.areaList[0].fltMethod) ||
// '-';
// return <div>{displayName}</div>;
// }
// },
// {
// id: 'schFltStDt',
// name: '출발일',
// cell: row => <div>{row.schFltStDt}</div>
// },
// { id: 'aprvlYn', name: '승인여부', cell: row => <div>{row.aprvlYn}</div> },
// {
// id: 'moveDetail',
// name: '상세보기',
// cell: row => {
// return (
// <Button.Ripple
// color='primary'
// size='sm'
// onClick={() => {
// handleMoveDetail(row.planSno);
// }}
// >
// 상세
// </Button.Ripple>
// );
// }
// }
// ];
// 최초 비행계획서 목록 조회 // 최초 비행계획서 목록 조회
useEffect(() => { useEffect(() => {
handlerGroupCancel(); handlerGroupCancel();
@ -174,7 +188,7 @@ const FlightPlanAprvContainer = () => {
isOpen: true, isOpen: true,
title: '비행 계획 승인', title: '비행 계획 승인',
desc: '비행계획서를 선택해 주세요.', desc: '비행계획서를 선택해 주세요.',
color: 'modal-danger' color: 'danger'
}); });
return; return;
} }
@ -190,32 +204,30 @@ const FlightPlanAprvContainer = () => {
<div className='pal-card-box'> <div className='pal-card-box'>
<Row> <Row>
{/* <Col sm='12'> {/* <Col sm='12'>
<FlightPlanAprvSearch <FlightPlanAprvSearch
searchData={searchData} searchData={searchData}
handleChangeSearchData={handleChangeSearchData} handleChangeSearchData={handleChangeSearchData}
handleSearch={handleSearch} handleSearch={handleSearch}
/> />
<FlightPlanAprvGrid <FlightPlanAprvGrid
data={aprvList} data={aprvList}
columns={columns} columns={columns}
handleChangeSelected={handleChangeSelected} handleChangeSelected={handleChangeSelected}
handleClickAprv={handleClickAprv} handleClickAprv={handleClickAprv}
/> />
<FlightPlanGrid <FlightPlanGrid
planListData={aprvList} planListData={aprvList}
handleMoveDetail={handleMoveDetail} handleMoveDetail={handleMoveDetail}
handleChangeSelected={handleChangeSelected} handleChangeSelected={handleChangeSelected}
handleClickAprv={handleClickAprv} handleClickAprv={handleClickAprv}
/> />
</Col> */} </Col> */}
<Col sm='4'> <Col sm='4'>
<FlightPlanAprvGroupGrid <FlightPlanAprvGroupGrid
data={joinList} data={joinList}
count={joinListCount} count={joinListCount}
selectGroup={selectGroup} columns={columns}
handleGroupSelect={handleGroupSelect}
handlerGroupCancel={handlerGroupCancel}
/> />
</Col> </Col>
<Col sm='8'> <Col sm='8'>
@ -249,7 +261,7 @@ const FlightPlanAprvContainer = () => {
<Modal <Modal
isOpen={modal.isOpen} isOpen={modal.isOpen}
toggle={() => setModal({ ...modal, isOpen: !modal.isOpen })} toggle={() => setModal({ ...modal, isOpen: !modal.isOpen })}
modalClassName={modal.color} modalClassName={'modal-' + `${modal.color}`}
className='modal-dialog-centered' className='modal-dialog-centered'
> >
<ModalHeader <ModalHeader
@ -260,7 +272,7 @@ const FlightPlanAprvContainer = () => {
<ModalBody>{modal.desc}</ModalBody> <ModalBody>{modal.desc}</ModalBody>
<ModalFooter> <ModalFooter>
<Button <Button
color='danger' color={modal.color}
onClick={() => setModal({ ...modal, isOpen: !modal.isOpen })} onClick={() => setModal({ ...modal, isOpen: !modal.isOpen })}
> >
확인 확인

Loading…
Cancel
Save