1.图片加载失败,给默认图

2.form表单中,输入框加回车事件,页面刷新,如何解决?

3.使用在线主题生成工具,修改element自定义主题色

1.图片加载失败,给默认图,两种解决方法:

方法一:

给img标签加  onerror指令,然后在data中给 errorGoodsImg 赋值,根据自己所需图片路径赋值

<img :src="imgSrc+scope.row.fileId" id="avatarImg" v-if="scope.row.fileId" :onerror="errorGoodsImg">

小颖的目录:

data中,errorGoodsImg的值如下:

errorGoodsImg: 'this.src="' + require('../assets/images/new.jpg') + '"',

方法二:

调用 element-ui 中的  <el-image> 标签,可通过slot = error可自定义加载失败内容

eg:

<el-image v-if="userInfo.credentialsFileId" style="width: 75px; height: 115px" :src="imgSrc+userInfo.credentialsFileId" :preview-src-list="srcList">
<div slot="error" class="image-slot">
<i class="el-icon-picture-outline"></i>
</div>
</el-image>

2.form表单中,输入框加回车事件,页面刷新,如何解决?

解决方法就是在form中添加:@submit.native.prevent

示例:

html代码:

<template>
<div class="ceshi-form-tem right-content-tem">
<el-form ref="form" :model="userInfo" label-width="100px" class="userInfo-form" @submit.native.prevent>
<el-row>
<el-col :span="12">
<p class="form-title-tem">基本信息</p>
</el-col>
<el-col :span="12" class="txt-right">
<el-form-item>
<el-button type="primary" @click="onSubmit('form')" :loading="btnUserLoading">
保存
</el-button>
</el-form-item>
</el-col>
</el-row>
<el-form-item label="头像">
<el-upload
style="width: 30%"
action="https://jsonplaceholder.typicode.com/posts/"
accept=".jpg,.png"
:on-remove="handleRemoveAvatar"
:beforeUpload="beforeAvatarUpload"
:on-error="onError"
:on-success="onSuccess"
:limit="1">
<img v-if="userInfo.avatar" :src="userInfo.avatar" :onerror="errorGoodsImg"
class="userInfo-avatar">
<img v-else src="../assets/img/tu4.png" class="userInfo-avatar">
</el-upload>
</el-form-item>
<el-form-item
label="昵称"
prop="nickname">
<p v-if="!userInfoEdit.nickname">{{userInfo.nickname}}
<i class="el-icon-edit" @click="showInput('nickname')"></i>
</p>
<el-input ref="customerInput" v-else maxlength="6" placeholder="请输入昵称" v-model="userInfo.nickname"
@keyup.enter.native="handleInputConfirm('nickname')"
@blur="handleInputConfirm('nickname')"></el-input>
</el-form-item>
<el-form-item label="姓名">
<p>{{userInfo.username}}</p>
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="userInfo.sex" @change="changeSex">
<el-radio :label="1">男</el-radio>
<el-radio :label="0">女</el-radio>
</el-radio-group>
</el-form-item>
<!--普通用户-->
<el-form-item label="所属机构">
<p v-if="!userInfoEdit.organizationName">{{userInfo.organizationName}}<i class="el-icon-edit" @click="showInput('organizationName')"></i></p>
<el-input ref="customerInput" v-if="userInfoEdit.organizationName" maxlength="6" placeholder="请输入所属机构"
v-model="userInfo.organizationName"
@keyup.enter.native="handleInputConfirm('organizationName')"
@blur="handleInputConfirm('organizationName')"></el-input>
</el-form-item>
</el-form>
</div>
</template>

js代码:

<script>
export default {
name: "formCeshi",
data(){
return {
btnUserLoading: false,
errorGoodsImg: 'this.src="' + require('../assets/img/tu4.png') + '"',
userInfo: {
avatar: '',
nickname: 'v',
username: '测试',
sex: 1,
organizationName: '杀杀杀'
},
userInfoEdit: {
nickname: false,
organizationName: false
},
haveChange: false
}
},
mounted() {
this.haveChange = false
},
methods: {
onSubmit(formName) {
const that = this
if (!that.haveChange) {
that.$message({
message: '当前没有任何修改',
type: 'warning'
});
return
}
that.btnUserLoading = true
that.$refs[formName].validate((valid) => {
if (valid) {
that.btnUserLoading = false
// 调接口
} else {
that.btnUserLoading = false
return false;
}
});
},
showInput(key) {
switch (key) {
case'nickname':
this.userInfoEdit.nickname = true;
break
case'organizationName':
this.userInfoEdit.organizationName = true;
break
}
this.$nextTick(function () {
this.$refs.customerInput.$el.querySelector('input').focus();
});
},
handleInputConfirm(key) {
this.haveChange = true
switch (key) {
case'nickname':
this.userInfoEdit.nickname = false;
break
case'organizationName':
this.userInfoEdit.organizationName = false;
break
}
},
handleRemoveAvatar(file, fileList) {
this.userInfo.avatar = ''
},
beforeAvatarUpload(file) {
let fileend = file.name.substring(file.name.lastIndexOf("."))
//jpg、png、bmp
const isZip = (fileend === '.jpg' || file.type === 'jpg') || (fileend === '.png' || file.type === 'png')
if (!isZip) {
this.$message.error('您只能上传jpg、png格式的图片!')
}
const isLt2G = file.size / 1024 / 1024 < 1;
if (!isLt2G) {
this.$message.error('上传的图片大小必须小于1MB!')
}
return isZip && isLt2G
},
onSuccess(file, res, fileList) {
if (res.response.code != 200) {
this.$message.error('上传头像失败');
} else {
this.haveChange = true
this.userInfo.avatar = URL.createObjectURL(file.raw);
}
},
onError(err, file, fileList) {
const errMsg = JSON.parse(err.message)
this.$message.error(errMsg.msg ? errMsg.msg : '上传头像失败');
},//修改性别
changeSex() {
this.haveChange = true
}
}
}
</script>

css

<style scoped>
form.userInfo-form {
width: 400px;
margin: 40px auto 0 auto;
}
img.userInfo-avatar {
width: 48px;
height: 48px;
border-radius: 50%;
}
</style>

3.使用在线主题生成工具,修改element自定义主题色

打开在线主题编辑器,在该页面中根据自己的需求,更改颜色,修改完后,下载主题包,然后在项目中引入就可以了。

持续更新.......................................

秀两张我家仔仔的盛世美颜:

vue+element-ui小笔记的更多相关文章

  1. vue + element ui 实现实现动态渲染表格

    前言:之前需要做一个页面,能够通过表名动态渲染出不同的表格,这里记录一下.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9786326.html 网站地址:我的 ...

  2. vue + element ui 表格自定义表头,提供线上demo

    前言:工作中用到 vue+element ui 的前端框架,需要使用自定义表头,需要使用 re.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9710826.h ...

  3. vue+element ui 的表格列使用组件

    前言:工作中用到 vue+element ui 的前端框架,有这个场景:很多表格的列有许多一样的,所以考虑将列封装为组件.转载请注明出处:https://www.cnblogs.com/yuxiaol ...

  4. Vue+element ui table 导出到excel

    需求: Vue+element UI table下的根据搜索条件导出当前所有数据 参考: https://blog.csdn.net/u010427666/article/details/792081 ...

  5. 基于vue(element ui) + ssm + shiro 的权限框架

    zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目 ...

  6. 分享一个自搭的框架,使用Spring boot+Vue+Element UI

    废弃,新的:https://www.cnblogs.com/hackyo/p/10453243.html 特点:前后端分离,可遵循restful 框架:后端使用Spring boot,整合了aop.a ...

  7. Vue + Element UI 实现权限管理系统

    Vue + Element UI 实现权限管理系统 前端篇(一):搭建开发环境 https://www.cnblogs.com/xifengxiaoma/p/9533018.html

  8. vue+element ui 的上传文件使用组件

    前言:工作中用到 vue+element ui 的前端框架,使用到上传文件,则想着封装为组件,达到复用,可扩展.转载请注明出处:https://www.cnblogs.com/yuxiaole/p/9 ...

  9. vue+element ui 的tab 动态增减,切换时提示用户是否切换

    前言:工作中用到 vue+element ui 的前端框架,动态添加 Tab,删除 Tab,切换 Tab 时提示用户是否切换等,发现 element ui  有一个 bug,这里记录一下如何实现.转载 ...

  10. 基于 vue+element ui 的cdn网站(多页面,都是各种demo)

    前言:这个网站持续更新中...,有网上预览,github上也有源码,喜欢记得star哦,欢迎留言讨论. 网站地址:我的个人vue+element ui demo网站 github地址:yuleGH g ...

随机推荐

  1. 使用 Habana Gaudi2 加速视觉语言模型 BridgeTower

    在对最先进的视觉语言模型 BridgeTower 进行微调时,使用 Optimum Habana v1.6, Habana Gaudi2 可以达到 近 3 倍于 A100 的速度.硬件加速的数据加载以 ...

  2. vue3 + ElementPlus 封装函数式弹窗组件

    需求场景:弹窗组件需要支持自定义的插槽内容,删除的弹窗也要使用这个组件,只是样式不一样而已,希望在父组件使用删除弹窗的时候直接调用某个方法就可以显示弹窗 组件模拟 cuDialog 假设我的弹窗组件有 ...

  3. go-zero 是如何做路由管理的?

    原文链接: go-zero 是如何做路由管理的? go-zero 是一个微服务框架,包含了 web 和 rpc 两大部分. 而对于 web 框架来说,路由管理是必不可少的一部分,那么本文就来探讨一下 ...

  4. SNAT与DNAT原理及应用

    SNAT与DNAT原理及应用 当内部地址要访问公网上的服务时(如httpd访问),内部地址会主动发起连接,由路由器或者防火墙上的网关对内部地址做个地址转换,将内部地址的私有IP转换为公网的公有IP,网 ...

  5. 【Bash】rm -r 与 rmdir 区别

    目录 背景 二者区别 rmdir rm -r rm -rf 测试过程 配置环境 rmdir rm -r rm -rf 参考资料 背景 今天学弟在使用 NVMe-over-TCP 时发现无法卸载 nvm ...

  6. C++ ASIO 实现异步套接字管理

    Boost ASIO(Asynchronous I/O)是一个用于异步I/O操作的C++库,该框架提供了一种方便的方式来处理网络通信.多线程编程和异步操作.特别适用于网络应用程序的开发,从基本的网络通 ...

  7. 原来你是这样的JAVA[06]-反射

    1.JVM为每个加载的class及interface创建了对应的Class实例来保存class及interface的所有信息: 获取一个class对应的Class实例后,就可以获取该class的所有信 ...

  8. git status详解

    git status详解 在使用Git进行版本控制时,git status是一个非常有用的命令,用于查看当前代码仓库的状态.它可以告诉你哪些文件已更改.添加或删除,以及是否有未提交的更改等.本篇博客文 ...

  9. Conda 命令深入指南

    Conda 命令深入指南 Conda 是一个功能强大的包管理系统,允许您为不同的项目创建和管理隔离的环境,从而更轻松地处理不同的依赖项集. 安装 可以按照 Conda 官方网站 (https://co ...

  10. Dami 本地过程调用框架(主打解耦),v0.24 发布

    Dami,专为本地多模块之间通讯解耦而设计(尤其是未知模块.隔离模块.领域模块).零依赖,特适合 DDD. 特点 结合 Bus 与 RPC 的概念,可作事件分发,可作接口调用,可作异步响应. 支持事务 ...