| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153 |
- <template>
- <main>
- <TopVisual :className="className" :title="title" :navigation="navigation" />
- <section class="notice--section">
- <div class="sub--container type2">
- <div class="title--wrap">
- <h2 class="title">FAQ</h2>
- </div>
- <div class="faq--wrap">
- <UAccordion :collapsible="false" :items="faqContent"></UAccordion>
- </div>
- </div>
- </section>
- </main>
- </template>
- <script setup>
- import { ref, onMounted } from "vue";
- import TopVisual from "~/components/topVisual.vue";
- const className = ref("contact");
- const title = ref("Contact");
- const navigation = ref([
- {
- name: "Contact",
- link: "/contact/faq",
- gnbList: [
- { name: "Company", link: "/company/intro" },
- { name: "Product", link: "/products/materials" },
- { name: "Technology", link: "/technology/facilities" },
- { name: "Media", link: "/media/news" },
- { name: "Contact", link: "/contact/notice" },
- ],
- },
- {
- name: "FAQ",
- link: "/contact/faq",
- gnbList: [
- { name: "공지사항", link: "/contact/notice" },
- { name: "FAQ", link: "/contact/faq" },
- { name: "고객센터", link: "/contact/support" },
- { name: "오시는길", link: "/contact/location" },
- ],
- },
- ]);
- const loading = ref(true);
- const faqContent = ref([]);
- // HTML 태그 제거 함수
- const stripHtmlTags = (html) => {
- if (!html) return "";
- const doc = new DOMParser().parseFromString(html, "text/html");
- return doc.body.textContent || "";
- };
- // API에서 FAQ 데이터 가져오기
- const fetchFaqList = async () => {
- try {
- loading.value = true;
- // 공지사항과 동일한 방식으로 호출
- const response = await $get(`/board_list/faq`, {
- page: 1,
- searchKind: "",
- searchKeyword: "",
- });
- // 백엔드가 JSON으로 응답하는지 확인
- if (response && typeof response === "object") {
- // JSON 응답인 경우
- if (response.success && response.list) {
- // console.log("받은 FAQ 데이터:", response.list);
- faqContent.value = response.list.map((item) => ({
- label: item.title,
- content: stripHtmlTags(item.contents),
- }));
- // console.log("변환된 FAQ 콘텐츠:", faqContent.value);
- } else {
- console.error("JSON 응답 형식이 올바르지 않습니다:", response);
- // 기본 더미 데이터 사용
- setDefaultFaqData();
- }
- } else if (typeof response === "string") {
- // HTML 응답인 경우 (백엔드에서 AJAX 감지 실패시)
- console.warn("HTML 응답을 받았습니다. AJAX 감지가 실패했을 수 있습니다.");
- console.log("HTML 내용:", response.substring(0, 200) + "...");
- // 기본 더미 데이터 사용
- setDefaultFaqData();
- } else {
- console.error("예상하지 못한 응답 형식:", typeof response, response);
- // 기본 더미 데이터 사용
- setDefaultFaqData();
- }
- } catch (error) {
- console.error("FAQ 데이터 로드 실패:", error);
- // 에러시 기본 더미 데이터 사용
- setDefaultFaqData();
- } finally {
- loading.value = false;
- }
- };
- // 기본 더미 데이터 설정
- const setDefaultFaqData = () => {
- faqContent.value = [
- {
- label: "바이오 플라스틱은 어떤 종류가 있어요?",
- content:
- "바이오플라스틱은 크게 생분해성 플라스틱(Biodegradable plastic), 바이오 베이스 플라스틱(Bio-based plastic), 그리고 산화생분해 플라스틱(Oxo-biodegradable plastic)으로 나뉩니다. 단 이 중 산화생분해 플라스틱은 최근에 마이크로플라스틱으로 분산될 뿐, 분해되지 않는다고 결론지어 친환경 플라스틱 종류에서 제외되었습니다.",
- },
- {
- label: "생분해성 플라스틱이란 무엇인가요?",
- content:
- "바이오플라스틱은 크게 생분해성 플라스틱(Biodegradable plastic), 바이오 베이스 플라스틱(Bio-based plastic), 그리고 산화생분해 플라스틱(Oxo-biodegradable plastic)으로 나뉩니다. 단 이 중 산화생분해 플라스틱은 최근에 마이크로플라스틱으로 분산될 뿐, 분해되지 않는다고 결론지어 친환경 플라스틱 종류에서 제외되었습니다.",
- },
- {
- label: "생분해성 플라스틱이 정말 친환경적인가요?",
- content:
- "바이오플라스틱은 크게 생분해성 플라스틱(Biodegradable plastic), 바이오 베이스 플라스틱(Bio-based plastic), 그리고 산화생분해 플라스틱(Oxo-biodegradable plastic)으로 나뉩니다. 단 이 중 산화생분해 플라스틱은 최근에 마이크로플라스틱으로 분산될 뿐, 분해되지 않는다고 결론지어 친환경 플라스틱 종류에서 제외되었습니다.",
- },
- {
- label: "제품마다 생분해 되는 시간이 다른가요?",
- content:
- "바이오플라스틱은 크게 생분해성 플라스틱(Biodegradable plastic), 바이오 베이스 플라스틱(Bio-based plastic), 그리고 산화생분해 플라스틱(Oxo-biodegradable plastic)으로 나뉩니다. 단 이 중 산화생분해 플라스틱은 최근에 마이크로플라스틱으로 분산될 뿐, 분해되지 않는다고 결론지어 친환경 플라스틱 종류에서 제외되었습니다.",
- },
- {
- label: "그린웨일글로벌 플라스틱은 어떻게 다르나요?",
- content:
- "바이오플라스틱은 크게 생분해성 플라스틱(Biodegradable plastic), 바이오 베이스 플라스틱(Bio-based plastic), 그리고 산화생분해 플라스틱(Oxo-biodegradable plastic)으로 나뉩니다. 단 이 중 산화생분해 플라스틱은 최근에 마이크로플라스틱으로 분산될 뿐, 분해되지 않는다고 결론지어 친환경 플라스틱 종류에서 제외되었습니다.",
- },
- {
- label: "카사바란 무엇인가요?",
- content:
- "바이오플라스틱은 크게 생분해성 플라스틱(Biodegradable plastic), 바이오 베이스 플라스틱(Bio-based plastic), 그리고 산화생분해 플라스틱(Oxo-biodegradable plastic)으로 나뉩니다. 단 이 중 산화생분해 플라스틱은 최근에 마이크로플라스틱으로 분산될 뿐, 분해되지 않는다고 결론지어 친환경 플라스틱 종류에서 제외되었습니다.",
- },
- {
- label: "정말 생분해되는지 어떻게 알 수 있나요?",
- content:
- "바이오플라스틱은 크게 생분해성 플라스틱(Biodegradable plastic), 바이오 베이스 플라스틱(Bio-based plastic), 그리고 산화생분해 플라스틱(Oxo-biodegradable plastic)으로 나뉩니다. 단 이 중 산화생분해 플라스틱은 최근에 마이크로플라스틱으로 분산될 뿐, 분해되지 않는다고 결론지어 친환경 플라스틱 종류에서 제외되었습니다.",
- },
- {
- label: "물에 젖거나 가열하면 부패하나요?",
- content:
- "바이오플라스틱은 크게 생분해성 플라스틱(Biodegradable plastic), 바이오 베이스 플라스틱(Bio-based plastic), 그리고 산화생분해 플라스틱(Oxo-biodegradable plastic)으로 나뉩니다. 단 이 중 산화생분해 플라스틱은 최근에 마이크로플라스틱으로 분산될 뿐, 분해되지 않는다고 결론지어 친환경 플라스틱 종류에서 제외되었습니다.",
- },
- ];
- };
- // 컴포넌트 마운트 시 데이터 로드
- onMounted(() => {
- fetchFaqList();
- });
- </script>
|