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 import { computed, ref, watch } from 'vue' 2 import { computed, ref, watch } from 'vue'
57 - 3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
58 const props = defineProps({ 4 const props = defineProps({
59 check: { 5 check: {
60 type: Function, 6 type: Function,
@@ -172,3 +118,56 @@ watch(checkboxString, () =&gt; { @@ -172,3 +118,56 @@ watch(checkboxString, () =&gt; {
172 } 118 }
173 }) 119 })
174 </script> 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 import { computed, ref, watch } from 'vue' 2 import { computed, ref, watch } from 'vue'
42 - 3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
43 const props = defineProps({ 4 const props = defineProps({
44 check: { 5 check: {
45 type: Function, 6 type: Function,
@@ -119,3 +80,41 @@ watch(radioValue, () =&gt; { @@ -119,3 +80,41 @@ watch(radioValue, () =&gt; {
119 } 80 }
120 }) 81 })
121 </script> 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 import { computed, ref, watch } from 'vue' 2 import { computed, ref, watch } from 'vue'
42 - 3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
43 const props = defineProps({ 4 const props = defineProps({
44 check: { 5 check: {
45 type: Function, 6 type: Function,
@@ -119,3 +80,41 @@ watch(radioValue, () =&gt; { @@ -119,3 +80,41 @@ watch(radioValue, () =&gt; {
119 } 80 }
120 }) 81 })
121 </script> 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 import { computed, ref, watch } from 'vue' 2 import { computed, ref, watch } from 'vue'
42 - 3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
43 const props = defineProps({ 4 const props = defineProps({
44 check: { 5 check: {
45 type: Function, 6 type: Function,
@@ -119,3 +80,41 @@ watch(radioValue, () =&gt; { @@ -119,3 +80,41 @@ watch(radioValue, () =&gt; {
119 } 80 }
120 }) 81 })
121 </script> 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 import { onMounted, ref, watch } from 'vue' 2 import { onMounted, ref, watch } from 'vue'
15 3
16 const props = defineProps({ 4 const props = defineProps({
@@ -572,3 +560,14 @@ function checkDate(value) { @@ -572,3 +560,14 @@ function checkDate(value) {
572 return value === format 560 return value === format
573 } 561 }
574 </script> 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 import { computed, ref, watch } from 'vue' 2 import { computed, ref, watch } from 'vue'
42 - 3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
43 const props = defineProps({ 4 const props = defineProps({
44 check: { 5 check: {
45 type: Function, 6 type: Function,
@@ -119,3 +80,41 @@ watch(radioValue, () =&gt; { @@ -119,3 +80,41 @@ watch(radioValue, () =&gt; {
119 } 80 }
120 }) 81 })
121 </script> 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 import { computed, ref, watch } from 'vue' 2 import { computed, ref, watch } from 'vue'
94 - 3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
95 const props = defineProps({ 4 const props = defineProps({
96 check: { 5 check: {
97 type: Function, 6 type: Function,
@@ -222,3 +131,93 @@ watch(radioValue, () =&gt; { @@ -222,3 +131,93 @@ watch(radioValue, () =&gt; {
222 } 131 }
223 }) 132 })
224 </script> 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 import { computed, onMounted, ref, watch } from 'vue' 2 import { computed, onMounted, ref, watch } from 'vue'
50 - 3 +import { ElForm, ElFormItem, ElRadio, ElSelect, ElOption, ElInputNumber } from 'element-plus'
51 const props = defineProps({ 4 const props = defineProps({
52 check: { 5 check: {
53 type: Function, 6 type: Function,
@@ -138,3 +91,49 @@ onMounted(() =&gt; { @@ -138,3 +91,49 @@ onMounted(() =&gt; {
138 average01.value = fullYear.value 91 average01.value = fullYear.value
139 }) 92 })
140 </script> 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 import { computed, defineEmits, defineProps, onMounted, Ref, ref, watch } from 'vue' 13 import { computed, defineEmits, defineProps, onMounted, Ref, ref, watch } from 'vue'
125 14
126 const cronsecond = ref(null) 15 const cronsecond = ref(null)
@@ -208,7 +97,7 @@ function updateCrontabValue(name, value, from) { @@ -208,7 +97,7 @@ function updateCrontabValue(name, value, from) {
208 changeRadio(name, value) 97 changeRadio(name, value)
209 } 98 }
210 } 99 }
211 - 100 +// 赋值到组件
212 function changeRadio(name, value) { 101 function changeRadio(name, value) {
213 let arr = ['second', 'min', 'hour', 'month'], 102 let arr = ['second', 'min', 'hour', 'month'],
214 refName = 'cron' + name, 103 refName = 'cron' + name,
@@ -373,7 +262,119 @@ function clearCron() { @@ -373,7 +262,119 @@ function clearCron() {
373 262
374 watch(() => props.expression, resolveExp) 263 watch(() => props.expression, resolveExp)
375 </script> 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 <style scoped> 378 <style scoped>
378 .pop_btn { 379 .pop_btn {
379 text-align: center; 380 text-align: center;