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