| | |
| | | 的整體服務,您給予幾顆星評價? |
| | | </div> |
| | | </div> |
| | | <el-rate v-model="item.score" class="pam-satisfaction-rate mt-10 fix-chrome-click--issue"></el-rate> |
| | | <el-rate |
| | | v-model="item.satisfaction" |
| | | class="pam-satisfaction-rate mt-10 fix-chrome-click--issue" |
| | | @change="isBtnDisabled = false" |
| | | ></el-rate> |
| | | </div> |
| | | <div class="text--center mt-30"> |
| | | <el-button type="primary" :disabled="isBtnDisabled">送出</el-button> |
| | | <div class="text--center mt-30" v-if="mapUnReviewLogList.length"> |
| | | <el-button type="primary" :disabled="isBtnDisabled" @click="sent">送出</el-button> |
| | | </div> |
| | | </div> |
| | | |
| | | <PopUpFrame :isOpen.sync="showConfirmPopup" |
| | | @closePopUp="closePopup"> |
| | | <div class="text--center mdTxt">發送成功</div> |
| | | <div class="text--center mt-30"> |
| | | <el-button @click="closePopup" type="primary">確定</el-button> |
| | | </div> |
| | | </PopUpFrame> |
| | | </div> |
| | | </template> |
| | | |
| | | <script lang="ts"> |
| | | import { Vue, Component, Action, State, Watch } from 'nuxt-property-decorator'; |
| | | import { AppointmentLog } from '~/shared/models/appointment.model'; |
| | | import { UserReviewsConsultantsParams } from '~/shared/models/reviews.model'; |
| | | import reviewsService from '~/shared/services/reviews.service'; |
| | | |
| | | @Component({ |
| | | layout: 'home' |
| | |
| | | @State |
| | | unReviewLogList!: AppointmentLog[]; |
| | | |
| | | @Action |
| | | storeMyAppointmentReviewLog!: () => void; |
| | | |
| | | mapUnReviewLogList: AppointmentReviewLog[] = []; |
| | | showConfirmPopup = false; |
| | | isBtnDisabled = true; |
| | | |
| | | /////////////////////////////////////////////////////// |
| | | |
| | |
| | | |
| | | /////////////////////////////////////////////////////// |
| | | |
| | | get isBtnDisabled() { |
| | | if (this.mapUnReviewLogList.length) { |
| | | return this.mapUnReviewLogList.findIndex(item => item.satisfaction > 0) === -1; |
| | | } |
| | | return false; |
| | | sent() { |
| | | const reviewParams: UserReviewsConsultantsParams[] = this.mapUnReviewLogList |
| | | .filter(item => item.satisfaction > 0) |
| | | .map(item => { |
| | | return { |
| | | appointmentId: item.appointmentId, |
| | | score: item.satisfaction |
| | | } |
| | | }) |
| | | |
| | | reviewsService.allUserReviewsConsultants(reviewParams).then((res) => { |
| | | this.showConfirmPopup = true; |
| | | }); |
| | | } |
| | | |
| | | closePopup() { |
| | | this.showConfirmPopup = false; |
| | | this.storeMyAppointmentReviewLog(); |
| | | } |
| | | |
| | | } |
| | | |
| | | interface AppointmentReviewLog extends AppointmentLog { |