page { display: flex; flex-direction: column; box-sizing: border-box; background-color: #f4f6fb; min-height: 100%; height: auto; } .page-wrap { flex: 1; min-height: 100vh; background-color: #f4f6fb; } .page-container { padding: 0 24rpx 32rpx; position: relative; min-height: 100vh; } .filter-row { flex-direction: row; display: flex; align-items: center; justify-content: flex-start; padding: 16rpx 0 8rpx; } .filter-row__label { font-size: 24rpx; color: #6b7280; margin-right: 16rpx; } .filter-row__value { flex-direction: row; display: flex; align-items: center; background-color: #eef2ff; border-radius: 20rpx; padding: 6rpx 14rpx; } .filter-row__value-text { font-size: 24rpx; color: #1d4ed8; margin-right: 4rpx; } .filter-row__value-icon { font-size: 20rpx; color: #6b7280; } .page-header { height: 88rpx; padding: 0 24rpx; background-color: #ffffff; flex-direction: row; display: flex; align-items: center; justify-content: space-between; box-shadow: 0 1rpx 0 rgba(229, 231, 235, 0.9); } .page-header__back { width: 80rpx; justify-content: flex-start; display: flex; align-items: center; } .page-header__back-icon { font-size: 40rpx; color: #4b5563; } .page-header__title { font-size: 32rpx; font-weight: 600; color: #111827; } .page-header__right { width: 80rpx; } .tab-switch { height: 80rpx; border-radius: 40rpx; background-color: #e5edf8; padding: 6rpx; display: flex; position: relative; margin-bottom: 24rpx; } .tab-item { flex: 1; align-items: center; justify-content: center; display: flex; z-index: 2; } .tab-item--active .tab-text { color: #1b68ff; font-weight: 600; } .tab-text { font-size: 26rpx; color: #7a8aa5; } .tab-slider { position: absolute; top: 4rpx; left: 4rpx; width: 50%; height: 72rpx; border-radius: 36rpx; background-color: #ffffff; box-shadow: 0 10rpx 20rpx rgba(59, 120, 255, 0.15); transition: transform 0.25s ease-out; } .scroll-area { /* 高度计算:100vh - 导航栏(88rpx) - filter-row和tab-switch(约120rpx) - 底部导航栏(96rpx) - container padding(32rpx) */ /* 使用绝对定位,从tab-switch底部开始,到底部导航栏结束 */ position: absolute; top: 208rpx; /* 导航栏(88rpx) + filter-row(约40rpx) + tab-switch(80rpx) = 208rpx */ left: 24rpx; right: 24rpx; bottom: 96rpx; /* 底部导航栏高度 */ box-sizing: border-box; } .card-list { display: flex; flex-direction: column; gap: 20rpx; } .rank-card { background-color: #ffffff; border-radius: 24rpx; padding: 24rpx 24rpx 18rpx; box-shadow: 0 10rpx 30rpx rgba(7, 34, 85, 0.04); } .rank-card__header { flex-direction: row; display: flex; justify-content: space-between; align-items: center; margin-bottom: 18rpx; } .rank-card__header--with-sub { margin-bottom: 10rpx; } .rank-card__title { font-size: 28rpx; font-weight: 600; color: #111827; } .rank-card__sub-right { font-size: 22rpx; color: #9ca3af; } .rank-card__more { flex-direction: row; display: flex; align-items: center; } .rank-card__more-text { font-size: 24rpx; color: #9ca3af; margin-right: 4rpx; } .rank-card__more-arrow { font-size: 26rpx; color: #d1d5db; } .rank-card__tabs { flex-direction: row; display: flex; margin-bottom: 10rpx; } .rank-card__tab { font-size: 24rpx; color: #9ca3af; margin-right: 24rpx; } .rank-card__tab--active { color: #2563eb; font-weight: 600; } .rank-row { flex-direction: row; display: flex; align-items: center; margin-bottom: 18rpx; } .rank-row:last-child { margin-bottom: 0; } .rank-row__avatar { width: 64rpx; height: 64rpx; border-radius: 32rpx; margin-right: 16rpx; } .rank-row__main { flex: 1; } .rank-row__name { font-size: 26rpx; color: #111827; margin-bottom: 8rpx; } .rank-row__progress { height: 16rpx; border-radius: 8rpx; background-color: #e5edf8; overflow: hidden; position: relative; } .rank-row__progress-inner { height: 100%; border-radius: 8rpx; } .rank-row__progress-inner--blue { background-image: linear-gradient(90deg, #36d1ff, #246bff); } .rank-row__value { font-size: 26rpx; color: #111827; margin-left: 16rpx; } /* 门店排行行 */ .store-row { flex-direction: row; display: flex; align-items: center; padding: 10rpx 0; } .store-row__left { flex-direction: row; display: flex; align-items: center; width: 220rpx; } .store-row__name { font-size: 26rpx; color: #111827; margin-left: 16rpx; } .store-row__name--me { color: #2563eb; } .store-row__middle { flex: 1; margin: 0 16rpx; } .store-row__value { font-size: 26rpx; color: #111827; width: 140rpx; text-align: right; } .store-row__value--highlight { color: #2563eb; font-weight: 600; } /* 排名圆圈 */ .rank-badge { width: 40rpx; height: 40rpx; border-radius: 20rpx; align-items: center; justify-content: center; display: flex; background-color: #e5e7eb; } .rank-badge__text { font-size: 22rpx; color: #ffffff; } .rank-badge--gold { background-image: linear-gradient(135deg, #fbbf24, #f59e0b); box-shadow: 0 6rpx 12rpx rgba(245, 158, 11, 0.35); } .rank-badge--silver { background-image: linear-gradient(135deg, #d1d5db, #9ca3af); box-shadow: 0 6rpx 12rpx rgba(156, 163, 175, 0.35); } .rank-badge--bronze { background-image: linear-gradient(135deg, #fb923c, #f97316); box-shadow: 0 6rpx 12rpx rgba(248, 113, 22, 0.35); } .rank-badge--normal { background-image: linear-gradient(135deg, #2563eb, #1d4ed8); box-shadow: 0 6rpx 12rpx rgba(37, 99, 235, 0.35); } /* 表格:门店工牌使用率 */ .table-header { flex-direction: row; display: flex; align-items: center; padding: 10rpx 0; border-bottom-width: 1rpx; border-bottom-style: solid; border-bottom-color: #e5e7eb; margin-top: 4rpx; } .table-header__cell { font-size: 22rpx; color: #9ca3af; flex: 1; text-align: center; } .table-header__cell--rank { width: 120rpx; flex: 0 0 120rpx; } .table-header__cell--store { text-align: left; flex: 0 0 180rpx; } .table-header__cell--rate { text-align: right; } .table-row { flex-direction: row; display: flex; align-items: center; padding: 14rpx 0; } .table-row__cell { flex: 1; font-size: 24rpx; color: #111827; text-align: center; } .table-row__cell--rank { width: 120rpx; flex: 0 0 120rpx; } .table-row__cell--store { text-align: left; flex: 0 0 180rpx; } .table-row__cell--rate { text-align: right; } .table-row__cell--highlight { color: #2563eb; font-weight: 600; } .table-row__store { font-size: 24rpx; color: #111827; } .table-row__store--me { color: #2563eb; } /* SOP 卡片的虚线分割线样式 */ .rank-row__progress--dashed { position: relative; } .rank-row__divider { position: absolute; left: 50%; top: -10rpx; bottom: -10rpx; border-left-width: 2rpx; border-left-style: dashed; border-left-color: rgba(156, 163, 175, 0.6); }