@cnc_cbz/usefultools-plugin-official 1.0.1
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/README.md +56 -0
- package/dist/base-converter.mjs +333 -0
- package/dist/case-converter.mjs +142 -0
- package/dist/chmod-calculator.mjs +286 -0
- package/dist/color-converter.mjs +211 -0
- package/dist/cron-expression.mjs +487 -0
- package/dist/cyber-chef.mjs +24885 -0
- package/dist/hash-generator.mjs +239 -0
- package/dist/html-entity.mjs +187 -0
- package/dist/image-compressor.mjs +337 -0
- package/dist/ip-subnet.mjs +222 -0
- package/dist/js-runner.mjs +39973 -0
- package/dist/json-diff.mjs +704 -0
- package/dist/json-formatter.mjs +1138 -0
- package/dist/json-yaml.mjs +256 -0
- package/dist/jwt-parser.mjs +405 -0
- package/dist/lorem-ipsum.mjs +246 -0
- package/dist/markdown-preview.mjs +184 -0
- package/dist/password-generator.mjs +254 -0
- package/dist/qr-generator.mjs +238 -0
- package/dist/regex-tester.mjs +424 -0
- package/dist/sql-formatter.mjs +242 -0
- package/dist/text-diff.mjs +940 -0
- package/dist/text-stats.mjs +205 -0
- package/dist/timestamp-converter.mjs +339 -0
- package/dist/translator.mjs +667 -0
- package/dist/url-codec.mjs +179 -0
- package/dist/uuid-generator.mjs +165 -0
- package/package.json +56 -0
- package/plugin.json +31 -0
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
import { defineComponent, ref, computed, openBlock, createElementBlock, createCommentVNode, createElementVNode, withDirectives, vModelText, toDisplayString, Fragment, renderList, normalizeClass, vModelSelect } from "vue";
|
|
2
|
+
const _hoisted_1 = { class: "flex flex-col h-full gap-4 overflow-y-auto pr-1" };
|
|
3
|
+
const _hoisted_2 = { class: "bg-deep-charcoal border-4 border-black rounded-xl p-4 shadow-hard" };
|
|
4
|
+
const _hoisted_3 = { class: "flex gap-2 mb-3" };
|
|
5
|
+
const _hoisted_4 = { class: "grid grid-cols-5 gap-2 mb-3" };
|
|
6
|
+
const _hoisted_5 = { class: "font-mono text-base text-primary bg-bg-dark border-2 border-black rounded px-2 py-1.5" };
|
|
7
|
+
const _hoisted_6 = { class: "text-xs text-gray-500 mt-1" };
|
|
8
|
+
const _hoisted_7 = {
|
|
9
|
+
key: 0,
|
|
10
|
+
class: "flex items-center gap-2 px-3 py-2 bg-neon-green/10 border-2 border-neon-green/40 rounded-lg"
|
|
11
|
+
};
|
|
12
|
+
const _hoisted_8 = { class: "text-sm text-gray-200" };
|
|
13
|
+
const _hoisted_9 = { class: "material-icons text-sm" };
|
|
14
|
+
const _hoisted_10 = {
|
|
15
|
+
key: 1,
|
|
16
|
+
class: "flex items-center gap-2 px-3 py-2 bg-coral-red/15 border-2 border-coral-red/40 rounded-lg"
|
|
17
|
+
};
|
|
18
|
+
const _hoisted_11 = { class: "text-sm text-coral-red flex-1" };
|
|
19
|
+
const _hoisted_12 = { class: "material-icons text-sm" };
|
|
20
|
+
const _hoisted_13 = {
|
|
21
|
+
key: 2,
|
|
22
|
+
class: "grid grid-cols-2 sm:grid-cols-3 gap-x-6 gap-y-1 text-xs text-gray-400 font-mono mt-2 px-1"
|
|
23
|
+
};
|
|
24
|
+
const _hoisted_14 = { class: "flex-1 grid grid-cols-1 lg:grid-cols-2 gap-4 min-h-0" };
|
|
25
|
+
const _hoisted_15 = { class: "flex flex-col gap-3" };
|
|
26
|
+
const _hoisted_16 = { class: "bg-deep-charcoal border-4 border-black rounded-xl p-3 shadow-hard overflow-y-auto h-85" };
|
|
27
|
+
const _hoisted_17 = { class: "grid grid-cols-2 gap-1.5" };
|
|
28
|
+
const _hoisted_18 = ["onClick"];
|
|
29
|
+
const _hoisted_19 = { class: "font-bold" };
|
|
30
|
+
const _hoisted_20 = { class: "font-mono text-xs mt-0.5 opacity-60" };
|
|
31
|
+
const _hoisted_21 = { class: "flex flex-col gap-3" };
|
|
32
|
+
const _hoisted_22 = { class: "flex items-center justify-between h-8" };
|
|
33
|
+
const _hoisted_23 = { class: "flex items-center gap-2" };
|
|
34
|
+
const _hoisted_24 = { class: "text-sm font-bold text-gray-400 uppercase tracking-wider" };
|
|
35
|
+
const _hoisted_25 = { class: "bg-deep-charcoal border-4 border-black rounded-xl p-3 shadow-hard overflow-y-auto h-85" };
|
|
36
|
+
const _hoisted_26 = {
|
|
37
|
+
key: 0,
|
|
38
|
+
class: "space-y-0.5"
|
|
39
|
+
};
|
|
40
|
+
const _hoisted_27 = ["onClick"];
|
|
41
|
+
const _hoisted_28 = { class: "text-xs text-gray-600 w-5 text-right shrink-0" };
|
|
42
|
+
const _hoisted_29 = { class: "font-mono text-sm text-gray-200 flex-1" };
|
|
43
|
+
const _hoisted_30 = {
|
|
44
|
+
key: 1,
|
|
45
|
+
class: "text-gray-500 text-sm text-center py-8"
|
|
46
|
+
};
|
|
47
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
48
|
+
__name: "index",
|
|
49
|
+
setup(__props) {
|
|
50
|
+
const cronInput = ref("0 */5 * * *");
|
|
51
|
+
const copyField = ref("");
|
|
52
|
+
const nextCount = ref(10);
|
|
53
|
+
const showHelp = ref(false);
|
|
54
|
+
const NAMES = ["分钟", "小时", "日", "月", "星期"];
|
|
55
|
+
const RANGES = [[0, 59], [0, 23], [1, 31], [1, 12], [0, 6]];
|
|
56
|
+
const WK = ["日", "一", "二", "三", "四", "五", "六"];
|
|
57
|
+
const MO = ["", "1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"];
|
|
58
|
+
const presets = [
|
|
59
|
+
{ label: "每分钟", v: "* * * * *" },
|
|
60
|
+
{ label: "每5分钟", v: "*/5 * * * *" },
|
|
61
|
+
{ label: "每小时", v: "0 * * * *" },
|
|
62
|
+
{ label: "每天零点", v: "0 0 * * *" },
|
|
63
|
+
{ label: "每天8点", v: "0 8 * * *" },
|
|
64
|
+
{ label: "每周一9点", v: "0 9 * * 1" },
|
|
65
|
+
{ label: "每月1号零点", v: "0 0 1 * *" },
|
|
66
|
+
{ label: "工作日9点", v: "0 9 * * 1-5" },
|
|
67
|
+
{ label: "每30分钟", v: "*/30 * * * *" },
|
|
68
|
+
{ label: "每天12和18点", v: "0 12,18 * * *" }
|
|
69
|
+
];
|
|
70
|
+
function pf(f, min, max) {
|
|
71
|
+
const vs = /* @__PURE__ */ new Set();
|
|
72
|
+
for (const p of f.split(",")) {
|
|
73
|
+
const sm = p.match(/^(.+)\/(\d+)$/);
|
|
74
|
+
let rng, step = 1;
|
|
75
|
+
if (sm) {
|
|
76
|
+
rng = sm[1];
|
|
77
|
+
step = +sm[2];
|
|
78
|
+
if (step <= 0) return null;
|
|
79
|
+
} else rng = p;
|
|
80
|
+
if (rng === "*") {
|
|
81
|
+
for (let i = min; i <= max; i += step) vs.add(i);
|
|
82
|
+
} else if (rng.includes("-")) {
|
|
83
|
+
const [a, b] = rng.split("-").map(Number);
|
|
84
|
+
if (isNaN(a) || isNaN(b) || a < min || b > max || a > b) return null;
|
|
85
|
+
for (let i = a; i <= b; i += step) vs.add(i);
|
|
86
|
+
} else {
|
|
87
|
+
const n = +rng;
|
|
88
|
+
if (isNaN(n) || n < min || n > max) return null;
|
|
89
|
+
if (sm) {
|
|
90
|
+
for (let i = n; i <= max; i += step) vs.add(i);
|
|
91
|
+
} else vs.add(n);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
return vs.size ? [...vs].sort((a, b) => a - b) : null;
|
|
95
|
+
}
|
|
96
|
+
const parsed = computed(() => {
|
|
97
|
+
const ps = cronInput.value.trim().split(/\s+/);
|
|
98
|
+
if (ps.length !== 5) return { ok: false, error: `需要5个字段,当前${ps.length}个` };
|
|
99
|
+
const r = [];
|
|
100
|
+
for (let i = 0; i < 5; i++) {
|
|
101
|
+
const v = pf(ps[i], RANGES[i][0], RANGES[i][1]);
|
|
102
|
+
if (!v) return { ok: false, error: `${NAMES[i]}字段 "${ps[i]}" 无效` };
|
|
103
|
+
r.push(v);
|
|
104
|
+
}
|
|
105
|
+
return { ok: true, d: { mi: r[0], hr: r[1], dy: r[2], mo: r[3], wd: r[4] } };
|
|
106
|
+
});
|
|
107
|
+
const desc = computed(() => {
|
|
108
|
+
if (!parsed.value.ok) return "";
|
|
109
|
+
const { mi, hr, dy, mo, wd } = parsed.value.d;
|
|
110
|
+
const p = [];
|
|
111
|
+
if (wd.length < 7) p.push("每周" + wd.map((w) => WK[w]).join("、"));
|
|
112
|
+
if (mo.length < 12) p.push(mo.map((m) => MO[m]).join("、"));
|
|
113
|
+
if (dy.length < 31) p.push(dy.map((d) => `${d}号`).join("、"));
|
|
114
|
+
if (hr.length === 24 && mi.length === 60) return "每分钟执行";
|
|
115
|
+
if (hr.length === 24) p.push("每小时的第 " + mi.join("、") + " 分钟");
|
|
116
|
+
else if (mi.length === 1 && mi[0] === 0) p.push(hr.map((h) => `${h}点`).join("、") + "整");
|
|
117
|
+
else p.push(hr.map((h) => `${h}点`).join("、") + " " + mi.map((m) => `${m}分`).join("、"));
|
|
118
|
+
return (p.length ? p.join(" ") : "每分钟") + "执行";
|
|
119
|
+
});
|
|
120
|
+
const nextRuns = computed(() => {
|
|
121
|
+
if (!parsed.value.ok) return [];
|
|
122
|
+
const { mi, hr, dy, mo, wd } = parsed.value.d;
|
|
123
|
+
const ms = new Set(mi), hs = new Set(hr), ds = new Set(dy), mos = new Set(mo), ws = new Set(wd);
|
|
124
|
+
const res = [], now = /* @__PURE__ */ new Date(), pad = (n) => String(n).padStart(2, "0");
|
|
125
|
+
const c = new Date(now.getFullYear(), now.getMonth(), now.getDate(), now.getHours(), now.getMinutes() + 1, 0, 0);
|
|
126
|
+
const lim = new Date(now.getTime() + 366 * 864e5);
|
|
127
|
+
while (c < lim && res.length < nextCount.value) {
|
|
128
|
+
if (mos.has(c.getMonth() + 1) && ds.has(c.getDate()) && ws.has(c.getDay()) && hs.has(c.getHours()) && ms.has(c.getMinutes()))
|
|
129
|
+
res.push(`${c.getFullYear()}-${pad(c.getMonth() + 1)}-${pad(c.getDate())} ${pad(c.getHours())}:${pad(c.getMinutes())} 周${WK[c.getDay()]}`);
|
|
130
|
+
c.setMinutes(c.getMinutes() + 1);
|
|
131
|
+
}
|
|
132
|
+
return res;
|
|
133
|
+
});
|
|
134
|
+
const fields = computed(() => {
|
|
135
|
+
const ps = cronInput.value.trim().split(/\s+/);
|
|
136
|
+
return NAMES.map((n, i) => ({ name: n, value: ps[i] || "-" }));
|
|
137
|
+
});
|
|
138
|
+
async function cp(text, f) {
|
|
139
|
+
await navigator.clipboard.writeText(text);
|
|
140
|
+
copyField.value = f;
|
|
141
|
+
setTimeout(() => {
|
|
142
|
+
copyField.value = "";
|
|
143
|
+
}, 1200);
|
|
144
|
+
}
|
|
145
|
+
return (_ctx, _cache) => {
|
|
146
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
147
|
+
createCommentVNode(" 输入区 "),
|
|
148
|
+
createElementVNode("div", _hoisted_2, [
|
|
149
|
+
_cache[10] || (_cache[10] = createElementVNode(
|
|
150
|
+
"div",
|
|
151
|
+
{ class: "flex items-center gap-2 mb-3" },
|
|
152
|
+
[
|
|
153
|
+
createElementVNode("span", { class: "material-icons text-primary text-lg" }, "timer"),
|
|
154
|
+
createElementVNode("span", { class: "text-sm font-bold text-gray-400 uppercase tracking-wider" }, "Cron 表达式")
|
|
155
|
+
],
|
|
156
|
+
-1
|
|
157
|
+
/* CACHED */
|
|
158
|
+
)),
|
|
159
|
+
createElementVNode("div", _hoisted_3, [
|
|
160
|
+
withDirectives(createElementVNode(
|
|
161
|
+
"input",
|
|
162
|
+
{
|
|
163
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => cronInput.value = $event),
|
|
164
|
+
spellcheck: "false",
|
|
165
|
+
placeholder: "如 */5 * * * *",
|
|
166
|
+
class: "flex-1 h-12 bg-bg-dark text-gray-100 border-4 border-black rounded-lg px-4 font-mono text-lg shadow-hard focus:border-primary focus:shadow-none focus:translate-x-1 focus:translate-y-1 transition-all outline-none placeholder-gray-600"
|
|
167
|
+
},
|
|
168
|
+
null,
|
|
169
|
+
512
|
|
170
|
+
/* NEED_PATCH */
|
|
171
|
+
), [
|
|
172
|
+
[vModelText, cronInput.value]
|
|
173
|
+
]),
|
|
174
|
+
createElementVNode(
|
|
175
|
+
"button",
|
|
176
|
+
{
|
|
177
|
+
onClick: _cache[1] || (_cache[1] = ($event) => cp(cronInput.value, "cron")),
|
|
178
|
+
class: "h-12 px-4 bg-primary text-black font-bold border-2 border-black rounded shadow-hard-sm hover:shadow-none hover:translate-x-0.5 hover:translate-y-0.5 transition-all text-sm whitespace-nowrap"
|
|
179
|
+
},
|
|
180
|
+
toDisplayString(copyField.value === "cron" ? "✓ 已复制" : "复制"),
|
|
181
|
+
1
|
|
182
|
+
/* TEXT */
|
|
183
|
+
)
|
|
184
|
+
]),
|
|
185
|
+
createElementVNode("div", _hoisted_4, [
|
|
186
|
+
(openBlock(true), createElementBlock(
|
|
187
|
+
Fragment,
|
|
188
|
+
null,
|
|
189
|
+
renderList(fields.value, (f) => {
|
|
190
|
+
return openBlock(), createElementBlock("div", {
|
|
191
|
+
key: f.name,
|
|
192
|
+
class: "text-center"
|
|
193
|
+
}, [
|
|
194
|
+
createElementVNode(
|
|
195
|
+
"div",
|
|
196
|
+
_hoisted_5,
|
|
197
|
+
toDisplayString(f.value),
|
|
198
|
+
1
|
|
199
|
+
/* TEXT */
|
|
200
|
+
),
|
|
201
|
+
createElementVNode(
|
|
202
|
+
"div",
|
|
203
|
+
_hoisted_6,
|
|
204
|
+
toDisplayString(f.name),
|
|
205
|
+
1
|
|
206
|
+
/* TEXT */
|
|
207
|
+
)
|
|
208
|
+
]);
|
|
209
|
+
}),
|
|
210
|
+
128
|
|
211
|
+
/* KEYED_FRAGMENT */
|
|
212
|
+
))
|
|
213
|
+
]),
|
|
214
|
+
parsed.value.ok ? (openBlock(), createElementBlock("div", _hoisted_7, [
|
|
215
|
+
_cache[6] || (_cache[6] = createElementVNode(
|
|
216
|
+
"span",
|
|
217
|
+
{ class: "material-icons text-neon-green text-base" },
|
|
218
|
+
"check_circle",
|
|
219
|
+
-1
|
|
220
|
+
/* CACHED */
|
|
221
|
+
)),
|
|
222
|
+
createElementVNode(
|
|
223
|
+
"span",
|
|
224
|
+
_hoisted_8,
|
|
225
|
+
toDisplayString(desc.value),
|
|
226
|
+
1
|
|
227
|
+
/* TEXT */
|
|
228
|
+
),
|
|
229
|
+
createElementVNode("button", {
|
|
230
|
+
onClick: _cache[2] || (_cache[2] = ($event) => showHelp.value = !showHelp.value),
|
|
231
|
+
class: "ml-auto text-gray-500 hover:text-primary transition-colors flex items-center gap-1"
|
|
232
|
+
}, [
|
|
233
|
+
createElementVNode(
|
|
234
|
+
"span",
|
|
235
|
+
_hoisted_9,
|
|
236
|
+
toDisplayString(showHelp.value ? "expand_less" : "help_outline"),
|
|
237
|
+
1
|
|
238
|
+
/* TEXT */
|
|
239
|
+
),
|
|
240
|
+
_cache[5] || (_cache[5] = createElementVNode(
|
|
241
|
+
"span",
|
|
242
|
+
{ class: "text-xs" },
|
|
243
|
+
"语法",
|
|
244
|
+
-1
|
|
245
|
+
/* CACHED */
|
|
246
|
+
))
|
|
247
|
+
])
|
|
248
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_10, [
|
|
249
|
+
_cache[8] || (_cache[8] = createElementVNode(
|
|
250
|
+
"span",
|
|
251
|
+
{ class: "material-icons text-coral-red text-base" },
|
|
252
|
+
"error_outline",
|
|
253
|
+
-1
|
|
254
|
+
/* CACHED */
|
|
255
|
+
)),
|
|
256
|
+
createElementVNode(
|
|
257
|
+
"span",
|
|
258
|
+
_hoisted_11,
|
|
259
|
+
toDisplayString(parsed.value.error),
|
|
260
|
+
1
|
|
261
|
+
/* TEXT */
|
|
262
|
+
),
|
|
263
|
+
createElementVNode("button", {
|
|
264
|
+
onClick: _cache[3] || (_cache[3] = ($event) => showHelp.value = !showHelp.value),
|
|
265
|
+
class: "text-gray-500 hover:text-primary transition-colors flex items-center gap-1"
|
|
266
|
+
}, [
|
|
267
|
+
createElementVNode(
|
|
268
|
+
"span",
|
|
269
|
+
_hoisted_12,
|
|
270
|
+
toDisplayString(showHelp.value ? "expand_less" : "help_outline"),
|
|
271
|
+
1
|
|
272
|
+
/* TEXT */
|
|
273
|
+
),
|
|
274
|
+
_cache[7] || (_cache[7] = createElementVNode(
|
|
275
|
+
"span",
|
|
276
|
+
{ class: "text-xs" },
|
|
277
|
+
"语法",
|
|
278
|
+
-1
|
|
279
|
+
/* CACHED */
|
|
280
|
+
))
|
|
281
|
+
])
|
|
282
|
+
])),
|
|
283
|
+
createCommentVNode(" 语法参考(折叠) "),
|
|
284
|
+
showHelp.value ? (openBlock(), createElementBlock("div", _hoisted_13, [..._cache[9] || (_cache[9] = [
|
|
285
|
+
createElementVNode(
|
|
286
|
+
"span",
|
|
287
|
+
null,
|
|
288
|
+
"* 任意值",
|
|
289
|
+
-1
|
|
290
|
+
/* CACHED */
|
|
291
|
+
),
|
|
292
|
+
createElementVNode(
|
|
293
|
+
"span",
|
|
294
|
+
null,
|
|
295
|
+
"5 固定值",
|
|
296
|
+
-1
|
|
297
|
+
/* CACHED */
|
|
298
|
+
),
|
|
299
|
+
createElementVNode(
|
|
300
|
+
"span",
|
|
301
|
+
null,
|
|
302
|
+
"1-5 范围",
|
|
303
|
+
-1
|
|
304
|
+
/* CACHED */
|
|
305
|
+
),
|
|
306
|
+
createElementVNode(
|
|
307
|
+
"span",
|
|
308
|
+
null,
|
|
309
|
+
"*/5 每隔N",
|
|
310
|
+
-1
|
|
311
|
+
/* CACHED */
|
|
312
|
+
),
|
|
313
|
+
createElementVNode(
|
|
314
|
+
"span",
|
|
315
|
+
null,
|
|
316
|
+
"1,3,5 列表",
|
|
317
|
+
-1
|
|
318
|
+
/* CACHED */
|
|
319
|
+
),
|
|
320
|
+
createElementVNode(
|
|
321
|
+
"span",
|
|
322
|
+
null,
|
|
323
|
+
"1-5/2 范围步进",
|
|
324
|
+
-1
|
|
325
|
+
/* CACHED */
|
|
326
|
+
)
|
|
327
|
+
])])) : createCommentVNode("v-if", true)
|
|
328
|
+
]),
|
|
329
|
+
createElementVNode("div", _hoisted_14, [
|
|
330
|
+
createCommentVNode(" 常用预设 "),
|
|
331
|
+
createElementVNode("div", _hoisted_15, [
|
|
332
|
+
_cache[11] || (_cache[11] = createElementVNode(
|
|
333
|
+
"div",
|
|
334
|
+
{ class: "flex items-center justify-between h-8" },
|
|
335
|
+
[
|
|
336
|
+
createElementVNode("div", { class: "flex items-center gap-2" }, [
|
|
337
|
+
createElementVNode("span", { class: "material-icons text-electric-blue text-lg" }, "bookmarks"),
|
|
338
|
+
createElementVNode("span", { class: "text-sm font-bold text-gray-400 uppercase tracking-wider" }, "常用预设")
|
|
339
|
+
])
|
|
340
|
+
],
|
|
341
|
+
-1
|
|
342
|
+
/* CACHED */
|
|
343
|
+
)),
|
|
344
|
+
createElementVNode("div", _hoisted_16, [
|
|
345
|
+
createElementVNode("div", _hoisted_17, [
|
|
346
|
+
(openBlock(), createElementBlock(
|
|
347
|
+
Fragment,
|
|
348
|
+
null,
|
|
349
|
+
renderList(presets, (p) => {
|
|
350
|
+
return createElementVNode("button", {
|
|
351
|
+
key: p.v,
|
|
352
|
+
onClick: ($event) => cronInput.value = p.v,
|
|
353
|
+
class: normalizeClass(["text-left px-2.5 py-1.5 rounded-lg border-2 transition-all text-sm", cronInput.value === p.v ? "border-primary bg-primary/15 text-primary" : "border-black bg-bg-dark text-gray-300 hover:border-gray-600"])
|
|
354
|
+
}, [
|
|
355
|
+
createElementVNode(
|
|
356
|
+
"div",
|
|
357
|
+
_hoisted_19,
|
|
358
|
+
toDisplayString(p.label),
|
|
359
|
+
1
|
|
360
|
+
/* TEXT */
|
|
361
|
+
),
|
|
362
|
+
createElementVNode(
|
|
363
|
+
"div",
|
|
364
|
+
_hoisted_20,
|
|
365
|
+
toDisplayString(p.v),
|
|
366
|
+
1
|
|
367
|
+
/* TEXT */
|
|
368
|
+
)
|
|
369
|
+
], 10, _hoisted_18);
|
|
370
|
+
}),
|
|
371
|
+
64
|
|
372
|
+
/* STABLE_FRAGMENT */
|
|
373
|
+
))
|
|
374
|
+
])
|
|
375
|
+
])
|
|
376
|
+
]),
|
|
377
|
+
createCommentVNode(" 下次执行时间 "),
|
|
378
|
+
createElementVNode("div", _hoisted_21, [
|
|
379
|
+
createElementVNode("div", _hoisted_22, [
|
|
380
|
+
createElementVNode("div", _hoisted_23, [
|
|
381
|
+
_cache[12] || (_cache[12] = createElementVNode(
|
|
382
|
+
"span",
|
|
383
|
+
{ class: "material-icons text-vibrant-purple text-lg" },
|
|
384
|
+
"event_upcoming",
|
|
385
|
+
-1
|
|
386
|
+
/* CACHED */
|
|
387
|
+
)),
|
|
388
|
+
createElementVNode(
|
|
389
|
+
"span",
|
|
390
|
+
_hoisted_24,
|
|
391
|
+
"接下来 " + toDisplayString(nextCount.value) + " 次执行",
|
|
392
|
+
1
|
|
393
|
+
/* TEXT */
|
|
394
|
+
)
|
|
395
|
+
]),
|
|
396
|
+
withDirectives(createElementVNode(
|
|
397
|
+
"select",
|
|
398
|
+
{
|
|
399
|
+
"onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => nextCount.value = $event),
|
|
400
|
+
class: "bg-bg-dark text-gray-300 border-2 border-black rounded px-2 py-1 text-xs outline-none focus:border-primary"
|
|
401
|
+
},
|
|
402
|
+
[..._cache[13] || (_cache[13] = [
|
|
403
|
+
createElementVNode(
|
|
404
|
+
"option",
|
|
405
|
+
{ value: 5 },
|
|
406
|
+
"5次",
|
|
407
|
+
-1
|
|
408
|
+
/* CACHED */
|
|
409
|
+
),
|
|
410
|
+
createElementVNode(
|
|
411
|
+
"option",
|
|
412
|
+
{ value: 10 },
|
|
413
|
+
"10次",
|
|
414
|
+
-1
|
|
415
|
+
/* CACHED */
|
|
416
|
+
),
|
|
417
|
+
createElementVNode(
|
|
418
|
+
"option",
|
|
419
|
+
{ value: 20 },
|
|
420
|
+
"20次",
|
|
421
|
+
-1
|
|
422
|
+
/* CACHED */
|
|
423
|
+
),
|
|
424
|
+
createElementVNode(
|
|
425
|
+
"option",
|
|
426
|
+
{ value: 50 },
|
|
427
|
+
"50次",
|
|
428
|
+
-1
|
|
429
|
+
/* CACHED */
|
|
430
|
+
)
|
|
431
|
+
])],
|
|
432
|
+
512
|
|
433
|
+
/* NEED_PATCH */
|
|
434
|
+
), [
|
|
435
|
+
[vModelSelect, nextCount.value]
|
|
436
|
+
])
|
|
437
|
+
]),
|
|
438
|
+
createElementVNode("div", _hoisted_25, [
|
|
439
|
+
nextRuns.value.length ? (openBlock(), createElementBlock("div", _hoisted_26, [
|
|
440
|
+
(openBlock(true), createElementBlock(
|
|
441
|
+
Fragment,
|
|
442
|
+
null,
|
|
443
|
+
renderList(nextRuns.value, (run, i) => {
|
|
444
|
+
return openBlock(), createElementBlock("div", {
|
|
445
|
+
key: i,
|
|
446
|
+
class: "flex items-center gap-3 py-1.5 px-2 rounded hover:bg-white/5 cursor-pointer group",
|
|
447
|
+
onClick: ($event) => cp(run, "r" + i)
|
|
448
|
+
}, [
|
|
449
|
+
createElementVNode(
|
|
450
|
+
"span",
|
|
451
|
+
_hoisted_28,
|
|
452
|
+
toDisplayString(i + 1),
|
|
453
|
+
1
|
|
454
|
+
/* TEXT */
|
|
455
|
+
),
|
|
456
|
+
createElementVNode(
|
|
457
|
+
"span",
|
|
458
|
+
_hoisted_29,
|
|
459
|
+
toDisplayString(run),
|
|
460
|
+
1
|
|
461
|
+
/* TEXT */
|
|
462
|
+
),
|
|
463
|
+
createElementVNode(
|
|
464
|
+
"span",
|
|
465
|
+
{
|
|
466
|
+
class: normalizeClass(["material-icons text-sm opacity-0 group-hover:opacity-100 transition-opacity", copyField.value === "r" + i ? "text-neon-green" : "text-gray-500"])
|
|
467
|
+
},
|
|
468
|
+
toDisplayString(copyField.value === "r" + i ? "check" : "content_copy"),
|
|
469
|
+
3
|
|
470
|
+
/* TEXT, CLASS */
|
|
471
|
+
)
|
|
472
|
+
], 8, _hoisted_27);
|
|
473
|
+
}),
|
|
474
|
+
128
|
|
475
|
+
/* KEYED_FRAGMENT */
|
|
476
|
+
))
|
|
477
|
+
])) : (openBlock(), createElementBlock("div", _hoisted_30, "请输入有效的 Cron 表达式"))
|
|
478
|
+
])
|
|
479
|
+
])
|
|
480
|
+
])
|
|
481
|
+
]);
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
});
|
|
485
|
+
export {
|
|
486
|
+
_sfc_main as default
|
|
487
|
+
};
|