Initial commit

This commit is contained in:
sjk
2025-11-17 13:32:54 +08:00
commit e788eab6eb
1659 changed files with 171560 additions and 0 deletions

View File

@@ -0,0 +1,346 @@
import { fetchUserCenter } from '../../services/usercenter/fetchUsercenter';
import Toast from 'tdesign-miniprogram/toast/index';
// 已登录用户的菜单数据
const loggedInMenuData = [
[
{
title: '收货地址',
tit: '',
url: '',
type: 'address',
},
{
title: '优惠券',
tit: '',
url: '',
type: 'coupon',
},
{
title: '我的积分',
tit: '',
url: '',
type: 'points',
},
],
[
{
title: '帮助中心',
tit: '',
url: '',
type: 'help-center',
},
{
title: '客服热线',
tit: '',
url: '',
type: 'service',
icon: 'service',
},
],
[
{
title: '退出登录',
tit: '',
url: '',
type: 'logout',
icon: 'logout',
},
],
];
// 未登录用户的菜单数据
const guestMenuData = [
[
{
title: '帮助中心',
tit: '',
url: '',
type: 'help-center',
},
{
title: '客服热线',
tit: '',
url: '',
type: 'service',
icon: 'service',
},
],
];
const orderTagInfos = [
{
title: '待付款',
iconName: 'wallet',
orderNum: 0,
tabType: 1, // 修复:与订单列表页面的状态值匹配
status: 1,
},
{
title: '待发货',
iconName: 'deliver',
orderNum: 0,
tabType: 3, // 修复:与订单列表页面的状态值匹配
status: 1,
},
{
title: '待收货',
iconName: 'package',
orderNum: 0,
tabType: 5, // 修复:与订单列表页面的状态值匹配
status: 1,
},
{
title: '待评价',
iconName: 'comment',
orderNum: 0,
tabType: 6, // 修复:与订单列表页面的状态值匹配
status: 1,
},
{
title: '退款/售后',
iconName: 'exchang',
orderNum: 0,
tabType: 'refund', // 修改为refund跳转到退款记录页面
status: 1,
},
];
const getDefaultData = () => ({
showMakePhone: false,
userInfo: {
avatarUrl: '',
nickName: '正在登录...',
phoneNumber: '',
},
menuData: guestMenuData, // 默认使用未登录菜单
orderTagInfos,
customerServiceInfo: {},
currAuthStep: 1,
showKefu: true,
versionNo: '',
});
Page({
data: getDefaultData(),
onLoad() {
this.getVersionInfo();
},
onShow() {
this.getTabBar().init();
// 检查登录状态
const token = wx.getStorageSync('token');
if (token) {
// 已登录,获取用户信息并设置已登录菜单
this.setData({
menuData: loggedInMenuData
});
this.init();
} else {
// 未登录,显示未登录状态和未登录菜单
this.setData({
currAuthStep: 1, // 设置为未登录状态
userInfo: {
avatarUrl: '',
nickName: '点击登录',
phoneNumber: ''
},
menuData: guestMenuData
});
}
},
onPullDownRefresh() {
this.init();
},
init() {
this.fetUseriInfoHandle();
},
fetUseriInfoHandle() {
fetchUserCenter().then(({ userInfo, countsData, orderTagInfos: orderInfo, customerServiceInfo }) => {
// 获取当前菜单数据
const currentMenuData = this.data.menuData;
// eslint-disable-next-line no-unused-expressions
if (currentMenuData && currentMenuData.length > 0 && currentMenuData[0]) {
currentMenuData[0].forEach((v) => {
// 添加数据验证确保countsData存在且为数组
if (Array.isArray(countsData)) {
countsData.forEach((counts) => {
if (counts.type === v.type) {
// eslint-disable-next-line no-param-reassign
v.tit = counts.num;
}
});
}
});
}
const info = orderTagInfos.map((v, index) => ({
...v,
...(orderInfo && orderInfo[index] ? orderInfo[index] : {}),
}));
this.setData({
userInfo,
menuData: currentMenuData,
orderTagInfos: info,
customerServiceInfo,
currAuthStep: 2,
});
wx.stopPullDownRefresh();
});
},
onClickCell({ currentTarget }) {
const { type } = currentTarget.dataset;
switch (type) {
case 'address': {
wx.navigateTo({ url: '/pages/user/address/list/index' });
break;
}
case 'service': {
this.openMakePhone();
break;
}
case 'help-center': {
wx.navigateTo({
url: '/pages/help-center/index'
});
break;
}
case 'coupon': {
wx.navigateTo({ url: '/pages/coupon/coupon-list/index' });
break;
}
case 'points': {
wx.navigateTo({ url: '/pages/points/index' });
break;
}
case 'logout': {
this.handleLogout();
break;
}
default: {
Toast({
context: this,
selector: '#t-toast',
message: '未知跳转',
icon: '',
duration: 1000,
});
break;
}
}
},
jumpNav(e) {
const status = e.detail.tabType;
if (status === 'refund') {
// 跳转到退款记录页面
wx.navigateTo({ url: '/pages/refund/refund-list/index' });
} else {
wx.navigateTo({ url: `/pages/order/order-list/index?status=${status}` });
}
},
jumpAllOrder() {
wx.navigateTo({ url: '/pages/order/order-list/index' });
},
openMakePhone() {
this.setData({ showMakePhone: true });
},
closeMakePhone() {
this.setData({ showMakePhone: false });
},
call() {
wx.makePhoneCall({
phoneNumber: this.data.customerServiceInfo.servicePhone,
});
},
gotoUserEditPage() {
const { currAuthStep } = this.data;
const token = wx.getStorageSync('token');
if (!token) {
// 未登录,跳转到登录页
wx.navigateTo({ url: '/pages/login/index' });
} else if (currAuthStep === 2) {
// 已登录但未授权,跳转到个人信息页
wx.navigateTo({ url: '/pages/user/person-info/index' });
} else {
// 其他情况,重新获取用户信息
this.fetUseriInfoHandle();
}
},
getVersionInfo() {
const versionInfo = wx.getAccountInfoSync();
const { version, envVersion = __wxConfig } = versionInfo.miniProgram;
this.setData({
versionNo: envVersion === 'release' ? version : envVersion,
});
},
handleLogout() {
wx.showModal({
title: '退出登录',
content: '确定要退出登录吗?',
success: (res) => {
if (res.confirm) {
// 清除本地存储的用户信息
wx.removeStorageSync('userInfo');
wx.removeStorageSync('token');
wx.removeStorageSync('openid');
// 重置用户信息
this.setData({
userInfo: {
avatarUrl: '',
nickName: '正在登录...',
phoneNumber: '',
},
currAuthStep: 1,
});
// 显示退出成功提示
Toast({
context: this,
selector: '#t-toast',
message: '退出登录成功',
icon: 'check-circle',
duration: 1500,
});
// 延迟跳转到登录页
setTimeout(() => {
wx.reLaunch({
url: '/pages/login/index'
});
}, 1500);
}
}
});
},
// 分享功能
onShareAppMessage() {
return {
title: '个人中心 - 管理我的订单与信息',
path: '/pages/usercenter/index'
};
},
// 分享到朋友圈
onShareTimeline() {
return {
title: '个人中心 - 管理我的订单与信息'
};
}
});