|  |  | @@ -21,7 +21,7 @@ | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | <script> | 
		
	
		
			
			|  |  |  | import Vue from 'vue' | 
		
	
		
			
			|  |  |  | import { Toast } from 'vant' | 
		
	
		
			
			|  |  |  | import { Toast, Dialog } from 'vant' | 
		
	
		
			
			|  |  |  | import { mapState, mapActions } from 'vuex' | 
		
	
		
			
			|  |  |  | import HeadTop from './../../components/common/head.vue' | 
		
	
		
			
			|  |  |  | // 工具 | 
		
	
	
		
			
				|  |  | @@ -32,6 +32,7 @@ import { saveAs } from 'file-saver' | 
		
	
		
			
			|  |  |  | import { getModelDetailById } from '../../api/getPaper' | 
		
	
		
			
			|  |  |  | import { doGetVideoDetialById } from '../../api/downloadVideo' | 
		
	
		
			
			|  |  |  | Vue.use(Toast) | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | export default { | 
		
	
		
			
			|  |  |  | components: { | 
		
	
		
			
			|  |  |  | HeadTop | 
		
	
	
		
			
				|  |  | @@ -87,12 +88,13 @@ export default { | 
		
	
		
			
			|  |  |  | // 安卓设备尺寸比其他设备小一半,需适配 | 
		
	
		
			
			|  |  |  | // width: isAndroid ? '260px' : '480px', | 
		
	
		
			
			|  |  |  | // height: isAndroid ? '427px' : '854px', | 
		
	
		
			
			|  |  |  | width: isAndroid ? '50%' : '100%', | 
		
	
		
			
			|  |  |  | height: isAndroid ? '50%' : '100%', | 
		
	
		
			
			|  |  |  | width: '100%', | 
		
	
		
			
			|  |  |  | height: '100%', | 
		
	
		
			
			|  |  |  | // 以下可选设置 | 
		
	
		
			
			|  |  |  | playsinline: true, // 禁止内置播放 | 
		
	
		
			
			|  |  |  | isLive: false, // 直播 | 
		
	
		
			
			|  |  |  | rePlay: false, // 循环播放 | 
		
	
		
			
			|  |  |  | useH5Prism: true, // 开启H5播放器 | 
		
	
		
			
			|  |  |  | preload: true, //播放器自动加载 | 
		
	
		
			
			|  |  |  | autoplay: false, // 自动播放 | 
		
	
		
			
			|  |  |  | diagnosisButtonVisible: false, //是否显示检测按钮 | 
		
	
	
		
			
				|  |  | @@ -106,11 +108,57 @@ export default { | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | //  下载视频 | 
		
	
		
			
			|  |  |  | downloadVideo() { | 
		
	
		
			
			|  |  |  | async downloadVideo() { | 
		
	
		
			
			|  |  |  | // 视频地址 | 
		
	
		
			
			|  |  |  | let that = this | 
		
	
		
			
			|  |  |  | const videoUrl = this.videoSrc | 
		
	
		
			
			|  |  |  | // 下载视频 | 
		
	
		
			
			|  |  |  | saveAs(videoUrl, this.title + '.mp4') | 
		
	
		
			
			|  |  |  | const title = this.sanitizeFilename(this.title) | 
		
	
		
			
			|  |  |  | // ios | 
		
	
		
			
			|  |  |  | const deviceType = getDeviceType() | 
		
	
		
			
			|  |  |  | let isAndroid = false | 
		
	
		
			
			|  |  |  | if (!deviceType) { | 
		
	
		
			
			|  |  |  | // 设备类型为pc | 
		
	
		
			
			|  |  |  | isAndroid = false | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | if (deviceType[0] == 'Android') { | 
		
	
		
			
			|  |  |  | // 设备类型为安卓 | 
		
	
		
			
			|  |  |  | isAndroid = true | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | // 其他设备 | 
		
	
		
			
			|  |  |  | isAndroid = false | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | if (!isAndroid) { | 
		
	
		
			
			|  |  |  | console.log('ios') | 
		
	
		
			
			|  |  |  | await this.downloadFun( | 
		
	
		
			
			|  |  |  | this.videoSrc + '?response-content-type=application/octet-stream', | 
		
	
		
			
			|  |  |  | this.title + '.mp4' | 
		
	
		
			
			|  |  |  | ) | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | // 下载视频 | 
		
	
		
			
			|  |  |  | saveAs(videoUrl, this.title + '.mp4') | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | // 视频名转化 | 
		
	
		
			
			|  |  |  | sanitizeFilename(filename) { | 
		
	
		
			
			|  |  |  | return filename.replace(/[/\\:?*"<>|]/g, '').trim() | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | // ios下载处理 | 
		
	
		
			
			|  |  |  | async downloadFun(blobFile, fileName) { | 
		
	
		
			
			|  |  |  | let blob = new Blob([blobFile], { | 
		
	
		
			
			|  |  |  | type: 'application/pdf;charset=UTF-8' | 
		
	
		
			
			|  |  |  | }) | 
		
	
		
			
			|  |  |  | console.log(blob) | 
		
	
		
			
			|  |  |  | if (window.navigator.msSaveOrOpenBlob) { | 
		
	
		
			
			|  |  |  | navigator.msSaveBlob(blob, fileName) | 
		
	
		
			
			|  |  |  | } else { | 
		
	
		
			
			|  |  |  | let link = document.createElement('a') | 
		
	
		
			
			|  |  |  | // link.href = blobFile | 
		
	
		
			
			|  |  |  | link.href = window.URL.createObjectURL(blob) | 
		
	
		
			
			|  |  |  | link.download = fileName | 
		
	
		
			
			|  |  |  | link.click() | 
		
	
		
			
			|  |  |  | window.URL.revokeObjectURL(link.href) //释放内存 | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | }, | 
		
	
		
			
			|  |  |  | // 获取视频信息 | 
		
	
		
			
			|  |  |  | async getVideoInfo() { | 
		
	
	
		
			
				|  |  | @@ -148,6 +196,7 @@ export default { | 
		
	
		
			
			|  |  |  | height: calc(100vh - 40px); | 
		
	
		
			
			|  |  |  | overflow: hidden; | 
		
	
		
			
			|  |  |  | } | 
		
	
		
			
			|  |  |  | 
 | 
		
	
		
			
			|  |  |  | .page { | 
		
	
		
			
			|  |  |  | // width: 375px; | 
		
	
		
			
			|  |  |  | // height: 100vh; | 
		
	
	
		
			
				|  |  | 
 |