| | |
| | | <p>性別:{{gender}}</p> |
| | | <p>年齡:{{appointmentDetail.age | toAgeLabel }}</p> |
| | | <p>職業:{{appointmentDetail.job}}</p> |
| | | <p>諮詢方式:{{appointmentDetail.consultationMethod | toConsultationMethod }}</p> |
| | | <p>需求:{{ appointmentDetail.requirement ? appointmentDetail.requirement.split(',').join('、') : '--'}}</p> |
| | | <p |
| | | v-for="(item, index) in hopeContactTime" |
| | |
| | | </div> |
| | | </div> |
| | | </PopUpFrame> |
| | | |
| | | <div class="video-container" |
| | | v-if="isShowFilmPlayer" |
| | | style="position: fixed; bottom: 30px; right: 30px; z-index: 9999; display: flex; justify-content: flex-end;" |
| | | > |
| | | <iframe |
| | | id="ytplayer" type="text/html" width="360" height="270" |
| | | frameborder="0" |
| | | allowfullscreen |
| | | sandbox="allow-scripts allow-same-origin allow-popups allow-presentation fullscreen" |
| | | :src="filmVideoSrc" |
| | | ></iframe> |
| | | <div class="close-btn" @click="closeVideo()">X</div> |
| | | </div> |
| | | |
| | | </div> |
| | | </template> |
| | | |
| | | <script lang="ts"> |
| | | import {Action, Component, Mutation, namespace, State, Vue, Watch} from 'nuxt-property-decorator'; |
| | | import {Action, Component, Getter, Mutation, namespace, State, Vue, Watch} from 'nuxt-property-decorator'; |
| | | |
| | | import appointmentService from '~/shared/services/appointment.service'; |
| | | import utilService, {AccessFroms} from '~/shared/services/utils.service'; |
| | |
| | | phone : '', |
| | | requirement : '', |
| | | satisfactionScore : 0, |
| | | consultationMethod : '' |
| | | }; |
| | | |
| | | agentInfo: Consultant = { |
| | |
| | | seniority : '', |
| | | appointments : [] |
| | | }; |
| | | |
| | | isCloseVideo = false; |
| | | |
| | | @Getter |
| | | fromAccess!: AccessFroms; |
| | | |
| | | get filmVideoSrc() { |
| | | if (!this.fromAccess) return ''; |
| | | return this.fromAccess === AccessFroms.FILM_1 |
| | | ? 'https://www.youtube.com/embed/zVBLW9hWD0g?autoplay=1&mute=1&loop=1&playlist=zVBLW9hWD0g' |
| | | : 'https://www.youtube.com/embed/655JnwbuRGA?autoplay=1&mute=1&loop=1&playlist=655JnwbuRGA'; |
| | | } |
| | | |
| | | |
| | | get isShowFilmPlayer() { |
| | | return !!this.fromAccess && !this.isCloseVideo; |
| | | } |
| | | |
| | | ////////////////////////////////////////////////////////////////////// |
| | | |
| | |
| | | this.storageClearNotContactAppointmentIdFromMsg(); |
| | | } |
| | | |
| | | closeVideo(): void { |
| | | this.isCloseVideo = true; |
| | | } |
| | | |
| | | /////////////////////////////////////////////////////////////////////////////// |
| | | |
| | | get gender(): string { |
| | |
| | | max-width: 335px; |
| | | } |
| | | } |
| | | |
| | | /* 確保 .video-container 有相對/絕對定位或固定寬度 */ |
| | | .video-container { |
| | | position: relative; |
| | | width: auto; /* 根據你的影片尺寸調整 */ |
| | | } |
| | | |
| | | /* 關閉按鈕樣式 */ |
| | | .close-btn { |
| | | position: absolute; |
| | | top: -10px; |
| | | right: -10px; |
| | | cursor: pointer; |
| | | font-size: 20px; |
| | | color: #fff; |
| | | background-color: #000; |
| | | width: 30px; |
| | | height: 30px; |
| | | text-align: center; |
| | | line-height: 30px; |
| | | border-radius: 50%; |
| | | opacity: 0.7; |
| | | } |
| | | |
| | | .close-btn:hover { |
| | | opacity: 1; |
| | | } |
| | | |
| | | </style> |