chore: establish V1.1 recovery baseline
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
/**
|
||||
* 我的婚恋状态页 U41
|
||||
* 展示当前状态,提供退出服务/正在了解/成功牵手入口
|
||||
*/
|
||||
const api = require('../../utils/api');
|
||||
|
||||
Page({
|
||||
data: {
|
||||
relationshipStatus: 'searching', // searching, paused, getting_to_know, matched_successfully
|
||||
recommendationEnabled: true,
|
||||
matchCount: 0,
|
||||
loading: false
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
this.loadStatus();
|
||||
},
|
||||
|
||||
onShow() {
|
||||
this.loadStatus();
|
||||
},
|
||||
|
||||
async loadStatus() {
|
||||
try {
|
||||
const token = wx.getStorageSync('accessToken');
|
||||
const res = await api.get('/account/status', {}, { Authorization: `Bearer ${token}` });
|
||||
this.setData({
|
||||
relationshipStatus: res.relationshipStatus || 'searching',
|
||||
recommendationEnabled: res.recommendationEnabled !== false,
|
||||
matchCount: res.activeMatchCount || 0
|
||||
});
|
||||
} catch (err) {
|
||||
console.error(err);
|
||||
}
|
||||
},
|
||||
|
||||
async withdrawService() {
|
||||
wx.showModal({
|
||||
title: '退出婚恋服务',
|
||||
content: '退出后您的资料将不再展示,系统不再为您推荐对象,但账号保留。是否继续?',
|
||||
success: async (ret) => {
|
||||
if (ret.confirm) {
|
||||
try {
|
||||
const token = wx.getStorageSync('accessToken');
|
||||
await api.post('/account/withdraw', {}, { Authorization: `Bearer ${token}` });
|
||||
this.setData({ recommendationEnabled: false, relationshipStatus: 'paused' });
|
||||
wx.showToast({ title: '已退出婚恋服务', icon: 'success' });
|
||||
} catch (err) {
|
||||
wx.showToast({ title: err.message || '操作失败', icon: 'none' });
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
async resumeService() {
|
||||
try {
|
||||
const token = wx.getStorageSync('accessToken');
|
||||
await api.post('/account/resume', {}, { Authorization: `Bearer ${token}` });
|
||||
this.setData({ recommendationEnabled: true, relationshipStatus: 'searching' });
|
||||
wx.showToast({ title: '已重新开启', icon: 'success' });
|
||||
} catch (err) {
|
||||
wx.showToast({ title: err.message || '操作失败', icon: 'none' });
|
||||
}
|
||||
},
|
||||
|
||||
goSuccessConfirm() {
|
||||
wx.navigateTo({ url: '/pages/success-confirm/success-confirm' });
|
||||
},
|
||||
|
||||
goPrivacy() {
|
||||
wx.navigateTo({ url: '/pages/privacy-settings/privacy-settings' });
|
||||
},
|
||||
|
||||
goLogout() {
|
||||
wx.showModal({
|
||||
title: '注销账号',
|
||||
content: '注销后所有数据将被删除且不可恢复,是否继续?',
|
||||
success: (ret) => {
|
||||
if (ret.confirm) {
|
||||
wx.navigateTo({ url: '/pages/account-logout/account-logout' });
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"navigationBarTitleText": "我的婚恋状态",
|
||||
"usingComponents": {}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<!-- 我的婚恋状态页 U41 -->
|
||||
<view class="page">
|
||||
<view class="status-card" wx:if="{{recommendationEnabled}}">
|
||||
<view class="status-icon">💚</view>
|
||||
<text class="status-title">正在寻找</text>
|
||||
<text class="status-hint">您的资料正在推荐给潜在对象,共 {{matchCount}} 个活跃匹配</text>
|
||||
<button class="btn-withdraw" bindtap="withdrawService">退出婚恋服务</button>
|
||||
</view>
|
||||
|
||||
<view class="status-card paused" wx:if="{{!recommendationEnabled}}">
|
||||
<view class="status-icon">⏸</view>
|
||||
<text class="status-title">婚恋服务已暂停</text>
|
||||
<text class="status-hint">您的资料已隐藏,系统不再为您推荐对象。您可随时重新开启。</text>
|
||||
<button class="btn-resume" bindtap="resumeService">重新开启婚恋服务</button>
|
||||
</view>
|
||||
|
||||
<view class="menu-list">
|
||||
<view class="menu-item" bindtap="goSuccessConfirm">
|
||||
<text class="menu-icon">💍</text>
|
||||
<text class="menu-text">成功牵手确认</text>
|
||||
<text class="menu-arrow">›</text>
|
||||
</view>
|
||||
<view class="menu-item" bindtap="goPrivacy">
|
||||
<text class="menu-icon">🔒</text>
|
||||
<text class="menu-text">隐私设置</text>
|
||||
<text class="menu-arrow">›</text>
|
||||
</view>
|
||||
<view class="menu-item danger" bindtap="goLogout">
|
||||
<text class="menu-icon">🗑</text>
|
||||
<text class="menu-text">注销账号</text>
|
||||
<text class="menu-hint">注销后数据不可恢复</text>
|
||||
<text class="menu-arrow">›</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
@@ -0,0 +1,59 @@
|
||||
.page { padding: 32rpx; background: #FFF8F7; min-height: 100vh; }
|
||||
|
||||
.status-card {
|
||||
background: #fff;
|
||||
border-radius: 24rpx;
|
||||
padding: 48rpx 32rpx;
|
||||
text-align: center;
|
||||
margin-bottom: 32rpx;
|
||||
box-shadow: 0 2rpx 12rpx rgba(0,0,0,0.04);
|
||||
}
|
||||
|
||||
.status-card.paused {
|
||||
background: #F9F9F9;
|
||||
}
|
||||
|
||||
.status-icon { font-size: 72rpx; display: block; margin-bottom: 16rpx; }
|
||||
.status-title { font-size: 32rpx; font-weight: bold; color: #1A1A1A; display: block; }
|
||||
.status-hint { font-size: 24rpx; color: #999; display: block; margin-top: 12rpx; line-height: 1.5; }
|
||||
|
||||
.btn-withdraw, .btn-resume {
|
||||
width: 80%;
|
||||
height: 72rpx;
|
||||
line-height: 72rpx;
|
||||
border-radius: 36rpx;
|
||||
font-size: 28rpx;
|
||||
margin-top: 32rpx;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-withdraw {
|
||||
background: #FFF3F2;
|
||||
color: #E96B6B;
|
||||
}
|
||||
|
||||
.btn-resume {
|
||||
background: #E96B6B;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.menu-list {
|
||||
background: #fff;
|
||||
border-radius: 24rpx;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.menu-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 32rpx 28rpx;
|
||||
border-bottom: 1rpx solid #f5f5f5;
|
||||
}
|
||||
|
||||
.menu-item:last-child { border-bottom: none; }
|
||||
.menu-item.danger .menu-text { color: #E96B6B; }
|
||||
|
||||
.menu-icon { font-size: 36rpx; margin-right: 20rpx; }
|
||||
.menu-text { flex: 1; font-size: 28rpx; color: #1A1A1A; }
|
||||
.menu-hint { font-size: 22rpx; color: #999; margin-right: 12rpx; }
|
||||
.menu-arrow { font-size: 32rpx; color: #CCC; }
|
||||
Reference in New Issue
Block a user