박현정 박현정 08-01
250801 박현정 메인화면-프로젝트 목록 조회 & 프로젝트 검색 기능 추가
@fd6a5325d569e0f90e524dc6058ad45194feea9a
client/views/pages/main/Main.vue
--- client/views/pages/main/Main.vue
+++ client/views/pages/main/Main.vue
@@ -6,7 +6,7 @@
                     <img src="../../../resources/img/content/ico_asset.svg" alt="">
                     <span>새로운 디지털 자산 생성</span>
                 </div>
-                <span><button class="btn-ico sm ico-plus"></button></span>
+                <span><button class="btn-ico sm ico-plus" @click="goToModelingCreate"></button></span>
             </div>
        </div>
        <div class="zone2-wrap" style="height: calc(100% - 115px);">
@@ -62,14 +62,15 @@
 import relativeTime from 'dayjs/plugin/relativeTime';
 import 'dayjs/locale/ko'; // 한국어 locale 불러오기
 import { findAllLogsProc } from '../../../resources/api/main';
+import { findAllProjectsProc } from '../../../resources/api/asset';
 
 export default {
     data() {
         return {
              assets: [
-                { id: 1, name: '디지털 자산 A', date: '2024-06-01', img: require('../../../resources/img/content/sample1.png') },
-                { id: 2, name: '디지털 자산 B', date: '2024-06-10', img: require('../../../resources/img/content/sample2.png') },
-                { id: 3, name: '디지털 자산 C', date: '2024-06-15', img: require('../../../resources/img/content/sample3.png') }
+                // { id: 1, name: '디지털 자산 A', date: '2024-06-01', img: require('../../../resources/img/content/sample1.png') },
+                // { id: 2, name: '디지털 자산 B', date: '2024-06-10', img: require('../../../resources/img/content/sample2.png') },
+                // { id: 3, name: '디지털 자산 C', date: '2024-06-15', img: require('../../../resources/img/content/sample3.png') }
             ],
             alarms: [
                 { id: 1, project: 'A', count: 2 },
@@ -106,7 +107,30 @@
                 // 프로젝트 생성 로그
             })
             .catch(error => {console.error('로그 목록 조회 실패: ', error);})
-        }
+        },
+        loadMainProjects() {
+          findAllProjectsProc({
+            memberId: this.getMemId,
+            isMain: 'Y' // 대표 프로젝트만 화면 목록에 뜨게 함.
+          })
+            .then(response => {
+              const projectList = response.data.result.projects;
+
+              this.assets = projectList.map(project => ({
+                id: project.projectId,
+                groupId: project.projectGroupId,
+                isMain: project.isMain,
+                name: project.projectName,
+                date: project.createdAt,
+                img: require('../../../resources/img/content/sample1.png'), // 백엔드 - 썸네일 기능 추가 후 수정
+                isFavorite: false // 백엔드 - 즐겨찾기 기능 추가 후 수정
+              }));
+            })
+            .catch(error => {console.error('자산 목록 조회 실패: ', error);})
+        },
+        goToModelingCreate() {
+          this.$router.push('/modeling.page');
+        },
     },
     watch: {},
     computed: {
@@ -121,6 +145,7 @@
     mounted() {
         console.log("사용자 아이디: " + this.getMemId + " 사용자 이름: " + this.getMemNm + " 사용자 로그인 아이디: " + this.getMemLoginId);
         this.loadLogs();
+        this.loadMainProjects();
     },
     beforeUnmount() {},
 };
client/views/pages/subPage/Asset.vue
--- client/views/pages/subPage/Asset.vue
+++ client/views/pages/subPage/Asset.vue
@@ -3,8 +3,8 @@
     <div class="top-zone mb30">
         <div class="search-zone" style="background-color: #dfe5f3;">
           <div style="position: relative;">
-            <input type="text" class="form-control sm" style="border: 0;" placeholder="제목을 입력해주세요">
-            <button class="btn-ico sm ico-after ico-sch"></button>
+            <input type="text" class="form-control sm" style="border: 0;" placeholder="제목을 입력해주세요" v-model="keyword">
+            <button class="btn-ico sm ico-after ico-sch" @click="searchProjects(keyword)"></button>
           </div>
         </div>
         <div class="layout center justify-end gap10">
@@ -25,13 +25,13 @@
       </div>
 
       <!-- v-for 카드 반복 -->
-      <div class="card" v-for="(project, index) in projects" :key="index" @click="goToModelingUpdate(project)">
-        <div class="thumbnail">
+      <div class="card" v-for="(project, index) in projects" :key="index">
+        <div class="thumbnail" @click="goToModelingUpdate(project)">
           <img :src="project.img" alt="" />
         </div>
         <div class="card-footer">
           <div class="w_100 layout center space-between">
-            <p class="title">{{ project.name }}</p>
+            <p class="title" @click="goToModelingUpdate(project)">{{ project.name }}</p>
             <div class="layout center">
               <button @click="toggleFavorite(index)">
                 <img
@@ -100,6 +100,7 @@
             openMenuIndex: null,
             dropdownDirection: 'right', // 또는 'left'
             // showPopup: false,
+            keyword: '', // 검색 키워드
 
         };
     },
@@ -145,10 +146,31 @@
             })
             .catch(error => {console.error('자산 목록 조회 실패: ', error);})
         },
+        searchProjects(keyword) {
+          findAllProjectsProc({
+            memberId: this.getMemId,
+            projectName: keyword,
+            isMain: 'Y' // 대표 프로젝트만 화면 목록에 뜨게 함.
+          })
+            .then(response => {
+              const projectList = response.data.result.projects;
+
+              this.projects = projectList.map(project => ({
+                id: project.projectId,
+                groupId: project.projectGroupId,
+                isMain: project.isMain,
+                name: project.projectName,
+                date: project.createdAt,
+                img: require('../../../resources/img/content/sample1.png'), // 백엔드 - 썸네일 기능 추가 후 수정
+                isFavorite: false // 백엔드 - 즐겨찾기 기능 추가 후 수정
+              }));
+            })
+            .catch(error => {console.error('프로젝트 검색 실패: ', error);})
+        },
         loadOldProjects() {
           findAllProjectsProc({
             memberId: this.getMemId,
-            projectGroupId: '',
+            projectGroupId: '', // 그룹 아이디 넣어야함
             isMain: 'N' // 이전 프로젝트만 목록에 뜨게 함.
           })
             .then(response => {
@@ -164,11 +186,9 @@
             .catch(error => {console.error('자산 목록 조회 실패: ', error);})
         },
         goToModelingCreate() {
-          console.log('모델링 페이지로 이동-생성');
           this.$router.push('/modeling.page');
         },
         goToModelingUpdate(project) {
-          console.log('모델링 페이지로 이동-수정');
           this.$router.push({ name: 'Modeling', query: {projectId: project.id}});
         },
         duplicateProject(projectId) {
Add a comment
List