| | |
| | | const app = getApp() |
| | | import SparkMD5 from 'spark-md5' |
| | | import tool from "../../../assets/js/toolClass.js"; |
| | | import FormData from '../../../utils/formdata/index.js'; |
| | | Page({ |
| | | |
| | | /** |
| | |
| | | data: { |
| | | userInfo: {}, |
| | | defaultAvatarUrl: 'https://cdn-we-retail.ym.tencent.com/miniapp/usercenter/icon-user-center-avatar@2x.png', |
| | | userInfoBox: false, |
| | | |
| | | editType: '', |
| | | userInfoForm: { |
| | | icon: '', |
| | | nickName: '', |
| | | phone: '', |
| | | email: '', |
| | | captcha: '', |
| | |
| | | emailError: false, |
| | | imgCode: '', |
| | | countDown: 0, |
| | | mailCountDown: 0, |
| | | userInfoBox: false, |
| | | height: '', //屏幕高度 |
| | | }, |
| | | |
| | | /** |
| | |
| | | * 生命周期函数--监听页面显示 |
| | | */ |
| | | onShow() { |
| | | |
| | | var that = this; |
| | | // 动态获取屏幕高度 |
| | | wx.getSystemInfo({ |
| | | success: (result) => { |
| | | that.setData({ |
| | | height: result.windowHeight |
| | | }); |
| | | }, |
| | | }) |
| | | }, |
| | | // 获取登录用户身份 |
| | | getUserInfo() { |
| | |
| | | // 用户信息优先级:教师认证 > 微信 > 学生(注册时默认) |
| | | if (res) { |
| | | let defaultUser = {}; |
| | | let nickNameData = res.infoList.find((item) => item.type == 'nickName') |
| | | 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') |
| | |
| | | if (teacherRole && teacherInfos) { |
| | | defaultUser = { |
| | | ...teacherInfos, |
| | | fullName: teacherInfos.fullName, |
| | | icon: teacherInfos.icon, |
| | | nickName: nickNameData ? JSON.parse(nickNameData.data).nickName : WeChatInfo ? WeChatInfo.name : '', |
| | | icon: nickNameData ? JSON.parse(nickNameData.data).icon : WeChatInfo ? WeChatInfo.icon : '', |
| | | userId: res.userId, |
| | | role: 'Teacher', |
| | | roleId: teacherRole.role.id, |
| | |
| | | } else if (WeChatInfo) { |
| | | defaultUser = { |
| | | ...WeChatInfo, |
| | | fullName: WeChatInfo.name, |
| | | icon: WeChatInfo.icon, |
| | | nickName: nickNameData && JSON.parse(nickNameData.data).nickName ? JSON.parse(nickNameData.data).nickName : WeChatInfo.name, |
| | | icon: nickNameData && JSON.parse(nickNameData.data).icon ? JSON.parse(nickNameData.data).icon : WeChatInfo.icon, |
| | | userId: res.userId, |
| | | phoneNumber: phoneInfo?.credential, |
| | | Email: emailInfo?.credential |
| | | } |
| | | } else if (secretData) { |
| | | defaultUser = { |
| | | fullName: secretData.credential, |
| | | icon: "", |
| | | nickName: nickNameData ? JSON.parse(nickNameData.data).nickName : secretData.credential, |
| | | icon: JSON.parse(nickNameData.data).icon ? JSON.parse(nickNameData.data).icon : '', |
| | | userId: res.userId, |
| | | phoneNumber: phoneInfo?.credential, |
| | | Email: emailInfo?.credential |
| | |
| | | }, |
| | | //修改用户类型 |
| | | editUserInfo(e) { |
| | | console.log(e) |
| | | let { info } = e.currentTarget.dataset |
| | | let { |
| | | info |
| | | } = e.currentTarget.dataset |
| | | if (!this.data.userInfoBox) { |
| | | this.setData({ |
| | | userInfoBox: true, |
| | | editType: info, |
| | | "userInfoForm.captcha": "", |
| | | "userInfoForm.code": "" |
| | | "userInfoForm.code": "", |
| | | "userInfoForm.nickName": this.data.userInfo.nickName, |
| | | }); |
| | | } |
| | | this.getImgCapcha() |
| | |
| | | this.setData({ |
| | | userInfoBox: e.detail.visible, |
| | | countDown: 0, |
| | | mailCountDown: 0 |
| | | }); |
| | | }, |
| | | |
| | | editIconInfo(e) { |
| | | var that = this; |
| | | wx.chooseMedia({ |
| | | count: 1, // 默认9 |
| | | sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有 |
| | | sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有 |
| | | success: function (res) { |
| | | wx.getFileSystemManager().readFile({ |
| | | filePath: res.tempFiles[0].tempFilePath, //选择图片返回的相对路径 |
| | | // encoding: 'binary', //编码格式 |
| | | success: ress => { |
| | | //成功的回调 |
| | | let spark = new SparkMD5.ArrayBuffer(); |
| | | spark.append(ress.data); |
| | | let md5 = spark.end(false); |
| | | let formData = new FormData(); |
| | | formData.append('Md5', md5); |
| | | formData.append('FileName', md5); |
| | | formData.append('FileType', res.tempFiles[0].fileType); |
| | | formData.appendFile("file", res.tempFiles[0].tempFilePath); |
| | | const data = formData.getData(); |
| | | let _token = wx.getStorageSync(app.config.tokenKey); |
| | | let header = {}; |
| | | if (_token == null) { |
| | | header["Authorization"] = `Basic ${Base64.encode(website.clientId + ":" + website.clientSecret)}`; |
| | | } else { |
| | | header["Authorization"] = `Bearer ` + _token; |
| | | } |
| | | new Promise((resolve, reject) => { |
| | | wx.request({ |
| | | url: app.config.requestCtx + '/file/api/ApiUpload', |
| | | method: 'POST', |
| | | header: { |
| | | 'content-type': data.contentType, |
| | | ...header |
| | | }, |
| | | data: data.buffer, |
| | | success(res) { |
| | | if (res.statusCode == 200) { |
| | | resolve(res.data); |
| | | if (res.data) { |
| | | that.setData({ |
| | | 'userInfoForm.icon': app.config.requestCtx + `/file/GetPreViewImage?md5=` + md5, |
| | | }); |
| | | let userTypeInfo = { |
| | | "requests": [{ |
| | | data: JSON.stringify({ |
| | | nickName: that.data.userInfo.nickName, |
| | | icon: that.data.userInfoForm.icon |
| | | }), |
| | | name: '用户昵称头像', |
| | | type: 'nickName' |
| | | }] |
| | | } |
| | | app.MG.identity.setAppUserInfo(userTypeInfo).then((res) => { |
| | | if (res) { |
| | | wx.showToast({ |
| | | title: "修改成功", |
| | | icon: 'success', |
| | | duration: 1000, |
| | | }) |
| | | that.getUserInfo() |
| | | that.setData({ |
| | | userInfoBox: false, |
| | | }); |
| | | } |
| | | }) |
| | | } |
| | | } else { |
| | | reject('运行时错误,请稍后再试'); |
| | | } |
| | | } |
| | | }) |
| | | }) |
| | | } |
| | | }) |
| | | } |
| | | }); |
| | | }, |
| | | onNameInput(e) { |
| | | this.setData({ |
| | | "userInfoForm.nickName": e.detail.value, |
| | | }); |
| | | }, |
| | | //输入手机号 |
| | | 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) { |
| | | const { |
| | | phoneError |
| | | } = this.data; |
| | | if (e.detail.value) { |
| | | 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, |
| | | }); |
| | | } |
| | | } else { |
| | | this.setData({ |
| | | phoneError: !isPhoneNumber, |
| | | "userInfoForm.phone": e.detail.value, |
| | | phoneError: false, |
| | | }); |
| | | } |
| | | }, |
| | | |
| | | 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) { |
| | | const { |
| | | emailError |
| | | } = this.data; |
| | | if (e.detail.value) { |
| | | 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, |
| | | }); |
| | | } |
| | | this.setData({ |
| | | emailError: !isPhoneNumber, |
| | | "userInfoForm.email": e.detail.value, |
| | | }); |
| | | } else { |
| | | this.setData({ |
| | | emailError: false, |
| | | }); |
| | | } |
| | | }, |
| | |
| | | }, |
| | | |
| | | getPhoneCode() { |
| | | if (this.data.countDown > 0) return false |
| | | if (this.data.userInfoForm.phone && this.data.userInfoForm.captcha) { |
| | | app.MG.identity |
| | | .getPhoneCode({ |
| | |
| | | getSecond(time) { |
| | | let timer = null |
| | | if (!timer) { |
| | | let countDown = time; |
| | | this.setData({ |
| | | countDown: time, |
| | | }); |
| | | let conut = this.data.countDown; |
| | | timer = setInterval(() => { |
| | | countDown-- |
| | | conut-- |
| | | this.setData({ |
| | | countDown: countDown, |
| | | countDown: conut, |
| | | }); |
| | | if (this.data.countDow == 0) { |
| | | clearInterval(timer) |
| | |
| | | }, |
| | | |
| | | getEmailCode() { |
| | | console.log(this.data.userInfoForm.email) |
| | | if (this.data.userInfoForm.email && this.data.userInfoForm.captcha) { |
| | | app.MG.identity |
| | | .getEmailCode({ |
| | |
| | | duration: 1000 |
| | | }) |
| | | // 开启短信验证倒计时 |
| | | this.getSecond(60) |
| | | this.getSecondEmail(60) |
| | | } else { |
| | | wx.showToast({ |
| | | title: '邮箱验证码发送失败', |
| | |
| | | }) |
| | | } |
| | | }, |
| | | getSecondEmail(time) { |
| | | if (this.data.mailCountDown <= 0) { |
| | | this.setData({ |
| | | mailCountDown: time, |
| | | }); |
| | | |
| | | let timer = setInterval(() => { |
| | | let count = this.data.mailCountDown - 1; |
| | | this.setData({ |
| | | mailCountDown: count, |
| | | }); |
| | | |
| | | if (count === 0) { |
| | | clearInterval(timer); |
| | | } |
| | | }, 1000); |
| | | } |
| | | }, |
| | | |
| | | confirmInfo() { |
| | | if (this.data.changeType == 'phone') { |
| | | if (this.data.editType == 'nickName') { |
| | | if (!this.data.userInfoForm.nickName) { |
| | | wx.showToast({ |
| | | title: '请输入昵称', |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | return false; |
| | | } |
| | | let userTypeInfo = { |
| | | "requests": [{ |
| | | data: JSON.stringify({ |
| | | nickName: this.data.userInfoForm.nickName, |
| | | icon: this.data.userInfo.icon |
| | | }), |
| | | name: '用户昵称头像', |
| | | type: 'nickName' |
| | | }] |
| | | } |
| | | app.MG.identity.setAppUserInfo(userTypeInfo).then((res) => { |
| | | if (res) { |
| | | wx.showToast({ |
| | | title: "修改成功", |
| | | icon: 'success', |
| | | duration: 1000, |
| | | }) |
| | | this.getUserInfo() |
| | | this.setData({ |
| | | userInfoBox: false, |
| | | }); |
| | | } |
| | | }) |
| | | |
| | | } else if (this.data.editType == 'phone') { |
| | | if (!this.data.userInfoForm.phone) { |
| | | wx.showToast({ |
| | | title: '请输入手机号', |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | return false; |
| | | } |
| | | if (!this.data.userInfoForm.code) { |
| | | wx.showToast({ |
| | | title: '请输入验证码', |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | return false; |
| | | } |
| | | let query = { |
| | | phoneNumber: this.data.userInfoForm.phone, |
| | | phoneCaptcha: this.data.userInfoForm.code |
| | |
| | | } |
| | | }) |
| | | } else if (this.data.editType == 'email') { |
| | | if (!this.data.userInfoForm.email) { |
| | | wx.showToast({ |
| | | title: '请输入邮箱', |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | return false; |
| | | } |
| | | if (!this.data.userInfoForm.code) { |
| | | wx.showToast({ |
| | | title: '请输入验证码', |
| | | icon: 'none', |
| | | duration: 1000 |
| | | }) |
| | | return false; |
| | | } |
| | | let query = { |
| | | eMail: this.data.userInfoForm.email, |
| | | captcha: this.data.userInfoForm.code |
| | |
| | | } |
| | | |
| | | }, |
| | | |
| | | onCloseProtocol() { |
| | | this.setData({ |
| | | userInfoBox: false, |
| | | }); |
| | | }, |
| | | /** |
| | | * 页面相关事件处理函数--监听用户下拉动作 |
| | | */ |