kpi-datadate-component.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. <template>
  2. <a-form-item label="数据时期">
  3. <!-- 年 -->
  4. <a-date-picker
  5. v-if="dateType === 'year'"
  6. format="YYYY"
  7. mode="year"
  8. :value="value"
  9. :open="open"
  10. @openChange="openChange"
  11. @panelChange="panelChange"
  12. />
  13. <!-- 半年 -->
  14. <KpiHalfyearPicker v-if="dateType === 'halfyear'" @setvalue="setValue"></KpiHalfyearPicker>
  15. <!-- 季度 -->
  16. <KpiQuarterPicker v-if="dateType === 'quarter'" @setvalue="setValue"></KpiQuarterPicker>
  17. <!-- 月 -->
  18. <a-month-picker v-if="dateType === 'month'" v-model="value" placeholder="请选择月份" />
  19. <!-- 周 -->
  20. <a-week-picker v-if="dateType === 'week'" v-model="value" placeholder="请选择周" />
  21. <!-- 日 -->
  22. <a-date-picker v-if="dateType === 'day'" v-model="value" placeholder="请选择日期" />
  23. </a-form-item>
  24. </template>
  25. <script>
  26. import moment from 'moment'
  27. import KpiQuarterPicker from './kpi-quarter-picker.vue'
  28. import KpiHalfyearPicker from './kpi-halfyear-picker.vue'
  29. import components from './_import-components/kpi-datadate-component-import'
  30. export default {
  31. name: 'KpiDatadateComponent',
  32. components: {
  33. ...components,
  34. KpiQuarterPicker,
  35. KpiHalfyearPicker,
  36. },
  37. props: {
  38. // 时间时期类型
  39. dateType: {
  40. type: String,
  41. default: '',
  42. },
  43. },
  44. data() {
  45. return {
  46. value: '',
  47. open: false,
  48. }
  49. },
  50. methods: {
  51. setValue(val) {
  52. this.value = val
  53. },
  54. // Ant Design封装年份选择组件
  55. openChange(status) {
  56. if (status) {
  57. this.open = true
  58. } else {
  59. this.open = false
  60. }
  61. },
  62. panelChange(value) {
  63. this.value = value
  64. this.open = false
  65. },
  66. getFormatDate() {
  67. // 格式化返回的日期数据
  68. let strYear = '' // 年份
  69. let strDate = '' // 日期
  70. switch (this.dateType) {
  71. case 'year':
  72. // 年
  73. strYear = new Date(this.value).getFullYear()
  74. strDate = moment(this.value).format('YYYY年')
  75. break
  76. case 'halfyear':
  77. // 半年
  78. strYear = JSON.parse(this.value).year
  79. strDate = JSON.parse(this.value).quarter
  80. break
  81. case 'quarter':
  82. // 季度
  83. strYear = JSON.parse(this.value).year
  84. strDate = JSON.parse(this.value).quarter
  85. break
  86. case 'month':
  87. // 月
  88. strYear = new Date(this.value).getFullYear()
  89. strDate = moment(this.value).format('MM月')
  90. break
  91. case 'week':
  92. // 周
  93. strYear = new Date(this.value).getFullYear()
  94. strDate = moment(this.value).format('第w周')
  95. break
  96. case 'day':
  97. // 日
  98. strYear = new Date(this.value).getFullYear()
  99. strDate = moment(this.value).format('MM月DD日')
  100. break
  101. default:
  102. break
  103. }
  104. return {
  105. year: strYear,
  106. date: strDate,
  107. }
  108. },
  109. },
  110. }
  111. </script>
  112. <style module lang="scss">
  113. @use '@/common/design' as *;
  114. </style>