audit-range-picker.vue 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <template>
  2. <div>
  3. <a-range-picker
  4. ref="aRangeYear"
  5. :placeholder="['开始年份', '结束年份']"
  6. format="YYYY"
  7. :value="value"
  8. :mode="['year', 'year']"
  9. :open="showYearPicker"
  10. @openChange="(val) => openChange(val)"
  11. @panelChange="handlePanelChange"
  12. @change="emptyChange"
  13. />
  14. </div>
  15. </template>
  16. <script>
  17. import components from './_import-components/audit-range-picker-import'
  18. export default {
  19. name: 'AuditRangePicker',
  20. components,
  21. props: {
  22. timeRange: {
  23. type: Array,
  24. default: undefined,
  25. },
  26. parentComponent: {
  27. type: Object,
  28. default: undefined,
  29. },
  30. },
  31. data() {
  32. return {
  33. showYearPicker: false,
  34. value: [],
  35. }
  36. },
  37. watch: {
  38. timeRange(val) {
  39. this.value = val
  40. },
  41. showYearPicker(val) {
  42. if (!val && this.value.length) {
  43. if (!this.value[0].isBefore(this.value[1])) {
  44. this.value[0] = [this.value[1], (this.value[1] = this.value[0])][0]
  45. }
  46. this.$emit('update:timeRange', this.value)
  47. this.$emit('formValidate')
  48. }
  49. },
  50. },
  51. methods: {
  52. openChange(val) {
  53. this.showYearPicker = val
  54. },
  55. handleChange(val) {
  56. this.value = val
  57. },
  58. handlePanelChange(val, mode) {
  59. this.value = val
  60. if (mode[1] === null) this.showYearPicker = false
  61. },
  62. emptyChange(val) {
  63. if (!val.length) this.$emit('update:timeRange', [])
  64. },
  65. },
  66. }
  67. </script>
  68. <style module lang="scss">
  69. @use '@/common/design' as *;
  70. </style>