From 65ebd84c61cf86c12f6180d931a0476d5f4b3cdb Mon Sep 17 00:00:00 2001 From: HelenHuang <LinHuang@pollex.com.tw> Date: 星期二, 15 二月 2022 11:38:37 +0800 Subject: [PATCH] TODO#135406 [顧問] 預約單明細 - 點擊更多約訪紀錄時,改為展開而非導頁 --- PAMapp/components/Appointment/AppointmentInterviewList.vue | 151 ++++++++------------------------------------------ 1 files changed, 25 insertions(+), 126 deletions(-) diff --git a/PAMapp/components/Appointment/AppointmentInterviewList.vue b/PAMapp/components/Appointment/AppointmentInterviewList.vue index e7a3325..92fe2cc 100644 --- a/PAMapp/components/Appointment/AppointmentInterviewList.vue +++ b/PAMapp/components/Appointment/AppointmentInterviewList.vue @@ -1,96 +1,41 @@ <template> <div> - <div class="interview__header"> - <div class="mdTxt">蝝赤蝝����</div> - <div class="pam-link-button--lg" - @click="addInterview">+�憓�</div> - </div> - - <template v-if="!interviewList.length"> - <div class="record-card record-card--empty"> - �蝝赤蝝���� - </div> - </template> - - <template v-if="interviewList.length"> - <div - v-for="(item, index) in futureList" - :key="index + 'feature'" - class="interview--future" - @click="editInterview(item)" - > - - <div class="record-card"> - <div class="record-card-date"> - <div> - <UiDateFormat - class="date bold" - :date="item.interviewDate" - onlyShowSection="DAY" /> - </div> - <div> - <UiDateFormat - class="time mt-5 line-space" - :date="item.interviewDate" - onlyShowSection="TIME" /> - </div> - </div> - <div class="record-card-content"> - <span>{{item.content}}</span> - </div> - </div> + <div class="interview__header"> + <div class="mdTxt">蝝赤蝝����</div> + <div class="pam-link-button" + @click="addInterview">+�憓�</div> </div> - <section - class="interview--past" - v-for="(item, index) in pastList" - :key="index + 'past'" - @click="editInterview(item)" - > - <div class="record-card"> - <div class="record-card-date"> - <div> - <UiDateFormat - class="date bold" - :date="item.interviewDate" - onlyShowSection="DAY" /> - </div> - <div> - <UiDateFormat - class="time mt-5 line-space" - :date="item.interviewDate" - onlyShowSection="TIME" /> - </div> - </div> - <div class="record-card-content"> - <span>{{item.content}}</span> - </div> - </div> - </section> + <InterviewCard :interviewList="displayAppointmentList"></InterviewCard> - <section class="more-log-action"> - <div class="pam-link-button--lg">撅��憭�</div> + <section class="text--right mt-30 interview-check-more" v-if="interviewList.length > 3"> + <div class="pam-link-button" @click="readAllList = !readAllList"> + {{ readAllList ? '憿舐內頛��' : '撅��憭�' }} + <i :class="readAllList ? 'icon-top' : 'icon-down'"></i> + </div> </section> - </template> </div> </template> <script lang="ts"> -import { Vue, Component, Prop, Watch, Mutation } from 'nuxt-property-decorator'; +import { Vue, Component, Prop, Watch, namespace } from 'nuxt-property-decorator'; + import { InterviewRecord } from '~/shared/models/appointment.model'; @Component export default class AppointmentInterviewList extends Vue { + @Prop() interviewList!: InterviewRecord[]; - @Mutation - updateInterviewRecord!: (data: InterviewRecord) => void; - appointmentId!: string; + displayList: InterviewRecord[] = []; + readAllList = false; - futureList: InterviewRecord[] = []; - pastList: InterviewRecord[] = []; + get displayAppointmentList(): InterviewRecord[] { + return this.readAllList ? this.displayList : this.displayList.slice(0, 3); + } + ////////////////////////////////////////////////////////////////////// @@ -103,10 +48,9 @@ @Watch('interviewList', {immediate: true}) updateInterviewList() { if (this.interviewList && this.interviewList.length > 0) { - this.futureList = this.interviewList - .filter(item => new Date(item.interviewDate).getTime() >= new Date().getTime()) - this.pastList = this.interviewList - .filter(item => new Date(item.interviewDate).getTime() < new Date().getTime()); + this.displayList = this.interviewList + .map((i) => ({ ...i, sortDate: new Date(i.interviewDate)})) + .sort((preItem, nextItem) => +nextItem.sortDate - +preItem.sortDate); } } @@ -114,11 +58,6 @@ addInterview(): void { this.$router.push(`/appointment/${this.appointmentId}/interview/new`); - } - - editInterview(interviewRecord) { - this.updateInterviewRecord(interviewRecord); - this.$router.push(`/appointment/${this.appointmentId}/interview/${interviewRecord.id}`); } } @@ -130,48 +69,8 @@ justify-content: space-between; margin-bottom : 10px; } -.interview--future{ - border-bottom: 1px solid #CCCCCC; - padding-bottom: 17px; - margin-bottom: 17px; - .record{ - display: flex; - justify-content: space-between; - margin-bottom: 10px; - } -} -.record-card { - height: 62px; - border: 1px solid #707070; - border-radius: 5px; - display: flex; - border-bottom: 1px solid #000; - .record-card-date{ - display: flex; - flex-direction: column; - margin-left: 10px; - margin-right: 10px; - margin-top: 10px; - } - .record-card-content{ - height: 42px; - margin-top: 10px; - margin-right: 10px; - line-height: 1.2; - } - &.record-card--empty { - align-items : center; - background-color: #fff; - color : $MID_GREY; - justify-content : center; - } -} -.line-space{ - letter-spacing: 1px; -} -.more-log-action{ - margin-top: 30px; - display: flex; - justify-content:flex-end; +.interview-check-more{ + display: flex; + justify-content: center; } </style> -- Gitblit v1.8.0