diff --git a/pages/edit/edit.js b/pages/edit/edit.js index 5970c5b..a8fc616 100644 --- a/pages/edit/edit.js +++ b/pages/edit/edit.js @@ -1,6 +1,9 @@ // pages/edit/edit.js +// 点单端设置页;纯打手端时:头像走 /yonghu/xiugai,昵称走 /yonghu/dsgxxx,手机只读(点单端已认证手机号) const app = getApp() import upload from '../../utils/upload.js' +import request from '../../utils/request.js' +import { isFighterOnly } from '../../utils/fighter-only.js' Page({ data: { @@ -15,54 +18,55 @@ Page({ newAvatarFile: null, isLoading: true, isAvatarActive: false, - nicknameError: '' + nicknameError: '', + // 打手扩展字段缓存,更新昵称时原样带回,避免后端把空串覆盖掉 + _dsDianhua: '', + _dsWeixin: '', + _dsJieshao: '', + fighterMode: false, }, onLoad() { + const fighterMode = isFighterOnly() + this.setData({ fighterMode }) wx.setNavigationBarTitle({ title: '编辑资料' }) - this.loadUserData() - }, - - onShow() { - this.registerNotificationComponent(); - }, - - registerNotificationComponent() { - const notificationComp = this.selectComponent('#global-notification'); - if (notificationComp && notificationComp.showNotification) { - app.globalData.globalNotification = { - show: (data) => notificationComp.showNotification(data), - hide: () => notificationComp.hideNotification() - }; + if (fighterMode) { + this.loadFighterModeData() + } else { + this.loadUserData() } }, - // 加载用户数据 + onShow() { + this.registerNotificationComponent() + }, + + registerNotificationComponent() { + const notificationComp = this.selectComponent('#global-notification') + if (notificationComp && notificationComp.showNotification) { + app.globalData.globalNotification = { + show: (data) => notificationComp.showNotification(data), + hide: () => notificationComp.hideNotification(), + } + } + }, + + // ——— 点单端:原逻辑 ——— loadUserData() { try { const uid = wx.getStorageSync('uid') || '' const nicheng = wx.getStorageSync('nicheng') || '' const phone = wx.getStorageSync('phone') || '' const touxiang = wx.getStorageSync('touxiang') || '' - - const ossImageUrl = app.globalData.ossImageUrl || '' - const defaultAvatar = app.globalData.morentouxiang || '' - - let avatarUrl = '' - if (touxiang) { - avatarUrl = touxiang.startsWith('http') ? touxiang : `${ossImageUrl}${touxiang}` - } else if (defaultAvatar) { - avatarUrl = defaultAvatar.startsWith('http') ? defaultAvatar : `${ossImageUrl}${defaultAvatar}` - } - + this.setData({ - avatarUrl, + avatarUrl: this.buildAvatarUrl(touxiang), uid, nicheng, phone, originalAvatar: touxiang, originalNicheng: nicheng, - isLoading: false + isLoading: false, }) } catch (error) { console.error('加载用户数据失败:', error) @@ -71,157 +75,302 @@ Page({ } }, - // 微信头像选择 + // ——— 纯打手端:手机/头像用点单端存储;昵称用打手资料 ——— + async loadFighterModeData() { + this.setData({ isLoading: true }) + try { + const uid = wx.getStorageSync('uid') || '' + const phone = wx.getStorageSync('phone') || '' + const touxiang = wx.getStorageSync('touxiang') || '' + + let nicheng = + wx.getStorageSync('dsnc') || + app.globalData.dashouNicheng || + '' + let dsDianhua = wx.getStorageSync('dsdianhua') || '' + let dsWeixin = wx.getStorageSync('dsweixin') || '' + let dsJieshao = wx.getStorageSync('dsjieshao') || '' + + // 昵称缺失时拉打手资料(不碰点单端昵称) + if (!nicheng || !String(nicheng).trim()) { + try { + const res = await request({ url: '/yonghu/dszjxxhq', method: 'POST' }) + if (res && res.data && res.data.code === 200 && res.data.data) { + const d = res.data.data + nicheng = d.nicheng || '' + dsDianhua = d.dianhua || dsDianhua + dsWeixin = d.wechat || dsWeixin + dsJieshao = d.jieshao || dsJieshao + wx.setStorageSync('dsnc', nicheng) + wx.setStorageSync('dsdianhua', dsDianhua) + wx.setStorageSync('dsweixin', dsWeixin) + wx.setStorageSync('dsjieshao', dsJieshao) + } + } catch (e) { + console.warn('拉取打手昵称失败', e) + } + } + + this.setData({ + avatarUrl: this.buildAvatarUrl(touxiang), + uid, + phone, + nicheng, + originalAvatar: touxiang, + originalNicheng: nicheng, + _dsDianhua: dsDianhua, + _dsWeixin: dsWeixin, + _dsJieshao: dsJieshao, + isLoading: false, + }) + } catch (error) { + console.error('加载打手设置数据失败:', error) + this.setData({ isLoading: false }) + wx.showToast({ title: '加载数据失败', icon: 'none' }) + } + }, + + buildAvatarUrl(touxiang) { + const ossImageUrl = app.globalData.ossImageUrl || '' + const defaultAvatar = app.globalData.morentouxiang || '' + if (touxiang) { + return touxiang.startsWith('http') ? touxiang : `${ossImageUrl}${touxiang}` + } + if (defaultAvatar) { + return defaultAvatar.startsWith('http') ? defaultAvatar : `${ossImageUrl}${defaultAvatar}` + } + return '' + }, + onChooseAvatar(e) { const avatarTempPath = e.detail.avatarUrl - this.setData({ - avatarUrl: avatarTempPath, - newAvatarFile: avatarTempPath - }, () => { - this.checkChanges() - }) + this.setData( + { + avatarUrl: avatarTempPath, + newAvatarFile: avatarTempPath, + }, + () => this.checkChanges() + ) }, chooseAvatar() { this.setData({ isAvatarActive: true }) - setTimeout(() => { - this.setData({ isAvatarActive: false }) - }, 500) + setTimeout(() => this.setData({ isAvatarActive: false }), 500) }, - // 昵称输入 onNicknameInput(e) { const value = e.detail.value.trim() - this.setData({ - nicheng: value, - nicknameError: '' - }, () => { - this.checkChanges() - }) + this.setData( + { + nicheng: value, + nicknameError: '', + }, + () => this.checkChanges() + ) }, - // 检查变化 checkChanges() { - const { originalNicheng, nicheng, newAvatarFile } = this.data; - const hasChanges = (nicheng !== originalNicheng) || (newAvatarFile !== null); - this.setData({ hasChanges }); + const { originalNicheng, nicheng, newAvatarFile } = this.data + const hasChanges = nicheng !== originalNicheng || newAvatarFile !== null + this.setData({ hasChanges }) + }, + + validateData() { + const { nicheng } = this.data + let hasError = false + this.setData({ nicknameError: '' }) + + if (nicheng && nicheng.length > 20) { + this.setData({ nicknameError: '昵称不能超过20个字符' }) + hasError = true + } + if (nicheng !== this.data.originalNicheng && nicheng.trim() === '') { + this.setData({ nicknameError: '昵称不能为空' }) + hasError = true + } + if (hasError) { + if (this.data.nicknameError) { + wx.showToast({ title: this.data.nicknameError, icon: 'none' }) + } + return false + } + return true }, - // 保存 async onSave() { if (!this.data.hasChanges) { - wx.showToast({ title: '没有需要保存的更改', icon: 'none' }); - return; + wx.showToast({ title: '没有需要保存的更改', icon: 'none' }) + return } - if (this.data.isSaving) return; - - // 验证数据 - if (!this.validateData()) return; - - this.setData({ isSaving: true }); - wx.showLoading({ title: '保存中...', mask: true }); - + if (this.data.isSaving) return + if (!this.validateData()) return + + this.setData({ isSaving: true }) + wx.showLoading({ title: '保存中...', mask: true }) + try { - const formData = {}; - if (this.data.nicheng !== this.data.originalNicheng) { - formData.nicheng = this.data.nicheng; - } - - const res = await upload({ - url: '/yonghu/xiugai', - formData, - filePath: this.data.newAvatarFile, - fileName: 'avatar' - }); - - if (res.statusCode === 200 && res.data) { - const response = res.data; - if (response.code === 0) { - await this.handleUpdateSuccess(response.data); - } else { - throw new Error(response.msg || '保存失败'); - } + if (this.data.fighterMode) { + await this.saveFighterMode() } else { - throw new Error('网络错误'); + await this.saveOrderMode() } } catch (error) { - console.error('保存失败:', error); - if (error.message.includes('认证失败') || error.message.includes('401')) { + console.error('保存失败:', error) + if (error.message && (error.message.includes('认证失败') || error.message.includes('401'))) { wx.showModal({ title: '提示', content: '登录已过期,请重新登录', complete: (res) => { if (res.confirm) { - wx.removeStorageSync('token'); - wx.removeStorageSync('userInfo'); - wx.switchTab({ url: '/pages/mine/mine' }); + wx.removeStorageSync('token') + wx.removeStorageSync('userInfo') + wx.reLaunch({ url: '/pages/fighter/fighter' }) } - } - }); + }, + }) } else { - wx.showToast({ title: error.message || '保存失败', icon: 'none' }); + wx.showToast({ title: error.message || '保存失败', icon: 'none' }) } } finally { - wx.hideLoading(); - this.setData({ isSaving: false }); + wx.hideLoading() + this.setData({ isSaving: false }) } }, - // 验证数据 - validateData() { - const { nicheng } = this.data; - let hasError = false; - this.setData({ nicknameError: '' }); - - if (nicheng && nicheng.length > 20) { - this.setData({ nicknameError: '昵称不能超过20个字符' }); - hasError = true; + /** 点单端原保存:昵称+头像 → /yonghu/xiugai */ + async saveOrderMode() { + const formData = {} + if (this.data.nicheng !== this.data.originalNicheng) { + formData.nicheng = this.data.nicheng } - if (nicheng !== this.data.originalNicheng && nicheng.trim() === '') { - this.setData({ nicknameError: '昵称不能为空' }); - hasError = true; + const res = await upload({ + url: '/yonghu/xiugai', + formData, + filePath: this.data.newAvatarFile, + fileName: 'avatar', + }) + if (res.statusCode === 200 && res.data && res.data.code === 0) { + await this.handleUpdateSuccess(res.data.data || {}) + } else { + throw new Error((res.data && (res.data.msg || res.data.message)) || '保存失败') } - if (hasError) { - if (this.data.nicknameError) { - wx.showToast({ title: this.data.nicknameError, icon: 'none' }); + }, + + /** + * 纯打手端混调: + * - 头像变了 → /yonghu/xiugai(点单端,只传头像,不改点单昵称) + * - 昵称变了 → /yonghu/dsgxxx(打手端,带回其它打手字段防覆盖) + * 手机号只读,不提交 + */ + async saveFighterMode() { + const nickChanged = this.data.nicheng !== this.data.originalNicheng + const avatarChanged = !!this.data.newAvatarFile + let avatarData = null + let nickData = null + + if (avatarChanged) { + const res = await upload({ + url: '/yonghu/xiugai', + formData: {}, + filePath: this.data.newAvatarFile, + fileName: 'avatar', + }) + if (!(res.statusCode === 200 && res.data && res.data.code === 0)) { + throw new Error((res.data && (res.data.msg || res.data.message)) || '头像保存失败') } - return false; + avatarData = res.data.data || {} } - return true; + + if (nickChanged) { + const postData = { + nicheng: this.data.nicheng, + dianhua: this.data._dsDianhua || wx.getStorageSync('dsdianhua') || '', + wechat: this.data._dsWeixin || wx.getStorageSync('dsweixin') || '', + jieshao: this.data._dsJieshao || wx.getStorageSync('dsjieshao') || '', + } + const res = await request({ + url: '/yonghu/dsgxxx', + method: 'POST', + data: postData, + }) + if (!(res && res.data && res.data.code === 200)) { + throw new Error((res && res.data && res.data.msg) || '昵称保存失败') + } + nickData = res.data.data || postData + } + + this.handleFighterUpdateSuccess(avatarData, nickData) + }, + + handleFighterUpdateSuccess(avatarData, nickData) { + const ossImageUrl = app.globalData.ossImageUrl || '' + let avatarUrl = this.data.avatarUrl + let originalAvatar = this.data.originalAvatar + let originalNicheng = this.data.originalNicheng + let nicheng = this.data.nicheng + + if (avatarData && avatarData.touxiang != null) { + wx.setStorageSync('touxiang', avatarData.touxiang) + originalAvatar = avatarData.touxiang + avatarUrl = avatarData.touxiang.startsWith('http') + ? avatarData.touxiang + : `${ossImageUrl}${avatarData.touxiang}` + } + + if (nickData) { + const newNick = nickData.nicheng != null ? nickData.nicheng : nicheng + nicheng = newNick + originalNicheng = newNick + wx.setStorageSync('dsnc', newNick) + app.globalData.dashouNicheng = newNick + if (nickData.dianhua != null) wx.setStorageSync('dsdianhua', nickData.dianhua || '') + if (nickData.wechat != null) wx.setStorageSync('dsweixin', nickData.wechat || '') + if (nickData.jieshao != null) wx.setStorageSync('dsjieshao', nickData.jieshao || '') + } + + this.setData({ + avatarUrl, + nicheng, + originalAvatar, + originalNicheng, + newAvatarFile: null, + hasChanges: false, + _dsDianhua: wx.getStorageSync('dsdianhua') || this.data._dsDianhua, + _dsWeixin: wx.getStorageSync('dsweixin') || this.data._dsWeixin, + _dsJieshao: wx.getStorageSync('dsjieshao') || this.data._dsJieshao, + }) + + wx.showToast({ title: '保存成功', icon: 'success', duration: 2000 }) }, - // 更新成功处理 async handleUpdateSuccess(updateData) { if (updateData.touxiang !== undefined && updateData.touxiang !== null) { - wx.setStorageSync('touxiang', updateData.touxiang); + wx.setStorageSync('touxiang', updateData.touxiang) } if (updateData.nicheng !== undefined && updateData.nicheng !== null) { - wx.setStorageSync('nicheng', updateData.nicheng); + wx.setStorageSync('nicheng', updateData.nicheng) } - + if (updateData.nicheng) { - app.globalData.userNicheng = updateData.nicheng; + app.globalData.userNicheng = updateData.nicheng } - - const ossImageUrl = app.globalData.ossImageUrl || ''; - let avatarUrl = this.data.avatarUrl; + + const ossImageUrl = app.globalData.ossImageUrl || '' + let avatarUrl = this.data.avatarUrl if (updateData.touxiang) { - avatarUrl = updateData.touxiang.startsWith('http') ? - updateData.touxiang : `${ossImageUrl}${updateData.touxiang}`; + avatarUrl = updateData.touxiang.startsWith('http') + ? updateData.touxiang + : `${ossImageUrl}${updateData.touxiang}` } - + this.setData({ avatarUrl, originalAvatar: updateData.touxiang || this.data.originalAvatar, originalNicheng: updateData.nicheng || this.data.originalNicheng, newAvatarFile: null, - hasChanges: false - }); - - wx.showToast({ - title: '保存成功', - icon: 'success', - duration: 2000 - }); - } -}); \ No newline at end of file + hasChanges: false, + }) + + wx.showToast({ title: '保存成功', icon: 'success', duration: 2000 }) + }, +}) diff --git a/pages/edit/edit.wxml b/pages/edit/edit.wxml index 49d217d..ad91f65 100644 --- a/pages/edit/edit.wxml +++ b/pages/edit/edit.wxml @@ -27,14 +27,14 @@ {{uid || '••••••'}} - + - 昵称 + {{fighterMode ? '服务昵称' : '昵称'}} - + 手机号 {{phone || '未绑定'}} diff --git a/pages/fighter/fighter.js b/pages/fighter/fighter.js index 55e8782..69fb054 100644 --- a/pages/fighter/fighter.js +++ b/pages/fighter/fighter.js @@ -1577,7 +1577,7 @@ Page(createPage({ const yue = this.data.kaoheYue || '0.00'; wx.navigateTo({ url: `/pages/withdraw/withdraw?amount=${yue}&from=kaoheguan` }); }, - goToModifyInfo() { wx.navigateTo({ url: '/pages/fighter-edit/fighter-edit' }) }, + goToModifyInfo() { wx.navigateTo({ url: '/pages/edit/edit' }) }, goToRules() { wx.navigateTo({ url: '/pages/fighter-rules/fighter-rules' }) }, goToKaohe() { wx.navigateTo({ url: '/pages/assess-gold/assess-gold' });