<template>
|
<div class="appointment-client-detail-page">
|
<div class="date-detail">
|
<!-- TODO: 要依據不同 step 顯示不同 Date [Tomas, 2022/1/11] -->
|
<div>{{ appointmentDetail.appointmentDate }}</div>
|
<div>{{ appointmentDetail.consultantReadTime }}</div>
|
</div>
|
<AppointmentProgress
|
class="mt-10"
|
:currentStep="appointmentDetail.communicateStatus"
|
></AppointmentProgress>
|
|
<section class="client-detail">
|
|
<div class="client-detail-info">
|
<div class="client-detail-info__avatar">
|
<div class="circle">
|
{{ appointmentDetail.name || 'NO NAME' }}
|
<div class="sm-circle">
|
{{ appointmentDetail.gender === 'male' ? '男' : '女'}}
|
</div>
|
</div>
|
</div>
|
<div class="client-detail-info__information">
|
<div>{{ appointmentDetail.age || '--' }}歲</div>
|
<div>{{ appointmentDetail.phone }}</div>
|
<div class="text--underline">
|
{{ appointmentDetail.email }}
|
</div>
|
</div>
|
</div>
|
|
<div class="client-detail-demand mt-10">
|
<div class="client-detail-demand__demand-list">
|
<div class="client-detail-demand__demand-list-label">需求</div>
|
<div>{{ appointmentDetail.requirement }}</div>
|
</div>
|
<div class="client-detail-demand__hope-contact-time">
|
<div class="client-detail-demand__demand-list-label">聯絡<br />時段</div>
|
<div>星期一 17:00 ~ 19:00</div>
|
<!-- TODO: 多筆聯絡時段如何呈現 && 跑版問題 [Tomas. 2021/1/12] -->
|
<!-- <div>{{ appointmentDetail.hopeContactTime }}</div> -->
|
</div>
|
</div>
|
|
<div class="client-detail-action" v-if="showWhenAppointmentHasClosed">
|
<el-button >發送滿意度</el-button>
|
</div>
|
|
<div class="client-detail-action" v-else>
|
<el-button @click="closeAppointment" >結案</el-button>
|
<el-button @click="sendMsg" style="margin-left: 0px">通知/約訪</el-button>
|
</div>
|
|
</section>
|
|
<section class="close-appointment-detail" v-if="showWhenAppointmentHasClosed">
|
|
<div class="close-appointment-detail-nav">
|
<div class="mdTxt">結案方式</div>
|
<div class="mdTxt text--primary text--underline cursor--pointer" @click="editAppointmentHasClosed">編輯</div>
|
</div>
|
<span class="mt-10 mb-30">成交</span>
|
|
<div class="mdTxt mb-10">保戶身份證字號</div>
|
<div class="mb-30">A123456789</div>
|
<div class="mdTxt mb-10">商品代碼Plan Code</div>
|
<div class="mb-30">8888888</div>
|
<div class="mdTxt mb-10">進件時間</div>
|
<div class="mb-30">2021/12/2</div>
|
<div class="mdTxt mb-10">備註</div>
|
<div class="">約訪4次,客戶很喜歡聊寶可夢。</div>
|
|
</section>
|
|
<InterviewMsg :isVisible.sync="isVisibleDialog"></InterviewMsg>
|
|
|
<section class="mt-30">
|
<AppointmentInterviewList />
|
</section>
|
|
<section class="mt-30">
|
<AppointmentRecordList />
|
</section>
|
|
</div>
|
</template>
|
|
<script lang="ts">
|
import { Context } from '@nuxt/types';
|
|
import { Vue, Component } from 'vue-property-decorator';
|
|
import appointmentService from '~/shared/services/appointment.service';
|
import { AppointmentDetail } from '~/shared/models/appointment.model';
|
import { ContactStatus } from '~/shared/models/enum/contact-status';
|
|
@Component
|
export default class AppointmentDetailComponent extends Vue {
|
|
appointmentDetail!: AppointmentDetail;
|
isVisibleDialog = false;
|
interviewTxt = "";
|
contactStatus = ContactStatus;
|
|
//////////////////////////////////////////////////////////////////////
|
|
async asyncData(context: Context) {
|
const appointmentId = +context.route.params.appointmentId;
|
return {
|
appointmentDetail: await appointmentService.getAppointmentDetail(appointmentId).then((res) => res)
|
}
|
}
|
|
//////////////////////////////////////////////////////////////////////
|
|
closeAppointment(): void {
|
this.$router.push(`/appointment/${this.appointmentDetail.id}/close`);
|
}
|
|
sendMsg():void {
|
this.isVisibleDialog = true;
|
}
|
|
editAppointmentHasClosed(): void{
|
this.$router.push(`/appointment/${this.appointmentDetail.id}/close`);
|
}
|
|
get showWhenAppointmentHasClosed(): boolean {
|
return this.appointmentDetail.communicateStatus === this.contactStatus.DONE
|
|| this.appointmentDetail.communicateStatus === this.contactStatus.CLOSE
|
|| this.appointmentDetail.communicateStatus === this.contactStatus.CANCEL;
|
}
|
}
|
</script>
|
|
<style lang="scss">
|
.appointment-client-detail-page{
|
.date-detail{
|
display : flex;
|
font-size : 16px;
|
color : #68737A;
|
justify-content: space-between;
|
margin-bottom : 2px;
|
}
|
.client-detail{
|
background-color: #fff;
|
margin-top:10px;
|
padding: 17px 21px;
|
.client-detail-info {
|
display: flex;
|
.client-detail-info__avatar{
|
display: flex;
|
margin-right: 22px;
|
.circle{
|
height: 100px;
|
width: 100px;
|
border-radius: 50%;
|
background-color: #fff;
|
border: 1px solid $PRIMARY_BLACK;
|
position: relative;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
.sm-circle{
|
position: absolute;
|
height: 30px;
|
width: 30px;
|
border-radius: 50%;
|
background-color: #fff;
|
border: 1px solid $PRIMARY_BLACK;
|
bottom: 0;
|
right: 0;
|
display: flex;
|
justify-content: center;
|
align-items: center;
|
}
|
}
|
}
|
.client-detail-info__information{
|
font-size: 20px;
|
line-height: 1.6;
|
}
|
}
|
.client-detail-demand{
|
background-color: #fff;
|
font-size: 20px;
|
display: flex;
|
flex-direction: column;
|
.client-detail-demand__demand-list{
|
display: flex;
|
}
|
.client-detail-demand__hope-contact-time{
|
display: flex;
|
}
|
.client-detail-demand__demand-list-label {
|
@extend .mr-10;
|
@extend .mdTxt;
|
@extend .mb-10;
|
}
|
}
|
.client-detail-action {
|
margin-left: 50px;
|
}
|
}
|
}
|
.close-appointment-detail{
|
background-color: #fff;
|
display: flex;
|
margin-top: 30px;
|
padding: 20px;
|
display: flex;
|
flex-direction: column;
|
font-size: 20px;
|
}
|
.close-appointment-detail-nav{
|
display: flex;
|
justify-content: space-between;
|
flex: 1;
|
}
|
|
</style>
|