mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-05-24 15:39:15 +08:00
164 lines
3.8 KiB
Vue
164 lines
3.8 KiB
Vue
<template>
|
|
<demo-block card :title="t('dateType')">
|
|
<van-datetime-picker
|
|
v-model="value.date"
|
|
type="date"
|
|
:title="t('dateType')"
|
|
:min-date="minDate"
|
|
:max-date="maxDate"
|
|
/>
|
|
</demo-block>
|
|
|
|
<demo-block card :title="t('yearMonthType')">
|
|
<van-datetime-picker
|
|
v-model="value.yearMonth"
|
|
type="year-month"
|
|
:title="t('yearMonthType')"
|
|
:min-date="minDate"
|
|
:max-date="maxDate"
|
|
:formatter="formatter"
|
|
/>
|
|
</demo-block>
|
|
|
|
<demo-block v-if="!isWeapp" card :title="t('monthDayType')">
|
|
<van-datetime-picker
|
|
v-model="value.monthDayType"
|
|
type="month-day"
|
|
:title="t('monthDayType')"
|
|
:min-date="minDate"
|
|
:max-date="maxDate"
|
|
:formatter="formatter"
|
|
/>
|
|
</demo-block>
|
|
|
|
<demo-block card :title="t('timeType')">
|
|
<van-datetime-picker
|
|
v-model="value.time"
|
|
type="time"
|
|
:title="t('timeType')"
|
|
:min-hour="10"
|
|
:max-hour="20"
|
|
/>
|
|
</demo-block>
|
|
|
|
<demo-block card :title="t('datetimeType')">
|
|
<van-datetime-picker
|
|
v-model="value.datetime"
|
|
type="datetime"
|
|
:title="t('datetimeType')"
|
|
:min-date="minDate"
|
|
:max-date="maxDate"
|
|
/>
|
|
</demo-block>
|
|
|
|
<demo-block v-if="!isWeapp" card :title="t('datehourType')">
|
|
<van-datetime-picker
|
|
v-model="value.datehour"
|
|
type="datehour"
|
|
:title="t('datehourType')"
|
|
:min-date="minDate"
|
|
:max-date="maxDate"
|
|
/>
|
|
</demo-block>
|
|
|
|
<demo-block card :title="t('optionFilter')">
|
|
<van-datetime-picker
|
|
v-model="value.optionFilter"
|
|
type="time"
|
|
:title="t('optionFilter')"
|
|
:filter="filter"
|
|
/>
|
|
</demo-block>
|
|
|
|
<demo-block v-if="!isWeapp" card :title="t('sortColumns')">
|
|
<van-datetime-picker
|
|
v-model="value.sortColumnsDate"
|
|
type="date"
|
|
:title="t('sortColumns')"
|
|
:columns-order="['month', 'day', 'year']"
|
|
:min-date="minDate"
|
|
:max-date="maxDate"
|
|
:formatter="formatter"
|
|
/>
|
|
</demo-block>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { reactive } from 'vue';
|
|
import { useTranslate } from '@demo/use-translate';
|
|
|
|
const i18n = {
|
|
'zh-CN': {
|
|
day: '日',
|
|
year: '年',
|
|
month: '月',
|
|
timeType: '选择时间',
|
|
dateType: '选择年月日',
|
|
datetimeType: '选择完整时间',
|
|
datehourType: '选择年月日小时',
|
|
monthDayType: '选择月日',
|
|
yearMonthType: '选择年月',
|
|
optionFilter: '选项过滤器',
|
|
sortColumns: '自定义列排序',
|
|
},
|
|
'en-US': {
|
|
day: ' Day',
|
|
year: ' Year',
|
|
month: ' Month',
|
|
timeType: 'Choose Time',
|
|
dateType: 'Choose Date',
|
|
datetimeType: 'Choose DateTime',
|
|
datehourType: 'Choose DateHour',
|
|
monthDayType: 'Choose Month-Day',
|
|
yearMonthType: 'Choose Year-Month',
|
|
optionFilter: 'Option Filter',
|
|
sortColumns: 'Columns Order',
|
|
},
|
|
};
|
|
|
|
export default {
|
|
setup() {
|
|
const t = useTranslate(i18n);
|
|
const value = reactive({
|
|
date: null,
|
|
time: '12:00',
|
|
datetime: new Date(2020, 0, 1),
|
|
datehour: new Date(2020, 0, 1),
|
|
monthDay: new Date(2020, 0, 1),
|
|
yearMonth: new Date(2020, 0, 1),
|
|
optionFilter: '12:00',
|
|
sortColumnsDate: new Date(2020, 0, 1),
|
|
});
|
|
|
|
const filter = (type: string, values: string[]) => {
|
|
if (type === 'minute') {
|
|
return values.filter((value) => Number(value) % 5 === 0);
|
|
}
|
|
return values;
|
|
};
|
|
|
|
const formatter = (type: string, value: string) => {
|
|
if (type === 'year') {
|
|
return value + t('year');
|
|
}
|
|
if (type === 'month') {
|
|
return value + t('month');
|
|
}
|
|
if (type === 'day') {
|
|
return value + t('day');
|
|
}
|
|
return value;
|
|
};
|
|
|
|
return {
|
|
t,
|
|
value,
|
|
filter,
|
|
minDate: new Date(2020, 0, 1),
|
|
maxDate: new Date(2025, 10, 1),
|
|
formatter,
|
|
};
|
|
},
|
|
};
|
|
</script>
|