From c64c770f544154f8209cd2fc2c944961adb0892b Mon Sep 17 00:00:00 2001 From: puhui999 Date: Thu, 25 Sep 2025 17:05:26 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=E3=80=90ele=E3=80=91=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20CronTab=20CRON=20=E8=A1=A8=E8=BE=BE=E5=BC=8F?= =?UTF-8?q?=E9=85=8D=E7=BD=AE=E7=BB=84=E4=BB=B6=E3=80=81JOB=20=E8=A1=A8?= =?UTF-8?q?=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/cron-tab/cron-tab.vue | 1152 +++++++++++++++++ apps/web-ele/src/components/cron-tab/index.ts | 1 + apps/web-ele/src/views/infra/job/data.ts | 12 +- 3 files changed, 1162 insertions(+), 3 deletions(-) create mode 100644 apps/web-ele/src/components/cron-tab/cron-tab.vue create mode 100644 apps/web-ele/src/components/cron-tab/index.ts diff --git a/apps/web-ele/src/components/cron-tab/cron-tab.vue b/apps/web-ele/src/components/cron-tab/cron-tab.vue new file mode 100644 index 000000000..6aacf8503 --- /dev/null +++ b/apps/web-ele/src/components/cron-tab/cron-tab.vue @@ -0,0 +1,1152 @@ + + + + diff --git a/apps/web-ele/src/components/cron-tab/index.ts b/apps/web-ele/src/components/cron-tab/index.ts new file mode 100644 index 000000000..8f4baae59 --- /dev/null +++ b/apps/web-ele/src/components/cron-tab/index.ts @@ -0,0 +1 @@ +export { default as CronTab } from './cron-tab.vue'; diff --git a/apps/web-ele/src/views/infra/job/data.ts b/apps/web-ele/src/views/infra/job/data.ts index 78b3b187e..e2acb01aa 100644 --- a/apps/web-ele/src/views/infra/job/data.ts +++ b/apps/web-ele/src/views/infra/job/data.ts @@ -3,7 +3,7 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { InfraJobApi } from '#/api/infra/job'; import type { DescriptionItemSchema } from '#/components/description'; -import { h } from 'vue'; +import { h, markRaw } from 'vue'; import { DICT_TYPE } from '@vben/constants'; import { getDictOptions } from '@vben/hooks'; @@ -11,6 +11,7 @@ import { formatDateTime } from '@vben/utils'; import { ElTimeline, ElTimelineItem } from 'element-plus'; +import { CronTab } from '#/components/cron-tab'; import { DictTag } from '#/components/dict-tag'; /** 新增/修改的表单 */ @@ -57,12 +58,11 @@ export function useFormSchema(): VbenFormSchema[] { { fieldName: 'cronExpression', label: 'CRON 表达式', - component: 'Input', + component: markRaw(CronTab), componentProps: { placeholder: '请输入 CRON 表达式', }, rules: 'required', - // TODO @芋艿:未来支持动态的 CRON 表达式选择 }, { fieldName: 'retryCount', @@ -71,6 +71,8 @@ export function useFormSchema(): VbenFormSchema[] { componentProps: { placeholder: '请输入重试次数。设置为 0 时,不进行重试', min: 0, + controlsPosition: 'right', + class: '!w-full', }, rules: 'required', }, @@ -81,6 +83,8 @@ export function useFormSchema(): VbenFormSchema[] { componentProps: { placeholder: '请输入重试间隔,单位:毫秒。设置为 0 时,无需间隔', min: 0, + controlsPosition: 'right', + class: '!w-full', }, rules: 'required', }, @@ -91,6 +95,8 @@ export function useFormSchema(): VbenFormSchema[] { componentProps: { placeholder: '请输入监控超时时间,单位:毫秒', min: 0, + controlsPosition: 'right', + class: '!w-full', }, }, ]; -- Gitee From f0fbaf45f461774405d69da2097487841efe4a7d Mon Sep 17 00:00:00 2001 From: puhui999 Date: Fri, 26 Sep 2025 10:52:30 +0800 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=E3=80=90ele=E3=80=91=E9=87=8D?= =?UTF-8?q?=E6=96=B0=E5=B0=81=E8=A3=85=E4=B8=8A=E4=BC=A0=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/components/upload/file-upload.vue | 447 +++++++++--------- .../src/components/upload/use-upload.ts | 29 +- apps/web-ele/src/views/infra/file/data.ts | 2 +- .../src/views/infra/file/modules/form.vue | 73 +-- 4 files changed, 269 insertions(+), 282 deletions(-) diff --git a/apps/web-ele/src/components/upload/file-upload.vue b/apps/web-ele/src/components/upload/file-upload.vue index 39b6d529d..43bee52d7 100644 --- a/apps/web-ele/src/components/upload/file-upload.vue +++ b/apps/web-ele/src/components/upload/file-upload.vue @@ -1,261 +1,282 @@ - + diff --git a/apps/web-ele/src/components/upload/use-upload.ts b/apps/web-ele/src/components/upload/use-upload.ts index 52f723be8..2f46f9e98 100644 --- a/apps/web-ele/src/components/upload/use-upload.ts +++ b/apps/web-ele/src/components/upload/use-upload.ts @@ -79,17 +79,17 @@ export function useUploadType({ } // TODO @芋艿:目前保持和 admin-vue3 一致,后续可能重构 -export const useUpload = (directory?: string) => { +export function useUpload(directory?: string) { // 后端上传地址 const uploadUrl = getUploadUrl(); // 是否使用前端直连上传 const isClientUpload = UPLOAD_TYPE.CLIENT === import.meta.env.VITE_UPLOAD_TYPE; // 重写ElUpload上传方法 - const httpRequest = async ( + async function httpRequest( file: File, onUploadProgress?: AxiosProgressEvent, - ) => { + ) { // 模式一:前端上传 if (isClientUpload) { // 1.1 生成文件名称 @@ -113,20 +113,20 @@ export const useUpload = (directory?: string) => { // 模式二:后端上传 return uploadFile({ file, directory }, onUploadProgress); } - }; + } return { uploadUrl, httpRequest, }; -}; +} /** * 获得上传 URL */ -export const getUploadUrl = (): string => { +export function getUploadUrl(): string { return `${apiURL}/infra/file/upload`; -}; +} /** * 创建文件信息 @@ -134,7 +134,10 @@ export const getUploadUrl = (): string => { * @param vo 文件预签名信息 * @param file 文件 */ -function createFile0(vo: InfraFileApi.FilePresignedUrlRespVO, file: File) { +function createFile0( + vo: InfraFileApi.FilePresignedUrlRespVO, + file: File, +): InfraFileApi.File { const fileVO = { configId: vo.configId, url: vo.url, @@ -148,10 +151,18 @@ function createFile0(vo: InfraFileApi.FilePresignedUrlRespVO, file: File) { } /** - * 生成文件名称 + * 生成文件名称(使用算法SHA256) * * @param file 要上传的文件 */ async function generateFileName(file: File) { + // // 读取文件内容 + // const data = await file.arrayBuffer(); + // const wordArray = CryptoJS.lib.WordArray.create(data); + // // 计算SHA256 + // const sha256 = CryptoJS.SHA256(wordArray).toString(); + // // 拼接后缀 + // const ext = file.name.slice(Math.max(0, file.name.lastIndexOf('.'))); + // return `${sha256}${ext}`; return file.name; } diff --git a/apps/web-ele/src/views/infra/file/data.ts b/apps/web-ele/src/views/infra/file/data.ts index 56d583134..3e97d47fd 100644 --- a/apps/web-ele/src/views/infra/file/data.ts +++ b/apps/web-ele/src/views/infra/file/data.ts @@ -9,7 +9,7 @@ export function useFormSchema(): VbenFormSchema[] { { fieldName: 'file', label: '文件上传', - component: 'Upload', + component: 'FileUpload', componentProps: { placeholder: '请选择要上传的文件', }, diff --git a/apps/web-ele/src/views/infra/file/modules/form.vue b/apps/web-ele/src/views/infra/file/modules/form.vue index 558c8ae4d..1135c4ad7 100644 --- a/apps/web-ele/src/views/infra/file/modules/form.vue +++ b/apps/web-ele/src/views/infra/file/modules/form.vue @@ -1,19 +1,19 @@ -- Gitee From 8229ca1335489a0120b4f3dbaf5dd8ded0d3a3e4 Mon Sep 17 00:00:00 2001 From: puhui999 Date: Fri, 26 Sep 2025 11:12:32 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=E3=80=90ele=E3=80=91=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E7=94=9F=E6=88=90=E9=A2=84=E8=A7=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web-ele/src/views/infra/codegen/modules/preview-code.vue | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/apps/web-ele/src/views/infra/codegen/modules/preview-code.vue b/apps/web-ele/src/views/infra/codegen/modules/preview-code.vue index de4486fc1..f9e3df646 100644 --- a/apps/web-ele/src/views/infra/codegen/modules/preview-code.vue +++ b/apps/web-ele/src/views/infra/codegen/modules/preview-code.vue @@ -7,7 +7,7 @@ import type { InfraCodegenApi } from '#/api/infra/codegen'; import { ref } from 'vue'; import { useVbenModal } from '@vben/common-ui'; -import { Copy } from '@vben/icons'; +import { IconifyIcon } from '@vben/icons'; import { useClipboard } from '@vueuse/core'; import { ElMessage, ElTabPane, ElTabs, ElTree } from 'element-plus'; @@ -291,8 +291,7 @@ const [Modal, modalApi] = useVbenModal({ -- Gitee