박현정 박현정 07-24
250724 박현정 피드백 채팅 조회
@a6b994d054bce56376e70c14654db48751e968d3
client/resources/api/feedback.js
--- client/resources/api/feedback.js
+++ client/resources/api/feedback.js
@@ -9,3 +9,8 @@
 export const checkFeedbackProc = (feedbackId, data) => {
     return apiClient.post(`/feedback/${feedbackId}/checkFeedback.json`, data);
 }
+
+// 피드백 채팅 조회 기능
+export const findAllChatMsgsProc = (chatRoomId, data) => {
+    return apiClient.post(`/chat/${chatRoomId}/findAllChatMsgs.json`, data);
+}
(파일 끝에 줄바꿈 문자 없음)
client/views/pages/subPage/FeedBack.vue
--- client/views/pages/subPage/FeedBack.vue
+++ client/views/pages/subPage/FeedBack.vue
@@ -28,10 +28,12 @@
                     </div>
                     <div class="btn-group" v-if="feedback.status === 'unread'">
                         <button class="btn sm purple" @click="markAsRead(feedback.id)">확인</button>
-                        <button class="btn sm black" @click="replyTo(feedback)">회신</button>
+                        <!-- <button class="btn sm black" @click="replyTo(feedback)">회신</button> -->
+                        <button class="btn sm black" @click="loadFeedbackChatList(feedback.chatRoomId, feedback)">회신</button>
                     </div>
                     <div class="btn-group" v-else>
-                        <button class="btn sm primary" @click="replyTo(feedback)">확인됨</button>
+                        <!-- <button class="btn sm primary" @click="replyTo(feedback)">확인됨</button> -->
+                        <button class="btn sm primary" @click="loadFeedbackChatList(feedback.chatRoomId, feedback)">확인됨</button>
                     </div>
                 </div>
             </div>
@@ -47,14 +49,14 @@
                     <h3 class="project-name">{{ selectedFeedback.project }}</h3><span style="font-weight: 700;"> feedback message</span>
                 </div>
                 <ul >
-                    <li v-for="feedback in feedbacDetailkList" :key="feedback.id">
+                    <li v-for="chat in feedbackChatList" :key="chat.id">
                         <div class="layout center space-between">
-                            <strong><img src="../../../resources/img/content/ico_feeduser.svg" alt="" style="vertical-align: middle;"> {{ feedback.name }}</strong> 
+                            <strong><img src="../../../resources/img/content/ico_feeduser.svg" alt="" style="vertical-align: middle;"> {{ chat.user }}</strong> 
                            <div class="right-content">
-                             <p>{{ feedback.content }}</p>
+                             <p>{{ chat.content }}</p>
                            </div>
                         </div>
-                       <p style="text-align: right;">  <span>{{ feedback.date }} </span><span><img src="../../../resources/img/content/ico_clock.svg" alt="" style="vertical-align: middle;"> {{ feedback.time }}</span></p>
+                       <p style="text-align: right;">  <span>{{ chat.date }} </span><span><img src="../../../resources/img/content/ico_clock.svg" alt="" style="vertical-align: middle;"> {{ chat.time }}</span></p>
                     </li>
                 </ul>
                 <div style="position: relative;">
@@ -73,10 +75,13 @@
 
 <script>
 import { mapGetters } from 'vuex';
-import { checkFeedbackProc, findAllFeedbacksProc } from '../../../resources/api/feedback';
+import { checkFeedbackProc, findAllChatMsgsProc, findAllFeedbacksProc } from '../../../resources/api/feedback';
 import dayjs from 'dayjs';
 import relativeTime from 'dayjs/plugin/relativeTime';
+import 'dayjs/locale/ko'; // 한국어 locale 불러오기
+
 dayjs.extend(relativeTime);
+dayjs.locale('ko');
 
 export default {
     data() {
@@ -114,47 +119,47 @@
             },
             selectedFeedback: null,     // 회신용
             replyingFeedbackId: null,   // 회신 폼 표시용
-            feedbacDetailkList: [
-                {
-                    id: 1,
-                    name: '홍길동',
-                    content: '교육 내용이 이해하기 쉬웠습니다.',
-                    date: '2025-06-24',
-                    time: '14:30',
-                    status: '미확인'
-                },
-                {
-                    id: 2,
-                    name: '김영희',
-                    content: '실습 예제가 더 많았으면 좋겠습니다.',
-                    date: '2025-06-23',
-                    time: '10:15',
-                    status: '확인'
-                },
-                {
-                    id: 3,
-                    name: '박철수',
-                    content: '강사님 설명이 친절해서 좋았습니다.',
-                    date: '2025-06-22',
-                    time: '16:45',
-                    status: '회신완료'
-                },
-                {
-                    id: 4,
-                    name: '이민정',
-                    content: '온라인 자료 접근이 어려웠어요.',
-                    date: '2025-06-21',
-                    time: '09:05',
-                    status: '미확인'
-                },
-                {
-                    id: 5,
-                    name: '최현우',
-                    content: '교육 시간이 너무 짧은 것 같아요.',
-                    date: '2025-06-20',
-                    time: '13:20',
-                    status: '확인'
-                }
+            feedbackChatList: [
+                // {
+                //     id: 1,
+                //     name: '홍길동',
+                //     content: '교육 내용이 이해하기 쉬웠습니다.',
+                //     date: '2025-06-24',
+                //     time: '14:30',
+                //     status: '미확인'
+                // },
+                // {
+                //     id: 2,
+                //     name: '김영희',
+                //     content: '실습 예제가 더 많았으면 좋겠습니다.',
+                //     date: '2025-06-23',
+                //     time: '10:15',
+                //     status: '확인'
+                // },
+                // {
+                //     id: 3,
+                //     name: '박철수',
+                //     content: '강사님 설명이 친절해서 좋았습니다.',
+                //     date: '2025-06-22',
+                //     time: '16:45',
+                //     status: '회신완료'
+                // },
+                // {
+                //     id: 4,
+                //     name: '이민정',
+                //     content: '온라인 자료 접근이 어려웠어요.',
+                //     date: '2025-06-21',
+                //     time: '09:05',
+                //     status: '미확인'
+                // },
+                // {
+                //     id: 5,
+                //     name: '최현우',
+                //     content: '교육 시간이 너무 짧은 것 같아요.',
+                //     date: '2025-06-20',
+                //     time: '13:20',
+                //     status: '확인'
+                // }
                 ],
 
             replyText: '',
@@ -202,8 +207,8 @@
                         id: feedback.feedbackId,
                         projectGroupId: feedback.projectGroupId,
                         project: feedback.projectName,
-                        message: `"${feedback.feedbackContent}"`, // 큰따옴표로 감싸기
-                        time: dayjs(feedback.createdAt).fromNow(), //createdAt 시간 계산
+                        message: `"${feedback.feedbackContent}"`,
+                        time: dayjs(feedback.createdAt).fromNow(),
                         user: feedback.memberName + '님',
                         chatRoomId: feedback.chatRoomId,
                         status: feedback.isChecked === 'Y' ? 'read' : 'unread' // 'unread' | 'read' | 'confirmed'
@@ -223,7 +228,29 @@
                 .catch(error => {
                     console.error('피드백 확인 실패: ', error);
                 })
-        }
+        },
+        loadFeedbackChatList(chatRoomId, feedback) {
+            const data = {
+                memberId : this.getMemId
+            };
+
+            findAllChatMsgsProc(chatRoomId, data)
+                .then(response => {
+                    const chatList = response.data.result;
+
+                    this.feedbackChatList = chatList.map(chat => ({
+                        id: chat.chatMsgId,
+                        user: chat.senderName,
+                        content: chat.msgContent,
+                        time: dayjs(chat.createdAt).fromNow()
+                    }));
+
+                    this.replyTo(feedback);
+                })
+                .catch(error => {
+                    console.error('채팅 조회 실패: ', error);
+                })
+        },
     },
     watch: {},
     computed: {
Add a comment
List