bug
jiangping
2023-11-07 64b432916af9c9218ab3f3eca614e26c542142ae
minipro_standard/uni_modules/uview-ui/components/u-calendar/util.js
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,85 @@
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
                        }
                    })
                )
            }
        }
    }
}