From f5fe717d7d075bef08aa0a1a65e9b870e72d5b37 Mon Sep 17 00:00:00 2001 From: ozh Date: Wed, 19 Aug 2026 16:31:33 +0800 Subject: [PATCH] =?UTF-8?q?feat(event):=20=E7=A7=BB=E9=99=A4=E8=A1=A5?= =?UTF-8?q?=E4=B8=81=E6=97=A5=E5=8E=86=E7=BB=84=E4=BB=B6=EF=BC=8C=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E6=8A=BD=E5=B1=89=E6=94=B9=E4=B8=BA=E8=87=AA=E7=BB=98?= =?UTF-8?q?=E6=BB=9A=E5=8A=A8=E6=97=A5=E5=8E=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除 components/patched-calendar 五件补丁版日历组件与 pages.json 的 up-calendar 映射,恢复使用 uview-plus 原始 up-calendar - 时间抽屉改为自绘:顶置"近 7/30/90 天"快捷范围、星期行 + 月份网格, scroll-view 懒渲染(窗口外月份占位,避免一次渲染 130+ 月) - 滚动驱动懒渲染窗口更新(按 rpx 偏移量差阈值触发) - 最多回溯 10 年,提供按快捷范围点选直接填满起止 --- components/patched-calendar/header.vue | 109 ---- components/patched-calendar/month.vue | 632 --------------------- components/patched-calendar/props.js | 169 ------ components/patched-calendar/u-calendar.vue | 421 -------------- components/patched-calendar/util.js | 86 --- pages.json | 3 +- pages/event/index.vue | 559 ++++++++++++------ 7 files changed, 389 insertions(+), 1590 deletions(-) delete mode 100644 components/patched-calendar/header.vue delete mode 100644 components/patched-calendar/month.vue delete mode 100644 components/patched-calendar/props.js delete mode 100644 components/patched-calendar/u-calendar.vue delete mode 100644 components/patched-calendar/util.js diff --git a/components/patched-calendar/header.vue b/components/patched-calendar/header.vue deleted file mode 100644 index afb9f76..0000000 --- a/components/patched-calendar/header.vue +++ /dev/null @@ -1,109 +0,0 @@ - - - - - diff --git a/components/patched-calendar/month.vue b/components/patched-calendar/month.vue deleted file mode 100644 index aafaaba..0000000 --- a/components/patched-calendar/month.vue +++ /dev/null @@ -1,632 +0,0 @@ - - - - - diff --git a/components/patched-calendar/props.js b/components/patched-calendar/props.js deleted file mode 100644 index 87f019b..0000000 --- a/components/patched-calendar/props.js +++ /dev/null @@ -1,169 +0,0 @@ -import { defineMixin } from 'uview-plus/libs/vue' -import defProps from 'uview-plus/libs/config/props.js' - -export const props = defineMixin({ - props: { - // 日历顶部标题 - title: { - type: String, - default: () => defProps.calendar.title - }, - // 是否显示标题 - showTitle: { - type: Boolean, - default: () => defProps.calendar.showTitle - }, - // 是否显示副标题 - showSubtitle: { - type: Boolean, - default: () => defProps.calendar.showSubtitle - }, - // 日期类型选择,single-选择单个日期,multiple-可以选择多个日期,range-选择日期范围 - mode: { - type: String, - default: () => defProps.calendar.mode - }, - // mode=range时,第一个日期底部的提示文字 - startText: { - type: String, - default: () => defProps.calendar.startText - }, - // mode=range时,最后一个日期底部的提示文字 - endText: { - type: String, - default: () => defProps.calendar.endText - }, - // 自定义列表 - customList: { - type: Array, - default: () => defProps.calendar.customList - }, - // 主题色,对底部按钮和选中日期有效 - color: { - type: String, - default: () => defProps.calendar.color - }, - // 最小的可选日期 - minDate: { - type: [String, Number], - default: () => defProps.calendar.minDate - }, - // 最大可选日期 - maxDate: { - type: [String, Number], - default: () => defProps.calendar.maxDate - }, - // 默认选中的日期,mode为multiple或range是必须为数组格式 - defaultDate: { - type: [Array, String, Date, null], - default: () => defProps.calendar.defaultDate - }, - // mode=multiple时,最多可选多少个日期 - maxCount: { - type: [String, Number], - default: () => defProps.calendar.maxCount - }, - // 日期行高 - rowHeight: { - type: [String, Number], - default: () => defProps.calendar.rowHeight - }, - // 日期格式化函数 - formatter: { - type: [Function, null], - default: () => defProps.calendar.formatter - }, - // 是否显示农历 - showLunar: { - type: Boolean, - default: () => defProps.calendar.showLunar - }, - // 是否显示月份背景色 - showMark: { - type: Boolean, - default: () => defProps.calendar.showMark - }, - // 确定按钮的文字 - confirmText: { - type: String, - default: () => defProps.calendar.confirmText - }, - // 确认按钮处于禁用状态时的文字 - confirmDisabledText: { - type: String, - default: () => defProps.calendar.confirmDisabledText - }, - // 是否显示日历弹窗 - show: { - type: Boolean, - default: () => defProps.calendar.show - }, - // 是否允许点击遮罩关闭日历 - closeOnClickOverlay: { - type: Boolean, - default: () => defProps.calendar.closeOnClickOverlay - }, - // 是否为只读状态,只读状态下禁止选择日期 - readonly: { - type: Boolean, - default: () => defProps.calendar.readonly - }, - // 是否展示确认按钮 - showConfirm: { - type: Boolean, - default: () => defProps.calendar.showConfirm - }, - // 日期区间最多可选天数,默认无限制,mode = range时有效 - maxRange: { - type: [Number, String], - default: () => defProps.calendar.maxRange - }, - // 范围选择超过最多可选天数时的提示文案,mode = range时有效 - rangePrompt: { - type: String, - default: () => defProps.calendar.rangePrompt - }, - // 范围选择超过最多可选天数时,是否展示提示文案,mode = range时有效 - showRangePrompt: { - type: Boolean, - default: () => defProps.calendar.showRangePrompt - }, - // 是否允许日期范围的起止时间为同一天,mode = range时有效 - allowSameDay: { - type: Boolean, - default: () => defProps.calendar.allowSameDay - }, - // 圆角值 - round: { - type: [Boolean, String, Number], - default: () => defProps.calendar.round - }, - // 最多展示月份数量 - monthNum: { - type: [Number, String], - default: 3 - }, - // 星期文案 - weekText: { - type: Array, - default: defProps.calendar.weekText - }, - forbidDays: { - type: Array, - default: defProps.calendar.forbidDays - }, - forbidDaysToast:{ - type: String, - default: defProps.calendar.forbidDaysToast - }, - monthFormat:{ - type: String, - default: defProps.calendar.monthFormat - }, - // 是否页面内展示 - pageInline:{ - type: Boolean, - default: defProps.calendar.pageInline - } - } -}) diff --git a/components/patched-calendar/u-calendar.vue b/components/patched-calendar/u-calendar.vue deleted file mode 100644 index 5a88a9c..0000000 --- a/components/patched-calendar/u-calendar.vue +++ /dev/null @@ -1,421 +0,0 @@ - - - - - diff --git a/components/patched-calendar/util.js b/components/patched-calendar/util.js deleted file mode 100644 index 6303319..0000000 --- a/components/patched-calendar/util.js +++ /dev/null @@ -1,86 +0,0 @@ -import dayjs from 'uview-plus/components/u-datetime-picker/dayjs.esm.min.js'; -export default { - methods: { - // 设置月份数据 - setMonth() { - // 月初是周几 - const day = dayjs(this.date).date(1).day() - const start = day == 0 ? 6 : day - 1 - - // 本月天数 - const days = dayjs(this.date).endOf('month').format('D') - - // 上个月天数 - const prevDays = dayjs(this.date).endOf('month').subtract(1, 'month').format('D') - - // 日期数据 - const arr = [] - // 清空表格 - this.month = [] - - // 添加上月数据 - arr.push( - ...new Array(start).fill(1).map((e, i) => { - const day = prevDays - start + i + 1 - - return { - value: day, - disabled: true, - date: dayjs(this.date).subtract(1, 'month').date(day).format('YYYY-MM-DD') - } - }) - ) - - // 添加本月数据 - arr.push( - ...new Array(days - 0).fill(1).map((e, i) => { - const day = i + 1 - - return { - value: day, - date: dayjs(this.date).date(day).format('YYYY-MM-DD') - } - }) - ) - - // 添加下个月 - arr.push( - ...new Array(42 - days - start).fill(1).map((e, i) => { - const day = i + 1 - - return { - value: day, - disabled: true, - date: dayjs(this.date).add(1, 'month').date(day).format('YYYY-MM-DD') - } - }) - ) - - // 分割数组 - for (let n = 0; n < arr.length; n += 7) { - this.month.push( - arr.slice(n, n + 7).map((e, i) => { - e.index = i + n - - // 自定义信息 - const custom = this.customList.find((c) => c.date == e.date) - - // 农历 - if (this.lunar) { - const { - IDayCn, - IMonthCn - } = this.getLunar(e.date) - e.lunar = IDayCn == '初一' ? IMonthCn : IDayCn - } - - return { - ...e, - ...custom - } - }) - ) - } - } - } -} diff --git a/pages.json b/pages.json index a1c2ab3..dade0f7 100644 --- a/pages.json +++ b/pages.json @@ -79,9 +79,8 @@ "easycom": { "autoscan": true, "custom": { - "^up-calendar$": "@/components/patched-calendar/u-calendar.vue", "^u-(.*)": "uview-plus/components/u-$1/u-$1.vue", "^up-(.*)": "uview-plus/components/u-$1/u-$1.vue" } } -} +} \ No newline at end of file diff --git a/pages/event/index.vue b/pages/event/index.vue index b2df4bd..93a76ef 100644 --- a/pages/event/index.vue +++ b/pages/event/index.vue @@ -79,9 +79,7 @@ - - + @@ -90,40 +88,70 @@ - - + + + + + {{ q.label }} + - + + + + {{ w }} + + + + + + + + + + + @@ -133,15 +161,38 @@