Skip to content

TimeSelect 配送时间

介绍

用于配送时间选择。

基础用法

html
<template>
  <nut-time-select
    v-model:visible="visible"
    height="50%"
    :current-key="currentKey"
    :current-time="currentTime"
    @select="onSelect"
  >
    <template #pannel>
      <nut-time-pannel
        name="2月23日(今天)"
        pannel-key="0"
        @change="onChange"
      ></nut-time-pannel>

      <nut-time-pannel
        name="2月24日(星期三)"
        pannel-key="1"
        @change="onChange"
      ></nut-time-pannel>
    </template>

    <template #detail>
      <nut-time-detail :times="times" @select="onDetailSelect"></nut-time-detail>
    </template>
  </nut-time-select>
</template>
ts
const visible = ref(false);

const currentKey = ref(0);
const currentTime = ref([]);

const times = reactive([
  {
    key: 0,
    list: ["9:00-10:00", "10:00-11:00", "11:00-12:00"]
  },
  {
    key: 1,
    list: ["9:00-10:00", "10:00-11:00"]
  }
]);

function onChange(pannelKey: number) {
  currentKey.value = pannelKey;
  currentTime.value = [{
    key: currentKey.value,
    list: []
  }];
};

function onDetailSelect(item: string) {
  const index = currentTime.value[0].list.findIndex((time: string) => time === item);

  if (index === -1) {
    currentTime.value[0].list.push(item);
  } else {
    currentTime.value[0].list.splice(index, 1);
  }
};

function onSelect(event: any) {
  console.log("选择", event);
};

onMounted(() => {
  currentTime.value.push({
    key: currentKey.value,
    list: []
  });
});

API

Props

参数说明类型可选值默认值
visible是否显示弹层boolean-false
height弹层的高度string-20%
title弹层标题string-取件时间
current-key唯一标识string / number-0
current-time当前选择的时间 {key: string; list: string[]}[]Array-[]
lock-scroll H5背景是否锁定boolean-true

Events

事件名说明类型
select关闭遮罩之后的回调(value: { key: string; list: string[] }) => void

Slots

名称说明
title更改标题
pannel左侧列表
detail右侧内容

TimePannel Props

参数说明类型可选值默认值
name显示的名称string--
pannel-key唯一标识string / number-0

TimePannel Events

事件名说明类型
change点击内容的回调(pannelKey: string | number) => void

TimeDetail Props

参数说明类型可选值默认值
times可选择的时间Array-[]

TimeDetail Events

事件名说明类型
select点击时间的回调(time: string) => void

主题定制

样式变量

组件提供了下列 CSS 变量,可用于自定义样式,使用方法请参考 ConfigProvider 组件

名称默认值
--nut-timeselect-title-font-sizevar(--nut-font-size-2)
--nut-timeselect-title-colorvar(--nut-title-color)
--nut-timeselect-title-width100%
--nut-timeselect-title-height50px
--nut-timeselect-title-line-height50px
--nut-timeselect-pannel-bg-color#f6f7f9
--nut-timeselect-timepannel-text-colorvar(--nut-title-color2)
--nut-timeselect-timepannel-font-sizevar(--nut-font-size-2)
--nut-timeselect-timepannel-cur-bg-colorvar(--nut-white)
--nut-timeselect-timepannel-cur-text-color#333333
--nut-timeselect-timepannel-width140px
--nut-timeselect-timepannel-height40px
--nut-timeselect-timepannel-padding15px
--nut-timeselect-timedetail-padding0 5px 50px 13px
--nut-timeselect-timedetail-item-width100px
--nut-timeselect-timedetail-item-height50px
--nut-timeselect-timedetail-item-line-height50px
--nut-timeselect-timedetail-item-bg-color#f6f7f9
--nut-timeselect-timedetail-item-border-radius5px
--nut-timeselect-timedetail-item-text-color#333333
--nut-timeselect-timedetail-item-text-font-sizevar(--nut-font-size-2)
--nut-timeselect-timedetail-item-cur-bg-colorvar(--nut-primary-color)
--nut-timeselect-timedetail-item-cur-bordervar(--nut-primary-color)
--nut-timeselect-timedetail-item-cur-text-colorvar(--nut-primary-color)

MIT Licensed