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>
|