perf: try to fix select options scroll to top when stations refresh
This commit is contained in:
@@ -10,26 +10,32 @@ 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 } from 'vue';
|
||||
import { ref, reactive, onBeforeMount, h, shallowRef, watch, computed } from 'vue';
|
||||
|
||||
const stationStore = useStationStore();
|
||||
const { stationList } = storeToRefs(stationStore);
|
||||
|
||||
const stationSelectOptions = shallowRef<SelectOption[]>([]);
|
||||
watch(
|
||||
stationList,
|
||||
(list) => {
|
||||
const next = list.map<SelectOption>((station) => ({
|
||||
label: station.name,
|
||||
value: station.deviceIdPrefix,
|
||||
}));
|
||||
stationSelectOptions.value.splice(0, stationSelectOptions.value.length, ...next);
|
||||
},
|
||||
{
|
||||
immediate: true,
|
||||
deep: true,
|
||||
},
|
||||
);
|
||||
// const stationSelectOptions = shallowRef<SelectOption[]>([]);
|
||||
// watch(
|
||||
// stationList,
|
||||
// (list) => {
|
||||
// const next = list.map<SelectOption>((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<SelectOption>((station) => ({
|
||||
label: station.name,
|
||||
value: station.deviceIdPrefix,
|
||||
}));
|
||||
});
|
||||
|
||||
const searchFields = reactive({
|
||||
stationCode_in: [] as string[],
|
||||
|
||||
@@ -24,27 +24,33 @@ import {
|
||||
type SelectOption,
|
||||
} from 'naive-ui';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { h, onBeforeMount, reactive, ref, shallowRef, watch } from 'vue';
|
||||
import { computed, h, onBeforeMount, reactive, ref, shallowRef, watch } from 'vue';
|
||||
|
||||
useStationListQuery();
|
||||
const stationStore = useStationStore();
|
||||
const { stationList } = storeToRefs(stationStore);
|
||||
|
||||
const stationSelectOptions = shallowRef<SelectOption[]>([]);
|
||||
watch(
|
||||
stationList,
|
||||
(list) => {
|
||||
const next = list.map<SelectOption>((station) => ({
|
||||
label: station.name,
|
||||
value: station.deviceIdPrefix,
|
||||
}));
|
||||
stationSelectOptions.value.splice(0, stationSelectOptions.value.length, ...next);
|
||||
},
|
||||
{
|
||||
immediate: true,
|
||||
deep: true,
|
||||
},
|
||||
);
|
||||
// const stationSelectOptions = shallowRef<SelectOption[]>([]);
|
||||
// watch(
|
||||
// stationList,
|
||||
// (list) => {
|
||||
// const next = list.map<SelectOption>((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<SelectOption>((station) => ({
|
||||
label: station.name,
|
||||
value: station.deviceIdPrefix,
|
||||
}));
|
||||
});
|
||||
|
||||
const searchFields = reactive({
|
||||
stationCode: stationList.value.find((s) => s.online)?.code,
|
||||
|
||||
Reference in New Issue
Block a user