| | |
| | | <div class="title">负载控制</div> |
| | | <div |
| | | class="singleCol" |
| | | v-for="item in list1" |
| | | v-for="item in list1.filter(i => i.show)" |
| | | @click="cameraType(item)" |
| | | :key="item.key" |
| | | :class="{ active: item.key === cameraParams.camera_type }" |
| | |
| | | <div @click="takePictures">拍照</div> |
| | | <div @click="recordFun">{{ isRecording ? '录像中...' : '录像' }}</div> |
| | | </div> |
| | | <div class="multiCol"> |
| | | <div class="multiCol" v-if="wsInfo?.psdk_widget_values"> |
| | | <div @click="shoutFun">{{ isRecordShouting ? '喊话' : '停止喊话' }}</div> |
| | | <div @click="broadcastFun">广播</div> |
| | | </div> |
| | |
| | | :max="cameraParams.camera_type === 'ir' ? 200 : 200" |
| | | @change="sliderChange" |
| | | /> |
| | | <div class="cameraZoomText">{{cameraParams.zoom_factor}}X</div> |
| | | </div> |
| | | </div> |
| | | <!-- 广播列表 --> |
| | |
| | | |
| | | <script setup> |
| | | import EventBus from '@/event-bus' |
| | | import { |
| | | callPhotoAndVideoCmd, |
| | | cameraParamsChangeApi, |
| | | ptzResetModeApi, |
| | | startVoice, |
| | | import { |
| | | callPhotoAndVideoCmd, |
| | | cameraParamsChangeApi, |
| | | ptzResetModeApi, |
| | | startVoice, |
| | | stayAwayRiver, |
| | | getVoiceFile, |
| | | playAudio, |
| | |
| | | import Recorder from 'js-audio-recorder'; |
| | | import dayjs from 'dayjs' |
| | | |
| | | const wsInfo = inject('wsInfo') |
| | | // 初始化喊话 |
| | | let globalShout = null |
| | | |
| | | const isRecording = ref(false) |
| | | |
| | | const list1 = ref([ |
| | | { name: '广角', key: 'wide' }, |
| | | { name: '变焦', key: 'zoom' }, |
| | | { name: '红外', key: 'ir' }, |
| | | ]) |
| | | const hasIr = inject('hasIr') |
| | | const list1 = computed(() => { |
| | | return [ |
| | | { name: '广角', key: 'wide',show:true }, |
| | | { name: '变焦', key: 'zoom', show: true }, |
| | | { name: '红外', key: 'ir',show: hasIr.value }, |
| | | ] |
| | | }) |
| | | const cameraParams = ref({ |
| | | zoom_factor: 0, |
| | | camera_type: 'wide', |
| | |
| | | } |
| | | } |
| | | const tableList = ref([]); |
| | | // 分页相关 |
| | | // 分页相关 |
| | | const searchParams = ref({ |
| | | sn: droneSn.value, |
| | | name: '', |
| | |
| | | getFileList(); |
| | | } |
| | | |
| | | // 获取文件列表 |
| | | // 获取音频文件列表 |
| | | function getFileList() { |
| | | getVoiceFile(searchParams.value).then((res) => { |
| | | if (res.data.code !== 0) return ElMessage.error(res.data.msg); |
| | |
| | | top: 50%; |
| | | transform: translateY(-60%); |
| | | width: 178px; |
| | | height: 416px; |
| | | padding: 20px 0; |
| | | background: rgba(0, 0, 0, 0.5); |
| | | backdrop-filter: blur(5px); |
| | | border-radius: 20px 20px 20px 20px; |
| | |
| | | |
| | | .cameraZoom { |
| | | position: absolute; |
| | | padding: 16px 0; |
| | | padding: 20px 0 15px 0; |
| | | left: 1600px; |
| | | top: -59px; |
| | | width: 112px; |
| | | width: 90px; |
| | | height: 490px; |
| | | background: rgba(64, 64, 64, 0.15); |
| | | background: rgba(0, 0, 0, 0.4); |
| | | backdrop-filter: blur(5rem); |
| | | border-radius: 20px 20px 20px 20px; |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | |
| | | .el-slider { |
| | | height: 100%; |
| | | flex: 1; |
| | | } |
| | | .cameraZoomText{ |
| | | font-family: Segoe UI, Segoe UI; |
| | | font-weight: 400; |
| | | font-size: 22px; |
| | | color: #ffffff; |
| | | margin-top: 20px; |
| | | } |
| | | } |
| | | |
| | |
| | | bottom: 10px; |
| | | height: 32px; |
| | | display: flex; |
| | | |
| | | |
| | | :deep(.number) { |
| | | color: #EDEDED; |
| | | } |