Commit 3257b55718ed6e52e16ac15880c8f3f82a396634

Authored by xingyu
1 parent 291f31be

refactor: crontab components

yudao-ui-admin-vue3/src/components/Crontab/index.ts 0 → 100644
  1 +import Crontab from './src/index.vue'
  2 +
  3 +export { Crontab }
... ...
yudao-ui-admin-vue3/src/components/Crontab/day.vue renamed to yudao-ui-admin-vue3/src/components/Crontab/src/components/day.vue
1   -<template>
2   - <el-form size="small">
3   - <el-form-item>
4   - <el-radio v-model="radioValue" :label="1"> 日,允许的通配符[, - * ? / L W] </el-radio>
5   - </el-form-item>
6   -
7   - <el-form-item>
8   - <el-radio v-model="radioValue" :label="2"> 不指定 </el-radio>
9   - </el-form-item>
10   -
11   - <el-form-item>
12   - <el-radio v-model="radioValue" :label="3">
13   - 周期从
14   - <el-input-number v-model="cycle01" :min="1" :max="30" /> -
15   - <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 2" :max="31" /> 日
16   - </el-radio>
17   - </el-form-item>
18   -
19   - <el-form-item>
20   - <el-radio v-model="radioValue" :label="4">
21   - 从
22   - <el-input-number v-model="average01" :min="1" :max="30" /> 号开始,每
23   - <el-input-number v-model="average02" :min="1" :max="31 - average01 || 1" /> 日执行一次
24   - </el-radio>
25   - </el-form-item>
26   -
27   - <el-form-item>
28   - <el-radio v-model="radioValue" :label="5">
29   - 每月
30   - <el-input-number v-model="workday" :min="1" :max="31" /> 号最近的那个工作日
31   - </el-radio>
32   - </el-form-item>
33   -
34   - <el-form-item>
35   - <el-radio v-model="radioValue" :label="6"> 本月最后一天 </el-radio>
36   - </el-form-item>
37   -
38   - <el-form-item>
39   - <el-radio v-model="radioValue" :label="7">
40   - 指定
41   - <el-select
42   - clearable
43   - v-model="checkboxList"
44   - placeholder="可多选"
45   - multiple
46   - style="width: 100%"
47   - >
48   - <el-option v-for="item in 31" :key="item" :value="item">{{ item }}</el-option>
49   - </el-select>
50   - </el-radio>
51   - </el-form-item>
52   - </el-form>
53   -</template>
54   -
55   -<script lang="ts" setup>
  1 +<script setup lang="ts">
56 2 import { computed, ref, watch } from 'vue'
57   -
  3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
58 4 const props = defineProps({
59 5 check: {
60 6 type: Function,
... ... @@ -172,3 +118,56 @@ watch(checkboxString, () =&gt; {
172 118 }
173 119 })
174 120 </script>
  121 +<template>
  122 + <el-form>
  123 + <el-form-item>
  124 + <el-radio v-model="radioValue" :label="1"> 日,允许的通配符[, - * ? / L W] </el-radio>
  125 + </el-form-item>
  126 +
  127 + <el-form-item>
  128 + <el-radio v-model="radioValue" :label="2"> 不指定 </el-radio>
  129 + </el-form-item>
  130 +
  131 + <el-form-item>
  132 + <el-radio v-model="radioValue" :label="3">
  133 + 周期从
  134 + <el-input-number v-model="cycle01" :min="1" :max="30" /> -
  135 + <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 2" :max="31" /> 日
  136 + </el-radio>
  137 + </el-form-item>
  138 +
  139 + <el-form-item>
  140 + <el-radio v-model="radioValue" :label="4">
  141 + 从
  142 + <el-input-number v-model="average01" :min="1" :max="30" /> 号开始,每
  143 + <el-input-number v-model="average02" :min="1" :max="31 - average01 || 1" /> 日执行一次
  144 + </el-radio>
  145 + </el-form-item>
  146 +
  147 + <el-form-item>
  148 + <el-radio v-model="radioValue" :label="5">
  149 + 每月
  150 + <el-input-number v-model="workday" :min="1" :max="31" /> 号最近的那个工作日
  151 + </el-radio>
  152 + </el-form-item>
  153 +
  154 + <el-form-item>
  155 + <el-radio v-model="radioValue" :label="6"> 本月最后一天 </el-radio>
  156 + </el-form-item>
  157 +
  158 + <el-form-item>
  159 + <el-radio v-model="radioValue" :label="7">
  160 + 指定
  161 + <el-select
  162 + clearable
  163 + v-model="checkboxList"
  164 + placeholder="可多选"
  165 + multiple
  166 + style="width: 100%"
  167 + >
  168 + <el-option v-for="item in 31" :key="item" :value="item">{{ item }}</el-option>
  169 + </el-select>
  170 + </el-radio>
  171 + </el-form-item>
  172 + </el-form>
  173 +</template>
... ...
yudao-ui-admin-vue3/src/components/Crontab/hour.vue renamed to yudao-ui-admin-vue3/src/components/Crontab/src/components/hour.vue
1   -<template>
2   - <el-form size="small">
3   - <el-form-item>
4   - <el-radio v-model="radioValue" :label="1"> 小时,允许的通配符[, - * /] </el-radio>
5   - </el-form-item>
6   -
7   - <el-form-item>
8   - <el-radio v-model="radioValue" :label="2">
9   - 周期从
10   - <el-input-number v-model="cycle01" :min="0" :max="22" /> -
11   - <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> 小时
12   - </el-radio>
13   - </el-form-item>
14   -
15   - <el-form-item>
16   - <el-radio v-model="radioValue" :label="3">
17   - 从
18   - <el-input-number v-model="average01" :min="0" :max="22" /> 小时开始,每
19   - <el-input-number v-model="average02" :min="1" :max="23 - average01 || 0" /> 小时执行一次
20   - </el-radio>
21   - </el-form-item>
22   -
23   - <el-form-item>
24   - <el-radio v-model="radioValue" :label="4">
25   - 指定
26   - <el-select
27   - clearable
28   - v-model="checkboxList"
29   - placeholder="可多选"
30   - multiple
31   - style="width: 100%"
32   - >
33   - <el-option v-for="item in 24" :key="item" :value="item - 1">{{ item - 1 }}</el-option>
34   - </el-select>
35   - </el-radio>
36   - </el-form-item>
37   - </el-form>
38   -</template>
39   -
40   -<script lang="ts" setup>
  1 +<script setup lang="ts">
41 2 import { computed, ref, watch } from 'vue'
42   -
  3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
43 4 const props = defineProps({
44 5 check: {
45 6 type: Function,
... ... @@ -119,3 +80,41 @@ watch(radioValue, () =&gt; {
119 80 }
120 81 })
121 82 </script>
  83 +<template>
  84 + <el-form>
  85 + <el-form-item>
  86 + <el-radio v-model="radioValue" :label="1"> 小时,允许的通配符[, - * /] </el-radio>
  87 + </el-form-item>
  88 +
  89 + <el-form-item>
  90 + <el-radio v-model="radioValue" :label="2">
  91 + 周期从
  92 + <el-input-number v-model="cycle01" :min="0" :max="22" /> -
  93 + <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> 小时
  94 + </el-radio>
  95 + </el-form-item>
  96 +
  97 + <el-form-item>
  98 + <el-radio v-model="radioValue" :label="3">
  99 + 从
  100 + <el-input-number v-model="average01" :min="0" :max="22" /> 小时开始,每
  101 + <el-input-number v-model="average02" :min="1" :max="23 - average01 || 0" /> 小时执行一次
  102 + </el-radio>
  103 + </el-form-item>
  104 +
  105 + <el-form-item>
  106 + <el-radio v-model="radioValue" :label="4">
  107 + 指定
  108 + <el-select
  109 + clearable
  110 + v-model="checkboxList"
  111 + placeholder="可多选"
  112 + multiple
  113 + style="width: 100%"
  114 + >
  115 + <el-option v-for="item in 24" :key="item" :value="item - 1">{{ item - 1 }}</el-option>
  116 + </el-select>
  117 + </el-radio>
  118 + </el-form-item>
  119 + </el-form>
  120 +</template>
... ...
yudao-ui-admin-vue3/src/components/Crontab/src/components/index.ts 0 → 100644
  1 +import CrontabSecond from './second.vue'
  2 +import CrontabMin from './min.vue'
  3 +import CrontabHour from './hour.vue'
  4 +import CrontabDay from './day.vue'
  5 +import CrontabMonth from './month.vue'
  6 +import CrontabWeek from './week.vue'
  7 +import CrontabYear from './year.vue'
  8 +import CrontabResult from './result.vue'
  9 +
  10 +export {
  11 + CrontabSecond,
  12 + CrontabMin,
  13 + CrontabHour,
  14 + CrontabDay,
  15 + CrontabMonth,
  16 + CrontabWeek,
  17 + CrontabYear,
  18 + CrontabResult
  19 +}
... ...
yudao-ui-admin-vue3/src/components/Crontab/min.vue renamed to yudao-ui-admin-vue3/src/components/Crontab/src/components/min.vue
1   -<template>
2   - <el-form size="small">
3   - <el-form-item>
4   - <el-radio v-model="radioValue" :label="1"> 分钟,允许的通配符[, - * /] </el-radio>
5   - </el-form-item>
6   -
7   - <el-form-item>
8   - <el-radio v-model="radioValue" :label="2">
9   - 周期从
10   - <el-input-number v-model="cycle01" :min="0" :max="58" /> -
11   - <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> 分钟
12   - </el-radio>
13   - </el-form-item>
14   -
15   - <el-form-item>
16   - <el-radio v-model="radioValue" :label="3">
17   - 从
18   - <el-input-number v-model="average01" :min="0" :max="58" /> 分钟开始,每
19   - <el-input-number v-model="average02" :min="1" :max="59 - average01 || 0" /> 分钟执行一次
20   - </el-radio>
21   - </el-form-item>
22   -
23   - <el-form-item>
24   - <el-radio v-model="radioValue" :label="4">
25   - 指定
26   - <el-select
27   - clearable
28   - v-model="checkboxList"
29   - placeholder="可多选"
30   - multiple
31   - style="width: 100%"
32   - >
33   - <el-option v-for="item in 60" :key="item" :value="item - 1">{{ item - 1 }}</el-option>
34   - </el-select>
35   - </el-radio>
36   - </el-form-item>
37   - </el-form>
38   -</template>
39   -
40   -<script lang="ts" setup>
  1 +<script setup lang="ts">
41 2 import { computed, ref, watch } from 'vue'
42   -
  3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
43 4 const props = defineProps({
44 5 check: {
45 6 type: Function,
... ... @@ -119,3 +80,41 @@ watch(radioValue, () =&gt; {
119 80 }
120 81 })
121 82 </script>
  83 +<template>
  84 + <el-form>
  85 + <el-form-item>
  86 + <el-radio v-model="radioValue" :label="1"> 分钟,允许的通配符[, - * /] </el-radio>
  87 + </el-form-item>
  88 +
  89 + <el-form-item>
  90 + <el-radio v-model="radioValue" :label="2">
  91 + 周期从
  92 + <el-input-number v-model="cycle01" :min="0" :max="58" /> -
  93 + <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> 分钟
  94 + </el-radio>
  95 + </el-form-item>
  96 +
  97 + <el-form-item>
  98 + <el-radio v-model="radioValue" :label="3">
  99 + 从
  100 + <el-input-number v-model="average01" :min="0" :max="58" /> 分钟开始,每
  101 + <el-input-number v-model="average02" :min="1" :max="59 - average01 || 0" /> 分钟执行一次
  102 + </el-radio>
  103 + </el-form-item>
  104 +
  105 + <el-form-item>
  106 + <el-radio v-model="radioValue" :label="4">
  107 + 指定
  108 + <el-select
  109 + clearable
  110 + v-model="checkboxList"
  111 + placeholder="可多选"
  112 + multiple
  113 + style="width: 100%"
  114 + >
  115 + <el-option v-for="item in 60" :key="item" :value="item - 1">{{ item - 1 }}</el-option>
  116 + </el-select>
  117 + </el-radio>
  118 + </el-form-item>
  119 + </el-form>
  120 +</template>
... ...
yudao-ui-admin-vue3/src/components/Crontab/month.vue renamed to yudao-ui-admin-vue3/src/components/Crontab/src/components/month.vue
1   -<template>
2   - <el-form size="small">
3   - <el-form-item>
4   - <el-radio v-model="radioValue" :label="1"> 月,允许的通配符[, - * /] </el-radio>
5   - </el-form-item>
6   -
7   - <el-form-item>
8   - <el-radio v-model="radioValue" :label="2">
9   - 周期从
10   - <el-input-number v-model="cycle01" :min="1" :max="11" /> -
11   - <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 2" :max="12" /> 月
12   - </el-radio>
13   - </el-form-item>
14   -
15   - <el-form-item>
16   - <el-radio v-model="radioValue" :label="3">
17   - 从
18   - <el-input-number v-model="average01" :min="1" :max="11" /> 月开始,每
19   - <el-input-number v-model="average02" :min="1" :max="12 - average01 || 0" /> 月月执行一次
20   - </el-radio>
21   - </el-form-item>
22   -
23   - <el-form-item>
24   - <el-radio v-model="radioValue" :label="4">
25   - 指定
26   - <el-select
27   - clearable
28   - v-model="checkboxList"
29   - placeholder="可多选"
30   - multiple
31   - style="width: 100%"
32   - >
33   - <el-option v-for="item in 12" :key="item" :value="item">{{ item }}</el-option>
34   - </el-select>
35   - </el-radio>
36   - </el-form-item>
37   - </el-form>
38   -</template>
39   -
40   -<script lang="ts" setup>
  1 +<script setup lang="ts">
41 2 import { computed, ref, watch } from 'vue'
42   -
  3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
43 4 const props = defineProps({
44 5 check: {
45 6 type: Function,
... ... @@ -119,3 +80,41 @@ watch(radioValue, () =&gt; {
119 80 }
120 81 })
121 82 </script>
  83 +<template>
  84 + <el-form>
  85 + <el-form-item>
  86 + <el-radio v-model="radioValue" :label="1"> 月,允许的通配符[, - * /] </el-radio>
  87 + </el-form-item>
  88 +
  89 + <el-form-item>
  90 + <el-radio v-model="radioValue" :label="2">
  91 + 周期从
  92 + <el-input-number v-model="cycle01" :min="1" :max="11" /> -
  93 + <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 2" :max="12" /> 月
  94 + </el-radio>
  95 + </el-form-item>
  96 +
  97 + <el-form-item>
  98 + <el-radio v-model="radioValue" :label="3">
  99 + 从
  100 + <el-input-number v-model="average01" :min="1" :max="11" /> 月开始,每
  101 + <el-input-number v-model="average02" :min="1" :max="12 - average01 || 0" /> 月月执行一次
  102 + </el-radio>
  103 + </el-form-item>
  104 +
  105 + <el-form-item>
  106 + <el-radio v-model="radioValue" :label="4">
  107 + 指定
  108 + <el-select
  109 + clearable
  110 + v-model="checkboxList"
  111 + placeholder="可多选"
  112 + multiple
  113 + style="width: 100%"
  114 + >
  115 + <el-option v-for="item in 12" :key="item" :value="item">{{ item }}</el-option>
  116 + </el-select>
  117 + </el-radio>
  118 + </el-form-item>
  119 + </el-form>
  120 +</template>
... ...
yudao-ui-admin-vue3/src/components/Crontab/result.vue renamed to yudao-ui-admin-vue3/src/components/Crontab/src/components/result.vue
1   -<template>
2   - <div class="popup-result">
3   - <p class="title">最近5次运行时间</p>
4   - <ul class="popup-result-scroll">
5   - <template v-if="isShow">
6   - <li v-for="item in resultList" :key="item">{{ item }}</li>
7   - </template>
8   - <li v-else>计算结果中...</li>
9   - </ul>
10   - </div>
11   -</template>
12   -
13   -<script lang="ts" setup>
  1 +<script setup lang="ts">
14 2 import { onMounted, ref, watch } from 'vue'
15 3  
16 4 const props = defineProps({
... ... @@ -572,3 +560,14 @@ function checkDate(value) {
572 560 return value === format
573 561 }
574 562 </script>
  563 +<template>
  564 + <div class="popup-result">
  565 + <p class="title">最近5次运行时间</p>
  566 + <ul class="popup-result-scroll">
  567 + <template v-if="isShow">
  568 + <li v-for="item in resultList" :key="item">{{ item }}</li>
  569 + </template>
  570 + <li v-else>计算结果中...</li>
  571 + </ul>
  572 + </div>
  573 +</template>
... ...
yudao-ui-admin-vue3/src/components/Crontab/second.vue renamed to yudao-ui-admin-vue3/src/components/Crontab/src/components/second.vue
1   -<template>
2   - <el-form size="small">
3   - <el-form-item>
4   - <el-radio v-model="radioValue" :label="1"> 秒,允许的通配符[, - * /] </el-radio>
5   - </el-form-item>
6   -
7   - <el-form-item>
8   - <el-radio v-model="radioValue" :label="2">
9   - 周期从
10   - <el-input-number v-model="cycle01" :min="0" :max="58" /> -
11   - <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> 秒
12   - </el-radio>
13   - </el-form-item>
14   -
15   - <el-form-item>
16   - <el-radio v-model="radioValue" :label="3">
17   - 从
18   - <el-input-number v-model="average01" :min="0" :max="58" /> 秒开始,每
19   - <el-input-number v-model="average02" :min="1" :max="59 - average01 || 0" /> 秒执行一次
20   - </el-radio>
21   - </el-form-item>
22   -
23   - <el-form-item>
24   - <el-radio v-model="radioValue" :label="4">
25   - 指定
26   - <el-select
27   - clearable
28   - v-model="checkboxList"
29   - placeholder="可多选"
30   - multiple
31   - style="width: 100%"
32   - >
33   - <el-option v-for="item in 60" :key="item" :value="item - 1">{{ item - 1 }}</el-option>
34   - </el-select>
35   - </el-radio>
36   - </el-form-item>
37   - </el-form>
38   -</template>
39   -
40   -<script lang="ts" setup>
  1 +<script setup lang="ts">
41 2 import { computed, ref, watch } from 'vue'
42   -
  3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
43 4 const props = defineProps({
44 5 check: {
45 6 type: Function,
... ... @@ -119,3 +80,41 @@ watch(radioValue, () =&gt; {
119 80 }
120 81 })
121 82 </script>
  83 +<template>
  84 + <el-form>
  85 + <el-form-item>
  86 + <el-radio v-model="radioValue" :label="1"> 秒,允许的通配符[, - * /] </el-radio>
  87 + </el-form-item>
  88 +
  89 + <el-form-item>
  90 + <el-radio v-model="radioValue" :label="2">
  91 + 周期从
  92 + <el-input-number v-model="cycle01" :min="0" :max="58" /> -
  93 + <el-input-number v-model="cycle02" :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> 秒
  94 + </el-radio>
  95 + </el-form-item>
  96 +
  97 + <el-form-item>
  98 + <el-radio v-model="radioValue" :label="3">
  99 + 从
  100 + <el-input-number v-model="average01" :min="0" :max="58" /> 秒开始,每
  101 + <el-input-number v-model="average02" :min="1" :max="59 - average01 || 0" /> 秒执行一次
  102 + </el-radio>
  103 + </el-form-item>
  104 +
  105 + <el-form-item>
  106 + <el-radio v-model="radioValue" :label="4">
  107 + 指定
  108 + <el-select
  109 + clearable
  110 + v-model="checkboxList"
  111 + placeholder="可多选"
  112 + multiple
  113 + style="width: 100%"
  114 + >
  115 + <el-option v-for="item in 60" :key="item" :value="item - 1">{{ item - 1 }}</el-option>
  116 + </el-select>
  117 + </el-radio>
  118 + </el-form-item>
  119 + </el-form>
  120 +</template>
... ...
yudao-ui-admin-vue3/src/components/Crontab/week.vue renamed to yudao-ui-admin-vue3/src/components/Crontab/src/components/week.vue
1   -<template>
2   - <el-form size="small">
3   - <el-form-item>
4   - <el-radio v-model="radioValue" :label="1"> 周,允许的通配符[, - * ? / L #] </el-radio>
5   - </el-form-item>
6   -
7   - <el-form-item>
8   - <el-radio v-model="radioValue" :label="2"> 不指定 </el-radio>
9   - </el-form-item>
10   -
11   - <el-form-item>
12   - <el-radio v-model="radioValue" :label="3">
13   - 周期从星期
14   - <el-select clearable v-model="cycle01">
15   - <el-option
16   - v-for="(item, index) of weekList"
17   - :key="index"
18   - :label="item.value"
19   - :value="item.key"
20   - :disabled="item.key === 1"
21   - >{{ item.value }}</el-option
22   - >
23   - </el-select>
24   - -
25   - <el-select clearable v-model="cycle02">
26   - <el-option
27   - v-for="(item, index) of weekList"
28   - :key="index"
29   - :label="item.value"
30   - :value="item.key"
31   - :disabled="item.key < cycle01 && item.key !== 1"
32   - >{{ item.value }}</el-option
33   - >
34   - </el-select>
35   - </el-radio>
36   - </el-form-item>
37   -
38   - <el-form-item>
39   - <el-radio v-model="radioValue" :label="4">
40   - 第
41   - <el-input-number v-model="average01" :min="1" :max="4" /> 周的星期
42   - <el-select clearable v-model="average02">
43   - <el-option
44   - v-for="(item, index) of weekList"
45   - :key="index"
46   - :label="item.value"
47   - :value="item.key"
48   - >{{ item.value }}</el-option
49   - >
50   - </el-select>
51   - </el-radio>
52   - </el-form-item>
53   -
54   - <el-form-item>
55   - <el-radio v-model="radioValue" :label="5">
56   - 本月最后一个星期
57   - <el-select clearable v-model="weekday">
58   - <el-option
59   - v-for="(item, index) of weekList"
60   - :key="index"
61   - :label="item.value"
62   - :value="item.key"
63   - >{{ item.value }}</el-option
64   - >
65   - </el-select>
66   - </el-radio>
67   - </el-form-item>
68   -
69   - <el-form-item>
70   - <el-radio v-model="radioValue" :label="6">
71   - 指定
72   - <el-select
73   - clearable
74   - v-model="checkboxList"
75   - placeholder="可多选"
76   - multiple
77   - style="width: 100%"
78   - >
79   - <el-option
80   - v-for="(item, index) of weekList"
81   - :key="index"
82   - :label="item.value"
83   - :value="String(item.key)"
84   - >{{ item.value }}</el-option
85   - >
86   - </el-select>
87   - </el-radio>
88   - </el-form-item>
89   - </el-form>
90   -</template>
91   -
92   -<script lang="ts" setup>
  1 +<script setup lang="ts">
93 2 import { computed, ref, watch } from 'vue'
94   -
  3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
95 4 const props = defineProps({
96 5 check: {
97 6 type: Function,
... ... @@ -222,3 +131,93 @@ watch(radioValue, () =&gt; {
222 131 }
223 132 })
224 133 </script>
  134 +<template>
  135 + <el-form>
  136 + <el-form-item>
  137 + <el-radio v-model="radioValue" :label="1"> 周,允许的通配符[, - * ? / L #] </el-radio>
  138 + </el-form-item>
  139 +
  140 + <el-form-item>
  141 + <el-radio v-model="radioValue" :label="2"> 不指定 </el-radio>
  142 + </el-form-item>
  143 +
  144 + <el-form-item>
  145 + <el-radio v-model="radioValue" :label="3">
  146 + 周期从星期
  147 + <el-select clearable v-model="cycle01">
  148 + <el-option
  149 + v-for="(item, index) of weekList"
  150 + :key="index"
  151 + :label="item.value"
  152 + :value="item.key"
  153 + :disabled="item.key === 1"
  154 + >{{ item.value }}</el-option
  155 + >
  156 + </el-select>
  157 + -
  158 + <el-select clearable v-model="cycle02">
  159 + <el-option
  160 + v-for="(item, index) of weekList"
  161 + :key="index"
  162 + :label="item.value"
  163 + :value="item.key"
  164 + :disabled="item.key < cycle01 && item.key !== 1"
  165 + >{{ item.value }}</el-option
  166 + >
  167 + </el-select>
  168 + </el-radio>
  169 + </el-form-item>
  170 +
  171 + <el-form-item>
  172 + <el-radio v-model="radioValue" :label="4">
  173 + 第
  174 + <el-input-number v-model="average01" :min="1" :max="4" /> 周的星期
  175 + <el-select clearable v-model="average02">
  176 + <el-option
  177 + v-for="(item, index) of weekList"
  178 + :key="index"
  179 + :label="item.value"
  180 + :value="item.key"
  181 + >{{ item.value }}</el-option
  182 + >
  183 + </el-select>
  184 + </el-radio>
  185 + </el-form-item>
  186 +
  187 + <el-form-item>
  188 + <el-radio v-model="radioValue" :label="5">
  189 + 本月最后一个星期
  190 + <el-select clearable v-model="weekday">
  191 + <el-option
  192 + v-for="(item, index) of weekList"
  193 + :key="index"
  194 + :label="item.value"
  195 + :value="item.key"
  196 + >{{ item.value }}</el-option
  197 + >
  198 + </el-select>
  199 + </el-radio>
  200 + </el-form-item>
  201 +
  202 + <el-form-item>
  203 + <el-radio v-model="radioValue" :label="6">
  204 + 指定
  205 + <el-select
  206 + clearable
  207 + v-model="checkboxList"
  208 + placeholder="可多选"
  209 + multiple
  210 + style="width: 100%"
  211 + >
  212 + <el-option
  213 + v-for="(item, index) of weekList"
  214 + :key="index"
  215 + :label="item.value"
  216 + :value="String(item.key)"
  217 + >{{ item.value }}</el-option
  218 + >
  219 + </el-select>
  220 + </el-radio>
  221 + </el-form-item>
  222 + </el-form>
  223 +</template>
... ...
yudao-ui-admin-vue3/src/components/Crontab/year.vue renamed to yudao-ui-admin-vue3/src/components/Crontab/src/components/year.vue
1   -<template>
2   - <el-form size="small">
3   - <el-form-item>
4   - <el-radio label="1" v-model="radioValue"> 不填,允许的通配符[, - * /] </el-radio>
5   - </el-form-item>
6   -
7   - <el-form-item>
8   - <el-radio label="2" v-model="radioValue"> 每年 </el-radio>
9   - </el-form-item>
10   -
11   - <el-form-item>
12   - <el-radio label="3" v-model="radioValue">
13   - 周期从
14   - <el-input-number v-model="cycle01" :min="fullYear" :max="2098" /> -
15   - <el-input-number
16   - v-model="cycle02"
17   - :min="cycle01 ? cycle01 + 1 : fullYear + 1"
18   - :max="2099"
19   - />
20   - </el-radio>
21   - </el-form-item>
22   -
23   - <el-form-item>
24   - <el-radio label="4" v-model="radioValue">
25   - 从
26   - <el-input-number v-model="average01" :min="fullYear" :max="2098" /> 年开始,每
27   - <el-input-number v-model="average02" :min="1" :max="2099 - average01 || fullYear" />
28   - 年执行一次
29   - </el-radio>
30   - </el-form-item>
31   -
32   - <el-form-item>
33   - <el-radio label="5" v-model="radioValue">
34   - 指定
35   - <el-select clearable v-model="checkboxList" placeholder="可多选" multiple>
36   - <el-option
37   - v-for="item in 9"
38   - :key="item"
39   - :value="item - 1 + fullYear"
40   - :label="item - 1 + fullYear"
41   - />
42   - </el-select>
43   - </el-radio>
44   - </el-form-item>
45   - </el-form>
46   -</template>
47   -
48   -<script lang="ts" setup>
  1 +<script setup lang="ts">
49 2 import { computed, onMounted, ref, watch } from 'vue'
50   -
  3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
51 4 const props = defineProps({
52 5 check: {
53 6 type: Function,
... ... @@ -138,3 +91,49 @@ onMounted(() =&gt; {
138 91 average01.value = fullYear.value
139 92 })
140 93 </script>
  94 +<template>
  95 + <el-form>
  96 + <el-form-item>
  97 + <el-radio label="1" v-model="radioValue"> 不填,允许的通配符[, - * /] </el-radio>
  98 + </el-form-item>
  99 +
  100 + <el-form-item>
  101 + <el-radio label="2" v-model="radioValue"> 每年 </el-radio>
  102 + </el-form-item>
  103 +
  104 + <el-form-item>
  105 + <el-radio label="3" v-model="radioValue">
  106 + 周期从
  107 + <el-input-number v-model="cycle01" :min="fullYear" :max="2098" /> -
  108 + <el-input-number
  109 + v-model="cycle02"
  110 + :min="cycle01 ? cycle01 + 1 : fullYear + 1"
  111 + :max="2099"
  112 + />
  113 + </el-radio>
  114 + </el-form-item>
  115 +
  116 + <el-form-item>
  117 + <el-radio label="4" v-model="radioValue">
  118 + 从
  119 + <el-input-number v-model="average01" :min="fullYear" :max="2098" /> 年开始,每
  120 + <el-input-number v-model="average02" :min="1" :max="2099 - average01 || fullYear" />
  121 + 年执行一次
  122 + </el-radio>
  123 + </el-form-item>
  124 +
  125 + <el-form-item>
  126 + <el-radio label="5" v-model="radioValue">
  127 + 指定
  128 + <el-select clearable v-model="checkboxList" placeholder="可多选" multiple>
  129 + <el-option
  130 + v-for="item in 9"
  131 + :key="item"
  132 + :value="item - 1 + fullYear"
  133 + :label="item - 1 + fullYear"
  134 + />
  135 + </el-select>
  136 + </el-radio>
  137 + </el-form-item>
  138 + </el-form>
  139 +</template>
... ...
yudao-ui-admin-vue3/src/components/Crontab/index.vue renamed to yudao-ui-admin-vue3/src/components/Crontab/src/index.vue
1   -<template>
2   - <div>
3   - <el-tabs type="border-card">
4   - <el-tab-pane label="秒" v-if="shouldHide('second')">
5   - <CrontabSecond
6   - @update="updateCrontabValue"
7   - :check="checkNumber"
8   - :cron="crontabValueObj"
9   - ref="cronsecond"
10   - />
11   - </el-tab-pane>
12   -
13   - <el-tab-pane label="分钟" v-if="shouldHide('min')">
14   - <CrontabMin
15   - @update="updateCrontabValue"
16   - :check="checkNumber"
17   - :cron="crontabValueObj"
18   - ref="cronmin"
19   - />
20   - </el-tab-pane>
21   -
22   - <el-tab-pane label="小时" v-if="shouldHide('hour')">
23   - <CrontabHour
24   - @update="updateCrontabValue"
25   - :check="checkNumber"
26   - :cron="crontabValueObj"
27   - ref="cronhour"
28   - />
29   - </el-tab-pane>
30   -
31   - <el-tab-pane label="日" v-if="shouldHide('day')">
32   - <CrontabDay
33   - @update="updateCrontabValue"
34   - :check="checkNumber"
35   - :cron="crontabValueObj"
36   - ref="cronday"
37   - />
38   - </el-tab-pane>
39   -
40   - <el-tab-pane label="月" v-if="shouldHide('month')">
41   - <CrontabMonth
42   - @update="updateCrontabValue"
43   - :check="checkNumber"
44   - :cron="crontabValueObj"
45   - ref="cronmonth"
46   - />
47   - </el-tab-pane>
48   -
49   - <el-tab-pane label="周" v-if="shouldHide('week')">
50   - <CrontabWeek
51   - @update="updateCrontabValue"
52   - :check="checkNumber"
53   - :cron="crontabValueObj"
54   - ref="cronweek"
55   - />
56   - </el-tab-pane>
57   -
58   - <el-tab-pane label="年" v-if="shouldHide('year')">
59   - <CrontabYear
60   - @update="updateCrontabValue"
61   - :check="checkNumber"
62   - :cron="crontabValueObj"
63   - ref="cronyear"
64   - />
65   - </el-tab-pane>
66   - </el-tabs>
67   -
68   - <div class="popup-main">
69   - <div class="popup-result">
70   - <p class="title">时间表达式</p>
71   - <table>
72   - <thead>
73   - <th v-for="item of tabTitles" width="40" :key="item">{{ item }}</th>
74   - <th>Cron 表达式</th>
75   - </thead>
76   - <tbody>
77   - <td>
78   - <span>{{ crontabValueObj.second }}</span>
79   - </td>
80   - <td>
81   - <span>{{ crontabValueObj.min }}</span>
82   - </td>
83   - <td>
84   - <span>{{ crontabValueObj.hour }}</span>
85   - </td>
86   - <td>
87   - <span>{{ crontabValueObj.day }}</span>
88   - </td>
89   - <td>
90   - <span>{{ crontabValueObj.month }}</span>
91   - </td>
92   - <td>
93   - <span>{{ crontabValueObj.week }}</span>
94   - </td>
95   - <td>
96   - <span>{{ crontabValueObj.year }}</span>
97   - </td>
98   - <td>
99   - <span>{{ crontabValueString }}</span>
100   - </td>
101   - </tbody>
102   - </table>
103   - </div>
104   - <CrontabResult :ex="crontabValueString" />
105   -
106   - <div class="pop_btn">
107   - <el-button size="small" type="primary" @click="submitFill">确定</el-button>
108   - <el-button size="small" type="warning" @click="clearCron">重置</el-button>
109   - <el-button size="small" @click="hidePopup">取消</el-button>
110   - </div>
111   - </div>
112   - </div>
113   -</template>
114   -
115   -<script lang="ts" setup>
116   -import CrontabSecond from './second.vue'
117   -import CrontabMin from './min.vue'
118   -import CrontabHour from './hour.vue'
119   -import CrontabDay from './day.vue'
120   -import CrontabMonth from './month.vue'
121   -import CrontabWeek from './week.vue'
122   -import CrontabYear from './year.vue'
123   -import CrontabResult from './result.vue'
  1 +<script setup lang="ts">
  2 +import {
  3 + CrontabSecond,
  4 + CrontabMin,
  5 + CrontabHour,
  6 + CrontabDay,
  7 + CrontabMonth,
  8 + CrontabWeek,
  9 + CrontabYear,
  10 + CrontabResult
  11 +} from './components'
  12 +import { ElTabs, ElTabPane } from 'element-plus'
124 13 import { computed, defineEmits, defineProps, onMounted, Ref, ref, watch } from 'vue'
125 14  
126 15 const cronsecond = ref(null)
... ... @@ -208,7 +97,7 @@ function updateCrontabValue(name, value, from) {
208 97 changeRadio(name, value)
209 98 }
210 99 }
211   -
  100 +// 赋值到组件
212 101 function changeRadio(name, value) {
213 102 let arr = ['second', 'min', 'hour', 'month'],
214 103 refName = 'cron' + name,
... ... @@ -373,7 +262,119 @@ function clearCron() {
373 262  
374 263 watch(() => props.expression, resolveExp)
375 264 </script>
  265 +<template>
  266 + <div>
  267 + <el-tabs type="border-card">
  268 + <el-tab-pane label="秒" v-if="shouldHide('second')">
  269 + <CrontabSecond
  270 + @update="updateCrontabValue"
  271 + :check="checkNumber"
  272 + :cron="crontabValueObj"
  273 + ref="cronsecond"
  274 + />
  275 + </el-tab-pane>
  276 +
  277 + <el-tab-pane label="分钟" v-if="shouldHide('min')">
  278 + <CrontabMin
  279 + @update="updateCrontabValue"
  280 + :check="checkNumber"
  281 + :cron="crontabValueObj"
  282 + ref="cronmin"
  283 + />
  284 + </el-tab-pane>
  285 +
  286 + <el-tab-pane label="小时" v-if="shouldHide('hour')">
  287 + <CrontabHour
  288 + @update="updateCrontabValue"
  289 + :check="checkNumber"
  290 + :cron="crontabValueObj"
  291 + ref="cronhour"
  292 + />
  293 + </el-tab-pane>
  294 +
  295 + <el-tab-pane label="日" v-if="shouldHide('day')">
  296 + <CrontabDay
  297 + @update="updateCrontabValue"
  298 + :check="checkNumber"
  299 + :cron="crontabValueObj"
  300 + ref="cronday"
  301 + />
  302 + </el-tab-pane>
  303 +
  304 + <el-tab-pane label="月" v-if="shouldHide('month')">
  305 + <CrontabMonth
  306 + @update="updateCrontabValue"
  307 + :check="checkNumber"
  308 + :cron="crontabValueObj"
  309 + ref="cronmonth"
  310 + />
  311 + </el-tab-pane>
  312 +
  313 + <el-tab-pane label="周" v-if="shouldHide('week')">
  314 + <CrontabWeek
  315 + @update="updateCrontabValue"
  316 + :check="checkNumber"
  317 + :cron="crontabValueObj"
  318 + ref="cronweek"
  319 + />
  320 + </el-tab-pane>
  321 +
  322 + <el-tab-pane label="年" v-if="shouldHide('year')">
  323 + <CrontabYear
  324 + @update="updateCrontabValue"
  325 + :check="checkNumber"
  326 + :cron="crontabValueObj"
  327 + ref="cronyear"
  328 + />
  329 + </el-tab-pane>
  330 + </el-tabs>
376 331  
  332 + <div class="popup-main">
  333 + <div class="popup-result">
  334 + <p class="title">时间表达式</p>
  335 + <table>
  336 + <thead>
  337 + <th v-for="item of tabTitles" width="40" :key="item">{{ item }}</th>
  338 + <th>Cron 表达式</th>
  339 + </thead>
  340 + <tbody>
  341 + <td>
  342 + <span>{{ crontabValueObj.second }}</span>
  343 + </td>
  344 + <td>
  345 + <span>{{ crontabValueObj.min }}</span>
  346 + </td>
  347 + <td>
  348 + <span>{{ crontabValueObj.hour }}</span>
  349 + </td>
  350 + <td>
  351 + <span>{{ crontabValueObj.day }}</span>
  352 + </td>
  353 + <td>
  354 + <span>{{ crontabValueObj.month }}</span>
  355 + </td>
  356 + <td>
  357 + <span>{{ crontabValueObj.week }}</span>
  358 + </td>
  359 + <td>
  360 + <span>{{ crontabValueObj.year }}</span>
  361 + </td>
  362 + <td>
  363 + <span>{{ crontabValueString }}</span>
  364 + </td>
  365 + </tbody>
  366 + </table>
  367 + </div>
  368 + <CrontabResult :ex="crontabValueString" />
  369 +
  370 + <div class="pop_btn">
  371 + <el-button type="primary" @click="submitFill">确定</el-button>
  372 + <el-button type="warning" @click="clearCron">重置</el-button>
  373 + <el-button @click="hidePopup">取消</el-button>
  374 + </div>
  375 + </div>
  376 + </div>
  377 +</template>
377 378 <style scoped>
378 379 .pop_btn {
379 380 text-align: center;
... ...