You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.8 KiB
60 lines
1.8 KiB
4 weeks ago
|
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)
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|