ai-c/pages/service-provider-detail/service-provider-detail.wxss
2026-02-02 18:21:32 +08:00

921 lines
14 KiB
Plaintext

/* 服务人员详情页样式 */
page {
background: #F9FAFB;
height: 100%;
}
.page-container {
height: 100vh;
display: flex;
flex-direction: column;
}
/* ========== 固定导航栏 ========== */
.nav-container {
position: fixed;
top: 0;
left: 0;
right: 0;
z-index: 999;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(10px);
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
}
.status-bar {
background: transparent;
}
.nav-bar {
display: flex;
align-items: center;
justify-content: center;
padding: 0 32rpx;
background: transparent;
position: relative;
}
.nav-back {
position: absolute;
left: 32rpx;
top: 50%;
transform: translateY(-50%);
width: 80rpx;
height: 80rpx;
display: flex;
align-items: center;
justify-content: center;
z-index: 10;
}
.back-icon {
width: 48rpx;
height: 48rpx;
}
.nav-title {
font-size: 36rpx;
font-weight: 700;
color: #1F2937;
line-height: 1;
}
.nav-share {
position: absolute;
right: 32rpx;
top: 50%;
transform: translateY(-50%);
width: 80rpx;
height: 80rpx;
display: flex;
align-items: center;
justify-content: center;
z-index: 10;
}
.share-icon {
width: 48rpx;
height: 48rpx;
}
/* ========== 内容滚动区域 ========== */
.content-scroll {
height: 100vh;
box-sizing: border-box;
padding-bottom: 240rpx;
}
/* ========== 服务人员信息卡片 ========== */
.provider-card {
background: #fff;
margin: 32rpx;
border-radius: 32rpx;
overflow: hidden;
box-shadow: 0 8rpx 24rpx -8rpx rgba(0, 0, 0, 0.08), 0 20rpx 30rpx -6rpx rgba(0, 0, 0, 0.06);
position: relative;
}
.card-header-bg {
position: absolute;
top: 0;
left: 0;
right: 0;
height: 280rpx;
background: linear-gradient(135deg, #FFF7ED 0%, #FEF3C7 50%, #FEE2E2 100%);
opacity: 0.6;
}
.provider-info {
position: relative;
padding: 40rpx 32rpx 32rpx;
display: flex;
gap: 32rpx;
}
.avatar-section {
flex-shrink: 0;
}
.avatar-wrap {
width: 168rpx;
height: 168rpx;
position: relative;
}
.avatar-img {
width: 168rpx;
height: 168rpx;
border-radius: 32rpx;
border: 4rpx solid #fff;
box-shadow: 0 8rpx 16rpx -4rpx rgba(0, 0, 0, 0.1);
}
.verified-badge {
position: absolute;
bottom: -16rpx;
left: 50%;
transform: translateX(-50%);
display: flex;
align-items: center;
gap: 8rpx;
padding: 6rpx 20rpx;
background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%);
border: 2rpx solid #FCD34D;
border-radius: 100rpx;
box-shadow: 0 4rpx 8rpx -2rpx rgba(0, 0, 0, 0.1);
}
.verified-icon {
width: 24rpx;
height: 24rpx;
}
.verified-text {
font-size: 20rpx;
font-weight: 700;
color: #B45309;
}
.info-section {
flex: 1;
display: flex;
flex-direction: column;
gap: 16rpx;
padding-top: 8rpx;
}
.name-row {
display: flex;
align-items: center;
gap: 16rpx;
}
.provider-name {
font-size: 44rpx;
font-weight: 900;
color: #101828;
line-height: 1.2;
}
.provider-tag {
padding: 6rpx 16rpx;
background: linear-gradient(135deg, #914584 0%, #B066A3 100%);
border-radius: 100rpx;
font-size: 22rpx;
font-weight: 700;
color: #fff;
}
.experience-row {
display: flex;
align-items: center;
gap: 24rpx;
}
.experience-item {
display: flex;
align-items: center;
gap: 8rpx;
}
.exp-icon {
width: 28rpx;
height: 28rpx;
}
.exp-text {
font-size: 28rpx;
font-weight: 600;
color: #4A5565;
}
.rating-item {
display: flex;
align-items: center;
gap: 8rpx;
}
.star-icon {
width: 28rpx;
height: 28rpx;
}
.rating-text {
font-size: 28rpx;
font-weight: 700;
color: #F59E0B;
}
.provider-desc {
font-size: 28rpx;
color: #6A7282;
line-height: 1.5;
}
/* 统计数据 */
.stats-section {
display: flex;
justify-content: space-around;
padding: 32rpx;
border-top: 2rpx solid #F3F4F6;
background: linear-gradient(180deg, rgba(255, 247, 237, 0.3) 0%, rgba(254, 243, 199, 0.3) 100%);
}
.stat-item {
display: flex;
flex-direction: column;
align-items: center;
gap: 8rpx;
}
.stat-value {
font-size: 48rpx;
font-weight: 900;
color: #101828;
line-height: 1;
}
.stat-label {
font-size: 24rpx;
color: #6A7282;
}
.stat-divider {
width: 2rpx;
height: 80rpx;
background: #E5E7EB;
}
/* ========== 通用卡片样式 ========== */
.skills-card,
.intro-card,
.cases-card,
.reviews-card {
background: #fff;
margin: 0 32rpx 32rpx;
padding: 32rpx;
border-radius: 24rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
}
.card-title {
display: flex;
align-items: center;
gap: 16rpx;
margin-bottom: 24rpx;
}
.title-dot {
width: 8rpx;
height: 8rpx;
background: #914584;
border-radius: 50%;
}
.title-text {
font-size: 36rpx;
font-weight: 900;
color: #101828;
}
.card-title-row {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 24rpx;
}
.review-count {
font-size: 28rpx;
color: #99A1AF;
margin-left: 8rpx;
}
.view-all {
display: flex;
align-items: center;
gap: 8rpx;
}
.view-all-text {
font-size: 28rpx;
color: #914584;
}
.arrow-icon {
width: 32rpx;
height: 32rpx;
}
/* ========== 服务技能 ========== */
.skills-list {
display: flex;
flex-wrap: wrap;
gap: 20rpx;
}
.skill-tag {
display: flex;
align-items: center;
gap: 12rpx;
padding: 16rpx 24rpx;
background: linear-gradient(135deg, #F0FDF4 0%, #DCFCE7 100%);
border: 2rpx solid #86EFAC;
border-radius: 100rpx;
}
.check-icon {
width: 28rpx;
height: 28rpx;
}
.skill-text {
font-size: 28rpx;
font-weight: 600;
color: #166534;
}
/* ========== 服务介绍 ========== */
.intro-content {
font-size: 30rpx;
color: #4A5565;
line-height: 1.8;
}
/* ========== 服务案例 ========== */
.cases-list {
display: flex;
gap: 24rpx;
overflow-x: auto;
}
.case-item {
flex-shrink: 0;
width: 280rpx;
}
.case-image {
width: 280rpx;
height: 280rpx;
border-radius: 16rpx;
margin-bottom: 16rpx;
}
.case-title {
font-size: 28rpx;
color: #364153;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
/* ========== 用户评价 ========== */
.review-list {
display: flex;
flex-direction: column;
gap: 32rpx;
}
.review-item {
padding-bottom: 32rpx;
border-bottom: 2rpx solid #F3F4F6;
}
.review-item:last-child {
border-bottom: none;
padding-bottom: 0;
}
.review-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 16rpx;
}
.user-info {
display: flex;
gap: 16rpx;
}
.user-avatar {
width: 72rpx;
height: 72rpx;
border-radius: 50%;
}
.user-detail {
display: flex;
flex-direction: column;
gap: 8rpx;
}
.user-name {
font-size: 28rpx;
font-weight: 600;
color: #364153;
}
.review-stars {
display: flex;
gap: 4rpx;
}
.star-small {
width: 24rpx;
height: 24rpx;
}
.review-date {
font-size: 24rpx;
color: #99A1AF;
}
.review-content {
font-size: 28rpx;
color: #4A5565;
line-height: 1.6;
margin-bottom: 16rpx;
}
.review-tags {
display: flex;
flex-wrap: wrap;
gap: 16rpx;
}
.review-tag {
padding: 8rpx 20rpx;
background: #FFF7ED;
border-radius: 100rpx;
}
.tag-text {
font-size: 24rpx;
color: #EA580C;
}
/* ========== 底部占位 ========== */
.bottom-placeholder {
height: 80rpx;
}
/* ========== 底部操作栏 ========== */
.bottom-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
background: #fff;
padding: 24rpx 32rpx;
padding-bottom: calc(24rpx + env(safe-area-inset-bottom));
border-top: 2rpx solid #F3F4F6;
display: flex;
justify-content: space-between;
align-items: center;
box-shadow: 0 -4rpx 16rpx rgba(0, 0, 0, 0.04);
z-index: 100;
}
.price-section {
display: flex;
flex-direction: column;
gap: 4rpx;
}
.price-row {
display: flex;
align-items: baseline;
}
.price-symbol {
font-size: 28rpx;
font-weight: 700;
color: #FF6B00;
}
.price-value {
font-size: 56rpx;
font-weight: 900;
color: #FF6B00;
line-height: 1;
}
.price-unit {
font-size: 24rpx;
color: #6A7282;
margin-left: 8rpx;
}
.price-tip {
font-size: 24rpx;
color: #99A1AF;
}
.action-buttons {
display: flex;
gap: 16rpx;
}
.consult-btn {
width: 120rpx;
height: 88rpx;
background: #F3F4F6;
border-radius: 100rpx;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 4rpx;
}
.btn-icon {
width: 36rpx;
height: 36rpx;
}
.consult-btn .btn-text {
font-size: 24rpx;
color: #4A5565;
}
.book-btn {
width: 240rpx;
height: 88rpx;
background: linear-gradient(135deg, #FF6B6B 0%, #FF8787 100%);
border-radius: 100rpx;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 8rpx 20rpx -6rpx rgba(255, 107, 107, 0.4);
}
.book-btn .btn-text {
font-size: 32rpx;
font-weight: 700;
color: #fff;
}
/* ========== 预约弹窗 ========== */
.booking-modal-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
z-index: 1000;
}
.booking-modal {
position: fixed;
left: 0;
right: 0;
bottom: 0;
background: #fff;
border-radius: 32rpx 32rpx 0 0;
z-index: 1001;
max-height: 85vh;
display: flex;
flex-direction: column;
transform: translateY(100%);
transition: transform 0.3s ease;
}
.booking-modal.show {
transform: translateY(0);
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 32rpx;
border-bottom: 2rpx solid #F3F4F6;
}
.modal-title {
font-size: 40rpx;
font-weight: 900;
color: #101828;
}
.modal-close {
width: 64rpx;
height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
background: #F3F4F6;
border-radius: 50%;
}
.close-icon {
font-size: 48rpx;
color: #6A7282;
line-height: 1;
}
.modal-content {
flex: 1;
padding: 32rpx;
overflow-y: auto;
}
/* 预约表单 */
.booking-provider {
display: flex;
align-items: center;
gap: 24rpx;
padding: 24rpx;
background: #F9FAFB;
border-radius: 16rpx;
margin-bottom: 32rpx;
}
.provider-avatar-small {
width: 96rpx;
height: 96rpx;
border-radius: 16rpx;
}
.provider-info-small {
display: flex;
flex-direction: column;
gap: 8rpx;
}
.provider-name-small {
font-size: 32rpx;
font-weight: 700;
color: #101828;
}
.provider-tag-small {
font-size: 24rpx;
color: #6A7282;
}
.form-section {
margin-bottom: 32rpx;
}
.form-label {
display: block;
font-size: 28rpx;
font-weight: 600;
color: #364153;
margin-bottom: 16rpx;
}
.service-type-list {
display: flex;
flex-direction: column;
gap: 16rpx;
}
.type-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 24rpx;
background: #F9FAFB;
border: 2rpx solid #E5E7EB;
border-radius: 16rpx;
transition: all 0.2s;
}
.type-item.active {
background: #FFF7ED;
border-color: #FF6B00;
}
.type-name {
font-size: 30rpx;
font-weight: 600;
color: #364153;
}
.type-price {
font-size: 28rpx;
font-weight: 700;
color: #FF6B00;
}
.time-picker,
.address-picker {
display: flex;
justify-content: space-between;
align-items: center;
padding: 24rpx;
background: #F9FAFB;
border: 2rpx solid #E5E7EB;
border-radius: 16rpx;
}
.time-text,
.address-text {
font-size: 30rpx;
color: #364153;
}
.calendar-icon,
.location-icon {
width: 40rpx;
height: 40rpx;
}
.remark-input {
width: 100%;
min-height: 160rpx;
padding: 24rpx;
background: #F9FAFB;
border: 2rpx solid #E5E7EB;
border-radius: 16rpx;
font-size: 28rpx;
color: #364153;
box-sizing: border-box;
}
.char-count {
display: block;
text-align: right;
font-size: 24rpx;
color: #99A1AF;
margin-top: 8rpx;
}
.price-summary {
padding: 24rpx;
background: #F9FAFB;
border-radius: 16rpx;
margin-top: 32rpx;
}
.summary-row {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16rpx;
}
.summary-row:last-child {
margin-bottom: 0;
}
.summary-label {
font-size: 28rpx;
color: #6A7282;
}
.summary-value {
font-size: 32rpx;
font-weight: 700;
color: #364153;
}
.summary-row.total .summary-label {
font-size: 32rpx;
font-weight: 700;
color: #101828;
}
.summary-row.total .summary-value {
font-size: 40rpx;
color: #FF6B00;
}
.summary-divider {
height: 2rpx;
background: #E5E7EB;
margin: 16rpx 0;
}
.modal-footer {
padding: 24rpx 32rpx;
padding-bottom: calc(24rpx + env(safe-area-inset-bottom));
border-top: 2rpx solid #F3F4F6;
}
.confirm-btn {
width: 100%;
height: 96rpx;
background: linear-gradient(135deg, #FF6B6B 0%, #FF8787 100%);
border-radius: 100rpx;
font-size: 32rpx;
font-weight: 700;
color: #fff;
border: none;
box-shadow: 0 8rpx 20rpx -6rpx rgba(255, 107, 107, 0.4);
}
.confirm-btn::after {
border: none;
}
/* ========== 全部评价弹窗 ========== */
.all-reviews-modal-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
z-index: 1000;
}
.all-reviews-modal {
position: fixed;
left: 0;
right: 0;
bottom: 0;
background: #fff;
border-radius: 32rpx 32rpx 0 0;
z-index: 1001;
max-height: 85vh;
display: flex;
flex-direction: column;
transform: translateY(100%);
transition: transform 0.3s ease;
}
.all-reviews-modal.show {
transform: translateY(0);
}
.review-summary {
display: flex;
justify-content: space-between;
align-items: center;
padding: 32rpx;
border-bottom: 2rpx solid #F3F4F6;
}
.summary-left {
display: flex;
flex-direction: column;
gap: 8rpx;
}
.summary-score {
font-size: 72rpx;
font-weight: 900;
color: #101828;
line-height: 1;
}
.summary-stars {
display: flex;
gap: 8rpx;
}
.summary-count {
font-size: 24rpx;
color: #99A1AF;
}
.summary-right {
display: flex;
flex-direction: column;
align-items: flex-end;
gap: 4rpx;
}
.good-rate {
font-size: 56rpx;
font-weight: 900;
color: #FF6B00;
line-height: 1;
}
.good-rate-label {
font-size: 24rpx;
color: #99A1AF;
}
.all-reviews-list {
flex: 1;
padding: 32rpx;
overflow-y: auto;
}