<template> <view class="main pdt0"> <view class="form"> <view class="form_group"> <view class="lable re" style="margin-top: 19px">头像</view> <image :src="user.avatar ? ip + user.avatar : '../../static/head.png'" class="head" @click="choice()"></image> </view> <view class="form_group"> <view class="lable re">姓名</view> <input v-model="user.nickName" placeholder="请输入姓名" /> </view> <view class="form_group"> <view class="lable">科室</view> <view class="desc">{{ user.dept.deptName }}</view> </view> <view class="form_group"> <view class="lable">角色</view> <view class="desc" v-if="user.roles.length > 0">{{ user.roles[0].roleName }}</view> </view> <view class="form_group"> <view class="lable re">个人介绍</view> </view> <leditor ref="editor" v-model="user.introduce"></leditor> </view> <button class="btn" @click="save()"> <text class="icon"></text> <text>确认修改</text> </button> </view> </template> <script> export default { data() { return { ip: this.http.ip, user: this.getUser() }; }, onLoad() { setTimeout(() => { this.$refs.editor.setContents(); }, 300); // 监听从裁剪页发布的事件,获得裁剪结果 uni.$on('uAvatarCropper', (path) => { uni.showLoading({ title: '正在上传...', mask: true }); // 上传到服务端 uni.uploadFile({ url: this.ip + '/system/user/profile/avatar', filePath: path, name: 'avatarfile', header: { Authorization: this.getUser().token }, contentType: 'application/x-www-form-urlencoded', success: (res) => { let r = JSON.parse(res.data); if (r.code === 200) { uni.showToast({ title: '更新成功' }); this.user.avatar = r.imgUrl; let user = this.getUser(); user.avatar = this.user.avatar; uni.setStorageSync('user', user); this.$forceUpdate(); } else { uni.hideLoading(); uni.showModal({ content: r.msg, showCancel: false }); } } }); }); }, methods: { choice() { uni.navigateTo({ url: '/components/u-avatar-cropper/u-avatar-cropper?destWidth=100&rectWidth=140&fileType=jpg' }); }, save() { let rule = [ { name: 'avatar', checkType: 'notnull', errorMsg: '请上传头像' }, { name: 'nickName', checkType: 'notnull', errorMsg: '请输入姓名' }, { name: 'introduce', checkType: 'editor', errorMsg: '请输入个人介绍' } ]; if (!this.verify.check(this.user, rule)) { uni.showModal({ content: this.verify.error, showCancel: false }); return false; } this.http.request({ url: '/system/user/editInfo', data: { nickName: this.user.nickName, introduce: this.user.introduce }, method: 'POST', success: (res) => { let user = this.getUser(); user.nickName = this.user.nickName; user.introduce = this.user.introduce; uni.setStorageSync('user', user); uni.showToast({ title: '编辑成功' }); } }); } } }; </script> <style lang="scss"> .form { .head { width: 40px; height: 60px; border-radius: 3px; float: right; } input { padding: 4px 0px 0px 3px; } } </style>