cb07e4145ca0617ea3b2f1bbea665076c678c7ee.svn-base 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. <template>
  2. <a-date-picker
  3. dropdownClassName="j-date-picker"
  4. mode="year"
  5. format="YYYY"
  6. :placeholder="placeholder"
  7. @change="handleDateChange"
  8. v-model="yearVal"
  9. :open="dateopen"
  10. @openChange="openChangeYear"
  11. @panelChange="panelChangeYear"
  12. :disabled="disabled"
  13. :getCalendarContainer="getCalendarContainer"
  14. v-bind="$attrs"/>
  15. </template>
  16. <script>
  17. import moment from 'moment'
  18. export default {
  19. name: "JYearPicker",
  20. components:{
  21. moment
  22. },
  23. props: {
  24. placeholder: {
  25. type: String,
  26. default: '',
  27. required: false
  28. },
  29. value: {
  30. type: String,
  31. required: false
  32. },
  33. disabled: {
  34. type: Boolean,
  35. required: false,
  36. default: false
  37. },
  38. getCalendarContainer: {
  39. type: Function,
  40. default: (node) => node.parentNode
  41. }
  42. },
  43. data() {
  44. let dateStr = this.value;
  45. return {
  46. yearVal: !dateStr?null:moment(dateStr).format('YYYY'),
  47. dateopen: false
  48. }
  49. },
  50. watch: {
  51. value (val) {
  52. if(!val){
  53. this.yearVal = null;
  54. }else{
  55. this.yearVal = moment(val).format('YYYY');
  56. }
  57. }
  58. },
  59. methods: {
  60. moment,
  61. handleDateChange(mom, dateStr) {
  62. this.$emit('change', dateStr);
  63. this.yearVal=null;
  64. },
  65. openChangeYear(status) {
  66. if (status) {
  67. this.dateopen = true;
  68. } else {
  69. this.dateopen = false;
  70. }
  71. },
  72. // 选择年之后 关闭弹框
  73. panelChangeYear(value) {
  74. this.yearVal = value;
  75. this.dateopen = false;
  76. this.$emit('input', moment(value).format("YYYY"));
  77. }
  78. }
  79. }
  80. </script>
  81. <style scoped>
  82. </style>