diff --git a/apps/web-antd/src/adapter/form.ts b/apps/web-antd/src/adapter/form.ts index 2bae74ac..a3c14d77 100644 --- a/apps/web-antd/src/adapter/form.ts +++ b/apps/web-antd/src/adapter/form.ts @@ -36,7 +36,7 @@ import { import { isArray } from 'lodash-es'; import { Tinymce as RichTextarea } from '#/components/tinymce'; -import { ImageUpload } from '#/components/upload'; +import { FileUpload, ImageUpload } from '#/components/upload'; // 这里需要自行根据业务组件库进行适配,需要用到的组件都需要在这里类型说明 export type FormComponentType = @@ -45,6 +45,7 @@ export type FormComponentType = | 'CheckboxGroup' | 'DatePicker' | 'Divider' + | 'FileUpload' | 'ImageUpload' | 'Input' | 'InputNumber' @@ -107,6 +108,7 @@ setupVbenForm({ TreeSelect: withDefaultPlaceholder(TreeSelect, 'select'), Upload, ImageUpload, + FileUpload, }, config: { // ant design vue组件库默认都是 v-model:value diff --git a/apps/web-antd/src/components/upload/index.ts b/apps/web-antd/src/components/upload/index.ts index 89fac34a..b86d4957 100644 --- a/apps/web-antd/src/components/upload/index.ts +++ b/apps/web-antd/src/components/upload/index.ts @@ -1 +1,2 @@ +export { default as FileUpload } from './src/file-upload.vue'; export { default as ImageUpload } from './src/image-upload.vue'; diff --git a/apps/web-antd/src/components/upload/src/file-upload.vue b/apps/web-antd/src/components/upload/src/file-upload.vue new file mode 100644 index 00000000..c6848fe9 --- /dev/null +++ b/apps/web-antd/src/components/upload/src/file-upload.vue @@ -0,0 +1,213 @@ + + + + + diff --git a/apps/web-antd/src/components/upload/src/helper.ts b/apps/web-antd/src/components/upload/src/helper.ts index 7c7c0078..77db9509 100644 --- a/apps/web-antd/src/components/upload/src/helper.ts +++ b/apps/web-antd/src/components/upload/src/helper.ts @@ -1,4 +1,5 @@ export function checkFileType(file: File, accepts: string[]) { + console.log(file.name, accepts); let reg; if (!accepts || accepts.length === 0) { reg = /.(?:jpg|jpeg|png|gif|webp)$/i; diff --git a/apps/web-antd/src/views/system/oss/file-upload-modal.vue b/apps/web-antd/src/views/system/oss/file-upload-modal.vue new file mode 100644 index 00000000..cbdaa1bc --- /dev/null +++ b/apps/web-antd/src/views/system/oss/file-upload-modal.vue @@ -0,0 +1,51 @@ + + + diff --git a/apps/web-antd/src/views/system/oss/index.vue b/apps/web-antd/src/views/system/oss/index.vue index 5986f8d6..b8fbb35f 100644 --- a/apps/web-antd/src/views/system/oss/index.vue +++ b/apps/web-antd/src/views/system/oss/index.vue @@ -26,6 +26,7 @@ import { ossDownload, ossList, ossRemove } from '#/api/system/oss'; import { downloadByData } from '#/utils/file/download'; import { columns, querySchema } from './data'; +import fileUploadModal from './file-upload-modal.vue'; import imageUploadModal from './image-upload-modal.vue'; const formOptions: VbenFormProps = { @@ -157,6 +158,10 @@ function isImageFile(ext: string) { const [ImageUploadModal, imageUploadApi] = useVbenModal({ connectedComponent: imageUploadModal, }); + +const [FileUploadModal, fileUploadApi] = useVbenModal({ + connectedComponent: fileUploadModal, +}); diff --git a/apps/web-antd/src/views/演示使用自行删除/upload/index.vue b/apps/web-antd/src/views/演示使用自行删除/upload/index.vue index 0b3f8851..237c5c02 100644 --- a/apps/web-antd/src/views/演示使用自行删除/upload/index.vue +++ b/apps/web-antd/src/views/演示使用自行删除/upload/index.vue @@ -3,27 +3,46 @@ import { ref } from 'vue'; import { JsonPreview, Page } from '@vben/common-ui'; -import { RadioGroup } from 'ant-design-vue'; +import { Alert, RadioGroup } from 'ant-design-vue'; -import { ImageUpload } from '#/components/upload'; +import { FileUpload, ImageUpload } from '#/components/upload'; const resultField = ref<'ossId' | 'url'>('ossId'); +const imageList = ref([]); const fileList = ref([]); const fieldOptions = [ { label: 'ossId', value: 'ossId' }, { label: '链接地址', value: 'url' }, ]; +const fileAccept = ['txt', 'excel', 'word', 'pdf'];