From 28d06dfdb249a546246aa1b2dc835f82a5319b5d Mon Sep 17 00:00:00 2001 From: HenryDu8133 <813367384@qq.com> Date: Sun, 13 Sep 2026 09:58:13 +0800 Subject: [PATCH] =?UTF-8?q?fix(admin):=20=E4=BF=AE=E6=AD=A3=E6=97=A5?= =?UTF-8?q?=E6=9C=9F=E6=BB=9A=E5=8A=A8=E8=8C=83=E5=9B=B4=E8=BF=87=E5=B0=8F?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E6=89=BE=E4=B8=8D=E5=88=B0=E4=BB=8A=E5=A4=A9?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 上一版把扩天步长压到±3天且多选start锁死≥0,需要滚很多次才到目标日期. 调整: - 单次滚动像素: 120px → 160px (约3~4张卡片) - 初始范围: 单选 -10~+15天 / 多选 -3~+38天 (多选允许看过去3天以便对齐今日) - 无限扩天步长: ±5天 (折衷); 扩天触发阈值 50px→100px,快到边缘就提前扩 - 多选去除 Math.max(0,start) 限制,允许往过去扩展 --- app/components/Admin/AdminDatePicker.vue | 18 +++++++++--------- app/components/Admin/AdminMultiDatePicker.vue | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/app/components/Admin/AdminDatePicker.vue b/app/components/Admin/AdminDatePicker.vue index 95aa9bf..30745f5 100644 --- a/app/components/Admin/AdminDatePicker.vue +++ b/app/components/Admin/AdminDatePicker.vue @@ -169,7 +169,7 @@ const emit = defineEmits(['update:modelValue', 'change']) const dateSelector = ref(null) const isFirstDateVisible = ref(false) const isLastDateVisible = ref(false) -const dateRange = ref({ start: -8, end: 10 }) +const dateRange = ref({ start: -10, end: 15 }) const showCalendar = ref(false) const pad = (n) => n.toString().padStart(2, '0') @@ -248,7 +248,7 @@ const scrollToDateElement = (behavior = 'smooth') => { const handleWheel = (event) => { event.preventDefault() if (!dateSelector.value) return - const scrollAmount = 120 + const scrollAmount = 160 const currentScroll = dateSelector.value.scrollLeft dateSelector.value.scrollTo({ left: event.deltaY > 0 ? currentScroll + scrollAmount : currentScroll - scrollAmount, @@ -258,7 +258,7 @@ const handleWheel = (event) => { const scrollDates = (direction) => { if (!dateSelector.value) return - const scrollAmount = 120 + const scrollAmount = 160 const currentScroll = dateSelector.value.scrollLeft dateSelector.value.scrollTo({ left: direction === 'right' ? currentScroll + scrollAmount : currentScroll - scrollAmount, @@ -269,16 +269,16 @@ const scrollDates = (direction) => { const handleScroll = () => { if (!dateSelector.value) return const { scrollLeft, scrollWidth, clientWidth } = dateSelector.value - if (scrollLeft < 50) { + if (scrollLeft < 100) { const oldScrollWidth = scrollWidth - dateRange.value.start -= 3 + dateRange.value.start -= 5 nextTick(() => { const newScrollWidth = dateSelector.value.scrollWidth dateSelector.value.scrollLeft += newScrollWidth - oldScrollWidth }) } - if (scrollWidth - scrollLeft - clientWidth < 50) { - dateRange.value.end += 3 + if (scrollWidth - scrollLeft - clientWidth < 100) { + dateRange.value.end += 5 } } @@ -286,8 +286,8 @@ const scrollToToday = () => { const todayStr = formatDateStr(today) if (props.modelValue !== todayStr) selectDate(todayStr) if (dateRange.value.start > 0 || dateRange.value.end < 0) { - dateRange.value.start = -8 - dateRange.value.end = 10 + dateRange.value.start = -10 + dateRange.value.end = 15 } nextTick(() => scrollToDateElement('smooth')) } diff --git a/app/components/Admin/AdminMultiDatePicker.vue b/app/components/Admin/AdminMultiDatePicker.vue index 035a711..db9553b 100644 --- a/app/components/Admin/AdminMultiDatePicker.vue +++ b/app/components/Admin/AdminMultiDatePicker.vue @@ -191,7 +191,7 @@ const emit = defineEmits(['update:modelValue', 'change']) const dateSelector = ref(null) const isFirstDateVisible = ref(false) const isLastDateVisible = ref(false) -const dateRange = ref({ start: 0, end: 28 }) +const dateRange = ref({ start: -3, end: 38 }) const showCalendar = ref(false) const lastClickedDate = ref('') @@ -343,7 +343,7 @@ const applyBatchAction = (action) => { const handleWheel = (event) => { event.preventDefault() if (!dateSelector.value) return - const scrollAmount = 120 + const scrollAmount = 160 const currentScroll = dateSelector.value.scrollLeft dateSelector.value.scrollTo({ left: event.deltaY > 0 ? currentScroll + scrollAmount : currentScroll - scrollAmount, @@ -353,7 +353,7 @@ const handleWheel = (event) => { const scrollDates = (direction) => { if (!dateSelector.value) return - const scrollAmount = 120 + const scrollAmount = 160 const currentScroll = dateSelector.value.scrollLeft dateSelector.value.scrollTo({ left: direction === 'right' ? currentScroll + scrollAmount : currentScroll - scrollAmount, @@ -364,23 +364,23 @@ const scrollDates = (direction) => { const handleScroll = () => { if (!dateSelector.value) return const { scrollLeft, scrollWidth, clientWidth } = dateSelector.value - if (scrollLeft < 50 && dateRange.value.start > 0) { + if (scrollLeft < 100) { const oldScrollWidth = scrollWidth - dateRange.value.start = Math.max(0, dateRange.value.start - 3) + dateRange.value.start -= 5 nextTick(() => { const newScrollWidth = dateSelector.value.scrollWidth dateSelector.value.scrollLeft += newScrollWidth - oldScrollWidth }) } - if (scrollWidth - scrollLeft - clientWidth < 50) { - dateRange.value.end += 3 + if (scrollWidth - scrollLeft - clientWidth < 100) { + dateRange.value.end += 5 } } const scrollToToday = () => { if (dateRange.value.start > 0 || dateRange.value.end < 0) { - dateRange.value.start = 0 - dateRange.value.end = 20 + dateRange.value.start = -3 + dateRange.value.end = 25 } nextTick(() => { if (!dateSelector.value) return