Casper Dai 1 rok pred
rodič
commit
88e0577cd9

+ 7 - 12
src/components/dialog/TaskDialog/index.vue

@@ -144,9 +144,12 @@ import { mapGetters } from 'vuex'
 import {
   FOREVER,
   ONE_DAY
-} from '@/constant'
-import { parseTime } from '@/utils'
-import { toDate } from '@/utils/event'
+} from '@/constant.js'
+import {
+  parseTime,
+  getCronWeekOptions
+} from '@/utils'
+import { toDate } from '@/utils/event.js'
 
 export default {
   name: 'TaskDialog',
@@ -170,15 +173,7 @@ export default {
   },
   data () {
     return {
-      weeks: [
-        { value: '1', label: '一' },
-        { value: '2', label: '二' },
-        { value: '3', label: '三' },
-        { value: '4', label: '四' },
-        { value: '5', label: '五' },
-        { value: '6', label: '六' },
-        { value: '7', label: '日' }
-      ],
+      weeks: getCronWeekOptions(),
       pickerOptions: {
         disabledDate: this.isDisableDate,
         shortcuts: [

+ 20 - 4
src/utils/index.js

@@ -344,7 +344,7 @@ export function transformDatasetAssetToAsset (asset) {
   return asset
 }
 
-// dayOfWeek,周一至周日对应1~7
+// dayOfWeek,周日为起始,对应1~7
 // 最终cron数据对应的为秒、分、时、日、月、星期、年,例如'30 0 12 14 11 ? 2022'
 export function transformToCron (startDate, endDate, dayOfWeek, executeTime) {
   let suffix = null
@@ -381,9 +381,7 @@ export function transformScreenTaskInfo (startDate, endDate, dayOfWeek, executeT
         : `${startDate} - ${endDate}`,
     day: startDate === endDate
       ? '一次性任务'
-      : dayOfWeek === '?'
-        ? '每天'
-        : `每周${dayOfWeek.split(',').map(val => ['', '一', '二', '三', '四', '五', '六', '日'][val]).join('、')}`,
+      : parseCronWeekToInfo(dayOfWeek),
     time: executeTime.map(({ start, end }) => start && end
       ? `[${start.replace(/:\d{2}$/, '')} - ${end.replace(/:\d{2}$/, '')}]`
       : start
@@ -391,3 +389,21 @@ export function transformScreenTaskInfo (startDate, endDate, dayOfWeek, executeT
         : `${end.replace(/:\d{2}$/, '')} 关闭屏幕`).join(', ')
   }
 }
+
+export function getCronWeekOptions () {
+  return [
+    { value: '2', label: '一' },
+    { value: '3', label: '二' },
+    { value: '4', label: '三' },
+    { value: '5', label: '四' },
+    { value: '6', label: '五' },
+    { value: '7', label: '六' },
+    { value: '1', label: '日' }
+  ]
+}
+
+export function parseCronWeekToInfo (dayOfWeek) {
+  return dayOfWeek === '?'
+    ? '每天'
+    : `每周${dayOfWeek.split(',').map(val => ['', '日', '一', '二', '三', '四', '五', '六'][val]).join('、')}`
+}

+ 1 - 2
src/views/device/detail/components/DeviceInvoke/ScreenVolume.vue

@@ -2,7 +2,7 @@
   <div :class="defaultClass">
     <slot
       name="trigger"
-      :invoke="invoke"
+      :invoke="onTrigger"
     >
       <i
         class="o-icon lg u-pointer"
@@ -125,7 +125,6 @@ export default {
       })
     },
     createTask (task) {
-      console.log(task)
       if (task && task.inputs) {
         const valueKey = this.valueKey
         const prop = task.inputs.find(item => item.name === valueKey)

+ 19 - 16
src/views/device/detail/components/DeviceInvoke/components/SimpleTaskDialog.vue

@@ -7,7 +7,9 @@
   >
     <template #default>
       <div class="c-grid-form auto u-align-self--center">
-        <div class="c-grid-form__label">执行方式</div>
+        <div class="c-grid-form__label">
+          执行方式
+        </div>
         <el-radio-group
           v-model="task.freq"
           class="l-flex--row c-grid-form__auto u-width--lg"
@@ -21,12 +23,15 @@
           </el-radio>
         </el-radio-group>
         <template v-if="isWeekly">
-          <div class="c-grid-form__label c-grid-form__auto u-required">每周</div>
+          <div class="c-grid-form__label c-grid-form__auto u-required">
+            每周
+          </div>
           <el-checkbox-group
             v-model="task.dayOfWeek"
             class="l-flex--row c-grid-form__auto"
             size="mini"
             fill="#1c5cb0"
+            :min="1"
           >
             <el-checkbox-button
               v-for="week in weeks"
@@ -37,7 +42,9 @@
             </el-checkbox-button>
           </el-checkbox-group>
         </template>
-        <div class="c-grid-form__label u-required">执行时间</div>
+        <div class="c-grid-form__label u-required">
+          执行时间
+        </div>
         <el-time-picker
           v-model="task.executeTime"
           class="u-width--xs"
@@ -53,8 +60,11 @@
 </template>
 
 <script>
-import { Frequency } from '@/constant'
-import { parseTime } from '@/utils'
+import { Frequency } from '@/constant.js'
+import {
+  parseTime,
+  getCronWeekOptions
+} from '@/utils'
 
 export default {
   name: 'SimpleTaskDialog',
@@ -64,15 +74,7 @@ export default {
         { value: Frequency.DAILY, label: '每天' },
         { value: Frequency.WEEKLY, label: '每周' }
       ],
-      weeks: [
-        { value: '2', label: '一' },
-        { value: '3', label: '二' },
-        { value: '4', label: '三' },
-        { value: '5', label: '四' },
-        { value: '6', label: '五' },
-        { value: '7', label: '六' },
-        { value: '1', label: '日' }
-      ],
+      weeks: getCronWeekOptions(),
       task: null
     }
   },
@@ -85,7 +87,7 @@ export default {
     show ({ freq = Frequency.DAILY, dayOfWeek, executeTime } = {}) {
       this.task = {
         freq,
-        dayOfWeek: dayOfWeek ? dayOfWeek.split(',') : [],
+        dayOfWeek: dayOfWeek && dayOfWeek !== '?' ? dayOfWeek.split(',') : this.weeks.map(({ value }) => value),
         executeTime: executeTime ? executeTime.replace(/\d{2}$/, '00') : parseTime(new Date(), '{h}:{i}:00')
       }
       this.$refs.dialog.show()
@@ -104,7 +106,7 @@ export default {
         if (this.task.dayOfWeek.length === 7) {
           task.freq = Frequency.DAILY
         } else {
-          task.dayOfWeek = dayOfWeek.join(',')
+          task.dayOfWeek = dayOfWeek.sort().join(',')
         }
       }
       if (!executeTime) {
@@ -114,6 +116,7 @@ export default {
         })
         return
       }
+      console.log('simple task', task)
       this.$emit('confirm', {
         value: task,
         done

+ 4 - 4
src/views/device/detail/components/DeviceInvoke/mixins/task.js

@@ -1,3 +1,4 @@
+import { parseCronWeekToInfo } from '@/utils'
 import {
   getTasks,
   addTask,
@@ -5,8 +6,8 @@ import {
   deleteTask,
   activateTask,
   deactivateTask
-} from '@/api/device'
-import baseMixin from './base'
+} from '@/api/device.js'
+import baseMixin from './base.js'
 
 export default {
   mixins: [baseMixin],
@@ -73,7 +74,6 @@ export default {
       // implement in component
     },
     onSave ({ value: task, done }) {
-      console.log('task', task)
       if (
         !this.isAdd
         && Object.keys(task).every(key => task[key] === this.$taskOptions[key])
@@ -148,7 +148,7 @@ export default {
           task.type = '每天'
           break
         case 1:
-          task.type = `每周${task.dayOfWeek.split(',').map(val => ['', '日', '一', '二', '三', '四', '五', '六'][val])}`
+          task.type = parseCronWeekToInfo(task.dayOfWeek)
           break
         default:
           break

+ 0 - 1
src/views/screen/deploy/components/EventFrequencyConfigDialog.vue

@@ -346,7 +346,6 @@ export default {
         // 总天数 = 结束日期 - 开始日期 + 1
         if (!isMoreThanOneWeek(diff)) {
           const day = diff / ONE_DAY | 0
-          console.log('day', day)
           let week = startDateTime.getDay()
           let has = false
           for (let i = 0; i < day; i++) {