Skip to content

Date Range Picker 日期选择器

type : 'date-range-picker'

日期选择器,用于选择年、月、日范围

代码演示

date-range-picker 是基于 date-picker 开发,因此其 API 与 date-picker 一致,可以同时在attrs 同时配置开始和结束的选择器属性,也可通过startPropsendProps 分别配置开始和结束的选择器属性。

<template>
    <x-form ref="formRef" label-align="top" :model="formValue"
        :items="formOptions" />
    <div style="margin:10px">
        <van-button @click="onSubmit" block type="primary">验证</van-button>
    </div>
</template>

<script lang="ts" setup>
import { ref, } from 'vue';
const formRef = ref();
const formValue = ref({
    day: ['2025-06-23', '2025-12-31'],
    month1: ['2025-06', '2025-12'],
});
const formOptions = ref([
    {
        type: 'date-range-picker',
        label: '日期范围',
        name: 'day',
        attrs: {
            startProps: {
                minDate: new Date(2020, 0, 1),
                maxDate: new Date(2025, 11, 31),
                filter: (type, options) => {
                    if (type === 'month') {
                        return options.filter((option) => Number(option.value) % 6 === 0);
                    }
                    return options;
                }
            },
            endProps: {
                minDate: new Date(2024, 0, 1),
                maxDate: new Date(2035, 11, 31),

            },
            formatter: (type, option) => {
                if (type === 'year') {
                    option.text += '年';
                }
                if (type === 'month') {
                    option.text += '月';
                }
                if (type === 'day') {
                    option.text += '日';
                }
                return option;
            },
            // 'column-type':['year', 'month', 'day']
        }
    },
    {
        type: 'date-range-picker',
        label: '年月范围',
        name: 'month1',
        attrs: {
            'columnsType': ['year', 'month']
        }
    },
    {
        type: 'date-range-picker',
        label: '月日范围',
        name: 'month2',
        attrs: {
            'columnsType': ['month', 'day'],
        }
    },
    {
        type: 'date-range-picker',
        label: '月分范围',
        name: 'month',
        attrs: {
            'columnsType': ['month']
        }
    },
    {
        type: 'date-range-picker',
        label: '年份范围',
        name: 'year',
        attrs: {
            'columnsType': ['year']
        }
    },
]);

const onSubmit = () => {
    formRef.value?.validate().then(() => {
        console.log('submit values =', formValue.value);
    }).catch((error: any) => {
        console.log('error', error);
    })
}
</script>
<style lang="scss" scoped></style>
用法展示

API

Props

参数说明类型默认值
startProps开始日期配置参数,配置与官方组件 date-picker 参数保持一致object-
endProps结束日期配置参数,配置与官方组件 date-picker 参数保持一致object-