| | |
| | | |
| | | <section class="client-detail"> |
| | | |
| | | <div class="client-detail-info"> |
| | | <div class="client-detail-info mb-30"> |
| | | <div class="client-detail-info__avatar"> |
| | | <div class="circle"> |
| | | {{ appointmentDetail.name || 'NO NAME' }} |
| | | <div class="sm-circle"> |
| | | {{ appointmentDetail.gender === 'male' ? '男' : '女'}} |
| | | <div class="sm-circle sm-circle-male" v-if="appointmentDetail.gender === 'male'"> |
| | | <i class="icon-sex-male sex-icon"></i> |
| | | </div> |
| | | <div class="sm-circle sm-circle-female" v-if="appointmentDetail.gender === 'female'"> |
| | | <i class="icon-sex-female sex-icon"></i> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="client-detail-info__information"> |
| | | <div>{{ appointmentDetail.age | toAgeLabel }}</div> |
| | | <div>{{ appointmentDetail.phone }}</div> |
| | | <div class="text--underline"> |
| | | <div class="text--underline text--break-all"> |
| | | {{ appointmentDetail.email }} |
| | | </div> |
| | | </div> |
| | |
| | | |
| | | <div class="client-detail-action" v-if="showWhenAppointmentHasContacted"> |
| | | <el-button @click="closeAppointment" >結案</el-button> |
| | | <el-button @click="sendMsg" style="margin-left: 0px">通知/約訪</el-button> |
| | | </div> |
| | | |
| | | <div class="client-detail-action" v-if="showWhenAppointmentHasCreate"> |
| | | <el-button @click="sendMsg">傳送約訪通知</el-button> |
| | | <el-button @click="sendMsg" style="margin-left: 0px">通知約訪</el-button> |
| | | </div> |
| | | |
| | | </section> |
| | | |
| | | <div class="client-detail-action btn-center" v-if="showWhenAppointmentHasCreate"> |
| | | <el-button @click="sendMsg">傳送約訪通知</el-button> |
| | | </div> |
| | | |
| | | <template v-if="showWhenAppointmentHasClosed"> |
| | | <AppointmentClosedInfo :appointmentDetail="appointmentDetail" /> |
| | |
| | | <section class="mt-30" v-if="!showWhenAppointmentHasCreate"> |
| | | <AppointmentRecordList :noticeLogs="appointmentDetail.appointmentNoticeLogs" /> |
| | | </section> |
| | | |
| | | <PopUpFrame :isOpen.sync="isShowInviteReviewDialog"> |
| | | <div class="text--middle invite-review"> |
| | | <div class="mb-30 mt-10">已發送滿意度</div> |
| | | <div class="text--primary text--middle cursor--pointer text--underline" @click="isShowInviteReviewDialog = false" :size="'250px'">我知道了</div> |
| | | </div> |
| | | </PopUpFrame> |
| | | |
| | | </div> |
| | | </template> |
| | |
| | | appointmentProgress!: ContactStatus; |
| | | |
| | | isVisibleDialog = false; |
| | | isShowInviteReviewDialog = false ; |
| | | interviewTxt = ""; |
| | | contactStatus = ContactStatus; |
| | | |
| | |
| | | } |
| | | |
| | | getHopeContactTimeContent(hopeContactTimeString: string): string[] { |
| | | const result = hopeContactTimeString.replace("'", '').split('、'); |
| | | const result = hopeContactTimeString.replaceAll("'", '').split('、'); |
| | | return result; |
| | | } |
| | | |
| | | inviteReview(): void { |
| | | reviewsService.sendSatisfactionToClient(this.appointmentDetail.id).then(res => res); |
| | | reviewsService.sendSatisfactionToClient(this.appointmentDetail.id).then(res => { |
| | | this.isShowInviteReviewDialog = true; |
| | | }); |
| | | } |
| | | } |
| | | </script> |
| | |
| | | height: 100px; |
| | | width: 100px; |
| | | border-radius: 50%; |
| | | background-color: #fff; |
| | | border: 1px solid $PRIMARY_BLACK; |
| | | background-image: url('~/assets/images/appointment/avatar_bg.svg'); |
| | | position: relative; |
| | | display: flex; |
| | | justify-content: center; |
| | |
| | | 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; |
| | | .sex-icon { |
| | | font-size: 20px; |
| | | &.icon-sex-male{ |
| | | color: $SKY_BLUE; |
| | | } |
| | | &.icon-sex-female{ |
| | | color: $CORAL; |
| | | } |
| | | } |
| | | &-male { |
| | | border: 1px solid $SKY_BLUE; |
| | | } |
| | | &-female { |
| | | border: 1px solid $LIGHT_RED; |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | @extend .mb-10; |
| | | @extend .mdTxt; |
| | | @extend .mr-10; |
| | | line-height: 1.3; |
| | | color : $DARK_BLUE; |
| | | flex-basis: auto; |
| | | min-width : 40px; |
| | | } |
| | | .client-detail-demand__demand-list-content { |
| | | text-align: justify; |
| | | line-height: 1.3; |
| | | text-justify: auto; |
| | | word-break: break-all; |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | .invite-review{ |
| | | align-items : center; |
| | | display : flex; |
| | | flex-direction: column; |
| | | } |
| | | .close-appointment-detail{ |
| | | background-color: #fff; |
| | | display: flex; |
| | |
| | | .hope-contact-time__line { |
| | | border-bottom: 1px solid #CCCCCC; |
| | | } |
| | | .btn-center{ |
| | | display: flex; |
| | | justify-content: center; |
| | | } |
| | | |
| | | </style> |