Skip to content

功能

用于一次上传多张图片,支持拖拽排序

TIP

此组件依赖 vuedraggable-es,使用时需要

npm i vuedraggable-es@^4.1.1

功能示例

展示区
结果
[ { "name": "山.png", "size": 9988, "type": "image/jpeg", "url": "https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg", "uid": 1625899269286 } ]

最小示例

vue
<template>
    <Wrapper>
        <ElButton @click="handleClick">打开</ElButton>
        <HDialogUploadImages
            v-model="result"
            v-model:visible="visible"
            :http-request="httpRequest"
            :limit="20"
            @error="handleError"
        />
    </Wrapper>
</template>

<script lang="ts" setup>
import { ref } from 'vue'
import { ElButton, ElMessage } from 'element-plus'
import { defaultWindow } from '@wfrog/utils'
import Wrapper from '@/components/simple-wrapper.vue'
import HDialogUploadImages from '../index.vue'
import type { IUploadFile } from '../props'

const result = ref<(File | IUploadFile)[]>([])
const visible = ref(false)

const handleClick = () => {
    visible.value = true
}

const httpRequest = async (file: File) => {
    if (!defaultWindow) { return }
    const myFile = {
        name: file.name,
        size: file.size,
        type: file.type,
        url: defaultWindow.URL.createObjectURL(file),
    }
    return myFile
}

const handleError = (message: string) => {
    ElMessage.error({ message })
}
</script>

API