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,6 +24,7 @@ export interface videoListInterface {
24 value: string 24 value: string
25 sn: string 25 sn: string
26 channelId: string 26 channelId: string
  27 + deviceId: string
27 params: GBT28181Params 28 params: GBT28181Params
28 } 29 }
29 30
@@ -103,10 +103,11 @@ const getVideoLists = async (organizationId: string) => { @@ -103,10 +103,11 @@ const getVideoLists = async (organizationId: string) => {
103 videoOptions.value = res?.data?.map((item: videoListInterface) => { 103 videoOptions.value = res?.data?.map((item: videoListInterface) => {
104 return { 104 return {
105 label: item.name, 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 id: item.id, 107 id: item.id,
108 accessMode: item.accessMode, 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,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 if (accessMode === AccessMode.Streaming) { 142 if (accessMode === AccessMode.Streaming) {
134 getVideoUrlById(id) 143 getVideoUrlById(id)
@@ -136,12 +145,8 @@ const handleSelect = async (_: string, e: videoListInterface) => { @@ -136,12 +145,8 @@ const handleSelect = async (_: string, e: videoListInterface) => {
136 props.optionData.videoId = id 145 props.optionData.videoId = id
137 } else if (accessMode === AccessMode.GBT28181) { 146 } else if (accessMode === AccessMode.GBT28181) {
138 //gbt28181,需要调用接口获取flv播放地址 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 } else { 150 } else {
146 props.optionData.dataset = value as string 151 props.optionData.dataset = value as string
147 } 152 }
1 <template> 1 <template>
2 <div> 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 </div> 11 </div>
5 </template> 12 </template>
6 <script setup lang="ts"> 13 <script setup lang="ts">
7 -import { PropType, toRefs, shallowReactive, watch } from 'vue' 14 +import { PropType, toRefs, shallowReactive, watch, ref } from 'vue'
8 import { CreateComponentType } from '@/packages/index.d' 15 import { CreateComponentType } from '@/packages/index.d'
9 import { option as configOption } from './config' 16 import { option as configOption } from './config'
10 import { VideoPlay } from './components' 17 import { VideoPlay } from './components'
@@ -16,6 +23,8 @@ const props = defineProps({ @@ -16,6 +23,8 @@ const props = defineProps({
16 } 23 }
17 }) 24 })
18 25
  26 +const showLoading = ref(true)
  27 +
19 const { w, h } = toRefs(props.chartConfig.attr) 28 const { w, h } = toRefs(props.chartConfig.attr)
20 29
21 const { autoplay, dataset, poster } = toRefs(props.chartConfig.option as typeof configOption) 30 const { autoplay, dataset, poster } = toRefs(props.chartConfig.option as typeof configOption)
@@ -29,6 +38,11 @@ const option = shallowReactive({ @@ -29,6 +38,11 @@ const option = shallowReactive({
29 watch( 38 watch(
30 () => dataset?.value, 39 () => dataset?.value,
31 (newData: string) => { 40 (newData: string) => {
  41 + if (newData) {
  42 + setTimeout(() => {
  43 + showLoading.value = false
  44 + }, 2000);
  45 + }
32 option.dataset = newData 46 option.dataset = newData
33 }, 47 },
34 { 48 {