diff --git a/src/components/projectlist/ProjectList.vue b/src/components/projectlist/ProjectList.vue index 9157c79..0a8f549 100644 --- a/src/components/projectlist/ProjectList.vue +++ b/src/components/projectlist/ProjectList.vue @@ -7,11 +7,11 @@
-
+

등록된 프로젝트가 없습니다.

-
+
{ - const res = await $api.get('project/select', { - params: { - searchKeyword : searchText.value, - category : selectedYear.value, - }, - }); - projectList.value = res.data.data.projectList; -}; - // 검색 처리 const search = async (searchKeyword) => { searchText.value = searchKeyword.trim(); @@ -237,6 +227,10 @@ const selectedYear = computed(() => { return yearCategory.value.find(item => item.value === selectedCategory.value)?.label || null; }); +// 프로젝트 목록 조회 +const getProjectList = async () => { + await projectStore.getProjectList(searchText.value, selectedYear.value); +}; // 카테고리 변경 감지 watch(selectedCategory, async () => { @@ -250,6 +244,20 @@ const openCreateModal = () => { const closeCreateModal = () => { isCreateModalOpen.value = false; + resetCreateForm(); +}; + +const resetCreateForm = () => { + name.value = ''; + color.value = ''; + address.value = ''; + detailAddress.value = ''; + postcode.value = ''; + startDay.value = today; + endDay.value = ''; + description.value = ''; + nameAlert.value = false; + addressAlert.value = false; }; // 등록 :: 주소 업데이트 핸들러 @@ -283,7 +291,7 @@ const handleCreate = async () => { if (res.status === 200) { toastStore.onToast('프로젝트가 등록되었습니다.', 's'); closeCreateModal(); - location.reload(); + getProjectList(); } }); }; @@ -307,7 +315,7 @@ const allColors = computed(() => { // 변경된 내용 있는지 확인 const hasChanges = computed(() => { - const original = projectList.value.find(p => p.PROJCTSEQ === selectedProject.value.PROJCTSEQ); + const original = projectStore.projectList.find(p => p.PROJCTSEQ === selectedProject.value.PROJCTSEQ); if (!original) return false; return ( diff --git a/src/stores/useProjectStore.js b/src/stores/useProjectStore.js new file mode 100644 index 0000000..46d8b7a --- /dev/null +++ b/src/stores/useProjectStore.js @@ -0,0 +1,30 @@ +/* + 작성자 : 박지윤 + 작성일 : 2025-02-25 + 수정자 : + 수정일 : + 설명 : 프로젝트 목록 +*/ +import { defineStore } from 'pinia'; +import { ref } from 'vue'; +import $api from '@api'; + +export const useProjectStore = defineStore('project', () => { + const projectList = ref([]); + + const getProjectList = async (searchText, selectedYear) => { + try { + const res = await $api.get('project/select', { + params: { + searchKeyword: searchText, + category: selectedYear, + }, + }); + projectList.value = res.data.data.projectList; + } catch (error) { + console.error('프로젝트 목록 조회 실패:', error); + } + }; + + return { projectList, getProjectList }; +});