From 22ee840d8c9a79e56609351fa67e6c2ac9f620bb Mon Sep 17 00:00:00 2001 From: Tomas <tomasysh@gmail.com> Date: 星期三, 19 一月 2022 14:56:57 +0800 Subject: [PATCH] refactor: appointment store --- PAMapp/components/Interview/InterviewMsg.vue | 78 +++++++++++++++++++++++++++++++++++--- 1 files changed, 71 insertions(+), 7 deletions(-) diff --git a/PAMapp/components/Interview/InterviewMsg.vue b/PAMapp/components/Interview/InterviewMsg.vue index b9518c4..7d671ce 100644 --- a/PAMapp/components/Interview/InterviewMsg.vue +++ b/PAMapp/components/Interview/InterviewMsg.vue @@ -19,23 +19,52 @@ resize="none" v-model="interviewTxt"> </el-input> + <div class="mdTxt mt-30 mb-10">����赤��挾</div> <DateTimePicker @changeDateTime="interviewTime = $event" ></DateTimePicker> <div class="msg-dialog-btn"> - <el-button :disabled="!interviewTime">���</el-button> + <el-button @click="addInterview" :disabled="!interviewTime">���</el-button> </div> </el-dialog> + + <PopUpFrame + :isOpen.sync="isShowSuccessAlert"> + <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, Action } from 'nuxt-property-decorator'; +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 { ContactStatus } from '~/shared/models/enum/contact-status'; + +const appointmentStore = namespace('appointment.store'); @Component -export default class InterviewAdd extends Vue { +export default class InterviewMsg extends Vue { + + @appointmentStore.Action + getMyAppointmentList!: () => Promise<Appointment[]>; + + + @appointmentStore.Action + updateMyAppointmentList!:(appointment: Appointment) => Appointment[]; + + @appointmentStore.Action + updateAppointmentDetail!: (appointmentId: number) => Promise<Appointment>; + + @appointmentStore.State + appointmentDetail!: Appointment; + @PropSync('isVisible') dialogVisible!: boolean; @@ -43,15 +72,46 @@ dialogWidth!:string; @Prop() - appointmentId!: number; + client!: Appointment; @Emit('closeDialog') closeDialog() { return; } - interviewTxt = ""; - interviewTime = ''; + interviewTime = ''; + interviewTxt = ''; + isShowSuccessAlert = false; + + contactStatus = ContactStatus; + + ////////////////////////////////////////////////////////////////////// + + 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 ; + const updatedAppointment = { + ...this.appointmentDetail, + communicateStatus: this.contactStatus.CONTACTED, + }; + this.updateMyAppointmentList(updatedAppointment); + this.updateAppointmentDetail(updatedAppointment.id); + }); + } + + closeAllDialog() { + this.isShowSuccessAlert = false ; + this.dialogVisible = false; + this.getMyAppointmentList(); + } } </script> @@ -83,5 +143,9 @@ display: flex; justify-content: center; } - +.invite-review{ + display: flex; + flex-direction: column; + align-items: center; + } </style> -- Gitblit v1.8.0