|
@@ -10,12 +10,37 @@
|
|
|
<br />그 기술력을 입증받았습니다.
|
|
<br />그 기술력을 입증받았습니다.
|
|
|
</h2>
|
|
</h2>
|
|
|
</div>
|
|
</div>
|
|
|
- <div class="tab--wrap">
|
|
|
|
|
- <a @click="filterByCategory('all')" :class="{ active: selectedCategory === 'all' }" href="javascript:void(0)">전체</a>
|
|
|
|
|
- <a @click="filterByCategory('technology1')" :class="{ active: selectedCategory === 'technology1' }" href="javascript:void(0)">특허증</a>
|
|
|
|
|
- <a @click="filterByCategory('technology2')" :class="{ active: selectedCategory === 'technology2' }" href="javascript:void(0)">인증서</a>
|
|
|
|
|
- <a @click="filterByCategory('technology3')" :class="{ active: selectedCategory === 'technology3' }" href="javascript:void(0)">성적서</a>
|
|
|
|
|
- <a @click="filterByCategory('technology4')" :class="{ active: selectedCategory === 'technology4' }" href="javascript:void(0)">MSD&TDS</a>
|
|
|
|
|
|
|
+ <div class="tab--wrap patents">
|
|
|
|
|
+ <a
|
|
|
|
|
+ @click="filterByCategory('all')"
|
|
|
|
|
+ :class="{ active: selectedCategory === 'all' }"
|
|
|
|
|
+ href="javascript:void(0)"
|
|
|
|
|
+ >전체</a
|
|
|
|
|
+ >
|
|
|
|
|
+ <a
|
|
|
|
|
+ @click="filterByCategory('technology1')"
|
|
|
|
|
+ :class="{ active: selectedCategory === 'technology1' }"
|
|
|
|
|
+ href="javascript:void(0)"
|
|
|
|
|
+ >특허증</a
|
|
|
|
|
+ >
|
|
|
|
|
+ <a
|
|
|
|
|
+ @click="filterByCategory('technology2')"
|
|
|
|
|
+ :class="{ active: selectedCategory === 'technology2' }"
|
|
|
|
|
+ href="javascript:void(0)"
|
|
|
|
|
+ >인증서</a
|
|
|
|
|
+ >
|
|
|
|
|
+ <a
|
|
|
|
|
+ @click="filterByCategory('technology3')"
|
|
|
|
|
+ :class="{ active: selectedCategory === 'technology3' }"
|
|
|
|
|
+ href="javascript:void(0)"
|
|
|
|
|
+ >성적서</a
|
|
|
|
|
+ >
|
|
|
|
|
+ <a
|
|
|
|
|
+ @click="filterByCategory('technology4')"
|
|
|
|
|
+ :class="{ active: selectedCategory === 'technology4' }"
|
|
|
|
|
+ href="javascript:void(0)"
|
|
|
|
|
+ >MSD&TDS</a
|
|
|
|
|
+ >
|
|
|
</div>
|
|
</div>
|
|
|
<div class="patents--wrap">
|
|
<div class="patents--wrap">
|
|
|
<div class="patents--list">
|
|
<div class="patents--list">
|
|
@@ -39,6 +64,132 @@
|
|
|
</div>
|
|
</div>
|
|
|
</template>
|
|
</template>
|
|
|
</UModal>
|
|
</UModal>
|
|
|
|
|
+ <UModal
|
|
|
|
|
+ v-model:open="isModalOpen"
|
|
|
|
|
+ title="특허 / 인증 크게보기"
|
|
|
|
|
+ :close="false"
|
|
|
|
|
+ >
|
|
|
|
|
+ <UButton @click="openModal('/img/top_ban_technology.jpg')" class="patents">
|
|
|
|
|
+ <div class="img--wrap">
|
|
|
|
|
+ <img src="/img/top_ban_technology.jpg" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <h4>플라스틱 감축 소재 인증서</h4>
|
|
|
|
|
+ </UButton>
|
|
|
|
|
+ <template #content>
|
|
|
|
|
+ <UButton @click="isModalOpen = false" class="modal--close--btn"></UButton>
|
|
|
|
|
+ <div class="modal--img--container">
|
|
|
|
|
+ <img :src="selectedImage" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </UModal>
|
|
|
|
|
+ <UModal
|
|
|
|
|
+ v-model:open="isModalOpen"
|
|
|
|
|
+ title="특허 / 인증 크게보기"
|
|
|
|
|
+ :close="false"
|
|
|
|
|
+ >
|
|
|
|
|
+ <UButton @click="openModal('/img/top_ban_technology.jpg')" class="patents">
|
|
|
|
|
+ <div class="img--wrap">
|
|
|
|
|
+ <img src="/img/top_ban_technology.jpg" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <h4>플라스틱 감축 소재 인증서</h4>
|
|
|
|
|
+ </UButton>
|
|
|
|
|
+ <template #content>
|
|
|
|
|
+ <UButton @click="isModalOpen = false" class="modal--close--btn"></UButton>
|
|
|
|
|
+ <div class="modal--img--container">
|
|
|
|
|
+ <img :src="selectedImage" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </UModal>
|
|
|
|
|
+ <UModal
|
|
|
|
|
+ v-model:open="isModalOpen"
|
|
|
|
|
+ title="특허 / 인증 크게보기"
|
|
|
|
|
+ :close="false"
|
|
|
|
|
+ >
|
|
|
|
|
+ <UButton @click="openModal('/img/top_ban_technology.jpg')" class="patents">
|
|
|
|
|
+ <div class="img--wrap">
|
|
|
|
|
+ <img src="/img/top_ban_technology.jpg" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <h4>플라스틱 감축 소재 인증서</h4>
|
|
|
|
|
+ </UButton>
|
|
|
|
|
+ <template #content>
|
|
|
|
|
+ <UButton @click="isModalOpen = false" class="modal--close--btn"></UButton>
|
|
|
|
|
+ <div class="modal--img--container">
|
|
|
|
|
+ <img :src="selectedImage" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </UModal>
|
|
|
|
|
+ <UModal
|
|
|
|
|
+ v-model:open="isModalOpen"
|
|
|
|
|
+ title="특허 / 인증 크게보기"
|
|
|
|
|
+ :close="false"
|
|
|
|
|
+ >
|
|
|
|
|
+ <UButton @click="openModal('/img/top_ban_technology.jpg')" class="patents">
|
|
|
|
|
+ <div class="img--wrap">
|
|
|
|
|
+ <img src="/img/top_ban_technology.jpg" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <h4>플라스틱 감축 소재 인증서</h4>
|
|
|
|
|
+ </UButton>
|
|
|
|
|
+ <template #content>
|
|
|
|
|
+ <UButton @click="isModalOpen = false" class="modal--close--btn"></UButton>
|
|
|
|
|
+ <div class="modal--img--container">
|
|
|
|
|
+ <img :src="selectedImage" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </UModal>
|
|
|
|
|
+ <UModal
|
|
|
|
|
+ v-model:open="isModalOpen"
|
|
|
|
|
+ title="특허 / 인증 크게보기"
|
|
|
|
|
+ :close="false"
|
|
|
|
|
+ >
|
|
|
|
|
+ <UButton @click="openModal('/img/top_ban_technology.jpg')" class="patents">
|
|
|
|
|
+ <div class="img--wrap">
|
|
|
|
|
+ <img src="/img/top_ban_technology.jpg" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <h4>플라스틱 감축 소재 인증서</h4>
|
|
|
|
|
+ </UButton>
|
|
|
|
|
+ <template #content>
|
|
|
|
|
+ <UButton @click="isModalOpen = false" class="modal--close--btn"></UButton>
|
|
|
|
|
+ <div class="modal--img--container">
|
|
|
|
|
+ <img :src="selectedImage" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </UModal>
|
|
|
|
|
+ <UModal
|
|
|
|
|
+ v-model:open="isModalOpen"
|
|
|
|
|
+ title="특허 / 인증 크게보기"
|
|
|
|
|
+ :close="false"
|
|
|
|
|
+ >
|
|
|
|
|
+ <UButton @click="openModal('/img/top_ban_technology.jpg')" class="patents">
|
|
|
|
|
+ <div class="img--wrap">
|
|
|
|
|
+ <img src="/img/top_ban_technology.jpg" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <h4>플라스틱 감축 소재 인증서</h4>
|
|
|
|
|
+ </UButton>
|
|
|
|
|
+ <template #content>
|
|
|
|
|
+ <UButton @click="isModalOpen = false" class="modal--close--btn"></UButton>
|
|
|
|
|
+ <div class="modal--img--container">
|
|
|
|
|
+ <img :src="selectedImage" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </UModal>
|
|
|
|
|
+ <UModal
|
|
|
|
|
+ v-model:open="isModalOpen"
|
|
|
|
|
+ title="특허 / 인증 크게보기"
|
|
|
|
|
+ :close="false"
|
|
|
|
|
+ >
|
|
|
|
|
+ <UButton @click="openModal('/img/top_ban_technology.jpg')" class="patents">
|
|
|
|
|
+ <div class="img--wrap">
|
|
|
|
|
+ <img src="/img/top_ban_technology.jpg" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ <h4>플라스틱 감축 소재 인증서</h4>
|
|
|
|
|
+ </UButton>
|
|
|
|
|
+ <template #content>
|
|
|
|
|
+ <UButton @click="isModalOpen = false" class="modal--close--btn"></UButton>
|
|
|
|
|
+ <div class="modal--img--container">
|
|
|
|
|
+ <img :src="selectedImage" alt="" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </UModal>
|
|
|
</div>
|
|
</div>
|
|
|
<div class="pagination--wrap">
|
|
<div class="pagination--wrap">
|
|
|
<UButton
|
|
<UButton
|
|
@@ -77,7 +228,7 @@
|
|
|
const loading = ref(true);
|
|
const loading = ref(true);
|
|
|
const patentsData = ref([]);
|
|
const patentsData = ref([]);
|
|
|
const totalCount = ref(0);
|
|
const totalCount = ref(0);
|
|
|
- const selectedCategory = ref('all');
|
|
|
|
|
|
|
+ const selectedCategory = ref("all");
|
|
|
const allPatentsData = ref([]); // 전체 데이터 저장용
|
|
const allPatentsData = ref([]); // 전체 데이터 저장용
|
|
|
const navigation = ref([
|
|
const navigation = ref([
|
|
|
{
|
|
{
|
|
@@ -107,9 +258,9 @@
|
|
|
const fetchAllPatents = async () => {
|
|
const fetchAllPatents = async () => {
|
|
|
try {
|
|
try {
|
|
|
loading.value = true;
|
|
loading.value = true;
|
|
|
- const apis = ['technology1', 'technology2', 'technology3', 'technology4'];
|
|
|
|
|
|
|
+ const apis = ["technology1", "technology2", "technology3", "technology4"];
|
|
|
let allData = [];
|
|
let allData = [];
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
for (const api of apis) {
|
|
for (const api of apis) {
|
|
|
const response = await $postForm(`/board_list/${api}`, {
|
|
const response = await $postForm(`/board_list/${api}`, {
|
|
|
boardId: api,
|
|
boardId: api,
|
|
@@ -117,7 +268,7 @@
|
|
|
searchKind: "",
|
|
searchKind: "",
|
|
|
searchKeyword: "",
|
|
searchKeyword: "",
|
|
|
});
|
|
});
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
if (response && response.success && response.list) {
|
|
if (response && response.success && response.list) {
|
|
|
const categoryName = getCategoryName(api);
|
|
const categoryName = getCategoryName(api);
|
|
|
const categoryData = response.list.map((item, index) => ({
|
|
const categoryData = response.list.map((item, index) => ({
|
|
@@ -131,7 +282,7 @@
|
|
|
allData = [...allData, ...categoryData];
|
|
allData = [...allData, ...categoryData];
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
patentsData.value = allData;
|
|
patentsData.value = allData;
|
|
|
totalCount.value = allData.length;
|
|
totalCount.value = allData.length;
|
|
|
} catch (error) {
|
|
} catch (error) {
|
|
@@ -186,12 +337,12 @@
|
|
|
// 카테고리 이름 맵핑
|
|
// 카테고리 이름 맵핑
|
|
|
const getCategoryName = (apiName) => {
|
|
const getCategoryName = (apiName) => {
|
|
|
const categoryMap = {
|
|
const categoryMap = {
|
|
|
- 'technology1': '특허증',
|
|
|
|
|
- 'technology2': '인증서',
|
|
|
|
|
- 'technology3': '성적서',
|
|
|
|
|
- 'technology4': 'MSD&TDS'
|
|
|
|
|
|
|
+ technology1: "특허증",
|
|
|
|
|
+ technology2: "인증서",
|
|
|
|
|
+ technology3: "성적서",
|
|
|
|
|
+ technology4: "MSD&TDS",
|
|
|
};
|
|
};
|
|
|
- return categoryMap[apiName] || '기타';
|
|
|
|
|
|
|
+ return categoryMap[apiName] || "기타";
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
// 기본 더미 데이터 설정
|
|
// 기본 더미 데이터 설정
|
|
@@ -214,19 +365,19 @@
|
|
|
const filterByCategory = async (category) => {
|
|
const filterByCategory = async (category) => {
|
|
|
selectedCategory.value = category;
|
|
selectedCategory.value = category;
|
|
|
currentPage.value = 1;
|
|
currentPage.value = 1;
|
|
|
-
|
|
|
|
|
- if (category === 'all') {
|
|
|
|
|
|
|
+
|
|
|
|
|
+ if (category === "all") {
|
|
|
await fetchAllPatents();
|
|
await fetchAllPatents();
|
|
|
} else {
|
|
} else {
|
|
|
await fetchPatentsByCategory(category);
|
|
await fetchPatentsByCategory(category);
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- // 페이지네이션 로직
|
|
|
|
|
|
|
+ // 페이지네이션 로직
|
|
|
const currentPage = ref(1);
|
|
const currentPage = ref(1);
|
|
|
const itemsPerPage = 8;
|
|
const itemsPerPage = 8;
|
|
|
const backendPageSize = 20;
|
|
const backendPageSize = 20;
|
|
|
-
|
|
|
|
|
|
|
+
|
|
|
const totalPages = computed(() => Math.ceil(totalCount.value / itemsPerPage));
|
|
const totalPages = computed(() => Math.ceil(totalCount.value / itemsPerPage));
|
|
|
|
|
|
|
|
const paginatedPatents = computed(() => {
|
|
const paginatedPatents = computed(() => {
|
|
@@ -238,7 +389,9 @@
|
|
|
const needToFetchData = (targetPage) => {
|
|
const needToFetchData = (targetPage) => {
|
|
|
const startIndex = (targetPage - 1) * itemsPerPage;
|
|
const startIndex = (targetPage - 1) * itemsPerPage;
|
|
|
const endIndex = startIndex + itemsPerPage - 1;
|
|
const endIndex = startIndex + itemsPerPage - 1;
|
|
|
- return endIndex >= patentsData.value.length && patentsData.value.length < totalCount.value;
|
|
|
|
|
|
|
+ return (
|
|
|
|
|
+ endIndex >= patentsData.value.length && patentsData.value.length < totalCount.value
|
|
|
|
|
+ );
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const goToPage = (page) => {
|
|
const goToPage = (page) => {
|