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.
59 lines
1.8 KiB
59 lines
1.8 KiB
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) |
|
} |
|
} |
|
} |
|
} |
|
}
|
|
|