diff --git a/src/pages/clazz/index.vue b/src/pages/clazz/index.vue index 31ac76c..fd38a0d 100644 --- a/src/pages/clazz/index.vue +++ b/src/pages/clazz/index.vue @@ -363,6 +363,10 @@ export default defineComponent({ if (cachedViewMode === 'matrix' || cachedViewMode === 'calendar') { viewMode.value = cachedViewMode; } + // 如果初始视图是矩阵,在组件挂载后加载矩阵视图数据 + if (viewMode.value === 'matrix') { + nextTick(() => triggerMatrixSearch()); + } const isLandscape = ref(false); @@ -407,13 +411,15 @@ export default defineComponent({ const matrixWeekStart = computed(() => { const d = new Date(matrixWeekCursor.value); const day = d.getDay(); - d.setDate(d.getDate() - day); + const diff = day === 0 ? 6 : day - 1; // Monday as first day of week + d.setDate(d.getDate() - diff); return formatDate(d, DateFormatter.Date); }); const matrixWeekEnd = computed(() => { const d = new Date(matrixWeekCursor.value); const day = d.getDay(); - d.setDate(d.getDate() + (6 - day)); + const diff = day === 0 ? 6 : day - 1; // Monday as first day of week + d.setDate(d.getDate() + (6 - diff)); return formatDate(d, DateFormatter.Date); }); const matrixWeekRange = computed(() => `${matrixWeekStart.value} ~ ${matrixWeekEnd.value}`); @@ -468,6 +474,9 @@ export default defineComponent({ isLandscape.value = false; } setKey('clazz_view_mode', mode); + if (mode === 'matrix') { + triggerMatrixSearch(); + } updateCalendarSize(); }; @@ -797,6 +806,8 @@ export default defineComponent({ view(event.id) }, datesSet: function({start, end}) { + // 矩阵视图有自己的日期范围和数据加载逻辑 + if (viewMode.value === 'matrix') return; if (store.hanging) { store.hanging = false; let {state: cachedState} = getKey('clazz_state');