Skip to content

引入组件

局部引入

ts
// parent.vue
const FCalendar = defineAsyncComponent(() => import('@/components/formaui/f-calendar/f-calendar.vue'))

基础用法

弹层模式:通过 ref 调用 show() 打开日历

html
<f-calendar ref="calendarRef" is-fixed :mode="mode" :is-lunar="isLunar" @change="onChange" />
<f-button @click="calendarRef?.show()">选择单个日期</f-button>
ts
import { ref } from 'vue'

const calendarRef = ref<{ show: () => void } | null>(null)
const mode = ref<1 | 2>(1)
const isLunar = ref(true)
const result = ref('')
const lunarResult = ref('')

const onChange = (detail: {
  result?: string
  week?: string
  startDate?: string
  endDate?: string
  lunar?: any
  startLunar?: any
  endLunar?: any
}) => {
  if (mode.value === 1 && detail.result) {
    result.value = `${detail.result} ${detail.week}`
    // 农历信息见 detail.lunar
  } else if (detail.startDate && detail.endDate) {
    result.value = `${detail.startDate} 至 ${detail.endDate}`
  }
}

默认平铺展示:切换年月触发 change 并配合 dayStatus 标记

html
<f-calendar
  :is-lunar="isLunar"
  :switch-type="2"
  is-emit-on-month-change
  :day-status="dayStatus"
  @change="onMonthChange" />

mode属性:选择模式(默认1

  • 1:单日期
  • 2:起止日期

isLunar属性:显示农历(默认false

html
<f-calendar is-lunar @change="onChange" />

switchType属性:切换类型(默认1

  • 1:切换年、月
  • 2:仅切换月
html
<f-calendar :switch-type="2" @change="onChange" />

minDate / maxDate属性:可选日期范围

html
<f-calendar min-date="2022-10-07" max-date="2023-12-12" is-fixed @change="onChange" />

dayStatus属性:日期状态标记(平铺模式)

html
<f-calendar :day-status="dayStatus" @change="onChange" />

插槽

名称说明
--

属性

名称类型说明默认值
v-modelboolean弹层显隐,isFixed=true 时生效false
switchType1 | 2切换类型:1 年月 / 2 仅月1
mode1 | 2选择模式:1 单日期 / 2 起止1
maxYearnumber可切换最大年份2030
minYearnumber可切换最小年份1920
minDatestring最小可选日期1920-01-01
maxDatestring最大可选日期,空为今天-
titlestring弹层标题日期选择
isRadiusboolean弹层顶部圆角true
dayStatusFCalendarDayStatus[]日期状态数据[]
monthArrowColorstring月份箭头颜色#999999
yearArrowColorstring年份箭头颜色#BCBCBC
textColorstring默认日期文字颜色#0B1D4A
activeBgColorstring选中背景色主题色
activeColorstring选中文字颜色#FFFFFF
rangeBgColorstring范围内背景色rgba(86,119,252,0.1)
rangeColorstring范围内文字颜色主题色
startTextstring起始日期文案开始
endTextstring结束日期文案结束
confirmBgColorstring确定按钮背景色主题色
isFixedboolean是否底部弹层false
isFixedHeightboolean是否固定日历高度true
isActiveCurrentboolean当前选中是否高亮true
isEmitOnMonthChangeboolean单选时切换年月是否触发 changefalse
isLunarboolean是否显示农历false
isShowBgMonthboolean是否显示月份背景水印false
initStartDatestring初始起始日期-
initEndDatestring初始结束日期-

FCalendarDayStatus

名称类型说明
textstring描述,2字以内
valuestring | number状态值
bgColorstring背景色
colorstring文字颜色
checkboolean是否显示对勾

事件

事件名说明回调参数
change确认或内联选择时单选:{ year, month, day, result, week, lunar, ... };范围:{ startDate, endDate, ... }
close弹层关闭时-

方法

通过 ref 调用:

方法名说明传入参数
show打开弹层-
hide关闭弹层-