diff --git a/packages/upload-list/index.vue b/packages/upload-list/index.vue new file mode 100644 index 0000000..feadd1c --- /dev/null +++ b/packages/upload-list/index.vue @@ -0,0 +1,71 @@ + + + + diff --git a/stories/UploadList.stories.ts b/stories/UploadList.stories.ts new file mode 100644 index 0000000..ebe5b64 --- /dev/null +++ b/stories/UploadList.stories.ts @@ -0,0 +1,46 @@ +import type { Meta, StoryObj } from '@storybook/vue3' +import ThUploadList from '../packages/upload-list/index.vue' +import avatar from './assets/avatar.jpeg' + +// 模拟2秒钟的接口请求 +function request(formData: FormData) { + let name = '佚名文件' + let url = avatar + const fileName = formData.get('name') + const file = formData.get('file') + if (typeof fileName === 'string') { + name = fileName + } + else if (typeof file !== 'string' && file) { + name = file.name + url = URL.createObjectURL(file) + } + return new Promise((resolve) => { + setTimeout(() => { + resolve({ + id: Date.now(), + name, + url, + createdBy: 'user', + }) + }, 2000) + }) +} +const meta = { + title: '表单组件/UploadList', + component: ThUploadList, + args: { + accept: '*', + fileList: [], + request, + filePath: '/', + }, + tags: ['autodocs'], +} satisfies Meta +export default meta + +type Story = StoryObj + +export const Base: Story = { + name: '基本使用', +} diff --git a/types/components.d.ts b/types/components.d.ts index eeaf760..d279abe 100644 --- a/types/components.d.ts +++ b/types/components.d.ts @@ -28,6 +28,7 @@ declare module 'vue' { ElTable: typeof import('element-plus/es')['ElTable'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTransfer: typeof import('element-plus/es')['ElTransfer'] + ElUpload: typeof import('element-plus/es')['ElUpload'] Header: typeof import('./../packages/header/index.vue')['default'] MaskText: typeof import('./../packages/mask-text/index.vue')['default'] PreviewOffice: typeof import('./../packages/preview-office/index.vue')['default'] @@ -37,6 +38,7 @@ declare module 'vue' { SelectTableModal: typeof import('./../packages/select-table-modal/index.vue')['default'] SelectTransferModal: typeof import('./../packages/select-transfer-modal/index.vue')['default'] UploadAvatar: typeof import('./../packages/upload-avatar/index.vue')['default'] + UploadList: typeof import('./../packages/upload-list/index.vue')['default'] UploadSingleFile: typeof import('./../packages/upload-single-file/index.vue')['default'] UploadTable: typeof import('./../packages/upload-table/index.vue')['default'] }