Kaynağa Gözat

fix(datepicker): date range

Casper Dai 2 yıl önce
ebeveyn
işleme
0075c3ee9c

+ 6 - 9
src/components/service/Schedule/ScheduleCalendar/EventPicker.vue

@@ -109,15 +109,16 @@
 
 <script>
 import {
+  ONE_DAY,
   EventPriority,
   EventFrequency
 } from '@/constant'
 import {
   isMoreThanOneWeek,
   getNearestHitDate,
-  isOverDay
+  isOverDay,
+  toDateStr
 } from '@/utils/event'
-import { parseTime } from '@/utils'
 
 export default {
   name: 'EventPicker',
@@ -166,15 +167,11 @@ export default {
         disabledDate: this.isDisableEndDate
       }
     },
-    minDate () {
-      const now = new Date()
-      return new Date(now.getFullYear(), now.getMonth(), now.getDate())
-    },
     defaultEndDateTime () {
       if (this.eventOptions.start) {
         const date = new Date(this.eventOptions.start)
         date.setDate(date.getDate() + 1)
-        return `${parseTime(date, '{y}-{m}-{d}')} 00:00:00`
+        return `${toDateStr(date)} 00:00:00`
       }
       return null
     }
@@ -189,10 +186,10 @@ export default {
   },
   methods: {
     isDisableDate (date) {
-      return date < this.minDate
+      return date <= Date.now() - ONE_DAY
     },
     isDisableEndDate (date) {
-      if (date < this.minDate) {
+      if (date <= Date.now() - ONE_DAY) {
         return true
       }
       const startDate = this.eventOptions.start

+ 3 - 1
src/components/service/Schedule/ScheduleCalendar/ScheduleCalendarWeek.vue

@@ -66,9 +66,11 @@
 </template>
 
 <script>
-import { EventFrequency } from '@/constant'
 import {
   ONE_DAY,
+  EventFrequency
+} from '@/constant'
+import {
   toDate,
   toDateStr,
   toTimeStr,

+ 3 - 1
src/components/service/Schedule/mixins/calendar.js

@@ -1,6 +1,8 @@
-import { EventFrequency } from '@/constant'
 import {
   ONE_DAY,
+  EventFrequency
+} from '@/constant'
+import {
   toDate,
   toZeroPoint,
   pickMin,

+ 2 - 0
src/constant.js

@@ -9,6 +9,8 @@ export const GATEWAY_CAMERA = `${GATEWAY_WS}${process.env.VUE_APP_CAMERA_PROXY}`
 
 export const GATEWAY_CAMERA_RECORD = `${GATEWAY_WS}${process.env.VUE_APP_CAMERA_RECORD_PROXY}`
 
+export const ONE_DAY = 3600 * 24 * 1000
+
 export const AssetType = {
   IMAGE: 1,
   VIDEO: 2,

+ 7 - 5
src/utils/event.js

@@ -1,7 +1,5 @@
 import { EventFrequency } from '@/constant'
 
-export const ONE_DAY = 86400000
-
 export function isMoreThanOneWeek (timestamp) {
   return timestamp >= 604800000
 }
@@ -261,18 +259,22 @@ export function correctEndTime (endTime) {
 }
 
 export function getEventDateDescription (event) {
-  const { freq, start, until, startTime } = event
+  const { freq, start, until, endTime } = event
   if (freq === EventFrequency.WEEKLY) {
-    return until ? `${toDateStr(start)} - ${toDateStr(until, startTime === '00:00:00' ? -1 : 0)}` : `自${toDateStr(start)}开始`
+    return until ? `${toDateStr(start)} - ${toDateStr(until, endTime === '00:00:00' ? -1 : 0)}` : `自${toDateStr(start)}开始`
   }
   return until ? `${start} - ${until}` : `自${start}开始`
 }
 
+const weekEnum = ['日', '一', '二', '三', '四', '五', '六']
 export function getEventExtraDescription (event) {
   const { freq, start, until, byDay, startTime, endTime, target } = event
   switch (freq) {
     case EventFrequency.WEEKLY:
-      return `每周${byDay.split(',').sort().map(val => ['日', '一', '二', '三', '四', '五', '六'][val])
+      if (byDay.split(',').length === 7) {
+        return `每天 ${startTime} - ${correctEndTime(endTime)}`
+      }
+      return `每周${byDay.split(',').sort().map(val => weekEnum[val])
         .join('、')} ${startTime} - ${correctEndTime(endTime)}`
     default:
       return target?.duration

+ 2 - 3
src/views/ad/automation/scheduling/index.vue

@@ -72,6 +72,7 @@
 
 <script>
 import {
+  ONE_DAY,
   TaskFromType,
   TaskFromTypeInfo,
   AssetTag,
@@ -140,7 +141,6 @@ export default {
       },
       schedulingId: '',
       title: '',
-      minDate: '',
       dateRange: [],
       contentSchema: {
         singlePage: true,
@@ -203,7 +203,7 @@ export default {
       })
     },
     isDisableDate (date) {
-      return date < this.minDate
+      return date <= Date.now() - ONE_DAY
     },
     onDataset () {
       this.$refs.datasetConfigDialog.show({ id: this.deviceId })
@@ -225,7 +225,6 @@ export default {
     },
     onConfigScheduling () {
       const date = parseTime(new Date(), '{y}-{m}-{d}')
-      this.minDate = new Date(`${date} 00:00:00`)
       this.dateRange = [date, date]
       this.$refs.schedulingOptionsDialog.show()
     },

+ 2 - 5
src/views/broadcast/deploy/index.vue

@@ -165,6 +165,7 @@
 </template>
 
 <script>
+import { ONE_DAY } from '@/constant'
 import { parseTime } from '@/utils'
 import {
   getBroadcastTemplates,
@@ -211,10 +212,6 @@ export default {
     }
   },
   computed: {
-    minDate () {
-      const now = new Date()
-      return new Date(now.getFullYear(), now.getMonth(), now.getDate())
-    },
     endDatePickerOptions () {
       return {
         disabledDate: this.isDisableDate
@@ -255,7 +252,7 @@ export default {
       }
     },
     isDisableDate (date) {
-      return date < this.minDate
+      return date <= Date.now() - ONE_DAY
     },
     onTemplateChange (templateId) {
       this.templateContent = ''

+ 1 - 1
src/views/device/detail/components/DeviceInfo/components/Power.vue

@@ -165,7 +165,7 @@ export default {
           }
         })
         this.$typeMap = map
-        this.emptyWarningTip = `电源状态异常,${multiCard.switchStatus === Power.LOADING ? '检测' : '最后上报'}}时间 ${timestamp}`
+        this.emptyWarningTip = `电源状态异常,${multiCard.switchStatus === Power.LOADING ? '检测' : '最后上报'}时间 ${timestamp}`
         this.hasMulti = multiCard.status === Status.OK
         this.$refs.powerTable?.pageTo()
       }

+ 2 - 5
src/views/device/detail/components/DeviceInvoke/MultifunctionCardPowerSwitch.vue

@@ -98,6 +98,7 @@
 <script>
 import { mapGetters } from 'vuex'
 import {
+  ONE_DAY,
   ThirdPartyDevice,
   Frequency
 } from '@/constant'
@@ -309,10 +310,6 @@ export default {
     },
     dialogTitle () {
       return this.isAdd ? '新增定时任务' : '编辑定时任务'
-    },
-    minDate () {
-      const now = new Date()
-      return new Date(now.getFullYear(), now.getMonth(), now.getDate())
     }
   },
   mounted () {
@@ -326,7 +323,7 @@ export default {
   },
   methods: {
     isDisableDate (date) {
-      return date < this.minDate
+      return date <= Date.now() - ONE_DAY
     },
     isExpired ({ endTime, executeTime }) {
       return endTime !== FOREVER && toDate(`${endTime} ${executeTime}`) <= Date.now()

+ 3 - 2
src/views/device/detail/components/DeviceRuntime/OnlineDuration.vue

@@ -85,6 +85,7 @@
 </template>
 
 <script>
+import { ONE_DAY } from '@/constant'
 import { parseTime } from '@/utils'
 import {
   getOnlineDurationByDevice,
@@ -179,7 +180,7 @@ export default {
   },
   methods: {
     disabledDate (date) {
-      return date >= this.$minDate
+      return date >= Date.now() - ONE_DAY
     },
     startRun () {
       if (!this.$running) {
@@ -231,7 +232,6 @@ export default {
       ].reduce((curr, { value, unit }) => value ? `${curr}${value}${unit}` : curr, '')
     },
     showReport () {
-      this.$minDate = new Date(parseTime(Date.now(), '{y}-{m}-{d} 00:00:00'))
       this.getOnlineDurationReport()
       this.$refs.dialog.show()
     },
@@ -271,6 +271,7 @@ export default {
         series: [
           {
             type: 'line',
+            smooth: true,
             data: this.valueData
           }
         ]

+ 8 - 2
src/views/device/power/index.vue

@@ -91,7 +91,10 @@
 
 <script>
 import { mapGetters } from 'vuex'
-import { Frequency } from '@/constant'
+import {
+  ONE_DAY,
+  Frequency
+} from '@/constant'
 import {
   parseTime,
   transformToCron
@@ -168,6 +171,9 @@ export default {
           }, width: 160 }
         ]
       },
+      singleTimePickerOptions: {
+        disabledDate: this.isDisableDate
+      },
       pickerOptions: {
         disabledDate: this.isDisableDate,
         shortcuts: [
@@ -237,7 +243,7 @@ export default {
   },
   methods: {
     isDisableDate (date) {
-      return date < Date.now()
+      return date <= Date.now() - ONE_DAY
     },
     onMessage (topic) {
       const result = /^\d+\/(\d+)\/(online|offline)$/.exec(topic)

+ 3 - 1
src/views/device/timeline/index.vue

@@ -144,9 +144,11 @@
 </template>
 
 <script>
-import { EventPriorityInfo } from '@/constant'
 import {
   ONE_DAY,
+  EventPriorityInfo
+} from '@/constant'
+import {
   toDate,
   toDateStr,
   toTimeStr,

+ 11 - 10
src/views/external/box/settings/components/DeviceConfig/components/ContentProtectionConfigDialog.vue

@@ -297,18 +297,19 @@ export default {
         ]
       } else {
         const colors = []
-        const map = {}
+        // casper 暂时不校验重复点
+        // const map = {}
         for (let i = 0; i < this.points.length; i++) {
           const { x, y, color } = this.points[i]
-          const key = `${x}-${y}`
-          if (map[key]) {
-            this.$message({
-              type: 'warning',
-              message: `检测点${i + 1}与检测${map[key]}位置重复`
-            })
-            return
-          }
-          map[key] = i + 1
+          // const key = `${x}-${y}`
+          // if (map[key]) {
+          //   this.$message({
+          //     type: 'warning',
+          //     message: `检测点${i + 1}与检测${map[key]}位置重复`
+          //   })
+          //   return
+          // }
+          // map[key] = i + 1
           colors.push({ x, y, ...this.transformToObjectRGB(color) })
         }
         data.inputCards = []

+ 4 - 2
src/views/realm/report/components/OnlineDurationDialog.vue

@@ -30,6 +30,7 @@
 
 <script>
 import { mapGetters } from 'vuex'
+import { ONE_DAY } from '@/constant'
 import { parseTime } from '@/utils'
 import {
   getOnlineDurationExcel,
@@ -55,14 +56,15 @@ export default {
   },
   methods: {
     show () {
-      this.dateRange = [parseTime(new Date() - 3600000 * 24 * 6, '{y}-{m}-{d}'), parseTime(new Date(), '{y}-{m}-{d}')]
+      const now = Date.now()
+      this.dateRange = [parseTime(now - ONE_DAY * 7, '{y}-{m}-{d}'), parseTime(now - ONE_DAY, '{y}-{m}-{d}')]
       this.$refs.dialog.show()
     },
     onGroupChanged (group) {
       this.$group = group
     },
     isDisableDate (date) {
-      return date > Date.now()
+      return date >= Date.now() - ONE_DAY
     },
     onConfirm (done) {
       const groupPath = this.$group.path

+ 5 - 6
src/views/screen/deploy/components/EventFrequencyConfigDialog.vue

@@ -118,9 +118,11 @@
 </template>
 
 <script>
-import { EventFrequency } from '@/constant'
 import {
   ONE_DAY,
+  EventFrequency
+} from '@/constant'
+import {
   toDate,
   toDateStr,
   correctEndTime,
@@ -152,8 +154,7 @@ export default {
       dates: [], // 多日期
       weeks: [], // 星期
       dateRange: null, // 日期范围
-      timeRanges: [], // 时段
-      minDate: null
+      timeRanges: [] // 时段
     }
   },
   computed: {
@@ -183,11 +184,9 @@ export default {
   },
   methods: {
     isDisableDate (date) {
-      return date < this.minDate
+      return date <= Date.now() - ONE_DAY
     },
     init (event) {
-      this.minDate = toDate(`${toDateStr(new Date())} 00:00:00`)
-
       const { freq, start, until, byDay, startTime, endTime } = {
         ...createEmptyEvent(),
         ...event