效果图

实现
<template>
<a-upload
v-model:file-list="uploadValue"
:custom-icon="getCustomIcon()"
@before-remove="beforeRemove"
/>
</template>
<script setup lang="tsx">
import { Popconfirm, Message } from '@arco-design/web-vue'
import { IconFile, IconDelete } from '@arco-design/web-vue/es/icon'
import { ref, h } from 'vue'
const uploadValue = ref([])
const getCustomIcon = () => {
return {
fileIcon: () => h(IconFile),
removeIcon: () =>
h(
Popconfirm,
{
content: '是否要删除附件?',
type: 'warning',
onOk: () => {
let delFile = cacheRemoveFile.value
let delIndex = uploadValue.value.findIndex((item) => item.uid == delFile.uid)
if (delIndex >= 0) {
uploadValue.value.splice(delIndex, 1)
}
},
},
{
default: () => h(IconDelete),
}
),
}
}
const cacheRemoveFile = ref(null)
const beforeRemove = (file) => {
cacheRemoveFile.value = file
return new Promise((resolve, reject) => {
reject()
})
}
</script>