diff --git a/src/composables/query/use-station-list-query.ts b/src/composables/query/use-station-list-query.ts index 0ad58aa..a8ca4c9 100644 --- a/src/composables/query/use-station-list-query.ts +++ b/src/composables/query/use-station-list-query.ts @@ -35,7 +35,16 @@ export function useStationListQuery() { online: pingResultList[index].status === 'fulfilled', })); - stationList.value.splice(0, stationList.value.length, ...stations); + const isSame = + stationList.value.length === stations.length && + stationList.value.every((oldStation, index) => { + const newStation = stations[index]; + return oldStation.code === newStation.code && oldStation.name === newStation.name && oldStation.deviceIdPrefix === newStation.deviceIdPrefix && oldStation.online === newStation.online; + }); + + if (!isSame) { + stationList.value.splice(0, stationList.value.length, ...stations); + } updatedTime.value = dayjs().toJSON(); diff --git a/src/pages/alarm-page.vue b/src/pages/alarm-page.vue index e4de17f..ff855c9 100644 --- a/src/pages/alarm-page.vue +++ b/src/pages/alarm-page.vue @@ -10,26 +10,11 @@ import dayjs from 'dayjs'; import type { DataTableColumns, DataTableRowData, PaginationProps, SelectOption } from 'naive-ui'; import { NForm, NInput, NButton, NSpace, NDataTable, NFormItemGi, NGrid, NSelect, NGridItem, NDatePicker } from 'naive-ui'; import { storeToRefs } from 'pinia'; -import { ref, reactive, onBeforeMount, h, shallowRef, watch, computed } from 'vue'; +import { ref, reactive, onBeforeMount, h, computed } from 'vue'; const stationStore = useStationStore(); const { stationList } = storeToRefs(stationStore); -// const stationSelectOptions = shallowRef([]); -// watch( -// stationList, -// (list) => { -// const next = list.map((station) => ({ -// label: station.name, -// value: station.deviceIdPrefix, -// })); -// stationSelectOptions.value.splice(0, stationSelectOptions.value.length, ...next); -// }, -// { -// immediate: true, -// deep: true, -// }, -// ); const stationSelectOptions = computed(() => { return stationList.value.map((station) => ({ label: station.name, diff --git a/src/pages/vimp-log-page.vue b/src/pages/vimp-log-page.vue index d75bc96..7288d35 100644 --- a/src/pages/vimp-log-page.vue +++ b/src/pages/vimp-log-page.vue @@ -24,31 +24,17 @@ import { type SelectOption, } from 'naive-ui'; import { storeToRefs } from 'pinia'; -import { computed, h, onBeforeMount, reactive, ref, shallowRef, watch } from 'vue'; +import { computed, h, onBeforeMount, reactive, ref } from 'vue'; useStationListQuery(); const stationStore = useStationStore(); const { stationList } = storeToRefs(stationStore); -// const stationSelectOptions = shallowRef([]); -// watch( -// stationList, -// (list) => { -// const next = list.map((station) => ({ -// label: station.name, -// value: station.deviceIdPrefix, -// })); -// stationSelectOptions.value.splice(0, stationSelectOptions.value.length, ...next); -// }, -// { -// immediate: true, -// deep: true, -// }, -// ); const stationSelectOptions = computed(() => { return stationList.value.map((station) => ({ label: station.name, value: station.deviceIdPrefix, + disabled: !station.online, })); });