From b0161c9c65c31ad3e4c0f885ebbb3e186c0d5873 Mon Sep 17 00:00:00 2001
From: Mila <Mila@pollex.com.tw>
Date: 星期三, 19 一月 2022 17:54:55 +0800
Subject: [PATCH] update: TODO#134465 顧問_系統通知紀錄(查看更多)

---
 PAMapp/components/Interview/InterviewMsg.vue                 |    7 +
 PAMapp/components/Appointment/AppointmentRecordList.vue      |  103 ++------------------
 PAMapp/pages/appointment/_appointmentId/recordList/index.vue |   32 ++++++
 PAMapp/components/Interview/InterviewRecordCard.vue          |   99 +++++++++++++++++++
 4 files changed, 149 insertions(+), 92 deletions(-)

diff --git a/PAMapp/components/Appointment/AppointmentRecordList.vue b/PAMapp/components/Appointment/AppointmentRecordList.vue
index 15e880d..64b9ad7 100644
--- a/PAMapp/components/Appointment/AppointmentRecordList.vue
+++ b/PAMapp/components/Appointment/AppointmentRecordList.vue
@@ -2,42 +2,11 @@
     <div class="record-log-component">
         <div class="mdTxt mt-30 mb-10">蝟餌絞�蝝����</div>
 
-            <div v-for="(item, index) in displayLogs"
-                :key="index">
-                <section
-                    class="record-log-card"
-                >
-                    <div class="record-log-card-date-container">
-                        <div class="record-log-card-date-container-circle">
-                            <div class="xxsTxt bold line-height">{{item.createdDate | formatYear}}</div>
-                            <div>
-                                <UiDateFormat
-                                    class="xxsTxt bold line-height"
-                                    :date="item.createdDate"
-                                    onlyShowSection="DAY" />
-                            </div>
-                            <div>
-                                <UiDateFormat
-                                    class="xxsTxt mt-4 line-space"
-                                    :date="item.createdDate"
-                                    onlyShowSection="TIME" />
-                            </div>
-                        </div>
-                    </div>
-                        <div class="record-log-msg">
-                            <div>���赤�
-                                <span v-if="item.email && item.phone">(���陛閮�mail)</span>
-                                <span v-else-if="item.email">(Email)</span>
-                                <span v-else>(���陛閮�)</span>
-                            </div>
-                            <div class="mt-10">���{item.interviewDate | formatDate}}</div>
-                        </div>
-                </section>
-                <div class="time-line"></div>
-            </div>
+            <InterviewRecordCard :noticeLogsList="displayLogs.slice(0, 3)"></InterviewRecordCard>
 
-            <section class="more-log-action">
+            <section class="text--right mt-30">
                 <div class="pam-link-button--lg"
+                @click="readMoreBtn"
                 >撅��憭�</div>
             </section>
     </div>
@@ -47,15 +16,7 @@
 import { Vue, Component, Prop, Watch } from 'nuxt-property-decorator';
 import { NoticeLogs } from '~/shared/models/appointment.model';
 
-@Component({
-    filters: {
-        formatYear(value) {
-            if (value) {
-                return new Date(value).getFullYear();
-            }
-        }
-    }
-})
+@Component
 export default class AppointmentRecordList extends Vue {
 
     @Prop()
@@ -63,6 +24,8 @@
 
     appointmentId: string       = '';
     displayLogs  : NoticeLogs[] = [];
+
+    //////////////////////////////////////////////////////////////////////
 
     mounted() {
         this.appointmentId = this.$route.params.appointmentId;
@@ -79,53 +42,11 @@
       }
     }
 
+    //////////////////////////////////////////////////////////////////////
+
+    readMoreBtn() {
+        this.$router.push(`/appointment/${this.appointmentId}/recordList`);
+    }
+
 }
 </script>
-
-<style lang="scss" scoped>
-.record-log-component{
-    display: flex;
-    flex-direction: column;
-    .record-log-card{
-        display: flex;
-        .record-log-card-date-container{
-            position:relative;
-            .record-log-card-date-container-circle{
-                display: flex;
-                flex-direction: column;
-                width: 56px;
-                height: 56px;
-                border-radius: 50%;
-                border:1px solid $PRIMARY_BLACK;
-                justify-content: center;
-                align-items: center;
-                align-content: center;
-            }
-        }
-    }
-}
-.mt-4{
-    margin-top: 4px;
-}
-.line-space{
-    letter-spacing: 1px;
-}
-.line-height{
-    line-height:1.2;
-}
-.time-line{
-    border-left: 1px solid black;
-    height: 30px;
-    margin-left: 28px;
-
-}
-.record-log-msg{
-    margin-left: 13px;
-    margin-top: 10px;
-}
-.more-log-action{
-    display: flex;
-    justify-content:flex-end;
-}
-
-</style>
diff --git a/PAMapp/components/Interview/InterviewMsg.vue b/PAMapp/components/Interview/InterviewMsg.vue
index caa71b6..eaffa87 100644
--- a/PAMapp/components/Interview/InterviewMsg.vue
+++ b/PAMapp/components/Interview/InterviewMsg.vue
@@ -48,12 +48,16 @@
 import { AgentInfo } from '~/shared/models/agent-info.model';
 
 const loginStore = namespace('login.store');
+const appointmentStore = namespace('appointment.store');
 
 @Component
 export default class InterviewMsg extends Vue {
 
     @Action
     storeMyAppointmentList!: () => Promise<number>;
+
+    @appointmentStore.Action
+    updateAppointmentDetail!: (id: number) => Appointment;
 
     @PropSync('isVisible')
     dialogVisible!: boolean;
@@ -88,6 +92,7 @@
       };
       appointmentService.informAppointment(appointmentInformation).then((_) => {
         this.isShowSuccessAlert = true ;
+        this.updateAppointmentDetail(this.client.id);
       });
     }
 
@@ -98,7 +103,7 @@
     }
 
     get isInterviewTxt() : string{
-      return this.interviewTxt = "�憟踝��靽���像����憿批��" + this.loginConsultant.name + "嚗�����������銝膩������蝜�"+"\n"+"隞乩����閰梯�Ⅳ/Email嚗�"+"\n" + this.loginConsultant.phoneNumber + "\n" + this.loginConsultant.email + "\n"+"�甇斗���靘選����蝜恬�����"
+      return this.interviewTxt = "�憟踝��靽���像����憿批��" + this.loginConsultant?.name + "嚗�����������銝膩������蝜�"+"\n"+"隞乩����閰梯�Ⅳ/Email嚗�"+"\n" + this.loginConsultant?.phoneNumber + "\n" + this.loginConsultant?.email + "\n"+"�甇斗���靘選����蝜恬�����"
     }
 
 }
diff --git a/PAMapp/components/Interview/InterviewRecordCard.vue b/PAMapp/components/Interview/InterviewRecordCard.vue
new file mode 100644
index 0000000..34f1d28
--- /dev/null
+++ b/PAMapp/components/Interview/InterviewRecordCard.vue
@@ -0,0 +1,99 @@
+<template>
+    <div class="record-log-component">
+        <div v-for="(item, index) in noticeLogsList"
+                :key="index">
+                <section
+                    class="record-log-card"
+                >
+                    <div class="record-log-card-date-container">
+                        <div class="record-log-card-date-container-circle">
+                            <div class="xxsTxt bold line-height">{{item.createdDate | formatYear}}</div>
+                            <div>
+                                <UiDateFormat
+                                    class="xxsTxt bold line-height"
+                                    :date="item.createdDate"
+                                    onlyShowSection="DAY" />
+                            </div>
+                            <div>
+                                <UiDateFormat
+                                    class="xxsTxt mt-4 line-space"
+                                    :date="item.createdDate"
+                                    onlyShowSection="TIME" />
+                            </div>
+                        </div>
+                    </div>
+                        <div class="record-log-msg">
+                            <div>���赤�
+                                <span v-if="item.email && item.phone">(���陛閮�mail)</span>
+                                <span v-else-if="item.email">(Email)</span>
+                                <span v-else>(���陛閮�)</span>
+                            </div>
+                            <div class="mt-10">���{item.interviewDate | formatDate}}</div>
+                        </div>
+                </section>
+                <div class="time-line"></div>
+            </div>
+    </div>
+</template>
+
+<script lang="ts">
+import { Component, Prop, Vue } from "nuxt-property-decorator";
+import { NoticeLogs } from "~/shared/models/appointment.model";
+
+@Component({
+    filters: {
+        formatYear(value) {
+            if (value) {
+                return new Date(value).getFullYear();
+            }
+        }
+    }
+})
+export default class RecordCard extends Vue {
+    @Prop()
+    noticeLogsList!: NoticeLogs[];
+}
+</script>
+
+<style lang="scss" scoped>
+.record-log-component{
+    display: flex;
+    flex-direction: column;
+    .record-log-card{
+        display: flex;
+        .record-log-card-date-container{
+            position:relative;
+            .record-log-card-date-container-circle{
+                display: flex;
+                flex-direction: column;
+                width: 56px;
+                height: 56px;
+                border-radius: 50%;
+                border:1px solid $PRIMARY_BLACK;
+                justify-content: center;
+                align-items: center;
+                align-content: center;
+            }
+        }
+    }
+}
+.mt-4{
+    margin-top: 4px;
+}
+.line-space{
+    letter-spacing: 1px;
+}
+.line-height{
+    line-height:1.2;
+}
+.time-line{
+    border-left: 1px solid black;
+    height: 30px;
+    margin-left: 28px;
+
+}
+.record-log-msg{
+    margin-left: 13px;
+    margin-top: 10px;
+}
+</style>
\ No newline at end of file
diff --git a/PAMapp/pages/appointment/_appointmentId/recordList/index.vue b/PAMapp/pages/appointment/_appointmentId/recordList/index.vue
new file mode 100644
index 0000000..89d7bf7
--- /dev/null
+++ b/PAMapp/pages/appointment/_appointmentId/recordList/index.vue
@@ -0,0 +1,32 @@
+
+
+<template>
+    <InterviewRecordCard :noticeLogsList="displayLogs"></InterviewRecordCard>
+</template>
+
+<script lang="ts">
+import { Component, namespace, Vue, Watch } from "nuxt-property-decorator";
+import { Appointment, NoticeLogs } from "~/shared/models/appointment.model";
+
+const appointmentStore = namespace('appointment.store');
+
+@Component
+export default class RecordList extends Vue {
+    @appointmentStore.State
+    appointmentDetail!: Appointment;
+
+    displayLogs: NoticeLogs[] = [];
+
+    ////////////////////////////////////////////////////////
+
+    @Watch('appointmentDetail', {immediate: true})
+    onAppointmentDetailChange() {
+      if (this.appointmentDetail?.appointmentNoticeLogs.length) {
+        this.displayLogs = this.appointmentDetail?.appointmentNoticeLogs
+                            .map((i) => ({ ...i, sortDate: new Date(i.createdDate)}))
+                            .sort((preItem, nextItem) => +nextItem.sortDate - +preItem.sortDate);
+      }
+    }
+
+}
+</script>
\ No newline at end of file

--
Gitblit v1.8.0