Files
xingque/pages/mine/mine.js
XingQue c03d22776f backup: 紫色UI换肤前完整备份(当前橙色逍遥梦主题)
保留改造前全部页面样式与功能代码,便于回滚。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-29 01:59:42 +08:00

184 lines
5.8 KiB
JavaScript

// pages/mine/mine.js
const app = getApp();
import { ensureLogin } from '../../utils/login';
import {
backfillUserProfileCache,
getUserProfileForDisplay,
getSessionToken,
isRoleStatusActive,
ensureRoleOnCenterPage,
} from '../../utils/role-tab-bar';
import { enterLockedRole } from '../../utils/primary-role.js';
import { isStaffMode, getStaffContext, restoreStaffContextAfterAuth } from '../../utils/staff-api.js';
import { createPage } from '../../utils/base-page.js';
import { ensurePhoneAuth } from '../../utils/phone-auth.js';
Page(createPage({
data: {
avatarUrl: '',
userNicheng: '',
userUid: '',
showLoginBtn: false,
orderCounts: { daifuwu:0, fuwuzhong:0, yiwancheng:0, yituikuan:0 },
// 图标
settingIcon: '', daifuwuIcon: '', fuwuzhongIcon: '', yiwanchengIcon: '', yituikuanIcon: '',
dashouIcon: '', shangjiaIcon: '', guanshiIcon: '', kefuIcon: '',
zuzhangIcon: '', guanzhualongIcon: '', arrowRightIcon: '', qingchuIcon: '',
dashouCertified: false,
shangjiaCertified: false,
staffCertified: false,
staffTag: '入驻',
bottomSafePadding: 0
},
onLoad() {
this.initIconUrls()
this.loadUserData()
this.setBottomSafe()
},
async onShow() {
const phoneOk = await ensurePhoneAuth({
redirect: true,
returnPage: '/pages/mine/mine',
});
if (!phoneOk) return;
this.initIconUrls();
this.registerNotificationComponent();
this.checkAvatarPrompt();
backfillUserProfileCache(app);
if (getSessionToken(app)) {
restoreStaffContextAfterAuth().finally(() => {
this.loadUserData();
this.updateOrderCounts();
});
} else {
this.loadUserData();
this.updateOrderCounts();
}
},
setBottomSafe() {
const sys = wx.getSystemInfoSync()
const safeBottom = sys.screenHeight - sys.safeArea.bottom // 底部安全区高度(px)
const tabBarHeight = (sys.windowWidth / 750) * 100 // 100rpx 转为 px
this.setData({
bottomSafePadding: safeBottom + tabBarHeight + 4 // 4px 微调,确保不留缝隙
})
},
checkAvatarPrompt() {
const ds = wx.getStorageSync('dashoustatus')
const tx = wx.getStorageSync('touxiang') || ''
if (ds === 1 && (!tx || tx === 'a_long/morentouxiang.jpg')) {
wx.showModal({
title: '提示', content: '请先设置头像',
confirmText: '去设置', confirmColor: '#C9A962',
success: r => r.confirm && wx.navigateTo({ url: '/pages/edit/edit' })
})
}
},
initIconUrls() {
const base = (app.globalData.ossImageUrl || '') + '/beijing/tubiao/'
this.setData({
settingIcon: base + 'grzx_shezhi.jpg',
daifuwuIcon: base + 'grzx_daifuwu.jpg',
fuwuzhongIcon: base + 'grzx_fuwuzhong.jpg',
yiwanchengIcon: base + 'grzx_yiwancheng.jpg',
yituikuanIcon: base + 'grzx_yituikuan.jpg',
dashouIcon: base + 'grzx_dashou.jpg',
shangjiaIcon: base + 'grzx_shangjia.jpg',
guanshiIcon: base + 'grzx_guanshi.jpg',
kefuIcon: base + 'grzx_kefu.jpg',
zuzhangIcon: base + 'grzx_zuzhang.jpg',
guanzhualongIcon: base + 'grzx_guanzhualong.jpg',
arrowRightIcon: base + 'grzx_arrow_right.jpg',
qingchuIcon: base + 'grzx_qingchu.jpg',
kaoheguanIcon: base + 'kaoheguan.png',
})
},
loadUserData() {
const profile = getUserProfileForDisplay(app);
const ctx = getStaffContext();
const staffActive = isStaffMode();
this.setData({
avatarUrl: profile.avatarUrl,
userNicheng: profile.nick,
userUid: profile.uid,
showLoginBtn: !profile.isLoggedIn,
dashouCertified: isRoleStatusActive(wx.getStorageSync('dashoustatus')),
shangjiaCertified: isRoleStatusActive(wx.getStorageSync('shangjiastatus')),
staffCertified: staffActive,
staffTag: staffActive ? (ctx.role_name || '已入驻') : '入驻',
});
},
updateOrderCounts() {
const c = app.globalData.dingdanTiaoshu || {}
this.setData({ orderCounts: {
daifuwu: c.daifuwu||0, fuwuzhong: c.fuwuzhong||0,
yiwancheng: c.yiwancheng||0, yituikuan: c.yituikuan||0
}})
},
goToSetting() { wx.navigateTo({ url: '/pages/edit/edit' }) },
handleWechatLogin() {
wx.showLoading({ title: '登录中...', mask: true });
ensureLogin({ silent: false, page: this })
.then(() => restoreStaffContextAfterAuth())
.then(() => {
this.loadUserData();
this.updateOrderCounts();
wx.showToast({ title: '登录成功', icon: 'success' });
})
.catch(() => {})
.finally(() => wx.hideLoading());
},
goToOrder(e) { wx.navigateTo({ url: `/pages/orders/orders?type=${e.currentTarget.dataset.type}` }) },
goToAuth(e) {
const type = e.currentTarget.dataset.type;
if (!type || !['dashou', 'shangjia'].includes(type)) return;
ensureLogin({ silent: false, page: this })
.then(() => restoreStaffContextAfterAuth())
.then(() => {
this.loadUserData();
if (type === 'shangjia' && isStaffMode()) {
enterLockedRole('shangjia', app);
return;
}
const statusKey = type === 'dashou' ? 'dashoustatus' : 'shangjiastatus';
if (isRoleStatusActive(wx.getStorageSync(statusKey))) {
ensureRoleOnCenterPage(this, type);
enterLockedRole(type, app);
return;
}
wx.navigateTo({ url: `/pages/verify/verify?type=${type}` });
})
.catch(() => {});
},
goToCustomService() { this.goToKefu() },
goToStaffJoin() {
ensureLogin({ silent: false, page: this })
.then(() => restoreStaffContextAfterAuth())
.then(() => {
this.loadUserData();
if (isStaffMode()) {
enterLockedRole('shangjia', app);
return;
}
wx.navigateTo({ url: '/pages/staff-join/staff-join' });
})
.catch(() => {});
},
goToGuanzhuA() { wx.navigateTo({ url: '/pages/manager-assign/manager-assign' }) },
}))