index.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <template>
  2. <div class="date-wrapper">
  3. <el-date-picker
  4. :type="type"
  5. :placeholder="startPlaceholder"
  6. :clearable="clearable"
  7. :value-format="valueFormat"
  8. v-model="startTime"
  9. :picker-options="pickerOptions"
  10. ></el-date-picker>
  11. <span style="padding: 0 3px">{{rangeSeparator}}</span>
  12. <el-date-picker
  13. :type="type"
  14. :placeholder="endPlaceholder"
  15. :clearable="clearable"
  16. :value-format="valueFormat"
  17. v-model="endTime"
  18. :picker-options="pickerOptions1"
  19. ></el-date-picker>
  20. </div>
  21. </template>
  22. <script>
  23. export default {
  24. name: "dateWrapper",
  25. props:{
  26. value:{
  27. type:Array,
  28. require:true,
  29. },
  30. rangeSeparator:{
  31. type:String,
  32. default:'-'
  33. },
  34. type:{
  35. type:String,
  36. default:'date',
  37. },
  38. valueFormat:{
  39. type:String,
  40. default:'yyyy-MM-dd',
  41. },
  42. startPlaceholder:{
  43. type:String,
  44. default:'选择开始日期'
  45. },
  46. endPlaceholder:{
  47. type:String,
  48. default:'选择结束日期'
  49. },
  50. clearable:{
  51. type:Boolean,
  52. require:false,
  53. }
  54. },
  55. computed:{
  56. startTime:{
  57. get(){
  58. console.log(this.value,'this.value');
  59. return (this.value && this.value[0]) || '';
  60. },
  61. set(value){
  62. console.log(value,'startTime');
  63. this.$emit('input',[value,this.endTime])
  64. }
  65. },
  66. endTime: {
  67. get(){
  68. return (this.value &&this.value[1]) || '';
  69. },
  70. set(value){
  71. console.log(value,'endTime');
  72. this.$emit('input',[this.startTime,value])
  73. }
  74. },
  75. pickerOptions: {
  76. get(){
  77. const that = this
  78. return {
  79. disabledDate(time) {
  80. if(that.endTime && that.endTime !== ''){
  81. return time.getTime() > new Date(that.endTime).getTime()
  82. }
  83. }
  84. }
  85. },
  86. set(value){
  87. this.$emit("input", value);
  88. }
  89. },
  90. pickerOptions1:{
  91. get(){
  92. const that = this
  93. return {
  94. disabledDate(time) {
  95. if(that.startTime && that.startTime !== ''){
  96. return (time.getTime()+ 3600 * 1000 * 24) < new Date(that.startTime).getTime()
  97. }
  98. }
  99. }
  100. },
  101. set(value){
  102. this.$emit("input", value);
  103. }
  104. }
  105. },
  106. data() {
  107. return {
  108. // form:{
  109. // startTime: '',
  110. // endTime: '',
  111. // }
  112. }
  113. }
  114. }
  115. </script>
  116. <style lang="scss">
  117. .date-wrapper{
  118. display: flex;
  119. justify-content: flex-start;
  120. vertical-align: center;
  121. .el-date-editor{
  122. // width: 102px !important;
  123. .el-input__inner{
  124. padding: 0px 0px 0 10px !important;
  125. }
  126. .el-input__prefix{
  127. display: none;
  128. }
  129. .el-input__suffix{
  130. text-align: right;
  131. }
  132. }
  133. }
  134. </style>