123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209 |
- <template>
- <view>
- <u-cell-group>
- <u-cell-item title="头像" @click="editAvatar">
- <image :src="avatarUrl" class="avatar"></image>
- </u-cell-item>
- <u-cell-item title="昵称" :value="nickname" @click="editNickName"></u-cell-item>
- </u-cell-group>
- <u-modal v-model="show" :show-cancel-button="true" title="修改昵称">
- <view class="slot-content">
- <u-input v-model="nickname" />
- </view>
- </u-modal>
- <view style="position: fixed;bottom: 50rpx;width: 100%;padding: 20rpx;">
- <button @click="submitForm" class="submit_btn">保存</button>
-
- <button @click="exit" class="exit_btn">退出登录</button>
- </view>
-
- </view>
- </template>
- <script>
- import {mapGetters} from 'vuex';
- export default {
- data() {
- return {
- show: false,
- avatarUrl:'',
- nickname:'',
- url:''
- }
- },
- onLoad(option) {
- this.avatarUrl = this.$method.splitImgHost(this.userInfo.avatar)
- this.nickname = this.userInfo.nickname
- },
- methods: {
- imageInfos(){
- var self = this
- return new Promise((resolve, reject) => {
- uni.getImageInfo({
- src: self.avatarUrl,
- success: async res => {
- let canvasWidth = res.width; //图片原始长宽
- let canvasHeight = res.height;
- if (canvasWidth > 2000 || canvasHeight > 2000) {
- uni.compressImage({
- src: self.avatarUrl,
- quality: 75,
- width: '35%',
- height: '35%',
- success: async rest => {
- const waitUpload = await self.uploadFile(rest.tempFilePath, 0);
- resolve(waitUpload)
- }
- });
- } else if (canvasWidth > 1000 || canvasHeight > 1000) {
- uni.compressImage({
- src: self.avatarUrl,
- quality: 75,
- width: '50%',
- height: '50%',
- success: async rest => {
- const waitUpload = await self.uploadFile(rest.tempFilePath, 0);
- resolve(waitUpload)
- }
- });
- } else {
- console.log('无需压缩');
- const waitUpload = await self.uploadFile(self.avatarUrl, 0);
- resolve(waitUpload)
- }
- }
- });
- });
- },
- uploadFile(options, int) {
- var self = this;
- return new Promise((resolve, reject) => {
- var data = {
- imageStatus: int
- };
- self.$api.aliyunpolicy(data).then(res => {
- console.log(res.data,6)
- if(res.data.code!=200){
- self.$method.showToast('签名错误'+JSON.stringify(res.data))
- return
- }
- var ossToken = res.data.data.resultContent;
- if(ossToken.host==null||ossToken.host==undefined){
- self.$method.showToast('上传路径报错'+JSON.stringify(res.data))
- return
- }
- uni.uploadFile({
- url: ossToken.host,
- name: 'file',
- filePath: options,
- fileType: 'image',
- header: {
- AuthorizationToken: 'WX ' + uni.getStorageSync('token')
- },
- formData: {
- key: ossToken.dir,
- OSSAccessKeyId: ossToken.accessid,
- policy: ossToken.policy,
- Signature: ossToken.signature,
- callback: ossToken.callback,
- success_action_status: 200
- },
- success: result => {
- // if (result.statusCode === 200) {
- self.userInfo.avatar = ossToken.dir;
- resolve();
- // } else {
- // uni.showToast({
- // title: '上传失败',
- // icon: 'none'
- // });
- // return;
- // }
- },
- fail: error => {
- uni.showToast({
- title: '上传接口报错'+error,
- icon: 'none'
- });
- return;
- }
- });
- });
- });
- },
- updateInfo(){
- let self = this
- this.$api.appuserInfo(this.userInfo).then(res => {
- if (res.data.code === 200) {
- self.$method.showToast('提交成功')
- self.$api.refreshUserInfo()
- }
- });
- },
- submitForm(){
- if(this.nickname==''){
- uni.showModal({
- title: "提示",
- content: '昵称不能为空',
- showCancel: false
- })
- return
- }
- this.userInfo.nickname=this.nickname
- this.submit()
- },
- async submit(){
- if(this.avatarUrl!=this.$method.splitImgHost(this.userInfo.avatar)){
- const waitYS = await this.imageInfos();
- }
- this.updateInfo()
- },
- exit(){
- this.$method.exit()
- },
- editNickName(){
- this.show = true
- },
- editAvatar(){
- let that = this
- uni.chooseImage({
- count: 1, //默认9
- sizeType: [ 'compressed'], //可以指定是原图还是压缩图,默认二者都有
- success: function (res) {
- that.avatarUrl = res.tempFilePaths[0]
- }
- });
- }
-
- },
- computed: {...mapGetters(['userInfo'])}
- }
- </script>
- <style scope>
- .exit_btn{
- font-size: 30rpx;
- margin-top: 30rpx;
- padding: 5rpx;
- }
- .submit_btn{
- background-color: #32467B !important;
- border-color: #32467B !important;
- color: #FFFFFF;
- font-size: 30rpx;
- padding: 5rpx;
- }
- .slot-content{
- margin: 30rpx;
- color: #606266;
- }
- .avatar{
- height: 70rpx;
- width: 70rpx;
- border-radius: 50%;
-
- }
- page {
- background: #FFFFFF;
- }
- </style>
|