index copy.js 2.24 KB
import React, { PureComponent } from 'react';
import { Upload, message } from 'antd';
import { _apiUrl_ } from '@/utils/common';
const { Dragger } = Upload;
class UploadFile extends PureComponent {
  constructor(props) {
    super(props);
  }
  state = {
    tempFileList:[]
  }
  onRemove = file => {
    const fileList = this.state.tempFileList;
    const index = fileList?.indexOf(file);
    fileList.splice(index, 1);
    this.setState({
      tempFileList: fileList && fileList.length > 0 && [...fileList] || []
    }, () => {
        this.props.onRemove && this.props.onRemove(fileList);
    })
  };

  changeUpload = (fileInfo) => {
    const files = [];
    fileInfo.fileList.forEach((element) => {
      if (element.status === 'done' && element.response?.success && element.response.data) {
        files.push(element.response.data.url);
      } else if (element.status === 'done' && element?.url) {
        //peter new add,做为回显使用
         files.push(element?.url);
      } else if (element.response?.success === false) {
        message.error(element.response?.message);
      }
    });
    //peter
    this.setState({
      tempFileList:fileInfo.fileList
    })
    this.props.onChange(files, fileInfo);
  };

  

  render() {
    let action = `${_apiUrl_}/account-service/file/${this.props.fileType || 'image'}`;

    const props = this.props;
    console.log(`uploadfile props is:`, props);
    const isDragger = props.isDragger;
    const options = {
      headers: {
        Authorization: 'bearer ' + localStorage.getItem('Authorization'),
      },
      action: action,
      name: 'docFile',
    };
    const newProps = { ...options, ...props };
    console.log(`newProps props is:`, newProps);
    //new add code 
    const fileList = (props.value || []).map((item, index) => ({
      uid: index,
      name: item?.fileName || `附件${index + 1}`,
      status: 'done',
      url: item,
    }));
    if (isDragger) {
      return <Dragger {...newProps}  key={props.value} defaultFileList={ fileList } children={props.children} onChange={this.changeUpload} />;
    } else {
       return <Upload {...newProps} key={props.value}  defaultFileList={ fileList } children={props.children} onChange={this.changeUpload} />;
    }
    
  }
}

export default UploadFile;