| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <template>
- <a-upload :before-upload="beforeUpload" v-model:file-list="fileList" @change="handleChange">
- <a-button type="primary"> Upload </a-button>
- </a-upload>
- </template>
- <script lang="ts">
- import { defineComponent, reactive, toRefs } from 'vue';
- import { Upload } from 'ant-design-vue';
- import { uploadApi } from '/@/api/sys/upload';
- interface FileItem {
- uid: string;
- name?: string;
- status?: string;
- response?: string;
- url?: string;
- }
- interface FileInfo {
- file: FileItem;
- fileList: FileItem[];
- }
- interface State {
- fileList: FileItem[];
- }
- export default defineComponent({
- components: {
- [Upload.name]: Upload,
- },
- setup() {
- const state = reactive<State>({
- 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',
- },
- ],
- });
- function beforeUpload(file) {
- console.log(`file`, file);
- uploadApi({ file })
- .then((res) => {
- console.log(`res`, res);
- })
- .catch((err) => {
- console.log(`err`, err);
- });
- return false;
- }
- const handleChange = ({ file, fileList }: FileInfo) => {
- console.log(`file`, file);
- console.log(`fileList`, fileList);
- if (file.status !== 'uploading') {
- console.log(file, fileList);
- }
- };
- return {
- beforeUpload,
- handleChange,
- ...toRefs(state),
- };
- },
- });
- </script>
|