useMonitorCameraEdit.ts 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. /**
  2. * @description: 由于总览页面和应急处置页面都需要使用到相机列表,为了避免重复请求,将相机列表存储在pinia中
  3. * @return {
  4. * idOfOverview: 总览页面相机分组id
  5. * selectedCamerasOfOverview: 总览页面已选择的相机列表
  6. * selectedCameraIdsOfOverview: 总览页面已选择的相机id列表
  7. * }
  8. * @return {
  9. * idOfEmergencyEvent: 应急处置页面当前应急处置事件id
  10. * idOfCommandCenter: 应急处置页面当前应急处置事件相机分组id
  11. * selectedCamerasOfCommandCenter: 应急处置页面已选择的相机列表
  12. * selectedCameraIdsOfCommandCenter: 应急处置页面已选择的相机id列表
  13. * }
  14. */
  15. import { ref } from 'vue';
  16. import { defineStore } from 'pinia';
  17. import { getCameraTreeList, CameraInfo, getMonitorCameraLists } from '@/api/disaster-overview';
  18. import { getCommandCenterCameraLists } from '@/api/command-center';
  19. export const useMonitorCameraEdit = defineStore('monitorCameraEdit', () => {
  20. // 所有相机列表
  21. const allCameraTree = ref();
  22. // 初始化所有相机列表
  23. const getAllCameraTree = async () => {
  24. const res = await getCameraTreeList();
  25. allCameraTree.value = res;
  26. };
  27. interface SelectedCameraIds {
  28. id: number;
  29. name: string;
  30. code: string;
  31. }
  32. // 用于UpdateMonitorArea.vue组件中,记录当前已选择的相机id列表
  33. const selectedCameraIds = ref<SelectedCameraIds[]>([]);
  34. /**
  35. * @description: 灾害防范-总览
  36. */
  37. const idOfOverview = ref<number>(); // 总览页面相机分组id
  38. const selectedCamerasOfOverview = ref<CameraInfo[]>([]); // 记录当前已选择的相机列表
  39. const selectedCameraIdsOfOverview = ref<SelectedCameraIds[]>([]);
  40. // 初始化总览页面相机分组id + 当前已选择的相机列表
  41. const getSelectedCameraIdsOfOverview = async () => {
  42. await getMonitorCameraLists().then((res) => {
  43. idOfOverview.value = res[0].id; // 总览相机分组有且只有一个,取res[0].id
  44. selectedCamerasOfOverview.value = res[0].children;
  45. selectedCameraIdsOfOverview.value = selectedCamerasOfOverview.value.map((item) => ({
  46. id: item.id,
  47. name: item.name,
  48. code: item.code,
  49. }));
  50. selectedCameraIds.value = selectedCameraIdsOfOverview.value;
  51. });
  52. };
  53. /**
  54. * @description: 应急管理-应急处置-指挥中心
  55. */
  56. const idOfEmergencyEvent = ref<number>(); // 当前应急处置事件id
  57. const idOfCommandCenter = ref<number>(); // 相机分组id
  58. // 记录当前已选择的相机列表
  59. const selectedCamerasOfCommandCenter = ref<CameraInfo[]>([]);
  60. const selectedCameraIdsOfCommandCenter = ref<SelectedCameraIds[]>([]);
  61. // 初始化总览页面相机分组id + 当前已选择的相机列表
  62. const getSelectedCameraIdsOfCommandCenter = async () => {
  63. if (!idOfEmergencyEvent.value) return;
  64. await getCommandCenterCameraLists(idOfEmergencyEvent.value).then((res) => {
  65. idOfCommandCenter.value = res.id;
  66. selectedCamerasOfCommandCenter.value = res.children;
  67. selectedCameraIdsOfCommandCenter.value = selectedCamerasOfCommandCenter.value.map((item) => ({
  68. id: item.id,
  69. name: item.name,
  70. code: item.code,
  71. }));
  72. selectedCameraIds.value = selectedCameraIdsOfCommandCenter.value;
  73. });
  74. };
  75. return {
  76. allCameraTree,
  77. getAllCameraTree,
  78. idOfOverview,
  79. selectedCamerasOfOverview,
  80. selectedCameraIdsOfOverview,
  81. getSelectedCameraIdsOfOverview,
  82. idOfEmergencyEvent,
  83. idOfCommandCenter,
  84. selectedCamerasOfCommandCenter,
  85. selectedCameraIdsOfCommandCenter,
  86. getSelectedCameraIdsOfCommandCenter,
  87. selectedCameraIds,
  88. };
  89. });
  90. export default useMonitorCameraEdit;