vue3.0 +ts +vantdesginVue 手动上传excel文件( 不使用上传服务器功能,不支持多文件一起上传)

2022-08-16 09:05:42

vue3.0 +ts +vantdesginVue 手动上传excel文件( 不使用上传服务器功能,不支持多文件一起上传)

注意点: 必须是post请求 ,

在这里插入图片描述

在这里插入图片描述

<a-buttontype="primary"style="float: right;margin: 4px 0px 0px 15px"@click="clickImport">批量导入</a-button><!-- 批量导入 --><a-modalv-model:visible="importVisible":maskClosable="false"title="批量导入"width="50%":afterClose="closeImport"><divstyle="width: 80%;margin: 0px auto"><a-upload-draggerv-model:fileList="fileList"name="file":remove="handleRemove":before-upload="beforeUpload"><pclass="ant-upload-drag-icon"><InboxOutlined/></p><pclass="ant-upload-text">将文件拖到此处或点击上传</p><pclass="ant-upload-hint">只支持excel文件</p></a-upload-dragger><p:successTip="successTip"style="margin:0px;color:green;">{{successTip}}</p><p:failTip="failTip"style="margin:0px;color:red;">{{failTip}}</p><a@click="DownImportFile">{{hrefFile}}</a></div><template#footer><a-button@click="closeImport">取消</a-button><a-buttontype="primary"@click="bulkImport":disabled="fileList.length === 0":loading="uploading">{{
          uploading ? '导入中' : '开始导入'
        }}</a-button></template></a-modal>
// 类型接口interfaceFileItem{
  uid:string;
  name?:string;
  status?:string;
  response?:string;
  url?:string;
  preview?:string;
  originFileObj?:any;
  file:string| Blob;}----------------------------定义-----------------------------------// 批量导入弹窗开关const importVisible=ref<boolean>(false);// 上传文件const fileList=ref<any>([]);// 导入中const uploading=ref<boolean>(false);// 导入到服务器后返回的文件名称const fileName=ref<string>('')// 导入成功数量const successTip=ref<string>('')// 导入失败数量const failTip=ref<string>('')// 下载导入文件地址const hrefFile=ref<string>('')// 保存上传文件fileconst importFlie=ref<any>()-------------------方法-------------------------------------------// 点击批量导入functionclickImport(){
      importVisible.value=true;}// 移除要导入的文件functionhandleRemove(file: FileItem){const index= fileList.value.indexOf(file);const newFileList= fileList.value.slice();
      newFileList.splice(index,1);
      fileList.value= newFileList;};// 导入前functionbeforeUpload(file: FileItem){
      importFlie.value= file
      fileList.value=[...fileList.value, file];const isJpgOrPng= file.type==='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'|| file.type==='application/vnd.ms-excel';if(!isJpgOrPng){
        message.error('上传图片文件格式错误!');nextTick(()=>{
          fileList.value=[]})}const isLt10M= file.size/1024/1024<=10;if(!isLt10M){
        message.error('上传的图片必须小于 10MB!');nextTick(()=>{
          fileList.value=[]})}return isJpgOrPng&& isLt10M&&false;}// 点击确定导入asyncfunctionbulkImport(){const formData=newFormData();
      formData.append('file',importFlie.value);
      formData.append('wellId', props.wellInformation.id);
      formData.append('catalogueId', dataObject.value.id);let res=await dataBaseManagementApi.importInformation(formData);if(res.success){
        uploading.value=false;
        fileList.value=[]
        successTip.value= res.obj?.successMsg;
        failTip.value= res.obj?.failedMsg;
        hrefFile.value= res.obj?.fileErrName}else{
        uploading.value=false;
        fileList.value=[]
        successTip.value= res.obj?.successMsg;
        failTip.value= res.obj?.failedMsg;
        hrefFile.value= res.obj?.fileErrName
        message.error(res.msg)}}// 下载导入文件asyncfunctionDownImportFile(){await dataManagementApi.downImportErrorFile(props.wellInformation.id,dataObject.value.id,hrefFile.value,dataObject.value.requestUrl);}// 关闭导入弹窗functioncloseImport(){
      importVisible.value=false,
      successTip.value='',
      failTip.value='',
      hrefFile.value='',
      fileList.value=[];search('sousuo');// 掉一次查询接口}
  • 作者:造梦者FZ
  • 原文链接:https://blog.csdn.net/qq_43923146/article/details/119147924
    更新时间:2022-08-16 09:05:42