index.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. import { fetchPerson } from '../../../services/usercenter/fetchPerson';
  2. import { phoneEncryption } from '../../../utils/util';
  3. import Toast from 'tdesign-miniprogram/toast/index';
  4. Page({
  5. data: {
  6. personInfo: {
  7. avatarUrl: '',
  8. nickName: '',
  9. gender: 0,
  10. phoneNumber: '',
  11. },
  12. showUnbindConfirm: false,
  13. pickerOptions: [
  14. {
  15. name: '男',
  16. code: '1',
  17. },
  18. {
  19. name: '女',
  20. code: '2',
  21. },
  22. ],
  23. typeVisible: false,
  24. genderMap: ['', '男', '女'],
  25. },
  26. onLoad() {
  27. this.init();
  28. },
  29. init() {
  30. this.fetchData();
  31. },
  32. fetchData() {
  33. fetchPerson().then((personInfo) => {
  34. this.setData({
  35. personInfo,
  36. 'personInfo.phoneNumber': phoneEncryption(personInfo.phoneNumber),
  37. });
  38. });
  39. },
  40. onClickCell({ currentTarget }) {
  41. const { dataset } = currentTarget;
  42. const { nickName } = this.data.personInfo;
  43. switch (dataset.type) {
  44. case 'gender':
  45. this.setData({
  46. typeVisible: true,
  47. });
  48. break;
  49. case 'name':
  50. wx.navigateTo({
  51. url: `/pages/user/name-edit/index?name=${nickName}`,
  52. });
  53. break;
  54. case 'avatarUrl':
  55. this.toModifyAvatar();
  56. break;
  57. default: {
  58. break;
  59. }
  60. }
  61. },
  62. onClose() {
  63. this.setData({
  64. typeVisible: false,
  65. });
  66. },
  67. onConfirm(e) {
  68. const { value } = e.detail;
  69. this.setData(
  70. {
  71. typeVisible: false,
  72. 'personInfo.gender': value,
  73. },
  74. () => {
  75. Toast({
  76. context: this,
  77. selector: '#t-toast',
  78. message: '设置成功',
  79. theme: 'success',
  80. });
  81. },
  82. );
  83. },
  84. async toModifyAvatar() {
  85. try {
  86. const tempFilePath = await new Promise((resolve, reject) => {
  87. wx.chooseImage({
  88. count: 1,
  89. sizeType: ['compressed'],
  90. sourceType: ['album', 'camera'],
  91. success: (res) => {
  92. const { path, size } = res.tempFiles[0];
  93. if (size <= 10485760) {
  94. resolve(path);
  95. } else {
  96. reject({ errMsg: '图片大小超出限制,请重新上传' });
  97. }
  98. },
  99. fail: (err) => reject(err),
  100. });
  101. });
  102. const tempUrlArr = tempFilePath.split('/');
  103. const tempFileName = tempUrlArr[tempUrlArr.length - 1];
  104. Toast({
  105. context: this,
  106. selector: '#t-toast',
  107. message: `已选择图片-${tempFileName}`,
  108. theme: 'success',
  109. });
  110. } catch (error) {
  111. if (error.errMsg === 'chooseImage:fail cancel') return;
  112. Toast({
  113. context: this,
  114. selector: '#t-toast',
  115. message: error.errMsg || error.msg || '修改头像出错了',
  116. theme: 'error',
  117. });
  118. }
  119. },
  120. });