2026-03-07 22:58:43 +08:00
|
|
|
|
/**
|
|
|
|
|
|
* Soul创业派对 - 设置页
|
|
|
|
|
|
* 账号绑定功能
|
|
|
|
|
|
*/
|
|
|
|
|
|
const app = getApp()
|
|
|
|
|
|
|
|
|
|
|
|
Page({
|
|
|
|
|
|
data: {
|
|
|
|
|
|
statusBarHeight: 44,
|
|
|
|
|
|
isLoggedIn: false,
|
|
|
|
|
|
userInfo: null,
|
|
|
|
|
|
version: '1.0.0',
|
2026-03-14 14:37:17 +08:00
|
|
|
|
isDevMode: false, // 是否开发版(用于显示切换账号入口)
|
|
|
|
|
|
|
|
|
|
|
|
// 切换账号(开发)
|
|
|
|
|
|
showSwitchAccountModal: false,
|
|
|
|
|
|
switchAccountUserId: '',
|
|
|
|
|
|
switchAccountLoading: false,
|
2026-03-07 22:58:43 +08:00
|
|
|
|
|
|
|
|
|
|
// 绑定信息
|
|
|
|
|
|
phoneNumber: '',
|
|
|
|
|
|
wechatId: '',
|
|
|
|
|
|
alipayAccount: '',
|
|
|
|
|
|
address: '',
|
|
|
|
|
|
|
|
|
|
|
|
// 自动提现(默认开启)
|
|
|
|
|
|
autoWithdrawEnabled: true,
|
|
|
|
|
|
|
|
|
|
|
|
// 绑定弹窗
|
|
|
|
|
|
showBindModal: false,
|
|
|
|
|
|
bindType: '', // phone | wechat | alipay
|
|
|
|
|
|
bindValue: ''
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
onLoad() {
|
|
|
|
|
|
wx.showShareMenu({ withShareTimeline: true })
|
2026-03-14 14:37:17 +08:00
|
|
|
|
const accountInfo = wx.getAccountInfoSync ? wx.getAccountInfoSync() : null
|
|
|
|
|
|
const envVersion = accountInfo?.miniProgram?.envVersion || ''
|
2026-03-07 22:58:43 +08:00
|
|
|
|
this.setData({
|
|
|
|
|
|
statusBarHeight: app.globalData.statusBarHeight,
|
|
|
|
|
|
isLoggedIn: app.globalData.isLoggedIn,
|
2026-03-14 14:37:17 +08:00
|
|
|
|
userInfo: app.globalData.userInfo,
|
|
|
|
|
|
isDevMode: envVersion === 'develop'
|
2026-03-07 22:58:43 +08:00
|
|
|
|
})
|
|
|
|
|
|
this.loadBindingInfo()
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
onShow() {
|
|
|
|
|
|
this.loadBindingInfo()
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 加载绑定信息
|
|
|
|
|
|
loadBindingInfo() {
|
|
|
|
|
|
const { userInfo, isLoggedIn } = app.globalData
|
|
|
|
|
|
if (isLoggedIn && userInfo) {
|
|
|
|
|
|
// 从本地存储或用户信息中获取绑定数据
|
|
|
|
|
|
const phoneNumber = wx.getStorageSync('user_phone') || userInfo.phone || ''
|
|
|
|
|
|
const wechatId = wx.getStorageSync('user_wechat') || userInfo.wechat || ''
|
|
|
|
|
|
const alipayAccount = wx.getStorageSync('user_alipay') || userInfo.alipay || ''
|
|
|
|
|
|
const address = wx.getStorageSync('user_address') || userInfo.address || ''
|
|
|
|
|
|
// 默认开启自动提现
|
|
|
|
|
|
const autoWithdrawEnabled = wx.getStorageSync('auto_withdraw_enabled') !== false
|
|
|
|
|
|
|
|
|
|
|
|
this.setData({
|
|
|
|
|
|
isLoggedIn: true,
|
|
|
|
|
|
userInfo,
|
|
|
|
|
|
phoneNumber,
|
|
|
|
|
|
wechatId,
|
|
|
|
|
|
alipayAccount,
|
|
|
|
|
|
address,
|
|
|
|
|
|
autoWithdrawEnabled
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 切换自动提现
|
|
|
|
|
|
async toggleAutoWithdraw(e) {
|
|
|
|
|
|
const enabled = e.detail.value
|
|
|
|
|
|
|
|
|
|
|
|
// 检查是否绑定了支付方式
|
|
|
|
|
|
if (enabled && !this.data.wechatId && !this.data.alipayAccount) {
|
|
|
|
|
|
wx.showToast({ title: '请先绑定微信号或支付宝', icon: 'none' })
|
|
|
|
|
|
this.setData({ autoWithdrawEnabled: false })
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 开启时需要确认
|
|
|
|
|
|
if (enabled) {
|
|
|
|
|
|
wx.showModal({
|
|
|
|
|
|
title: '开启自动提现',
|
|
|
|
|
|
content: `收益将自动打款到您的${this.data.alipayAccount ? '支付宝' : '微信'}账户,确认开启吗?`,
|
|
|
|
|
|
success: async (res) => {
|
|
|
|
|
|
if (res.confirm) {
|
|
|
|
|
|
this.setData({ autoWithdrawEnabled: true })
|
|
|
|
|
|
wx.setStorageSync('auto_withdraw_enabled', true)
|
|
|
|
|
|
|
|
|
|
|
|
// 同步到服务器
|
|
|
|
|
|
try {
|
|
|
|
|
|
await app.request('/api/miniprogram/user/update', {
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
data: {
|
|
|
|
|
|
userId: app.globalData.userInfo?.id,
|
|
|
|
|
|
autoWithdraw: true,
|
|
|
|
|
|
withdrawAccount: this.data.alipayAccount || this.data.wechatId
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
console.log('同步自动提现设置失败', e)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
wx.showToast({ title: '已开启自动提现', icon: 'success' })
|
|
|
|
|
|
} else {
|
|
|
|
|
|
this.setData({ autoWithdrawEnabled: false })
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
} else {
|
|
|
|
|
|
this.setData({ autoWithdrawEnabled: false })
|
|
|
|
|
|
wx.setStorageSync('auto_withdraw_enabled', false)
|
|
|
|
|
|
wx.showToast({ title: '已关闭自动提现', icon: 'success' })
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 绑定手机号
|
|
|
|
|
|
bindPhone() {
|
|
|
|
|
|
this.setData({
|
|
|
|
|
|
showBindModal: true,
|
|
|
|
|
|
bindType: 'phone',
|
|
|
|
|
|
bindValue: ''
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 微信号输入
|
|
|
|
|
|
onWechatInput(e) {
|
|
|
|
|
|
this.setData({ wechatId: e.detail.value })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 保存微信号
|
|
|
|
|
|
async saveWechat() {
|
|
|
|
|
|
const { wechatId } = this.data
|
|
|
|
|
|
if (!wechatId || wechatId.length < 6) return
|
|
|
|
|
|
|
|
|
|
|
|
wx.setStorageSync('user_wechat', wechatId)
|
|
|
|
|
|
|
|
|
|
|
|
// 更新用户信息
|
|
|
|
|
|
if (app.globalData.userInfo) {
|
|
|
|
|
|
app.globalData.userInfo.wechat = wechatId
|
|
|
|
|
|
wx.setStorageSync('userInfo', app.globalData.userInfo)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 同步到服务器
|
|
|
|
|
|
try {
|
|
|
|
|
|
await app.request('/api/miniprogram/user/update', {
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
data: {
|
|
|
|
|
|
userId: app.globalData.userInfo?.id,
|
|
|
|
|
|
wechat: wechatId
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
wx.showToast({ title: '微信号已保存', icon: 'success' })
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
console.log('保存微信号失败', e)
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 输入绑定值
|
|
|
|
|
|
onBindInput(e) {
|
|
|
|
|
|
let value = e.detail.value
|
|
|
|
|
|
if (this.data.bindType === 'phone') {
|
|
|
|
|
|
value = value.replace(/\D/g, '').slice(0, 11)
|
|
|
|
|
|
}
|
|
|
|
|
|
this.setData({ bindValue: value })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 确认绑定
|
|
|
|
|
|
confirmBind() {
|
|
|
|
|
|
const { bindType, bindValue } = this.data
|
|
|
|
|
|
|
|
|
|
|
|
if (!bindValue) {
|
|
|
|
|
|
wx.showToast({ title: '请输入内容', icon: 'none' })
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 验证
|
|
|
|
|
|
if (bindType === 'phone' && !/^1[3-9]\d{9}$/.test(bindValue)) {
|
|
|
|
|
|
wx.showToast({ title: '请输入正确的手机号', icon: 'none' })
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (bindType === 'wechat' && bindValue.length < 6) {
|
|
|
|
|
|
wx.showToast({ title: '微信号至少6位', icon: 'none' })
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (bindType === 'alipay' && !bindValue.includes('@') && !/^1[3-9]\d{9}$/.test(bindValue)) {
|
|
|
|
|
|
wx.showToast({ title: '请输入正确的支付宝账号', icon: 'none' })
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 保存绑定信息到本地
|
|
|
|
|
|
if (bindType === 'phone') {
|
|
|
|
|
|
wx.setStorageSync('user_phone', bindValue)
|
|
|
|
|
|
this.setData({ phoneNumber: bindValue })
|
|
|
|
|
|
} else if (bindType === 'wechat') {
|
|
|
|
|
|
wx.setStorageSync('user_wechat', bindValue)
|
|
|
|
|
|
this.setData({ wechatId: bindValue })
|
|
|
|
|
|
} else if (bindType === 'alipay') {
|
|
|
|
|
|
wx.setStorageSync('user_alipay', bindValue)
|
|
|
|
|
|
this.setData({ alipayAccount: bindValue })
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 同步到服务器
|
|
|
|
|
|
this.syncProfileToServer()
|
|
|
|
|
|
|
|
|
|
|
|
this.setData({ showBindModal: false })
|
|
|
|
|
|
wx.showToast({ title: '绑定成功', icon: 'success' })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 同步资料到服务器
|
|
|
|
|
|
async syncProfileToServer() {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const userId = app.globalData.userInfo?.id
|
|
|
|
|
|
if (!userId) return
|
|
|
|
|
|
|
|
|
|
|
|
const res = await app.request('/api/miniprogram/user/profile', {
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
data: {
|
|
|
|
|
|
userId,
|
|
|
|
|
|
phone: this.data.phoneNumber || undefined,
|
|
|
|
|
|
wechatId: this.data.wechatId || undefined
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
if (res.success) {
|
|
|
|
|
|
console.log('[Settings] 资料同步成功')
|
|
|
|
|
|
// 更新本地用户信息
|
|
|
|
|
|
if (app.globalData.userInfo) {
|
|
|
|
|
|
app.globalData.userInfo.phone = this.data.phoneNumber
|
|
|
|
|
|
app.globalData.userInfo.wechatId = this.data.wechatId
|
|
|
|
|
|
wx.setStorageSync('userInfo', app.globalData.userInfo)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
console.log('[Settings] 资料同步失败:', e)
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 获取微信头像(新版授权)
|
|
|
|
|
|
async getWechatAvatar() {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const res = await wx.getUserProfile({
|
|
|
|
|
|
desc: '用于完善会员资料'
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
if (res.userInfo) {
|
|
|
|
|
|
const { nickName, avatarUrl: tempAvatarUrl } = res.userInfo
|
|
|
|
|
|
|
|
|
|
|
|
wx.showLoading({ title: '上传中...', mask: true })
|
|
|
|
|
|
|
|
|
|
|
|
// 1. 先上传图片到服务器
|
|
|
|
|
|
console.log('[Settings] 开始上传头像:', tempAvatarUrl)
|
|
|
|
|
|
|
|
|
|
|
|
const uploadRes = await new Promise((resolve, reject) => {
|
|
|
|
|
|
wx.uploadFile({
|
|
|
|
|
|
url: app.globalData.baseUrl + '/api/miniprogram/upload',
|
|
|
|
|
|
filePath: tempAvatarUrl,
|
|
|
|
|
|
name: 'file',
|
|
|
|
|
|
formData: {
|
|
|
|
|
|
folder: 'avatars'
|
|
|
|
|
|
},
|
|
|
|
|
|
success: (uploadResult) => {
|
|
|
|
|
|
try {
|
|
|
|
|
|
const data = JSON.parse(uploadResult.data)
|
|
|
|
|
|
if (data.success) {
|
|
|
|
|
|
resolve(data)
|
|
|
|
|
|
} else {
|
|
|
|
|
|
reject(new Error(data.error || '上传失败'))
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (err) {
|
|
|
|
|
|
reject(new Error('解析响应失败'))
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
fail: (err) => {
|
|
|
|
|
|
reject(err)
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
// 2. 获取上传后的完整URL
|
|
|
|
|
|
const avatarUrl = app.globalData.baseUrl + uploadRes.data.url
|
|
|
|
|
|
console.log('[Settings] 头像上传成功:', avatarUrl)
|
|
|
|
|
|
|
|
|
|
|
|
// 3. 更新本地
|
|
|
|
|
|
this.setData({
|
|
|
|
|
|
userInfo: {
|
|
|
|
|
|
...this.data.userInfo,
|
|
|
|
|
|
nickname: nickName,
|
|
|
|
|
|
avatar: avatarUrl
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
// 4. 同步到服务器数据库
|
|
|
|
|
|
const userId = app.globalData.userInfo?.id
|
|
|
|
|
|
if (userId) {
|
|
|
|
|
|
await app.request('/api/miniprogram/user/profile', {
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
data: { userId, nickname: nickName, avatar: avatarUrl }
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 5. 更新全局
|
|
|
|
|
|
if (app.globalData.userInfo) {
|
|
|
|
|
|
app.globalData.userInfo.nickname = nickName
|
|
|
|
|
|
app.globalData.userInfo.avatar = avatarUrl
|
|
|
|
|
|
wx.setStorageSync('userInfo', app.globalData.userInfo)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
wx.hideLoading()
|
|
|
|
|
|
wx.showToast({ title: '头像更新成功', icon: 'success' })
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
wx.hideLoading()
|
|
|
|
|
|
console.error('[Settings] 获取头像失败:', e)
|
|
|
|
|
|
wx.showToast({
|
|
|
|
|
|
title: e.message || '获取头像失败',
|
|
|
|
|
|
icon: 'none'
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 一键获取微信手机号(button组件回调)
|
|
|
|
|
|
async onGetPhoneNumber(e) {
|
|
|
|
|
|
console.log('[Settings] 获取手机号回调:', e.detail)
|
|
|
|
|
|
|
|
|
|
|
|
if (e.detail.errMsg !== 'getPhoneNumber:ok') {
|
|
|
|
|
|
wx.showToast({ title: '授权失败', icon: 'none' })
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
// 需要将code发送到服务器解密获取手机号
|
|
|
|
|
|
const code = e.detail.code
|
|
|
|
|
|
if (!code) {
|
|
|
|
|
|
// 如果没有code,弹出手动输入
|
|
|
|
|
|
this.bindPhone()
|
|
|
|
|
|
return
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
wx.showLoading({ title: '获取中...', mask: true })
|
|
|
|
|
|
|
|
|
|
|
|
// 调用服务器解密手机号(传入userId以便同步到数据库)
|
|
|
|
|
|
const userId = app.globalData.userInfo?.id
|
|
|
|
|
|
const res = await app.request('/api/miniprogram/phone', {
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
data: { code, userId }
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
wx.hideLoading()
|
|
|
|
|
|
|
|
|
|
|
|
if (res.success && res.phoneNumber) {
|
|
|
|
|
|
wx.setStorageSync('user_phone', res.phoneNumber)
|
|
|
|
|
|
this.setData({ phoneNumber: res.phoneNumber })
|
|
|
|
|
|
|
|
|
|
|
|
// 更新用户信息
|
|
|
|
|
|
if (app.globalData.userInfo) {
|
|
|
|
|
|
app.globalData.userInfo.phone = res.phoneNumber
|
|
|
|
|
|
wx.setStorageSync('userInfo', app.globalData.userInfo)
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// 同步到服务器
|
|
|
|
|
|
this.syncProfileToServer()
|
|
|
|
|
|
|
|
|
|
|
|
wx.showToast({ title: '手机号绑定成功', icon: 'success' })
|
|
|
|
|
|
} else {
|
|
|
|
|
|
// 获取失败,弹出手动输入
|
|
|
|
|
|
this.bindPhone()
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
wx.hideLoading()
|
|
|
|
|
|
console.log('[Settings] 获取手机号失败:', e)
|
|
|
|
|
|
// 获取失败,弹出手动输入
|
|
|
|
|
|
this.bindPhone()
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 关闭绑定弹窗
|
|
|
|
|
|
closeBindModal() {
|
|
|
|
|
|
this.setData({ showBindModal: false })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2026-03-14 14:37:17 +08:00
|
|
|
|
// 打开切换账号弹窗(开发)
|
|
|
|
|
|
openSwitchAccountModal() {
|
|
|
|
|
|
this.setData({
|
|
|
|
|
|
showSwitchAccountModal: true,
|
|
|
|
|
|
switchAccountUserId: app.globalData.userInfo?.id || ''
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 关闭切换账号弹窗
|
|
|
|
|
|
closeSwitchAccountModal() {
|
|
|
|
|
|
if (this.data.switchAccountLoading) return
|
|
|
|
|
|
this.setData({ showSwitchAccountModal: false, switchAccountUserId: '' })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 切换账号 userId 输入
|
|
|
|
|
|
onSwitchAccountUserIdInput(e) {
|
|
|
|
|
|
this.setData({ switchAccountUserId: e.detail.value.trim() })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 确认切换账号
|
|
|
|
|
|
async confirmSwitchAccount() {
|
|
|
|
|
|
const userId = this.data.switchAccountUserId.trim()
|
|
|
|
|
|
if (!userId || this.data.switchAccountLoading) return
|
|
|
|
|
|
this.setData({ switchAccountLoading: true })
|
|
|
|
|
|
try {
|
|
|
|
|
|
const res = await app.request('/api/miniprogram/dev/login-as', {
|
|
|
|
|
|
method: 'POST',
|
|
|
|
|
|
data: { userId }
|
|
|
|
|
|
})
|
|
|
|
|
|
if (res && res.success && res.data) {
|
|
|
|
|
|
const { token, user } = res.data
|
|
|
|
|
|
const openId = res.data.openId || ''
|
|
|
|
|
|
wx.setStorageSync('token', token)
|
|
|
|
|
|
wx.setStorageSync('userInfo', user)
|
|
|
|
|
|
app.globalData.userInfo = user
|
|
|
|
|
|
app.globalData.isLoggedIn = true
|
|
|
|
|
|
app.globalData.purchasedSections = user.purchasedSections || []
|
|
|
|
|
|
app.globalData.hasFullBook = user.hasFullBook || false
|
|
|
|
|
|
app.globalData.isVip = user.isVip || false
|
|
|
|
|
|
app.globalData.vipExpireDate = user.vipExpireDate || ''
|
|
|
|
|
|
if (openId) {
|
|
|
|
|
|
app.globalData.openId = openId
|
|
|
|
|
|
wx.setStorageSync('openId', openId)
|
|
|
|
|
|
}
|
|
|
|
|
|
this.setData({
|
|
|
|
|
|
showSwitchAccountModal: false,
|
|
|
|
|
|
switchAccountUserId: '',
|
|
|
|
|
|
switchAccountLoading: false
|
|
|
|
|
|
})
|
|
|
|
|
|
this.loadBindingInfo()
|
|
|
|
|
|
wx.showToast({ title: '已切换为 ' + (user.nickname || userId), icon: 'success' })
|
|
|
|
|
|
} else {
|
|
|
|
|
|
throw new Error(res?.error || '切换失败')
|
|
|
|
|
|
}
|
|
|
|
|
|
} catch (e) {
|
|
|
|
|
|
this.setData({ switchAccountLoading: false })
|
|
|
|
|
|
wx.showToast({ title: e.message || '切换失败', icon: 'none' })
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
2026-03-07 22:58:43 +08:00
|
|
|
|
// 清除缓存
|
|
|
|
|
|
clearCache() {
|
|
|
|
|
|
wx.showModal({
|
|
|
|
|
|
title: '清除缓存',
|
|
|
|
|
|
content: '确定要清除本地缓存吗?',
|
|
|
|
|
|
success: (res) => {
|
|
|
|
|
|
if (res.confirm) {
|
|
|
|
|
|
// 保留登录信息,只清除其他缓存
|
|
|
|
|
|
const token = wx.getStorageSync('token')
|
|
|
|
|
|
const userInfo = wx.getStorageSync('userInfo')
|
|
|
|
|
|
wx.clearStorageSync()
|
|
|
|
|
|
if (token) wx.setStorageSync('token', token)
|
|
|
|
|
|
if (userInfo) wx.setStorageSync('userInfo', userInfo)
|
|
|
|
|
|
wx.showToast({ title: '缓存已清除', icon: 'success' })
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 退出登录
|
|
|
|
|
|
handleLogout() {
|
|
|
|
|
|
wx.showModal({
|
|
|
|
|
|
title: '退出登录',
|
|
|
|
|
|
content: '确定要退出登录吗?',
|
|
|
|
|
|
success: (res) => {
|
|
|
|
|
|
if (res.confirm) {
|
|
|
|
|
|
app.logout()
|
|
|
|
|
|
this.setData({
|
|
|
|
|
|
isLoggedIn: false,
|
|
|
|
|
|
userInfo: null,
|
|
|
|
|
|
phoneNumber: '',
|
|
|
|
|
|
wechatId: '',
|
|
|
|
|
|
alipayAccount: ''
|
|
|
|
|
|
})
|
|
|
|
|
|
wx.showToast({ title: '已退出登录', icon: 'success' })
|
|
|
|
|
|
setTimeout(() => getApp().goBackOrToHome(), 1500)
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 联系客服 - 跳转到Soul派对房
|
|
|
|
|
|
contactService() {
|
|
|
|
|
|
wx.showToast({ title: '请在Soul派对房联系客服', icon: 'none' })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
// 阻止冒泡
|
|
|
|
|
|
stopPropagation() {},
|
|
|
|
|
|
|
|
|
|
|
|
goBack() { getApp().goBackOrToHome() },
|
|
|
|
|
|
|
|
|
|
|
|
// 跳转到地址管理页
|
|
|
|
|
|
goToAddresses() {
|
|
|
|
|
|
wx.navigateTo({ url: '/pages/addresses/addresses' })
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
onShareAppMessage() {
|
|
|
|
|
|
const ref = app.getMyReferralCode()
|
|
|
|
|
|
return {
|
|
|
|
|
|
title: 'Soul创业派对 - 设置',
|
|
|
|
|
|
path: ref ? `/pages/settings/settings?ref=${ref}` : '/pages/settings/settings'
|
|
|
|
|
|
}
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
onShareTimeline() {
|
|
|
|
|
|
const ref = app.getMyReferralCode()
|
|
|
|
|
|
return { title: 'Soul创业派对 - 设置', query: ref ? `ref=${ref}` : '' }
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|