shop_xcx/pages/usercenter/person-info/index.js

196 lines
4.3 KiB
JavaScript

import {
fetchPerson
} from '~/services/usercenter/fetchPerson';
import {
updatePerson
} from '~/services/usercenter/updatePerson';
import {
phoneEncryption
} from '~/utils/util';
import Toast from 'tdesign-miniprogram/toast/index';
Page({
data: {
personInfo: {
avatarUrl: '',
nickName: '',
gender: 0,
phoneNumber: '',
},
showUnbindConfirm: false,
pickerOptions: [{
name: '男',
code: '1',
},
{
name: '女',
code: '2',
},
],
typeVisible: false,
genderMap: ['', '男', '女'],
},
onLoad() {
this.init();
},
init() {
this.fetchData();
},
fetchData() {
fetchPerson().then(({
personInfo
}) => {
this.setData({
personInfo,
'personInfo.phoneNumber': phoneEncryption(personInfo.phoneNumber),
});
});
},
/** 提交 */
submit() {
let personInfo = this.data.personInfo
let data = {
customerAvatar: personInfo.avatarUrl,
customerNickname: personInfo.nickName,
customerGender: personInfo.gender,
}
updatePerson(data).then((res) => {
if (res.code == 200) {
Toast({
context: this,
selector: '#t-toast',
message: `保存成功`,
theme: 'success',
})
wx.reLaunch({
url: `/pages/usercenter/index`,
});
}
})
},
/** 点击单元格 */
onClickCell({
currentTarget
}) {
const {
dataset
} = currentTarget;
const {
nickName
} = this.data.personInfo;
switch (dataset.type) {
case 'gender':
this.setData({
typeVisible: true,
});
break;
case 'name':
wx.navigateTo({
url: `/pages/usercenter/name-edit/index?name=${nickName}`,
});
break;
case 'avatarUrl':
this.toModifyAvatar();
break;
default: {
break;
}
}
},
onClose() {
this.setData({
typeVisible: false,
});
},
onConfirm(e) {
const {
value
} = e.detail;
this.setData({
typeVisible: false,
'personInfo.gender': value,
},
() => {
Toast({
context: this,
selector: '#t-toast',
message: '设置成功',
theme: 'success',
});
},
);
},
/** 修改昵称 */
changeNickName(e) {
this.setData({
'personInfo.nickName': e.detail.value
})
},
/** 修改头像 */
async toModifyAvatar() {
let that = this
try {
const tempFilePath = await new Promise((resolve, reject) => {
wx.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['album', 'camera'],
success: (res) => {
const {
path,
size
} = res.tempFiles[0];
const tempFilePaths = res.tempFilePaths;
let tempFilePath = tempFilePaths[0];
// 上传图片到服务器
wx.uploadFile({
url: 'http://localhost:8888/api/Common/UploadFile', // 上传接口地址
filePath: tempFilePath, // 要上传的文件的临时路径
name: 'file', // 上传文件对应的字段名
success: function (uploadRes) {
// 上传成功,服务器返回的数据
let url = JSON.parse(uploadRes.data).data.url
that.setData({
'personInfo.avatarUrl': url
})
},
fail: function (uploadError) {
// 上传失败,处理错误
console.error(uploadError);
}
});
if (size <= 10485760) {
resolve(path);
} else {
reject({
errMsg: '图片大小超出限制,请重新上传'
});
}
},
fail: (err) => reject(err),
});
});
Toast({
context: this,
selector: '#t-toast',
message: `头像上传成功`,
theme: 'success',
})
} catch (error) {
if (error.errMsg === 'chooseImage:fail cancel') return;
Toast({
context: this,
selector: '#t-toast',
message: error.errMsg || error.msg || '修改头像出错了',
theme: 'error',
});
}
},
});