From 6fa4bba623713c396432ba8b863846883d6a1906 Mon Sep 17 00:00:00 2001 From: wayne <wayne8692wayne8692@gmail.com> Date: 星期三, 26 一月 2022 10:52:23 +0800 Subject: [PATCH] Merge branch 'pollex-dev' into sit --- PAMapp/components/Interview/InterviewMsg.vue | 176 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 176 insertions(+), 0 deletions(-) diff --git a/PAMapp/components/Interview/InterviewMsg.vue b/PAMapp/components/Interview/InterviewMsg.vue new file mode 100644 index 0000000..bc76c75 --- /dev/null +++ b/PAMapp/components/Interview/InterviewMsg.vue @@ -0,0 +1,176 @@ +<template> + <div class="interview-msg-component"> + <el-dialog + :visible.sync="dialogVisible" + :width="dialogWidth" + @close="closeDialog" + :lock-scroll="false" + > + <div class="subTitle msg-dialog-title">蝝赤�</div> + <div class="send-msg-nav"> + <div class="mdTxt">��摰�</div> + </div> + + <el-input + type="textarea" + :autosize="true" + placeholder="蝝赤�" + resize="none" + v-model="interviewTxt"> + </el-input> + + <div v-if="client.phone"> + <div class="mdTxt mt-30 mb-10 required">����赤��挾</div> + <DateTimePicker + @changeDateTime="interviewTime = $event" + :isPastDateDisabled="true" + :defaultValue="defaultValue" + ></DateTimePicker> + </div> + + <div class="msg-dialog-btn"> + <el-button @click="addInterview" :disabled="isBtnDisabled">���</el-button> + </div> + + </el-dialog> + + <PopUpFrame + :isOpen.sync="isShowSuccessAlert" + @closePopUp="closeAllDialog"> + <div class="text--middle invite-review"> + <div class="mb-30 mt-10">撌脩��赤�</div> + <div class="text--primary text--middle cursor--pointer text--underline" @click="closeAllDialog " :size="'250px'">������</div> + </div> + </PopUpFrame> + </div> +</template> +<script lang="ts"> +import { Vue, Component, Prop, PropSync, Emit, namespace } from 'nuxt-property-decorator'; + +import appointmentService from '~/shared/services/appointment.service'; +import { Appointment, ToInformAppointment } from '~/shared/models/appointment.model'; +import { AgentInfo } from '~/shared/models/agent-info.model'; + +const loginStore = namespace('login.store'); +const appointmentStore = namespace('appointment.store'); + +@Component +export default class InterviewMsg extends Vue { + + @appointmentStore.Action + updateAppointmentDetail!: (id: number) => Appointment; + + @appointmentStore.Action + getMyAppointmentList!: () => Promise<Appointment[]>; + + @PropSync('isVisible') + dialogVisible!: boolean; + + @Prop({default:'90%'}) + dialogWidth!:string; + + @Prop() + client!: Appointment; + + @Prop() + defaultValue!: string; + + @Emit('closeDialog') + closeDialog() { + return; + } + + @loginStore.State + loginConsultant!: AgentInfo; + + isShowSuccessAlert = false; + + interviewTxt = ""; + interviewTime = ''; + ////////////////////////////////////////////////////////////////////// + + mounted() { + if(this.loginConsultant.phoneNumber && this.loginConsultant.email) + { + this.interviewTxt = "�憟踝��靽���像����憿批��" + this.loginConsultant.name + "嚗�����������銝膩������蝜�"+"\n"+"隞乩����閰梯�Ⅳ/Email嚗�"+"\n" + this.loginConsultant.phoneNumber + "\n" + this.loginConsultant.email + "\n"+"�甇斗���靘選����蝜恬�����"} + else if (!this.loginConsultant.phoneNumber && this.loginConsultant.email) + { + this.interviewTxt = "�憟踝��靽���像����憿批��" + this.loginConsultant.name + "嚗�����������銝膩������蝜�"+"\n"+"隞乩����mail嚗�"+"\n" + this.loginConsultant.email + "\n"+"�甇斗���靘選����蝜恬�����" + } + else + this.interviewTxt = "�憟踝��靽���像����憿批��" + this.loginConsultant.name + "嚗�����������銝膩������蝜�"+"\n"+"隞乩����閰梯�Ⅳ嚗�"+"\n" + this.loginConsultant.phoneNumber + "\n"+"�甇斗���靘選����蝜恬�����" + } + + addInterview() { + const appointmentInformation: ToInformAppointment = { + appointmentId: this.client.id, + email : this.client?.email, + interviewDate: this.interviewTime, + message : this.interviewTxt, + phone : this.client?.phone, + }; + appointmentService.informAppointment(appointmentInformation).then((_) => { + this.isShowSuccessAlert = true ; + }); + } + + closeAllDialog() { + this.isShowSuccessAlert = false ; + this.dialogVisible = false; + this.updateAppointmentDetail(this.client.id); + this.getMyAppointmentList(); + } + + get isBtnDisabled() :Boolean { + const isFormValid = this.client.phone ? this.interviewTxt && this.interviewTime :this.interviewTxt + return !isFormValid + } + +} +</script> + +<style lang="scss" > +.interview-msg-component{ + + .required { + position: relative; + &::before { + content: '*'; + position: absolute; + color: #FF0000; + transform: translate(-12px, 0); + } + } + .msg-dialog-title{ + display: flex; + justify-content: center; + margin-bottom:30px; + color: $PRIMARY_BLACK; + } + .send-msg-nav{ + display: flex; + justify-content: space-between; + margin-bottom: 10px; + color: $PRIMARY_BLACK; + } + .el-dialog{ + width:90% + } + .el-textarea__inner{ + font-size: 20px; + padding:10px; + text-align: justify; + font-weight: 600; + } + .msg-dialog-btn{ + margin-top: 30px; + display: flex; + justify-content: center; + } + .invite-review{ + display: flex; + flex-direction: column; + align-items: center; + } +} +</style> -- Gitblit v1.8.0