diff --git a/src/components/basis/dron/BasisDronTab.js b/src/components/basis/dron/BasisDronTab.js index f69029f..094e75c 100644 --- a/src/components/basis/dron/BasisDronTab.js +++ b/src/components/basis/dron/BasisDronTab.js @@ -17,8 +17,10 @@ import { BasisIdntfContainer } from '../../../containers/basis/dron/BasisIdntfCo export const BasisDronTab = props => { const [activeTab, setActiveTab] = useState('1'); - //본인이 등록한 기체가 아니면 true + //내가 등록한 기체인가 const [isDisabled, setIsDisabled] = useState(false); + //내가 소속된 그룹의 기체인가 + const [isMyGroup, setIsMyGroup] = useState(false); const toggle = tab => { if (activeTab !== tab) setActiveTab(tab); @@ -60,13 +62,15 @@ export const BasisDronTab = props => { id={props.id} isDisabled={isDisabled} setIsDisabled={setIsDisabled} + isMyGroup={isMyGroup} + setIsMyGroup={setIsMyGroup} /> diff --git a/src/components/basis/dron/BasisIdntform.js b/src/components/basis/dron/BasisIdntform.js index 0f485d8..651a207 100644 --- a/src/components/basis/dron/BasisIdntform.js +++ b/src/components/basis/dron/BasisIdntform.js @@ -153,7 +153,9 @@ export const BasisIdntfForm = props => { ) } outline - disabled={props.isDisabled} + {...(props.data[i].disabled !== undefined + ? { disabled: false } + : { disabled: true })} > 삭제 @@ -173,7 +175,7 @@ export const BasisIdntfForm = props => { color='primary' size='sm' onClick={props.addData} - disabled={props.isDisabled} + // disabled={props.isDisabled} > + 추가 @@ -182,7 +184,7 @@ export const BasisIdntfForm = props => { color='primary' size='sm' onClick={props.handlerSave} - disabled={props.isDisabled} + // disabled={props.isDisabled} > 저장 diff --git a/src/containers/basis/dron/BasisDronDetailContainer.js b/src/containers/basis/dron/BasisDronDetailContainer.js index e2ecb91..c651d3e 100644 --- a/src/containers/basis/dron/BasisDronDetailContainer.js +++ b/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'; export const BasisDronDetailContainer = props => { + const { joinList, groupList } = useSelector(state => state.groupState); const { detail, selectData } = useSelector(state => state.dronState); const history = useHistory(); const { user } = useSelector(state => state.authState); @@ -125,11 +126,25 @@ export const BasisDronDetailContainer = props => { if (user?.authId === 'SUPER') { props.setIsDisabled(false); } else if (user?.authId === 'ADMIN' || user?.authId === 'USER') { + //내가 등록한 기체인지 if (detail?.createUserId != '') { if (detail?.createUserId != user?.userId) { 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 { props.setIsDisabled(false); diff --git a/src/containers/basis/dron/BasisIdntfContainer.js b/src/containers/basis/dron/BasisIdntfContainer.js index 1332edb..ab074f8 100644 --- a/src/containers/basis/dron/BasisIdntfContainer.js +++ b/src/containers/basis/dron/BasisIdntfContainer.js @@ -28,6 +28,9 @@ export const BasisIdntfContainer = props => { const [idntDataList, setIdntfDataList] = useState([]); + //내가 등록한 식별장치 목록 + const [myIdntf, setMyIdntf] = useState([]); + useEffect(() => { if (props.id) { handlerSearch(); @@ -40,7 +43,37 @@ export const BasisIdntfContainer = props => { listIdntf?.map(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]); useEffect(() => { @@ -54,7 +87,8 @@ export const BasisIdntfContainer = props => { if (detail?.createUserId != user?.userId) { props.setIsDisabled(true); } - } if (user.authId === 'SUPER') { + } + if (user.authId === 'SUPER') { props.setIsDisabled(false); } }, [detail]); @@ -197,7 +231,8 @@ export const BasisIdntfContainer = props => { deletaData={deletaData} handlerSave={handlerCreate} handlerDelete={handlerDelete} - isDisabled={props.isDisabled} + // isDisabled={props.isDisabled} + myIdntf={myIdntf} /> diff --git a/src/modules/basis/dron/models/basisDronModel.ts b/src/modules/basis/dron/models/basisDronModel.ts index c211987..7dc5895 100644 --- a/src/modules/basis/dron/models/basisDronModel.ts +++ b/src/modules/basis/dron/models/basisDronModel.ts @@ -56,6 +56,7 @@ export interface IdntfData { isSave: boolean; updateDt: Date; createDt: Date; + cstmrSno: number; } export const initDron = {