ltx d17f43135d feat: 完善多角色赛事服务功能
- 新增参赛者、裁判、检录员角色识别及角色化首页与个人中心
- 新增裁判注册、身份认证提示、赛事执裁报名及报名记录查询
- 新增检录工作台,支持检录任务、轮次状态与运动员检录操作
- 新增赛事成绩查询页面及成绩详情展示
- 封装成绩、检录和裁判报名接口,补充请求参数清理逻辑
- 新增检录 Tab 图标、页面路由及本地开发配置
- 新增 Git 忽略规则,排除依赖、构建缓存、日志和本地工具文件
2026-08-07 11:28:38 +08:00

100 lines
5.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!-- 未登录 -->
<view wx:if="{{!loggedIn}}" class="not-logged">
<view class="not-logged-inner">
<text class="not-logged-tip">登录后可查看我的信息与参赛记录</text>
<button class="go-login-btn" bindtap="goToLogin">去登录</button>
</view>
</view>
<!-- 已登录 -->
<view wx:else class="mine-page">
<!-- 蓝色头部区域 -->
<view class="header">
<image class="header-bg" src="https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/event_miniapp/bg.png" mode="aspectFill" />
<view class="header-mask"></view>
<mp-navigation-bar title="我的" background-color="transparent" color="#fff" back="{{false}}"></mp-navigation-bar>
</view>
<!-- 头像 + 手机号 -->
<view class="profile-section">
<button class="avatar-wrapper" open-type="chooseAvatar" bind:chooseavatar="onChooseAvatar">
<image class="avatar" src="{{profile.avatar || 'https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/event_miniapp/default-avatar.png'}}" mode="aspectFill" />
<view class="camera-icon">
<image src="https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/event_miniapp/camera.png" mode="aspectFit" />
</view>
</button>
<text class="phone-text">{{maskedPhone}}</text>
<view class="role-pill">{{roleLabel}}</view>
</view>
<!-- 内容区 -->
<view class="content">
<!-- 积分 & 证书双卡 -->
<view wx:if="{{isParticipant}}" class="stat-row">
<view class="stat-card" bindtap="goToPoints">
<view class="stat-left">
<text class="stat-num">{{profile.points || 0}}</text>
<text class="stat-label">我的积分</text>
</view>
<image class="stat-icon" src="https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/event_miniapp/point.png" mode="aspectFit" />
</view>
<view class="stat-card" bindtap="goToCert">
<view class="stat-left">
<text class="stat-num">{{profile.certificateCount || 0}}</text>
<text class="stat-label" style="color: #F4D053;">我的证书</text>
</view>
<image class="stat-icon" src="https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/event_miniapp/book.png" mode="aspectFit" />
</view>
</view>
<!-- 身份认证条 -->
<view wx:if="{{!isChecker}}" class="auth-bar" bindtap="goToAuth">
<view class="auth-left">
<text class="auth-title">{{isReferee ? '裁判身份认证' : '身份认证'}}</text>
<text class="auth-desc">{{isReferee ? '完成认证后可参与赛事执裁' : '点击进行身份认证'}}</text>
</view>
<view class="auth-badge auth-badge-{{authStatus === 2 ? 'y' : 'n'}}">
<image class="auth-badge-icon" src="https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/event_miniapp/auth-{{authStatus === 2 ? 'y' : 'n'}}.png" mode="aspectFit" />
<text class="auth-badge-text">{{authStatusText}}</text>
</view>
</view>
<!-- 功能入口:三个独立阴影卡片 -->
<view class="func-list">
<view class="func-menu-card" bindtap="goToScores">
<view class="func-line-icon score-line-icon">
<view class="score-line-bars"><view class="score-line-bar bar-one"></view><view class="score-line-bar bar-two"></view><view class="score-line-bar bar-three"></view></view>
</view>
<text class="func-menu-text">成绩查询</text>
<text class="func-menu-arrow">›</text>
</view>
<view wx:if="{{isChecker}}" class="func-menu-card func-menu-card--primary" bindtap="goToCheckin">
<view class="func-line-icon scan-line-icon">
<view class="scan-corner corner-tl"></view><view class="scan-corner corner-tr"></view><view class="scan-corner corner-bl"></view><view class="scan-corner corner-br"></view>
<view class="scan-center-line"></view>
<view class="scan-person"><view class="scan-person-head"></view><view class="scan-person-body"></view></view>
</view>
<view class="func-menu-main">
<text class="func-menu-text">检录工作台</text>
<text class="func-menu-sub">查看当前检录轮次与组别</text>
</view>
<text class="func-menu-arrow">›</text>
</view>
<block wx:if="{{isParticipant}}">
<view class="func-menu-card" bindtap="goToOrders">
<image class="func-menu-icon" src="https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/event_miniapp/order.png" mode="aspectFit" />
<text class="func-menu-text">我的订单</text>
<text class="func-menu-arrow">›</text>
</view>
<view class="func-menu-card" bindtap="goToRecords">
<image class="func-menu-icon" src="https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/event_miniapp/history.png" mode="aspectFit" />
<text class="func-menu-text">参赛记录</text>
<text class="func-menu-arrow">›</text>
</view>
<view class="func-menu-card" bindtap="goToTeam">
<image class="func-menu-icon" src="https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/event_miniapp/team.png" mode="aspectFit" />
<text class="func-menu-text">我的团队</text>
<text class="func-menu-arrow">›</text>
</view>
</block>
</view>
<!-- 退出登录 -->
<button class="logout-btn" bindtap="onLogout">退出登录</button>
</view>
</view>