css
litian
2024-04-12 75c63ae6c5cb34c777c9fb3b375379952f7995b4
packagePersonal/pages/userSetting/index.js
@@ -1,4 +1,5 @@
const app = getApp()
import SparkMD5 from 'spark-md5'
import tool from "../../../assets/js/toolClass.js";
import FormData from '../../../utils/formdata/index.js';
Page({
@@ -9,7 +10,7 @@
  data: {
    userInfo: {},
    defaultAvatarUrl: 'https://cdn-we-retail.ym.tencent.com/miniapp/usercenter/icon-user-center-avatar@2x.png',
    userInfoBox: false,
    editType: '',
    userInfoForm: {
      icon: '',
@@ -23,6 +24,8 @@
    emailError: false,
    imgCode: '',
    countDown: 0,
    userInfoBox: false,
    height: '', //屏幕高度
  },
  /**
@@ -45,7 +48,15 @@
   * 生命周期函数--监听页面显示
   */
  onShow() {
    var that = this;
    // 动态获取屏幕高度
    wx.getSystemInfo({
      success: (result) => {
        that.setData({
          height: result.windowHeight
        });
      },
    })
  },
  // 获取登录用户身份
  getUserInfo() {
@@ -63,7 +74,7 @@
        if (teacherRole && teacherInfos) {
          defaultUser = {
            ...teacherInfos,
            nickName: nickNameData ? JSON.parse(nickNameData.data).nickName : teacherInfos.name,
            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',
@@ -74,8 +85,8 @@
        } else if (WeChatInfo) {
          defaultUser = {
            ...WeChatInfo,
            nickName: nickNameData ? JSON.parse(nickNameData.data).nickName : WeChatInfo.name,
            icon: JSON.parse(nickNameData.data).icon ? JSON.parse(nickNameData.data).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
@@ -106,7 +117,7 @@
        editType: info,
        "userInfoForm.captcha": "",
        "userInfoForm.code": "",
        "userInfoForm.nickName": ''
        "userInfoForm.nickName": this.data.userInfo.nickName,
      });
    }
    this.getImgCapcha()
@@ -120,72 +131,78 @@
  editIconInfo(e) {
    var that = this;
    wx.chooseMedia({
      // count: 1, // 默认9
      count: 1, // 默认9
      sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
      sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
      success: function (res) {
        // 返回选定照片的本地文件路径列表,tempFilePath也可以作为img标签的src属性显示图片
        tool.getFileMd5(res.tempFiles[0]).then((e) => {
          let formData = new FormData();
          formData.append('Md5', e);
          formData.append('FileName', e);
          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=` + e,
                    });
                    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,
                        })
                        this.getUserInfo()
                        this.setData({
                          userInfoBox: false,
                        });
        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('运行时错误,请稍后再试');
                  }
                } else {
                  reject('运行时错误,请稍后再试');
                }
              }
              })
            })
          })
          }
        })
      }
    });
@@ -200,11 +217,17 @@
    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) {
    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,
      });
    }
  },
@@ -213,11 +236,19 @@
    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) {
    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,
      });
    }
  },
@@ -280,14 +311,14 @@
  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)
@@ -312,8 +343,6 @@
              icon: 'none',
              duration: 1000
            })
            // 开启短信验证倒计时
            this.getSecond(60)
          } else {
            wx.showToast({
              title: '邮箱验证码发送失败',
@@ -334,6 +363,14 @@
  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({
@@ -359,6 +396,22 @@
      })
    } 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
@@ -390,6 +443,22 @@
        }
      })
    } 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
@@ -430,6 +499,12 @@
    }
  },
  onCloseProtocol() {
    this.setData({
      userInfoBox: false,
    });
  },
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */