You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ant-design-vue/components/upload/demo/upload-custom-action-icon.vue

70 lines
1.6 KiB

<docs>
---
order: 12
title:
zh-CN: 自定义交互图标
en-US: custom action icon
---
## zh-CN
使用相应插槽设置列表交互图标
## en-US
Use slot for custom action icons of files.
</docs>
<template>
<a-upload
v-model:file-list="fileList"
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
:show-upload-list="{ showDownloadIcon: true, showRemoveIcon: true }"
@change="handleChange"
>
<a-button>
<upload-outlined></upload-outlined>
Upload
</a-button>
<template #downloadIcon>download</template>
<template #removeIcon><StarOutlined @click="handleClick"></StarOutlined></template>
</a-upload>
</template>
<script lang="ts" setup>
import { ref } from 'vue';
import { UploadOutlined, StarOutlined } from '@ant-design/icons-vue';
import type { UploadChangeParam, UploadProps } from 'ant-design-vue';
const fileList = ref<UploadProps['fileList']>([
{
uid: '1',
name: 'xxx.png',
status: 'done',
response: 'Server Error 500', // custom error message to show
url: 'http://www.baidu.com/xxx.png',
},
{
uid: '2',
name: 'yyy.png',
status: 'done',
url: 'http://www.baidu.com/yyy.png',
},
{
uid: '3',
name: 'zzz.png',
status: 'error',
response: 'Server Error 500', // custom error message to show
url: 'http://www.baidu.com/zzz.png',
},
]);
const handleChange = ({ file, fileList }: UploadChangeParam) => {
if (file.status !== 'uploading') {
console.log(file, fileList);
}
};
function handleClick(e: MouseEvent) {
console.log(e, 'custom removeIcon event');
}
</script>