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

370 lines
8.0 KiB
Plaintext

/* ====== 未登录 ====== */
.not-logged {
min-height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(160deg, #e8eeff 0%, #f5f7fa 100%);
}
.not-logged-inner {
display: flex;
flex-direction: column;
align-items: center;
gap: 36rpx;
}
.not-logged-tip {
font-size: 28rpx;
color: #888;
letter-spacing: 1rpx;
}
.go-login-btn {
width: 440rpx !important;
height: 88rpx;
line-height: 88rpx;
background: linear-gradient(135deg, #1a57b2 0%, #3a7bd5 100%);
color: #fff;
font-size: 30rpx;
font-weight: 600;
border-radius: 44rpx;
border: none;
box-shadow: 0 8rpx 24rpx rgba(26, 87, 178, 0.3);
}
.go-login-btn::after {
border: none;
}
/* ====== 已登录页面 ====== */
.mine-page {
min-height: 100vh;
background: #f5f6f8;
}
/* ====== 蓝色头部 ====== */
.header {
position: relative;
width: 100%;
height: 360rpx;
overflow: hidden;
border-radius: 0 0 60rpx 60rpx;
}
.header-bg {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.header-mask {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: linear-gradient(160deg, rgba(15, 60, 160, 0.7) 0%, rgba(26, 86, 219, 0.45) 100%);
}
/* ====== 头像区 ====== */
.profile-section {
display: flex;
flex-direction: column;
align-items: center;
margin-top: -88rpx;
margin-bottom: 32rpx;
}
.avatar-wrap,
.avatar-wrapper {
position: relative;
width: 168rpx;
height: 168rpx;
padding: 0;
margin: 0;
background: transparent;
border: none;
border-radius: 50%;
line-height: 1;
overflow: visible;
}
.avatar-wrapper::after {
border: none;
}
.avatar {
width: 168rpx;
height: 168rpx;
border-radius: 50%;
border: 6rpx solid #fff;
box-shadow: 0 8rpx 32rpx rgba(26, 87, 178, 0.2);
}
.camera-icon {
position: absolute;
right: -4rpx;
bottom: -4rpx;
width: 48rpx;
height: 48rpx;
background: linear-gradient(135deg, #1a57b2 0%, #3a7bd5 100%);
border: 4rpx solid #fff;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2rpx 8rpx rgba(26, 87, 178, 0.3);
}
.camera-icon image {
width: 26rpx;
height: 26rpx;
}
.camera-text {
font-size: 24rpx;
}
.auth-badge-icon {
width: 36rpx;
height: 36rpx;
flex-shrink: 0;
}
.phone-text {
margin-top: 20rpx;
font-size: 32rpx;
font-weight: 700;
color: #1a1a1a;
letter-spacing: 2rpx;
}
.role-pill {
margin-top: 12rpx;
padding: 7rpx 22rpx;
color: #1a57b2;
background: #edf4ff;
border: 1rpx solid #c8dcff;
border-radius: 999rpx;
font-size: 22rpx;
font-weight: 600;
}
/* ====== 内容区 ====== */
.content {
padding: 0 28rpx 60rpx;
}
/* ====== 积分 & 证书双卡 ====== */
.stat-row {
display: flex;
gap: 20rpx;
margin-bottom: 20rpx;
}
.stat-card {
flex: 1;
border-radius: 20rpx;
padding: 28rpx 24rpx 20rpx;
display: flex;
align-items: center;
justify-content: space-between;
overflow: hidden;
box-shadow: 0 6rpx 24rpx rgba(26, 87, 178, 0.1);
}
.stat-card:first-child {
background: linear-gradient(135deg, #c5caff 0%, #eef0ff 100%);
}
.stat-card:last-child {
background: linear-gradient(135deg, #ffe49a 0%, #fff8e0 100%);
}
.stat-left {
display: flex;
flex-direction: column;
}
.stat-num {
font-size: 52rpx;
font-weight: 800;
color: #1a1a1a;
line-height: 1;
}
.stat-label {
font-size: 24rpx;
color: #4a4e7a;
margin-top: 10rpx;
font-weight: 500;
}
.stat-icon {
width: 140rpx;
height: 140rpx;
flex-shrink: 0;
opacity: 0.92;
}
/* ====== 身份认证条 ====== */
.auth-bar {
margin-bottom: 20rpx;
background: url('https://yuedong-wechatapplet.oss-cn-shanghai.aliyuncs.com/static/event_miniapp/idcard-bg.png');
background-size: 100% 100%;
border-radius: 20rpx;
padding: 32rpx 30rpx;
display: flex;
align-items: center;
justify-content: space-between;
box-shadow: 0 6rpx 24rpx rgba(26, 87, 178, 0.18);
}
.auth-left {
display: flex;
flex-direction: column;
}
.auth-title {
font-size: 32rpx;
font-weight: 700;
color: #ffffff;
letter-spacing: 1rpx;
}
.auth-desc {
font-size: 22rpx;
color: rgba(255, 255, 255, 0.72);
margin-top: 8rpx;
}
.auth-badge {
background: linear-gradient(135deg, #d0d0d0 0%, #a8a8a8 100%);
border-radius: 34rpx;
width: 176rpx;
height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
gap: 8rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.15);
}
.auth-badge-y {
background: linear-gradient(135deg, #f0b94a 0%, #cc8213 100%);
box-shadow: 0 2rpx 12rpx rgba(204, 130, 19, 0.4);
}
.auth-badge-text {
font-size: 24rpx;
color: #ffffff;
white-space: nowrap;
font-weight: 600;
}
/* ====== 功能入口:三个独立阴影卡片 ====== */
.func-list {
display: flex;
flex-direction: column;
gap: 0;
background: #fff;
border-radius: 20rpx;
overflow: hidden;
box-shadow: 0 6rpx 28rpx rgba(26, 87, 178, 0.08);
margin-bottom: 20rpx;
}
.func-menu-card {
display: flex;
flex-direction: row;
align-items: center;
background: #fff;
padding: 36rpx 28rpx 36rpx 28rpx;
border-bottom: 1rpx solid #f0f2f8;
position: relative;
}
.func-menu-card:last-child {
border-bottom: none;
}
.func-line-icon { position: relative; width: 42rpx; height: 42rpx; margin: 0 4rpx; box-sizing: border-box; flex-shrink: 0; }
.score-line-icon { border: 2rpx solid #252d35; border-radius: 15rpx; }.score-line-bars { position: absolute; left: 9rpx; right: 9rpx; bottom: 6rpx; height: 24rpx; display: flex; align-items: flex-end; justify-content: space-between; border-bottom: 3rpx solid #252d35; box-sizing: border-box; }.score-line-bar { width: 5rpx; border-radius: 4rpx 4rpx 0 0; background: #2162c6; }.score-line-bar.bar-one { height: 10rpx; }.score-line-bar.bar-two { height: 17rpx; }.score-line-bar.bar-three { height: 23rpx; }
.scan-corner { position: absolute; width: 13rpx; height: 13rpx; box-sizing: border-box; }.corner-tl { left: 2rpx; top: 2rpx; border-left: 4rpx solid #252d35; border-top: 4rpx solid #252d35; border-radius: 8rpx 0 0 0; }.corner-tr { right: 2rpx; top: 2rpx; border-right: 4rpx solid #252d35; border-top: 4rpx solid #252d35; border-radius: 0 8rpx 0 0; }.corner-bl { left: 2rpx; bottom: 2rpx; border-left: 4rpx solid #252d35; border-bottom: 4rpx solid #252d35; border-radius: 0 0 0 8rpx; }.corner-br { right: 2rpx; bottom: 2rpx; border-right: 4rpx solid #252d35; border-bottom: 4rpx solid #252d35; border-radius: 0 0 8rpx 0; }.scan-center-line { position: absolute; left: 8rpx; right: 8rpx; top: 23rpx; height: 4rpx; border-radius: 999rpx; background: #2162c6; }.scan-person { position: absolute; left: 18rpx; top: 10rpx; width: 13rpx; height: 27rpx; }.scan-person-head { width: 9rpx; height: 9rpx; margin: 0 auto; border: 3rpx solid #2162c6; border-radius: 50%; box-sizing: border-box; background: #fff; }.scan-person-body { width: 13rpx; height: 9rpx; margin-top: 3rpx; border: 3rpx solid #2162c6; border-bottom: 0; border-radius: 8rpx 8rpx 0 0; box-sizing: border-box; background: #fff; }
.func-menu-main {
flex: 1;
display: flex;
flex-direction: column;
}
.func-menu-main .func-menu-text {
flex: none;
}
.func-menu-sub {
margin: 7rpx 0 0 10rpx;
font-size: 21rpx;
color: #9299a6;
}
.func-menu-icon-wrap {
width: 72rpx;
height: 72rpx;
border-radius: 18rpx;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
margin-right: 24rpx;
}
.func-menu-icon {
width: 44rpx;
height: 44rpx;
flex-shrink: 0;
}
.func-menu-text {
flex: 1;
font-size: 30rpx;
color: #1a1a1a;
font-weight: 500;
letter-spacing: 0.5rpx;
font-size: 26rpx;
margin-left: 10rpx;
}
.func-menu-arrow {
flex-shrink: 0;
font-size: 40rpx;
line-height: 1;
color: #c0c4d0;
font-weight: 300;
}
/* ====== 退出登录 ====== */
.logout-btn {
display: block;
width: 100%;
margin: 0;
height: 96rpx;
line-height: 96rpx;
background: #fff;
color: #e53935;
font-size: 28rpx;
font-weight: 500;
border-radius: 20rpx;
border: none;
box-shadow: 0 6rpx 28rpx rgba(26, 87, 178, 0.08);
letter-spacing: 2rpx;
}
.logout-btn::after {
border: none;
}