FenceToolbar.vue 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. <template>
  2. <div class="fenceWrapper">
  3. <div>
  4. <div>电子围栏</div>
  5. <ElSwitch size="small" class="fenceSwitchBtn" />
  6. </div>
  7. <PresetSelect />
  8. <div style="display: flex"> <ElCheckbox label="检测围栏外部" /> <ElCheckbox label="前台画面显示" /> </div>
  9. <div><FenceNameItem /></div>
  10. <div class="toolbar">
  11. <!-- <div class="fenceDrawingTip" v-if="isEdit">
  12. {{ cameraAlgoStore.selectedAlgoDetail?.algoInfo?.name }}算法电子围栏绘制中
  13. </div> -->
  14. <template v-if="props.isEdit">
  15. <!-- <ToolbarIcon
  16. :src="deleteIcon"
  17. :active="false"
  18. @click="emits('toggleFence')"
  19. tip="检测范围反选"
  20. /> -->
  21. <ToggleFenceStatus @click="emits('toggleRange')" />
  22. <ToolbarIcon :src="deleteIcon" :active="false" @click="emits('remove')" tip="删除电子围栏" />
  23. <ToolbarIcon :src="saveIcon" :active="false" @click="emits('save')" tip="保存电子围栏" />
  24. </template>
  25. <ElButton type="primary" size="small" @click="toggleEdit">{{
  26. props.isEdit ? '退出编辑' : '编辑电子围栏'
  27. }}</ElButton>
  28. </div>
  29. </div>
  30. </template>
  31. <script setup lang="ts">
  32. import { defineEmits } from 'vue';
  33. import { ElButton, ElSwitch } from 'element-plus';
  34. import ToolbarIcon from '../ToolbarIcon/ToolbarIcon.vue';
  35. import saveIcon from '@/assets/images/camera/save.png';
  36. import deleteIcon from '@/assets/images/camera/delete.png';
  37. import ToggleFenceStatus from './ToggleFenceStatus.vue';
  38. import useCameraAlgoStore from '../../store/useCameraAlgoStore';
  39. import PresetSelect from '../PresetSelect/PresetSelect.vue';
  40. import FenceNameItem from './FenceNameItem.vue';
  41. const cameraAlgoStore = useCameraAlgoStore();
  42. const props = defineProps<{ isEdit: boolean }>();
  43. const emits = defineEmits<{
  44. (e: 'toggleEditable', editState: boolean): unknown;
  45. (e: 'toggleRange'): unknown;
  46. (e: 'remove'): unknown;
  47. (e: 'save'): unknown;
  48. }>();
  49. const toggleEdit = () => {
  50. emits('toggleEditable', !props.isEdit);
  51. };
  52. </script>
  53. <style scoped>
  54. .toolbar {
  55. display: flex;
  56. align-items: center;
  57. z-index: 10;
  58. padding: 5px;
  59. border-radius: 50px;
  60. }
  61. .fenceDrawingTip {
  62. background: #e8f5ff;
  63. border-radius: 6px;
  64. border: 1px solid #bae0ff;
  65. text-align: center;
  66. font-size: 12px;
  67. padding: 2px 20px;
  68. margin-right: 30px;
  69. color: #1890ff;
  70. }
  71. .fenceSwitchBtn {
  72. position: absolute;
  73. right: 10px;
  74. top: 10px;
  75. }
  76. .fenceWrapper {
  77. padding: 15px;
  78. }
  79. </style>