Vue 解决element-ui 文件上传、下载,接口返回错误信息,弹框提示错误信息

1、在request.js中,统一处理接口错误信息弹框提示

在开发中经常会遇到文件在上传、下载后端接口有时候会返回非文件流的错误信息,需要进行弹框提示,我们统一放到request.js文件中在响应拦截器里进行处理

// 响应拦截器
service.interceptors.response.use( async res => {

	// 这一步就是进行错误弹框处理,
  const isBlob = res.data instanceof Blob;
  if(isBlob) {
    const blobObj = await BlobToObject(res.data);

    if(blobObj?.errCode) {
      res = blobObj;
      Message({
        message: blobObj.errMsg,
        type: 'error'
    });
    }
  }
)


function BlobToObject (blob) {
  return new Promise((resolve, reject) => {
    try {
      const { type } = blob;
      if (type === 'application/json') {
        const file = new FileReader();
        let json = {};
        file.readAsText(blob, 'utf-8');
        file.onload = function () {
          json = JSON.parse(file.result);
          resolve(json);
        };
      } else {
        resolve({});
      }
    } catch (err) {
      resolve({ err });
    }
  });
}



``

2、这里面需要注意的点是:

1、需要在顶部用 import { Notification, MessageBox, Message } from ‘element-ui’,将需要用到的弹框MessageBox或Message 引入否则无法触发弹框效果;

2、const isBlob = res.data instanceof Blob;根据个人项目是res还是res.data,包括调用BlobToObject()方法

3、弹框提示根据接口返回是否是code(我的项目是errCode,错误信息是errMsg)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的示例,演示如何使用Element UI的表单和对话框制作二级窗: 1. 首先,你需要在Vue项目中安装Element UI,你可以使用npm命令进行安装: ``` npm install element-ui --save ``` 2. 在你的Vue项目中引入Element UI: ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 3. 在模板中添加一个按钮,点击该按钮会出对话框: ```html <template> <div> <el-button @click="showDialog">打开对话框</el-button> </div> </template> ``` 4. 在script标签中添加相关代码: ```javascript <script> export default { data() { return { dialogVisible: false, // 控制对话框的显示与隐藏 form: { // 表单数据 name: '', age: '' } } }, methods: { showDialog() { this.dialogVisible = true // 显示对话框 }, handleSubmit() { // 处理表单提交 console.log(this.form) this.dialogVisible = false // 隐藏对话框 }, handleCancel() { // 取消按钮的回调函数 this.dialogVisible = false // 隐藏对话框 } } } </script> ``` 5. 在模板中添加对话框组件: ```html <template> <div> <el-button @click="showDialog">打开对话框</el-button> <el-dialog title="表单" :visible.sync="dialogVisible"> <el-form :model="form" ref="form" label-width="80px"> <el-form-item label="姓名"> <el-input v-model="form.name"></el-input> </el-form-item> <el-form-item label="年龄"> <el-input v-model="form.age"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="handleCancel">取 消</el-button> <el-button type="primary" @click="handleSubmit">确 定</el-button> </div> </el-dialog> </div> </template> ``` 这样就完成了一个简单的二级窗,其中包含一个表单和一个对话框。当按钮被点击时,对话框会出,用户填写表单后,点击“确定”按钮提交表单数据,同时对话框被隐藏。当用户点击“取消”按钮时,对话框也会被隐藏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值