|
|
@@ -1,16 +1,21 @@
|
|
|
-import { GetFenceParams, getFenceApi, saveFenceApi, SaveFenceParams, editFenceApi } from '@/api/camera/camera-preview';
|
|
|
+import {
|
|
|
+ GetFenceParams,
|
|
|
+ getFenceApi,
|
|
|
+ saveFenceApi,
|
|
|
+ SaveFenceParams,
|
|
|
+ editFenceApi,
|
|
|
+ UpdateFenceParams,
|
|
|
+} from '@/api/camera/camera-preview';
|
|
|
import { defineStore } from 'pinia';
|
|
|
import { ref } from 'vue';
|
|
|
import { ServerLine, ServerLines } from '../components/FenceEditor/constants';
|
|
|
-import { ElMessage } from 'element-plus';
|
|
|
import safeParse from '@/utils/safeParse';
|
|
|
|
|
|
/** 当前电子围栏的store */
|
|
|
export const useFenceStore = defineStore('electronicFencePolygonStore', () => {
|
|
|
- /** 后端返回的电子围栏点 */
|
|
|
- const serverFencePoints = ref<ServerLines>([]);
|
|
|
- /** 当前编辑的电子围栏的点 */
|
|
|
- const currentFencePoints = ref<ServerLines>([]);
|
|
|
+ /** 当前相机-预置位-算法对应的所有的电子围栏 */
|
|
|
+ const allFences = ref<ServerLines>([]);
|
|
|
+ /** 当前正在操作的电子围栏id */
|
|
|
const currentFenceId = ref<number>();
|
|
|
const loading = ref(false);
|
|
|
|
|
|
@@ -20,54 +25,44 @@ export const useFenceStore = defineStore('electronicFencePolygonStore', () => {
|
|
|
if (!param.algoId || !param.cameraId || !param.presetToken) return;
|
|
|
return getFenceApi(param)
|
|
|
.then((res) => {
|
|
|
- currentFenceId.value = res.id;
|
|
|
const fence = res.electronicFence ? (JSON.parse(res.electronicFence) as []) : ([] as { polygon: string }[]);
|
|
|
// const pointsJSON = points.poly
|
|
|
const newFence = fence.map((x) => {
|
|
|
return { ...x, polygon: safeParse(x.polygon) as ServerLine };
|
|
|
}) as unknown as ServerLines;
|
|
|
- currentFencePoints.value = newFence;
|
|
|
- serverFencePoints.value = newFence;
|
|
|
+ allFences.value = newFence;
|
|
|
})
|
|
|
.catch(() => {
|
|
|
currentFenceId.value = undefined;
|
|
|
- currentFencePoints.value = [];
|
|
|
- serverFencePoints.value = [];
|
|
|
+ allFences.value = [];
|
|
|
})
|
|
|
.finally(() => {
|
|
|
loading.value = false;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
- const saveFence = (param: SaveFenceParams) => {
|
|
|
- if (!param.cameraId) {
|
|
|
- ElMessage.error('未选中相机');
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!param.algoId) {
|
|
|
- ElMessage.error('未选中算法');
|
|
|
- return;
|
|
|
- }
|
|
|
- if (!param.presetToken) {
|
|
|
- ElMessage.error('未选中预置位');
|
|
|
- return;
|
|
|
- }
|
|
|
- if (currentFenceId.value) {
|
|
|
- return editFenceApi({ ...param, fenceId: currentFenceId.value });
|
|
|
- }
|
|
|
- return saveFenceApi(param).then((res) => {
|
|
|
+ /** 新建电子围栏 */
|
|
|
+ const createFence = (param: SaveFenceParams) => {
|
|
|
+ // 还需要把名字加上。
|
|
|
+
|
|
|
+ return saveFenceApi({ fenceName: '电子围栏', ...param }).then((res) => {
|
|
|
console.log('save success', res);
|
|
|
currentFenceId.value = res;
|
|
|
+ getFence(param);
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+ /** 修改电子围栏信息 */
|
|
|
+ const editFence = (param: UpdateFenceParams) => {
|
|
|
+ return editFenceApi(param).then(() => getFence(param));
|
|
|
+ };
|
|
|
+
|
|
|
const clear = () => {
|
|
|
- serverFencePoints.value = [];
|
|
|
- currentFencePoints.value = [];
|
|
|
+ allFences.value = [];
|
|
|
currentFenceId.value = undefined;
|
|
|
};
|
|
|
|
|
|
- return { serverFencePoints, currentFencePoints, currentFenceId, getFence, saveFence, clear };
|
|
|
+ return { allFences, currentFenceId, getFence, createFence, editFence, clear };
|
|
|
});
|
|
|
|
|
|
export default useFenceStore;
|