vhis.js 3.48 KB
/**
 * 页面描述:vhis
 * 嵌套平安提供的iFrame
 */

import {
	mapState
} from "vuex";
import api from '@/api/api'
import {
	httpPost
} from '@/api/fetch-api.js'

import Auth from '@components/auth/auth.vue';
import JsEncrypt from "jsencrypt";

let key = process.env.VUE_APP_CONTENT_ENCRYPT_KEY;
let rsa = new JsEncrypt();
rsa.setPublicKey(key);

function encryptContent(obj) {
	let str = JSON.stringify(obj);
	let securityContent = rsa.encrypt(str);
	return securityContent;
};


export default {
	data() {
		return {
			key: 'value',
			outsideUrl: "",
			information: null,
		}
	},
	components: {
		Auth
	},
	computed: {
		...mapState({
			userInfo: state => state.userInfo
		}),
	},
	methods: {
		init() {
			if (this.isLogin() && !this.information) {
				httpPost({
					url: api.profile,
					sid: true
				}).then(content => {
					if (content) {
						this.information = content;
						this.gotoVhis();
					}
				})
			} else {
				this.gotoVhis();
			}
		},
		userLogout() {
			this.gotoVhis();
		},
		isLogin() {
			return this.userInfo && this.userInfo.sid;
		},
		gotoVhis() {
			// 网销平台productCode : VHIS001,
			let url = window.global.vhis;
			let productCode = this.$route.query.p;
			productCode = productCode ? productCode : "VHIS001";
			let lan = this.$i18n.locale;
			switch (lan) {
				case 'zh':
					url += "?language=zh-cn";
					break;
				case 'en':
					url += "?language=en";
					break;
				default:
					url += "?language=zh-hk";
					break;
			}
			url += "&partnerId=PA001&productCode=" + productCode;

			// console.log(JSON.stringify(this.information));
			if (this.information && this.information.idType && this.information.idNo) {
				let data = {
					name: this.information.fullName,
					gender: this.information.sex,
					birthday: this.information.birthDate,
					certiType: this.information.policyIdType ? this.information.policyIdType : this.information.idType,
					certiNo: this.information.idNo
				};
				url += "&data=" + encryptContent(data);
			}
			// url = "http://www.baidu.com"
			// console.log("vhis:", url);
			this.$set(this, "outsideUrl", "");
			var iframe = document.getElementById("myiframe");
			try {
				iframe.height = 0;
				iframe.style.height = "0px";
			} catch (ex) {}

			let _this = this;
			setTimeout(function () {
				console.log("vhis:", url);
				_this.outsideUrl = url;
			}, 100);
		}
	},
	watch: {
		"$route.query.p": function () {
			this.init();
		}
	},
	mounted() {
		this.init();
		// let url = this.$route.query.p;
		// if (url) {
		//     this.outsideUrl = url;
		// setTimeout(() => {
		//     var iframe = document.getElementById("myiframe");
		//     try {
		//         var bHeight = iframe.contentWindow.document.body.scrollHeight;
		//         var dHeight = iframe.contentWindow.document.documentElement.scrollHeight;
		//         var height = Math.min(bHeight, dHeight);
		//         iframe.height = height + 50;
		//     } catch (ex) {
		//     }
		// }, 500);
		// }

		// 隐藏滚动条
		// document.getElementsByTagName("body")[0].className = "hide-scrollbar";

		window.removeEventListener("message", function () {});
		window.addEventListener('message', function (e) {
			let height = e.data ? e.data.height : null;
			if (height) {
				var iframe = document.getElementById("myiframe");
				try {
					iframe.height = height;
					iframe.style.height = height + "px";
				} catch (ex) {}
			}
		});
	},
	beforeDestroy() {
		// 移除隐藏滚动条样式
		// document.body.removeAttribute("class", "hide-scrollbar");
	},
	created() {

	}
}