import { ref } from 'vue'; import { defineStore } from 'pinia'; import { CameraQueryParamDetails, CameraQueryParams, getCameraList, addCameraItem, updateCameraItem, getCameraState, } from '@/api/camera/camera-overview'; import { CameraAddItem, CameraDetailServer } from '@/types/camera/type'; import { useRequest } from 'vue-hooks-plus'; const ALL = -1; export const useCameraOverview = defineStore('camera-overview', () => { const queryType = ref(''); const queryTypeContent = ref(''); const queryCameraType = ref(''); const queryWorkSpace = ref(); const querySourceType = ref(''); const networkingState = ref(ALL); const integrationState = ref(ALL); const openEagle = ref(ALL); const total = ref(0); const page = ref(1); const size = ref(10); let interval; const cameraItems = ref([]); // 条件查询事件 const conditionSearch = () => { const paramDetails = ref({} as CameraQueryParamDetails); const params: CameraQueryParams = { pageNumber: page.value, pageSize: size.value, queryParam: paramDetails.value, }; if (queryType.value) { switch (queryType.value) { case 'cameraIp': paramDetails.value.ip = queryTypeContent.value; break; case 'name': paramDetails.value.code = queryTypeContent.value; break; } } if (queryCameraType.value) { paramDetails.value.cameraType = queryCameraType.value; } if (queryWorkSpace.value) { paramDetails.value.workspaceId = queryWorkSpace.value; } if (querySourceType.value) { console.log('queryCameraType.value', querySourceType.value); paramDetails.value.sourceType = querySourceType.value; } if (networkingState.value != ALL) { paramDetails.value.networkingState = networkingState.value; } if (integrationState.value != ALL) { paramDetails.value.integrationState = integrationState.value; } if (openEagle.value != ALL) { paramDetails.value.openEagle = openEagle.value; } return getCameraList(params).then((res) => { return res; }); }; const { loading, run: getCameraItems } = useRequest(conditionSearch, { manual: true, onSuccess: (res) => { cameraItems.value = [...res.records]; total.value = res.totalRow; }, }); const addCamera = (data: CameraAddItem) => { console.log('添加相机,相机信息————————', data); return addCameraItem(data).then(() => { getCameraItems(); }); }; const addSRSCamera = (data) => { return addCameraItem(data).then(() => { getCameraItems(); }); }; const addNVRCamera = (data) => { return addCameraItem(data).then(() => { getCameraItems(); }); }; const editCamera = (data) => { return updateCameraItem(data); // .then(() => { // getCameraItems(); // }); }; const getState = () => { getCameraState({ cameraCodeList: cameraItems.value.map((camera) => camera.code) }).then( (res) => { res.forEach((item) => { const targetObj = cameraItems.value.find((camera) => camera.code === item.cameraCode); if (targetObj) targetObj.networkingState = Number(item.networkingState); }); }, ); }; const openInterval = () => { setTimeout(() => { getState(); }, 500); interval = setInterval(() => { getState(); }, 30000); }; const closeInterval = () => { clearInterval(interval); }; const reset = () => { queryType.value = ''; queryTypeContent.value = ''; queryCameraType.value = ''; queryWorkSpace.value = undefined; total.value = 0; page.value = 1; size.value = 10; cameraItems.value = []; }; return { queryType, queryTypeContent, queryCameraType, querySourceType, queryWorkSpace, integrationState, openEagle, networkingState, cameraItems, loading, total, size, page, getCameraItems, addCamera, editCamera, openInterval, closeInterval, getState, addSRSCamera, addNVRCamera, reset, }; }); export default useCameraOverview;