1. <!-- 时间选择器 -->
    2. <template>
    3. <el-date-picker
    4. type="datetimerange"
    5. start-placeholder="开始日期"
    6. end-placeholder="结束日期"
    7. value-format="yyyy-MM-dd HH:mm:ss"
    8. picker-options="pickerOptions"
    9. @change="handleChange"
    10. v-bind="$attrs"
    11. v-on="$listeners">
    12. </el-date-picker>
    13. </template>
    14. <script>
    15. import moment from 'moment';
    16. export default {
    17. name: 'date-picker',
    18. data() {
    19. return {
    20. pickerOptions: {
    21. shortcuts: [
    22. {
    23. text: '今天',
    24. onClick(picker) {
    25. const end = moment().endOf('day')
    26. .toDate();
    27. const start = moment().startOf('day')
    28. .toDate();
    29. picker.$emit('pick', [start, end]);
    30. }
    31. },
    32. {
    33. text: '昨天',
    34. onClick(picker) {
    35. const end = moment().subtract(1, 'day')
    36. .endOf('day')
    37. .toDate();
    38. const start = moment().subtract(1, 'day')
    39. .startOf('day')
    40. .toDate();
    41. picker.$emit('pick', [start, end]);
    42. }
    43. },
    44. {
    45. text: '最近7天',
    46. onClick(picker) {
    47. const end = moment().endOf('day')
    48. .toDate();
    49. const start = moment().subtract(6, 'day')
    50. .startOf('day')
    51. .toDate();
    52. picker.$emit('pick', [start, end]);
    53. }
    54. },
    55. {
    56. text: '最近30天',
    57. onClick(picker) {
    58. const end = moment().endOf('day')
    59. .toDate();
    60. const start = moment().subtract(29, 'day')
    61. .startOf('day')
    62. .toDate();
    63. picker.$emit('pick', [start, end]);
    64. }
    65. }
    66. ]
    67. }
    68. }
    69. },
    70. methods: {
    71. /**
    72. * 用户确定选定的值时触发
    73. * @param date
    74. */
    75. handleChange(date) {
    76. this.$emit('dateChange', date);
    77. }
    78. }
    79. }
    80. </script>