statistics.ts 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import { place } from "@/app/fire/constant/fire";
  2. import {
  3. axios,
  4. cameraTypeStatistics,
  5. casePlaceStatistics,
  6. caseReasonStatistics,
  7. caseStatistics,
  8. caseTimeStatistics,
  9. sceneStatistics,
  10. } from "@/request";
  11. export type StatisticsParams = {
  12. startTime: string;
  13. endTime: string;
  14. };
  15. export type StatisticsItem = { groupKey: string; dataCount: number };
  16. export type StatisticsItems = StatisticsItem[];
  17. const getAmount = (sItem: StatisticsItem, options: string[]) =>
  18. options.length - options.findIndex((item) => item === sItem.groupKey);
  19. export const getSceneStatistics = async (params: StatisticsParams) =>
  20. (await axios.post<StatisticsItems>(sceneStatistics, params)).data;
  21. export const getCaseStatistics = async (params: StatisticsParams) =>
  22. (await axios.post<StatisticsItems>(caseStatistics, params)).data;
  23. const types = ["八目", "双目转台", "激光转台", "激光移动"];
  24. export const getCameraTypeStatistics = async (params: StatisticsParams) => {
  25. const typeItems = (
  26. await axios.post<StatisticsItems>(cameraTypeStatistics, params)
  27. ).data;
  28. typeItems.sort((a, b) => getAmount(b, types) - getAmount(a, types));
  29. console.log(typeItems);
  30. return typeItems;
  31. };
  32. export const getCaseTimeStatistics = async (params: StatisticsParams) =>
  33. (await axios.post<StatisticsItems>(caseTimeStatistics, params)).data;
  34. const placeLabels = place.map((item) => item.label);
  35. export const getCasePlaceStatistics = async (params: StatisticsParams) => {
  36. const placeItems = (
  37. await axios.post<StatisticsItems>(casePlaceStatistics, params)
  38. ).data;
  39. placeItems.sort(
  40. (a, b) => getAmount(b, placeLabels) - getAmount(a, placeLabels)
  41. );
  42. return placeItems;
  43. };
  44. export const getCaseReasonStatistics = async (params: StatisticsParams) =>
  45. (await axios.post<StatisticsItems>(caseReasonStatistics, params)).data;