daterange.picker.vue 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. };
  69. },
  70. },
  71. watch: {},
  72. props: {
  73. value: {},
  74. clearable: {
  75. type: Boolean,
  76. default: true,
  77. },
  78. },
  79. methods: {
  80. onSelect(v) {
  81. this.$emit("input", v);
  82. },
  83. },
  84. mounted() {},
  85. };
  86. </script>
  87. <style lang="scss" scoped>
  88. .customDatePicker {
  89. ::v-deep .el-date-editor--daterange {
  90. width: 250px !important;
  91. }
  92. ::v-deep .el-range-editor--small .el-range-input {
  93. font-size: 16px !important;
  94. }
  95. }
  96. </style>