Blame view

component/v2/plugins/solarLunar/index.js 1.73 KB
d46806b9     结构调整
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import { dateUtil } from '../../utils/index'
import convertSolarLunar from './convertSolarLunar'

function getDateRow2Dict(dateInfo) {
  if (!dateInfo) return dateInfo
  if (typeof dateInfo === 'string' && dateInfo.includes('-')) {
    dateInfo = dateUtil.transformDateRow2Dict(dateInfo)
  }
  return dateInfo
}

export default () => {
  return {
    name: 'convertSolarLunar',
    beforeRender(calendarData = {}, calendarConfig = {}) {
      let { dates = [], selectedDates = [] } = calendarData
      if (calendarConfig.showLunar) {
        dates = dates.map(dataInfo => {
          const { year, month, date } = dataInfo
          return {
            ...dataInfo,
            lunar: convertSolarLunar.solar2lunar(year, month, date)
          }
        })
        selectedDates = selectedDates.map(dataInfo => {
          const { year, month, date } = dataInfo
          return {
            ...dataInfo,
            lunar: convertSolarLunar.solar2lunar(year, month, date)
          }
        })
      }
      return {
        calendarData: {
          ...calendarData,
          dates: dates,
          selectedDates: selectedDates
        },
        calendarConfig
      }
    },
    methods() {
      return {
        convertSolarLunar: dateInfo => {
          dateInfo = getDateRow2Dict(dateInfo)
          if (!dateInfo) return dateInfo
          const { year, month, date } = dateInfo
          return convertSolarLunar.solar2lunar(year, month, date)
        },
        convertlLunar2Solar: (dateInfo, isLeapMonth) => {
          dateInfo = getDateRow2Dict(dateInfo)
          if (!dateInfo) return dateInfo
          const { year, month, date } = dateInfo
          return convertSolarLunar.lunar2solar(year, month, date, isLeapMonth)
        }
      }
    }
  }
}