优化定时任务日志

This commit is contained in:
zjl 2024-09-25 09:45:28 +08:00
parent 7d3d66c952
commit 87c2aecae9
13 changed files with 201 additions and 84 deletions

View File

@ -12,7 +12,7 @@ VITE_DROP_CONSOLE = true
# 跨域代理,可以配置多个,请注意不要换行
#VITE_PROXY = [["/appApi","http://localhost:8001"],["/upload","http://localhost:8001/upload"]]
VITE_PROXY=[["/api","http://192.168.124.203:8081/api"]]
VITE_PROXY=[["/api","http://192.168.124.32:8081/api"]]
# API 接口地址
VITE_GLOB_API_URL =

View File

@ -3,7 +3,7 @@
v-model="props.visible"
title="消息详情"
width="700"
width="750"
:close-on-click-modal="false"
:before-close="dialogClose"
>

View File

@ -3,7 +3,7 @@
v-model="props.visible"
title="消息详情"
width="700"
width="750"
:close-on-click-modal="false"
:before-close="dialogClose"
>

View File

@ -3,7 +3,7 @@
v-model="props.visible"
title="邮件日志详情"
width="700"
width="750"
:close-on-click-modal="false"
:before-close="dialogClose"
>

View File

@ -3,7 +3,7 @@
v-model="props.visible"
title="文件日志详情"
width="700"
width="750"
:close-on-click-modal="false"
:before-close="dialogClose"
>

View File

@ -3,7 +3,7 @@
v-model="props.visible"
title="短信日志详情"
width="700"
width="750"
:close-on-click-modal="false"
:before-close="dialogClose"
>

View File

@ -20,10 +20,17 @@ export const columns = [
{
label: '任务触发器',
prop: 'jobTrigger',
width: 150,
},
{
label: '任务信息',
label: '任务日志信息',
prop: 'jobMessage',
width: 150,
},
{
label: '执行表达式',
prop: 'cronExpression',
width: 150,
},
{
label: '执行状态',
@ -50,7 +57,22 @@ export const columns = [
},
},
{
label: '执行时间',
label: '任务开始时间',
prop: 'startTime',
width: 180,
},
{
label: '任务结束时间',
prop: 'endTime',
width: 180,
},
{
label: '任务执行时间',
prop: 'createTime',
width: 180,
},
{
label: '任务执行耗时',
prop: 'consumeTime',
},
];

View File

@ -1,44 +1,59 @@
<template>
<el-dialog
v-model="props.visible"
title="日志详情"
width="700"
title="执行日志详情"
width="750"
:close-on-click-modal="false"
:before-close="dialogClose"
>
<el-descriptions column="2">
<el-descriptions-item label="任务名称:">{{formData.jobName}}</el-descriptions-item>
<el-descriptions-item label="任务组名:">{{formData.jobGroup}}</el-descriptions-item>
<el-descriptions-item label="任务触发器:">{{formData.jobTrigger}}</el-descriptions-item>
<el-descriptions-item label="任务信息:">{{formData.jobMessage}}</el-descriptions-item>
<el-descriptions-item label="cron执行表达式:">{{formData.cronExpression}}</el-descriptions-item>
<el-descriptions-item label="任务开始时间:">{{formData.startTime}}</el-descriptions-item>
<el-descriptions-item label="任务结束时间:">{{formData.endTime}}</el-descriptions-item>
<el-descriptions class="margin-top" :column="2" border>
<el-descriptions-item label="任务名称" label-class-name="des-width">
{{formData.jobName}}
</el-descriptions-item>
<el-descriptions-item label="任务组名" label-class-name="des-width">
{{formData.jobGroup}}
</el-descriptions-item>
<el-descriptions-item label="任务触发器">
{{formData.jobTrigger}}
</el-descriptions-item>
<el-descriptions-item label="任务日志信息">
{{formData.jobMessage}}
</el-descriptions-item>
<el-descriptions-item label="执行表达式">
{{formData.cronExpression}}
</el-descriptions-item>
<el-descriptions-item label="执行状态">
<el-tag :type="formData.status?'danger':'success'">{{formData.status?'异常':'正常'}}</el-tag>
</el-descriptions-item>
<el-descriptions-item label="任务开始时间">
{{formData.startTime}}
</el-descriptions-item>
<el-descriptions-item label="任务结束时间">
{{formData.endTime}}
</el-descriptions-item>
<el-descriptions-item label="执行时间">
{{formData.createTime}}
</el-descriptions-item>
<el-descriptions-item label="执行耗时">
{{formData.consumeTime}}s
</el-descriptions-item>
<el-descriptions-item label="执行异常信息" :span="3">
{{formData.exceptionInfo}}
</el-descriptions-item>
</el-descriptions>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogClose">关闭</el-button>
<el-button @click="dialogClose">取消</el-button>
</span>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import {getJobLogDetail} from "@/api/monitor/job";
import {onMounted, reactive, shallowRef} from "vue";
import {onMounted, ref,} from "vue";
const formData = reactive({
id: "",
jobName: "",
jobGroup:'',
jobTrigger:'',
jobMessage:'',
cronExpression:'',
startTime:'',
endTime:''
});
const emit = defineEmits(["update:visible"]);
const emit = defineEmits(["success", "update:visible"]);
const formData = ref({});
const props = defineProps({
visible: {
@ -60,53 +75,8 @@ const dialogClose = () => {
const setFormData = async () => {
const data = await getJobLogDetail(props.logId);
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key];
}
}
formData.value = data
};
const getReviceType =(type)=>{
let typeText = ''
switch (type) {
case 1:
typeText='系统用户'
break;
case 2:
typeText='会员用户'
break;
case 3:
typeText='其他'
break;
default:
break
}
return typeText
}
const getTyepText =(type)=>{
let typeText = ''
switch (type) {
case 1:
typeText='登录'
break;
case 2:
typeText='注册'
break;
case 3:
typeText='找回密码'
break;
case 4:
typeText='业务'
break;
case 5:
typeText='其他'
break;
default:
break
}
return typeText
}
onMounted(() => {
if (props.logId) {
@ -115,3 +85,12 @@ onMounted(() => {
});
</script>
<style lang="scss" scoped>
:deep(.des-width) {
width:120px;
}
:deep(.el-descriptions__body .el-descriptions__table .el-descriptions__cell) {
word-break: break-all;
}
</style>

View File

@ -0,0 +1,116 @@
<template>
<el-dialog
v-model="props.visible"
title="日志详情"
width="750"
:close-on-click-modal="false"
:before-close="dialogClose"
>
<el-descriptions column="2">
<el-descriptions-item label="任务名称:">{{formData.jobName}}</el-descriptions-item>
<el-descriptions-item label="任务组名:">{{formData.jobGroup}}</el-descriptions-item>
<el-descriptions-item label="任务触发器:">{{formData.jobTrigger}}</el-descriptions-item>
<el-descriptions-item label="任务信息:">{{formData.jobMessage}}</el-descriptions-item>
<el-descriptions-item label="cron执行表达式:">{{formData.cronExpression}}</el-descriptions-item>
<el-descriptions-item label="任务开始时间:">{{formData.startTime}}</el-descriptions-item>
<el-descriptions-item label="任务结束时间:">{{formData.endTime}}</el-descriptions-item>
</el-descriptions>
<template #footer>
<span class="dialog-footer">
<el-button @click="dialogClose">关闭</el-button>
</span>
</template>
</el-dialog>
</template>
<script lang="ts" setup>
import {getJobLogDetail} from "@/api/monitor/job";
import {onMounted, reactive, shallowRef} from "vue";
const formData = reactive({
id: "",
jobName: "",
jobGroup:'',
jobTrigger:'',
jobMessage:'',
cronExpression:'',
startTime:'',
endTime:''
});
const emit = defineEmits(["update:visible"]);
const props = defineProps({
visible: {
type: Boolean,
required: true,
default: false
},
logId: {
type: Number,
required: true,
default: 0
}
});
const dialogClose = () => {
emit("update:visible", false);
};
const setFormData = async () => {
const data = await getJobLogDetail(props.logId);
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key];
}
}
};
const getReviceType =(type)=>{
let typeText = ''
switch (type) {
case 1:
typeText='系统用户'
break;
case 2:
typeText='会员用户'
break;
case 3:
typeText='其他'
break;
default:
break
}
return typeText
}
const getTyepText =(type)=>{
let typeText = ''
switch (type) {
case 1:
typeText='登录'
break;
case 2:
typeText='注册'
break;
case 3:
typeText='找回密码'
break;
case 4:
typeText='业务'
break;
case 5:
typeText='其他'
break;
default:
break
}
return typeText
}
onMounted(() => {
if (props.logId) {
setFormData();
}
});
</script>

View File

@ -75,7 +75,7 @@ const selectionData = ref([])
status:''
});
const actionColumn = reactive({
width: 250,
width: 200,
label: '操作',
prop: 'action',
fixed: 'right',

View File

@ -2,7 +2,7 @@
<el-dialog
v-model="props.visible"
title="登录日志详情"
width="700"
width="750"
:close-on-click-modal="false"
:before-close="dialogClose"
>

View File

@ -2,7 +2,7 @@
<el-dialog
v-model="props.visible"
title="操作日志详情"
width="700"
width="750"
:close-on-click-modal="false"
:before-close="dialogClose"
>

View File

@ -1,5 +1,5 @@
<template>
<el-dialog v-model="props.visible" :title="props.userId ? '编辑' : '新增'" width="700" :close-on-click-modal="false"
<el-dialog v-model="props.visible" :title="props.userId ? '编辑' : '新增'" width="750" :close-on-click-modal="false"
:before-close="dialogClose">
<el-form ref="formRef" :model="formData" label-width="84px">
<el-form-item label="头像" prop="avatar" :rules="{ required: true, message: '请输上传头像', trigger: 'blur' }">