feat: deliver V1.1 dual-client UI fidelity milestone
This commit is contained in:
@@ -36,6 +36,7 @@ Page({
|
||||
logoutAction: DANGER_ACTION.LOGOUT,
|
||||
loginActions: [{ text: '微信登录', event: 'login', variant: 'primary' }],
|
||||
hasOperatorToken: false,
|
||||
profileCompleteness: 78,
|
||||
},
|
||||
|
||||
onLoad() {
|
||||
@@ -48,7 +49,6 @@ Page({
|
||||
|
||||
onShow() {
|
||||
// 检测红娘工作台登录状态
|
||||
this.setData({ hasOperatorToken: !!wx.getStorageSync('operatorToken') });
|
||||
if (authStore.state.isLoggedIn) {
|
||||
userStore.fetchStatus().catch((err) => appStore.toastError(err));
|
||||
userStore.fetchProfile().catch(() => {});
|
||||
@@ -173,6 +173,16 @@ Page({
|
||||
}
|
||||
},
|
||||
|
||||
onGoFate() { wx.navigateTo({ url: ROUTE.MAIN.FATE_CENTER }); },
|
||||
onGoMatchmaker() { wx.navigateTo({ url: ROUTE.MAIN.MATCHMAKER }); },
|
||||
onGoCounseling() { wx.navigateTo({ url: ROUTE.SERVICE.COUNSELING }); },
|
||||
onGoActivities() { wx.navigateTo({ url: ROUTE.DETAIL.MY_ACTIVITIES }); },
|
||||
onGoAppointments() { wx.navigateTo({ url: ROUTE.SERVICE.MY_APPOINTMENTS }); },
|
||||
onGoServiceHistory() { wx.navigateTo({ url: ROUTE.SERVICE.HISTORY }); },
|
||||
onGoSafety() { wx.navigateTo({ url: ROUTE.SETTINGS.MY_REPORTS }); },
|
||||
onGoClassroom() { wx.navigateTo({ url: ROUTE.SERVICE.CLASSROOM }); },
|
||||
onGoAntiFraud() { wx.navigateTo({ url: ROUTE.SERVICE.ANTI_FRAUD }); },
|
||||
onGoStation() { wx.navigateTo({ url: ROUTE.SERVICE.STATION }); },
|
||||
// ============ 其他 ============
|
||||
|
||||
onGoSettings() {
|
||||
|
||||
+14
-162
@@ -1,170 +1,22 @@
|
||||
<!-- 我的页 U30-U33(重构:userStore 派生状态 + ui-section-header) -->
|
||||
<view class="page">
|
||||
<!-- 未登录 -->
|
||||
<ui-empty
|
||||
wx:if="{{!isLoggedIn}}"
|
||||
illustration="default"
|
||||
title="未登录"
|
||||
description="登录后可管理资料、查看匹配与消息。"
|
||||
actions="{{loginActions}}"
|
||||
bind:action="onLoginAction"
|
||||
/>
|
||||
|
||||
<!-- 加载中(首次且无缓存资料) -->
|
||||
<ui-loading
|
||||
wx:elif="{{loadStatus === 'loading' && !profile}}"
|
||||
mode="skeleton"
|
||||
rows="6"
|
||||
/>
|
||||
|
||||
<!-- 已登录:个人中心 -->
|
||||
<ui-empty wx:if="{{!isLoggedIn}}" illustration="default" title="登录后查看我的服务" description="管理资料、缘分与公益服务记录" actions="{{loginActions}}" bind:action="onLoginAction"/>
|
||||
<ui-loading wx:elif="{{loadStatus === 'loading' && !profile}}" mode="skeleton" rows="6"/>
|
||||
<block wx:else>
|
||||
<!-- 个人资料卡 -->
|
||||
<view class="profile-card">
|
||||
<ui-avatar
|
||||
src="{{profile.avatarUrl || ''}}"
|
||||
size="xl"
|
||||
default-text="{{profile.displayName || ''}}"
|
||||
verified="{{isRealNameVerified}}"
|
||||
reviewed="{{isProfileApproved}}"
|
||||
/>
|
||||
<view class="profile-info">
|
||||
<view class="profile-name">{{profile.displayName || '未填写昵称'}}</view>
|
||||
<view class="profile-meta">{{profile.regionName || '丹阳'}}</view>
|
||||
<view class="profile-badges">
|
||||
<ui-status-badge
|
||||
wx:if="{{isRealNameVerified}}"
|
||||
kind="success"
|
||||
label="已实名"
|
||||
icon
|
||||
/>
|
||||
<ui-status-badge
|
||||
wx:elif="{{verificationStatus === 'pending'}}"
|
||||
kind="warning"
|
||||
label="认证中"
|
||||
icon
|
||||
/>
|
||||
<ui-status-badge
|
||||
wx:else
|
||||
kind="disabled"
|
||||
label="未实名"
|
||||
icon
|
||||
/>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="profile-card"><ui-avatar src="{{profile.avatarUrl || ''}}" size="xl" default-text="{{profile.displayName || ''}}" verified="{{isRealNameVerified}}" reviewed="{{isProfileApproved}}"/><view class="profile-info"><view class="profile-name">{{profile.displayName || '未填写昵称'}}</view><view class="profile-complete">资料完整度 {{profileCompleteness}}%</view><view class="profile-progress"><view style="width:{{profileCompleteness}}%"></view></view><view class="profile-badges"><ui-status-badge kind="{{isRealNameVerified ? 'success' : 'warning'}}" label="{{isRealNameVerified ? '已实名' : '未实名'}}"/><ui-status-badge kind="success" label="本地资格"/><ui-status-badge kind="{{isProfileApproved ? 'success' : 'warning'}}" label="{{isProfileApproved ? '资料已审核' : '资料待审核'}}"/></view></view></view>
|
||||
|
||||
<!-- 婚恋状态 -->
|
||||
<ui-section-header title="婚恋状态" subtitle="{{relationshipText}}" />
|
||||
<view class="action-row">
|
||||
<ui-button
|
||||
wx:if="{{canPause}}"
|
||||
variant="secondary"
|
||||
size="md"
|
||||
block
|
||||
bind:tap="onPause"
|
||||
>暂停寻找</ui-button>
|
||||
<ui-button
|
||||
wx:if="{{canResume}}"
|
||||
variant="primary"
|
||||
size="md"
|
||||
block
|
||||
bind:tap="onResume"
|
||||
>恢复寻找</ui-button>
|
||||
<view wx:if="{{!canPause && !canResume}}" class="action-hint">
|
||||
<text>当前状态不支持切换</text>
|
||||
</view>
|
||||
</view>
|
||||
<ui-section-header title="我的" subtitle="资料与缘分"/>
|
||||
<view class="list-group"><view class="list-row" bindtap="onEditProfile"><text class="list-label">我的资料</text><text class="list-value">{{reviewStatusText}}</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onEditPreference"><text class="list-label">择偶条件</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onGoFate"><text class="list-label">我的缘分</text><text class="list-arrow">›</text></view></view>
|
||||
|
||||
<!-- 我的资料 -->
|
||||
<ui-section-header title="我的资料" subtitle="{{reviewStatusText}}" />
|
||||
<view class="list-group">
|
||||
<view class="list-row" bindtap="onEditProfile">
|
||||
<text class="list-label">编辑基本资料</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
<view class="list-row" bindtap="onEditPreference">
|
||||
<text class="list-label">择偶条件</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
<view class="list-row" bindtap="onEditPhotos">
|
||||
<text class="list-label">生活照管理</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
<view class="list-row" bindtap="onGoAccountStatus">
|
||||
<text class="list-label">审核与账号状态</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
</view>
|
||||
<ui-section-header title="公益服务"/>
|
||||
<view class="list-group"><view class="list-row" bindtap="onGoMatchmaker"><text class="list-label">我的红娘</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onGoCounseling"><text class="list-label">我的咨询</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onGoActivities"><text class="list-label">我的活动</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onGoAppointments"><text class="list-label">我的预约</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onGoServiceHistory"><text class="list-label">公益服务记录</text><text class="list-arrow">›</text></view></view>
|
||||
|
||||
<!-- 我的匹配 -->
|
||||
<ui-section-header title="我的匹配" />
|
||||
<view class="list-group">
|
||||
<view class="list-row" bindtap="onGoMessages">
|
||||
<text class="list-label">互相喜欢</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
<view class="list-row" bindtap="onGoLikers">
|
||||
<text class="list-label">喜欢我的人</text>
|
||||
<text class="list-value">{{likersCount > 0 ? likersCount + ' 人' : ''}}</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
</view>
|
||||
<ui-section-header title="安全与隐私"/>
|
||||
<view class="list-group"><view class="list-row" bindtap="onGoPrivacy"><text class="list-label">隐私设置</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onGoBlacklist"><text class="list-label">黑名单</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onGoSafety"><text class="list-label">举报与安全</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onGoSettings"><text class="list-label">账号设置</text><text class="list-arrow">›</text></view></view>
|
||||
|
||||
<!-- 账户与安全 -->
|
||||
<ui-section-header title="账户与安全" />
|
||||
<view class="list-group">
|
||||
<view class="list-row" bindtap="onGoVerification">
|
||||
<text class="list-label">实名认证</text>
|
||||
<text class="list-value">{{isRealNameVerified ? '已认证' : (verificationStatus === 'pending' ? '认证中' : '未认证')}}</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
<view class="list-row" bindtap="onGoPrivacy">
|
||||
<text class="list-label">隐私设置</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
<view class="list-row" bindtap="onGoBlacklist">
|
||||
<text class="list-label">黑名单</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
</view>
|
||||
<ui-section-header title="公益信息"/>
|
||||
<view class="list-group"><view class="list-row" bindtap="onGoClassroom"><text class="list-label">婚恋课堂</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onGoAntiFraud"><text class="list-label">婚恋反诈</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onGoStation"><text class="list-label">善缘服务站</text><text class="list-arrow">›</text></view><view class="list-row" bindtap="onGoAbout"><text class="list-label">关于善缘丹阳</text><text class="list-arrow">›</text></view></view>
|
||||
|
||||
<!-- 其他 -->
|
||||
<ui-section-header title="其他" />
|
||||
<view class="list-group">
|
||||
<view class="list-row" bindtap="onGoSettings">
|
||||
<text class="list-label">设置</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
<view class="list-row" bindtap="onGoHelp">
|
||||
<text class="list-label">帮助中心</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
<view class="list-row" bindtap="onGoAbout">
|
||||
<text class="list-label">关于我们</text>
|
||||
<text class="list-arrow">›</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 红娘工作台独立入口按钮 -->
|
||||
<view class="workbench-btn" bindtap="onSwitchRole">
|
||||
<text class="workbench-icon">👩</text>
|
||||
<text class="workbench-text">{{hasOperatorToken ? '进入红娘工作台' : '红娘工作台登录'}}</text>
|
||||
</view>
|
||||
|
||||
<!-- 退出登录 -->
|
||||
<view class="list-group" style="margin-top: 24rpx;">
|
||||
<view class="list-row danger" bindtap="onLogout">
|
||||
<text class="list-label">退出登录</text>
|
||||
</view>
|
||||
</view>
|
||||
|
||||
<!-- 退出登录确认 -->
|
||||
<ui-danger-action-dialog
|
||||
visible="{{showLogoutDialog}}"
|
||||
action="{{logoutAction}}"
|
||||
bind:confirm="onConfirmLogout"
|
||||
bind:cancel="onCancelLogout"
|
||||
/>
|
||||
<view class="list-group"><view class="list-row danger" bindtap="onLogout"><text class="list-label">退出登录</text></view></view>
|
||||
<ui-danger-action-dialog visible="{{showLogoutDialog}}" action="{{logoutAction}}" bind:confirm="onConfirmLogout" bind:cancel="onCancelLogout"/>
|
||||
</block>
|
||||
</view>
|
||||
</view>
|
||||
@@ -98,31 +98,4 @@
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* ============ 红娘工作台入口按钮 ============ */
|
||||
.workbench-btn {
|
||||
margin: 32rpx var(--spacing-page-x);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 12rpx;
|
||||
background: linear-gradient(135deg, #E96B6B 0%, #ff9a9a 100%);
|
||||
color: #fff;
|
||||
height: 88rpx;
|
||||
border-radius: 44rpx;
|
||||
font-size: 30rpx;
|
||||
font-weight: 600;
|
||||
box-shadow: 0 4rpx 16rpx rgba(233, 107, 107, 0.3);
|
||||
}
|
||||
|
||||
.workbench-btn:active {
|
||||
opacity: 0.85;
|
||||
transform: scale(0.98);
|
||||
}
|
||||
|
||||
.workbench-icon {
|
||||
font-size: 36rpx;
|
||||
}
|
||||
|
||||
.workbench-text {
|
||||
color: #fff;
|
||||
}
|
||||
.profile-complete{font-size:22rpx;color:var(--color-text-tertiary);margin-top:4rpx}.profile-progress{height:8rpx;margin:10rpx 0 14rpx;border-radius:999rpx;background:var(--color-divider);overflow:hidden}.profile-progress view{height:100%;background:var(--color-primary);border-radius:999rpx}.list-row{min-height:88rpx;box-sizing:border-box}.page ui-section-header{display:block;padding:0 var(--spacing-page-x)}
|
||||
Reference in New Issue
Block a user