保誠-保戶業務員媒合平台
Mila
2022-01-25 5782fa345a46eff4b8b39b4dc56e2cd1ddf82a07
PAMapp/components/Appointment/AppointmentRecordList.vue
@@ -2,121 +2,52 @@
    <div class="record-log-component">
        <div class="mdTxt mt-30 mb-10">系統通知紀錄</div>
            <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">(手機簡訊、Email)</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">
                <div class="pam-link-button--lg"
                >展開看更多</div>
            <section class="text--center mt-30" v-if="displayLogs.length > 3">
                <div class="pam-link-button"
                    @click="readMoreBtn"
                >展開看更多
                <i class="icon-expand"></i></div>
            </section>
    </div>
</template>
<script lang="ts">
import { Vue, Component, Prop } from 'nuxt-property-decorator';
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()
    noticeLogs!: NoticeLogs[];
    appointmentId = '';
    appointmentId: string       = '';
    displayLogs  : NoticeLogs[] = [];
    //////////////////////////////////////////////////////////////////////
    mounted() {
        this.appointmentId = this.$route.params.appointmentId;
    }
    get noticeLogsList() {
        return this.noticeLogs.sort((a, b) => new Date(b.createdDate).getTime() - new Date(a.createdDate).getTime())
    //////////////////////////////////////////////////////////////////////
    @Watch('noticeLogs', {immediate: true})
    onNoticeLogsChange() {
      if (this.noticeLogs.length) {
        this.displayLogs = this.noticeLogs
                            .map((i) => ({ ...i, sortDate: new Date(i.createdDate)}))
                            .sort((preItem, nextItem) => +nextItem.sortDate - +preItem.sortDate);
      }
    }
    //////////////////////////////////////////////////////////////////////
    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>