advancedLinkage.vue 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <template>
  2. <div class="advanced-linkage h-full">
  3. <UseFullscreen v-slot="{ toggle, isFullscreen }">
  4. <div class="relative w-full h-full flex items-center">
  5. <pub-video-new :newClass="['al-video' + currentActive]" class="aspect-ratio-video" />
  6. <!-- 全屏按钮 -->
  7. <div
  8. class="all-screen popover-screen-full-trigger cursor-pointer z-99 absolute right-8px top-8px"
  9. >
  10. <Icon
  11. icon="icon-park-outline:off-screen"
  12. color="#8ac5ff"
  13. width="25"
  14. height="25"
  15. v-if="isFullscreen"
  16. @click="toggle"
  17. />
  18. <Icon
  19. icon="iconamoon:screen-full"
  20. color="#8ac5ff"
  21. width="25"
  22. height="25"
  23. @click="toggle"
  24. v-else
  25. />
  26. </div>
  27. <div
  28. v-if="loading"
  29. class="absolute top-50% left-50% transform-translate--50% flex justify-center items-center"
  30. >
  31. <NSpin />
  32. </div>
  33. </div>
  34. </UseFullscreen>
  35. </div>
  36. </template>
  37. <script setup>
  38. import { uuid } from '@/utils'
  39. import { omatVideoPlayer } from '@/assets/js/video-lib/flv/omatVideoPlayer'
  40. import { UseFullscreen } from '@vueuse/components'
  41. import { NSpin } from 'naive-ui'
  42. import { useOutsideSystemStore } from '@/stores/modules/system.js'
  43. const props = defineProps({
  44. data: Object,
  45. currentActive: Number
  46. })
  47. const useSystem = useOutsideSystemStore()
  48. const loading = ref(false)
  49. let playerObj = null
  50. const videoList = computed(() => useSystem.videoList)
  51. const init = async () => {
  52. const url = videoList.value.third.replace('{4}', uuid()).replace('{13}', props.data.id)
  53. console.log(url)
  54. loading.value = true
  55. try {
  56. // await useSystem.getDeviceInfo()
  57. console.log('websocket请求')
  58. playerObj = omatVideoPlayer(
  59. '.al-video' + props.currentActive,
  60. url,
  61. () => {
  62. loading.value = false
  63. },
  64. {
  65. enableZoom: false,
  66. enableDrag: false
  67. }
  68. )
  69. } catch (error) {
  70. console.log(error)
  71. }
  72. }
  73. onMounted(() => {
  74. init()
  75. console.log(props.data)
  76. })
  77. onUnmounted(() => {
  78. playerObj?.destroyed()
  79. })
  80. </script>