vhis-detail.js 5.25 KB
import api from '@/api/api'
import {
	httpGet,
	httpPost
} from '@/api/fetch-api.js'
import {
	mapGetters,
	mapActions,
	mapState
} from "vuex";
var UA = require("ua-device")

export default {
	data() {
		return {
			key: 'value',
			// swiper
			swiperOption: {
				navigation: {
					nextEl: '.swiper-button-next',
					prevEl: '.swiper-button-prev'
				},
				pagination: {
					el: '.swiper-pagination',
					clickable: true,
				},
				autoplay: {
					delay: 5000,
					stopOnLastSlide: false,
					disableOnInteraction: false
				},
				speed: 1000,
			},
			bannerList: [],
			bannerCandidateList: [],
			// 视频
			playerOptions: {},
			bannerTipsVisible: true,
			productList: [],
			// 全部的信息
			sourceData: {},
			bottomBtnType: "",
			bottomBtnLink: ""
		}
	},
	components: {},
	computed: {
		...mapState({
			isSmallScreen: state => state.isSmallScreen,
			isMobile: state => state.isMobile
		}),
		locale() {
			return this.$i18n.locale || 'tc';
		},
		i18n() {
			return this.$i18n.messages && this.$i18n.locale ? this.$i18n.messages[this.$i18n.locale] : {};
		},
		player() {
			return this.$refs.videoPlayer.player
		},
	},
	methods: {
		onHideBannerTipsHandler() {
			this.bannerTipsVisible = false;
		},
		// fetchBanner() {
		// 	return new Promise((resolve, reject) => {
		// 		httpPost({
		// 			url: api.banner
		// 		}).then(res => {
		// 			resolve(res);
		// 		});
		// 	});
		// },
		// fetchIndexVideo() {
		// 	return new Promise((resolve, reject) => {
		// 		httpPost({
		// 			url: api.indexVideo
		// 		}).then(res => {
		// 			sessionStorage.setItem("_video_url", res.videoUrl);
		// 			sessionStorage.setItem("_poster_url", res.posterUrl);
		// 			resolve(res);
		// 		});
		// 	});
		// },
		bottomBtnHandle() {
			this.btnNavigateTo(this.bottomBtnType, this.bottomBtnLink);
		},
		btnNavigateTo(type, link) {
			switch (type) {
				case "none":
					break;
				case "news":
					this.$router.push({
						path: "/news/detail",
						query: {
							c: link
						}
					});
					break;
				case "product":
					break;
				case "vhis":
					this.$router.push({
						path: "/vhis",
						query: {
							p: link
						}
					});
					break;
				default:
					location.href = link;
					break;
			}
		},
		refreshVideoPlayer(videoUrl, posterUrl) {
			// let videoUrl = sessionStorage.getItem("_video_url");
			// let posterUrl = sessionStorage.getItem("_poster_url");
			let playerOptions = {
				width: 800,
				height: 450,
				// aspectRatio: '16:9', // 将播放器置于流畅模式,并在计算播放器的动态大小时使用该值。值应该代表一个比例 - 用冒号分隔的两个数字(例如"16:9"或"4:3")
				autoplay: false, //如果true,浏览器准备好时开始回放。
				muted: true, // 默认情况下将会消除任何音频。
				language: 'en',
				// playbackRates: [0.7, 1.0, 1.5, 2.0],//播放速度
				sources: [{
					type: "video/mp4",
					// mp4
					src: videoUrl,
					// webm
					// src: "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm"
				}],
				poster: posterUrl,
				controlBar: {
					timeDivider: true,
					durationDisplay: true,
					remainingTimeDisplay: false,
					fullscreenToggle: true //全屏按钮
				}
			}
			let output = new UA(navigator.userAgent);
			let deviceType = output.device.type;
			let isMobile = deviceType == "mobile";
			// if (this.isSmallScreen) {
			if (isMobile) {
				playerOptions.aspectRatio = "16:9";
			}
			this.playerOptions = playerOptions;
		},
		initProduct() {
			let productList = [{
				title: "保證續保至100歲"
			}, {
				title: "不設終身保障限額"
			}, {
				title: "一家投保<br>盡享稅務扣減"
			}, {
				title: "承保投保前未知的已有疾病"
			}, {
				title: "出院免找數<br>讓您安心無憂"
			}, {
				title: "無索償折扣"
			}];
			this.productList = productList;
		},
		initData() {
			this.initProduct();
			let targetData = null;
			switch (this.locale) {
				case "zh":
					targetData = this.sourceData.confCn;
					break;
				case "en":
					targetData = this.sourceData.confEn;
					break;
				case "tc":
					targetData = this.sourceData.confTc;
					break;
			}
			if (targetData) {
				let bannerList = [{
					pcBannerUrl: targetData.pcBannerUrl,
					mobileBannerUrl: targetData.mobileBannerUrl,
					btns: targetData.btnDescribe
				}];
				this.$set(this, 'bannerList', bannerList);
				console.log(this.bannerList);

				this.refreshVideoPlayer(targetData.videoUrl, targetData.videoPlayer);
				// 设置标题
				document.title = targetData.productName;

				this.bottomBtnType = targetData.bottomUrlType;
				this.bottomBtnLink = targetData.bottomUrlLink;
			}
			// this.fetchBanner().then(res => {
			// 	this.bannerCandidateList = res;
			// 	this.refreshBanner();
			// });
			// this.fetchIndexVideo().then(res => {
			// 	this.refreshVideoPlayer();
			// });
		},
		initActivity() {
			let d = localStorage.getItem("voluntaryInfo");
			if (d) {
				try {
					this.sourceData = JSON.parse(d);
					this.initData();
				} catch (e) {
				}
			}
		}
	},
	mounted() {
		this.initActivity();
	},
	created() {
		httpGet({ url: api.productInfo, data: { code: "voluntary" } }).then(res => {
			if (res) {
				localStorage.setItem("voluntaryInfo", JSON.stringify(res));
				this.sourceData = res;
			}
			this.initData();
		})
	}
}