| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 | <template>	<view>		<page-head :title="title"></page-head>		<view class="uni-common-mt">			<view class="uni-list">				<view class="uni-list-cell">					<view class="uni-list-cell-left">						<view class="uni-label">视频来源</view>					</view>					<view class="uni-list-cell-right">						<picker :range="sourceType" @change="sourceTypeChange" :value="sourceTypeIndex">							<view class="uni-input">{{sourceType[sourceTypeIndex]}}</view>						</picker>					</view>				</view>			</view>		</view>		<!-- #ifdef APP-PLUS || MP-WEIXIN -->		<view class="uni-title uni-common-mt uni-common-pl">摄像头位置</view>		<view class="uni-hello-text camera-tips">注意:部分 Android 手机下由于系统 ROM 不支持无法生效,打开拍摄界面后可操作切换</view>		<view class="uni-list">			<radio-group @change="radioChange">				<label class="uni-list-cell uni-list-cell-pd" v-for="(item, index) in cameraList" :key="item.value">					<radio :value="item.value" :checked="index === cameraIndex">{{item.name}}</radio>				</label>			</radio-group>		</view>		<!-- #endif -->		<template v-if="!src">			<view class="uni-hello-addfile" @tap="chooseVideo">+ 添加视频</view>		</template>		<template v-else>			<video :src="src" class="video"></video>		</template>	</view></template><script>	var sourceType = [		['camera'],		['album'],		['camera', 'album']	]	export default {		data() {			return {				title: 'chooseVideo',				sourceTypeIndex: 2,				sourceType: ['拍摄', '相册', '拍摄或相册'],				src: '',				cameraList: [{						value: 'back',						name: '后置摄像头',						checked: 'true'					},					{						value: 'front',						name: '前置摄像头'					},				],				cameraIndex: 0			}		},		onUnload() {			this.src = '',				this.sourceTypeIndex = 2,				this.sourceType = ['拍摄', '相册', '拍摄或相册'];		},		methods: {			radioChange(evt) {				for (let i = 0; i < this.cameraList.length; i++) {					if (this.cameraList[i].value === evt.detail.value) {						this.cameraIndex = i;						break;					}				}			},			sourceTypeChange: function(e) {				this.sourceTypeIndex = parseInt(e.detail.value)			},			chooseVideo: function() {				uni.chooseVideo({					camera: this.cameraList[this.cameraIndex].value,					sourceType: sourceType[this.sourceTypeIndex],					success: (res) => {						this.src = res.tempFilePath					},					fail: (err) => {						// #ifdef MP						uni.getSetting({							success: (res) => {								let authStatus = false;								switch (this.sourceTypeIndex) {									case 0:										authStatus = res.authSetting['scope.camera'];										break;									case 1:										authStatus = res.authSetting['scope.album'];										break;									case 2:										authStatus = res.authSetting['scope.album'] && res.authSetting['scope.camera'];										break;									default:										break;								}								if (!authStatus) {									uni.showModal({										title: '授权失败',										content: 'Hello uni-app需要从您的相机或相册获取视频,请在设置界面打开相关权限',										success: (res) => {											if (res.confirm) {												uni.openSetting()											}										}									})								}							}						})						// #endif					}				})			}		}	}</script><style>	.video {		width: 100%;	}	.camera-tips {		padding: 10rpx 30rpx;	}</style>
 |