From 243812032b09c42f3d2425ab6640d0606e12a77e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E8=9A=82=E8=9A=81=E4=BA=91?= Date: Tue, 20 Oct 2026 19:46:12 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E5=85=A5=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ui/.env | 11 + ui/components.d.ts | 119 ++++++++++ ui/src/layout/components/Main/index.ts | 3 + ui/src/layout/components/Main/index.vue | 30 +++ ui/src/views/monitor/job/log/columns.ts | 85 +++++++ ui/src/views/monitor/job/log/edit.vue | 116 +++++++++ ui/src/views/monitor/job/log/index.vue | 236 +++++++++++++++++++ ui/src/views/monitor/job/log/querySchemas.ts | 30 +++ 8 files changed, 630 insertions(+) create mode 100644 ui/.env create mode 100644 ui/components.d.ts create mode 100644 ui/src/layout/components/Main/index.ts create mode 100644 ui/src/layout/components/Main/index.vue create mode 100644 ui/src/views/monitor/job/log/columns.ts create mode 100644 ui/src/views/monitor/job/log/edit.vue create mode 100644 ui/src/views/monitor/job/log/index.vue create mode 100644 ui/src/views/monitor/job/log/querySchemas.ts diff --git a/ui/.env b/ui/.env new file mode 100644 index 0000000..d1ff296 --- /dev/null +++ b/ui/.env @@ -0,0 +1,11 @@ +# port +VITE_PORT = 8001 + +# spa-title +VITE_GLOB_APP_TITLE = GoFrame+NaiveUI版 + +# spa shortname +VITE_GLOB_APP_SHORT_NAME = EasyGoAdmin + +# 生产环境 开启mock +VITE_GLOB_PROD_MOCK = true diff --git a/ui/components.d.ts b/ui/components.d.ts new file mode 100644 index 0000000..eaa6983 --- /dev/null +++ b/ui/components.d.ts @@ -0,0 +1,119 @@ +/* eslint-disable */ +/* prettier-ignore */ +// @ts-nocheck +// Generated by unplugin-vue-components +// Read more: https://github.com/vuejs/core/pull/3399 +export {} + +declare module 'vue' { + export interface GlobalComponents { + Application: typeof import('./src/components/Application/Application.vue')['default'] + AppSearch: typeof import('./src/components/Application/search/AppSearch.vue')['default'] + Authority: typeof import('./src/components/Authority/src/Authority.vue')['default'] + BasicForm: typeof import('./src/components/Form/src/BasicForm.vue')['default'] + BasicModal: typeof import('./src/components/Modal/src/basicModal.vue')['default'] + BasicSelect: typeof import('./src/components/Select/src/BasicSelect.vue')['default'] + BasicUpload: typeof import('./src/components/Upload/src/BasicUpload.vue')['default'] + ChinaArea: typeof import('./src/components/ChinaArea/index.vue')['default'] + ColumnSetting: typeof import('./src/components/Table/src/components/settings/ColumnSetting.vue')['default'] + CountTo: typeof import('./src/components/CountTo/CountTo.vue')['default'] + Cropper: typeof import('./src/components/Cropper/src/Cropper.vue')['default'] + CropperImage: typeof import('./src/components/Cropper/src/CropperImage.vue')['default'] + CropperModal: typeof import('./src/components/Cropper/src/CropperModal.vue')['default'] + EditableCell: typeof import('./src/components/Table/src/components/editable/EditableCell.vue')['default'] + File: typeof import('./src/components/Upload/file.vue')['default'] + Image: typeof import('./src/components/Upload/Image.vue')['default'] + ImagePreview: typeof import('./src/components/Upload/src/ImagePreview.vue')['default'] + Images: typeof import('./src/components/Upload/Images.vue')['default'] + ImageUpload: typeof import('./src/components/Upload/src/ImageUpload.vue')['default'] + ImportExcel: typeof import('./src/components/Excel/src/ImportExcel.vue')['default'] + ImportFile: typeof import('./src/components/importFile/index.vue')['default'] + Intensity: typeof import('./src/components/Password/src/components/Intensity.vue')['default'] + Loading: typeof import('./src/components/Loading/src/Loading.vue')['default'] + Lockscreen: typeof import('./src/components/Lockscreen/Lockscreen.vue')['default'] + NAlert: typeof import('naive-ui')['NAlert'] + NAutoComplete: typeof import('naive-ui')['NAutoComplete'] + NAvatar: typeof import('naive-ui')['NAvatar'] + NBackTop: typeof import('naive-ui')['NBackTop'] + NBadge: typeof import('naive-ui')['NBadge'] + NBreadcrumb: typeof import('naive-ui')['NBreadcrumb'] + NBreadcrumbItem: typeof import('naive-ui')['NBreadcrumbItem'] + NButton: typeof import('naive-ui')['NButton'] + NCard: typeof import('naive-ui')['NCard'] + NCascader: typeof import('naive-ui')['NCascader'] + NCheckbox: typeof import('naive-ui')['NCheckbox'] + NCheckboxGroup: typeof import('naive-ui')['NCheckboxGroup'] + NCode: typeof import('naive-ui')['NCode'] + NCol: typeof import('naive-ui')['NCol'] + NConfigProvider: typeof import('naive-ui')['NConfigProvider'] + NDataTable: typeof import('naive-ui')['NDataTable'] + NDatePicker: typeof import('naive-ui')['NDatePicker'] + NDescriptions: typeof import('naive-ui')['NDescriptions'] + NDescriptionsItem: typeof import('naive-ui')['NDescriptionsItem'] + NDivider: typeof import('naive-ui')['NDivider'] + NDrawer: typeof import('naive-ui')['NDrawer'] + NDrawerContent: typeof import('naive-ui')['NDrawerContent'] + NDropdown: typeof import('naive-ui')['NDropdown'] + NEl: typeof import('naive-ui')['NEl'] + NEllipsis: typeof import('naive-ui')['NEllipsis'] + NEmpty: typeof import('naive-ui')['NEmpty'] + NForm: typeof import('naive-ui')['NForm'] + NFormItem: typeof import('naive-ui')['NFormItem'] + NGi: typeof import('naive-ui')['NGi'] + NGrid: typeof import('naive-ui')['NGrid'] + NGridItem: typeof import('naive-ui')['NGridItem'] + NIcon: typeof import('naive-ui')['NIcon'] + NImage: typeof import('naive-ui')['NImage'] + NInput: typeof import('naive-ui')['NInput'] + NInputNumber: typeof import('naive-ui')['NInputNumber'] + NLayout: typeof import('naive-ui')['NLayout'] + NLayoutHeader: typeof import('naive-ui')['NLayoutHeader'] + NLayoutSider: typeof import('naive-ui')['NLayoutSider'] + NList: typeof import('naive-ui')['NList'] + NListItem: typeof import('naive-ui')['NListItem'] + NMenu: typeof import('naive-ui')['NMenu'] + NModal: typeof import('naive-ui')['NModal'] + NPagination: typeof import('naive-ui')['NPagination'] + NPopconfirm: typeof import('naive-ui')['NPopconfirm'] + NPopover: typeof import('naive-ui')['NPopover'] + NProgress: typeof import('naive-ui')['NProgress'] + NRadio: typeof import('naive-ui')['NRadio'] + NRadioGroup: typeof import('naive-ui')['NRadioGroup'] + NRow: typeof import('naive-ui')['NRow'] + NScrollbar: typeof import('naive-ui')['NScrollbar'] + NSelect: typeof import('naive-ui')['NSelect'] + NSkeleton: typeof import('naive-ui')['NSkeleton'] + NSpace: typeof import('naive-ui')['NSpace'] + NSpin: typeof import('naive-ui')['NSpin'] + NSwitch: typeof import('naive-ui')['NSwitch'] + NTabPane: typeof import('naive-ui')['NTabPane'] + NTabs: typeof import('naive-ui')['NTabs'] + NTag: typeof import('naive-ui')['NTag'] + NThing: typeof import('naive-ui')['NThing'] + NTimePicker: typeof import('naive-ui')['NTimePicker'] + NTooltip: typeof import('naive-ui')['NTooltip'] + NTree: typeof import('naive-ui')['NTree'] + NTreeSelect: typeof import('naive-ui')['NTreeSelect'] + NumberInput: typeof import('./src/components/numberInput/index.vue')['default'] + NUpload: typeof import('naive-ui')['NUpload'] + NUploadDragger: typeof import('naive-ui')['NUploadDragger'] + NWatermark: typeof import('naive-ui')['NWatermark'] + PageFooter: typeof import('./src/components/Page/src/PageFooter.vue')['default'] + PageWrapper: typeof import('./src/components/Page/src/PageWrapper.vue')['default'] + Pagination: typeof import('./src/components/pagination/index.vue')['default'] + Password: typeof import('./src/components/Password/src/Password.vue')['default'] + Picker: typeof import('./src/components/icon/picker.vue')['default'] + Qrcode: typeof import('./src/components/Qrcode/src/Qrcode.vue')['default'] + Recharge: typeof import('./src/components/Lockscreen/Recharge.vue')['default'] + Region: typeof import('./src/components/Region/src/Region.vue')['default'] + Render: typeof import('./src/components/Render/src/Render.vue')['default'] + RouterLink: typeof import('vue-router')['RouterLink'] + RouterView: typeof import('vue-router')['RouterView'] + Table: typeof import('./src/components/Table/src/Table.vue')['default'] + TableAction: typeof import('./src/components/Table/src/components/TableAction.vue')['default'] + TableImg: typeof import('./src/components/TableImg/src/TableImg.vue')['default'] + TableSelect: typeof import('./src/components/TableSelect/src/TableSelect.vue')['default'] + Tinymce: typeof import('./src/components/Editor/tinymce.vue')['default'] + Websocket: typeof import('./src/components/Websocket/index.vue')['default'] + } +} diff --git a/ui/src/layout/components/Main/index.ts b/ui/src/layout/components/Main/index.ts new file mode 100644 index 0000000..f63218e --- /dev/null +++ b/ui/src/layout/components/Main/index.ts @@ -0,0 +1,3 @@ +import MainView from './index.vue'; + +export { MainView }; diff --git a/ui/src/layout/components/Main/index.vue b/ui/src/layout/components/Main/index.vue new file mode 100644 index 0000000..a95d9a0 --- /dev/null +++ b/ui/src/layout/components/Main/index.vue @@ -0,0 +1,30 @@ + + + + + diff --git a/ui/src/views/monitor/job/log/columns.ts b/ui/src/views/monitor/job/log/columns.ts new file mode 100644 index 0000000..5595da7 --- /dev/null +++ b/ui/src/views/monitor/job/log/columns.ts @@ -0,0 +1,85 @@ +import { h } from 'vue'; + +export const columns = [ + { + type: 'selection', + width: 50, + fixed: 'left', + }, + { + title: 'ID', + key: 'id', + fixed: 'left', + width: 100, + }, + { + title: '任务名称', + key: 'jobName', + width: 200, + }, + { + title: '任务组名', + key: 'jobGroup', + width: 100, + }, + { + title: '任务触发器', + key: 'jobTrigger', + width: 200, + }, + { + title: '任务日志信息', + key: 'jobMessage', + width: 300, + }, + { + title: '执行表达式', + key: 'cronExpression', + width: 150, + }, + { + title: '执行状态', + key: 'status', + width: 100, + render(record) { + let typeText = ''; + switch (record.status) { + case 0: + typeText = '未发布'; + break; + case 1: + typeText = '运行中'; + break; + case 2: + typeText = '暂停'; + break; + case 3: + typeText = '删除'; + break; + default: + break; + } + return h('span', typeText || '-'); + }, + }, + { + title: '任务开始时间', + key: 'startTime', + width: 180, + }, + { + title: '任务结束时间', + key: 'endTime', + width: 180, + }, + { + title: '任务执行时间', + key: 'createTime', + width: 180, + }, + { + title: '任务执行耗时', + key: 'consumeTime', + width: 120, + }, +]; diff --git a/ui/src/views/monitor/job/log/edit.vue b/ui/src/views/monitor/job/log/edit.vue new file mode 100644 index 0000000..43311f9 --- /dev/null +++ b/ui/src/views/monitor/job/log/edit.vue @@ -0,0 +1,116 @@ + + diff --git a/ui/src/views/monitor/job/log/index.vue b/ui/src/views/monitor/job/log/index.vue new file mode 100644 index 0000000..e7bbb56 --- /dev/null +++ b/ui/src/views/monitor/job/log/index.vue @@ -0,0 +1,236 @@ + + + + + diff --git a/ui/src/views/monitor/job/log/querySchemas.ts b/ui/src/views/monitor/job/log/querySchemas.ts new file mode 100644 index 0000000..859c66c --- /dev/null +++ b/ui/src/views/monitor/job/log/querySchemas.ts @@ -0,0 +1,30 @@ +import { FormSchema } from '@/components/Form/index'; +export const schemas: FormSchema[] = [ + { + field: 'jobName', + component: 'NInput', + label: '任务名称', + componentProps: { + placeholder: '请输入数据源名称', + }, + }, + { + field: 'status', + component: 'NSelect', + label: '任务状态', + componentProps: { + placeholder: '请选择任务状态', + clearable: true, + options: [ + { + label: '正常', + value: 0, + }, + { + label: '失败', + value: 1, + }, + ], + }, + }, +];