From 04acf6421dded7b6f6eef9d2cf41d0b4a0e8dd0d Mon Sep 17 00:00:00 2001 From: yiming <m13691596795@163.com> Date: 星期日, 28 四月 2024 09:23:10 +0800 Subject: [PATCH] 设置表单的bug --- packagePersonal/pages/userSetting/index.js | 516 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 500 insertions(+), 16 deletions(-) diff --git a/packagePersonal/pages/userSetting/index.js b/packagePersonal/pages/userSetting/index.js index 110615f..1bbd3e3 100644 --- a/packagePersonal/pages/userSetting/index.js +++ b/packagePersonal/pages/userSetting/index.js @@ -1,18 +1,41 @@ -// packagePersonal/pages/userSetting/index.js +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', + editType: '', + userInfoForm: { + icon: '', + nickName: '', + phone: '', + email: '', + captcha: '', + code: '', + }, + phoneError: false, + emailError: false, + imgCode: '', + countDown: 0, + mailCountDown: 0, + userInfoBox: false, + height: '', //灞忓箷楂樺害 }, /** * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍔犺浇 */ - onLoad(options) { - + onLoad() { + if (wx.getStorageSync(app.config.tokenKey)) { + this.getUserInfo() + } }, /** @@ -26,23 +49,484 @@ * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鏄剧ず */ onShow() { + var that = this; + // 鍔ㄦ�佽幏鍙栧睆骞曢珮搴� + wx.getSystemInfo({ + success: (result) => { + that.setData({ + height: result.windowHeight + }); + }, + }) + }, + // 鑾峰彇鐧诲綍鐢ㄦ埛韬唤 + getUserInfo() { + app.MG.identity.getCurrentAppUser().then(res => { + // 鐢ㄦ埛淇℃伅浼樺厛绾э細鏁欏笀璁よ瘉 > 寰俊 > 瀛︾敓锛堟敞鍐屾椂榛樿锛� + 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') + 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, + 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, + phoneNumber: phoneInfo?.credential, + Email: emailInfo ? emailInfo.credential : JSON.parse(teacherInfos.data).email + } + } else if (WeChatInfo) { + defaultUser = { + ...WeChatInfo, + 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 = { + 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 + } + } + this.setData({ + userInfo: defaultUser + }) + } + }); + }, + //淇敼鐢ㄦ埛绫诲瀷 + editUserInfo(e) { + let { + info + } = e.currentTarget.dataset + if (!this.data.userInfoBox) { + this.setData({ + userInfoBox: true, + editType: info, + "userInfoForm.captcha": "", + "userInfoForm.code": "", + "userInfoForm.nickName": this.data.userInfo.nickName, + }); + } + this.getImgCapcha() + }, + onVisibleChange(e) { + 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) { + 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: false, + }); + } + }, + + onEmailInput(e) { + 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({ + "userInfoForm.email": e.detail.value, + }); + } else { + this.setData({ + emailError: false, + }); + } + }, + + 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) { + this.setData({ + countDown: time, + }); + let conut = this.data.countDown; + timer = setInterval(() => { + conut-- + this.setData({ + countDown: conut, + }); + if (this.data.countDow == 0) { + clearInterval(timer) + timer = null + } + }, 1000) + } + }, + + getEmailCode() { + 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.getSecondEmail(60) + } else { + wx.showToast({ + title: '閭楠岃瘉鐮佸彂閫佸け璐�', + icon: 'none', + duration: 1000 + }) + this.getImgCapcha() + } + }) + } else { + wx.showToast({ + title: '璇峰~鍐欓偖绠辨垨鍥惧舰楠岃瘉鐮�', + icon: 'none', + duration: 1000 + }) + } + }, + 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.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 + } + 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') { + 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 + } + + 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() + } + }) + } }, - /** - * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰闅愯棌 - */ - onHide() { - + onCloseProtocol() { + this.setData({ + userInfoBox: false, + }); }, - - /** - * 鐢熷懡鍛ㄦ湡鍑芥暟--鐩戝惉椤甸潰鍗歌浇 - */ - onUnload() { - - }, - /** * 椤甸潰鐩稿叧浜嬩欢澶勭悊鍑芥暟--鐩戝惉鐢ㄦ埛涓嬫媺鍔ㄤ綔 */ -- Gitblit v1.9.1