Browse Source

[권한정리] 비행계획목록

pull/2/head
junh_eee(이준희) 2 years ago
parent
commit
e53a98f4c4
  1. 35
      src/components/basis/flight/plan/FlightPlanGrid.js
  2. 2
      src/components/basis/flight/plan/FlightPlanGroupGrid.js
  3. 105
      src/components/basis/flight/plan/FlightPlanSearch.js
  4. 33
      src/containers/basis/flight/plan/FlightPlanContainer.js

35
src/components/basis/flight/plan/FlightPlanGrid.js

@ -5,7 +5,15 @@ import { Redirect } from 'react-router-dom';
import { Link, useHistory } from 'react-router-dom';
import { useSelector } from 'react-redux';
const FlightPlanGrid = ({ movePage, planListData, pagination, paginationPerPage, paginationRowsPerPageOptions }) => {
const FlightPlanGrid = ({
movePage,
planListData,
pagination,
paginationPerPage,
paginationRowsPerPageOptions,
isMyGroup,
user
}) => {
const { loading } = useSelector(state => state.loadingReducer);
const columns = [
{ id: 'planSno', name: '번호', cell: (row, i) => <div>{i + 1}</div> },
@ -36,10 +44,28 @@ const FlightPlanGrid = ({ movePage, planListData, pagination, paginationPerPage,
id: 'moveDetail',
name: '상세보기',
cell: row => {
let mine = false;
if (user.authId === 'SUPER') {
mine = true;
} else if (user.authId === 'ADMIN' || user.authId === 'USER') {
if (row.createUserId === user.userId) {
mine = true;
}
}
console.log(row.createUserId, user.userId);
return (
<>
{mine ? (
<>
<Link to={`/basis/flight/plan/detail/${row.planSno}`} size='sm'>
상세보기
</Link>
</>
) : (
<>-</>
)}
</>
);
}
}
@ -57,7 +83,12 @@ const FlightPlanGrid = ({ movePage, planListData, pagination, paginationPerPage,
</span>
</div>
<div className='d-flex align-items-center'>
<Button.Ripple color='primary' size='sm' onClick={movePage}>
<Button.Ripple
color='primary'
size='sm'
onClick={movePage}
{...(isMyGroup ? {} : { disabled: true })}
>
{/* 계획서 생성 */}
비행계획서 신청
</Button.Ripple>

2
src/components/basis/flight/plan/FlightPlanGroupGrid.js

@ -9,7 +9,7 @@ const FlightPlanGroupGrid = ({
handlerGroupCancel,
handleGroupSelect,
paginationRowsPerPageOptions,
pagination,
pagination
}) => {
const columns = [
{

105
src/components/basis/flight/plan/FlightPlanSearch.js

@ -4,73 +4,76 @@ import {Search} from 'react-feather';
import Flatpickr from 'react-flatpickr';
import moment from 'moment';
const FlightPlanSearch = ({searchData, handleChangeSearchData, handleSearch}) => {
const FlightPlanSearch = ({
searchData,
handleChangeSearchData,
handleSearch
}) => {
const { schFltStDt, schFltEndDt, aprvlYn } = searchData;
const initCheckState = {
'all': aprvlYn == 'A',
'yes': (aprvlYn == 'Y' || aprvlYn == 'A'),
'no': (aprvlYn == 'N' || aprvlYn == 'A'),
}
all: aprvlYn == 'A',
yes: aprvlYn == 'Y' || aprvlYn == 'A',
no: aprvlYn == 'N' || aprvlYn == 'A'
};
const [checkState, setCheckState] = useState(initCheckState);
const handleClickSearch = (e) => {
const handleClickSearch = e => {
handleSearch(searchData);
}
};
const handleChangeInput = (dates, value, config) => {
if (dates.length === 2) {
const schFltStDt = moment(dates[0]).format('YYYY-MM-DD HH:mm:ss');
const schFltEndDt = moment(dates[1]).set({'h': 23, 'm': 59, 's': 59}).format('YYYY-MM-DD HH:mm:ss');
handleChangeSearchData({schFltStDt, schFltEndDt})
const schFltEndDt = moment(dates[1])
.set({ h: 23, m: 59, s: 59 })
.format('YYYY-MM-DD HH:mm:ss');
handleChangeSearchData({ schFltStDt, schFltEndDt });
}
}
const handleChangeCheckbox = (e) => {
};
const handleChangeCheckbox = e => {
const { name, value, checked } = e.target;
let val;
switch (value) {
case 'A':
val = checked ? 'A' : '';
handleChangeSearchData({[name]: val})
handleChangeSearchData({ [name]: val });
setCheckState({
'all': checked,
'yes': checked,
'no': checked
})
all: checked,
yes: checked,
no: checked
});
break;
case 'Y':
if (checked && checkState.no) val = 'A'
else if (checked && !checkState.no) val = 'Y'
else if (!checked && checkState.no) val = 'N'
else if (!checked && !checkState.no) val = ''
handleChangeSearchData({[name]: val})
if (checked && checkState.no) val = 'A';
else if (checked && !checkState.no) val = 'Y';
else if (!checked && checkState.no) val = 'N';
else if (!checked && !checkState.no) val = '';
handleChangeSearchData({ [name]: val });
setCheckState(prevState => ({
'all': prevState.no && checked,
'yes': checked,
'no': prevState.no
}))
all: prevState.no && checked,
yes: checked,
no: prevState.no
}));
break;
case 'N':
if (checked && checkState.yes) val = 'A'
else if (checked && !checkState.yes) val = 'N'
else if (!checked && checkState.yes) val = 'Y'
else if (!checked && !checkState.yes) val = ''
handleChangeSearchData({[name]: val})
if (checked && checkState.yes) val = 'A';
else if (checked && !checkState.yes) val = 'N';
else if (!checked && checkState.yes) val = 'Y';
else if (!checked && !checkState.yes) val = '';
handleChangeSearchData({ [name]: val });
setCheckState(prevState => ({
'all': prevState.yes && checked,
'yes': prevState.yes,
'no': checked
}))
all: prevState.yes && checked,
yes: prevState.yes,
no: checked
}));
break;
default:
break;
}
}
};
return (
<div>
<Row>
<Col>
<div
className='cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>
<div className='mt-2 cont-ti d-flex justify-content-between align-items-sm-center align-items-start flex-sm-row'>
<div>
<h4>검색조건</h4>
</div>
@ -98,12 +101,9 @@ const FlightPlanSearch = ({searchData, handleChangeSearchData, handleSearch}) =>
<div className='d-flex align-items-center calendar-flat'>
<Flatpickr
id='searchDate'
value={[
schFltStDt,
schFltEndDt
]}
value={[schFltStDt, schFltEndDt]}
options={{
mode: 'range',
mode: 'range'
// defaultDate: [
// props.params.stDate,
// props.params.endDate
@ -129,8 +129,8 @@ const FlightPlanSearch = ({searchData, handleChangeSearchData, handleSearch}) =>
type='checkbox'
id='exampleCustomCheckbox'
label='전체'
name="aprvlYn"
value="A"
name='aprvlYn'
value='A'
// checked={true}
checked={checkState.all}
onChange={handleChangeCheckbox}
@ -140,8 +140,8 @@ const FlightPlanSearch = ({searchData, handleChangeSearchData, handleSearch}) =>
type='checkbox'
id='exampleCustomCheckbox2'
label='승인'
name="aprvlYn"
value="Y"
name='aprvlYn'
value='Y'
checked={checkState.yes}
onChange={handleChangeCheckbox}
/>
@ -150,8 +150,8 @@ const FlightPlanSearch = ({searchData, handleChangeSearchData, handleSearch}) =>
type='checkbox'
id='exampleCustomCheckbox3'
label='미승인'
name="aprvlYn"
value="N"
name='aprvlYn'
value='N'
checked={checkState.no}
onChange={handleChangeCheckbox}
/>
@ -162,11 +162,10 @@ const FlightPlanSearch = ({searchData, handleChangeSearchData, handleSearch}) =>
</dl>
</div>
</Card>
</Col>
</Row>
</div>
)
}
);
};
export default FlightPlanSearch;

33
src/containers/basis/flight/plan/FlightPlanContainer.js

@ -39,9 +39,10 @@ const FlightPlanContainer = () => {
state => state.groupState
);
const { user } = useSelector(state => state.authState, shallowEqual);
const [params, setParams] = useState({});
const [isMyGroup, setIsMyGroup] = useState();
const moveFlightPlanDetailPage = () => {
if (planDetailData) {
dispatch(FlightAction.FLIGHT_PLAN_DETAIL_INIT());
@ -91,6 +92,16 @@ const FlightPlanContainer = () => {
});
dispatch(FlightAction.FLIGHT_PLAN_LIST.request(param));
let my = false;
if (user.authId === 'SUPER') {
my = true;
} else if (user.authId === 'ADMIN' || user.authId === 'USER') {
if (groupAuthCd) {
my = true;
}
}
setIsMyGroup(my);
};
const handlerGroupCancel = () => {
@ -123,19 +134,8 @@ const FlightPlanContainer = () => {
return (
<CustomMainLayout title={'비행계획서 신청'}>
{/* <div className='pal-card-box'> */}
<div className='mt-2 pal-card-box'>
<div className='pal-card-box'>
<Row>
{/* <Col sm='4'>
<FlightPlanGroupGrid
data={joinList}
count={joinListCount}
selectGroup={selectGroup}
handleGroupSelect={handleGroupSelect}
handlerGroupCancel={handlerGroupCancel}
/>
</Col> */}
{/* <Col sm='4'> */}
<Col sm='12' lg='12'>
{user ? (
<>
@ -156,9 +156,7 @@ const FlightPlanContainer = () => {
) : (
<></>
)}
</Col>
{/* <Col sm='8'> */}
<Col sm='12' lg='12'>
{selectGroup.cstmrSno !== 0 ? (
<>
@ -173,12 +171,11 @@ const FlightPlanContainer = () => {
pagination={true}
paginationPerPage={10}
paginationRowsPerPageOptions={[10, 20, 30, 40]}
// handlerPageChange={handlerPageChange}
// columns={columns}
isMyGroup={isMyGroup}
user={user}
/>
</>
) : (
// <div className='no-dataTable'>
<div className='mt-2 no-dataTable'>
그룹 목록에서 상세보기를 클릭하세요.
</div>

Loading…
Cancel
Save