pumpkin-ui
指南
组件
指南
组件
  • 基础组件

    • Button 按钮
    • Cell 单元格
    • Icon 图标
    • Popup 弹出层
    • Toast 轻提示
  • 表单组件

    • PickerView 选择器视图
    • Picker 选择器
    • DatePicker 日期时间选择器
    • Switch 开关
    • Field 输入项
    • Form 表单
    • Checkbox 复选框
    • Radio 单选框
  • 反馈组件

    • Overlay 遮罩
    • Loading 加载
    • ActionSheet 动作面板
    • Notify 消息提示
    • Skeleton 骨架屏
    • Dialog 对话框
  • 展示组件

    • Progress 进度条
    • Divider 分割线
    • Badge 徽标
    • Empty 空元素
    • Tag 标签

DatePicker 日期时间选择器

基本使用

命令式调用

script


import { Toast, DatePicker } from "@pumpkin-ui/mobile"
const showDefaultDatePicker = () => {
    DatePicker.showDatePicker().then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.value))}`)
        else Toast.showTshowoast('取消选择')
    })
}

代码示例

基础用法

通过showDatePicker方法调用,传入数据,即可展示日期时间选择器。

template
<div class="date-picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showDefaultDatePicker">
            <template #title>基础用法</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, DatePicker } from "@pumpkin-ui/mobile"

const showDefaultDatePicker = () => {
    DatePicker.showDatePicker().then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.value))}`)
        else Toast.show('取消选择')
    })
}

style
.date-picker-container {
    padding: 10px 0;
}

默认值

可通过current属性设置默认值。

template
<div class="date-picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showDatePickerWithDefaultDate">
            <template #title>默认值(2022/01/01)</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, DatePicker } from "@pumpkin-ui/mobile"

const showDatePickerWithDefaultDate = () => {
    DatePicker.showDatePicker({
        current: new Date(2022, 0, 1)
    }).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.value))}`)
        else Toast.show('取消选择')
    })
}


style
.date-picker-container {
    padding: 10px 0;
}

日期范围

可通过min、max属性分别设置最小值,最大值。

提示

当前暂不支持设置时间选择的最大值和最小值。

template
<div class="date-picker-container">
    <pk-cell-group>
       <pk-cell is-link @click="showDatePickerWidthMinMax">
          <template #title>设置日期范围(2022/01/01 - 2022/12/31)</template>
       </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, DatePicker } from "@pumpkin-ui/mobile"

const showDatePickerWidthMinMax = () => {
    DatePicker.showDatePicker({
        min: new Date(2022, 0, 1),
        max: new Date(2022, 11, 31)
    }).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.value))}`)
        else Toast.show('取消选择')
    })
}


style
.date-picker-container {
    padding: 10px 0;
}

时间选择

可通过设置type属性为['hour', 'minute', 'second']展示时间选择。

template
<div class="date-picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showDatePickerTime">
            <template #title>时间选择</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, DatePicker } from "@pumpkin-ui/mobile"

const showDatePickerTime = () => {
    DatePicker.showDatePicker({
        type: ['hour', 'minute', 'second']
    }).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.value))}`)
        else Toast.show('取消选择')
    })
}

style
.date-picker-container {
    padding: 10px 0;
}

时间选择默认值

可通过current属性设置默认值。

template
<div class="date-picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showDatePickerWithDefaultTime">
            <template #title>时间选择默认值(12:00:00)</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, DatePicker } from "@pumpkin-ui/mobile"

const showDatePickerWithDefaultTime = () => {
    DatePicker.showDatePicker({
        type: ['hour', 'minute', 'second'],
        current: new Date(2024, 0, 1, 12, 0, 0)
    }).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.value))}`)
        else Toast.show('取消选择')
    })
}

style
.date-picker-container {
    padding: 10px 0;
}

选项过滤

可通过filter过滤选项。

template
<div class="date-picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showItemFilterDatePicker">
            <template #title>选项过滤(不显示7月)</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, DatePicker } from "@pumpkin-ui/mobile"

const showItemFilterDatePicker = () => {
    DatePicker.showDatePicker({
        filter: (type, item) => {
            if (type === 'month') return item.value !== 7

            return true
        }
    }).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.value))}`)
        else Toast.show('取消选择')
    })
}

style
.date-picker-container {
    padding: 10px 0;
}

自定义label

可通过formatter自定义label。

template
<div class="date-picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showItemFormatterDatePicker">
            <template #title>选项label自定义</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, DatePicker } from "@pumpkin-ui/mobile"

const showItemFormatterDatePicker = () => {
    DatePicker.showDatePicker({
        formatter: (type, item) => {
            let unit = ''
            if (type === 'year') unit = '年'
            else if (type === 'month') unit = '月'
            else if (type === 'day') unit = '日'

            return {
                ...item,
                label: item.label + unit
            }
        }
    }).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.value))}`)
        else Toast.show('取消选择')
    })
}

style
.date-picker-container {
    padding: 10px 0;
}

禁用点击遮罩层关闭

通过设置closeOnPressOverlay为false禁用点击遮罩层关闭DatePicker。

template
<div class="date-picker-container">
    <pk-cell-group>
        <pk-cell is-link @click="showNotCloseOnPressOverlay">
            <template #title>禁用点击overlay关闭</template>
        </pk-cell>
    </pk-cell-group>
</div>
script
import { PkCellGroup, Toast, PkCell, DatePicker } from "@pumpkin-ui/mobile"

const showNotCloseOnPressOverlay = () => {
    DatePicker.showDatePicker({
        closeOnPressOverlay: false
    }).then(result => {
        if (result.type === 'confirm') Toast.show(`选择了:${JSON.stringify(result.items.map(item => item.value))}`)
        else Toast.show('取消选择')
    })
}

style
.date-picker-container {
    padding: 10px 0;
}

API

命令式调用

方法

方法说明类型
Picker.showDatePicker显示Picker(option: DatePickerOptions)=>Promise<DatePickerCallbackParams>

PickerOptions

属性名说明类型默认值
current日期时间选择器的默认值Date|string系统时间。不在范围内,则为第一列
min日期时间选择器的日期最小值Date|string前十年
max日期时间选择器的日期最大值Date|string后十年
type日期时间选择器展示的列DatePickerType[]['year','month','day']
formatter日期时间选择器选项修改器(type:DatePickerSimpleType,item:PickerItem)=>PickerItem
filter日期时间选择器选项过滤器(type:DatePickerSimpleType,item:PickerItem)=>boolean
backgroundColor选择器的背景颜色string
round是否圆角booleantrue
closeOnPressOverlay点击遮罩层是否关闭booleantrue
visibleItemCount选择器可视的选项数量number5
itemHeight选择器单个选项的高度,单位为pxnumber50
overlay是否显示遮罩层booleantrue
overlayBackgroundColor遮罩层背景颜色string
fade弹出层是否以fade动画形式打开关闭booleanfalse
zIndex层级number
title选择器的toolbar标题string
cancelText选择器的toolbar取消文案string取消
confirmText选择器的toolbar确定文案string确定
onChange选择器值变化时触发的回调(用户主动触发)(values:PickerItem[])=>void
onCancel选择器取消时触发的回调()=>void
onConfirm选择器确认时触发的回调(values:PickerItem[])=>void
onClose选择器关闭时触发的回调()=>void
onClosed选择器关闭动画结束时触发的回调()=>void
onOpen选择器打开时触发的回调()=>void
onOpened选择器打开动画结束时触发的回调()=>void

DatePickerType

值说明
year年
Y年
month月
M月
day日
D日
hour时
H时
minute分
m分
second秒
s秒

DatePickerSimpleType

值说明
year年
month月
day日
hour时
minute分
second秒

PickerItem

属性名说明类型必选
label选项文本string|number是
value选项值string|number是
children子选项PickerItem[]

DatePickerCallbackParams

属性名说明类型默认值
type类型'confirm'|'cancel'
items选项(confirm时才有)PickerItem[]

Props

属性名说明类型默认值可选值
v-model是否显示日期日期选择器组件,双向绑定boolean
current日期时间选择器的默认值,仅初始化时传入有效Date|string系统时间。不在范围内,则为第一列
min日期时间选择器的日期最小值Date|string前十年
max日期时间选择器的日期最大值Date|string后十年
type日期时间选择器展示的列DatePickerType[]['year','month','day']
formatter日期时间选择器选项修改器(type:DatePickerSimpleType,item:PickerItem)=>PickerItem
filter日期时间选择器选项过滤器(type:DatePickerSimpleType,item:PickerItem)=>boolean
backgroundColor选择器的背景颜色string
round是否圆角booleantrue
closeOnPressOverlay点击遮罩层是否关闭booleantrue
visibleItemCount选择器可视的选项数量number5
itemHeight选择器单个选项的高度,单位为pxnumber50
overlay是否显示遮罩层booleantrue
overlayBackgroundColor遮罩层背景颜色string
fade弹出层是否以fade动画形式打开关闭booleanfalse
zIndex层级number
title选择器的toolbar标题string
cancelText选择器的toolbar取消文案string取消
confirmText选择器的toolbar确定文案string确定

Events

事件名说明回调参数
onOpen打开时触发() => void
onClose打开时触发() => void
onOpened打开动画结束时触发() => void
onClosed关闭动画结束时触发() => void
onCancel点击取消时的回调()=>void
onConfirm选择器确认时触发的回调(values:PickerItem[])=>void
onChange选择器值变化时触发的回调(用户主动触发)(values:PickerItem[])=>void

Slot

插槽名说明

Exposes

名称说明类型说明
updateShow更新选择器显示(show:boolean = true)=>void

样式变量

名称默认值说明
Last Updated:
Contributors: yranky
Prev
Picker 选择器
Next
Switch 开关