|
|
@@ -15,34 +15,42 @@
|
|
|
:key="item.id"
|
|
|
@click="handleSelectFence(item.id)"
|
|
|
@delete="handleDeleteFence"
|
|
|
- @edit="handleEditFenceInfo"
|
|
|
+ @edit="handleEditFenceInfo(item)"
|
|
|
+ />
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <EditFenceDialog
|
|
|
+ v-if="showEditFenceDialog"
|
|
|
+ @cancel="handleEditCancel"
|
|
|
+ @submit="handleEditSubmit"
|
|
|
+ :detail="selectedDetail"
|
|
|
/>
|
|
|
</div>
|
|
|
|
|
|
- <div class="toolbar">
|
|
|
- <!-- <div class="fenceDrawingTip" v-if="isEdit">
|
|
|
+ <!-- <div class="toolbar"> -->
|
|
|
+ <!-- <div class="fenceDrawingTip" v-if="isEdit">
|
|
|
{{ cameraAlgoStore.selectedAlgoDetail?.algoInfo?.name }}算法电子围栏绘制中
|
|
|
</div> -->
|
|
|
- <!-- <template v-if="props.isEdit"> -->
|
|
|
- <!-- <ToolbarIcon
|
|
|
+ <!-- <template v-if="props.isEdit"> -->
|
|
|
+ <!-- <ToolbarIcon
|
|
|
:src="deleteIcon"
|
|
|
:active="false"
|
|
|
@click="emits('toggleFence')"
|
|
|
tip="检测范围反选"
|
|
|
/> -->
|
|
|
- <!-- <ToggleFenceStatus @click="emits('toggleRange')" />
|
|
|
+ <!-- <ToggleFenceStatus @click="emits('toggleRange')" />
|
|
|
<ToolbarIcon :src="deleteIcon" :active="false" @click="emits('remove')" tip="删除电子围栏" />
|
|
|
<ToolbarIcon :src="saveIcon" :active="false" @click="emits('save')" tip="保存电子围栏" />
|
|
|
</template> -->
|
|
|
|
|
|
- <!-- <ElButton type="primary" size="small" @click="toggleEdit">{{
|
|
|
+ <!-- <ElButton type="primary" size="small" @click="toggleEdit">{{
|
|
|
props.isEdit ? '退出编辑' : '编辑电子围栏'
|
|
|
}}</ElButton> -->
|
|
|
- </div>
|
|
|
+ <!-- </div> -->
|
|
|
</div>
|
|
|
</template>
|
|
|
<script setup lang="ts">
|
|
|
- import { defineEmits } from 'vue';
|
|
|
+ import { defineEmits, ref } from 'vue';
|
|
|
import { ElButton, ElSwitch } from 'element-plus';
|
|
|
import ToolbarIcon from '../ToolbarIcon/ToolbarIcon.vue';
|
|
|
import saveIcon from '@/assets/images/camera/save.png';
|
|
|
@@ -54,6 +62,8 @@
|
|
|
import useFenceStore from '../../store/useFenceStore';
|
|
|
import useCameraDetailStore from '../../store/useCameraDetailStore';
|
|
|
import usePresetListStore from '../../store/usePresetListStore';
|
|
|
+ import EditFenceDialog from './EditFenceDialog.vue';
|
|
|
+ import { ServerLineInfo } from '../FenceEditor/constants';
|
|
|
const cameraAlgoStore = useCameraAlgoStore();
|
|
|
|
|
|
const fenceStore = useFenceStore();
|
|
|
@@ -61,6 +71,9 @@
|
|
|
const presetStore = usePresetListStore();
|
|
|
const props = defineProps<{ isEdit: boolean }>();
|
|
|
|
|
|
+ const showEditFenceDialog = ref(false);
|
|
|
+ const selectedDetail = ref<ServerLineInfo | null>(null);
|
|
|
+
|
|
|
const emits = defineEmits<{
|
|
|
(e: 'toggleEditable', editState: boolean): unknown;
|
|
|
(e: 'toggleRange'): unknown;
|
|
|
@@ -77,7 +90,15 @@
|
|
|
emits('select', nextFenceId);
|
|
|
};
|
|
|
|
|
|
- const handleEditFenceInfo = (fenceId: number) => {};
|
|
|
+ const handleEditFenceInfo = (detail) => {
|
|
|
+ showEditFenceDialog.value = true;
|
|
|
+ selectedDetail.value = detail;
|
|
|
+ };
|
|
|
+
|
|
|
+ const handleEditCancel = () => {
|
|
|
+ showEditFenceDialog.value = false;
|
|
|
+ selectedDetail.value = null;
|
|
|
+ };
|
|
|
|
|
|
const handleDeleteFence = (fenceId: number) => {
|
|
|
const cameraId = cameraDetailStore.cameraId;
|
|
|
@@ -85,6 +106,26 @@
|
|
|
const presetToken = presetStore.currentPresetToken;
|
|
|
fenceStore.deleteFence({ cameraId, algoId, presetToken, fenceId });
|
|
|
};
|
|
|
+
|
|
|
+ const handleEditSubmit = (data: { label: string; name: string }) => {
|
|
|
+ const cameraId = cameraDetailStore.cameraId;
|
|
|
+ const algoId = cameraAlgoStore.selectedAlgoId!;
|
|
|
+ const presetToken = presetStore.currentPresetToken;
|
|
|
+ const fenceId = selectedDetail.value?.id;
|
|
|
+ if (!fenceId) return;
|
|
|
+ fenceStore
|
|
|
+ .editFence({
|
|
|
+ cameraId,
|
|
|
+ algoId,
|
|
|
+ presetToken,
|
|
|
+ fenceId: fenceId,
|
|
|
+ fenceLabel: data.label,
|
|
|
+ fenceName: data.name,
|
|
|
+ })
|
|
|
+ .then(() => {
|
|
|
+ handleEditCancel();
|
|
|
+ });
|
|
|
+ };
|
|
|
</script>
|
|
|
|
|
|
<style scoped>
|