const app = getApp() Page({ /** * 页面的初始数据 */ data: { userInfo: {}, defaultAvatarUrl: 'https://cdn-we-retail.ym.tencent.com/miniapp/usercenter/icon-user-center-avatar@2x.png', userInfoBox: false, editType: '', userInfoForm: { phone: '', email: '', captcha: '', code: '', }, phoneError: false, emailError: false, imgCode: '', countDown: 0, }, /** * 生命周期函数--监听页面加载 */ onLoad() { if (wx.getStorageSync(app.config.tokenKey)) { this.getUserInfo() } }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, // 获取登录用户身份 getUserInfo() { app.MG.identity.getCurrentAppUser().then(res => { // 用户信息优先级:教师认证 > 微信 > 学生(注册时默认) if (res) { let defaultUser = {}; let teacherRole = res.roleLinks.find((item) => item.role.refCode == 'teacher') let teacherInfos = res.infoList.find((item) => item.type == 'teacherInfo') let secretData = res.secretList.find(i => i.type == 'LoginNameAndPassword') let WeChatInfo = res.infoList.find((item) => item.type === "WeChat"); let phoneInfo = res.secretList.find((item) => item.type == 'MobilePhone') let emailInfo = res.secretList.find((item) => item.type == 'EMail') if (teacherRole && teacherInfos) { defaultUser = { ...teacherInfos, fullName: teacherInfos.fullName, icon: teacherInfos.icon, userId: res.userId, role: 'Teacher', roleId: teacherRole.role.id, phoneNumber: phoneInfo?.credential, Email: emailInfo ? emailInfo.credential : JSON.parse(teacherInfos.data).email } } else if (WeChatInfo) { defaultUser = { ...WeChatInfo, fullName: WeChatInfo.name, icon: WeChatInfo.icon, userId: res.userId, phoneNumber: phoneInfo?.credential, Email: emailInfo?.credential } } else if (secretData) { defaultUser = { fullName: secretData.credential, icon: "", userId: res.userId, phoneNumber: phoneInfo?.credential, Email: emailInfo?.credential } } this.setData({ userInfo: defaultUser }) } }); }, //修改用户类型 editUserInfo(e) { console.log(e) let { info } = e.currentTarget.dataset if (!this.data.userInfoBox) { this.setData({ userInfoBox: true, editType: info, "userInfoForm.captcha": "", "userInfoForm.code": "" }); } this.getImgCapcha() }, onVisibleChange(e) { this.setData({ userInfoBox: e.detail.visible, countDown: 0, }); }, //输入手机号 onPhoneInput(e) { console.log(e) const { phoneError } = this.data; const isPhoneNumber = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/.test(e.detail.value); if (phoneError === isPhoneNumber) { this.setData({ phoneError: !isPhoneNumber, "userInfoForm.phone": e.detail.value, }); } }, onEmailInput(e) { const { emailError } = this.data; const isPhoneNumber = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/.test(e.detail.value); if (emailError === isPhoneNumber) { this.setData({ emailError: !isPhoneNumber, "userInfoForm.email": e.detail.value, }); } }, getImgCapcha() { app.MG.identity.getImgCode().then((res) => { this.setData({ imgCode: 'data:image/png;base64,' + res, }); }) }, //图形验证码 onCaptchaInput(e) { this.setData({ "userInfoForm.captcha": e.detail.value, }); }, //短信邮箱验证码 onCodeInput(e) { this.setData({ "userInfoForm.code": e.detail.value, }); }, getPhoneCode() { if (this.data.userInfoForm.phone && this.data.userInfoForm.captcha) { app.MG.identity .getPhoneCode({ phoneNumber: this.data.userInfoForm.phone, imageCaptcha: this.data.userInfoForm.captcha, appRefCode: app.config.appRefCode }) .then((res) => { if (res == '验证码发送成功') { wx.showToast({ title: res, icon: 'none', duration: 1000 }) // 开启短信验证倒计时 this.getSecond(60) } else { wx.showToast({ title: res, icon: 'none', duration: 1000 }) this.getImgCapcha() } }) } else { wx.showToast({ title: '请填写手机号或图形验证码', icon: 'none', duration: 1000 }) } }, getSecond(time) { let timer = null if (!timer) { let countDown = time; this.setData({ countDown: time, }); timer = setInterval(() => { countDown-- this.setData({ countDown: countDown, }); if (this.data.countDow == 0) { clearInterval(timer) timer = null } }, 1000) } }, getEmailCode() { console.log(this.data.userInfoForm.email) if (this.data.userInfoForm.email && this.data.userInfoForm.captcha) { app.MG.identity .getEmailCode({ sendEmail: this.data.userInfoForm.email, captcha: this.data.userInfoForm.captcha, appRefCode: app.config.appRefCode }) .then((res) => { if (res == true) { wx.showToast({ title: '验证码已发送', icon: 'none', duration: 1000 }) // 开启短信验证倒计时 this.getSecond(60) } else { wx.showToast({ title: '邮箱验证码发送失败', icon: 'none', duration: 1000 }) this.getImgCapcha() } }) } else { wx.showToast({ title: '请填写邮箱或图形验证码', icon: 'none', duration: 1000 }) } }, confirmInfo() { if (this.data.changeType == 'phone') { let query = { phoneNumber: this.data.userInfoForm.phone, phoneCaptcha: this.data.userInfoForm.code } app.MG.identity.userSetPhoneNumber(query).then((res) => { if (res == '验证码过期或错误') { wx.showToast({ title: res + ',请稍后重试', icon: 'none', duration: 1000 }) } else if (res == '此手机号码已被其它账号绑定') { wx.showToast({ title: res + ',请更换其他手机号。', icon: 'none', duration: 1000 }) } else { wx.showToast({ title: res, icon: 'none', duration: 1000 }) this.setData({ userInfoBox: false, }); this.getUserInfo() } }) } else if (this.data.editType == 'email') { let query = { eMail: this.data.userInfoForm.email, captcha: this.data.userInfoForm.code } app.MG.identity.bindingEmail(query).then((res) => { if (res == '验证码过期') { wx.showToast({ title: res + ',请稍后重试。', icon: 'none', duration: 1000 }) } else if (res == '此邮箱已被其它账号绑定') { wx.showToast({ title: res + ',请更换其他邮箱。', icon: 'none', duration: 1000 }) } else if (res == '验证码无效') { wx.showToast({ title: res, icon: 'none', duration: 1000 }) } else { wx.showToast({ title: res, icon: 'none', duration: 1000 }) this.setData({ userInfoBox: false, }); this.getUserInfo() } }) } }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })