|
@@ -49,14 +49,6 @@
|
|
|
import usePresetListStore from '../../store/usePresetListStore';
|
|
import usePresetListStore from '../../store/usePresetListStore';
|
|
|
// import AddAlgoDialog from './AddAlgoDialog.vue';
|
|
// import AddAlgoDialog from './AddAlgoDialog.vue';
|
|
|
import { createAlgoSubmitParams, algoDetailToJSON } from '@/modules/algo/algo-params-edit/utils';
|
|
import { createAlgoSubmitParams, algoDetailToJSON } from '@/modules/algo/algo-params-edit/utils';
|
|
|
- import {
|
|
|
|
|
- getInferCode,
|
|
|
|
|
- getAlgoType,
|
|
|
|
|
- getMetaValues,
|
|
|
|
|
- getExtraCommonInfo,
|
|
|
|
|
- getDetectionTime,
|
|
|
|
|
- getInferParam,
|
|
|
|
|
- } from '@/modules/algo/algo-params-edit/utils';
|
|
|
|
|
|
|
|
|
|
import { ALGO_ENABLED_STATUS } from '@/api/camera/camera-preview';
|
|
import { ALGO_ENABLED_STATUS } from '@/api/camera/camera-preview';
|
|
|
import { ref, watchEffect } from 'vue';
|
|
import { ref, watchEffect } from 'vue';
|
|
@@ -73,10 +65,10 @@
|
|
|
const algoSettingIsOpen = ref(false);
|
|
const algoSettingIsOpen = ref(false);
|
|
|
|
|
|
|
|
// 是否修改过参数配置
|
|
// 是否修改过参数配置
|
|
|
- const isChanged = ref(false);
|
|
|
|
|
|
|
+ const isParamsChanged = ref(false);
|
|
|
|
|
|
|
|
const handleSettingChange = () => {
|
|
const handleSettingChange = () => {
|
|
|
- isChanged.value = true;
|
|
|
|
|
|
|
+ isParamsChanged.value = true;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const handleToggleSetting = (algoId: number) => {
|
|
const handleToggleSetting = (algoId: number) => {
|
|
@@ -87,6 +79,15 @@
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+ /** 检测是否要离开参数设置 */
|
|
|
|
|
+ const checkExitParams = (): Promise<unknown> => {
|
|
|
|
|
+ if (isParamsChanged.value) {
|
|
|
|
|
+ return confirmSwitchAlgo();
|
|
|
|
|
+ } else {
|
|
|
|
|
+ return Promise.resolve();
|
|
|
|
|
+ }
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
const handleSelectAlgo = (algoId: number, e) => {
|
|
const handleSelectAlgo = (algoId: number, e) => {
|
|
|
// 如果点击的是它自己,那么取消选中当前的算法
|
|
// 如果点击的是它自己,那么取消选中当前的算法
|
|
|
if (selectedAlgoId.value === algoId) {
|
|
if (selectedAlgoId.value === algoId) {
|
|
@@ -97,20 +98,14 @@
|
|
|
const switchToNewAlgo = (_algoId: number) => {
|
|
const switchToNewAlgo = (_algoId: number) => {
|
|
|
selectedAlgoId.value = _algoId;
|
|
selectedAlgoId.value = _algoId;
|
|
|
algoSettingIsOpen.value = false;
|
|
algoSettingIsOpen.value = false;
|
|
|
- isChanged.value = false;
|
|
|
|
|
|
|
+ isParamsChanged.value = false;
|
|
|
fenceStore.showFenceTool = false;
|
|
fenceStore.showFenceTool = false;
|
|
|
};
|
|
};
|
|
|
-
|
|
|
|
|
- // 如果算法设置有修改,切换到其他卡片时,要先确认提示再切换
|
|
|
|
|
- if (isChanged.value) {
|
|
|
|
|
- confirmSwitchAlgo()
|
|
|
|
|
- .then(() => {
|
|
|
|
|
- switchToNewAlgo(algoId);
|
|
|
|
|
- })
|
|
|
|
|
- .catch(() => {});
|
|
|
|
|
- } else {
|
|
|
|
|
- switchToNewAlgo(algoId);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ /** 确认电子围栏是否要离开,如果确认离开,再确认算法参数配置要不要离开 */
|
|
|
|
|
+ fenceStore
|
|
|
|
|
+ .confirmExitFence()
|
|
|
|
|
+ .then(checkExitParams)
|
|
|
|
|
+ .then(() => switchToNewAlgo(algoId));
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
watchEffect(() => {
|
|
watchEffect(() => {
|
|
@@ -157,7 +152,7 @@
|
|
|
const initialStatus = detail.status;
|
|
const initialStatus = detail.status;
|
|
|
detail.status = status;
|
|
detail.status = status;
|
|
|
selectedAlgoId.value = algoId;
|
|
selectedAlgoId.value = algoId;
|
|
|
- isChanged.value = false;
|
|
|
|
|
|
|
+ isParamsChanged.value = false;
|
|
|
algoSettingIsOpen.value = false;
|
|
algoSettingIsOpen.value = false;
|
|
|
updateCameraAlgoRelStatus(params)
|
|
updateCameraAlgoRelStatus(params)
|
|
|
.then(() => {
|
|
.then(() => {
|
|
@@ -176,7 +171,7 @@
|
|
|
updateCameraAlgoApi({ ...newParam, id: param.id }).then(() => {
|
|
updateCameraAlgoApi({ ...newParam, id: param.id }).then(() => {
|
|
|
ElMessage.success('更新成功');
|
|
ElMessage.success('更新成功');
|
|
|
getCameraAlgoList(cameraId);
|
|
getCameraAlgoList(cameraId);
|
|
|
- isChanged.value = false;
|
|
|
|
|
|
|
+ isParamsChanged.value = false;
|
|
|
});
|
|
});
|
|
|
}
|
|
}
|
|
|
};
|
|
};
|
|
@@ -191,12 +186,27 @@
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- const confirmSwitchAlgo = () => {
|
|
|
|
|
|
|
+ // “电子围栏设置未保存,离开后无法保存设置内容。
|
|
|
|
|
+
|
|
|
|
|
+ const confirmExitFence = () => {
|
|
|
|
|
+ return ElMessageBox.confirm('电子围栏设置未保存,离开后无法保存设置内容。', '', {
|
|
|
|
|
+ confirmButtonText: '确定',
|
|
|
|
|
+ cancelButtonText: '取消',
|
|
|
|
|
+ type: 'warning',
|
|
|
|
|
+ dangerouslyUseHTMLString: true,
|
|
|
|
|
+ }).then(() => {
|
|
|
|
|
+ return true;
|
|
|
|
|
+ });
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ const confirmSwitchAlgo = (): Promise<boolean> => {
|
|
|
return ElMessageBox.confirm('<strong>确认切换算法吗?</strong><br />切换后未保存的算法配置将被丢弃。', '', {
|
|
return ElMessageBox.confirm('<strong>确认切换算法吗?</strong><br />切换后未保存的算法配置将被丢弃。', '', {
|
|
|
confirmButtonText: '确定',
|
|
confirmButtonText: '确定',
|
|
|
cancelButtonText: '取消',
|
|
cancelButtonText: '取消',
|
|
|
type: 'warning',
|
|
type: 'warning',
|
|
|
dangerouslyUseHTMLString: true,
|
|
dangerouslyUseHTMLString: true,
|
|
|
|
|
+ }).then(() => {
|
|
|
|
|
+ return true;
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
@@ -205,12 +215,12 @@
|
|
|
ElMessage.success('删除成功');
|
|
ElMessage.success('删除成功');
|
|
|
getCameraAlgoList(cameraDetailStore.cameraId);
|
|
getCameraAlgoList(cameraDetailStore.cameraId);
|
|
|
selectedAlgoId.value = undefined;
|
|
selectedAlgoId.value = undefined;
|
|
|
- isChanged.value = false;
|
|
|
|
|
|
|
+ isParamsChanged.value = false;
|
|
|
});
|
|
});
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
const handleCancel = () => {
|
|
const handleCancel = () => {
|
|
|
- isChanged.value = false;
|
|
|
|
|
|
|
+ isParamsChanged.value = false;
|
|
|
selectedAlgoId.value = undefined;
|
|
selectedAlgoId.value = undefined;
|
|
|
};
|
|
};
|
|
|
</script>
|
|
</script>
|