DatePicker日期选择组件默认是通过点击输入框展开日期选择面板,Ant Design日期组件也允许我们自定义渲染通过其他组件来触发展开选择面板。我们通过下面代码来演示通过按钮触发DatePicker日期选择组件。
<template>
<div>
<a-date-picker v-model="selectDatae" @change="onChange" @ok="onOk">
<a-button type="primary">{{ dateString=="" ? '请选择日期':dateString }}</a-button>
</a-date-picker>
</div>
</template>
<script>
import moment from 'moment';
export default {
data() {
return {
selectDatae: undefined,
dateString:"" //选择后的日期
};
},
methods: {
//选择日期的事件
onChange(value, dateString) {
this.dateString=dateString;
console.log('Selected Time: ', value);
console.log('Formatted Selected Time: ', dateString);
},
//选择日期后确定事件
onOk(value) {
console.log('onOk: ', value);
},
clearTime() {
this.selectDatae = undefined;
},
},
};
</script>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Ant Design Vue DatePicker例子</title>
<script src="//www.itxst.com/package/ant-design-vue/moment.js"></script>
<script src="//www.itxst.com/package/vue/vue.min.js"></script>
<script src="//www.itxst.com/package/ant-design-vue/antd.js"></script>
<link href="//www.itxst.com/package/ant-design-vue/antd.min.css" rel="stylesheet" />
<!--国际化-->
<script src="//www.itxst.com/package/ant-design-vue/antd-with-locales.js"></script>
<style>
body {
padding-top: 10px
}
</style>
</head>
<body>
<div id="app">
<div :style="{ paddingBottom:'10px' }">
<a-locale-provider :locale="locales.zh_CN">
<a-date-picker v-model="selectDatae" :default-value="moment(getCurrentDate(),'YYYY-MM-DD')">
<a-button type="primary">{{ selectDatae ? selectDatae : '请选择日期' }}</a-button>
</a-date-picker> </a-locale-provider>
</div>
</div>
<script>
const { LocaleProvider, locales } = window.antd;
var app = new Vue({
el: '#app',
data() {
return {
locales,
selectDatae: undefined //选择后的日期
};
},
methods: {
moment,
getCurrentDate() {
return new Date().toLocaleDateString();
},
onChange(date, dateString) {
console.log(date, dateString);
}
},
created: function () {
// 里面的字符可以根据自己的需要进行调整
moment.locale('zh-cn', {
months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
longDateFormat: {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L: 'YYYY-MM-DD',
LL: 'YYYY年MM月DD日',
LLL: 'YYYY年MM月DD日Ah点mm分',
LLLL: 'YYYY年MM月DD日ddddAh点mm分',
l: 'YYYY-M-D',
ll: 'YYYY年M月D日',
lll: 'YYYY年M月D日 HH:mm',
llll: 'YYYY年M月D日dddd HH:mm'
},
meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
meridiemHour: function (hour, meridiem) {
if (hour === 12) {
hour = 0;
}
if (meridiem === '凌晨' || meridiem === '早上' ||
meridiem === '上午') {
return hour;
} else if (meridiem === '下午' || meridiem === '晚上') {
return hour + 12;
} else {
// '中午'
return hour >= 11 ? hour : hour + 12;
}
},
meridiem: function (hour, minute, isLower) {
const hm = hour * 100 + minute;
if (hm < 600) {
return '凌晨';
} else if (hm < 900) {
return '早上';
} else if (hm < 1130) {
return '上午';
} else if (hm < 1230) {
return '中午';
} else if (hm < 1800) {
return '下午';
} else {
return '晚上';
}
},
calendar: {
sameDay: '[今天]LT',
nextDay: '[明天]LT',
nextWeek: '[下]ddddLT',
lastDay: '[昨天]LT',
lastWeek: '[上]ddddLT',
sameElse: 'L'
},
dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
ordinal: function (number, period) {
switch (period) {
case 'd':
case 'D':
case 'DDD':
return number + '日';
case 'M':
return number + '月';
case 'w':
case 'W':
return number + '周';
default:
return number;
}
},
relativeTime: {
future: '%s内',
past: '%s前',
s: '几秒',
ss: '%d秒',
m: '1分钟',
mm: '%d分钟',
h: '1小时',
hh: '%d小时',
d: '1天',
dd: '%d天',
M: '1个月',
MM: '%d个月',
y: '1年',
yy: '%d年'
},
week: {
// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
dow: 1, // Monday is the first day of the week.
doy: 4 // The week that contains Jan 4th is the first week of the year.
}
})
},
});
</script>
</body>
</html>