CameraPreview.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <template>
  2. <div>
  3. <div class="cameraMain">
  4. <div class="cameraTree">
  5. <CameraTreeCom />
  6. </div>
  7. <div class="cameraSettingWrapper">
  8. <div class="cameraView">
  9. <CameraViewSetting v-if="cameraDetailStore.cameraId" />
  10. <div class="cameraPlaceholder" v-else>请选择左侧相机</div>
  11. </div>
  12. </div>
  13. </div>
  14. </div>
  15. </template>
  16. <script lang="ts" setup>
  17. import { onMounted, ref, watch } from 'vue';
  18. import { storeToRefs } from 'pinia';
  19. import CameraTreeCom from './components/CameraTree/CameraTree.vue';
  20. import CameraViewSetting from './components/CameraViewSetting/CameraViewSetting.vue';
  21. import useCameraDetailStore from './store/useCameraDetailStore';
  22. import useCameraAlgoStore from './store/useCameraAlgoStore';
  23. import usePresetListStore from './store/usePresetListStore';
  24. import useFenceStore from './store/useFenceStore';
  25. import { IsPtz } from '@/api/camera/camera-overview';
  26. import { getCameraDeatilById } from '@/api/camera/camera-preview';
  27. const cameraDetailStore = useCameraDetailStore();
  28. const { isShowFence } = storeToRefs(cameraDetailStore);
  29. const cameraAlgoStore = useCameraAlgoStore();
  30. const fenceStore = useFenceStore();
  31. const presetListStore = usePresetListStore();
  32. watch(
  33. () => cameraDetailStore.cameraId,
  34. async (cameraId) => {
  35. isShowFence.value = false;
  36. fenceStore.clear();
  37. if (cameraId) {
  38. const presetList = await presetListStore.getPresetList(cameraId);
  39. getCameraDeatilById(cameraId).then((res) => {
  40. cameraDetailStore.setDetail(res);
  41. // 如果isPtz为null,或者为0,都按照枪击相机
  42. if (res.isPtz === IsPtz.disabled || !res.isPtz) {
  43. presetListStore.currentPresetToken = presetList?.[0].token;
  44. }
  45. });
  46. cameraAlgoStore.getCameraAlgoList(cameraId);
  47. cameraAlgoStore.selectedAlgoId = null;
  48. }
  49. },
  50. {
  51. immediate: true,
  52. },
  53. );
  54. onMounted(() => {
  55. cameraAlgoStore.getAllAlgoList();
  56. });
  57. </script>
  58. <style lang="scss" scoped>
  59. .cameraParamsSetting {
  60. width: 350px;
  61. min-height: 300px;
  62. // border: 1px solid #ccc;
  63. }
  64. .cameraParamsSetting {
  65. width: 350px;
  66. min-height: 300px;
  67. // border: 1px solid #ccc;
  68. }
  69. .algorithmsSetting {
  70. flex: 1;
  71. border-left: 1px solid #ccc;
  72. padding-left: 20px;
  73. }
  74. .cameraMain {
  75. display: flex;
  76. background: #fff;
  77. // height: calc(100vh - 90px);
  78. }
  79. .cameraTree {
  80. min-width: 270px;
  81. max-width: 600px;
  82. flex-shrink: 0;
  83. // height: 800px;
  84. // border: 1px solid #ccc;
  85. border: 1px solid #f0f2f5;
  86. margin: 5px;
  87. }
  88. .cameraPlaceholder {
  89. color: #333;
  90. text-align: center;
  91. margin-top: 100px;
  92. margin-left: 100px;
  93. }
  94. </style>