@robot-admin/naive-ui-components 0.11.8 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/README.md +172 -29
- package/README_EN.md +171 -28
- package/SECURITY.md +1 -0
- package/dist/C_ActionBar.cjs +1 -1
- package/dist/C_ActionBar.css +67 -67
- package/dist/C_ActionBar.d.cts +2 -2
- package/dist/C_ActionBar.d.ts +2 -2
- package/dist/C_ActionBar.js +1 -1
- package/dist/C_ActionBar2.cjs +1 -1
- package/dist/C_ActionBar2.js +1 -1
- package/dist/C_AntV.css +70 -70
- package/dist/C_AntV2.cjs +3 -3
- package/dist/C_AntV2.js +3 -3
- package/dist/C_AudioPlayer.css +81 -66
- package/dist/C_AudioPlayer.d.cts +1 -1
- package/dist/C_AudioPlayer.d.ts +1 -1
- package/dist/C_AudioPlayer2.cjs +1 -1
- package/dist/C_AudioPlayer2.js +1 -1
- package/dist/C_AvatarGroup.css +40 -25
- package/dist/C_AvatarGroup.d.cts +1 -1
- package/dist/C_AvatarGroup.d.ts +1 -1
- package/dist/C_AvatarGroup2.cjs +1 -1
- package/dist/C_AvatarGroup2.js +1 -1
- package/dist/C_Barcode.css +6 -6
- package/dist/C_Barcode.d.cts +1 -1
- package/dist/C_Barcode.d.ts +1 -1
- package/dist/C_Barcode2.cjs +1 -1
- package/dist/C_Barcode2.js +1 -1
- package/dist/C_Breadcrumb.css +14 -14
- package/dist/C_Breadcrumb.d.cts +1 -1
- package/dist/C_Breadcrumb.d.ts +1 -1
- package/dist/C_Breadcrumb2.cjs +1 -1
- package/dist/C_Breadcrumb2.js +1 -1
- package/dist/C_Captcha.cjs +1 -1
- package/dist/C_Captcha.css +193 -51
- package/dist/C_Captcha.d.cts +2 -3
- package/dist/C_Captcha.d.ts +2 -3
- package/dist/C_Captcha.js +1 -1
- package/dist/C_Captcha2.cjs +1 -1
- package/dist/C_Captcha2.js +1 -1
- package/dist/C_Cascade.css +2 -2
- package/dist/C_Cascade.d.cts +1 -1
- package/dist/C_Cascade.d.ts +1 -1
- package/dist/C_Cascade2.cjs +1 -1
- package/dist/C_Cascade2.js +1 -1
- package/dist/C_Chat.css +96 -78
- package/dist/C_Chat.d.cts +1 -1
- package/dist/C_Chat.d.ts +1 -1
- package/dist/C_Chat2.cjs +1 -1
- package/dist/C_Chat2.js +1 -1
- package/dist/C_City.css +52 -28
- package/dist/C_City.d.cts +1 -1
- package/dist/C_City.d.ts +1 -1
- package/dist/C_City2.cjs +1 -1
- package/dist/C_City2.js +1 -1
- package/dist/C_Code.css +48 -42
- package/dist/C_Code.d.cts +1 -1
- package/dist/C_Code.d.ts +1 -1
- package/dist/C_Code2.cjs +1 -1
- package/dist/C_Code2.js +1 -1
- package/dist/C_CollapsePanel.css +14 -14
- package/dist/C_CollapsePanel2.cjs +1 -1
- package/dist/C_CollapsePanel2.js +1 -1
- package/dist/C_ContextMenu.css +14 -14
- package/dist/C_ContextMenu.d.cts +1 -1
- package/dist/C_ContextMenu.d.ts +1 -1
- package/dist/C_ContextMenu2.cjs +1 -1
- package/dist/C_ContextMenu2.js +1 -1
- package/dist/C_Cron.css +94 -55
- package/dist/C_Cron2.cjs +1 -1
- package/dist/C_Cron2.js +1 -1
- package/dist/C_Date.d.cts +1 -1
- package/dist/C_Date.d.ts +1 -1
- package/dist/C_Date2.cjs +1 -1
- package/dist/C_Date2.js +1 -1
- package/dist/C_Draggable.css +48 -48
- package/dist/C_Draggable2.cjs +1 -1
- package/dist/C_Draggable2.js +1 -1
- package/dist/C_Editor.css +13 -14
- package/dist/C_Editor.d.cts +1 -1
- package/dist/C_Editor.d.ts +1 -1
- package/dist/C_Editor2.cjs +1 -1
- package/dist/C_Editor2.js +1 -1
- package/dist/C_FilePreview.css +18 -18
- package/dist/C_FilePreview2.cjs +1 -1
- package/dist/C_FilePreview2.js +1 -1
- package/dist/C_Form.base.css +36 -36
- package/dist/C_Form.css +49 -50
- package/dist/C_Form2.cjs +1 -1
- package/dist/C_Form2.js +1 -1
- package/dist/C_FormModal.cjs +1 -0
- package/dist/C_FormModal.css +41 -0
- package/dist/C_FormModal.d.cts +2 -0
- package/dist/C_FormModal.d.ts +3 -0
- package/dist/C_FormModal.js +1 -0
- package/dist/C_FormModal2.cjs +1 -0
- package/dist/C_FormModal2.js +1 -0
- package/dist/C_FormSearch.css +45 -45
- package/dist/C_FormSearch2.cjs +1 -1
- package/dist/C_FormSearch2.js +1 -1
- package/dist/C_FormulaEditor.css +94 -55
- package/dist/C_FormulaEditor2.cjs +2 -2
- package/dist/C_FormulaEditor2.js +2 -2
- package/dist/C_FullCalendar.css +8 -1
- package/dist/C_FullCalendar2.cjs +1 -1
- package/dist/C_FullCalendar2.js +1 -1
- package/dist/C_GlobalSearch2.cjs +1 -1
- package/dist/C_GlobalSearch2.js +1 -1
- package/dist/C_Guide.css +14 -14
- package/dist/C_Guide2.cjs +1 -1
- package/dist/C_Guide2.js +1 -1
- package/dist/C_Icon.css +14 -14
- package/dist/C_Icon2.cjs +1 -1
- package/dist/C_Icon2.js +1 -1
- package/dist/C_ImageCropper.css +22 -22
- package/dist/C_ImageCropper2.cjs +1 -1
- package/dist/C_ImageCropper2.js +1 -1
- package/dist/C_Language.css +14 -14
- package/dist/C_Language2.cjs +1 -1
- package/dist/C_Language2.js +1 -1
- package/dist/C_Login.css +232 -149
- package/dist/C_Login2.cjs +1 -1
- package/dist/C_Login2.js +1 -1
- package/dist/C_Map.css +3 -3
- package/dist/C_Map2.cjs +1 -1
- package/dist/C_Map2.js +1 -1
- package/dist/C_Markdown.css +35 -35
- package/dist/C_Markdown2.cjs +1 -1
- package/dist/C_Markdown2.js +1 -1
- package/dist/C_Menu.d.cts +1 -1
- package/dist/C_Menu2.cjs +1 -1
- package/dist/C_Menu2.js +1 -1
- package/dist/C_NotificationCenter.css +30 -30
- package/dist/C_NotificationCenter2.cjs +1 -1
- package/dist/C_NotificationCenter2.js +1 -1
- package/dist/C_OrgChart.css +4 -0
- package/dist/C_OrgChart2.cjs +1 -1
- package/dist/C_OrgChart2.js +1 -1
- package/dist/C_Progress2.cjs +1 -1
- package/dist/C_Progress2.js +1 -1
- package/dist/C_QRCode.css +8 -8
- package/dist/C_QRCode2.cjs +1 -1
- package/dist/C_QRCode2.js +1 -1
- package/dist/C_Signature.css +14 -14
- package/dist/C_Signature2.cjs +1 -1
- package/dist/C_Signature2.js +1 -1
- package/dist/C_Skeleton2.cjs +1 -1
- package/dist/C_Skeleton2.js +1 -1
- package/dist/C_SplitPane.css +39 -39
- package/dist/C_SplitPane2.cjs +1 -1
- package/dist/C_SplitPane2.js +1 -1
- package/dist/C_Steps.css +48 -38
- package/dist/C_Steps2.cjs +1 -1
- package/dist/C_Steps2.js +1 -1
- package/dist/C_Table.base.css +160 -160
- package/dist/C_Table.cjs +1 -1
- package/dist/C_Table.css +173 -174
- package/dist/C_Table.d.ts +4 -3
- package/dist/C_Table.js +1 -1
- package/dist/C_Tabs.cjs +1 -0
- package/dist/C_Tabs.css +1 -0
- package/dist/C_Tabs.d.cts +2 -0
- package/dist/C_Tabs.d.ts +2 -0
- package/dist/C_Tabs.js +1 -0
- package/dist/C_TagsView.css +52 -52
- package/dist/C_TagsView2.cjs +1 -1
- package/dist/C_TagsView2.js +1 -1
- package/dist/C_Theme.css +14 -14
- package/dist/C_Theme2.cjs +1 -1
- package/dist/C_Theme2.js +1 -1
- package/dist/C_Time.css +4 -4
- package/dist/C_Time2.cjs +1 -1
- package/dist/C_Time2.js +1 -1
- package/dist/C_Timeline.css +76 -58
- package/dist/C_Timeline2.cjs +1 -1
- package/dist/C_Timeline2.js +1 -1
- package/dist/C_Transfer.css +51 -51
- package/dist/C_Transfer2.cjs +1 -1
- package/dist/C_Transfer2.js +1 -1
- package/dist/C_Tree.css +35 -32
- package/dist/C_Tree2.cjs +1 -1
- package/dist/C_Tree2.js +1 -1
- package/dist/C_Upload.css +53 -50
- package/dist/C_Upload2.cjs +1 -1
- package/dist/C_Upload2.js +1 -1
- package/dist/C_VideoPlayer.css +17 -13
- package/dist/C_VideoPlayer2.cjs +2 -2
- package/dist/C_VideoPlayer2.js +2 -2
- package/dist/C_VtableGantt.css +19 -19
- package/dist/C_VtableGantt2.cjs +1 -1
- package/dist/C_VtableGantt2.js +1 -1
- package/dist/C_WaterFall.css +19 -15
- package/dist/C_WaterFall2.cjs +1 -1
- package/dist/C_WaterFall2.js +1 -1
- package/dist/C_WorkFlow.css +123 -123
- package/dist/C_WorkFlow2.cjs +1 -1
- package/dist/C_WorkFlow2.js +1 -1
- package/dist/constants.d.cts +2 -2
- package/dist/constants.d.ts +2 -2
- package/dist/constants2.d.cts +3 -3
- package/dist/constants2.d.ts +3 -3
- package/dist/constants3.d.cts +8 -4
- package/dist/constants3.d.ts +8 -4
- package/dist/constants4.d.cts +6 -6
- package/dist/constants4.d.ts +6 -6
- package/dist/constants5.d.cts +2 -2
- package/dist/constants5.d.ts +2 -2
- package/dist/data.d.cts +108 -0
- package/dist/data.d.ts +108 -0
- package/dist/data2.cjs +1 -0
- package/dist/data2.js +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +49 -49
- package/dist/index.d.ts +51 -49
- package/dist/index.js +1 -1
- package/dist/index.vue.d.cts +74 -69
- package/dist/index.vue.d.ts +74 -69
- package/dist/index10.vue.d.cts +80 -39
- package/dist/index10.vue.d.ts +68 -77
- package/dist/index11.vue.d.cts +68 -77
- package/dist/index11.vue.d.ts +54 -69
- package/dist/index12.vue.d.cts +54 -69
- package/dist/index12.vue.d.ts +52 -58
- package/dist/index13.vue.d.cts +52 -58
- package/dist/index13.vue.d.ts +1 -1
- package/dist/index14.vue.d.cts +1 -1
- package/dist/index14.vue.d.ts +14 -47
- package/dist/index15.vue.d.cts +14 -47
- package/dist/index16.vue.d.ts +15 -12
- package/dist/index17.vue.d.cts +15 -12
- package/dist/index17.vue.d.ts +4 -4
- package/dist/index18.vue.d.cts +4 -4
- package/dist/index18.vue.d.ts +2 -2
- package/dist/index19.vue.d.cts +1 -1
- package/dist/index19.vue.d.ts +1 -1
- package/dist/index2.vue.d.cts +70 -65
- package/dist/index2.vue.d.ts +70 -65
- package/dist/index20.vue.d.cts +1 -1
- package/dist/index20.vue.d.ts +1 -1
- package/dist/index24.vue.d.cts +3 -3
- package/dist/index24.vue.d.ts +3 -3
- package/dist/index25.vue.d.cts +1 -1
- package/dist/index25.vue.d.ts +1 -1
- package/dist/index26.vue.d.cts +5 -5
- package/dist/index26.vue.d.ts +5 -5
- package/dist/index27.vue.d.cts +1 -1
- package/dist/index27.vue.d.ts +1 -1
- package/dist/index3.vue.d.cts +30 -80
- package/dist/index3.vue.d.ts +30 -80
- package/dist/index4.vue.d.cts +130 -30
- package/dist/index4.vue.d.ts +22 -30
- package/dist/index5.vue.d.cts +18 -126
- package/dist/index5.vue.d.ts +22 -19
- package/dist/index6.vue.d.cts +22 -19
- package/dist/index6.vue.d.ts +117 -22
- package/dist/index7.vue.d.cts +117 -22
- package/dist/index7.vue.d.ts +17 -110
- package/dist/index8.vue.d.cts +17 -110
- package/dist/index8.vue.d.ts +37 -24
- package/dist/index9.vue.d.cts +37 -24
- package/dist/index9.vue.d.ts +80 -39
- package/dist/mapUtils.d.cts +2 -2
- package/dist/mapUtils.d.ts +2 -2
- package/dist/presets.d.cts +96 -0
- package/dist/presets.d.ts +96 -0
- package/dist/resolver.cjs +1 -1
- package/dist/resolver.d.cts +1 -1
- package/dist/resolver.d.ts +1 -1
- package/dist/resolver.js +1 -1
- package/dist/style.css +1735 -1400
- package/dist/useCalendarEvents.d.cts +23 -18
- package/dist/useCalendarEvents.d.ts +23 -18
- package/dist/useCollapsePanel.d.cts +4 -3
- package/dist/useCollapsePanel.d.ts +4 -3
- package/dist/useCropperCore.d.cts +32 -17
- package/dist/useCropperCore.d.ts +32 -17
- package/dist/useDraggableLayout.d.cts +2 -2
- package/dist/useDraggableLayout.d.ts +2 -2
- package/dist/useDynamicFormState.d.cts +7 -2
- package/dist/useDynamicFormState.d.ts +7 -2
- package/dist/useEdgeInteraction.d.cts +20 -19
- package/dist/useEdgeInteraction.d.ts +20 -19
- package/dist/useFullscreen.d.cts +6 -6
- package/dist/useFullscreen.d.ts +6 -6
- package/dist/useInfiniteScroll.d.cts +1 -1
- package/dist/useInfiniteScroll.d.ts +1 -1
- package/dist/useQRCode.d.cts +5 -4
- package/dist/useQRCode.d.ts +5 -4
- package/dist/useSearchState.d.cts +9 -9
- package/dist/useSearchState.d.ts +9 -9
- package/dist/useSignatureHistory.d.cts +18 -10
- package/dist/useSignatureHistory.d.ts +18 -10
- package/dist/useSplitResize.d.cts +7 -7
- package/dist/useSplitResize.d.ts +7 -7
- package/dist/useTableQuery.cjs +3 -3
- package/dist/useTableQuery.d.cts +12 -5
- package/dist/useTableQuery.d.ts +12 -5
- package/dist/useTableQuery.js +3 -3
- package/dist/useTimeSelection.d.cts +6 -3
- package/dist/useTimeSelection.d.ts +6 -3
- package/dist/useTreeOperations.d.cts +8 -8
- package/dist/useTreeOperations.d.ts +8 -8
- package/dist/useWorkflowValidation.d.cts +6 -4
- package/dist/useWorkflowValidation.d.ts +6 -4
- package/dist/verification.d.cts +71 -6
- package/dist/verification.d.ts +71 -6
- package/package.json +5 -3
- package/dist/types.d.ts +0 -58
- package/dist/types2.d.cts +0 -58
package/dist/C_Cron.css
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
/* unplugin-vue-components disabled */.cron-field-editor__grid[data-v-
|
|
1
|
+
/* unplugin-vue-components disabled */.cron-field-editor__grid[data-v-60c57fc6] {
|
|
2
2
|
display: grid;
|
|
3
3
|
grid-template-columns: repeat(var(--cols, 10), 1fr);
|
|
4
4
|
gap: 4px;
|
|
5
5
|
}
|
|
6
|
-
.cron-field-editor__cell[data-v-
|
|
6
|
+
.cron-field-editor__cell[data-v-60c57fc6] {
|
|
7
|
+
appearance: none;
|
|
8
|
+
border: 0;
|
|
9
|
+
background: transparent;
|
|
10
|
+
font: inherit;
|
|
7
11
|
display: flex;
|
|
8
12
|
align-items: center;
|
|
9
13
|
justify-content: center;
|
|
@@ -14,22 +18,28 @@
|
|
|
14
18
|
transition: all var(--c-transition, 0.2s ease);
|
|
15
19
|
user-select: none;
|
|
16
20
|
color: var(--c-text-2);
|
|
21
|
+
}
|
|
22
|
+
.cron-field-editor__cell[data-v-60c57fc6]:focus-visible {
|
|
23
|
+
outline: 2px solid var(--c-primary);
|
|
24
|
+
outline-offset: 1px;
|
|
25
|
+
}
|
|
26
|
+
.cron-field-editor__cell[data-v-60c57fc6] {
|
|
17
27
|
/* 非交互高亮(every / range / step 的视觉反馈) */
|
|
18
28
|
}
|
|
19
|
-
.cron-field-editor__cell--on[data-v-
|
|
29
|
+
.cron-field-editor__cell--on[data-v-60c57fc6]:not(.cron-field-editor__cell--pick) {
|
|
20
30
|
background: color-mix(in srgb, var(--c-primary) 12%, transparent);
|
|
21
31
|
color: var(--c-primary);
|
|
22
32
|
}
|
|
23
|
-
.cron-field-editor__cell[data-v-
|
|
33
|
+
.cron-field-editor__cell[data-v-60c57fc6] {
|
|
24
34
|
/* 可交互模式(specific) */
|
|
25
35
|
}
|
|
26
|
-
.cron-field-editor__cell--pick[data-v-
|
|
36
|
+
.cron-field-editor__cell--pick[data-v-60c57fc6] {
|
|
27
37
|
cursor: pointer;
|
|
28
38
|
}
|
|
29
|
-
.cron-field-editor__cell--pick[data-v-
|
|
39
|
+
.cron-field-editor__cell--pick[data-v-60c57fc6]:hover:not(.cron-field-editor__cell--on) {
|
|
30
40
|
background: var(--c-bg-card);
|
|
31
41
|
}
|
|
32
|
-
.cron-field-editor__cell--pick.cron-field-editor__cell--on[data-v-
|
|
42
|
+
.cron-field-editor__cell--pick.cron-field-editor__cell--on[data-v-60c57fc6] {
|
|
33
43
|
background: var(--c-primary);
|
|
34
44
|
color: #fff;
|
|
35
45
|
font-weight: 600;
|
|
@@ -77,7 +87,7 @@
|
|
|
77
87
|
font-size: 12px;
|
|
78
88
|
flex-shrink: 0;
|
|
79
89
|
}
|
|
80
|
-
/* unplugin-vue-components disabled */.cron-templates__header[data-v-
|
|
90
|
+
/* unplugin-vue-components disabled */.cron-templates__header[data-v-241e79f6] {
|
|
81
91
|
display: flex;
|
|
82
92
|
align-items: center;
|
|
83
93
|
gap: 6px;
|
|
@@ -86,46 +96,57 @@
|
|
|
86
96
|
margin-bottom: 10px;
|
|
87
97
|
color: var(--c-text-1);
|
|
88
98
|
}
|
|
89
|
-
.cron-templates__cards[data-v-
|
|
99
|
+
.cron-templates__cards[data-v-241e79f6] {
|
|
90
100
|
display: grid;
|
|
91
101
|
grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
|
|
92
102
|
gap: 8px;
|
|
93
103
|
}
|
|
94
|
-
.cron-templates__card[data-v-
|
|
104
|
+
.cron-templates__card[data-v-241e79f6] {
|
|
105
|
+
appearance: none;
|
|
106
|
+
font: inherit;
|
|
107
|
+
text-align: left;
|
|
95
108
|
padding: 10px 12px;
|
|
96
109
|
border-radius: 8px;
|
|
97
110
|
border: 1px solid var(--c-border);
|
|
98
111
|
cursor: pointer;
|
|
99
112
|
transition: all var(--c-transition, 0.2s ease);
|
|
100
113
|
}
|
|
101
|
-
.cron-templates__card[data-v-
|
|
114
|
+
.cron-templates__card[data-v-241e79f6]:focus-visible {
|
|
115
|
+
outline: 2px solid var(--c-primary);
|
|
116
|
+
outline-offset: 2px;
|
|
117
|
+
}
|
|
118
|
+
.cron-templates__card[data-v-241e79f6]:disabled {
|
|
119
|
+
cursor: not-allowed;
|
|
120
|
+
opacity: 0.6;
|
|
121
|
+
}
|
|
122
|
+
.cron-templates__card[data-v-241e79f6]:hover {
|
|
102
123
|
border-color: var(--c-primary);
|
|
103
124
|
background: color-mix(in srgb, var(--c-primary) 4%, transparent);
|
|
104
125
|
}
|
|
105
|
-
.cron-templates__card--active[data-v-
|
|
126
|
+
.cron-templates__card--active[data-v-241e79f6] {
|
|
106
127
|
border-color: var(--c-primary);
|
|
107
128
|
background: color-mix(in srgb, var(--c-primary) 8%, transparent);
|
|
108
129
|
}
|
|
109
|
-
.cron-templates__card-name[data-v-
|
|
130
|
+
.cron-templates__card-name[data-v-241e79f6] {
|
|
110
131
|
font-size: 13px;
|
|
111
132
|
font-weight: 500;
|
|
112
133
|
line-height: 1.4;
|
|
113
134
|
}
|
|
114
|
-
.cron-templates__card-expr[data-v-
|
|
135
|
+
.cron-templates__card-expr[data-v-241e79f6] {
|
|
115
136
|
font-family: "Courier New", Courier, monospace;
|
|
116
137
|
font-size: 11px;
|
|
117
138
|
color: var(--c-text-4);
|
|
118
139
|
margin-top: 2px;
|
|
119
140
|
}
|
|
120
141
|
/* unplugin-vue-components disabled *//* Cron 表达式编辑器 - 组件级全局样式 */
|
|
121
|
-
.c-cron[data-v-
|
|
142
|
+
.c-cron[data-v-2594f81f] {
|
|
122
143
|
padding: 20px;
|
|
123
144
|
border-radius: 10px;
|
|
124
145
|
border: 1px solid var(--c-border);
|
|
125
146
|
background: var(--c-bg-card);
|
|
126
147
|
/* ═══════ 顶部 ═══════ */
|
|
127
148
|
}
|
|
128
|
-
.c-cron__header[data-v-
|
|
149
|
+
.c-cron__header[data-v-2594f81f] {
|
|
129
150
|
display: flex;
|
|
130
151
|
flex-direction: column;
|
|
131
152
|
gap: 12px;
|
|
@@ -133,29 +154,34 @@
|
|
|
133
154
|
border-bottom: 1px solid var(--c-border);
|
|
134
155
|
margin-bottom: 16px;
|
|
135
156
|
}
|
|
136
|
-
.c-cron__title-row[data-v-
|
|
157
|
+
.c-cron__title-row[data-v-2594f81f] {
|
|
137
158
|
display: flex;
|
|
138
159
|
align-items: center;
|
|
139
160
|
justify-content: space-between;
|
|
140
161
|
}
|
|
141
|
-
.c-cron__title[data-v-
|
|
162
|
+
.c-cron__title[data-v-2594f81f] {
|
|
142
163
|
display: flex;
|
|
143
164
|
align-items: center;
|
|
144
165
|
gap: 6px;
|
|
145
166
|
font-weight: 600;
|
|
146
167
|
font-size: 15px;
|
|
147
168
|
}
|
|
148
|
-
.c-cron[data-v-
|
|
169
|
+
.c-cron[data-v-2594f81f] {
|
|
149
170
|
/* ─── 分段式字段选择器 ──────────────────── */
|
|
150
171
|
}
|
|
151
|
-
.c-cron__segments[data-v-
|
|
172
|
+
.c-cron__segments[data-v-2594f81f] {
|
|
152
173
|
display: flex;
|
|
153
174
|
gap: 2px;
|
|
154
175
|
padding: 3px;
|
|
155
176
|
border-radius: 10px;
|
|
156
177
|
background: var(--c-bg);
|
|
157
178
|
}
|
|
158
|
-
.c-cron__segment[data-v-
|
|
179
|
+
.c-cron__segment[data-v-2594f81f] {
|
|
180
|
+
appearance: none;
|
|
181
|
+
border: 0;
|
|
182
|
+
background: transparent;
|
|
183
|
+
color: inherit;
|
|
184
|
+
font: inherit;
|
|
159
185
|
flex: 1;
|
|
160
186
|
display: flex;
|
|
161
187
|
flex-direction: column;
|
|
@@ -167,20 +193,24 @@
|
|
|
167
193
|
user-select: none;
|
|
168
194
|
min-width: 0;
|
|
169
195
|
}
|
|
170
|
-
.c-cron__segment[data-v-
|
|
196
|
+
.c-cron__segment[data-v-2594f81f]:focus-visible {
|
|
197
|
+
outline: 2px solid var(--c-primary);
|
|
198
|
+
outline-offset: 1px;
|
|
199
|
+
}
|
|
200
|
+
.c-cron__segment[data-v-2594f81f]:not(.c-cron__segment--active):hover {
|
|
171
201
|
background: color-mix(in srgb, var(--c-bg-card) 60%, transparent);
|
|
172
202
|
}
|
|
173
|
-
.c-cron__segment--active[data-v-
|
|
203
|
+
.c-cron__segment--active[data-v-2594f81f] {
|
|
174
204
|
background: var(--c-bg-card);
|
|
175
205
|
box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
|
|
176
206
|
}
|
|
177
|
-
.c-cron__segment--active .c-cron__segment-value[data-v-
|
|
207
|
+
.c-cron__segment--active .c-cron__segment-value[data-v-2594f81f] {
|
|
178
208
|
color: var(--c-primary);
|
|
179
209
|
}
|
|
180
|
-
.c-cron__segment--wildcard:not(.c-cron__segment--active) .c-cron__segment-value[data-v-
|
|
210
|
+
.c-cron__segment--wildcard:not(.c-cron__segment--active) .c-cron__segment-value[data-v-2594f81f] {
|
|
181
211
|
opacity: 0.35;
|
|
182
212
|
}
|
|
183
|
-
.c-cron__segment-value[data-v-
|
|
213
|
+
.c-cron__segment-value[data-v-2594f81f] {
|
|
184
214
|
font-family: "Courier New", Courier, monospace;
|
|
185
215
|
font-size: 15px;
|
|
186
216
|
font-weight: 700;
|
|
@@ -191,24 +221,24 @@
|
|
|
191
221
|
white-space: nowrap;
|
|
192
222
|
text-align: center;
|
|
193
223
|
}
|
|
194
|
-
.c-cron__segment-label[data-v-
|
|
224
|
+
.c-cron__segment-label[data-v-2594f81f] {
|
|
195
225
|
font-size: 11px;
|
|
196
226
|
color: var(--c-text-4);
|
|
197
227
|
margin-top: 2px;
|
|
198
228
|
}
|
|
199
|
-
.c-cron[data-v-
|
|
229
|
+
.c-cron[data-v-2594f81f] {
|
|
200
230
|
/* ─── 表达式行 ─────────────────────────── */
|
|
201
231
|
}
|
|
202
|
-
.c-cron__expr-row[data-v-
|
|
232
|
+
.c-cron__expr-row[data-v-2594f81f] {
|
|
203
233
|
display: flex;
|
|
204
234
|
align-items: center;
|
|
205
235
|
gap: 8px;
|
|
206
236
|
}
|
|
207
|
-
.c-cron__expr-input[data-v-
|
|
237
|
+
.c-cron__expr-input[data-v-2594f81f] {
|
|
208
238
|
width: 240px;
|
|
209
239
|
flex-shrink: 0;
|
|
210
240
|
}
|
|
211
|
-
.c-cron__expr-desc[data-v-
|
|
241
|
+
.c-cron__expr-desc[data-v-2594f81f] {
|
|
212
242
|
flex: 1;
|
|
213
243
|
font-size: 13px;
|
|
214
244
|
min-width: 0;
|
|
@@ -216,39 +246,39 @@
|
|
|
216
246
|
text-overflow: ellipsis;
|
|
217
247
|
white-space: nowrap;
|
|
218
248
|
}
|
|
219
|
-
.c-cron__description[data-v-
|
|
249
|
+
.c-cron__description[data-v-2594f81f] {
|
|
220
250
|
color: var(--c-text-2);
|
|
221
251
|
}
|
|
222
|
-
.c-cron__error[data-v-
|
|
252
|
+
.c-cron__error[data-v-2594f81f] {
|
|
223
253
|
color: var(--error-color);
|
|
224
254
|
}
|
|
225
|
-
.c-cron[data-v-
|
|
255
|
+
.c-cron[data-v-2594f81f] {
|
|
226
256
|
/* ═══════ 主内容 ═══════ */
|
|
227
257
|
}
|
|
228
|
-
.c-cron__body[data-v-
|
|
258
|
+
.c-cron__body[data-v-2594f81f] {
|
|
229
259
|
display: flex;
|
|
230
260
|
gap: 24px;
|
|
231
261
|
}
|
|
232
|
-
.c-cron__main[data-v-
|
|
262
|
+
.c-cron__main[data-v-2594f81f] {
|
|
233
263
|
flex: 1;
|
|
234
264
|
min-width: 0;
|
|
235
265
|
}
|
|
236
|
-
.c-cron[data-v-
|
|
266
|
+
.c-cron[data-v-2594f81f] {
|
|
237
267
|
/* ─── 右侧控制面板 ────────────────────── */
|
|
238
268
|
}
|
|
239
|
-
.c-cron__panel[data-v-
|
|
269
|
+
.c-cron__panel[data-v-2594f81f] {
|
|
240
270
|
width: 260px;
|
|
241
271
|
flex-shrink: 0;
|
|
242
272
|
display: flex;
|
|
243
273
|
flex-direction: column;
|
|
244
274
|
gap: 12px;
|
|
245
275
|
}
|
|
246
|
-
.c-cron__config[data-v-
|
|
276
|
+
.c-cron__config[data-v-2594f81f] {
|
|
247
277
|
display: flex;
|
|
248
278
|
flex-direction: column;
|
|
249
279
|
gap: 8px;
|
|
250
280
|
}
|
|
251
|
-
.c-cron__config-row[data-v-
|
|
281
|
+
.c-cron__config-row[data-v-2594f81f] {
|
|
252
282
|
display: flex;
|
|
253
283
|
align-items: center;
|
|
254
284
|
gap: 6px;
|
|
@@ -256,39 +286,48 @@
|
|
|
256
286
|
color: var(--c-text-2);
|
|
257
287
|
flex-wrap: wrap;
|
|
258
288
|
}
|
|
259
|
-
.c-cron__config-num[data-v-
|
|
289
|
+
.c-cron__config-num[data-v-2594f81f] {
|
|
260
290
|
width: 68px;
|
|
261
291
|
}
|
|
262
|
-
.c-cron__quick[data-v-
|
|
292
|
+
.c-cron__quick[data-v-2594f81f] {
|
|
263
293
|
display: flex;
|
|
264
294
|
align-items: center;
|
|
265
295
|
gap: 4px;
|
|
266
296
|
font-size: 13px;
|
|
267
297
|
}
|
|
268
|
-
.c-cron__quick
|
|
298
|
+
.c-cron__quick button[data-v-2594f81f] {
|
|
299
|
+
appearance: none;
|
|
300
|
+
border: 0;
|
|
301
|
+
background: transparent;
|
|
302
|
+
padding: 0;
|
|
303
|
+
font: inherit;
|
|
269
304
|
color: var(--c-primary);
|
|
270
305
|
cursor: pointer;
|
|
271
306
|
user-select: none;
|
|
272
307
|
}
|
|
273
|
-
.c-cron__quick
|
|
308
|
+
.c-cron__quick button[data-v-2594f81f]:hover {
|
|
274
309
|
text-decoration: underline;
|
|
275
310
|
}
|
|
276
|
-
.c-cron__quick
|
|
311
|
+
.c-cron__quick button[data-v-2594f81f]:disabled {
|
|
312
|
+
cursor: not-allowed;
|
|
313
|
+
opacity: 0.6;
|
|
314
|
+
}
|
|
315
|
+
.c-cron__quick-sep[data-v-2594f81f] {
|
|
277
316
|
color: var(--c-text-4);
|
|
278
317
|
}
|
|
279
|
-
.c-cron__quick-count[data-v-
|
|
318
|
+
.c-cron__quick-count[data-v-2594f81f] {
|
|
280
319
|
margin-left: 4px;
|
|
281
320
|
font-size: 12px;
|
|
282
321
|
color: var(--c-text-4);
|
|
283
322
|
}
|
|
284
|
-
.c-cron__panel-line[data-v-
|
|
323
|
+
.c-cron__panel-line[data-v-2594f81f] {
|
|
285
324
|
height: 1px;
|
|
286
325
|
background: var(--c-border);
|
|
287
326
|
}
|
|
288
|
-
.c-cron[data-v-
|
|
327
|
+
.c-cron[data-v-2594f81f] {
|
|
289
328
|
/* ═══════ 底部模板 ═══════ */
|
|
290
329
|
}
|
|
291
|
-
.c-cron__footer[data-v-
|
|
330
|
+
.c-cron__footer[data-v-2594f81f] {
|
|
292
331
|
margin-top: 16px;
|
|
293
332
|
padding-top: 16px;
|
|
294
333
|
border-top: 1px solid var(--c-border);
|
|
@@ -296,22 +335,22 @@
|
|
|
296
335
|
|
|
297
336
|
/* ─── 响应式 ────────────────────────────────── */
|
|
298
337
|
@media (max-width: 768px) {
|
|
299
|
-
.c-cron__body[data-v-
|
|
338
|
+
.c-cron__body[data-v-2594f81f] {
|
|
300
339
|
flex-direction: column;
|
|
301
340
|
}
|
|
302
|
-
.c-cron__panel[data-v-
|
|
341
|
+
.c-cron__panel[data-v-2594f81f] {
|
|
303
342
|
width: 100%;
|
|
304
343
|
}
|
|
305
|
-
.c-cron__segments[data-v-
|
|
344
|
+
.c-cron__segments[data-v-2594f81f] {
|
|
306
345
|
flex-wrap: wrap;
|
|
307
346
|
}
|
|
308
|
-
.c-cron__segment[data-v-
|
|
347
|
+
.c-cron__segment[data-v-2594f81f] {
|
|
309
348
|
min-width: calc(33% - 4px);
|
|
310
349
|
}
|
|
311
|
-
.c-cron__expr-row[data-v-
|
|
350
|
+
.c-cron__expr-row[data-v-2594f81f] {
|
|
312
351
|
flex-wrap: wrap;
|
|
313
352
|
}
|
|
314
|
-
.c-cron__expr-input[data-v-
|
|
353
|
+
.c-cron__expr-input[data-v-2594f81f] {
|
|
315
354
|
width: 100%;
|
|
316
355
|
}
|
|
317
356
|
}
|
package/dist/C_Cron2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],a={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},o={second:{...a,rangeEnd:59},minute:{...a,rangeEnd:59},hour:{...a,rangeEnd:23},day:{...a,rangeStart:1,rangeEnd:31},month:{...a,rangeStart:1,rangeEnd:12},week:{...a,mode:`none`,rangeStart:1,rangeEnd:7}},s=`0 0 0 * * ?`,c=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],l={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},u={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},d=[`second`,`minute`,`hour`,`day`,`month`,`week`];function f(){let e=(0,n.ref)(structuredClone(o));function t(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?e.specificValues.sort((e,t)=>e-t).join(`,`):`*`;case`none`:return`?`;default:return`*`}}function r(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function a(e,t){let[n,i]=e.split(`/`).map(Number);return r(t,`step`,{stepStart:isNaN(n)?t.min:n,stepInterval:isNaN(i)?1:i})}function s(e,t){let[n,i]=e.split(`-`).map(Number);return r(t,`range`,{rangeStart:isNaN(n)?t.min:n,rangeEnd:isNaN(i)?t.max:i})}function c(e,t){let n=i.find(e=>e.type===t);if(e===`?`)return r(n,`none`);if(e===`*`)return r(n,`every`);if(e.includes(`/`))return a(e,n);if(e.includes(`-`)&&!e.includes(`,`))return s(e,n);let o=e.split(`,`).map(Number).filter(e=>!isNaN(e));return o.length>0?r(n,`specific`,{specificValues:o}):r(n,`every`)}function l(){return d.map(n=>t(e.value[n])).join(` `)}function u(t){let n=t.trim().split(/\s+/);n.length<6||d.forEach((t,r)=>{e.value[t]=c(n[r],t)})}function f(t){t===`day`?e.value.day.mode!==`none`&&(e.value.week={...e.value.week,mode:`none`}):e.value.week.mode!==`none`&&(e.value.day={...e.value.day,mode:`none`})}function p(e){let t=(e??l()).trim().split(/\s+/);if(t.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${t.length} 个`};let n=t[3],r=t[5];if(n!==`?`&&r!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(n===`?`&&r===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<d.length;e++){let n=d[e],r=t[e],a=_(r,i.find(e=>e.type===n));if(!a.valid)return{...a,field:n}}return{valid:!0,message:`表达式合法`}}function m(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return isNaN(i)||isNaN(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function h(e,t){let[n,r]=e.split(`-`).map(Number);return isNaN(n)||isNaN(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function g(e,t){let n=e.split(`,`).map(Number);return n.some(isNaN)?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function _(e,t){return e===`*`||e===`?`?{valid:!0,message:``}:e.includes(`/`)?m(e,t):e.includes(`-`)&&!e.includes(`,`)?h(e,t):g(e,t)}return{cronValue:e,expression:(0,n.computed)(()=>l()),validation:(0,n.computed)(()=>p()),parse:u,generate:l,validate:p,handleDayWeekExclusion:f}}function p(e,t,r){let i=(0,n.ref)([]),a=(0,n.ref)(!1),o=0,s=null;function c(e,t){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[n,r]=t.split(`/`),i=n===`*`?0:Number(n),a=Number(r);return e-i>=0&&(e-i)%a===0}if(t.includes(`-`)&&!t.includes(`,`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).map(Number).includes(e)}function l(e,t){if(t.length!==6)return!1;let[n,r,i,a,o,s]=t;return!(!c(e.getMonth()+1,o)||a!==`?`&&!c(e.getDate(),a)||s!==`?`&&!c(e.getDay()+1,s)||!c(e.getHours(),i)||!c(e.getMinutes(),r)||!c(e.getSeconds(),n))}async function u(n){let i=e.value;if(!i||!t.value.valid)return[];let a=i.trim().split(/\s+/);if(a.length!==6)return[];let s=[],c=new Date,u=new Date(c.getTime()+1e3);u.setMilliseconds(0);let d=/^\d{1,2}$/.test(a[0])?Number(a[0]):null,f=d===null,p=f?1e3:6e4;f||(u.setSeconds(d??0),u.getTime()<=c.getTime()&&u.setTime(u.getTime()+6e4));let m=Math.min(100,Math.max(1,Math.trunc(r.value)));for(let e=0;e<525600&&s.length<m;e++){if(n!==o)return[];l(u,a)&&s.push(new Date(u)),u.setTime(u.getTime()+p),e>0&&e%1e4==0&&await new Promise(e=>setTimeout(e,0))}return s}(0,n.watch)([e,r,t],()=>{o+=1;let e=o;if(s&&clearTimeout(s),!t.value.valid){i.value=[],a.value=!1,s=null;return}a.value=!0,s=setTimeout(async()=>{let t=await u(e);e===o&&(i.value=t,a.value=!1,s=null)},0)},{immediate:!0}),(0,n.onScopeDispose)(()=>{o+=1,s&&clearTimeout(s)});function d(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function f(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:i,computing:a,formatDate:d,formatWeekDay:f}}function m(e){return u[Number(e)]||`周${e}`}function h(e,t){let r=(0,n.computed)(()=>t.value.valid?i(e.value):`表达式不合法`);function i(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,l,f,p]=t,m=[];return m.push(u(f)),p===`?`?m.push(c(l)):m.push(d(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:f(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:f(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:f(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function u(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return l[t]?`${l[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>l[Number(e)]||`${e}月`).join(`、`):``}function d(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${m(e)}`:e.includes(`/`)?`从${m(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${m(e.split(`-`)[0])}到${m(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(m).join(`、`)}`:``}function f(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:r}}const g={class:`cron-field-editor`},_=[`onClick`],v=(0,n.defineComponent)({__name:`CronFieldEditor`,props:{modelValue:{},meta:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=e,i=t,a=(0,n.computed)(()=>{switch(r.meta.type){case`second`:case`minute`:return 10;case`hour`:return 12;case`day`:return 7;case`month`:return 6;case`week`:return 7;default:return 10}}),o=(0,n.computed)(()=>{let e=[];for(let t=r.meta.min;t<=r.meta.max;t++)e.push({value:t,label:r.meta.valueLabels?.[t]??String(t)});return e}),s=(0,n.computed)(()=>{let{modelValue:e,meta:t}=r,n=new Set;switch(e.mode){case`every`:for(let e=t.min;e<=t.max;e++)n.add(e);break;case`none`:break;case`range`:for(let t=e.rangeStart;t<=e.rangeEnd;t++)n.add(t);break;case`step`:for(let r=e.stepStart;r<=t.max;r+=e.stepInterval)n.add(r);break;case`specific`:e.specificValues.forEach(e=>n.add(e));break}return n});function c(e){if(r.modelValue.mode!==`specific`)return;let t=[...r.modelValue.specificValues],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),i(`update:modelValue`,{...r.modelValue,specificValues:t})}return(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,g,[(0,n.createElementVNode)(`div`,{class:`cron-field-editor__grid`,style:(0,n.normalizeStyle)({"--cols":a.value})},[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(o.value,t=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:t.value,class:(0,n.normalizeClass)([`cron-field-editor__cell`,{"cron-field-editor__cell--on":s.value.has(t.value),"cron-field-editor__cell--pick":e.modelValue.mode===`specific`}]),onClick:e=>c(t.value)},(0,n.toDisplayString)(t.label),11,_))),128))],4)]))}});var ee=t.t(v,[[`__scopeId`,`data-v-e6fa8e5b`]]);const y={class:`cron-preview`},b={class:`cron-preview__header`},x={key:0,class:`cron-preview__list`},S={class:`cron-preview__idx`},C={class:`cron-preview__date`},w={class:`cron-preview__week`},T=(0,n.defineComponent)({__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(t){return(i,a)=>{let o=r.NSpin,s=r.NEmpty,c=r.NScrollbar;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,y,[(0,n.createElementVNode)(`div`,b,[(0,n.createVNode)(e.t,{name:`mdi:calendar-clock`,size:15}),a[0]||=(0,n.createElementVNode)(`span`,null,`未来执行`,-1),t.computing?((0,n.openBlock)(),(0,n.createBlock)(o,{key:0,size:14})):(0,n.createCommentVNode)(`v-if`,!0)]),(0,n.createVNode)(c,{style:{"max-height":`220px`}},{default:(0,n.withCtx)(()=>[t.nextExecutions.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,x,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.nextExecutions,(e,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:r,class:`cron-preview__item`},[(0,n.createElementVNode)(`span`,S,(0,n.toDisplayString)(r+1),1),(0,n.createElementVNode)(`span`,C,(0,n.toDisplayString)(t.formatDate(e)),1),(0,n.createElementVNode)(`span`,w,(0,n.toDisplayString)(t.formatWeekDay(e)),1)]))),128))])):((0,n.openBlock)(),(0,n.createBlock)(s,{key:1,size:`small`,description:`暂无匹配`}))]),_:1})])}}});var te=t.t(T,[[`__scopeId`,`data-v-a695bb32`]]);const E={class:`cron-templates`},D={class:`cron-templates__header`},O={class:`cron-templates__cards`},k=[`onClick`],A={class:`cron-templates__card-name`},j={class:`cron-templates__card-expr`},M=(0,n.defineComponent)({__name:`CronTemplates`,props:{templates:{},currentValue:{}},emits:[`select`],setup(t){return(r,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,E,[(0,n.createElementVNode)(`div`,D,[(0,n.createVNode)(e.t,{name:`mdi:lightning-bolt`,size:15}),i[0]||=(0,n.createElementVNode)(`span`,null,`常用模板`,-1)]),(0,n.createElementVNode)(`div`,O,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.templates,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:e.value,class:(0,n.normalizeClass)([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>r.$emit(`select`,e.value)},[(0,n.createElementVNode)(`div`,A,(0,n.toDisplayString)(e.label),1),(0,n.createElementVNode)(`div`,j,(0,n.toDisplayString)(e.value),1)],10,k))),128))])]))}});var ne=t.t(M,[[`__scopeId`,`data-v-fe320f38`]]);const re={class:`c-cron__header`},ie={class:`c-cron__title-row`},ae={class:`c-cron__title`},N={class:`c-cron__segments`},P=[`onClick`],F={class:`c-cron__segment-value`},I={class:`c-cron__segment-label`},L={class:`c-cron__expr-row`},R={class:`c-cron__expr-desc`},z={key:0,class:`c-cron__description`},B={key:1,class:`c-cron__error`},V={class:`c-cron__body`},H={class:`c-cron__main`},U={class:`c-cron__panel`},W={key:0,class:`c-cron__config`},G={class:`c-cron__config-row`},K={key:1,class:`c-cron__config`},q={class:`c-cron__config-row`},oe={key:2,class:`c-cron__quick`},se={key:0,class:`c-cron__quick-count`},ce={key:0,class:`c-cron__footer`},J=(0,n.defineComponent)({name:`C_Cron`,__name:`index`,props:{modelValue:{default:s},disabled:{type:Boolean,default:!1},previewCount:{default:10},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{default:`auto`}},emits:[`update:modelValue`,`change`,`validation-change`],setup(t,{expose:a,emit:o}){let l=t,u=o,{cronValue:d,expression:m,validation:g,parse:_,validate:v,handleDayWeekExclusion:y}=f(),{nextExecutions:b,computing:x,formatDate:S,formatWeekDay:C}=p(m,g,(0,n.computed)(()=>l.previewCount??10)),{description:w}=h(m,g),T=(0,n.ref)(l.modelValue||s),E=(0,n.ref)(l.showSecond?`second`:`minute`),D=(0,n.computed)(()=>typeof l.height==`number`?`${l.height}px`:l.height),O=(0,n.computed)(()=>l.showSecond?i:i.filter(e=>e.type!==`second`)),k=(0,n.computed)(()=>i.find(e=>e.type===E.value)),A=(0,n.computed)(()=>d.value[E.value]);function j(e){switch(e.mode){case`every`:return`*`;case`none`:return`?`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;default:return`*`}}let M=(0,n.computed)(()=>{let e={};for(let t of i)e[t.type]=j(d.value[t.type]);return e});(0,n.onMounted)(()=>{let e=l.modelValue||s;_(e),T.value=e}),(0,n.watch)(()=>l.modelValue,e=>{e&&e!==m.value&&(_(e),T.value=e)}),(0,n.watch)(()=>l.showSecond,e=>{!e&&E.value===`second`&&(E.value=`minute`)}),(0,n.watch)(m,e=>{T.value=e,u(`update:modelValue`,e),u(`change`,e)}),(0,n.watch)(g,e=>{u(`validation-change`,e)});function J(e,t){d.value[e]=t,(e===`day`||e===`week`)&&y(e)}function Y(e){J(E.value,{...A.value,mode:e})}function X(e){J(E.value,{...A.value,...e})}function Z(){let{min:e,max:t}=k.value,n=Array.from({length:t-e+1},(t,n)=>e+n);J(E.value,{...A.value,specificValues:n})}function le(){J(E.value,{...A.value,specificValues:[]})}function ue(e){T.value=e}function Q(){let e=T.value.trim();e&&e!==m.value&&_(e)}function de(e){_(e),T.value=e}function $(){let e=l.modelValue||s;_(e),T.value=e}return a({getValue:()=>m.value,setValue:e=>{_(e),T.value=e},reset:$,validate:()=>v()}),(t,i)=>{let a=r.NTag,o=r.NInput,s=r.NButton,u=r.NRadioButton,f=r.NRadioGroup,p=r.NInputNumber;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:`c-cron`,style:(0,n.normalizeStyle)({height:D.value})},[(0,n.createCommentVNode)(` ═══════ 顶部 ═══════ `),(0,n.createElementVNode)(`div`,re,[(0,n.createCommentVNode)(` 标题行 `),(0,n.createElementVNode)(`div`,ie,[(0,n.createElementVNode)(`div`,ae,[(0,n.createVNode)(e.t,{name:`mdi:clock-edit-outline`,size:18}),i[4]||=(0,n.createElementVNode)(`span`,null,`Cron 表达式`,-1)]),(0,n.createVNode)(a,{type:(0,n.unref)(g).valid?`success`:`error`,size:`small`,round:``},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:(0,n.unref)(g).valid?`mdi:check-circle`:`mdi:alert-circle`},null,8,[`name`])]),default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` `+(0,n.toDisplayString)((0,n.unref)(g).valid?`合法`:`错误`),1)]),_:1},8,[`type`])]),(0,n.createCommentVNode)(` 分段式字段选择器 `),(0,n.createElementVNode)(`div`,N,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(O.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:e.type,class:(0,n.normalizeClass)([`c-cron__segment`,{"c-cron__segment--active":E.value===e.type,"c-cron__segment--wildcard":M.value[e.type]===`*`||M.value[e.type]===`?`}]),onClick:t=>E.value=e.type},[(0,n.createElementVNode)(`div`,F,(0,n.toDisplayString)(M.value[e.type]),1),(0,n.createElementVNode)(`div`,I,(0,n.toDisplayString)(e.label),1)],10,P))),128))]),(0,n.createCommentVNode)(` 表达式行:输入 + 重置 + 描述 `),(0,n.createElementVNode)(`div`,L,[(0,n.createVNode)(o,{value:T.value,status:(0,n.unref)(g).valid?void 0:`error`,placeholder:`秒 分 时 日 月 周`,disabled:l.disabled,font:`mono`,size:`small`,clearable:``,class:`c-cron__expr-input`,"onUpdate:value":ue,onBlur:Q,onKeydown:(0,n.withKeys)(Q,[`enter`])},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:console`,size:14,style:{opacity:`0.4`}})]),_:1},8,[`value`,`status`,`disabled`]),(0,n.createVNode)(s,{size:`small`,quaternary:``,disabled:l.disabled,onClick:$},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:refresh`})]),_:1},8,[`disabled`]),(0,n.createElementVNode)(`div`,R,[(0,n.unref)(g).valid?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,z,(0,n.toDisplayString)((0,n.unref)(w)),1)):((0,n.openBlock)(),(0,n.createElementBlock)(`span`,B,(0,n.toDisplayString)((0,n.unref)(g).message),1))])])]),(0,n.createCommentVNode)(` ═══════ 主内容 ═══════ `),(0,n.createElementVNode)(`div`,V,[(0,n.createCommentVNode)(` 左侧:值网格 `),(0,n.createElementVNode)(`div`,H,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(O.value,e=>(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createBlock)(ee,{key:e.type,"model-value":(0,n.unref)(d)[e.type],meta:e,"onUpdate:modelValue":t=>J(e.type,t)},null,8,[`model-value`,`meta`,`onUpdate:modelValue`])),[[n.vShow,E.value===e.type]])),128))]),(0,n.createCommentVNode)(` 右侧:控制面板 `),(0,n.createElementVNode)(`div`,U,[(0,n.createVNode)(f,{value:A.value.mode,size:`small`,"onUpdate:value":Y},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(u,{value:`every`},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` 每`+(0,n.toDisplayString)(k.value.label),1)]),_:1}),E.value===`day`||E.value===`week`?((0,n.openBlock)(),(0,n.createBlock)(u,{key:0,value:`none`},{default:(0,n.withCtx)(()=>[...i[5]||=[(0,n.createTextVNode)(` 不指定 `,-1)]]),_:1})):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createVNode)(u,{value:`range`},{default:(0,n.withCtx)(()=>[...i[6]||=[(0,n.createTextVNode)(`范围`,-1)]]),_:1}),(0,n.createVNode)(u,{value:`step`},{default:(0,n.withCtx)(()=>[...i[7]||=[(0,n.createTextVNode)(`步进`,-1)]]),_:1}),(0,n.createVNode)(u,{value:`specific`},{default:(0,n.withCtx)(()=>[...i[8]||=[(0,n.createTextVNode)(`指定`,-1)]]),_:1})]),_:1},8,[`value`]),(0,n.createCommentVNode)(` 范围配置 `),A.value.mode===`range`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,W,[(0,n.createElementVNode)(`div`,G,[i[9]||=(0,n.createElementVNode)(`span`,null,`从`,-1),(0,n.createVNode)(p,{value:A.value.rangeStart,min:k.value.min,max:k.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":i[0]||=e=>X({rangeStart:e??k.value.min})},null,8,[`value`,`min`,`max`]),i[10]||=(0,n.createElementVNode)(`span`,null,`到`,-1),(0,n.createVNode)(p,{value:A.value.rangeEnd,min:k.value.min,max:k.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":i[1]||=e=>X({rangeEnd:e??k.value.max})},null,8,[`value`,`min`,`max`])])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 步进配置 `),A.value.mode===`step`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,K,[(0,n.createElementVNode)(`div`,q,[i[11]||=(0,n.createElementVNode)(`span`,null,`从第`,-1),(0,n.createVNode)(p,{value:A.value.stepStart,min:k.value.min,max:k.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":i[2]||=e=>X({stepStart:e??k.value.min})},null,8,[`value`,`min`,`max`]),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(k.value.label)+`起,每`,1),(0,n.createVNode)(p,{value:A.value.stepInterval,min:1,max:k.value.max-k.value.min+1,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":i[3]||=e=>X({stepInterval:e??1})},null,8,[`value`,`max`]),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(k.value.label)+`执行`,1)])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 指定快捷操作 `),A.value.mode===`specific`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,oe,[(0,n.createElementVNode)(`a`,{onClick:Z},`全选`),i[12]||=(0,n.createElementVNode)(`span`,{class:`c-cron__quick-sep`},`·`,-1),(0,n.createElementVNode)(`a`,{onClick:le},`清空`),A.value.specificValues.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,se,` 已选 `+(0,n.toDisplayString)(A.value.specificValues.length),1)):(0,n.createCommentVNode)(`v-if`,!0)])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 执行预览 `),l.showPreview?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:3},[i[13]||=(0,n.createElementVNode)(`div`,{class:`c-cron__panel-line`},null,-1),(0,n.createVNode)(te,{"next-executions":(0,n.unref)(b),computing:(0,n.unref)(x),count:l.previewCount??5,"format-date":(0,n.unref)(S),"format-week-day":(0,n.unref)(C)},null,8,[`next-executions`,`computing`,`count`,`format-date`,`format-week-day`])],64)):(0,n.createCommentVNode)(`v-if`,!0)])]),(0,n.createCommentVNode)(` ═══════ 底部模板 ═══════ `),l.showTemplates?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ce,[(0,n.createVNode)(ne,{templates:(0,n.unref)(c),"current-value":(0,n.unref)(m),onSelect:de},null,8,[`templates`,`current-value`])])):(0,n.createCommentVNode)(`v-if`,!0)],4)}}});var Y=t.t(J,[[`__scopeId`,`data-v-06e7be26`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return Y}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return l}});
|
|
1
|
+
require(`./chunk.cjs`);const e=require(`./C_Icon2.cjs`),t=require(`./export-helper.cjs`);let n=require(`vue`),r=require(`naive-ui`);const i=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],a={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},o={second:{...a,rangeEnd:59},minute:{...a,rangeEnd:59},hour:{...a,rangeEnd:23},day:{...a,rangeStart:1,rangeEnd:31},month:{...a,rangeStart:1,rangeEnd:12},week:{...a,mode:`none`,rangeStart:1,rangeEnd:7}},s=`0 0 0 * * ?`,c=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],l={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},u={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},d=[`second`,`minute`,`hour`,`day`,`month`,`week`];function f(){let e=structuredClone(o);for(let t of d)e[t].specificValues=[];let t=(0,n.ref)(e);function r(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;case`none`:return`?`;default:return`*`}}function a(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function s(e,t){let[n,r]=e.split(`/`).map(Number);return a(t,`step`,{stepStart:isNaN(n)?t.min:n,stepInterval:isNaN(r)?1:r})}function c(e,t){let[n,r]=e.split(`-`).map(Number);return a(t,`range`,{rangeStart:isNaN(n)?t.min:n,rangeEnd:isNaN(r)?t.max:r})}function l(e,t){let n=i.find(e=>e.type===t);if(e===`?`)return a(n,`none`);if(e===`*`)return a(n,`every`);if(e.includes(`/`))return s(e,n);if(e.includes(`-`)&&!e.includes(`,`))return c(e,n);let r=e.split(`,`).map(Number).filter(e=>!isNaN(e));return r.length>0?a(n,`specific`,{specificValues:r}):a(n,`every`)}function u(){return d.map(e=>r(t.value[e])).join(` `)}function f(e){if(!m(e).valid)return!1;let n=e.trim().split(/\s+/);return d.forEach((e,r)=>{t.value[e]=l(n[r],e)}),!0}function p(e){e===`day`?t.value.day.mode!==`none`&&(t.value.week={...t.value.week,mode:`none`}):t.value.week.mode!==`none`&&(t.value.day={...t.value.day,mode:`none`})}function m(e){let t=(e??u()).trim().split(/\s+/);if(t.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${t.length} 个`};let n=t[3],r=t[5];if(n!==`?`&&r!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(n===`?`&&r===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<d.length;e++){let n=d[e],r=t[e],a=v(r,i.find(e=>e.type===n));if(!a.valid)return{...a,field:n}}return{valid:!0,message:`表达式合法`}}function h(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return!Number.isInteger(i)||!Number.isInteger(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function g(e,t){let[n,r]=e.split(`-`).map(Number);return!Number.isInteger(n)||!Number.isInteger(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function _(e,t){let n=e.split(`,`).map(Number);return n.some(e=>!Number.isInteger(e))?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function v(e,t){return e===`*`?{valid:!0,message:``}:e===`?`?t.type===`day`||t.type===`week`?{valid:!0,message:``}:{valid:!1,message:`${t.label}字段不能使用 ?`}:/^(\*|\d+)\/\d+$/.test(e)?h(e,t):/^\d+-\d+$/.test(e)?g(e,t):/^\d+(,\d+)*$/.test(e)?_(e,t):{valid:!1,message:`${t.label}字段格式错误`}}return{cronValue:t,expression:(0,n.computed)(()=>u()),validation:(0,n.computed)(()=>m()),parse:f,generate:u,validate:m,handleDayWeekExclusion:p}}function p(e,t,n){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[r,i]=t.split(`/`),a=r===`*`?n:Number(r),o=Number(i);return o>0&&e>=a&&(e-a)%o===0}if(t.includes(`-`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).some(t=>Number(t)===e)}function m(e,t){let[,n,r,i,a,o]=t;return p(e.getMinutes(),n,0)&&p(e.getHours(),r,0)&&p(e.getDate(),i,1)&&p(e.getMonth()+1,a,1)&&p(e.getDay()+1,o,1)}function h(e,t,n,r,i){for(let a of n){let n=new Date(t.getTime()+a*1e3);if(!(n.getTime()<=r.getTime())&&(e.push(n),e.length>=i))return!0}return!1}function g(e){return Number.isFinite(e)?Math.min(100,Math.max(1,Math.trunc(e))):10}function _(e){return e>0&&e%1e4==0}async function v(e,t,n=new Date,r=()=>!1){let i=e.trim().split(/\s+/);if(i.length!==6)return[];let a=Array.from({length:60},(e,t)=>t).filter(e=>p(e,i[0],0));if(a.length===0)return[];let o=g(t),s=[],c=new Date(n);c.setSeconds(0,0);for(let e=0;e<527040;e++){if(r())return[];if(m(c,i)&&h(s,c,a,n,o))return s;c.setTime(c.getTime()+6e4),_(e)&&await new Promise(e=>setTimeout(e,0))}return s}function y(e,t,r){let i=(0,n.ref)([]),a=(0,n.ref)(!1),o=0,s=null;(0,n.watch)([e,r,t],()=>{o+=1;let n=o;if(s&&clearTimeout(s),!t.value.valid){i.value=[],a.value=!1,s=null;return}a.value=!0,s=setTimeout(async()=>{let t=await v(e.value,r.value,new Date,()=>n!==o);n===o&&(i.value=t,a.value=!1,s=null)},0)},{immediate:!0}),(0,n.onScopeDispose)(()=>{o+=1,s&&clearTimeout(s)});function c(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function l(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:i,computing:a,formatDate:c,formatWeekDay:l}}function b(e){return u[Number(e)]||`周${e}`}function x(e,t){let r=(0,n.computed)(()=>t.value.valid?i(e.value):`表达式不合法`);function i(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,l,f,p]=t,m=[];return m.push(u(f)),p===`?`?m.push(c(l)):m.push(d(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:f(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:f(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:f(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function u(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return l[t]?`${l[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>l[Number(e)]||`${e}月`).join(`、`):``}function d(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${b(e)}`:e.includes(`/`)?`从${b(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${b(e.split(`-`)[0])}到${b(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(b).join(`、`)}`:``}function f(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:r}}const S={class:`cron-field-editor`},C=[`disabled`,`aria-pressed`,`onClick`],w=(0,n.defineComponent)({__name:`CronFieldEditor`,props:{modelValue:{},meta:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=e,i=t,a=(0,n.computed)(()=>{switch(r.meta.type){case`second`:case`minute`:return 10;case`hour`:return 12;case`day`:return 7;case`month`:return 6;case`week`:return 7;default:return 10}}),o=(0,n.computed)(()=>{let e=[];for(let t=r.meta.min;t<=r.meta.max;t++)e.push({value:t,label:r.meta.valueLabels?.[t]??String(t)});return e}),s=(0,n.computed)(()=>{let{modelValue:e,meta:t}=r,n=new Set;switch(e.mode){case`every`:for(let e=t.min;e<=t.max;e++)n.add(e);break;case`none`:break;case`range`:for(let t=e.rangeStart;t<=e.rangeEnd;t++)n.add(t);break;case`step`:for(let r=e.stepStart;r<=t.max;r+=Math.max(1,e.stepInterval))n.add(r);break;case`specific`:e.specificValues.forEach(e=>n.add(e));break}return n});function c(e){if(r.disabled||r.modelValue.mode!==`specific`)return;let t=[...r.modelValue.specificValues],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),i(`update:modelValue`,{...r.modelValue,specificValues:t})}return(t,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,S,[(0,n.createElementVNode)(`div`,{class:`cron-field-editor__grid`,style:(0,n.normalizeStyle)({"--cols":a.value})},[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(o.value,t=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:t.value,type:`button`,class:(0,n.normalizeClass)([`cron-field-editor__cell`,{"cron-field-editor__cell--on":s.value.has(t.value),"cron-field-editor__cell--pick":e.modelValue.mode===`specific`}]),disabled:e.disabled||e.modelValue.mode!==`specific`,"aria-pressed":e.modelValue.mode===`specific`?s.value.has(t.value):void 0,onClick:e=>c(t.value)},(0,n.toDisplayString)(t.label),11,C))),128))],4)]))}});var T=t.t(w,[[`__scopeId`,`data-v-60c57fc6`]]);const E={class:`cron-preview`},D={class:`cron-preview__header`},O={key:0,class:`cron-preview__list`},k={class:`cron-preview__idx`},A={class:`cron-preview__date`},j={class:`cron-preview__week`},M=(0,n.defineComponent)({__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(t){return(i,a)=>{let o=r.NSpin,s=r.NEmpty,c=r.NScrollbar;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,E,[(0,n.createElementVNode)(`div`,D,[(0,n.createVNode)(e.t,{name:`mdi:calendar-clock`,size:15}),a[0]||=(0,n.createElementVNode)(`span`,null,`未来执行`,-1),t.computing?((0,n.openBlock)(),(0,n.createBlock)(o,{key:0,size:14})):(0,n.createCommentVNode)(`v-if`,!0)]),(0,n.createVNode)(c,{style:{"max-height":`220px`}},{default:(0,n.withCtx)(()=>[t.nextExecutions.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,O,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.nextExecutions,(e,r)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,{key:r,class:`cron-preview__item`},[(0,n.createElementVNode)(`span`,k,(0,n.toDisplayString)(r+1),1),(0,n.createElementVNode)(`span`,A,(0,n.toDisplayString)(t.formatDate(e)),1),(0,n.createElementVNode)(`span`,j,(0,n.toDisplayString)(t.formatWeekDay(e)),1)]))),128))])):((0,n.openBlock)(),(0,n.createBlock)(s,{key:1,size:`small`,description:`暂无匹配`}))]),_:1})])}}});var N=t.t(M,[[`__scopeId`,`data-v-a695bb32`]]);const P={class:`cron-templates`},F={class:`cron-templates__header`},I={class:`cron-templates__cards`},L=[`disabled`,`aria-pressed`,`onClick`],R={class:`cron-templates__card-name`},z={class:`cron-templates__card-expr`},B=(0,n.defineComponent)({__name:`CronTemplates`,props:{templates:{},currentValue:{},disabled:{type:Boolean}},emits:[`select`],setup(t){return(r,i)=>((0,n.openBlock)(),(0,n.createElementBlock)(`div`,P,[(0,n.createElementVNode)(`div`,F,[(0,n.createVNode)(e.t,{name:`mdi:lightning-bolt`,size:15}),i[0]||=(0,n.createElementVNode)(`span`,null,`常用模板`,-1)]),(0,n.createElementVNode)(`div`,I,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(t.templates,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.value,type:`button`,disabled:t.disabled,"aria-pressed":e.value===t.currentValue,class:(0,n.normalizeClass)([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>r.$emit(`select`,e.value)},[(0,n.createElementVNode)(`div`,R,(0,n.toDisplayString)(e.label),1),(0,n.createElementVNode)(`div`,z,(0,n.toDisplayString)(e.value),1)],10,L))),128))])]))}});var ee=t.t(B,[[`__scopeId`,`data-v-241e79f6`]]);const te={class:`c-cron__header`},ne={class:`c-cron__title-row`},re={class:`c-cron__title`},ie={class:`c-cron__segments`},V=[`aria-pressed`,`onClick`],H={class:`c-cron__segment-value`},U={class:`c-cron__segment-label`},W={class:`c-cron__expr-row`},G={class:`c-cron__expr-desc`},K={key:0,class:`c-cron__description`},q={key:1,class:`c-cron__error`},J={class:`c-cron__body`},ae={class:`c-cron__main`},oe={class:`c-cron__panel`},se={key:0,class:`c-cron__config`},ce={class:`c-cron__config-row`},le={key:1,class:`c-cron__config`},ue={class:`c-cron__config-row`},de={key:2,class:`c-cron__quick`},fe=[`disabled`],pe=[`disabled`],me={key:0,class:`c-cron__quick-count`},he={key:1,class:`c-cron__error`},ge={key:0,class:`c-cron__footer`},Y=(0,n.defineComponent)({name:`C_Cron`,__name:`index`,props:{modelValue:{default:s},disabled:{type:Boolean,default:!1},previewCount:{default:10},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{default:`auto`}},emits:[`update:modelValue`,`change`,`validation-change`],setup(t,{expose:a,emit:o}){let l=t,u=o,{cronValue:d,expression:p,validation:m,parse:h,validate:g,handleDayWeekExclusion:_}=f(),{nextExecutions:v,computing:b,formatDate:S,formatWeekDay:C}=y(p,m,(0,n.computed)(()=>l.previewCount??10)),{description:w}=x(p,m),E=(0,n.ref)(l.modelValue||s),D=(0,n.ref)(null),O=(0,n.computed)(()=>D.value??m.value),k=(0,n.ref)(l.showSecond?`second`:`minute`),A=(0,n.computed)(()=>typeof l.height==`number`?`${l.height}px`:l.height),j=(0,n.computed)(()=>l.showSecond?i:i.filter(e=>e.type!==`second`)),M=(0,n.computed)(()=>i.find(e=>e.type===k.value)),P=(0,n.computed)(()=>d.value[k.value]);function F(e){switch(e.mode){case`every`:return`*`;case`none`:return`?`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;default:return`*`}}let I=(0,n.computed)(()=>{let e={};for(let t of i)e[t.type]=F(d.value[t.type]);return e});(0,n.onMounted)(()=>{Q(l.modelValue||s)}),(0,n.watch)(()=>l.modelValue,e=>{e!==p.value&&Q(e||s)}),(0,n.watch)(()=>l.showSecond,e=>{!e&&k.value===`second`&&(k.value=`minute`)}),(0,n.watch)(p,e=>{E.value=e,D.value=null,u(`update:modelValue`,e),u(`change`,e)}),(0,n.watch)(O,e=>{u(`validation-change`,e)});function L(e,t){l.disabled||(D.value=null,d.value[e]=t,(e===`day`||e===`week`)&&_(e))}function R(e){L(k.value,{...P.value,mode:e})}function z(e){L(k.value,{...P.value,...e})}function B(){let{min:e,max:t}=M.value,n=Array.from({length:t-e+1},(t,n)=>e+n);L(k.value,{...P.value,specificValues:n})}function Y(){L(k.value,{...P.value,specificValues:[]})}function X(e){E.value=e,D.value=g(e)}function Z(){l.disabled||Q(E.value.trim())}function Q(e){E.value=e;let t=g(e);D.value=t.valid?null:t,t.valid&&h(e)}function _e(e){l.disabled||Q(e)}function $(){Q(l.modelValue||s)}return a({getValue:()=>p.value,setValue:e=>{Q(e)},reset:$,validate:()=>O.value}),(t,i)=>{let a=r.NTag,o=r.NInput,s=r.NButton,u=r.NRadioButton,f=r.NRadioGroup,m=r.NInputNumber;return(0,n.openBlock)(),(0,n.createElementBlock)(`div`,{class:`c-cron`,style:(0,n.normalizeStyle)({height:A.value})},[(0,n.createCommentVNode)(` ═══════ 顶部 ═══════ `),(0,n.createElementVNode)(`div`,te,[(0,n.createCommentVNode)(` 标题行 `),(0,n.createElementVNode)(`div`,ne,[(0,n.createElementVNode)(`div`,re,[(0,n.createVNode)(e.t,{name:`mdi:clock-edit-outline`,size:18}),i[4]||=(0,n.createElementVNode)(`span`,null,`Cron 表达式`,-1)]),(0,n.createVNode)(a,{type:O.value.valid?`success`:`error`,size:`small`,round:``},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:O.value.valid?`mdi:check-circle`:`mdi:alert-circle`},null,8,[`name`])]),default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` `+(0,n.toDisplayString)(O.value.valid?`合法`:`错误`),1)]),_:1},8,[`type`])]),(0,n.createCommentVNode)(` 分段式字段选择器 `),(0,n.createElementVNode)(`div`,ie,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(j.value,e=>((0,n.openBlock)(),(0,n.createElementBlock)(`button`,{key:e.type,type:`button`,class:(0,n.normalizeClass)([`c-cron__segment`,{"c-cron__segment--active":k.value===e.type,"c-cron__segment--wildcard":I.value[e.type]===`*`||I.value[e.type]===`?`}]),"aria-pressed":k.value===e.type,onClick:t=>k.value=e.type},[(0,n.createElementVNode)(`div`,H,(0,n.toDisplayString)(I.value[e.type]),1),(0,n.createElementVNode)(`div`,U,(0,n.toDisplayString)(e.label),1)],10,V))),128))]),(0,n.createCommentVNode)(` 表达式行:输入 + 重置 + 描述 `),(0,n.createElementVNode)(`div`,W,[(0,n.createVNode)(o,{value:E.value,status:O.value.valid?void 0:`error`,placeholder:`秒 分 时 日 月 周`,disabled:l.disabled,font:`mono`,size:`small`,clearable:``,class:`c-cron__expr-input`,"onUpdate:value":X,onBlur:Z,onKeydown:(0,n.withKeys)(Z,[`enter`])},{prefix:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:console`,size:14,style:{opacity:`0.4`}})]),_:1},8,[`value`,`status`,`disabled`]),(0,n.createVNode)(s,{size:`small`,quaternary:``,disabled:l.disabled,onClick:$},{icon:(0,n.withCtx)(()=>[(0,n.createVNode)(e.t,{name:`mdi:refresh`})]),_:1},8,[`disabled`]),(0,n.createElementVNode)(`div`,G,[O.value.valid?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,K,(0,n.toDisplayString)((0,n.unref)(w)),1)):((0,n.openBlock)(),(0,n.createElementBlock)(`span`,q,(0,n.toDisplayString)(O.value.message),1))])])]),(0,n.createCommentVNode)(` ═══════ 主内容 ═══════ `),(0,n.createElementVNode)(`div`,J,[(0,n.createCommentVNode)(` 左侧:值网格 `),(0,n.createElementVNode)(`div`,ae,[((0,n.openBlock)(!0),(0,n.createElementBlock)(n.Fragment,null,(0,n.renderList)(j.value,e=>(0,n.withDirectives)(((0,n.openBlock)(),(0,n.createBlock)(T,{key:e.type,"model-value":(0,n.unref)(d)[e.type],meta:e,disabled:l.disabled,"onUpdate:modelValue":t=>L(e.type,t)},null,8,[`model-value`,`meta`,`disabled`,`onUpdate:modelValue`])),[[n.vShow,k.value===e.type]])),128))]),(0,n.createCommentVNode)(` 右侧:控制面板 `),(0,n.createElementVNode)(`div`,oe,[(0,n.createVNode)(f,{value:P.value.mode,disabled:l.disabled,size:`small`,"onUpdate:value":R},{default:(0,n.withCtx)(()=>[(0,n.createVNode)(u,{value:`every`},{default:(0,n.withCtx)(()=>[(0,n.createTextVNode)(` 每`+(0,n.toDisplayString)(M.value.label),1)]),_:1}),k.value===`day`||k.value===`week`?((0,n.openBlock)(),(0,n.createBlock)(u,{key:0,value:`none`},{default:(0,n.withCtx)(()=>[...i[5]||=[(0,n.createTextVNode)(` 不指定 `,-1)]]),_:1})):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createVNode)(u,{value:`range`},{default:(0,n.withCtx)(()=>[...i[6]||=[(0,n.createTextVNode)(`范围`,-1)]]),_:1}),(0,n.createVNode)(u,{value:`step`},{default:(0,n.withCtx)(()=>[...i[7]||=[(0,n.createTextVNode)(`步进`,-1)]]),_:1}),(0,n.createVNode)(u,{value:`specific`},{default:(0,n.withCtx)(()=>[...i[8]||=[(0,n.createTextVNode)(`指定`,-1)]]),_:1})]),_:1},8,[`value`,`disabled`]),(0,n.createCommentVNode)(` 范围配置 `),P.value.mode===`range`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,se,[(0,n.createElementVNode)(`div`,ce,[i[9]||=(0,n.createElementVNode)(`span`,null,`从`,-1),(0,n.createVNode)(m,{value:P.value.rangeStart,min:M.value.min,max:M.value.max,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[0]||=e=>z({rangeStart:e??M.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),i[10]||=(0,n.createElementVNode)(`span`,null,`到`,-1),(0,n.createVNode)(m,{value:P.value.rangeEnd,min:M.value.min,max:M.value.max,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[1]||=e=>z({rangeEnd:e??M.value.max})},null,8,[`value`,`min`,`max`,`disabled`])])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 步进配置 `),P.value.mode===`step`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,le,[(0,n.createElementVNode)(`div`,ue,[i[11]||=(0,n.createElementVNode)(`span`,null,`从第`,-1),(0,n.createVNode)(m,{value:P.value.stepStart,min:M.value.min,max:M.value.max,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[2]||=e=>z({stepStart:e??M.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(M.value.label)+`起,每`,1),(0,n.createVNode)(m,{value:P.value.stepInterval,min:1,max:M.value.max-M.value.min+1,size:`small`,"show-button":!1,disabled:l.disabled,class:`c-cron__config-num`,"onUpdate:value":i[3]||=e=>z({stepInterval:e??1})},null,8,[`value`,`max`,`disabled`]),(0,n.createElementVNode)(`span`,null,(0,n.toDisplayString)(M.value.label)+`执行`,1)])])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 指定快捷操作 `),P.value.mode===`specific`?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,de,[(0,n.createElementVNode)(`button`,{type:`button`,disabled:l.disabled,onClick:B},`全选`,8,fe),i[12]||=(0,n.createElementVNode)(`span`,{class:`c-cron__quick-sep`},`·`,-1),(0,n.createElementVNode)(`button`,{type:`button`,disabled:l.disabled,onClick:Y},`清空`,8,pe),P.value.specificValues.length>0?((0,n.openBlock)(),(0,n.createElementBlock)(`span`,me,` 已选 `+(0,n.toDisplayString)(P.value.specificValues.length),1)):(0,n.createCommentVNode)(`v-if`,!0)])):(0,n.createCommentVNode)(`v-if`,!0),(0,n.createCommentVNode)(` 执行预览 `),l.showPreview?((0,n.openBlock)(),(0,n.createElementBlock)(n.Fragment,{key:3},[i[13]||=(0,n.createElementVNode)(`div`,{class:`c-cron__panel-line`},null,-1),O.value.valid?((0,n.openBlock)(),(0,n.createBlock)(N,{key:0,"next-executions":(0,n.unref)(v),computing:(0,n.unref)(b),count:l.previewCount??5,"format-date":(0,n.unref)(S),"format-week-day":(0,n.unref)(C)},null,8,[`next-executions`,`computing`,`count`,`format-date`,`format-week-day`])):((0,n.openBlock)(),(0,n.createElementBlock)(`div`,he,`请先修正表达式`))],64)):(0,n.createCommentVNode)(`v-if`,!0)])]),(0,n.createCommentVNode)(` ═══════ 底部模板 ═══════ `),l.showTemplates?((0,n.openBlock)(),(0,n.createElementBlock)(`div`,ge,[(0,n.createVNode)(ee,{templates:(0,n.unref)(c),"current-value":(0,n.unref)(p),disabled:l.disabled,onSelect:_e},null,8,[`templates`,`current-value`,`disabled`])])):(0,n.createCommentVNode)(`v-if`,!0)],4)}}});var X=t.t(Y,[[`__scopeId`,`data-v-2594f81f`]]);Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return o}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return X}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return l}});
|
package/dist/C_Cron2.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeClass as d,normalizeStyle as f,onMounted as p,onScopeDispose as m,openBlock as h,ref as g,renderList as _,resolveComponent as v,toDisplayString as y,unref as b,vShow as ee,watch as x,withCtx as S,withDirectives as te,withKeys as ne}from"vue";import{NButton as re,NEmpty as C,NInput as ie,NInputNumber as ae,NRadioButton as oe,NRadioGroup as se,NScrollbar as w,NSpin as T,NTag as ce}from"naive-ui";const E=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],D={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},O={second:{...D,rangeEnd:59},minute:{...D,rangeEnd:59},hour:{...D,rangeEnd:23},day:{...D,rangeStart:1,rangeEnd:31},month:{...D,rangeStart:1,rangeEnd:12},week:{...D,mode:`none`,rangeStart:1,rangeEnd:7}},k=`0 0 0 * * ?`,A=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],j={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},M={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},N=[`second`,`minute`,`hour`,`day`,`month`,`week`];function le(){let e=g(structuredClone(O));function t(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?e.specificValues.sort((e,t)=>e-t).join(`,`):`*`;case`none`:return`?`;default:return`*`}}function n(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function i(e,t){let[r,i]=e.split(`/`).map(Number);return n(t,`step`,{stepStart:isNaN(r)?t.min:r,stepInterval:isNaN(i)?1:i})}function a(e,t){let[r,i]=e.split(`-`).map(Number);return n(t,`range`,{rangeStart:isNaN(r)?t.min:r,rangeEnd:isNaN(i)?t.max:i})}function o(e,t){let r=E.find(e=>e.type===t);if(e===`?`)return n(r,`none`);if(e===`*`)return n(r,`every`);if(e.includes(`/`))return i(e,r);if(e.includes(`-`)&&!e.includes(`,`))return a(e,r);let o=e.split(`,`).map(Number).filter(e=>!isNaN(e));return o.length>0?n(r,`specific`,{specificValues:o}):n(r,`every`)}function s(){return N.map(n=>t(e.value[n])).join(` `)}function c(t){let n=t.trim().split(/\s+/);n.length<6||N.forEach((t,r)=>{e.value[t]=o(n[r],t)})}function l(t){t===`day`?e.value.day.mode!==`none`&&(e.value.week={...e.value.week,mode:`none`}):e.value.week.mode!==`none`&&(e.value.day={...e.value.day,mode:`none`})}function u(e){let t=(e??s()).trim().split(/\s+/);if(t.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${t.length} 个`};let n=t[3],r=t[5];if(n!==`?`&&r!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(n===`?`&&r===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<N.length;e++){let n=N[e],r=t[e],i=m(r,E.find(e=>e.type===n));if(!i.valid)return{...i,field:n}}return{valid:!0,message:`表达式合法`}}function d(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return isNaN(i)||isNaN(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function f(e,t){let[n,r]=e.split(`-`).map(Number);return isNaN(n)||isNaN(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function p(e,t){let n=e.split(`,`).map(Number);return n.some(isNaN)?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function m(e,t){return e===`*`||e===`?`?{valid:!0,message:``}:e.includes(`/`)?d(e,t):e.includes(`-`)&&!e.includes(`,`)?f(e,t):p(e,t)}return{cronValue:e,expression:r(()=>s()),validation:r(()=>u()),parse:c,generate:s,validate:u,handleDayWeekExclusion:l}}function P(e,t,n){let r=g([]),i=g(!1),a=0,o=null;function s(e,t){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[n,r]=t.split(`/`),i=n===`*`?0:Number(n),a=Number(r);return e-i>=0&&(e-i)%a===0}if(t.includes(`-`)&&!t.includes(`,`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).map(Number).includes(e)}function c(e,t){if(t.length!==6)return!1;let[n,r,i,a,o,c]=t;return!(!s(e.getMonth()+1,o)||a!==`?`&&!s(e.getDate(),a)||c!==`?`&&!s(e.getDay()+1,c)||!s(e.getHours(),i)||!s(e.getMinutes(),r)||!s(e.getSeconds(),n))}async function l(r){let i=e.value;if(!i||!t.value.valid)return[];let o=i.trim().split(/\s+/);if(o.length!==6)return[];let s=[],l=new Date,u=new Date(l.getTime()+1e3);u.setMilliseconds(0);let d=/^\d{1,2}$/.test(o[0])?Number(o[0]):null,f=d===null,p=f?1e3:6e4;f||(u.setSeconds(d??0),u.getTime()<=l.getTime()&&u.setTime(u.getTime()+6e4));let m=Math.min(100,Math.max(1,Math.trunc(n.value)));for(let e=0;e<525600&&s.length<m;e++){if(r!==a)return[];c(u,o)&&s.push(new Date(u)),u.setTime(u.getTime()+p),e>0&&e%1e4==0&&await new Promise(e=>setTimeout(e,0))}return s}x([e,n,t],()=>{a+=1;let e=a;if(o&&clearTimeout(o),!t.value.valid){r.value=[],i.value=!1,o=null;return}i.value=!0,o=setTimeout(async()=>{let t=await l(e);e===a&&(r.value=t,i.value=!1,o=null)},0)},{immediate:!0}),m(()=>{a+=1,o&&clearTimeout(o)});function u(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function d(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:r,computing:i,formatDate:u,formatWeekDay:d}}function F(e){return M[Number(e)]||`周${e}`}function I(e,t){let n=r(()=>t.value.valid?i(e.value):`表达式不合法`);function i(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,d,f,p]=t,m=[];return m.push(l(f)),p===`?`?m.push(c(d)):m.push(u(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:d(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:d(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:d(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function l(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return j[t]?`${j[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>j[Number(e)]||`${e}月`).join(`、`):``}function u(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${F(e)}`:e.includes(`/`)?`从${F(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${F(e.split(`-`)[0])}到${F(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(F).join(`、`)}`:``}function d(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:n}}const L={class:`cron-field-editor`},R=[`onClick`];var ue=t(u({__name:`CronFieldEditor`,props:{modelValue:{},meta:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let i=e,a=t,c=r(()=>{switch(i.meta.type){case`second`:case`minute`:return 10;case`hour`:return 12;case`day`:return 7;case`month`:return 6;case`week`:return 7;default:return 10}}),l=r(()=>{let e=[];for(let t=i.meta.min;t<=i.meta.max;t++)e.push({value:t,label:i.meta.valueLabels?.[t]??String(t)});return e}),u=r(()=>{let{modelValue:e,meta:t}=i,n=new Set;switch(e.mode){case`every`:for(let e=t.min;e<=t.max;e++)n.add(e);break;case`none`:break;case`range`:for(let t=e.rangeStart;t<=e.rangeEnd;t++)n.add(t);break;case`step`:for(let r=e.stepStart;r<=t.max;r+=e.stepInterval)n.add(r);break;case`specific`:e.specificValues.forEach(e=>n.add(e));break}return n});function p(e){if(i.modelValue.mode!==`specific`)return;let t=[...i.modelValue.specificValues],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),a(`update:modelValue`,{...i.modelValue,specificValues:t})}return(t,r)=>(h(),o(`div`,L,[s(`div`,{class:`cron-field-editor__grid`,style:f({"--cols":c.value})},[(h(!0),o(n,null,_(l.value,t=>(h(),o(`div`,{key:t.value,class:d([`cron-field-editor__cell`,{"cron-field-editor__cell--on":u.value.has(t.value),"cron-field-editor__cell--pick":e.modelValue.mode===`specific`}]),onClick:e=>p(t.value)},y(t.label),11,R))),128))],4)]))}}),[[`__scopeId`,`data-v-e6fa8e5b`]]);const z={class:`cron-preview`},B={class:`cron-preview__header`},V={key:0,class:`cron-preview__list`},H={class:`cron-preview__idx`},U={class:`cron-preview__date`},W={class:`cron-preview__week`};var de=t(u({__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(t){return(r,c)=>{let u=T,d=C,f=w;return h(),o(`div`,z,[s(`div`,B,[l(e,{name:`mdi:calendar-clock`,size:15}),c[0]||=s(`span`,null,`未来执行`,-1),t.computing?(h(),i(u,{key:0,size:14})):a(`v-if`,!0)]),l(f,{style:{"max-height":`220px`}},{default:S(()=>[t.nextExecutions.length>0?(h(),o(`div`,V,[(h(!0),o(n,null,_(t.nextExecutions,(e,n)=>(h(),o(`div`,{key:n,class:`cron-preview__item`},[s(`span`,H,y(n+1),1),s(`span`,U,y(t.formatDate(e)),1),s(`span`,W,y(t.formatWeekDay(e)),1)]))),128))])):(h(),i(d,{key:1,size:`small`,description:`暂无匹配`}))]),_:1})])}}}),[[`__scopeId`,`data-v-a695bb32`]]);const G={class:`cron-templates`},K={class:`cron-templates__header`},q={class:`cron-templates__cards`},J=[`onClick`],Y={class:`cron-templates__card-name`},X={class:`cron-templates__card-expr`};var fe=t(u({__name:`CronTemplates`,props:{templates:{},currentValue:{}},emits:[`select`],setup(t){return(r,i)=>(h(),o(`div`,G,[s(`div`,K,[l(e,{name:`mdi:lightning-bolt`,size:15}),i[0]||=s(`span`,null,`常用模板`,-1)]),s(`div`,q,[(h(!0),o(n,null,_(t.templates,e=>(h(),o(`div`,{key:e.value,class:d([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>r.$emit(`select`,e.value)},[s(`div`,Y,y(e.label),1),s(`div`,X,y(e.value),1)],10,J))),128))])]))}}),[[`__scopeId`,`data-v-fe320f38`]]);const pe={class:`c-cron__header`},me={class:`c-cron__title-row`},he={class:`c-cron__title`},ge={class:`c-cron__segments`},_e=[`onClick`],ve={class:`c-cron__segment-value`},ye={class:`c-cron__segment-label`},be={class:`c-cron__expr-row`},xe={class:`c-cron__expr-desc`},Se={key:0,class:`c-cron__description`},Ce={key:1,class:`c-cron__error`},we={class:`c-cron__body`},Te={class:`c-cron__main`},Ee={class:`c-cron__panel`},De={key:0,class:`c-cron__config`},Oe={class:`c-cron__config-row`},ke={key:1,class:`c-cron__config`},Ae={class:`c-cron__config-row`},je={key:2,class:`c-cron__quick`},Me={key:0,class:`c-cron__quick-count`},Ne={key:0,class:`c-cron__footer`};var Z=t(u({name:`C_Cron`,__name:`index`,props:{modelValue:{default:k},disabled:{type:Boolean,default:!1},previewCount:{default:10},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{default:`auto`}},emits:[`update:modelValue`,`change`,`validation-change`],setup(t,{expose:u,emit:m}){let v=t,C=m,{cronValue:w,expression:T,validation:D,parse:O,validate:j,handleDayWeekExclusion:M}=le(),{nextExecutions:N,computing:F,formatDate:L,formatWeekDay:R}=P(T,D,r(()=>v.previewCount??10)),{description:z}=I(T,D),B=g(v.modelValue||k),V=g(v.showSecond?`second`:`minute`),H=r(()=>typeof v.height==`number`?`${v.height}px`:v.height),U=r(()=>v.showSecond?E:E.filter(e=>e.type!==`second`)),W=r(()=>E.find(e=>e.type===V.value)),G=r(()=>w.value[V.value]);function K(e){switch(e.mode){case`every`:return`*`;case`none`:return`?`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;default:return`*`}}let q=r(()=>{let e={};for(let t of E)e[t.type]=K(w.value[t.type]);return e});p(()=>{let e=v.modelValue||k;O(e),B.value=e}),x(()=>v.modelValue,e=>{e&&e!==T.value&&(O(e),B.value=e)}),x(()=>v.showSecond,e=>{!e&&V.value===`second`&&(V.value=`minute`)}),x(T,e=>{B.value=e,C(`update:modelValue`,e),C(`change`,e)}),x(D,e=>{C(`validation-change`,e)});function J(e,t){w.value[e]=t,(e===`day`||e===`week`)&&M(e)}function Y(e){J(V.value,{...G.value,mode:e})}function X(e){J(V.value,{...G.value,...e})}function Z(){let{min:e,max:t}=W.value,n=Array.from({length:t-e+1},(t,n)=>e+n);J(V.value,{...G.value,specificValues:n})}function Pe(){J(V.value,{...G.value,specificValues:[]})}function Fe(e){B.value=e}function Q(){let e=B.value.trim();e&&e!==T.value&&O(e)}function Ie(e){O(e),B.value=e}function $(){let e=v.modelValue||k;O(e),B.value=e}return u({getValue:()=>T.value,setValue:e=>{O(e),B.value=e},reset:$,validate:()=>j()}),(t,r)=>{let u=ce,p=ie,m=re,g=oe,x=se,C=ae;return h(),o(`div`,{class:`c-cron`,style:f({height:H.value})},[a(` ═══════ 顶部 ═══════ `),s(`div`,pe,[a(` 标题行 `),s(`div`,me,[s(`div`,he,[l(e,{name:`mdi:clock-edit-outline`,size:18}),r[4]||=s(`span`,null,`Cron 表达式`,-1)]),l(u,{type:b(D).valid?`success`:`error`,size:`small`,round:``},{icon:S(()=>[l(e,{name:b(D).valid?`mdi:check-circle`:`mdi:alert-circle`},null,8,[`name`])]),default:S(()=>[c(` `+y(b(D).valid?`合法`:`错误`),1)]),_:1},8,[`type`])]),a(` 分段式字段选择器 `),s(`div`,ge,[(h(!0),o(n,null,_(U.value,e=>(h(),o(`div`,{key:e.type,class:d([`c-cron__segment`,{"c-cron__segment--active":V.value===e.type,"c-cron__segment--wildcard":q.value[e.type]===`*`||q.value[e.type]===`?`}]),onClick:t=>V.value=e.type},[s(`div`,ve,y(q.value[e.type]),1),s(`div`,ye,y(e.label),1)],10,_e))),128))]),a(` 表达式行:输入 + 重置 + 描述 `),s(`div`,be,[l(p,{value:B.value,status:b(D).valid?void 0:`error`,placeholder:`秒 分 时 日 月 周`,disabled:v.disabled,font:`mono`,size:`small`,clearable:``,class:`c-cron__expr-input`,"onUpdate:value":Fe,onBlur:Q,onKeydown:ne(Q,[`enter`])},{prefix:S(()=>[l(e,{name:`mdi:console`,size:14,style:{opacity:`0.4`}})]),_:1},8,[`value`,`status`,`disabled`]),l(m,{size:`small`,quaternary:``,disabled:v.disabled,onClick:$},{icon:S(()=>[l(e,{name:`mdi:refresh`})]),_:1},8,[`disabled`]),s(`div`,xe,[b(D).valid?(h(),o(`span`,Se,y(b(z)),1)):(h(),o(`span`,Ce,y(b(D).message),1))])])]),a(` ═══════ 主内容 ═══════ `),s(`div`,we,[a(` 左侧:值网格 `),s(`div`,Te,[(h(!0),o(n,null,_(U.value,e=>te((h(),i(ue,{key:e.type,"model-value":b(w)[e.type],meta:e,"onUpdate:modelValue":t=>J(e.type,t)},null,8,[`model-value`,`meta`,`onUpdate:modelValue`])),[[ee,V.value===e.type]])),128))]),a(` 右侧:控制面板 `),s(`div`,Ee,[l(x,{value:G.value.mode,size:`small`,"onUpdate:value":Y},{default:S(()=>[l(g,{value:`every`},{default:S(()=>[c(` 每`+y(W.value.label),1)]),_:1}),V.value===`day`||V.value===`week`?(h(),i(g,{key:0,value:`none`},{default:S(()=>[...r[5]||=[c(` 不指定 `,-1)]]),_:1})):a(`v-if`,!0),l(g,{value:`range`},{default:S(()=>[...r[6]||=[c(`范围`,-1)]]),_:1}),l(g,{value:`step`},{default:S(()=>[...r[7]||=[c(`步进`,-1)]]),_:1}),l(g,{value:`specific`},{default:S(()=>[...r[8]||=[c(`指定`,-1)]]),_:1})]),_:1},8,[`value`]),a(` 范围配置 `),G.value.mode===`range`?(h(),o(`div`,De,[s(`div`,Oe,[r[9]||=s(`span`,null,`从`,-1),l(C,{value:G.value.rangeStart,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":r[0]||=e=>X({rangeStart:e??W.value.min})},null,8,[`value`,`min`,`max`]),r[10]||=s(`span`,null,`到`,-1),l(C,{value:G.value.rangeEnd,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":r[1]||=e=>X({rangeEnd:e??W.value.max})},null,8,[`value`,`min`,`max`])])])):a(`v-if`,!0),a(` 步进配置 `),G.value.mode===`step`?(h(),o(`div`,ke,[s(`div`,Ae,[r[11]||=s(`span`,null,`从第`,-1),l(C,{value:G.value.stepStart,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":r[2]||=e=>X({stepStart:e??W.value.min})},null,8,[`value`,`min`,`max`]),s(`span`,null,y(W.value.label)+`起,每`,1),l(C,{value:G.value.stepInterval,min:1,max:W.value.max-W.value.min+1,size:`small`,"show-button":!1,class:`c-cron__config-num`,"onUpdate:value":r[3]||=e=>X({stepInterval:e??1})},null,8,[`value`,`max`]),s(`span`,null,y(W.value.label)+`执行`,1)])])):a(`v-if`,!0),a(` 指定快捷操作 `),G.value.mode===`specific`?(h(),o(`div`,je,[s(`a`,{onClick:Z},`全选`),r[12]||=s(`span`,{class:`c-cron__quick-sep`},`·`,-1),s(`a`,{onClick:Pe},`清空`),G.value.specificValues.length>0?(h(),o(`span`,Me,` 已选 `+y(G.value.specificValues.length),1)):a(`v-if`,!0)])):a(`v-if`,!0),a(` 执行预览 `),v.showPreview?(h(),o(n,{key:3},[r[13]||=s(`div`,{class:`c-cron__panel-line`},null,-1),l(de,{"next-executions":b(N),computing:b(F),count:v.previewCount??5,"format-date":b(L),"format-week-day":b(R)},null,8,[`next-executions`,`computing`,`count`,`format-date`,`format-week-day`])],64)):a(`v-if`,!0)])]),a(` ═══════ 底部模板 ═══════ `),v.showTemplates?(h(),o(`div`,Ne,[l(fe,{templates:b(A),"current-value":b(T),onSelect:Ie},null,8,[`templates`,`current-value`])])):a(`v-if`,!0)],4)}}}),[[`__scopeId`,`data-v-06e7be26`]]);export{E as a,O as c,M as d,le as i,D as l,I as n,A as o,P as r,k as s,Z as t,j as u};
|
|
1
|
+
import{t as e}from"./C_Icon2.js";import{t}from"./export-helper.js";import{Fragment as n,computed as r,createBlock as i,createCommentVNode as a,createElementBlock as o,createElementVNode as s,createTextVNode as c,createVNode as l,defineComponent as u,normalizeClass as d,normalizeStyle as f,onMounted as p,onScopeDispose as m,openBlock as h,ref as g,renderList as _,resolveComponent as v,toDisplayString as y,unref as b,vShow as ee,watch as x,withCtx as S,withDirectives as te,withKeys as ne}from"vue";import{NButton as re,NEmpty as C,NInput as ie,NInputNumber as ae,NRadioButton as oe,NRadioGroup as se,NScrollbar as w,NSpin as T,NTag as ce}from"naive-ui";const E=[{type:`second`,label:`秒`,min:0,max:59},{type:`minute`,label:`分`,min:0,max:59},{type:`hour`,label:`时`,min:0,max:23},{type:`day`,label:`日`,min:1,max:31},{type:`month`,label:`月`,min:1,max:12},{type:`week`,label:`周`,min:1,max:7,valueLabels:{1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`}}],D={mode:`every`,rangeStart:0,rangeEnd:0,stepStart:0,stepInterval:1,specificValues:[]},O={second:{...D,rangeEnd:59},minute:{...D,rangeEnd:59},hour:{...D,rangeEnd:23},day:{...D,rangeStart:1,rangeEnd:31},month:{...D,rangeStart:1,rangeEnd:12},week:{...D,mode:`none`,rangeStart:1,rangeEnd:7}},k=`0 0 0 * * ?`,A=[{label:`每秒执行`,value:`* * * * * ?`,description:`每秒执行一次`,icon:`mdi:timer-sand`},{label:`每分钟执行`,value:`0 * * * * ?`,description:`每分钟第 0 秒执行`,icon:`mdi:clock-outline`},{label:`每小时执行`,value:`0 0 * * * ?`,description:`每小时整点执行`,icon:`mdi:clock-time-twelve-outline`},{label:`每天 0 点`,value:`0 0 0 * * ?`,description:`每天凌晨 00:00 执行`,icon:`mdi:weather-night`},{label:`每天 8:30`,value:`0 30 8 * * ?`,description:`每天早上 08:30 执行`,icon:`mdi:weather-sunny`},{label:`每天 12:00`,value:`0 0 12 * * ?`,description:`每天中午 12:00 执行`,icon:`mdi:food`},{label:`工作日 9:00`,value:`0 0 9 ? * 2-6`,description:`周一至周五 09:00 执行`,icon:`mdi:briefcase-outline`},{label:`每周一 0 点`,value:`0 0 0 ? * 2`,description:`每周一凌晨 00:00 执行`,icon:`mdi:calendar-week`},{label:`每月 1 号 0 点`,value:`0 0 0 1 * ?`,description:`每月 1 号凌晨 00:00 执行`,icon:`mdi:calendar-month`},{label:`每 5 分钟`,value:`0 0/5 * * * ?`,description:`每隔 5 分钟执行一次`,icon:`mdi:timer-5`},{label:`每 30 分钟`,value:`0 0/30 * * * ?`,description:`每隔 30 分钟执行一次`,icon:`mdi:timer-30`},{label:`每 2 小时`,value:`0 0 0/2 * * ?`,description:`每隔 2 小时执行一次`,icon:`mdi:timer-2`}],j={1:`一月`,2:`二月`,3:`三月`,4:`四月`,5:`五月`,6:`六月`,7:`七月`,8:`八月`,9:`九月`,10:`十月`,11:`十一月`,12:`十二月`},M={1:`周日`,2:`周一`,3:`周二`,4:`周三`,5:`周四`,6:`周五`,7:`周六`},N=[`second`,`minute`,`hour`,`day`,`month`,`week`];function P(){let e=structuredClone(O);for(let t of N)e[t].specificValues=[];let t=g(e);function n(e){switch(e.mode){case`every`:return`*`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;case`none`:return`?`;default:return`*`}}function i(e,t,n={}){return{mode:t,rangeStart:e.min,rangeEnd:e.max,stepStart:e.min,stepInterval:1,specificValues:[],...n}}function a(e,t){let[n,r]=e.split(`/`).map(Number);return i(t,`step`,{stepStart:isNaN(n)?t.min:n,stepInterval:isNaN(r)?1:r})}function o(e,t){let[n,r]=e.split(`-`).map(Number);return i(t,`range`,{rangeStart:isNaN(n)?t.min:n,rangeEnd:isNaN(r)?t.max:r})}function s(e,t){let n=E.find(e=>e.type===t);if(e===`?`)return i(n,`none`);if(e===`*`)return i(n,`every`);if(e.includes(`/`))return a(e,n);if(e.includes(`-`)&&!e.includes(`,`))return o(e,n);let r=e.split(`,`).map(Number).filter(e=>!isNaN(e));return r.length>0?i(n,`specific`,{specificValues:r}):i(n,`every`)}function c(){return N.map(e=>n(t.value[e])).join(` `)}function l(e){if(!d(e).valid)return!1;let n=e.trim().split(/\s+/);return N.forEach((e,r)=>{t.value[e]=s(n[r],e)}),!0}function u(e){e===`day`?t.value.day.mode!==`none`&&(t.value.week={...t.value.week,mode:`none`}):t.value.week.mode!==`none`&&(t.value.day={...t.value.day,mode:`none`})}function d(e){let t=(e??c()).trim().split(/\s+/);if(t.length!==6)return{valid:!1,message:`表达式应包含 6 个字段,当前为 ${t.length} 个`};let n=t[3],r=t[5];if(n!==`?`&&r!==`?`)return{valid:!1,message:`日和周不能同时指定,其中一个必须为 ?`,field:`day`};if(n===`?`&&r===`?`)return{valid:!1,message:`日和周不能同时为 ?,至少指定一个`,field:`day`};for(let e=0;e<N.length;e++){let n=N[e],r=t[e],i=h(r,E.find(e=>e.type===n));if(!i.valid)return{...i,field:n}}return{valid:!0,message:`表达式合法`}}function f(e,t){let[n,r]=e.split(`/`),i=n===`*`?t.min:Number(n),a=Number(r);return!Number.isInteger(i)||!Number.isInteger(a)?{valid:!1,message:`${t.label}字段步进格式错误`}:i<t.min||i>t.max?{valid:!1,message:`${t.label}字段步进起始值超出范围 (${t.min}-${t.max})`}:a<1?{valid:!1,message:`${t.label}字段步进间隔必须大于 0`}:{valid:!0,message:``}}function p(e,t){let[n,r]=e.split(`-`).map(Number);return!Number.isInteger(n)||!Number.isInteger(r)?{valid:!1,message:`${t.label}字段范围格式错误`}:n<t.min||r>t.max?{valid:!1,message:`${t.label}字段范围超出 (${t.min}-${t.max})`}:n>r?{valid:!1,message:`${t.label}字段范围起始不能大于结束`}:{valid:!0,message:``}}function m(e,t){let n=e.split(`,`).map(Number);return n.some(e=>!Number.isInteger(e))?{valid:!1,message:`${t.label}字段包含非数字字符`}:n.some(e=>e<t.min||e>t.max)?{valid:!1,message:`${t.label}字段值超出范围 (${t.min}-${t.max})`}:{valid:!0,message:``}}function h(e,t){return e===`*`?{valid:!0,message:``}:e===`?`?t.type===`day`||t.type===`week`?{valid:!0,message:``}:{valid:!1,message:`${t.label}字段不能使用 ?`}:/^(\*|\d+)\/\d+$/.test(e)?f(e,t):/^\d+-\d+$/.test(e)?p(e,t):/^\d+(,\d+)*$/.test(e)?m(e,t):{valid:!1,message:`${t.label}字段格式错误`}}return{cronValue:t,expression:r(()=>c()),validation:r(()=>d()),parse:l,generate:c,validate:d,handleDayWeekExclusion:u}}function F(e,t,n){if(t===`*`||t===`?`)return!0;if(t.includes(`/`)){let[r,i]=t.split(`/`),a=r===`*`?n:Number(r),o=Number(i);return o>0&&e>=a&&(e-a)%o===0}if(t.includes(`-`)){let[n,r]=t.split(`-`).map(Number);return e>=n&&e<=r}return t.split(`,`).some(t=>Number(t)===e)}function le(e,t){let[,n,r,i,a,o]=t;return F(e.getMinutes(),n,0)&&F(e.getHours(),r,0)&&F(e.getDate(),i,1)&&F(e.getMonth()+1,a,1)&&F(e.getDay()+1,o,1)}function ue(e,t,n,r,i){for(let a of n){let n=new Date(t.getTime()+a*1e3);if(!(n.getTime()<=r.getTime())&&(e.push(n),e.length>=i))return!0}return!1}function de(e){return Number.isFinite(e)?Math.min(100,Math.max(1,Math.trunc(e))):10}function I(e){return e>0&&e%1e4==0}async function L(e,t,n=new Date,r=()=>!1){let i=e.trim().split(/\s+/);if(i.length!==6)return[];let a=Array.from({length:60},(e,t)=>t).filter(e=>F(e,i[0],0));if(a.length===0)return[];let o=de(t),s=[],c=new Date(n);c.setSeconds(0,0);for(let e=0;e<527040;e++){if(r())return[];if(le(c,i)&&ue(s,c,a,n,o))return s;c.setTime(c.getTime()+6e4),I(e)&&await new Promise(e=>setTimeout(e,0))}return s}function R(e,t,n){let r=g([]),i=g(!1),a=0,o=null;x([e,n,t],()=>{a+=1;let s=a;if(o&&clearTimeout(o),!t.value.valid){r.value=[],i.value=!1,o=null;return}i.value=!0,o=setTimeout(async()=>{let t=await L(e.value,n.value,new Date,()=>s!==a);s===a&&(r.value=t,i.value=!1,o=null)},0)},{immediate:!0}),m(()=>{a+=1,o&&clearTimeout(o)});function s(e){let t=e=>String(e).padStart(2,`0`);return`${e.getFullYear()}-${t(e.getMonth()+1)}-${t(e.getDate())} ${t(e.getHours())}:${t(e.getMinutes())}:${t(e.getSeconds())}`}function c(e){return[`周日`,`周一`,`周二`,`周三`,`周四`,`周五`,`周六`][e.getDay()]}return{nextExecutions:r,computing:i,formatDate:s,formatWeekDay:c}}function z(e){return M[Number(e)]||`周${e}`}function B(e,t){let n=r(()=>t.value.valid?i(e.value):`表达式不合法`);function i(e){let t=e.trim().split(/\s+/);if(t.length!==6)return`表达式格式错误`;let[n,r,i,d,f,p]=t,m=[];return m.push(l(f)),p===`?`?m.push(c(d)):m.push(u(p)),m.push(s(i)),m.push(o(r)),m.push(a(n)),m.filter(Boolean).join(` `)+` 执行`}function a(e){return e===`0`?``:e===`*`?`每秒`:d(e,`秒`)}function o(e){return e===`*`?`每分钟`:e===`0`?``:d(e,`分`)}function s(e){return e===`*`?`每小时`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}:`:d(e,`时`)}function c(e){if(e===`*`||e===`?`)return`每天`;if(/^\d+$/.test(e))return`每月 ${e} 号`;if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 号开始每 ${n} 天`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 号到 ${n} 号`}return e.includes(`,`)?`每月 ${e} 号`:``}function l(e){if(e===`*`)return``;if(/^\d+$/.test(e)){let t=Number(e);return j[t]?`${j[t]}`:`${t} 月`}if(e.includes(`/`)){let[t,n]=e.split(`/`);return`从 ${t} 月开始每 ${n} 个月`}if(e.includes(`-`)){let[t,n]=e.split(`-`);return`${t} 月到 ${n} 月`}return e.includes(`,`)?e.split(`,`).map(e=>j[Number(e)]||`${e}月`).join(`、`):``}function u(e){return e===`*`||e===`?`?``:/^\d+$/.test(e)?`每${z(e)}`:e.includes(`/`)?`从${z(e.split(`/`)[0])}开始每 ${e.split(`/`)[1]} 天`:e.includes(`-`)?`${z(e.split(`-`)[0])}到${z(e.split(`-`)[1])}`:e.includes(`,`)?`每${e.split(`,`).map(z).join(`、`)}`:``}function d(e,t){if(e.includes(`/`)){let[n,r]=e.split(`/`);return`${n===`*`||n===`0`?``:`从第 ${n} ${t}开始`}每 ${r} ${t}`}if(e.includes(`-`)){let[n,r]=e.split(`-`);return`${n} ${t}到 ${r} ${t}`}return e.includes(`,`)?`第 ${e} ${t}`:/^\d+$/.test(e)?`${e.padStart(2,`0`)}`:``}return{description:n}}const V={class:`cron-field-editor`},H=[`disabled`,`aria-pressed`,`onClick`];var fe=t(u({__name:`CronFieldEditor`,props:{modelValue:{},meta:{},disabled:{type:Boolean}},emits:[`update:modelValue`],setup(e,{emit:t}){let i=e,a=t,c=r(()=>{switch(i.meta.type){case`second`:case`minute`:return 10;case`hour`:return 12;case`day`:return 7;case`month`:return 6;case`week`:return 7;default:return 10}}),l=r(()=>{let e=[];for(let t=i.meta.min;t<=i.meta.max;t++)e.push({value:t,label:i.meta.valueLabels?.[t]??String(t)});return e}),u=r(()=>{let{modelValue:e,meta:t}=i,n=new Set;switch(e.mode){case`every`:for(let e=t.min;e<=t.max;e++)n.add(e);break;case`none`:break;case`range`:for(let t=e.rangeStart;t<=e.rangeEnd;t++)n.add(t);break;case`step`:for(let r=e.stepStart;r<=t.max;r+=Math.max(1,e.stepInterval))n.add(r);break;case`specific`:e.specificValues.forEach(e=>n.add(e));break}return n});function p(e){if(i.disabled||i.modelValue.mode!==`specific`)return;let t=[...i.modelValue.specificValues],n=t.indexOf(e);n>=0?t.splice(n,1):t.push(e),a(`update:modelValue`,{...i.modelValue,specificValues:t})}return(t,r)=>(h(),o(`div`,V,[s(`div`,{class:`cron-field-editor__grid`,style:f({"--cols":c.value})},[(h(!0),o(n,null,_(l.value,t=>(h(),o(`button`,{key:t.value,type:`button`,class:d([`cron-field-editor__cell`,{"cron-field-editor__cell--on":u.value.has(t.value),"cron-field-editor__cell--pick":e.modelValue.mode===`specific`}]),disabled:e.disabled||e.modelValue.mode!==`specific`,"aria-pressed":e.modelValue.mode===`specific`?u.value.has(t.value):void 0,onClick:e=>p(t.value)},y(t.label),11,H))),128))],4)]))}}),[[`__scopeId`,`data-v-60c57fc6`]]);const U={class:`cron-preview`},W={class:`cron-preview__header`},G={key:0,class:`cron-preview__list`},K={class:`cron-preview__idx`},q={class:`cron-preview__date`},J={class:`cron-preview__week`};var pe=t(u({__name:`CronPreview`,props:{nextExecutions:{},computing:{type:Boolean},count:{},formatDate:{type:Function},formatWeekDay:{type:Function}},setup(t){return(r,c)=>{let u=T,d=C,f=w;return h(),o(`div`,U,[s(`div`,W,[l(e,{name:`mdi:calendar-clock`,size:15}),c[0]||=s(`span`,null,`未来执行`,-1),t.computing?(h(),i(u,{key:0,size:14})):a(`v-if`,!0)]),l(f,{style:{"max-height":`220px`}},{default:S(()=>[t.nextExecutions.length>0?(h(),o(`div`,G,[(h(!0),o(n,null,_(t.nextExecutions,(e,n)=>(h(),o(`div`,{key:n,class:`cron-preview__item`},[s(`span`,K,y(n+1),1),s(`span`,q,y(t.formatDate(e)),1),s(`span`,J,y(t.formatWeekDay(e)),1)]))),128))])):(h(),i(d,{key:1,size:`small`,description:`暂无匹配`}))]),_:1})])}}}),[[`__scopeId`,`data-v-a695bb32`]]);const Y={class:`cron-templates`},X={class:`cron-templates__header`},me={class:`cron-templates__cards`},he=[`disabled`,`aria-pressed`,`onClick`],ge={class:`cron-templates__card-name`},Z={class:`cron-templates__card-expr`};var _e=t(u({__name:`CronTemplates`,props:{templates:{},currentValue:{},disabled:{type:Boolean}},emits:[`select`],setup(t){return(r,i)=>(h(),o(`div`,Y,[s(`div`,X,[l(e,{name:`mdi:lightning-bolt`,size:15}),i[0]||=s(`span`,null,`常用模板`,-1)]),s(`div`,me,[(h(!0),o(n,null,_(t.templates,e=>(h(),o(`button`,{key:e.value,type:`button`,disabled:t.disabled,"aria-pressed":e.value===t.currentValue,class:d([`cron-templates__card`,{"cron-templates__card--active":e.value===t.currentValue}]),onClick:t=>r.$emit(`select`,e.value)},[s(`div`,ge,y(e.label),1),s(`div`,Z,y(e.value),1)],10,he))),128))])]))}}),[[`__scopeId`,`data-v-241e79f6`]]);const ve={class:`c-cron__header`},ye={class:`c-cron__title-row`},be={class:`c-cron__title`},xe={class:`c-cron__segments`},Se=[`aria-pressed`,`onClick`],Ce={class:`c-cron__segment-value`},we={class:`c-cron__segment-label`},Te={class:`c-cron__expr-row`},Ee={class:`c-cron__expr-desc`},De={key:0,class:`c-cron__description`},Oe={key:1,class:`c-cron__error`},ke={class:`c-cron__body`},Ae={class:`c-cron__main`},je={class:`c-cron__panel`},Me={key:0,class:`c-cron__config`},Ne={class:`c-cron__config-row`},Pe={key:1,class:`c-cron__config`},Fe={class:`c-cron__config-row`},Ie={key:2,class:`c-cron__quick`},Le=[`disabled`],Re=[`disabled`],ze={key:0,class:`c-cron__quick-count`},Be={key:1,class:`c-cron__error`},Ve={key:0,class:`c-cron__footer`};var Q=t(u({name:`C_Cron`,__name:`index`,props:{modelValue:{default:k},disabled:{type:Boolean,default:!1},previewCount:{default:10},showTemplates:{type:Boolean,default:!0},showPreview:{type:Boolean,default:!0},showSecond:{type:Boolean,default:!0},height:{default:`auto`}},emits:[`update:modelValue`,`change`,`validation-change`],setup(t,{expose:u,emit:m}){let v=t,C=m,{cronValue:w,expression:T,validation:D,parse:O,validate:j,handleDayWeekExclusion:M}=P(),{nextExecutions:N,computing:F,formatDate:le,formatWeekDay:ue}=R(T,D,r(()=>v.previewCount??10)),{description:de}=B(T,D),I=g(v.modelValue||k),L=g(null),z=r(()=>L.value??D.value),V=g(v.showSecond?`second`:`minute`),H=r(()=>typeof v.height==`number`?`${v.height}px`:v.height),U=r(()=>v.showSecond?E:E.filter(e=>e.type!==`second`)),W=r(()=>E.find(e=>e.type===V.value)),G=r(()=>w.value[V.value]);function K(e){switch(e.mode){case`every`:return`*`;case`none`:return`?`;case`range`:return`${e.rangeStart}-${e.rangeEnd}`;case`step`:return`${e.stepStart}/${e.stepInterval}`;case`specific`:return e.specificValues.length>0?[...e.specificValues].sort((e,t)=>e-t).join(`,`):`*`;default:return`*`}}let q=r(()=>{let e={};for(let t of E)e[t.type]=K(w.value[t.type]);return e});p(()=>{Q(v.modelValue||k)}),x(()=>v.modelValue,e=>{e!==T.value&&Q(e||k)}),x(()=>v.showSecond,e=>{!e&&V.value===`second`&&(V.value=`minute`)}),x(T,e=>{I.value=e,L.value=null,C(`update:modelValue`,e),C(`change`,e)}),x(z,e=>{C(`validation-change`,e)});function J(e,t){v.disabled||(L.value=null,w.value[e]=t,(e===`day`||e===`week`)&&M(e))}function Y(e){J(V.value,{...G.value,mode:e})}function X(e){J(V.value,{...G.value,...e})}function me(){let{min:e,max:t}=W.value,n=Array.from({length:t-e+1},(t,n)=>e+n);J(V.value,{...G.value,specificValues:n})}function he(){J(V.value,{...G.value,specificValues:[]})}function ge(e){I.value=e,L.value=j(e)}function Z(){v.disabled||Q(I.value.trim())}function Q(e){I.value=e;let t=j(e);L.value=t.valid?null:t,t.valid&&O(e)}function He(e){v.disabled||Q(e)}function $(){Q(v.modelValue||k)}return u({getValue:()=>T.value,setValue:e=>{Q(e)},reset:$,validate:()=>z.value}),(t,r)=>{let u=ce,p=ie,m=re,g=oe,x=se,C=ae;return h(),o(`div`,{class:`c-cron`,style:f({height:H.value})},[a(` ═══════ 顶部 ═══════ `),s(`div`,ve,[a(` 标题行 `),s(`div`,ye,[s(`div`,be,[l(e,{name:`mdi:clock-edit-outline`,size:18}),r[4]||=s(`span`,null,`Cron 表达式`,-1)]),l(u,{type:z.value.valid?`success`:`error`,size:`small`,round:``},{icon:S(()=>[l(e,{name:z.value.valid?`mdi:check-circle`:`mdi:alert-circle`},null,8,[`name`])]),default:S(()=>[c(` `+y(z.value.valid?`合法`:`错误`),1)]),_:1},8,[`type`])]),a(` 分段式字段选择器 `),s(`div`,xe,[(h(!0),o(n,null,_(U.value,e=>(h(),o(`button`,{key:e.type,type:`button`,class:d([`c-cron__segment`,{"c-cron__segment--active":V.value===e.type,"c-cron__segment--wildcard":q.value[e.type]===`*`||q.value[e.type]===`?`}]),"aria-pressed":V.value===e.type,onClick:t=>V.value=e.type},[s(`div`,Ce,y(q.value[e.type]),1),s(`div`,we,y(e.label),1)],10,Se))),128))]),a(` 表达式行:输入 + 重置 + 描述 `),s(`div`,Te,[l(p,{value:I.value,status:z.value.valid?void 0:`error`,placeholder:`秒 分 时 日 月 周`,disabled:v.disabled,font:`mono`,size:`small`,clearable:``,class:`c-cron__expr-input`,"onUpdate:value":ge,onBlur:Z,onKeydown:ne(Z,[`enter`])},{prefix:S(()=>[l(e,{name:`mdi:console`,size:14,style:{opacity:`0.4`}})]),_:1},8,[`value`,`status`,`disabled`]),l(m,{size:`small`,quaternary:``,disabled:v.disabled,onClick:$},{icon:S(()=>[l(e,{name:`mdi:refresh`})]),_:1},8,[`disabled`]),s(`div`,Ee,[z.value.valid?(h(),o(`span`,De,y(b(de)),1)):(h(),o(`span`,Oe,y(z.value.message),1))])])]),a(` ═══════ 主内容 ═══════ `),s(`div`,ke,[a(` 左侧:值网格 `),s(`div`,Ae,[(h(!0),o(n,null,_(U.value,e=>te((h(),i(fe,{key:e.type,"model-value":b(w)[e.type],meta:e,disabled:v.disabled,"onUpdate:modelValue":t=>J(e.type,t)},null,8,[`model-value`,`meta`,`disabled`,`onUpdate:modelValue`])),[[ee,V.value===e.type]])),128))]),a(` 右侧:控制面板 `),s(`div`,je,[l(x,{value:G.value.mode,disabled:v.disabled,size:`small`,"onUpdate:value":Y},{default:S(()=>[l(g,{value:`every`},{default:S(()=>[c(` 每`+y(W.value.label),1)]),_:1}),V.value===`day`||V.value===`week`?(h(),i(g,{key:0,value:`none`},{default:S(()=>[...r[5]||=[c(` 不指定 `,-1)]]),_:1})):a(`v-if`,!0),l(g,{value:`range`},{default:S(()=>[...r[6]||=[c(`范围`,-1)]]),_:1}),l(g,{value:`step`},{default:S(()=>[...r[7]||=[c(`步进`,-1)]]),_:1}),l(g,{value:`specific`},{default:S(()=>[...r[8]||=[c(`指定`,-1)]]),_:1})]),_:1},8,[`value`,`disabled`]),a(` 范围配置 `),G.value.mode===`range`?(h(),o(`div`,Me,[s(`div`,Ne,[r[9]||=s(`span`,null,`从`,-1),l(C,{value:G.value.rangeStart,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[0]||=e=>X({rangeStart:e??W.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),r[10]||=s(`span`,null,`到`,-1),l(C,{value:G.value.rangeEnd,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[1]||=e=>X({rangeEnd:e??W.value.max})},null,8,[`value`,`min`,`max`,`disabled`])])])):a(`v-if`,!0),a(` 步进配置 `),G.value.mode===`step`?(h(),o(`div`,Pe,[s(`div`,Fe,[r[11]||=s(`span`,null,`从第`,-1),l(C,{value:G.value.stepStart,min:W.value.min,max:W.value.max,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[2]||=e=>X({stepStart:e??W.value.min})},null,8,[`value`,`min`,`max`,`disabled`]),s(`span`,null,y(W.value.label)+`起,每`,1),l(C,{value:G.value.stepInterval,min:1,max:W.value.max-W.value.min+1,size:`small`,"show-button":!1,disabled:v.disabled,class:`c-cron__config-num`,"onUpdate:value":r[3]||=e=>X({stepInterval:e??1})},null,8,[`value`,`max`,`disabled`]),s(`span`,null,y(W.value.label)+`执行`,1)])])):a(`v-if`,!0),a(` 指定快捷操作 `),G.value.mode===`specific`?(h(),o(`div`,Ie,[s(`button`,{type:`button`,disabled:v.disabled,onClick:me},`全选`,8,Le),r[12]||=s(`span`,{class:`c-cron__quick-sep`},`·`,-1),s(`button`,{type:`button`,disabled:v.disabled,onClick:he},`清空`,8,Re),G.value.specificValues.length>0?(h(),o(`span`,ze,` 已选 `+y(G.value.specificValues.length),1)):a(`v-if`,!0)])):a(`v-if`,!0),a(` 执行预览 `),v.showPreview?(h(),o(n,{key:3},[r[13]||=s(`div`,{class:`c-cron__panel-line`},null,-1),z.value.valid?(h(),i(pe,{key:0,"next-executions":b(N),computing:b(F),count:v.previewCount??5,"format-date":b(le),"format-week-day":b(ue)},null,8,[`next-executions`,`computing`,`count`,`format-date`,`format-week-day`])):(h(),o(`div`,Be,`请先修正表达式`))],64)):a(`v-if`,!0)])]),a(` ═══════ 底部模板 ═══════ `),v.showTemplates?(h(),o(`div`,Ve,[l(_e,{templates:b(A),"current-value":b(T),disabled:v.disabled,onSelect:He},null,8,[`templates`,`current-value`,`disabled`])])):a(`v-if`,!0)],4)}}}),[[`__scopeId`,`data-v-2594f81f`]]);export{E as a,O as c,M as d,P as i,D as l,B as n,A as o,R as r,k as s,Q as t,j as u};
|
package/dist/C_Date.d.cts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as DatePickerMode, c as DateValue, i as DateModelValue, n as DateEmits, o as DateProps, r as DateExpose, s as DateRangeValue, t as _default } from "./
|
|
1
|
+
import { a as DatePickerMode, c as DateValue, i as DateModelValue, n as DateEmits, o as DateProps, r as DateExpose, s as DateRangeValue, t as _default } from "./index11.vue.cjs";
|
|
2
2
|
export { _default as C_Date, type DateEmits, type DateExpose, type DateModelValue, type DatePickerMode, type DateProps, type DateRangeValue, type DateValue };
|
package/dist/C_Date.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as DatePickerMode, c as DateValue, i as DateModelValue, n as DateEmits, o as DateProps, r as DateExpose, s as DateRangeValue, t as _default } from "./
|
|
1
|
+
import { a as DatePickerMode, c as DateValue, i as DateModelValue, n as DateEmits, o as DateProps, r as DateExpose, s as DateRangeValue, t as _default } from "./index10.vue.js";
|
|
2
2
|
export { _default as C_Date, type DateEmits, type DateExpose, type DateModelValue, type DatePickerMode, type DateProps, type DateRangeValue, type DateValue };
|
package/dist/C_Date2.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./chunk.cjs`);let e=require(`vue`),t=require(`naive-ui`);
|
|
1
|
+
require(`./chunk.cjs`);let e=require(`vue`),t=require(`naive-ui`);function n(e){let t=/^(\d{4})-(\d{2})-(\d{2})/.exec(e);if(t)return new Date(Number(t[1]),Number(t[2])-1,Number(t[3])).getTime();let n=new Date(e);return new Date(n.getFullYear(),n.getMonth(),n.getDate()).getTime()}const r={class:`inline-block`},i={key:4,class:`inline-block`},a={class:`flex gap-2.5 items-center`},o=(0,e.defineComponent)({name:`C_Date`,__name:`index`,props:{modelValue:{},mode:{default:`date`},placeholder:{default:``},startPlaceholder:{default:``},endPlaceholder:{default:``},disabled:{type:Boolean,default:!1},disabledBeforeToday:{type:Boolean,default:!1},disabledAfterToday:{type:Boolean,default:!1},valueFormat:{},startDateProps:{default:()=>({})},endDateProps:{default:()=>({})},singleDate:{default:null},singleDateTime:{default:null},dateRange:{default:null},dateTimeRange:{default:null},smartRange:{default:null}},emits:[`update:modelValue`,`update:singleDate`,`update:singleDateTime`,`update:dateRange`,`update:dateTimeRange`,`update:smartRange`,`change`],setup(o,{expose:s,emit:c}){let l=o,u=c,d=()=>{let e=new Date;return e.setHours(0,0,0,0),e.getTime()},f=(0,e.computed)(()=>l.valueFormat?l.valueFormat:l.mode.includes(`datetime`)?`yyyy-MM-dd HH:mm:ss`:`yyyy-MM-dd`),p=(0,e.computed)({get:()=>l.modelValue===void 0?l.singleDate??null:l.modelValue,set:e=>{u(`update:modelValue`,e),u(`update:singleDate`,e),u(`change`,e)}}),m=(0,e.computed)({get:()=>l.modelValue===void 0?l.singleDateTime??null:l.modelValue,set:e=>{u(`update:modelValue`,e),u(`update:singleDateTime`,e),u(`change`,e)}}),h=(0,e.computed)({get:()=>l.modelValue===void 0?l.dateRange??null:l.modelValue,set:e=>{u(`update:modelValue`,e),u(`update:dateRange`,e),u(`change`,e)}}),g=(0,e.computed)({get:()=>l.modelValue===void 0?l.dateTimeRange??null:l.modelValue,set:e=>{u(`update:modelValue`,e),u(`update:dateTimeRange`,e),u(`change`,e)}}),_=(0,e.ref)(null),v=(0,e.ref)(null),y=(0,e.computed)(()=>l.disabled||_.value===null),b=!1;(0,e.watch)(()=>[l.modelValue,l.smartRange,l.mode],([e,t,n])=>{let r=n===`smart-range`&&e!==void 0?e:t,i=r?.[0]??null,a=r?.[1]??null;i===_.value&&a===v.value||(b=!0,_.value=i,v.value=a,b=!1)},{immediate:!0,deep:!0}),(0,e.watch)(()=>[_.value,v.value],([e,t])=>{if(b)return;if(e===null&&t!==null){v.value=null;return}if(e!==null&&t!==null&&n(t)<n(e)){v.value=null;return}let r=e!==null&&t!==null?[e,t]:null;u(`update:modelValue`,r),u(`update:smartRange`,r),u(`change`,r)},{deep:!0,flush:`sync`});let x=e=>{let t=d();return!!(l.disabledBeforeToday&&e<t||l.disabledAfterToday&&e>t)},S=e=>_.value===null||e<n(_.value)?!0:x(e);return s({clearAll:()=>{b=!0,_.value=null,v.value=null,b=!1,u(`update:modelValue`,null),u(`update:singleDate`,null),u(`update:singleDateTime`,null),u(`update:dateRange`,null),u(`update:dateTimeRange`,null),u(`update:smartRange`,null),u(`change`,null)}}),(n,s)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,r,[o.mode===`date`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:0,"formatted-value":p.value,"onUpdate:formattedValue":s[0]||=e=>p.value=e,type:`date`,placeholder:o.placeholder||`请选择日期`,disabled:o.disabled,"is-date-disabled":x,"value-format":f.value,clearable:``},n.$attrs),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`])):o.mode===`datetime`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:1,"formatted-value":m.value,"onUpdate:formattedValue":s[1]||=e=>m.value=e,type:`datetime`,placeholder:o.placeholder||`请选择日期时间`,disabled:o.disabled,"is-date-disabled":x,"value-format":f.value,clearable:``},n.$attrs),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`])):o.mode===`daterange`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:2,"formatted-value":h.value,"onUpdate:formattedValue":s[2]||=e=>h.value=e,type:`daterange`,"start-placeholder":o.startPlaceholder||`开始日期`,"end-placeholder":o.endPlaceholder||`结束日期`,disabled:o.disabled,"is-date-disabled":x,"value-format":f.value,clearable:``},n.$attrs),null,16,[`formatted-value`,`start-placeholder`,`end-placeholder`,`disabled`,`value-format`])):o.mode===`datetimerange`?((0,e.openBlock)(),(0,e.createBlock)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({key:3,"formatted-value":g.value,"onUpdate:formattedValue":s[3]||=e=>g.value=e,type:`datetimerange`,"start-placeholder":o.startPlaceholder||`开始日期时间`,"end-placeholder":o.endPlaceholder||`结束日期时间`,disabled:o.disabled,"is-date-disabled":x,"value-format":f.value,clearable:``},n.$attrs),null,16,[`formatted-value`,`start-placeholder`,`end-placeholder`,`disabled`,`value-format`])):o.mode===`smart-range`?((0,e.openBlock)(),(0,e.createElementBlock)(`div`,i,[(0,e.createElementVNode)(`div`,a,[(0,e.createVNode)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({class:`flex-1`,"formatted-value":_.value,"onUpdate:formattedValue":s[4]||=e=>_.value=e,type:`date`,placeholder:o.startPlaceholder||`请选择开始日期`,disabled:o.disabled,"is-date-disabled":x,"value-format":f.value,clearable:``},o.startDateProps),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`]),(0,e.createVNode)((0,e.unref)(t.NDatePicker),(0,e.mergeProps)({class:`flex-1`,"formatted-value":v.value,"onUpdate:formattedValue":s[5]||=e=>v.value=e,type:`date`,placeholder:o.endPlaceholder||`请选择结束日期`,disabled:y.value,"is-date-disabled":S,"value-format":f.value,clearable:``},o.endDateProps),null,16,[`formatted-value`,`placeholder`,`disabled`,`value-format`])])])):(0,e.createCommentVNode)(`v-if`,!0)]))}});Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return o}});
|