inputDatePicker.vue 966 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <template>
  2. <div class="" style="width: 100%">
  3. <el-input
  4. v-model="inputData"
  5. :placeholder="$attrs.placeholder"
  6. prefix-icon="Calendar"
  7. @click="datePicker.handleOpen()"
  8. @blur="inputDate"
  9. ></el-input>
  10. <el-date-picker
  11. ref="datePicker"
  12. v-model="datePickerData"
  13. v-bind="$attrs"
  14. style="height: 100px; overflow: hidden"
  15. @change="changeDate"
  16. />
  17. </div>
  18. </template>
  19. <script setup lang="ts">
  20. import dayjs from "dayjs";
  21. const emit = defineEmits(["update:modelValue"]);
  22. const props= defineProps({
  23. modelValue: {
  24. type: String
  25. }
  26. })
  27. const datePicker = ref(null);
  28. const datePickerData = ref(props.modelValue);
  29. const inputData = ref("");
  30. const inputDate = (e: any) => {
  31. const date = dayjs(e.target.value).format("YYYY-MM-DD");
  32. inputData.value = date;
  33. emit("update:modelValue", date);
  34. };
  35. const changeDate = (date: any) => {
  36. inputData.value = date;
  37. emit("update:modelValue", date);
  38. };
  39. </script>