🔨 定时执行配置.

This commit is contained in:
lijiahang
2024-04-11 19:14:20 +08:00
parent 484cfb8f80
commit ee7f1042a0
38 changed files with 1436 additions and 79 deletions

View File

@@ -0,0 +1,115 @@
<template>
<a-modal v-model:visible="visible"
title-align="start"
:top="120"
:width="298"
:body-style="{ padding: '16px' }"
:align-center="false"
:mask-closable="true"
:unmount-on-close="true"
:footer="false"
@close="handleClose">
<!-- title -->
<template #title>
<span class="modal-title">
未来 <span class="span-blue times">{{ request?.times }}</span> 次执行时间
</span>
</template>
<a-spin class="full container" :loading="loading">
<!-- cron 表达式 -->
<div class="cron-value span-blue">
{{ request?.expression }}
</div>
<!-- 执行时间 -->
<div v-for="time in next"
:key="time"
class="next-time">
{{ time }}
</div>
</a-spin>
</a-modal>
</template>
<script lang="ts">
export default {
name: 'nextCronModal'
};
</script>
<script lang="ts" setup>
import type { CronNextRequest } from '@/api/meta/expression';
import { ref } from 'vue';
import { getCronNextTime } from '@/api/meta/expression';
import useLoading from '@/hooks/loading';
import useVisible from '@/hooks/visible';
import { Message } from '@arco-design/web-vue';
const { visible, setVisible } = useVisible();
const { loading, setLoading } = useLoading();
const request = ref<CronNextRequest>();
const next = ref<Array<string>>([]);
// 打开
const open = async (record: CronNextRequest) => {
request.value = record;
try {
// 获取执行时间
setLoading(true);
const { data } = await getCronNextTime(request.value);
if (data.valid) {
// 表达式正确
next.value = data.next;
setVisible(true);
} else {
// 表达式错误
setVisible(false);
Message.error('cron 表达式错误');
}
} catch (e) {
} finally {
setLoading(false);
}
};
defineExpose({ open });
// 关闭回调
const handleClose = () => {
handleClear();
};
// 清空
const handleClear = () => {
setLoading(false);
setVisible(false);
};
</script>
<style lang="less" scoped>
.modal-title {
font-size: 14px;
}
.container {
display: flex;
flex-direction: column;
}
.times {
font-weight: 600;
}
.cron-value {
margin-bottom: 8px;
font-weight: 600;
}
.next-time {
margin-bottom: 4px;
color: var(--color-text-2);
}
</style>

View File

@@ -62,7 +62,7 @@
}
suggestions.push({
label: triggerPrefix + s.name,
kind: monaco.languages.CompletionItemKind.Field,
kind: monaco.languages.CompletionItemKind.Variable,
insertText: templatePrefix + s.name + templateSuffix,
detail: s.desc || '',
documentation: s.desc || '',