Commit e6d5c81bd0cb4f99a79dbd68cb72d76ef63ff0ef

Authored by xp.Huang
2 parents 0a16ecd1 c8b8ec80

Merge branch 'local_dev_latest' into 'main_dev'

perf(src/packages/external/Informations):  单个摄像头,优化加一个loading效果

See merge request yunteng/thingskit-view!205
... ... @@ -24,6 +24,7 @@ export interface videoListInterface {
24 24 value: string
25 25 sn: string
26 26 channelId: string
  27 + deviceId: string
27 28 params: GBT28181Params
28 29 }
29 30
... ...
... ... @@ -103,10 +103,11 @@ const getVideoLists = async (organizationId: string) => {
103 103 videoOptions.value = res?.data?.map((item: videoListInterface) => {
104 104 return {
105 105 label: item.name,
106   - value: item.accessMode === AccessMode.Streaming ? item.id : item.accessMode === AccessMode.ManuallyEnter ? item.videoUrl : item?.params?.deviceId,
  106 + value: item.accessMode === AccessMode.Streaming ? item.id : item.accessMode === AccessMode.ManuallyEnter ? item.videoUrl : item.id,
107 107 id: item.id,
108 108 accessMode: item.accessMode,
109   - channelId: item.accessMode === AccessMode.GBT28181 ? item?.params?.channelNo :''
  109 + channelId: item.accessMode === AccessMode.GBT28181 ? item?.params?.channelNo :'',
  110 + deviceId: item.accessMode === AccessMode.GBT28181 ? item?.params?.deviceId :'',
110 111 }
111 112 })
112 113 }
... ... @@ -127,8 +128,16 @@ const handleChecked = (value: string) => {
127 128 }
128 129 }
129 130
130   -const handleSelect = async (_: string, e: videoListInterface) => {
131   - const { accessMode, id, value , channelId } = e
  131 +const getVideoControlList = async (deviceId: string, channelId: string) => {
  132 + const { data: { flv } } = await getVideoControlStart({
  133 + deviceId,
  134 + channelId
  135 + })
  136 + props.optionData.dataset = flv || ''
  137 +}
  138 +
  139 +const handleSelect = (_: string, e: videoListInterface) => {
  140 + const { accessMode, id, value , channelId, deviceId } = e
132 141 //流媒体,需要从服务端调取接口换取播放的地址
133 142 if (accessMode === AccessMode.Streaming) {
134 143 getVideoUrlById(id)
... ... @@ -136,12 +145,8 @@ const handleSelect = async (_: string, e: videoListInterface) => {
136 145 props.optionData.videoId = id
137 146 } else if (accessMode === AccessMode.GBT28181) {
138 147 //gbt28181,需要调用接口获取flv播放地址
139   - if(!value) return
140   - const { data: { flv } } = await getVideoControlStart({
141   - deviceId: value,
142   - channelId
143   - })
144   - props.optionData.dataset = flv || ''
  148 + getVideoControlList(deviceId, channelId)
  149 + props.optionData.videoId = id
145 150 } else {
146 151 props.optionData.dataset = value as string
147 152 }
... ...
1 1 <template>
2 2 <div>
3   - <VideoPlay :baseSize="{ w, h }" :sourceSrc="option.dataset" :autoPlay="option.autoplay" :avatar="option.poster" />
  3 + <n-spin size="medium" :show="showLoading">
  4 + <template #description>
  5 + 视频正在努力加载中......
  6 + </template>
  7 + <div>
  8 + <VideoPlay :baseSize="{ w, h }" :sourceSrc="option.dataset" :autoPlay="option.autoplay" :avatar="option.poster" />
  9 + </div>
  10 + </n-spin>
4 11 </div>
5 12 </template>
6 13 <script setup lang="ts">
7   -import { PropType, toRefs, shallowReactive, watch } from 'vue'
  14 +import { PropType, toRefs, shallowReactive, watch, ref } from 'vue'
8 15 import { CreateComponentType } from '@/packages/index.d'
9 16 import { option as configOption } from './config'
10 17 import { VideoPlay } from './components'
... ... @@ -16,6 +23,8 @@ const props = defineProps({
16 23 }
17 24 })
18 25
  26 +const showLoading = ref(true)
  27 +
19 28 const { w, h } = toRefs(props.chartConfig.attr)
20 29
21 30 const { autoplay, dataset, poster } = toRefs(props.chartConfig.option as typeof configOption)
... ... @@ -29,6 +38,11 @@ const option = shallowReactive({
29 38 watch(
30 39 () => dataset?.value,
31 40 (newData: string) => {
  41 + if (newData) {
  42 + setTimeout(() => {
  43 + showLoading.value = false
  44 + }, 2000);
  45 + }
32 46 option.dataset = newData
33 47 },
34 48 {
... ...