From 5e464f6e80d410cbbfccfb81bbfdbbc7e8434a43 Mon Sep 17 00:00:00 2001 From: yangsy Date: Tue, 25 Nov 2025 16:51:20 +0800 Subject: [PATCH] refactor(stores): simplify stores --- .env | 2 +- src/App.vue | 6 +-- .../device-page/device-card/camera-card.vue | 13 +++--- .../current-diag-card/device-header-card.vue | 4 +- .../device-page/device-card/decoder-card.vue | 8 ++-- .../device-page/device-card/keyboard-card.vue | 8 ++-- .../device-page/device-card/nvr-card.vue | 8 ++-- .../device-card/security-box-card.vue | 8 ++-- .../device-page/device-card/server-card.vue | 8 ++-- .../device-page/device-card/switch-card.vue | 8 ++-- src/components/global/settings-drawer.vue | 32 ++++++------- src/components/global/theme-switch.vue | 6 +-- src/composables/query/alarm/index.ts | 1 - src/composables/query/device/index.ts | 1 - src/composables/query/index.ts | 8 ++-- src/composables/query/station/index.ts | 1 - src/composables/query/system/index.ts | 1 - .../{alarm => }/use-line-alarms-query.ts | 10 ++-- .../{device => }/use-line-devices-query.ts | 10 ++-- .../{station => }/use-station-list-query.ts | 24 +++++----- .../{system => }/use-version-check-query.ts | 0 src/composables/stomp/index.ts | 8 ++-- src/constants/query.ts | 3 +- src/layouts/app-layout.vue | 35 +++++++------- src/pages/alarm-page.vue | 15 +++--- src/pages/dashboard-page.vue | 4 +- src/pages/debug-page.vue | 8 ++-- src/pages/device-page.vue | 4 +- src/pages/station-page.vue | 14 +++--- src/stores/{line-alarms.ts => alarm.ts} | 5 +- src/stores/current-alarms.ts | 12 ----- src/stores/debug-mode.ts | 24 ---------- src/stores/{line-devices.ts => device.ts} | 4 +- src/stores/index.ts | 11 ++--- src/stores/layout.ts | 16 ------- src/stores/{query-control.ts => polling.ts} | 4 +- src/stores/setting.ts | 46 +++++++++++++++++++ src/stores/theme.ts | 21 --------- src/stores/user.ts | 6 +-- 39 files changed, 195 insertions(+), 212 deletions(-) delete mode 100644 src/composables/query/alarm/index.ts delete mode 100644 src/composables/query/device/index.ts delete mode 100644 src/composables/query/station/index.ts delete mode 100644 src/composables/query/system/index.ts rename src/composables/query/{alarm => }/use-line-alarms-query.ts (91%) rename src/composables/query/{device => }/use-line-devices-query.ts (89%) rename src/composables/query/{station => }/use-station-list-query.ts (79%) rename src/composables/query/{system => }/use-version-check-query.ts (100%) rename src/stores/{line-alarms.ts => alarm.ts} (62%) delete mode 100644 src/stores/current-alarms.ts delete mode 100644 src/stores/debug-mode.ts rename src/stores/{line-devices.ts => device.ts} (84%) delete mode 100644 src/stores/layout.ts rename src/stores/{query-control.ts => polling.ts} (94%) create mode 100644 src/stores/setting.ts delete mode 100644 src/stores/theme.ts diff --git a/.env b/.env index 91668af..33c85ff 100644 --- a/.env +++ b/.env @@ -16,7 +16,7 @@ VITE_LAMP_PASSWORD = fjoc(1KHP(Ls&Bje)C VITE_LAMP_AUTHORIZATION = Y3VlZGVzX2FkbWluOmN1ZWRlc19hZG1pbl9zZWNyZXQ= # 当需要重置localStorage时, 修改此变量 -VITE_STORAGE_VERSION = 1 +VITE_STORAGE_VERSION = 2 # 调试授权码 VITE_DEBUG_CODE = ndm_debug diff --git a/src/App.vue b/src/App.vue index 6973061..913f0cb 100644 --- a/src/App.vue +++ b/src/App.vue @@ -13,13 +13,13 @@ const GlobalFeedback = defineComponent({ diff --git a/src/components/device-page/device-card/camera-card.vue b/src/components/device-page/device-card/camera-card.vue index cac72df..5ceb887 100644 --- a/src/components/device-page/device-card/camera-card.vue +++ b/src/components/device-page/device-card/camera-card.vue @@ -1,18 +1,19 @@ diff --git a/src/composables/query/alarm/index.ts b/src/composables/query/alarm/index.ts deleted file mode 100644 index 2793a56..0000000 --- a/src/composables/query/alarm/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './use-line-alarms-query'; diff --git a/src/composables/query/device/index.ts b/src/composables/query/device/index.ts deleted file mode 100644 index 78b0440..0000000 --- a/src/composables/query/device/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './use-line-devices-query'; diff --git a/src/composables/query/index.ts b/src/composables/query/index.ts index e935812..19966ed 100644 --- a/src/composables/query/index.ts +++ b/src/composables/query/index.ts @@ -1,4 +1,4 @@ -export * from './alarm'; -export * from './device'; -export * from './station'; -export * from './system'; +export * from './use-line-alarms-query'; +export * from './use-line-devices-query'; +export * from './use-station-list-query'; +export * from './use-version-check-query'; diff --git a/src/composables/query/station/index.ts b/src/composables/query/station/index.ts deleted file mode 100644 index 9488525..0000000 --- a/src/composables/query/station/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './use-station-list-query'; diff --git a/src/composables/query/system/index.ts b/src/composables/query/system/index.ts deleted file mode 100644 index 0531fa0..0000000 --- a/src/composables/query/system/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './use-version-check-query'; diff --git a/src/composables/query/alarm/use-line-alarms-query.ts b/src/composables/query/use-line-alarms-query.ts similarity index 91% rename from src/composables/query/alarm/use-line-alarms-query.ts rename to src/composables/query/use-line-alarms-query.ts index b77a325..633e150 100644 --- a/src/composables/query/alarm/use-line-alarms-query.ts +++ b/src/composables/query/use-line-alarms-query.ts @@ -1,7 +1,7 @@ import { pageDeviceAlarmLogApi, type Station, type StationAlarmCounts } from '@/apis'; import { LINE_ALARMS_QUERY_KEY } from '@/constants'; import { DeviceType, tryGetDeviceTypeVal } from '@/enums'; -import { useLineAlarmsStore, useQueryControlStore, useStationStore } from '@/stores'; +import { useAlarmStore, usePollingStore, useStationStore } from '@/stores'; import { runTask } from '@/utils'; import { isCancelledError, useMutation, useQuery } from '@tanstack/vue-query'; import dayjs from 'dayjs'; @@ -25,8 +25,8 @@ const createEmptyStationAlarmCounts = () => { export function useLineAlarmsQuery() { const stationStore = useStationStore(); const { stationList } = storeToRefs(stationStore); - const queryControlStore = useQueryControlStore(); - const { alarmQueryStamp } = storeToRefs(queryControlStore); + const pollingStore = usePollingStore(); + const { alarmQueryStamp } = storeToRefs(pollingStore); const { mutateAsync: getStationAlarmCounts } = useStationAlarmCountsMutation(); return useQuery({ @@ -42,7 +42,7 @@ export function useLineAlarmsQuery() { await getStationAlarmCounts({ station, signal }); } console.timeEnd('useLineALarmCountsQuery'); - // queryControlStore.updateAlarmQueryUpdatedAt(); + // pollingStore.updateAlarmQueryUpdatedAt(); return null; }, }); @@ -54,7 +54,7 @@ interface StationAlarmCountsMutationParams { } function useStationAlarmCountsMutation() { - const lineAlarmsStore = useLineAlarmsStore(); + const lineAlarmsStore = useAlarmStore(); const { lineAlarmCounts } = storeToRefs(lineAlarmsStore); return useMutation({ diff --git a/src/composables/query/device/use-line-devices-query.ts b/src/composables/query/use-line-devices-query.ts similarity index 89% rename from src/composables/query/device/use-line-devices-query.ts rename to src/composables/query/use-line-devices-query.ts index 01ba5ab..6a64ba9 100644 --- a/src/composables/query/device/use-line-devices-query.ts +++ b/src/composables/query/use-line-devices-query.ts @@ -1,7 +1,7 @@ import { ndmClient, type Station, type StationDevices } from '@/apis'; import { LINE_DEVICES_QUERY_KEY } from '@/constants'; import { DeviceType } from '@/enums'; -import { useLineDevicesStore, useQueryControlStore, useStationStore } from '@/stores'; +import { useDeviceStore, usePollingStore, useStationStore } from '@/stores'; import { runTask } from '@/utils'; import { isCancelledError, useMutation, useQuery } from '@tanstack/vue-query'; import { storeToRefs } from 'pinia'; @@ -32,8 +32,8 @@ const getNdmDevicesAll = async (stationCode: string, signal?: AbortSignal) => { export function useLineDevicesQuery() { const stationStore = useStationStore(); const { stationList } = storeToRefs(stationStore); - const queryControlStore = useQueryControlStore(); - const { deviceQueryStamp } = storeToRefs(queryControlStore); + const pollingStore = usePollingStore(); + const { deviceQueryStamp } = storeToRefs(pollingStore); const { mutateAsync: getStationDevices } = useStationDevicesMutation(); return useQuery({ @@ -49,7 +49,7 @@ export function useLineDevicesQuery() { await getStationDevices({ station, signal }); } console.timeEnd('useLineDevicesQuery'); - // queryControlStore.updateDeviceQueryUpdatedAt(); + // pollingStore.updateDeviceQueryUpdatedAt(); return null; }, }); @@ -61,7 +61,7 @@ interface StationDevicesMutationParams { } function useStationDevicesMutation() { - const lineDevicesStore = useLineDevicesStore(); + const lineDevicesStore = useDeviceStore(); const { lineDevices } = storeToRefs(lineDevicesStore); return useMutation({ diff --git a/src/composables/query/station/use-station-list-query.ts b/src/composables/query/use-station-list-query.ts similarity index 79% rename from src/composables/query/station/use-station-list-query.ts rename to src/composables/query/use-station-list-query.ts index a91185f..3acc215 100644 --- a/src/composables/query/station/use-station-list-query.ts +++ b/src/composables/query/use-station-list-query.ts @@ -1,6 +1,6 @@ import { batchVerifyApi, verifyApi, type Station } from '@/apis'; -import { STATION_LIST_QUERY_KEY } from '@/constants'; -import { useQueryControlStore, useStationStore } from '@/stores'; +import { LINE_STATIONS_QUERY_KEY } from '@/constants'; +import { usePollingStore, useStationStore } from '@/stores'; import { getAppEnvConfig } from '@/utils'; import { isCancelledError, useMutation, useQuery } from '@tanstack/vue-query'; import axios from 'axios'; @@ -8,13 +8,13 @@ import dayjs from 'dayjs'; import { storeToRefs } from 'pinia'; import { computed } from 'vue'; -export function useStationListQuery() { - const queryControlStore = useQueryControlStore(); - const { pollingEnabled } = storeToRefs(queryControlStore); - const { mutateAsync: getStationList } = useStationListMutation(); +export function useLineStationsQuery() { + const pollingStore = usePollingStore(); + const { pollingEnabled } = storeToRefs(pollingStore); + const { mutateAsync: getStationList } = useLineStationsMutation(); return useQuery({ - queryKey: computed(() => [STATION_LIST_QUERY_KEY]), + queryKey: computed(() => [LINE_STATIONS_QUERY_KEY]), enabled: computed(() => pollingEnabled.value), refetchInterval: getAppEnvConfig().requestInterval * 1000, staleTime: getAppEnvConfig().requestInterval * 1000, @@ -22,8 +22,8 @@ export function useStationListQuery() { console.time('useStationListQuery'); await getStationList({ signal }); console.timeEnd('useStationListQuery'); - queryControlStore.updateDeviceQueryStamp(); - queryControlStore.updateAlarmQueryStamp(); + pollingStore.updateDeviceQueryStamp(); + pollingStore.updateAlarmQueryStamp(); return null; }, }); @@ -33,11 +33,11 @@ interface StationListMutationParams { signal?: AbortSignal; } -function useStationListMutation() { +function useLineStationsMutation() { const stationStore = useStationStore(); const { stationList } = storeToRefs(stationStore); - const queryControlStore = useQueryControlStore(); - const { stationVerifyMode } = storeToRefs(queryControlStore); + const pollingStore = usePollingStore(); + const { stationVerifyMode } = storeToRefs(pollingStore); return useMutation({ mutationFn: async ({ signal }) => { const { data: ndmStationList } = await axios.get<{ code: string; name: string }[]>(`/minio/ndm/ndm-stations.json?_t=${dayjs().unix()}`, { signal }); diff --git a/src/composables/query/system/use-version-check-query.ts b/src/composables/query/use-version-check-query.ts similarity index 100% rename from src/composables/query/system/use-version-check-query.ts rename to src/composables/query/use-version-check-query.ts diff --git a/src/composables/stomp/index.ts b/src/composables/stomp/index.ts index 7c0da45..cd77973 100644 --- a/src/composables/stomp/index.ts +++ b/src/composables/stomp/index.ts @@ -1,6 +1,6 @@ import type { NdmDeviceAlarmLogResultVO } from '@/apis'; import { TOPIC_DEVICE_ALARM } from '@/constants'; -import { useCurrentAlarmsStore } from '@/stores'; +import { useAlarmStore } from '@/stores'; import { Client } from '@stomp/stompjs'; import { destr } from 'destr'; import { storeToRefs } from 'pinia'; @@ -15,8 +15,8 @@ const getBrokerUrl = () => { }; export const useStompClient = () => { - const currentAlarmsStore = useCurrentAlarmsStore(); - const { currentAlarmCount } = storeToRefs(currentAlarmsStore); + const alarmStore = useAlarmStore(); + const { unreadAlarmCount } = storeToRefs(alarmStore); const stompClient = ref(null); onMounted(() => { @@ -30,7 +30,7 @@ export const useStompClient = () => { stompClient.value?.subscribe(TOPIC_DEVICE_ALARM, (message) => { const alarm = destr(message.body); if (alarm.alarmCategory === '1') { - currentAlarmCount.value++; + unreadAlarmCount.value++; } }); }, diff --git a/src/constants/query.ts b/src/constants/query.ts index 56010dc..b9217c8 100644 --- a/src/constants/query.ts +++ b/src/constants/query.ts @@ -1,4 +1,3 @@ -export const STATION_LIST_QUERY_KEY = 'station-list'; +export const LINE_STATIONS_QUERY_KEY = 'line-stations'; export const LINE_DEVICES_QUERY_KEY = 'line-devices'; export const LINE_ALARMS_QUERY_KEY = 'line-alarms'; -export const DEVICE_SNMP_LOGS_QUERY_KEY = 'device-snmp-logs'; diff --git a/src/layouts/app-layout.vue b/src/layouts/app-layout.vue index 70e0a06..0171b0b 100644 --- a/src/layouts/app-layout.vue +++ b/src/layouts/app-layout.vue @@ -7,9 +7,9 @@ function renderIcon(icon: Component): () => VNode { diff --git a/src/pages/device-page.vue b/src/pages/device-page.vue index 525b1ce..d61dd16 100644 --- a/src/pages/device-page.vue +++ b/src/pages/device-page.vue @@ -1,7 +1,7 @@