Miniprogram: - Profile "我的设备": show unbind option when device bound, scan when not - Add device status indicator (已绑定/未绑定) to profile menu Admin console: - Login: add @confirm to inputs so Enter key submits the form - Record detail: wire up 详情 link with modal showing full record info - Dashboard: add subscription stats row (月卡/年卡/试用/收入) - Subscription: add 取消 action for active subscriptions - Format: fix -8h timezone display for UTC ISO date strings Server: - POST /api/v1/admin/subscriptions/cancel: cancel active subscriptions - Dashboard API: include sub_stats (plan counts + monthly revenue) - IP extraction: add X-Forwarded-For fallback for logging
52 行
1.9 KiB
Plaintext
52 行
1.9 KiB
Plaintext
<view class="page">
|
||
<view class="page-content">
|
||
<view class="user-row">
|
||
<view class="user-avatar">👤</view>
|
||
<view class="user-info">
|
||
<view class="user-name">{{userInfo.nickname || '未登录'}}</view>
|
||
<view class="user-phone">{{userInfo.phone || ''}}</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="sub-card" wx:if="{{subscription}}">
|
||
<view class="sub-left">
|
||
<view class="sub-name">✨ 智能模式</view>
|
||
<view class="sub-remain">剩余 {{subRemaining}}天</view>
|
||
</view>
|
||
<text class="status-badge status-badge-gold">试用中</text>
|
||
</view>
|
||
|
||
<view class="menu-list">
|
||
<view class="menu-item" bindtap="onManageDevice">
|
||
<view class="menu-icon">📱</view>
|
||
<view class="menu-text">我的设备</view>
|
||
<text class="menu-device-status" wx:if="{{deviceCount > 0}}">已绑定</text>
|
||
<text class="menu-device-status menu-device-unbound" wx:else>未绑定</text>
|
||
<text class="menu-arrow">›</text>
|
||
</view>
|
||
<view class="menu-item" bindtap="onViewHistory">
|
||
<view class="menu-icon">📋</view>
|
||
<view class="menu-text">护理记录</view>
|
||
<text class="menu-arrow">›</text>
|
||
</view>
|
||
<view class="menu-item" bindtap="onViewSubscription">
|
||
<view class="menu-icon">💳</view>
|
||
<view class="menu-text">订阅管理</view>
|
||
<text class="menu-arrow">›</text>
|
||
</view>
|
||
<view class="menu-item">
|
||
<view class="menu-icon">❓</view>
|
||
<view class="menu-text">使用帮助</view>
|
||
<text class="menu-arrow">›</text>
|
||
</view>
|
||
<view class="menu-item">
|
||
<view class="menu-icon">📞</view>
|
||
<view class="menu-text">联系我们</view>
|
||
<text class="menu-arrow">›</text>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="logout-btn" bindtap="onLogout">退出登录</view>
|
||
</view>
|
||
</view>
|