Skip to content

时间长度限制

通过 maxTimeLength 传入某段时间的值(毫秒数),来限制可选择的时间跨度,常用于防止请求时间跨度过大的情形

<template>
  <ClientOnly>
    <tiny-search-box v-model="tags" :items="items" @change="onChange" />
  </ClientOnly>
</template>

<script setup lang="ts">
import { reactive, ref } from "vue";

const tags = ref([]);

// 获取当前时间
const now = new Date();
// 获取一年的毫秒数:设置只能选择一年的时间区间
const year = 365 * 24 * 60 * 60 * 1000;
// 获取半年的毫秒数:设置只能选择半年的时间区间
const halfYear = (365 / 2) * 24 * 3600 * 1000;
// 获取一天的毫秒数
const day = 24 * 60 * 60 * 1000;

const items = reactive([
  {
    label: "日期",
    field: "date",
    type: "dateRange",
    format: "yyyy/MM/dd", // 默认格式
    // 默认开始时间
    start: new Date(),
    // 默认结束时间
    end: undefined,
    maxTimeLength: year, // 可选择的时间跨度为一年内
    // 最小时间(当前时间前5天)
    min: new Date(now.getTime() - 5 * day),
    // 最大时间(当前时间后1年2个月)
    max: new Date(now.getTime() + year + 2 * 30 * day),
  },
  {
    label: "时间日期",
    field: "datetime",
    type: "datetimeRange",
    format: "yyyy/MM/dd HH:mm:ss", // 默认格式
    // 最小时间(当前时间前半年)
    // min: new Date(now.getTime() - halfYear),
    // 最大时间(当前时间后半年)
    // max: new Date(now.getTime() + halfYear),
    maxTimeLength: halfYear, // 可选择的时间跨度为半年内
  },
]);

const onChange = (newFilters, oldFilters) => {
  console.log("changeEvent:", newFilters, oldFilters);
};
</script>