Browse Source

식별장치 - 사용자의 기체가 아니더라도 식별장치 등록 가능

pull/2/head
junh_eee(이준희) 2 years ago
parent
commit
ec1b3dfcfe
  1. 10
      src/components/basis/dron/BasisDronTab.js
  2. 8
      src/components/basis/dron/BasisIdntform.js
  3. 15
      src/containers/basis/dron/BasisDronDetailContainer.js
  4. 41
      src/containers/basis/dron/BasisIdntfContainer.js
  5. 1
      src/modules/basis/dron/models/basisDronModel.ts

10
src/components/basis/dron/BasisDronTab.js

@ -17,8 +17,10 @@ import { BasisIdntfContainer } from '../../../containers/basis/dron/BasisIdntfCo
export const BasisDronTab = props => { export const BasisDronTab = props => {
const [activeTab, setActiveTab] = useState('1'); const [activeTab, setActiveTab] = useState('1');
//본인이 등록한 기체가 아니면 true //내가 등록한 기체인가
const [isDisabled, setIsDisabled] = useState(false); const [isDisabled, setIsDisabled] = useState(false);
//내가 소속된 그룹의 기체인가
const [isMyGroup, setIsMyGroup] = useState(false);
const toggle = tab => { const toggle = tab => {
if (activeTab !== tab) setActiveTab(tab); if (activeTab !== tab) setActiveTab(tab);
@ -60,13 +62,15 @@ export const BasisDronTab = props => {
id={props.id} id={props.id}
isDisabled={isDisabled} isDisabled={isDisabled}
setIsDisabled={setIsDisabled} setIsDisabled={setIsDisabled}
isMyGroup={isMyGroup}
setIsMyGroup={setIsMyGroup}
/> />
</TabPane> </TabPane>
<TabPane tabId='2'> <TabPane tabId='2'>
<BasisIdntfContainer <BasisIdntfContainer
id={props.id} id={props.id}
isDisabled={isDisabled} isMyGroup={isMyGroup}
setIsDisabled={setIsDisabled} setIsMyGroup={setIsMyGroup}
/> />
</TabPane> </TabPane>
</TabContent> </TabContent>

8
src/components/basis/dron/BasisIdntform.js

@ -153,7 +153,9 @@ export const BasisIdntfForm = props => {
) )
} }
outline outline
disabled={props.isDisabled} {...(props.data[i].disabled !== undefined
? { disabled: false }
: { disabled: true })}
> >
<X size={14} className='mr-50' /> <X size={14} className='mr-50' />
<span>삭제</span> <span>삭제</span>
@ -173,7 +175,7 @@ export const BasisIdntfForm = props => {
color='primary' color='primary'
size='sm' size='sm'
onClick={props.addData} onClick={props.addData}
disabled={props.isDisabled} // disabled={props.isDisabled}
> >
+ 추가 + 추가
</Button.Ripple> </Button.Ripple>
@ -182,7 +184,7 @@ export const BasisIdntfForm = props => {
color='primary' color='primary'
size='sm' size='sm'
onClick={props.handlerSave} onClick={props.handlerSave}
disabled={props.isDisabled} // disabled={props.isDisabled}
> >
저장 저장
</Button.Ripple> </Button.Ripple>

15
src/containers/basis/dron/BasisDronDetailContainer.js

@ -12,6 +12,7 @@ import * as Actions from '../../../modules/basis/dron/actions/basisDronAction';
import { dronAPI } from '../../../modules/basis/dron/apis/basisDronApi'; import { dronAPI } from '../../../modules/basis/dron/apis/basisDronApi';
export const BasisDronDetailContainer = props => { export const BasisDronDetailContainer = props => {
const { joinList, groupList } = useSelector(state => state.groupState);
const { detail, selectData } = useSelector(state => state.dronState); const { detail, selectData } = useSelector(state => state.dronState);
const history = useHistory(); const history = useHistory();
const { user } = useSelector(state => state.authState); const { user } = useSelector(state => state.authState);
@ -125,11 +126,25 @@ export const BasisDronDetailContainer = props => {
if (user?.authId === 'SUPER') { if (user?.authId === 'SUPER') {
props.setIsDisabled(false); props.setIsDisabled(false);
} else if (user?.authId === 'ADMIN' || user?.authId === 'USER') { } else if (user?.authId === 'ADMIN' || user?.authId === 'USER') {
//내가 등록한 기체인지
if (detail?.createUserId != '') { if (detail?.createUserId != '') {
if (detail?.createUserId != user?.userId) { if (detail?.createUserId != user?.userId) {
props.setIsDisabled(true); props.setIsDisabled(true);
} }
} }
//내가 속한 그룹의 기체인지
if (groupList) {
groupList?.filter(prev => {
if (prev?.myGroupAuthCd) {
if (prev?.groupId === detail?.groupId) {
props.setIsMyGroup(true);
}
}
});
} else if (joinList) {
props.setIsMyGroup(true);
}
} }
} else { } else {
props.setIsDisabled(false); props.setIsDisabled(false);

41
src/containers/basis/dron/BasisIdntfContainer.js

@ -28,6 +28,9 @@ export const BasisIdntfContainer = props => {
const [idntDataList, setIdntfDataList] = useState([]); const [idntDataList, setIdntfDataList] = useState([]);
//내가 등록한 식별장치 목록
const [myIdntf, setMyIdntf] = useState([]);
useEffect(() => { useEffect(() => {
if (props.id) { if (props.id) {
handlerSearch(); handlerSearch();
@ -40,7 +43,37 @@ export const BasisIdntfContainer = props => {
listIdntf?.map(item => { listIdntf?.map(item => {
newArr.push({ ...item }); newArr.push({ ...item });
}); });
setIdntfDataList(listIdntf);
//내가 등록한 식별장치 목록
if (user?.authId === 'SUPER') {
// setIsDisabled(false);
} else if (user?.authId === 'ADMIN') {
if (props.isMyGroup) {
if (newArr.length > 0) {
newArr.filter(prev => {
if (user?.cstmrSno === prev.cstmrSno) {
prev.disabled = false;
setMyIdntf(r => [...r, prev]);
}
});
}
// else {
// console.log('식별장치 없음');
// }
}
} else if (user?.authId === 'USER') {
if (newArr.length > 0) {
newArr.filter(prev => {
if (user?.cstmrSno === prev.cstmrSno) {
prev.disabled = false;
setMyIdntf(r => [...r, prev]);
}
});
}
}
// setIdntfDataList(listIdntf);
setIdntfDataList(newArr);
}, [listIdntf]); }, [listIdntf]);
useEffect(() => { useEffect(() => {
@ -54,7 +87,8 @@ export const BasisIdntfContainer = props => {
if (detail?.createUserId != user?.userId) { if (detail?.createUserId != user?.userId) {
props.setIsDisabled(true); props.setIsDisabled(true);
} }
} if (user.authId === 'SUPER') { }
if (user.authId === 'SUPER') {
props.setIsDisabled(false); props.setIsDisabled(false);
} }
}, [detail]); }, [detail]);
@ -197,7 +231,8 @@ export const BasisIdntfContainer = props => {
deletaData={deletaData} deletaData={deletaData}
handlerSave={handlerCreate} handlerSave={handlerCreate}
handlerDelete={handlerDelete} handlerDelete={handlerDelete}
isDisabled={props.isDisabled} // isDisabled={props.isDisabled}
myIdntf={myIdntf}
/> />
<ErrorModal modal={modal} setModal={setModal} /> <ErrorModal modal={modal} setModal={setModal} />
</Col> </Col>

1
src/modules/basis/dron/models/basisDronModel.ts

@ -56,6 +56,7 @@ export interface IdntfData {
isSave: boolean; isSave: boolean;
updateDt: Date; updateDt: Date;
createDt: Date; createDt: Date;
cstmrSno: number;
} }
export const initDron = { export const initDron = {

Loading…
Cancel
Save