| | |
| | | <template> |
| | | <div> |
| | | <div class="interview__header"> |
| | | <div class="mdTxt">約訪紀錄</div> |
| | | <div class="mdTxt text--underline text--primary" |
| | | @click="addInterview">+新增</div> |
| | | </div> |
| | | |
| | | <template v-if="!interviewList.length"> |
| | | <div class="record-card record-card--empty"> |
| | | 無約訪紀錄 |
| | | </div> |
| | | </template> |
| | | |
| | | <template v-if="interviewList.length"> |
| | | <div class="interview--future"> |
| | | |
| | | <div class="record-card"> |
| | | <div class="record-card-date"> |
| | | <span class="bold">01/10</span> |
| | | <span class="mt-5 line-space">09:00</span> |
| | | </div> |
| | | <div class="record-card-content"> |
| | | <span>預計提醒客戶約在公司樓下咖啡廳,推薦熊安心醫療險與防疫保單</span> |
| | | </div> |
| | | </div> |
| | | <div class="interview__header"> |
| | | <div class="mdTxt">約訪紀錄</div> |
| | | <div class="pam-link-button--lg" |
| | | @click="addInterview">+新增</div> |
| | | </div> |
| | | <InterviewCard :interviewList="displayList.slice(0, 3)"></InterviewCard> |
| | | |
| | | <section class="interview--past"> |
| | | <div class="record-card"> |
| | | <div class="record-card-date"> |
| | | <span class="bold">01/08</span> |
| | | <span class="mt-5 line-space">09:00</span> |
| | | </div> |
| | | <div class="record-card-content"> |
| | | <span>王聰明回信提供電話號碼,去電推薦預約時間</span> |
| | | </div> |
| | | </div> |
| | | <section class="text--right mt-30" v-if="interviewList.length > 3"> |
| | | <div class="pam-link-button--lg" @click="readMoreBtn">展開看更多</div> |
| | | </section> |
| | | |
| | | <section class="more-log-action"> |
| | | <div class="mdTxt text--primary text--underline">展開看更多</div> |
| | | </section> |
| | | </template> |
| | | </div> |
| | | </template> |
| | | |
| | | <script lang="ts"> |
| | | import { Vue, Component } from 'nuxt-property-decorator'; |
| | | import { Vue, Component, Prop, Watch } from 'nuxt-property-decorator'; |
| | | import { InterviewRecord } from '~/shared/models/appointment.model'; |
| | | |
| | | @Component |
| | | export default class AppointmentInterviewList extends Vue { |
| | | @Prop() |
| | | interviewList!: InterviewRecord[]; |
| | | |
| | | interviewList = []; |
| | | appointmentId!: string; |
| | | displayList: InterviewRecord[] = []; |
| | | |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | | mounted() { |
| | | this.appointmentId = this.$route.params.appointmentId; |
| | | } |
| | | |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | | @Watch('interviewList', {immediate: true}) |
| | | updateInterviewList() { |
| | | if (this.interviewList && this.interviewList.length > 0) { |
| | | this.displayList = this.interviewList |
| | | .map((i) => ({ ...i, sortDate: new Date(i.interviewDate)})) |
| | | .sort((preItem, nextItem) => +nextItem.sortDate - +preItem.sortDate); |
| | | } |
| | | } |
| | | |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | | addInterview(): void { |
| | | const appointmentId = this.$route.params.appointmentId; |
| | | this.$router.push(`/appointment/${appointmentId}/interview/new`); |
| | | this.$router.push(`/appointment/${this.appointmentId}/interview/new`); |
| | | } |
| | | |
| | | readMoreBtn() { |
| | | this.$router.push(`/appointment/${this.appointmentId}/interviewList`); |
| | | } |
| | | |
| | | } |
| | |
| | | display : flex; |
| | | 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; |
| | | } |
| | | </style> |