347 lines
7.6 KiB
JavaScript
347 lines
7.6 KiB
JavaScript
|
|
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: '个人中心 - 管理我的订单与信息'
|
|||
|
|
};
|
|||
|
|
}
|
|||
|
|
});
|