[代码完善](v2.5): v2.5 用户头像裁剪上传

This commit is contained in:
ZhengJie
2020-05-23 18:49:42 +08:00
parent c7e2a881de
commit dcf931def8
2 changed files with 19 additions and 38 deletions

View File

@@ -65,7 +65,8 @@
"vuedraggable": "2.20.0", "vuedraggable": "2.20.0",
"vuex": "3.1.0", "vuex": "3.1.0",
"wangeditor": ">=3.0.0", "wangeditor": ">=3.0.0",
"xlsx": "^0.11.16" "xlsx": "^0.11.16",
"vue-image-crop-upload": "^2.5.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "7.0.0", "@babel/core": "7.0.0",

View File

@@ -8,16 +8,15 @@
</div> </div>
<div> <div>
<div style="text-align: center"> <div style="text-align: center">
<el-upload <div class="el-upload">
:show-file-list="false" <img :src="user.avatarName ? baseApi + '/avatar/' + user.avatarName : Avatar" title="点击上传头像" class="avatar" @click="toggleShow">
:on-success="handleSuccess" <myUpload
:on-error="handleError" v-model="show"
:headers="headers" :headers="headers"
:action="updateAvatarApi" :url="updateAvatarApi"
class="avatar-uploader" @crop-upload-success="cropUploadSuccess"
> />
<img :src="user.avatarName ? baseApi + '/avatar/' + user.avatarName : Avatar" title="点击上传头像" class="avatar"> </div>
</el-upload>
</div> </div>
<ul class="user-info"> <ul class="user-info">
<li><div style="height: 100%"><svg-icon icon-class="login" /> 登录账号<div class="user-right">{{ user.username }}</div></div></li> <li><div style="height: 100%"><svg-icon icon-class="login" /> 登录账号<div class="user-right">{{ user.username }}</div></div></li>
@@ -106,6 +105,7 @@
</template> </template>
<script> <script>
import myUpload from 'vue-image-crop-upload'
import { mapGetters } from 'vuex' import { mapGetters } from 'vuex'
import updatePass from './center/updatePass' import updatePass from './center/updatePass'
import updateEmail from './center/updateEmail' import updateEmail from './center/updateEmail'
@@ -118,7 +118,7 @@ import { editUser } from '@/api/system/user'
import Avatar from '@/assets/images/avatar.png' import Avatar from '@/assets/images/avatar.png'
export default { export default {
name: 'Center', name: 'Center',
components: { updatePass, updateEmail }, components: { updatePass, updateEmail, myUpload },
mixins: [crud], mixins: [crud],
data() { data() {
// 自定义验证 // 自定义验证
@@ -132,6 +132,7 @@ export default {
} }
} }
return { return {
show: false,
Avatar: Avatar, Avatar: Avatar,
activeName: 'first', activeName: 'first',
saveLoading: false, saveLoading: false,
@@ -163,6 +164,9 @@ export default {
}, },
methods: { methods: {
parseTime, parseTime,
toggleShow() {
this.show = !this.show
},
handleClick(tab, event) { handleClick(tab, event) {
if (tab.name === 'second') { if (tab.name === 'second') {
this.init() this.init()
@@ -172,23 +176,9 @@ export default {
this.url = 'api/logs/user' this.url = 'api/logs/user'
return true return true
}, },
handleSuccess(response, file, fileList) { cropUploadSuccess(jsonData, field) {
this.$notify({
title: '头像修改成功',
type: 'success',
duration: 2500
})
store.dispatch('GetInfo').then(() => {}) store.dispatch('GetInfo').then(() => {})
}, },
// 监听上传失败
handleError(e, file, fileList) {
const msg = JSON.parse(e.message)
this.$notify({
title: msg.message,
type: 'error',
duration: 2500
})
},
doSubmit() { doSubmit() {
if (this.$refs['form']) { if (this.$refs['form']) {
this.$refs['form'].validate((valid) => { this.$refs['form'].validate((valid) => {
@@ -210,19 +200,10 @@ export default {
</script> </script>
<style rel="stylesheet/scss" lang="scss"> <style rel="stylesheet/scss" lang="scss">
.avatar-uploader-icon {
font-size: 28px;
width: 120px;
height: 120px;
line-height: 120px;
text-align: center
}
.avatar { .avatar {
width: 120px; width: 120px;
height: 120px; height: 120px;
display: block; border-radius: 50%;
border-radius: 50%
} }
.user-info { .user-info {
padding-left: 0; padding-left: 0;
@@ -234,7 +215,6 @@ export default {
} }
.user-right { .user-right {
float: right; float: right;
a{ a{
color: #317EF3; color: #317EF3;
} }