// pages/ChangeUserInfo/ChangeUserInfo.js const api = require('../../utils/api'); const store = require('../../utils/store'); const config = require('../../config/index'); const app = getApp(); Page({ data: { // wxml 里直接用它拼头像路径,保持不变 BaseURL: config.STATIC_BASE_URL, activeNames: [], username: '', HeadiconID: 0, list: 50, }, onLoad() { app.ready().then(() => this.applyUser()); }, onShow() { this.applyUser(); }, applyUser() { const user = store.getUser() || {}; this.setData({ username: user.nickname || '', HeadiconID: user.headiconId || 0, list: parseInt(store.cfg('profile.headicon_count', '50'), 10) || 50, }); }, onChange(event) { let inputVal = event.detail; // 只保留中英文与数字 inputVal = inputVal.replace(/[^\u4e00-\u9fa5a-zA-Z0-9]/g, ''); // 去掉开头的数字 inputVal = inputVal.replace(/^[0-9]+/, ''); inputVal = inputVal.substring(0, 8); this.setData({ username: inputVal }); }, selectHeadicon(event) { this.setData({ HeadiconID: event.currentTarget.dataset.index }); }, onChange2(event) { this.setData({ activeNames: event.detail }); }, onConfirm() { const nickname = (this.data.username || '').trim(); if (!nickname) { wx.showToast({ title: '请输入用户名', icon: 'none' }); return; } wx.showModal({ title: '提示', content: '确定修改个人资料吗?', confirmColor: '#ff0000', success: (res) => { if (!res.confirm) return; wx.showLoading({ title: '提交中', mask: true }); api .updateMe({ nickname: nickname, headiconId: this.data.HeadiconID }) .then((user) => { store.setUser(user); wx.hideLoading(); wx.showToast({ title: '成功', icon: 'success', mask: true, duration: 1500 }); setTimeout(() => wx.switchTab({ url: '/pages/wode/wode' }), 1500); }) .catch((err) => { wx.hideLoading(); wx.showToast({ title: err.message || '修改失败', icon: 'none', mask: true }); }); }, }); }, });