Files
WorkBuddy 3c2b967274
CI/CD Pipeline / UI Contracts (source-structure gates) (push) Canceled after 0s
CI/CD Pipeline / E2E (live stack) (push) Canceled after 0s
CI/CD Pipeline / Backend Build & Test (push) Canceled after 0s
CI/CD Pipeline / Admin Web Build (push) Canceled after 0s
CI/CD Pipeline / Mini Program Compile Check (push) Canceled after 0s
CI/CD Pipeline / Migration Validation (push) Canceled after 0s
CI/CD Pipeline / Test Shell Guard (Phase 23 Gate) (push) Canceled after 0s
release: freeze 2026-10-15 validated release baseline
2026-10-15 09:47:31 +08:00

331 lines
7.3 KiB
Plaintext
Raw Permalink 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.
/* 页面容器 */
.page {
min-height:100vh;
background:var(--color-bg-subtle);
}
/* 欢迎区 */
.header {
background:linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
padding:48rpx 32rpx 60rpx;
color:var(--color-text-inverse);
position:relative;
}
.header-top {
display:flex;
align-items:center;
gap:24rpx;
}
.avatar {
width:88rpx;
height:88rpx;
background:rgba(255,255,255,0.25);
border-radius:50%;
display:flex;
align-items:center;
justify-content:center;
font-size:44rpx;
}
.greeting {
font-size:38rpx;
font-weight:700;
margin-bottom:6rpx;
}
.date {
font-size:24rpx;
opacity:0.85;
}
.header-badge {
margin:12rpx 0 0 112rpx;
background:rgba(255,255,255,0.25);
padding:6rpx 20rpx;
border-radius:20rpx;
font-size:22rpx;
color:var(--color-text-inverse);
display:inline-block;
background:rgba(255,255,255,0.2);
padding:8rpx 24rpx;
border-radius:24rpx;
font-size:22rpx;
}
/* 数据概览 - 2x2 紧凑网格(原高度 ~234rpx → 压缩到 ~80rpx,约 1/3) */
.stats-container {
display:flex;
flex-wrap:wrap;
padding:0 24rpx;
margin-top:24rpx;
position:relative;
z-index:10;
}
.stat-card {
width:calc(50% - 16rpx);
margin:0 8rpx 16rpx 8rpx;
background:var(--color-bg-card);
border-radius:20rpx;
padding:16rpx 20rpx;
display:flex;
align-items:center;
gap:16rpx;
box-shadow:0 4rpx 16rpx rgba(0,0,0,0.08);
box-sizing:border-box;
}
.stat-icon {
font-size:36rpx;
flex:none;
width:64rpx;
height:64rpx;
display:flex;
align-items:center;
justify-content:center;
background:var(--color-primary-light);
border-radius:16rpx;
}
.stat-card .stat-icon.progress { background:#FFF6E6; }
.stat-card .stat-icon.completed { background:#EDF8F1; }
.stat-card .stat-icon.today { background:#EEF5FF; }
.stat-info {
flex:1;
min-width:0;
display:flex;
flex-direction:column;
}
.stat-value {
font-size:40rpx;
font-weight:700;
color:var(--color-text-strong);
line-height:1.2;
}
.stat-label {
font-size:22rpx;
color:var(--color-text-tertiary);
margin-top:4rpx;
}
/* 列表区块 */
.section {
margin:0 24rpx 24rpx;
background:var(--color-bg-card);
border-radius:24rpx;
padding:32rpx;
box-shadow:0 2rpx 12rpx rgba(0,0,0,0.04);
}
.section-header {
display:flex;
justify-content:space-between;
align-items:center;
margin-bottom:24rpx;
}
.section-title-wrap {
display:flex;
align-items:center;
gap:12rpx;
}
.section-dot {
width:6rpx;
height:28rpx;
background:linear-gradient(180deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
border-radius:3rpx;
}
.section-title {
font-size:30rpx;
font-weight:600;
color:var(--color-text-strong);
}
.section-count {
font-size:22rpx;
color:var(--color-text-tertiary);
background:var(--color-bg-subtle);
padding:4rpx 14rpx;
border-radius:12rpx;
}
/* 服务列表 */
.service-list {
display:flex;
flex-direction:column;
gap:16rpx;
}
.service-card {
display:flex;
align-items:center;
justify-content:space-between;
padding:24rpx;
background:var(--color-bg-subtle);
border-radius:16rpx;
border:1rpx solid var(--color-divider);
}
.detail-btn{flex:none;margin:0;background:#2f7df6;color:#fff;font-size:22rpx;padding:8rpx 16rpx;line-height:1.6;border-radius:8rpx}
.service-left {
flex:1;
min-width:0;
margin-right:20rpx;
}
.service-header {
display:flex;
align-items:center;
justify-content:space-between;
margin-bottom:8rpx;
}
.service-tag {
font-size:24rpx;
font-weight:600;
color:var(--color-primary-strong);
background:rgba(233, 107, 107, 0.08);
padding:4rpx 12rpx;
border-radius:6rpx;
}
.service-time {
font-size:24rpx;
color:var(--color-text-disabled);
}
.service-desc {
font-size:26rpx;
color:var(--color-text-primary);
overflow:hidden;
text-overflow:ellipsis;
white-space:nowrap;
}
.btn-claim {
background:linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%);
color:var(--color-text-inverse);
font-size:24rpx;
font-weight:600;
padding:12rpx 32rpx;
border-radius:24rpx;
border:none;
box-shadow:0 4rpx 12rpx rgba(233, 107, 107, 0.25);
}
/* 空状态 */
.empty-state {
text-align:center;
padding:80rpx 40rpx;
}
.empty-illustration {
font-size:88rpx;
margin-bottom:16rpx;
opacity:0.5;
}
.empty-text {
font-size:26rpx;
color:var(--color-text-tertiary);
margin-bottom:6rpx;
}
.empty-hint {
font-size:24rpx;
color:var(--color-text-disabled);
}
/* 紧凑区块:仅“我的服务对象分配 / 转介任务”两栏,垂直高度约为原来的一半 */
.section-compact {
padding:24rpx 32rpx;
}
.section-compact .section-header {
margin-bottom:12rpx;
}
.empty-compact {
padding:12rpx 40rpx;
}
.empty-compact .empty-illustration {
font-size:48rpx;
margin-bottom:4rpx;
}
.empty-compact .empty-text {
margin-bottom:2rpx;
}
.section-compact .referral-open-btn {
margin-top:8rpx;
}
/* 加载中 */
.loading-wrap {
display:flex;
flex-direction:column;
align-items:center;
padding:120rpx 0;
gap:20rpx;
}
.loading-spinner {
width:44rpx;
height:44rpx;
border:4rpx solid var(--color-divider);
border-top-color:var(--color-primary);
border-radius:50%;
animation:spin 0.8s linear infinite;
}
@keyframes spin {
to { transform:rotate(360deg); }
}
.loading-text {
font-size:24rpx;
color:var(--color-text-tertiary);
}
/* 底部退出 */
.footer {
padding:40rpx 32rpx 20rpx;
}
.logout-btn {
width:100%;
min-height:var(--tap-min);
line-height:var(--tap-min);
background:var(--color-bg-card);
color:var(--color-text-tertiary);
font-size:28rpx;
border-radius:42rpx;
border:2rpx solid var(--color-border);
min-width:var(--tap-min);}
/* ===== 联系授权(ZC-MM-003 / B1) ===== */
.contact-form { background: #fff; border-radius: 16rpx; padding: 24rpx; margin-bottom: 20rpx; }
.form-row { display: flex; align-items: center; padding: 16rpx 0; border-bottom: 1rpx solid #f0f0f0; }
.form-label { width: 160rpx; color: #909399; font-size: 26rpx; flex-shrink: 0; }
.form-value { color: #303133; font-size: 26rpx; flex: 1; }
.form-input { flex: 1; font-size: 26rpx; color: #303133; }
.form-hint { font-size: 22rpx; color: #b0b3b8; margin-top: 12rpx; line-height: 1.5; }
.submit-btn { margin-top: 16rpx; background: #2f7df6; color: #fff; }
.auth-list { margin-top: 8rpx; }
.auth-card { background: #fff; border-radius: 16rpx; padding: 20rpx 24rpx; margin-bottom: 14rpx; }
.auth-row { display: flex; justify-content: space-between; align-items: center; }
.auth-channel { font-size: 28rpx; font-weight: 600; color: #1f2d3d; }
.auth-status { font-size: 24rpx; color: #909399; }
.auth-purpose { font-size: 26rpx; color: #5e6d82; margin-top: 8rpx; word-break: break-all; }
.auth-meta { font-size: 22rpx; color: #b0b3b8; margin-top: 8rpx; }
.revoke-btn { margin-top: 12rpx; background: #f4f4f5; color: #606266; }
.referral-open-btn{margin-top:20rpx;width:100%}
.dialog-mask{position:fixed;z-index:99;left:0;right:0;top:0;bottom:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:32rpx;box-sizing:border-box}
.dialog-card{width:100%;background:#fff;border-radius:20rpx;padding:28rpx;box-sizing:border-box}
.dialog-title{font-size:32rpx;font-weight:600;color:#20243a;margin-bottom:20rpx}
.dialog-actions{display:flex;justify-content:flex-end;gap:16rpx;margin-top:20rpx}