daterange.picker.vue 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. <template>
  2. <el-date-picker
  3. v-model="value"
  4. type="daterange"
  5. :clearable="clearable"
  6. :picker-options="pickerOptions"
  7. @change="onSelect"
  8. v-bind="$attrs"
  9. class="customDatePicker"
  10. />
  11. </template>
  12. <script>
  13. // import sync from '@/components/computed.sync.ts'
  14. // import { set } from 'vue/types/umd';
  15. export default {
  16. inheritAttrs: false,
  17. data() {
  18. return {};
  19. },
  20. computed: {
  21. // pv: sync("value"),
  22. // val:{
  23. // get(){return this.value},
  24. // set(v){
  25. // this.$emit("input",v)
  26. // }
  27. // },
  28. pickerOptions() {
  29. return {
  30. shortcuts: [
  31. {
  32. text: "今天",
  33. onClick: (picker) => {
  34. let date = this.$dateRange.before(0);
  35. date[1] = date[0];
  36. console.log(date);
  37. picker.$emit("pick", date);
  38. },
  39. },
  40. {
  41. text: "昨天",
  42. onClick: (picker) => {
  43. let date = this.$dateRange.yesterday(-1);
  44. date[1] = date[0];
  45. console.log(date);
  46. picker.$emit("pick", date);
  47. },
  48. },
  49. {
  50. text: "最近一周",
  51. onClick: (picker) => {
  52. picker.$emit("pick", this.$dateRange.before(-6));
  53. },
  54. },
  55. {
  56. text: "最近一个月",
  57. onClick: (picker) => {
  58. picker.$emit("pick", this.$dateRange.before(-29));
  59. },
  60. },
  61. {
  62. text: "最近三个月",
  63. onClick: (picker) => {
  64. picker.$emit("pick", this.$dateRange.before(-90));
  65. },
  66. },
  67. {
  68. text: "最近半年",
  69. onClick: (picker) => {
  70. picker.$emit("pick", this.$dateRange.before(-180));
  71. },
  72. },
  73. ],
  74. };
  75. },
  76. },
  77. watch: {},
  78. props: {
  79. value: {},
  80. clearable: {
  81. type: Boolean,
  82. default: true,
  83. },
  84. },
  85. methods: {
  86. onSelect(v) {
  87. this.$emit("input", v);
  88. },
  89. },
  90. mounted() {},
  91. };
  92. </script>
  93. <style lang="scss" scoped>
  94. .customDatePicker {
  95. ::v-deep .el-range-input {
  96. font-size: 14px !important;
  97. }
  98. ::v-deep .el-range-separator {
  99. font-size: 14px !important;
  100. }
  101. }
  102. </style>