|
|
|
@ -1,7 +1,8 @@
|
|
|
|
|
import { useCallback, useState } from 'react'; |
|
|
|
|
import { useCallback, useEffect, useLayoutEffect, useState } from 'react'; |
|
|
|
|
import { useSelector, useDispatch } from 'react-redux'; |
|
|
|
|
import { Button, Nav, NavItem, NavLink, TabContent, TabPane } from 'reactstrap'; |
|
|
|
|
import AppCollapse from '@components/app-collapse'; |
|
|
|
|
import { LIST } from '../../../modules/cstmrService/faq/action'; |
|
|
|
|
import FaqSearchBox from '../../../components/cstmrService/faq/FaqSearchBox'; |
|
|
|
|
import FaqForm from '../../../components/cstmrService/faq/FaqForm'; |
|
|
|
|
|
|
|
|
@ -72,7 +73,7 @@ const data = [
|
|
|
|
|
|
|
|
|
|
export default function FaqContainer() { |
|
|
|
|
// ** States & Vars
|
|
|
|
|
const [activeTab, setActiveTab] = useState('1'); |
|
|
|
|
const [activeTab, setActiveTab] = useState('전체'); |
|
|
|
|
const { user } = useSelector(state => state.authState); |
|
|
|
|
const [searchText, setSearchText] = useState(''); |
|
|
|
|
|
|
|
|
@ -80,7 +81,23 @@ export default function FaqContainer() {
|
|
|
|
|
const toggle = tab => setActiveTab(tab); |
|
|
|
|
const [isOpenFormModal, setIsOpenFormModal] = useState(false); |
|
|
|
|
|
|
|
|
|
const handlerSearchText = useCallback( |
|
|
|
|
const dispatch = useDispatch(); |
|
|
|
|
const { faqList } = useSelector(state => state.faqState); |
|
|
|
|
|
|
|
|
|
useEffect(() => { |
|
|
|
|
handlerGetFaqList(); |
|
|
|
|
}, [activeTab]); |
|
|
|
|
|
|
|
|
|
const handlerGetFaqList = () => { |
|
|
|
|
dispatch( |
|
|
|
|
LIST.request({ |
|
|
|
|
category: activeTab, |
|
|
|
|
word: searchText |
|
|
|
|
}) |
|
|
|
|
); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const handlerChangeSearchText = useCallback( |
|
|
|
|
e => { |
|
|
|
|
const { value } = e.target; |
|
|
|
|
setSearchText(value); |
|
|
|
@ -88,17 +105,50 @@ export default function FaqContainer() {
|
|
|
|
|
[searchText] |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
const handlerEnterSearchText = () => { |
|
|
|
|
handlerGetFaqList(); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const handlerOpenFormModal = () => { |
|
|
|
|
setIsOpenFormModal(!isOpenFormModal); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
const handlerFaqList = () => { |
|
|
|
|
if (faqList?.length <= 0 || !faqList) return []; |
|
|
|
|
return faqList.map(i => { |
|
|
|
|
return { |
|
|
|
|
title: ( |
|
|
|
|
<div className='faq-q'> |
|
|
|
|
<h5> |
|
|
|
|
<span className='faq-icon-q'>Q</span> |
|
|
|
|
<span className='ti'> |
|
|
|
|
<span>[{i.category}]</span> |
|
|
|
|
{i.title} |
|
|
|
|
</span> |
|
|
|
|
</h5> |
|
|
|
|
<div> |
|
|
|
|
<Button.Ripple color='flat-primary'>수정하기</Button.Ripple> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|
), |
|
|
|
|
content: ( |
|
|
|
|
<div className='faq-a'> |
|
|
|
|
<span className='faq-icon-a'>A</span> |
|
|
|
|
<span className='faq-a-text'>{i.content}</span> |
|
|
|
|
</div> |
|
|
|
|
) |
|
|
|
|
}; |
|
|
|
|
}); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
return ( |
|
|
|
|
<div className='faq'> |
|
|
|
|
{/* 검색바 */} |
|
|
|
|
<div className='faq-search'> |
|
|
|
|
<FaqSearchBox |
|
|
|
|
searchText={searchText} |
|
|
|
|
handlerSearchText={handlerSearchText} |
|
|
|
|
handlerChangeSearchText={handlerChangeSearchText} |
|
|
|
|
handlerEnterSearchText={handlerEnterSearchText} |
|
|
|
|
/> |
|
|
|
|
{user?.authId !== 'USER' && ( |
|
|
|
|
<Button |
|
|
|
@ -117,32 +167,50 @@ export default function FaqContainer() {
|
|
|
|
|
<div className='tab-menu'> |
|
|
|
|
<Nav pills> |
|
|
|
|
<NavItem> |
|
|
|
|
<NavLink active={activeTab === '1'} onClick={() => toggle('1')}> |
|
|
|
|
<NavLink |
|
|
|
|
active={activeTab === '전체'} |
|
|
|
|
onClick={() => toggle('전체')} |
|
|
|
|
> |
|
|
|
|
<span className=''>전체</span> |
|
|
|
|
</NavLink> |
|
|
|
|
</NavItem> |
|
|
|
|
<NavItem> |
|
|
|
|
<NavLink active={activeTab === '2'} onClick={() => toggle('2')}> |
|
|
|
|
<NavLink |
|
|
|
|
active={activeTab === '장치신고'} |
|
|
|
|
onClick={() => toggle('장치신고')} |
|
|
|
|
> |
|
|
|
|
<span className=''>장치 신고</span> |
|
|
|
|
</NavLink> |
|
|
|
|
</NavItem> |
|
|
|
|
<NavItem> |
|
|
|
|
<NavLink active={activeTab === '3'} onClick={() => toggle('3')}> |
|
|
|
|
<NavLink |
|
|
|
|
active={activeTab === '사업등록'} |
|
|
|
|
onClick={() => toggle('사업등록')} |
|
|
|
|
> |
|
|
|
|
<span className=''>사업 등록</span> |
|
|
|
|
</NavLink> |
|
|
|
|
</NavItem> |
|
|
|
|
<NavItem> |
|
|
|
|
<NavLink active={activeTab === '4'} onClick={() => toggle('4')}> |
|
|
|
|
<NavLink |
|
|
|
|
active={activeTab === '비행승인'} |
|
|
|
|
onClick={() => toggle('비행승인')} |
|
|
|
|
> |
|
|
|
|
<span className=''>비행 승인</span> |
|
|
|
|
</NavLink> |
|
|
|
|
</NavItem> |
|
|
|
|
<NavItem> |
|
|
|
|
<NavLink active={activeTab === '5'} onClick={() => toggle('5')}> |
|
|
|
|
<NavLink |
|
|
|
|
active={activeTab === '항공촬영'} |
|
|
|
|
onClick={() => toggle('항공촬영')} |
|
|
|
|
> |
|
|
|
|
<span className=''>항공 촬영</span> |
|
|
|
|
</NavLink> |
|
|
|
|
</NavItem> |
|
|
|
|
<NavItem> |
|
|
|
|
<NavLink active={activeTab === '6'} onClick={() => toggle('6')}> |
|
|
|
|
<NavLink |
|
|
|
|
active={activeTab === '기타'} |
|
|
|
|
onClick={() => toggle('기타')} |
|
|
|
|
> |
|
|
|
|
<span className=''>기타</span> |
|
|
|
|
</NavLink> |
|
|
|
|
</NavItem> |
|
|
|
@ -150,16 +218,16 @@ export default function FaqContainer() {
|
|
|
|
|
</div> |
|
|
|
|
<div> |
|
|
|
|
<TabContent activeTab={activeTab}> |
|
|
|
|
<TabPane tabId='1'> |
|
|
|
|
<TabPane tabId={activeTab}> |
|
|
|
|
<div> |
|
|
|
|
<AppCollapse data={data} accordion type='margin' /> |
|
|
|
|
<AppCollapse data={handlerFaqList()} accordion type='margin' /> |
|
|
|
|
</div> |
|
|
|
|
</TabPane> |
|
|
|
|
<TabPane tabId='2'>장치신고</TabPane> |
|
|
|
|
{/* <TabPane tabId='2'>장치신고</TabPane> |
|
|
|
|
<TabPane tabId='3'>사업 등록</TabPane> |
|
|
|
|
<TabPane tabId='4'>비행 승인</TabPane> |
|
|
|
|
<TabPane tabId='5'>항공 촬영</TabPane> |
|
|
|
|
<TabPane tabId='6'>기타</TabPane> |
|
|
|
|
<TabPane tabId='6'>기타</TabPane> */} |
|
|
|
|
</TabContent> |
|
|
|
|
</div> |
|
|
|
|
</div> |
|
|
|
|