diff --git a/src/assets/css/custom.css b/src/assets/css/custom.css index ee5deee..544795b 100644 --- a/src/assets/css/custom.css +++ b/src/assets/css/custom.css @@ -1037,11 +1037,11 @@ caption {overflow: hidden; line-height: 0;text-indent: -2000px;} .faq .tab-content{display:block;} .faq-admin-plus{font-size:1rem;margin-left:1rem;width:100%;max-width:300px;height:43px;line-height:1;padding:0;font-weight:500;background-color:#fff;} .faq .collapse-margin .card-header{border-radius:0px;} -.faq .collapse-margin .card{box-shadow:none!important;border-bottom:1px solid #ddd!important;border-radius:0px;} +.faq .collapse-margin .card{box-shadow:none!important;border-bottom:1px solid #ddd!important;border-radius:0px;margin-top:0;} .faq [class*='faq-icon-']{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:100%;color:#fff;font-weight:600;} .faq-icon-q{background:#ff9f43;margin-right:10px} .faq-icon-a{background:#28c76f;} -.faq-q{display:flex;justify-content:space-between;width:100%} +.faq-q{display:flex;justify-content:space-between;align-items: center;width:100%} .faq-q h5 .ti{font-weight:500;font-size:1.125rem;line-height:1.6} .faq-q h5 .ti span{font-weight:500;font-size:1.125rem;line-height:1.6;margin-right:4px} .faq .app-collapse .collapse-title{width:100%;} @@ -1052,4 +1052,26 @@ caption {overflow: hidden; line-height: 0;text-indent: -2000px;} .input-radio-inline{display:flex;height:34px;align-items: center;} .input-radio-inline label:hover{cursor: pointer;} .faq-textarea{resize:none;min-height:250px} -.faq-modal .modal-footer button{min-width:120px} \ No newline at end of file +.faq-modal .modal-footer button{min-width:120px} +.faq .my-faq .faq-q h5 .ti, .faq .my-faq .faq-q h5 .ti span{font-size:1rem} +.faq .my-faq .faq-q h5 .badge{margin-right:10px} +.faq .my-faq .app-collapse.card .card-header{padding:0.5em} +.faq .faq-q .date{margin:0 10px;font-size:1rem;font-weight:400;} +.faq .my-faq .collapse-margin .card{margin-top:0;} +.my-faq{max-height:650px;overflow:auto;} +.inquiry-btn{margin-top:1rem;text-align: center;} +.inquiry-btn button{min-width:450px;font-size:1rem;} + +.pal-form .form-group label{font-size:0.875rem;font-weight:500;} +.feedback-input{position: relative;} +.feedback{position:absolute;left:3px;font-size:0.75rem;word-break: keep-all;color:#ed1125} +.feedback p{line-height:1.6;padding-top:4px} +.pal-form .custom-file-input.pal:lang(en) ~ .custom-file-label::after{content: "찾아보기";display:flex;align-items:center;} +.pal-form .custom-file .custom-file-label{display:flex;align-items:center;color:#999;font-weight:300;} +.pal-form .custom-file.file-selected{position: relative;} +.pal-form .custom-file.file-selected label{color:#777;font-weight:400} +.pal-form .custom-file-control{position: absolute;top:20px;top: 10px;right: 100px;z-index: 999;transition: 0.5s ease;-webkit-transition: 0.5s ease;} +.pal-form .custom-file-control:hover{cursor: pointer;} +.pal-form .pal-form-btn{margin:1rem 0;text-align: right;} +.pal-form .pal-form-btn button{min-width:120px} +.pal-form .pal-form-btn button + button{margin-left:20px} \ No newline at end of file diff --git a/src/router/routes/RouterCstmrService.js b/src/router/routes/RouterCstmrService.js index 5874a22..0477998 100644 --- a/src/router/routes/RouterCstmrService.js +++ b/src/router/routes/RouterCstmrService.js @@ -16,6 +16,14 @@ const RouteSystem = [ { path: '/cstmrService/inquirywrite', component: lazy(() => import('../../views/cstmrService/InquiryWrite')) + }, + { + path: '/cstmrService/admininquirylist', + component: lazy(() => import('../../views/cstmrService/AdminInquiryList')) + }, + { + path: '/cstmrService/admininquirywrite', + component: lazy(() => import('../../views/cstmrService/AdminInquiryWrite')) } ]; diff --git a/src/views/cstmrService/AdminInquiryList.js b/src/views/cstmrService/AdminInquiryList.js new file mode 100644 index 0000000..d4214b2 --- /dev/null +++ b/src/views/cstmrService/AdminInquiryList.js @@ -0,0 +1,482 @@ +import '../../assets/css/custom.css'; +import '@styles/react/libs/flatpickr/flatpickr.scss'; +import '@styles/react/libs/tables/react-dataTable-component.scss'; +import { useState, useEffect } from 'react' +import { useParams, Link } from 'react-router-dom' +import { useSelector, useDispatch } from 'react-redux' +import { CustomMainLayout } from '../../components/layout/CustomMainLayout'; +import { + Card, + CardBody, + CardText, + Button, + ButtonGroup, + Input, + InputGroup, + InputGroupAddon, + InputGroupText, + Modal, + ModalHeader, + ModalBody, + ModalFooter, + Nav, + NavItem, + NavLink, + TabContent, + TabPane, + Row, + Col, + FormGroup, + Label, + CustomInput, + Badge +} from 'reactstrap'; + +import AppCollapse from '@components/app-collapse' +import Select from 'react-select' +import { selectThemeColors } from '@utils' +import classnames from 'classnames' + +import { Search, HelpCircle, Info } from 'react-feather'; + +const data = [ + { + title: ( +
+
+ 답변대기 + [불만]드론을 구매했는데 기체신고를 해야하나요? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + {/* br처리? 줄바꿈.. 추후에 생각 */} + 네 그렇습니다.

+ - 사용용도가 영리 목적인 경우 : 무게에 상관없이 모두 신고
+ - 사용용도가 비영리 목적인 경우
+ · (무인멀티콥터, 무인비행기, 무인헬리콥터) 최대이륙중량 2kg 초과 시 신고
+ · (무인비행선) 연료의 무게를 제외한 자체무게가 12kg 초과, 길이 7m 초과 시 신고
+
+
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + }, + { + title: ( +
+
+ 답변완료 + [문의]실내에서 비행할 때에도 비행승인을 받아야 할까? +
+
+ 수정하기 + 2022-02-02 +
+
+ ), + content: ( +
+ + 사방/천장이 막혀있는 밀폐된 실내 공간에서의 비행은 승인을 필요로 하지 않습니다. + 또한, 적절한 조명장치가 있는 실내 공간이라면 야간에도 비행이 가능합니다. 다면 어떠한 경우에도 인명과 재산에 위험을 초래할 우려가 없도록 주의하여 비행하여야 합니다. + +
+ ) + } +] +function AdminInquiryList() { + return <> + +
+
+ +
+
+ {/* 링크 연결 임시 하드코딩 */} + +
+
+
+ ; +} + +export default AdminInquiryList; diff --git a/src/views/cstmrService/AdminInquiryWrite.js b/src/views/cstmrService/AdminInquiryWrite.js new file mode 100644 index 0000000..7b085c5 --- /dev/null +++ b/src/views/cstmrService/AdminInquiryWrite.js @@ -0,0 +1,198 @@ +import '../../assets/css/custom.css'; +import '@styles/react/libs/flatpickr/flatpickr.scss'; +import '@styles/react/libs/tables/react-dataTable-component.scss'; +import { useState, useEffect, useRef } from 'react' +import { useParams, Link } from 'react-router-dom' +import { useSelector, useDispatch } from 'react-redux' +import { CustomMainLayout } from '../../components/layout/CustomMainLayout'; +import { + Card, + CardBody, + CardText, + Button, + ButtonGroup, + Input, + InputGroup, + InputGroupAddon, + InputGroupText, + Modal, + ModalHeader, + ModalBody, + ModalFooter, + Nav, + NavItem, + NavLink, + TabContent, + TabPane, + Row, + Col, + FormGroup, + Label, + CustomInput +} from 'reactstrap'; + +import AppCollapse from '@components/app-collapse' +import Select from 'react-select' +import { selectThemeColors } from '@utils' +import classnames from 'classnames' + +import { Search, HelpCircle, Info, X } from 'react-feather'; + + +function AdminInquiryWrite() { + const fileInputRef = useRef(null); + const [value, setValue] = useState('') + const [selectedFile, setSelectedFile] = useState(null); + + const handleFileChange = (event) => { + const file = event.target.files[0]; + setSelectedFile(file); + }; + + const handleFileClear = () => { + setSelectedFile(null); + }; + + return <> + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + setValue(e.target.value)} + /> + {/* 하단 필요없으면제거 */} + 300 + })} + > + {`${value.length}/300`} + + + + + + + +
+ + {/* 현재는 text만 바뀌는상태! input 초기화 작업해주세용 */} + {selectedFile && ( // Display the trash icon only if a file is selected + + + + )} + +
+ +
+ +
+
+ + + +
+
+
+ ; +} + +export default AdminInquiryWrite; diff --git a/src/views/cstmrService/FaqView.js b/src/views/cstmrService/FaqView.js index b31ad10..c4f821c 100644 --- a/src/views/cstmrService/FaqView.js +++ b/src/views/cstmrService/FaqView.js @@ -46,7 +46,9 @@ const data = [ Q [장치신고]드론을 구매했는데 기체신고를 해야하나요? - 수정하기 +
+ 수정하기 +
), content: ( @@ -70,7 +72,9 @@ const data = [ Q [비행승인]실내에서 비행할 때에도 비행승인을 받아야 할까? - 수정하기 +
+ 수정하기 +
), content: ( @@ -215,7 +219,10 @@ function FaqView() { - + + + ; } -export default InquiryView; +export default InquiryList; diff --git a/src/views/cstmrService/InquiryWrite.js b/src/views/cstmrService/InquiryWrite.js index d4fe16a..173f649 100644 --- a/src/views/cstmrService/InquiryWrite.js +++ b/src/views/cstmrService/InquiryWrite.js @@ -1,7 +1,7 @@ import '../../assets/css/custom.css'; import '@styles/react/libs/flatpickr/flatpickr.scss'; import '@styles/react/libs/tables/react-dataTable-component.scss'; -import { useState, useEffect } from 'react' +import { useState, useEffect, useRef } from 'react' import { useParams, Link } from 'react-router-dom' import { useSelector, useDispatch } from 'react-redux' import { CustomMainLayout } from '../../components/layout/CustomMainLayout'; @@ -36,15 +36,163 @@ import Select from 'react-select' import { selectThemeColors } from '@utils' import classnames from 'classnames' -import { Search, HelpCircle, Info } from 'react-feather'; +import { Search, HelpCircle, Info, X } from 'react-feather'; -function InquiryView() { +function InquiryWrite() { + const fileInputRef = useRef(null); + const [value, setValue] = useState('') + const [selectedFile, setSelectedFile] = useState(null); + + const handleFileChange = (event) => { + const file = event.target.files[0]; + setSelectedFile(file); + }; + + const handleFileClear = () => { + setSelectedFile(null); + }; + return <> - - dd + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + setValue(e.target.value)} + /> + {/* 하단 필요없으면제거 */} + 300 + })} + > + {`${value.length}/300`} + + + + + + + +
+ + {/* 현재는 text만 바뀌는상태! input 초기화 작업해주세용 */} + {selectedFile && ( // Display the trash icon only if a file is selected + + + + )} + +
+ +
+ +
+
+ + + +
+
; } -export default InquiryView; +export default InquiryWrite;