Files
danyang-match/miniapp/pages/matchmaker-workbench/matchmaker-workbench.wxml
T
WorkBuddy ca0db57f24 chore(release): 冻结 v1.1.0 版本
- 同步版本号:VERSION / backend pom / admin-web / miniapp 均升至 1.1.0
- 合并本轮代码审查修复(详见 docs/CODE-REVIEW-2026-09-24.md):
  - 后端:微信登录真实实现 RealWechatLoginProvider、实名核验真实实现 RealIdentityVerificationProvider(本地强校验 + 可配置第三方 + fail-closed/fail-fast)
  - 照片直传落库端点 POST /me/photos/confirm(fileKey 归属校验 + 对象存在性校验后 savePhoto)
  - 刷新 Token Redis TTL 修正(getExpirationMs()*2 的 4h → refreshExpirationMs 的 14 天)
  - 管理端 token 改为 HttpOnly Cookie + silent-refresh,移除 localStorage 明文存储与 30+ 处手工注入
  - 小程序:红娘接单鉴权头错位修复、serviceType 中文映射、生产域名可配置
- 隔离本地产物(.workbuddy/、*.bundle、*.dump、secrets、application-dev.yml 等已被 .gitignore 覆盖)

未验证项(打标签 ≠ 生产发布):
- 后端编译 / 单测未在本环境执行(Maven 慢、Docker DNS 受限)
- 管理端 登录→刷新→登出 端到端、小程序真机走查待人工验收
- 生产部署需注入 WECHAT_APP_ID / WECHAT_APP_SECRET、VERIFICATION_API_URL / VERIFICATION_API_KEY 与小程序生产域名
2026-09-30 12:10:00 +08:00

86 lines
2.9 KiB
Plaintext

<!-- 红娘工作台 -->
<view class="page">
<!-- 欢迎区 -->
<view class="header">
<view class="header-top">
<view class="avatar">👩</view>
<view class="greeting-wrap">
<view class="greeting">您好,{{operatorName}}</view>
<view class="date">{{currentDate}}</view>
</view>
</view>
</view>
<view class="header-badge">公益红娘</view>
<!-- 数据概览 -->
<view class="stats-container">
<view class="stat-card" hover-class="stat-hover">
<view class="stat-icon pending">📋</view>
<view class="stat-value">{{pendingCount}}</view>
<view class="stat-label">待处理</view>
</view>
<view class="stat-card" hover-class="stat-hover">
<view class="stat-icon progress">⏳</view>
<view class="stat-value">{{inProgressCount}}</view>
<view class="stat-label">进行中</view>
</view>
<view class="stat-card" hover-class="stat-hover">
<view class="stat-icon completed">✅</view>
<view class="stat-value">{{completedCount}}</view>
<view class="stat-label">已完成</view>
</view>
<view class="stat-card" hover-class="stat-hover">
<view class="stat-icon today">📅</view>
<view class="stat-value">{{todayCount}}</view>
<view class="stat-label">今日</view>
</view>
</view>
<!-- 待处理列表 -->
<view class="section" wx:if="{{!loading}}">
<view class="section-header">
<view class="section-title-wrap">
<text class="section-dot"></text>
<text class="section-title">待处理服务</text>
</view>
<text class="section-count" wx:if="{{pendingCount > 0}}">共{{pendingCount}}件</text>
</view>
<view class="service-list" wx:if="{{pendingServices.length > 0}}">
<view
wx:for="{{pendingServices}}"
wx:key="serviceId"
class="service-card"
data-id="{{item.serviceId}}"
bindtap="onViewService"
>
<view class="service-left">
<view class="service-header">
<view class="service-tag">{{serviceTypeLabel(item.serviceType)}}</view>
<view class="service-time">{{formatTime(item.createdAt)}}</view>
</view>
<view class="service-desc">{{item.description}}</view>
</view>
<button class="btn-claim" catchtap="onClaimService" data-id="{{item.serviceId}}" hover-class="btn-hover">接单</button>
</view>
</view>
<view class="empty-state" wx:else>
<view class="empty-illustration">📭</view>
<view class="empty-text">暂无待处理服务</view>
<view class="empty-hint">用户申请的服务将在这里展示</view>
</view>
</view>
<!-- 加载中 -->
<view class="loading-wrap" wx:if="{{loading}}">
<view class="loading-spinner"></view>
<text class="loading-text">加载中...</text>
</view>
<!-- 退出登录 -->
<view class="footer">
<button class="logout-btn" bindtap="onLogout">退出登录</button>
</view>
</view>