DeviceWarnDialog.vue 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <template>
  2. <confirm-dialog
  3. ref="dialog"
  4. title="设备预警"
  5. confirm-text="下载"
  6. @confirm="onConfirm"
  7. >
  8. <template #default>
  9. <div class="c-grid-form auto u-align-self--center">
  10. <div class="c-grid-form__label u-required">
  11. 日期范围
  12. </div>
  13. <el-date-picker
  14. v-model="dateRange"
  15. type="daterange"
  16. range-separator="至"
  17. value-format="yyyy-MM-dd"
  18. :picker-options="pickerOptions"
  19. :editable="false"
  20. :clearable="false"
  21. @change="handleDateChange"
  22. />
  23. </div>
  24. </template>
  25. </confirm-dialog>
  26. </template>
  27. <script>
  28. import { parseTime } from '@/utils'
  29. import { getDeviceWarnExcel } from '../api.js'
  30. export default {
  31. name: 'DeviceWarnDialog',
  32. data () {
  33. return {
  34. dateRange: null
  35. }
  36. },
  37. computed: {
  38. pickerOptions () {
  39. return {
  40. disabledDate: date => date > Date.now()
  41. }
  42. }
  43. },
  44. methods: {
  45. handleDateChange (value) {
  46. if (value && value.length === 2) {
  47. const startDate = new Date(value[0])
  48. const endDate = new Date(value[1])
  49. const dayCount = Math.ceil(Math.abs(endDate - startDate) / (1000 * 60 * 60 * 24))
  50. if (dayCount > 7) {
  51. this.$message.error('最多导出7天数据')
  52. const date = parseTime(new Date(), '{y}-{m}-{d}')
  53. this.dateRange = [date, date]
  54. }
  55. }
  56. },
  57. show () {
  58. const date = parseTime(new Date(), '{y}-{m}-{d}')
  59. this.dateRange = [date, date]
  60. this.$refs.dialog.show()
  61. },
  62. onConfirm (done) {
  63. const time = this.dateRange[0] === this.dateRange[1] ? this.dateRange[0] : `${this.dateRange[0]}~${this.dateRange[1]}`
  64. const endDate = new Date(this.dateRange[1].replace(/-/g, '/'))
  65. endDate.setDate(endDate.getDate() + 1)
  66. getDeviceWarnExcel({
  67. startDate: this.dateRange[0],
  68. endDate: parseTime(endDate, '{y}-{m}-{d}')
  69. }, time).then(done)
  70. }
  71. }
  72. }
  73. </script>