Browse Source

【issues/I4IFWX】定时任务表达式,”星期“一栏错误]

zhangdaiscott 3 years ago
parent
commit
2a5ec11660

+ 36 - 1
ant-design-vue-jeecg/src/components/jeecg/JEasyCron/EasyCron.vue

@@ -144,8 +144,12 @@ export default {
       const v = this.cronValue_c
       if (this.hideYear || this.hideSecond) return v
       const vs = v.split(' ')
+      if (vs.length >= 6) {
+        // 转成 Quartz 的规则
+        vs[5] = this.convertWeekToQuartz(vs[5])
+      }
       return vs.slice(0, vs.length - 1).join(' ')
-    }
+    },
   },
   watch: {
     cronValue(newVal, oldVal) {
@@ -226,6 +230,37 @@ export default {
       if (values.length > i) this.year = values[i]
       this.assignInput()
     },
+    // Quartz 的规则:
+    // 1 = 周日,2 = 周一,3 = 周二,4 = 周三,5 = 周四,6 = 周五,7 = 周六
+    convertWeekToQuartz(week) {
+      let convert = (v) => {
+        if (v === '0') {
+          return '1'
+        }
+        if (v === '1') {
+          return '0'
+        }
+        return (Number.parseInt(v) - 1).toString()
+      }
+      // 匹配示例 1-7 or 1/7
+      let patten1 = /^([0-7])([-/])([0-7])$/
+      // 匹配示例 1,4,7
+      let patten2 = /^([0-7])(,[0-7])+$/
+      if (/^[0-7]$/.test(week)) {
+        return convert(week)
+      } else if (patten1.test(week)) {
+        return week.replace(patten1, ($0, before, separator, after) => {
+          if (separator === '/') {
+            return convert(before) + separator + after
+          } else {
+            return convert(before) + separator + convert(after)
+          }
+        })
+      } else if (patten2.test(week)) {
+        return week.split(',').map(v => convert(v)).join(',')
+      }
+      return week
+    },
     calTriggerList: simpleDebounce(function () {
       this.calTriggerListInner()
     }, 500),

+ 7 - 7
ant-design-vue-jeecg/src/components/jeecg/JEasyCron/tabs/week.vue

@@ -51,14 +51,14 @@ import mixin from './mixin'
 import { replaceWeekName, WEEK_MAP_EN } from './const.js'
 
 const WEEK_MAP = {
-  '周一': 1,
-  '周二': 2,
-  '周三': 3,
-  '周四': 4,
-  '周五': 5,
-  '周六': 6,
+  '周一': 2,
+  '周二': 3,
+  '周三': 4,
+  '周四': 5,
+  '周五': 6,
+  '周六': 7,
   // 按照国人习惯,将周日放到每周的最后一天
-  '周日': 7,
+  '周日': 1,
 }
 
 export default {