FenceToolbar.vue 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. <template>
  2. <div class="toolbar">
  3. <ToolbarIcon :src="deleteIcon" :active="false" @click="emits('remove')" />
  4. <ToolbarIcon :src="saveIcon" :active="false" @click="emits('save')" />
  5. <ElButton type="primary" size="small" @click="toggleEdit">{{
  6. props.isEdit ? '退出编辑' : '编辑'
  7. }}</ElButton>
  8. <div class="fenceDrawingTip" v-if="isEdit"
  9. >{{ cameraAlgoStore.selectedAlgoDetail?.algoInfo?.name }}算法绘制中</div
  10. >
  11. </div>
  12. </template>
  13. <script setup lang="ts">
  14. import { defineEmits } from 'vue';
  15. import { ElButton } from 'element-plus';
  16. import ToolbarIcon from '../ToolbarIcon/ToolbarIcon.vue';
  17. import saveIcon from '@/assets/images/camera/save.png';
  18. import deleteIcon from '@/assets/images/camera/delete.png';
  19. import useCameraAlgoStore from '../../store/useCameraAlgoStore';
  20. const cameraAlgoStore = useCameraAlgoStore();
  21. const props = defineProps<{ isEdit: boolean }>();
  22. const emits = defineEmits<{
  23. (e: 'toggleEditable', editState: boolean): unknown;
  24. (e: 'remove'): unknown;
  25. (e: 'save'): unknown;
  26. }>();
  27. const toggleEdit = () => {
  28. emits('toggleEditable', !props.isEdit);
  29. };
  30. </script>
  31. <style scoped>
  32. .toolbar {
  33. display: flex;
  34. align-items: center;
  35. z-index: 10;
  36. padding: 5px 30px;
  37. border-radius: 50px;
  38. }
  39. .fenceDrawingTip {
  40. background: #e6f4ff;
  41. border-radius: 6px;
  42. border: 1px solid #bae0ff;
  43. text-align: center;
  44. font-size: 12px;
  45. padding: 2px 40px;
  46. margin-left: 50px;
  47. }
  48. </style>