Sfoglia il codice sorgente

refactor(event): event description

Casper Dai 3 anni fa
parent
commit
5f1da68d14

+ 6 - 10
src/components/Schedule/ScheduleCalendar/EventItem.vue

@@ -28,7 +28,10 @@
 </template>
 
 <script>
-import { EventFreq } from '@/constant'
+import {
+  getEventDateDescription,
+  getEventExtraDescription
+} from '@/utils/event'
 
 export default {
   name: 'EventItem',
@@ -48,17 +51,10 @@ export default {
   },
   computed: {
     time () {
-      const { start, until } = this.event.origin
-      return until ? `${start} - ${until}` : `自${start}开始`
+      return getEventDateDescription(this.event.origin)
     },
     desc () {
-      const { freq, byDay, startTime, endTime } = this.event.origin
-      switch (freq) {
-        case EventFreq.WEEKLY:
-          return `每周${byDay.split(',').map(val => ['日', '一', '二', '三', '四', '五', '六'][val]).join('、')},${startTime} - ${endTime}`
-        default:
-          return null
-      }
+      return getEventExtraDescription(this.event.origin)
     }
   },
   methods: {

+ 6 - 10
src/components/Schedule/ScheduleCalendar/EventItemWeek.vue

@@ -34,7 +34,10 @@
 </template>
 
 <script>
-import { EventFreq } from '@/constant'
+import {
+  getEventDateDescription,
+  getEventExtraDescription
+} from '@/utils/event'
 
 export default {
   name: 'EventItemWeek',
@@ -54,17 +57,10 @@ export default {
       return `${startTime} - ${endTime}`
     },
     date () {
-      const { start, until } = this.item.event.origin
-      return until ? `${start} - ${until}` : `自${start}开始`
+      return getEventDateDescription(this.item.event.origin)
     },
     desc () {
-      const { freq, byDay, startTime, endTime } = this.item.event.origin
-      switch (freq) {
-        case EventFreq.WEEKLY:
-          return `每周${byDay.split(',').map(val => ['日', '一', '二', '三', '四', '五', '六'][val]).join('、')},${startTime} - ${endTime}`
-        default:
-          return null
-      }
+      return getEventExtraDescription(this.item.event.origin)
     }
   },
   methods: {

+ 4 - 11
src/components/Schedule/mixins/event.js

@@ -4,7 +4,8 @@ import {
   toTimeStr,
   toZeroPoint,
   pickMin,
-  getConflict
+  getConflict,
+  getEventDescription
 } from '@/utils/event'
 import {
   EventFreq,
@@ -136,10 +137,11 @@ export default {
           if (eventProxy.key !== key) {
             const date = getConflict(event, eventProxy.origin)
             if (date) {
+              console.log(eventProxy.origin)
               conflicts.push({
                 key: eventProxy.key,
                 info: `与 ${eventProxy.origin.target.name} 于 ${toDateStr(date)} ${toTimeStr(date)} 有冲突`,
-                desc: this.getConflectMessage(eventProxy.origin)
+                desc: getEventDescription(eventProxy.origin)
               })
             }
           }
@@ -147,15 +149,6 @@ export default {
       }
       return conflicts
     },
-    getConflectMessage (event) {
-      const { freq, start, until, byDay, startTime, endTime } = event
-      switch (freq) {
-        case EventFreq.WEEKLY:
-          return `自${start.split(' ')[0]}开始${until ? `至${until.split(' ')[0]}前` : ''} 每周${byDay.split(',').map(val => ['日', '一', '二', '三', '四', '五', '六'][val]).join('、')} ${startTime} - ${endTime}`
-        default:
-          return until ? `${start} - ${until}` : `自${start}开始`
-      }
-    },
     onSave () {
       this.fix()
         .then(this.save)

+ 25 - 0
src/utils/event.js

@@ -259,3 +259,28 @@ export function isHitOverDayTime (event, date) {
 export function correctEndTime (endTime) {
   return endTime === '00:00:00' ? '24:00:00' : endTime
 }
+
+export function getEventDateDescription (event) {
+  const { start, until } = event
+  return until ? `${start} - ${until}` : `自${start}开始`
+}
+
+export function getEventExtraDescription (event) {
+  const { freq, byDay, start, until, startTime, endTime, target } = event
+  switch (freq) {
+    case EventFreq.WEEKLY:
+      return `每周${byDay.split(',').map(val => ['日', '一', '二', '三', '四', '五', '六'][val]).join('、')} ${startTime} - ${endTime}`
+    default:
+      return target?.duration
+        ? `播放${(new Date(until) - new Date(start)) / target.duration / 1000}次`
+        : ''
+  }
+}
+
+export function getEventDescription (event) {
+  const extra = getEventExtraDescription(event)
+  if (extra) {
+    return `${getEventDateDescription(event)} ${extra}`
+  }
+  return getEventDateDescription(event)
+}

+ 5 - 16
src/views/device/timeline/index.vue

@@ -191,11 +191,7 @@ import {
   getDevices,
   getTimeline
 } from '@/api/device'
-import {
-  EventFreq,
-  EventTarget
-} from '@/constant'
-import { createListOptions } from '@/utils'
+import { EventTarget } from '@/constant'
 import {
   toDate,
   toDateStr,
@@ -205,9 +201,11 @@ import {
   getStartDate,
   getFinishDate,
   pickMin,
-  pickMax
+  pickMax,
+  getEventDescription
 } from '@/utils/event'
 import { EventCache } from '@/utils/cache'
+import { createListOptions } from '@/utils'
 
 export default {
   name: 'ScheduleTimeline',
@@ -329,7 +327,7 @@ export default {
     transformEvent (event) {
       return {
         ...event,
-        time: this.getTime(event),
+        time: getEventDescription(event),
         startDateTime: toDate(event.start),
         endDateTime: toDate(event.until),
         style: null,
@@ -359,15 +357,6 @@ export default {
         .sort((a, b) => a > b ? -1 : 1)
         .map(key => map[key].sort((a, b) => toDate(a.start) - toDate(b.start)))
     },
-    getTime (event) {
-      const { freq, start, until, byDay, startTime, endTime } = event
-      switch (freq) {
-        case EventFreq.WEEKLY:
-          return `自${start.split(' ')[0]}开始${until ? `至${until.split(' ')[0]}前` : ''} 每周${byDay.split(',').map(val => ['日', '一', '二', '三', '四', '五', '六'][val]).join('、')} ${startTime} - ${endTime}`
-        default:
-          return until ? `${start} - ${until}` : `自${start}开始`
-      }
-    },
     isDisableDate (date) {
       const now = new Date()
       const min = new Date(now.getFullYear(), now.getMonth(), now.getDate())

+ 2 - 8
src/views/review/components/ReviewPublish.vue

@@ -16,10 +16,10 @@ import {
 import {
   State,
   EventPriority,
-  EventFreq,
   EventTarget,
   PublishType
 } from '@/constant'
+import { getEventDescription } from '@/utils/event'
 import mixin from './mixin'
 
 export default {
@@ -92,13 +92,7 @@ export default {
     },
     getDesc (target) {
       if (target.type === PublishType.EVENT && target.detail.priority === EventPriority.INSERTED) {
-        const { freq, start, until, byDay, startTime, endTime } = target.detail
-        switch (freq) {
-          case EventFreq.WEEKLY:
-            return `自${start.split(' ')[0]}开始${until ? `${until.split(' ')[0]}前` : ''} 每周${byDay.split(',').map(val => ['日', '一', '二', '三', '四', '五', '六'][val]).join('、')} ${startTime} - ${endTime}`
-          default:
-            return until ? `${start} - ${until}` : `自${start}开始`
-        }
+        return getEventDescription(target.detail)
       }
       return ''
     },

+ 2 - 8
src/views/schedule/history/index.vue

@@ -19,10 +19,10 @@ import { getPublishHistory } from '@/api/platform'
 import {
   State,
   EventPriority,
-  EventFreq,
   EventTarget,
   PublishType
 } from '@/constant'
+import { getEventDescription } from '@/utils/event'
 
 export default {
   name: 'ScheduleDeployHistory',
@@ -88,13 +88,7 @@ export default {
     },
     getDesc (target) {
       if (target.type === PublishType.EVENT && target.detail.priority === EventPriority.INSERTED) {
-        const { freq, start, until, byDay, startTime, endTime } = target.detail
-        switch (freq) {
-          case EventFreq.WEEKLY:
-            return `自${start.split(' ')[0]}开始${until ? `至${until.split(' ')[0]}前` : ''} 每周${byDay.split(',').map(val => ['日', '一', '二', '三', '四', '五', '六'][val]).join('、')} ${startTime} - ${endTime}`
-          default:
-            return until ? `${start} - ${until}` : `自${start}开始`
-        }
+        return getEventDescription(target.detail)
       }
       return ''
     },