<template>
	<view>
		<!-- <web-view src="http://61.177.40.178:8000" @message="handleMessage" id="myWebview"></web-view> -->
		<!-- <web-view src="http://192.168.0.145:4200" @message="handleMessage" id="myWebview"></web-view> -->
		<web-view src="http://120.192.74.74:7500" @message="handleMessage" id="myWebview"></web-view>
		<!-- <button @click="downloadFile">点击下载文件</button> -->

	</view>
</template>
<!--  -->
<!-- <script src="../../js/uni-webview"></script> -->
<script>
	// import {hmScanCode, ScanOptions, ScanResult} from '@/uni_modules/lime-scan';
	// const scanner = uni.requireNativePlugin('Ba-Scanner')
	const scanner = uni.requireNativePlugin('Ba-Scanner')
	export default {
		data() {
			return {
				result: '',
			}
		},

		onReady() {

		},



		onLaunch() {

		},


		onLoad: function() {

		},
		methods: {
			handleMessage(evt) {
				console.log('原始信息:' + evt)
				console.log('接收到的消息：' + JSON.stringify(evt));
				if (evt) {
					// let data={};
					let data = JSON.parse(evt.detail.data);
					console.log('json解析：' + JSON.stringify(data));
					if (data && data.content && data.title && data.content != '' && data.title != '') {
						uni.createPushMessage({
							content: data.content, // 推送内容
							title: data.title, // 推送标题
							sound: "system",
							success: function(res) {
								console.log('推送成功', res);
							},
							fail: function(err) {
								console.log('推送失败', err);
							}
						});
					} else if (data && data.type && data.type == 'file' && data.url && data.url != '' && data.fileName &&
						data.fileName != '' && data.token && data.token != '') {
						//判断是否为post请求
						let isPost = false;
						try {
							let urlType = data.urlType;
							let postRequest = data.postRequest;
							if (urlType == 'POST') {
								isPost = true;
							}
						} catch (e) {
							isPost = false;
						}

						let url = data.url;
						let fileName = data.fileName;
						let token = data.token;
						if (!isPost) {
							console.log("移动端文件下载通用方式")
							console.log('url:' + url);
							this.downloadFile(url, fileName, token);
						} else {
							let postRequest = data.postRequest;
							this.downloadPostFile(url, fileName, token, postRequest)
						}
					} else if (data && data.type && data.type == 'scanCode') {
						this.currentWebView = plus.webview.currentWebview();
						console.log('66666', this.currentWebView);
						// this.scancode();
						// this.scan();
						this.onscan();

					} else {
						return;
					}

				}
			},
			// downloadFile(url) {
			// 	uni.downloadFile({
			// 		url: url,
			// 		success: function(res) {
			// 			if (res.statusCode === 200) {
			// 				console.log('下载成功:' + JSON.stringify(res));
			// 				uni.saveFile({
			// 					tempFilePath: res.tempFilePath,
			// 					success: function(res) {
			// 						var savedFilePath = res.savedFilePath;
			// 						console.log("download:" + savedFilePath)
			// 						uni.openDocument({
			// 							filePath: savedFilePath
			// 						});
			// 					}
			// 				});
			// 			}
			// 		} 
			// 	});
			// },
			// scancode
			scancode() {
				// 支付宝扫码——需付费(可免费试用3月)
				// var mpaasScanModule = uni.requireNativePlugin("Mpaas-Scan-Module");
				// mpaasScanModule.mpaasScan({

				// 		// 扫码识别类型，参数可多选，qrCode、barCode，不设置，默认识别所有
				// 		'scanType': ['qrCode', 'barCode'],
				// 		// 是否隐藏相册，默认false不隐藏
				// 		'hideAlbum': false
				// 	},
				// 	(ret) => {
				// 		if (ret.resp_code == '1000') {
				// 			console.log('条码内容：' + ret.resp_result);
				// 			console.log('11', new Date());
				// 			uni.hideLoading();
				// 			let sendMsg;
				// 			if (ret.resp_result == null) {
				// 				// console.log('12');
				// 				sendMsg = '{}';
				// 			} else if (typeof ret.resp_result === 'object') {
				// 				// console.log('34');
				// 				sendMsg = ret.resp_result;
				// 			} else {
				// 				if (ret.resp_result.includes('http') || !ret.resp_result.includes("{")) {
				// 					sendMsg = '{}';
				// 					// console.log('56');
				// 				} else {
				// 					sendMsg = ret.resp_result;
				// 					// console.log('78');
				// 				}
				// 			}
				// 			console.log('sendMsg', sendMsg);
				// 			console.log('1212',plus.webview);
				// 			console.log('3232',plus.webview.all());
				// 			setTimeout(()=>{
				// 				plus.webview.getDisplayWebview()[0].evalJS(`window.postJS(${sendMsg})`);
				// 			},500)

				// 		}
				// 		if (ret.resp_code == '10') {
				// 			setTimeout(()=>{
				// 				plus.webview.currentWebview().evalJS(`window.postJS('fail')`);
				// 			},500)

				// 		}
				// 		if (ret.resp_code == '11') {
				// 			setTimeout(()=>{
				// 				plus.webview.currentWebview().evalJS(`window.postJS('{}')`);
				// 			},500)

				// 		} 
				// 		// uni.showModal({
				// 		// 	title: "弹窗标题",
				// 		// 	// 返回值中，resp_code 表示返回结果值，10：用户取消，11：其他错误，1000：成功
				// 		// 	// 返回值中，resp_message 表示返回结果信息
				// 		// 	// 返回值中，resp_result 表示扫码结果，只有成功才会有返回
				// 		// 	content: JSON.stringify(ret),
				// 		// 	showCancel: false,
				// 		// 	confirmText: "确定"
				// 		// })
				// 	})
				// uni.showLoading({
				// 	title:"...",
				// 	mask:true
				// })
				console.log('10', new Date());
				// 官方推荐扫码api(识别率较低)
				// uni.scanCode({
				// 	onlyFromCamera: true,
				// 	scanType: ['qrCode'],
				// 	success: function(res) {
				// 		console.log('条码类型：' + res.scanType);
				// 		console.log('条码内容：' + res.result);
				// 		console.log('11', new Date());
				// 		uni.hideLoading();
				// 		let sendMsg;
				// 		if (res.result == null) {
				// 			// console.log('12');
				// 			sendMsg = '{}';
				// 		} else if (typeof res.result === 'object') {
				// 			// console.log('34');
				// 			sendMsg = res.result;
				// 		} else {
				// 			if (res.result.includes('http') || !res.result.includes("{")) {
				// 				sendMsg = '{}';
				// 				// console.log('56');
				// 			} else {
				// 				sendMsg = res.result;
				// 				// console.log('78');
				// 			}
				// 		}
				// 		console.log('sendMsg', sendMsg);
				// 		plus.webview.getDisplayWebview()[0].evalJS(`window.postJS(${sendMsg})`);

				// 		// try{
				// 		// 	JSON.parse(JSON.stringify(res.result));
				// 		// 	console.log('45');
				// 		// 	plus.webview.getDisplayWebview()[0].evalJS(`window.postJS(${res.result})`);

				// 		// }catch(e){
				// 		// 	//TODO handle the exception
				// 		// 	console.log('e',e);
				// 		// 	plus.webview.getDisplayWebview()[0].evalJS(`window.postJS('{}')`);
				// 		// }

				// 	},
				// 	fail: function(res) {
				// 		plus.webview.getDisplayWebview()[0].evalJS(`window.postJS('fail')`);
				// 	}

				// });
				// this.onScan();
			},

			//扫码
			onscan() { //默认界面(支持自定义界面)
				scanner.onScan({
						isContinuous: false,
						barcodeFormats: ["QR Code"],
						scanTimeSpace: 2000,
						isShowVibrate: true,
						isShowBeep: false,
						zoom: true,
						isShowToast: false,
						hintText:"",
					},
					(ret) => {
						console.log(ret)
						if (ret.code == "success") {
							let sendMsg;
							if (ret.result === null) {
								sendMsg = '{}'
							} else if (typeof ret.result === 'object') {
								sendMsg = ret.result;
							} else {
								if (ret.result.includes('http') || !ret.result.includes("{")) {
									sendMsg = '{}';
									// console.log('56');
								} else {
									sendMsg = ret.result;
									// console.log('78');
								}
							}
							
							setTimeout(()=>{
								plus.webview.getDisplayWebview()[0].evalJS(`window.postJS(${sendMsg})`);
							},500)
							
						} else {
							// setTimeout()
							plus.webview.getDisplayWebview()[0].evalJS(`window.postJS('fail')`);
							// console.log('8888',plus.webview.currentWebview());
							
						}
					});
			},

			downloadFile(_url, _name, _token) {

				uni.downloadFile({
					url: _url, //文件链接
					// header: {
					// 	"token": _token
					// },
					success: (res) => {
						if (res.statusCode === 200) {
							console.log("res:", res)
							uni.saveFile({
								tempFilePath: res.tempFilePath,
								success: function(res) {
									var savedFilePath = res.savedFilePath;
									let lastSlashIndex = savedFilePath.lastIndexOf("/");
									let name_index = _name.lastIndexOf('.');
									let fileName = _name.slice(0, name_index) + Date.now() + _name
										.slice(name_index, _name.length)
									var newFilePath = savedFilePath.slice(0, lastSlashIndex + 1) +
										fileName;
									console.log("download:" + savedFilePath)
									console.log('修改之后的文件路径：' + newFilePath)
									//修改名称

									plus.io.resolveLocalFileSystemURL(savedFilePath, entry => {
										entry.getParent(_oldFile => {
											entry.moveTo(_oldFile, '/' + fileName,
												newFilePath => {
													console.log('文件名称替换完成');
													// console.log('000',newFilePath.fullPath);
												})
										})
									})
									setTimeout(() => {
										uni.openDocument({
											filePath: newFilePath,
											success() {
												console.log('打开成功');
											},
											fail() {
												console.log('打开失败');
											}
										});
									}, 1000)
								}
							});
						}
					},
					fail: (err) => {
						uni.showToast({
							icon: 'none',
							mask: true,
							title: '失败请重新下载',
						});
					},
				})
			},

			downloadPostFile(_url, _name, _token, _data) {
				let name_index = _name.lastIndexOf('.');
				let fileName = "_doc/uniapp_save/" + _name.slice(0, name_index) + Date.now() + _name
					.slice(name_index, _name.length);
				console.log('文件路径:' + fileName)

				var dtask = plus.downloader.createDownload(_url, {
					filename: fileName, //利用保存路径，实现下载文件的重命名
					method: 'POST',
					data: _data
				}, function(d, status) {
					console.log("d====>", d)
					console.log("status====>", status)
					//d为下载的文件对象
					if (status == 200) {
						// var fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
						plus.runtime.openFile(d.filename); //选择软件打开文件
					} else {
						//下载失败
						plus.downloader.clear(); //清除下载任务
						reject({
							data: d,
							status
						})
					}
				})

				dtask.setRequestHeader("token", _token)
				dtask.setRequestHeader("Content-Type", "application/json")
				dtask.start(); //执行下载

			},

		}
	}
</script>

<style>

</style>