【问题解决】el-upload数据上传成功后不显示成功icon

el-upload数据上传成功后不显示成功icon

原因

由于后端返回数据与要求形式不符,使用el-upload默认方法调用onSuccess钩子失败,上传文件的状态并未发生改变,因此数据上传成功后并未显示成功的icon标志。

解决方法

点击按钮,调用submitDetail()方法,在该方法中通过this.$refs.uploadDetail.submit()语句,调用:http-request对应的方法,即uploadDetail(param)方法。

通过UploadServletList方法调用后端文件上传接口,根据后端返回内容进行判断,通过param.onSuccess手动调用文件上传成功的钩子,使得上传成功icon成功显示。

代码展示

javascript 复制代码
<el-upload ref="uploadDetail" action="#" :on-remove="handleRemoveDetail" :on-change="handleChangeDetail" :limit="1" :file-list="detailFileList" :auto-upload="false" v-loading="detailUploadingFlag" class="upload-demo" :show-file-list="true" :http-request="uploadDetail">
	<el-button slot="trigger" size="medium" type="primary">选择</el-button>
    <el-button style="margin-left: 10px;" size="medium" type="success" @click="submitDetail">上传</el-button>
</el-upload>


<srcipt>
submitDetail() {
    this.$refs.uploadDetail.submit()
},
uploadDetail(param) {
	var formData = new FormData()
    this.detailFileList.forEach((item) => {
        formData.append('files', item.raw)
    })
    this.detailUploadingFlag = true
    UploadServletList(formData).then((res) => {
        if (!res.includes("上传出现错误")) {
            let arr = res.split(';')
            let detailShcemeSNameList = arr.map(item => item.split('>')[0])
            this.applyInfoForm.detailSchemeSName = detailShcemeSNameList[0]
            param.onSuccess(res)
            this.$message({
                type: 'success',
                message: `详细方案上传成功`
            })
        } else {
            param.onError(res)
        }
        this.detailUploadingFlag = false
    }).catch((err) => {
        console.log(err)
    })
},
</srcipt>

效果展示

相关推荐
小码哥_常4 分钟前
一套自己部署的 IM,客户端是同一份 Flutter
前端·后端
蜗牛攻城狮2 小时前
微前端四大方案选型对比与最佳实践:qiankun、micro-app、wujie、Module Federation
前端·微前端·qiankun·前端架构·micro-app·wujie
她说可以呀4 小时前
Vue插槽
前端·javascript·vue.js
qq_448011164 小时前
Vue + Jinja2两套模版与法冲突造成undefinedError
前端·javascript·vue.js
aixingpan4 小时前
aixingpan.cn API开发文档:前端查询夏令时和时区接口指南
前端·php
2601_958352905 小时前
23.5×19mm 换掉一整条音频链?|A-68 集成了什么:ADC / DAC / 24.576MHz 时钟 / AEC / 波束降噪,主控仅需 6 根线
前端·音视频·ai降噪·回声消除·语音模块
志尊宝5 小时前
AI原生前端开发(039):AI辅助的Nuxt 4全栈开发
前端·vue.js·ai-native
FRing036 小时前
JavaScript入门到精通三十二(深拷贝、浅拷贝、递归函数)
开发语言·前端·javascript
excel7 小时前
双 Token 与前端使用 Crypto 公私钥鉴权换 Token,哪种方案更好?
前端·后端
外收内放7 小时前
Python基础语法练习题(73)
java·前端·python