From 3dd41875f8a623bda069ab4f9c1e2fd6c757c44e Mon Sep 17 00:00:00 2001 From: wayne <wayne8692wayne8692@gmail.com> Date: 星期六, 22 一月 2022 17:06:47 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/Phase3' into Phase3 --- PAMapp/components/Interview/InterviewAdd.vue | 133 ++++++++++++++++++++++++-------------------- 1 files changed, 73 insertions(+), 60 deletions(-) diff --git a/PAMapp/components/Interview/InterviewAdd.vue b/PAMapp/components/Interview/InterviewAdd.vue index e1227bc..511920e 100644 --- a/PAMapp/components/Interview/InterviewAdd.vue +++ b/PAMapp/components/Interview/InterviewAdd.vue @@ -1,22 +1,24 @@ <template> <div class="edit-appointment-record"> - <div class="edit-appointment-record-date" v-if="interviewId"> + <div class="edit-appointment-record-date" v-if="interviewId && interviewRecord"> <span>{{interviewRecord.createdDate | formatDate}} 撱箇��</span> <span>{{interviewRecord.lastModifiedDate | formatDate}} ��</span> </div> <el-row class="mdTxt mb-10"> - <el-col :xs="16" :sm="20">蝝赤����</el-col> + <el-col :xs="16" :sm="20"> + <span :class="{'required': !interviewId || isEdit}">蝝赤����</span> + </el-col> <el-col :xs="8" :sm="4" class="text--right" v-if="interviewId"> <span v-if="!isEdit" - class="mr-10 text--primary text--underline cursor--pointer" + class="mr-10 text--primary cursor--pointer" @click="showCancelPopUp = true" - >��</span> + ><i class="icon-delet"></i></span> <span v-if="!isEdit" - class="text--primary text--underline cursor--pointer" + class="text--primary cursor--pointer" @click="isEdit = !isEdit" - >蝺刻摩</span> + ><i class="icon-edit"></i></span> </el-col> </el-row> <template v-if="!interviewId || isEdit"> @@ -26,12 +28,12 @@ ></DateTimePicker> </template> <template v-else> - <div class="mdTxt lighter mt-20"> + <div class="fs-20 mt-20"> {{formatInterviewDate}} </div> </template> - <div class="mdTxt mb-10 mt-30">蝝赤蝝����</div> + <div class="mdTxt mb-10 mt-30" :class="{'required': !interviewId || isEdit}">蝝赤蝝����</div> <template v-if="!interviewId || isEdit"> <el-input type="textarea" @@ -43,7 +45,7 @@ </el-input> </template> <template v-else> - <div class="mdTxt lighter mt-20"> + <div class="fs-20 mt-20"> {{content}} </div> </template> @@ -77,7 +79,7 @@ @closePopUp="closePopup"> <div class="text--center mdTxt">{{confirmTxt}}嚗�</div> <div class="text--center mdTxt">蝡���赤�嚗�</div> - <div class="text--center mt-30"> + <div class="text--center mt-30" style="display:flex"> <el-button @click="closePopup">�����</el-button> <el-button @click="showInterviewMsgPopup = true" type="primary">���赤�</el-button> </div> @@ -85,25 +87,27 @@ <InterviewMsg :isVisible.sync="showInterviewMsgPopup" + :client="appointmentDetail" + :defaultValue="interviewTime" @closeDialog="closePopup" ></InterviewMsg> </div> </template> <script lang="ts"> -import { InterviewRecord, InterviewRecordInfo } from '~/shared/models/appointment.model'; -import { Vue, Component, Prop, State, Mutation, Watch, Action } from 'nuxt-property-decorator'; +import { Appointment, InterviewRecord, InterviewRecordInfo } from '~/shared/models/appointment.model'; +import { Vue, Component, Watch, namespace } from 'nuxt-property-decorator'; import appointmentService from '~/shared/services/appointment.service'; + +const appointmentStore = namespace('appointment.store'); @Component export default class InterviewAdd extends Vue { - @State - interviewRecord!: InterviewRecord; - @Mutation - updateInterviewRecord!: (data: InterviewRecord) => void; + @appointmentStore.State + appointmentDetail!: Appointment; - @Mutation - clearInterviewRecord!: () => void; + @appointmentStore.Action + updateAppointmentDetail!: (id: number) => Appointment; interviewTime = ''; content = ''; @@ -119,40 +123,31 @@ showInterviewMsgPopup = false; showFutureDateConfirmPopup = false; - defaultValue!: Date; + defaultValue = ''; + + interviewRecord!: InterviewRecord; //////////////////////////////////////////////////////////////////// mounted() { this.interviewId = this.$route.params.interviewId; this.appointmentId = this.$route.params.appointmentId; - const isEditPage = this.interviewId && this.interviewRecord; - if (isEditPage) { - this.checkInterviewRecord(); - } - } - private checkInterviewRecord() { - if (this.interviewRecord.appointmentId !== +this.appointmentId - || this.interviewRecord.id !== +this.interviewId) { - appointmentService.getAppointmentDetail(+this.appointmentId).then((data) => { - const currentInterviewRecord = data.interviewRecordDTOs.filter(item => item.id === +this.interviewId)[0]; - this.updateInterviewRecord(currentInterviewRecord); - }) - } - } - - destroyed() { - this.clearInterviewRecord(); + this.onAppointmentDetailChange(); } //////////////////////////////////////////////////////////////////// - @Watch('interviewRecord', {immediate: true}) - watchInterviewRecord() { - if (this.interviewRecord && this.interviewRecord.content) { - this.content = this.interviewRecord.content; - this.defaultValue = new Date(this.interviewRecord.interviewDate); + @Watch('appointmentDetail', {immediate: true}) + onAppointmentDetailChange() { + if (this.appointmentDetail && this.appointmentDetail.id === +this.appointmentId) { + this.interviewRecord = this.appointmentDetail.interviewRecordDTOs + .filter(item => item.id === +this.interviewId)[0]; + + if (this.interviewRecord && this.interviewId) { + this.content = this.interviewRecord.content; + this.defaultValue = this.interviewRecord.interviewDate; + } } } @@ -177,19 +172,20 @@ private createdRecord(interviewRecordInfo) { appointmentService.createInterviewRecord(interviewRecordInfo).then(res => { - this.confirmTxt = '�憓���' - this.showPopUp(); + this.showPopUp('�憓���'); }); } private updateRecord(updateInterviewRecord) { appointmentService.updateInterviewRecord(updateInterviewRecord).then(res => { - this.confirmTxt = '蝺刻摩����'; - this.showPopUp(); + this.showPopUp('蝺刻摩����'); }); } - private showPopUp() { + private showPopUp(confirmTxt) { + this.confirmTxt = confirmTxt; + this.updateAppointmentDetail(+this.appointmentId); + if (new Date(this.interviewTime).getTime() >= new Date().getTime()) { this.showFutureDateConfirmPopup = true; } else { @@ -197,38 +193,41 @@ } } - closePopup() { - this.$router.push(`/appointment/${this.appointmentId}`); - } - deleteInterviewRecord() { appointmentService.deleteInterviewRecord(this.interviewId).then(res => { this.confirmTxt = '������'; this.showConfirmPopup = true; + this.updateAppointmentDetail(+this.appointmentId); }); } cancel() { if (this.interviewId) { this.content = this.interviewRecord.content; - this.defaultValue = new Date(this.interviewRecord.interviewDate); + this.defaultValue = this.interviewRecord.interviewDate; this.isEdit = false; } else { - this.$router.push(`/appointment/${this.appointmentId}`); + this.$router.go(-1); } + } + + closePopup() { + this.$router.go(-1); } //////////////////////////////////////////////////////////////////// get formatInterviewDate() { const interviewDate = new Date(this.interviewRecord.interviewDate); - return `${interviewDate.getFullYear()}/${interviewDate.getMonth() + 1}/${interviewDate.getDate()} ${interviewDate.getHours()}:${interviewDate.getMinutes()}`; + const hours = interviewDate.getHours(); + const minutes = interviewDate.getMinutes(); + return `${interviewDate.getFullYear()}/${interviewDate.getMonth() + 1}/${interviewDate.getDate()} ${hours < 10 ? '0' + hours : hours}:${minutes < 10 ? '0' + minutes : minutes}`; } } </script> -<style lang="scss" scoped> +<style lang="scss" > .edit-appointment-record { padding-left : 10px; padding-right: 10px; @@ -239,15 +238,29 @@ margin-bottom : 26px; } } -.icon { - color : $PRIMARY_RED; - display : flex; - flex : 1; - justify-content: flex-end; -} .edit-appointment-record-btn{ margin-top: 30px; display: flex; justify-content: center; } +.el-textarea__inner { + border: 1px solid #707070; + padding: 10px 20px; + font-size: 20px; + &::placeholder { + font-size: 20px; + } +} +.required { + position: relative; + + &::before { + content: '*'; + position: absolute; + color: #FF0000; + transform: translate(-12px, 0); + z-index: 5; + } + } + </style> -- Gitblit v1.8.0