Files
Neo-ZQYY/tmp/DEMO-miniprogram/miniprogram/pages/coach-detail/coach-detail.wxss

1107 lines
19 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.
page {
background-color: #f3f3f3;
line-height: 1.5;
}
view {
line-height: inherit;
}
.page-loading,
.page-empty,
.page-error {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-height: 60vh;
gap: 24rpx;
}
.empty-text,
.error-text {
font-size: 28rpx;
color: #a6a6a6;
}
.error-text {
color: #e34d59;
}
.retry-btn {
margin-top: 16rpx;
padding: 16rpx 48rpx;
background: #0052d9;
color: #ffffff;
font-size: 28rpx;
border-radius: 16rpx;
}
.retry-btn--hover {
opacity: 0.8;
}
.banner-section {
position: relative;
width: 100%;
overflow: hidden;
height: 100%;
}
.banner-bg-img {
position: absolute;
top: -50rpx;
left: 0;
width: 100%;
height: auto;
z-index: 0;
}
.banner-overlay {
position: relative;
z-index: 2;
height: 100%;
display: flex;
flex-direction: column;
justify-content: center;
padding: 36rpx 40rpx;
}
.coach-header {
display: flex;
align-items: center;
gap: 32rpx;
}
.avatar-box {
width: 98rpx;
height: 98rpx;
border-radius: 32rpx;
background: rgba(255, 255, 255, 0.2);
overflow: hidden;
flex-shrink: 0;
box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.15);
}
.avatar-img {
width: 100%;
height: 100%;
}
.info-middle {
flex: 1;
min-width: 0;
}
.name-row {
display: flex;
align-items: center;
gap: 14rpx;
margin-bottom: 8rpx;
}
.coach-name {
font-size: 32rpx;
font-weight: 600;
color: #ffffff;
}
.skill-row {
display: flex;
align-items: center;
gap: 14rpx;
}
.skill-tag {
padding: 4rpx 16rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 8rpx;
font-size: 22rpx;
color: rgba(255, 255, 255, 0.9);
}
.info-right-stats {
flex-shrink: 0;
text-align: right;
display: flex;
flex-direction: column;
gap: 12rpx;
font-weight: 500;
text-shadow:
0 0 12rpx rgba(84, 5, 5, 0.856),
0 0 2rpx rgba(84, 5, 5, 0.9);
}
.right-stat {
display: flex;
align-items: baseline;
gap: 8rpx;
justify-content: flex-end;
}
.right-stat-label {
font-size: 22rpx;
color: rgba(255, 255, 255);
}
.right-stat-value {
font-size: 28rpx;
font-weight: 700;
color: #ffffff;
}
.main-content {
padding: 28rpx;
padding-bottom: 200rpx;
display: flex;
flex-direction: column;
gap: 28rpx;
}
.card {
background: #ffffff;
border-radius: 32rpx;
padding: 36rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05);
}
.card-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 28rpx;
}
.section-title {
font-size: 28rpx;
font-weight: 600;
color: #242424;
position: relative;
padding-left: 20rpx;
margin-bottom: 28rpx;
}
.card-header .section-title {
margin-bottom: 0;
}
.section-title::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 6rpx;
height: 28rpx;
border-radius: 4rpx;
}
.title-blue::before {
background: linear-gradient(180deg, #0052d9, #5b9cf8);
}
.title-green::before {
background: linear-gradient(180deg, #00a870, #4cd964);
}
.title-orange::before {
background: linear-gradient(180deg, #ed7b2f, #ffc107);
}
.title-pink::before {
background: linear-gradient(180deg, #ec4899, #f472b6);
}
.title-purple::before {
background: linear-gradient(180deg, #7c3aed, #a78bfa);
}
.title-teal::before {
background: linear-gradient(180deg, #0d9488, #5eead4);
}
.header-hint {
font-size: 22rpx;
color: #a6a6a6;
}
.perf-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 22rpx;
}
.perf-card {
border-radius: 24rpx;
padding: 22rpx;
border: 2rpx solid transparent;
}
.perf-blue {
background: linear-gradient(135deg, #eff6ff, #eef2ff);
border-color: rgba(191, 219, 254, 0.5);
}
.perf-green {
background: linear-gradient(135deg, #ecfdf5, #d1fae5);
border-color: rgba(167, 243, 208, 0.5);
}
.perf-orange {
background: linear-gradient(135deg, #fff7ed, #fef3c7);
border-color: rgba(253, 186, 116, 0.5);
}
.perf-purple {
background: linear-gradient(135deg, #faf5ff, #ede9fe);
border-color: rgba(196, 181, 253, 0.5);
}
.perf-label {
font-size: 24rpx;
color: #000000;
display: block;
margin-bottom: 24rpx;
font-weight: 500;
}
.perf-value-row {
display: flex;
align-items: baseline;
gap: 4rpx;
}
.perf-value {
font-size: 42rpx;
font-weight: 700;
font-variant-numeric: tabular-nums;
}
.perf-unit {
font-size: 22rpx;
color: #000000;
}
.perf-sub {
font-size: 22rpx;
color: #979797;
display: block;
margin-top: -8rpx;
}
.perf-progress-box {
margin-top: 22rpx;
background: #fafafa;
border-radius: 24rpx;
padding: 22rpx 22rpx 50rpx 22rpx;
}
.perf-progress-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 18rpx;
}
.perf-progress-label {
font-size: 24rpx;
font-weight: 500;
color: #5e5e5e;
}
.perf-progress-hint {
font-size: 26rpx;
font-weight: 500;
color: #0052d9;
font-weight: 500;
}
.perf-progress-bar {
height: 12rpx;
background: #e7e7e7;
border-radius: 6rpx;
overflow: hidden;
}
.perf-progress-fill {
height: 100%;
background: linear-gradient(90deg, #0052d9, #5b9cf8);
border-radius: 6rpx;
transition: width 0.3s ease;
}
.perf-progress-footer {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 10rpx;
}
.perf-progress-current,
.perf-progress-target {
font-size: 22rpx;
color: #c5c5c5;
}
.income-tabs {
display: flex;
align-items: center;
gap: 8rpx;
}
.income-tab {
display: flex;
align-items: center;
gap: 4rpx;
font-size: 24rpx;
padding: 8rpx 20rpx;
border-radius: 100rpx;
color: #8b8b8b;
background: #f3f3f3;
}
.income-tab.active {
color: #0052d9;
background: #ecf2fe;
font-weight: 500;
}
.income-tab--hover {
opacity: 0.7;
}
.income-tab-est {
font-size: 20rpx;
color: #ed7b2f;
}
.income-list {
display: flex;
flex-direction: column;
gap: 22rpx;
}
.income-item {
display: flex;
align-items: center;
gap: 16rpx;
}
.income-dot {
width: 14rpx;
height: 14rpx;
border-radius: 50%;
flex-shrink: 0;
}
.dot-primary {
background: #0052d9;
}
.dot-success {
background: #00a870;
}
.dot-warning {
background: #ed7b2f;
}
.dot-purple {
background: #7c3aed;
}
.income-label {
flex: 1;
font-size: 28rpx;
color: #5e5e5e;
}
.income-amount {
font-size: 28rpx;
font-weight: 700;
color: #242424;
font-variant-numeric: tabular-nums;
}
.income-total {
display: flex;
align-items: center;
justify-content: space-between;
padding-top: 20rpx;
border-top: 2rpx solid #eeeeee;
}
.income-total-label {
font-size: 28rpx;
font-weight: 600;
color: #5e5e5e;
}
.income-total-value {
font-size: 28rpx;
font-weight: 700;
color: #00a870;
font-variant-numeric: tabular-nums;
}
.task-summary {
display: flex;
align-items: center;
gap: 16rpx;
font-size: 24rpx;
}
.task-summary-label {
font-weight: 700;
color: #4b4b4b;
}
.task-summary-recall {
color: #0052d9;
font-weight: 700;
}
.task-summary-callback {
color: #00a870;
font-weight: 700;
}
.task-summary-num {
font-size: 28rpx;
}
.task-list {
display: flex;
flex-direction: column;
gap: 14rpx;
}
.task-list-extra {
margin-top: 14rpx;
}
.task-item {
display: flex;
align-items: center;
gap: 18rpx;
padding: 18rpx;
border-radius: 16rpx;
border: 2rpx solid transparent;
}
.task-item-high-priority {
background: rgba(254, 226, 226, 0.6);
border-color: rgba(254, 202, 202, 0.6);
}
.task-item-priority {
background: rgba(255, 237, 213, 0.4);
border-color: rgba(253, 186, 116, 0.4);
}
.task-item-relationship {
background: rgba(252, 231, 243, 0.4);
border-color: rgba(249, 168, 212, 0.4);
}
.task-item-callback {
background: rgba(204, 251, 241, 0.4);
border-color: rgba(153, 246, 228, 0.4);
}
.task-item-abandoned {
background: #fafafa;
border-color: #eeeeee;
opacity: 0.55;
}
.task-tag-text {
font-size: 22rpx;
font-weight: 500;
flex-shrink: 0;
}
.task-tag-text.high-priority {
color: #dc2626;
}
.task-tag-text.priority {
color: #ea580c;
}
.task-tag-text.relationship {
color: #db2777;
}
.task-tag-text.callback {
color: #0d9488;
}
.task-customer-name {
flex: 1;
min-width: 0;
font-size: 26rpx;
color: #242424;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.task-note-btn {
display: flex;
align-items: center;
gap: 4rpx;
flex-shrink: 0;
}
.task-note-btn--hover {
opacity: 0.6;
}
.task-note-count {
font-size: 24rpx;
font-weight: 500;
color: #777777;
}
.task-pin {
font-size: 28rpx;
flex-shrink: 0;
}
.task-abandoned-name {
flex: 1;
min-width: 0;
font-size: 24rpx;
color: #c5c5c5;
text-decoration: line-through;
}
.task-abandoned-reason {
font-size: 20rpx;
color: #c5c5c5;
flex-shrink: 0;
}
.task-toggle {
margin-top: 22rpx;
text-align: center;
font-size: 24rpx;
color: #0052d9;
font-weight: 500;
padding: 12rpx 0;
}
.task-toggle--hover {
opacity: 0.7;
}
.top5-list {
display: flex;
flex-direction: column;
gap: 18rpx;
}
.top5-card {
display: flex;
align-items: center;
gap: 22rpx;
padding: 22rpx;
border-radius: 24rpx;
border: 2rpx solid transparent;
}
.top5-card--hover {
opacity: 0.85;
}
.top5-card-pink {
background: linear-gradient(135deg, rgba(252, 231, 243, 0.8), rgba(254, 205, 211, 0.4));
border-color: rgba(249, 168, 212, 0.4);
}
.top5-card-amber {
background: linear-gradient(135deg, rgba(254, 243, 199, 0.8), rgba(253, 230, 138, 0.4));
border-color: rgba(252, 211, 77, 0.4);
}
.top5-card-gray {
background: #fafafa;
border-color: #f3f3f3;
}
.top5-avatar {
width: 64rpx;
height: 64rpx;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.top5-avatar.gradient-pink {
background: linear-gradient(135deg, #f472b6, #e11d48);
}
.top5-avatar.gradient-amber {
background: linear-gradient(135deg, #fbbf24, #f97316);
}
.top5-avatar.gradient-green {
background: linear-gradient(135deg, #4ade80, #059669);
}
.top5-avatar.gradient-blue {
background: linear-gradient(135deg, #60a5fa, #4f46e5);
}
.top5-avatar.gradient-purple {
background: linear-gradient(135deg, #a78bfa, #7c3aed);
}
.top5-avatar-text {
font-size: 22rpx;
font-weight: 500;
color: #ffffff;
}
.top5-info {
flex: 1;
min-width: 0;
}
.top5-name-row {
display: flex;
align-items: center;
gap: 8rpx;
margin-bottom: 8rpx;
}
.top5-name {
font-size: 24rpx;
font-weight: 600;
color: #242424;
}
.top5-heart {
font-size: 24rpx;
}
.top5-score {
font-size: 24rpx;
font-weight: 700;
font-variant-numeric: tabular-nums;
}
.top5-score-success {
color: #00a870;
}
.top5-score-warning {
color: #ed7b2f;
}
.top5-score-gray {
color: #8b8b8b;
}
.top5-stats {
display: flex;
align-items: center;
gap: 28rpx;
}
.top5-stat {
font-size: 22rpx;
color: #a6a6a6;
}
.top5-stat-val {
font-weight: 600;
color: #393939;
}
/* ── 近期服务明细 ── */
.svc-list { display: flex; flex-direction: column; }
.svc-card {
display: flex;
flex-direction: row;
align-items: flex-start;
padding: 20rpx 0;
border-bottom: 2rpx solid #f3f3f3;
}
.svc-card:last-child { border-bottom: none; }
.svc-card--hover { background: #f7f7f7; border-radius: 12rpx; }
.svc-content {
flex: 1;
margin-left: 20rpx;
display: flex;
flex-direction: column;
gap: 2rpx;
}
.svc-row1 { display: flex; align-items: center; gap: 12rpx; }
.svc-customer { font-size: 28rpx; font-weight: 600; color: #242424; }
.svc-type {
font-size: 22rpx;
padding: 2rpx 12rpx;
border-radius: 8rpx;
background: rgba(0,0,0,0.06);
color: #555;
}
.svc-type-basic { background: rgba(0,82,217,0.10); color: #0052d9; }
.svc-type-incentive { background: rgba(0,168,112,0.10); color: #00a870; }
.svc-date { margin-left: auto; font-size: 22rpx; color: #a6a6a6; }
.svc-row2 { display: flex; align-items: center; }
.svc-row2-left { flex: 1; display: flex; align-items: center; gap: 12rpx; }
.svc-table-tag {
font-size: 22rpx;
padding: 2rpx 12rpx;
background: #ecf2fe;
color: #0052d9;
border-radius: 8rpx;
font-weight: 500;
}
.svc-duration { font-size: 22rpx; color: #8b8b8b; }
.svc-perf { font-size: 22rpx; color: #ed7b2f; }
.svc-income { font-size: 28rpx; font-weight: 700; color: #242424; font-variant-numeric: tabular-nums; }
.svc-more { margin-top: 24rpx; text-align: center; font-size: 24rpx; color: #0052d9; font-weight: 500; padding: 12rpx 0; }
.svc-more--hover { opacity: 0.7; }
.more-info-row {
display: flex;
align-items: center;
justify-content: space-between;
padding-bottom: 20rpx;
border-bottom: 2rpx solid #f3f3f3;
margin-bottom: 24rpx;
}
.more-info-label {
font-size: 28rpx;
color: #8b8b8b;
}
.more-info-value {
font-size: 28rpx;
color: #242424;
}
.history-table {
overflow-x: auto;
}
.history-thead {
display: flex;
border-bottom: 2rpx solid #eeeeee;
padding-bottom: 16rpx;
}
.history-th {
text-align: center;
font-size: 22rpx;
color: #8b8b8b;
font-weight: 500;
flex-shrink: 0;
}
.history-th-left {
text-align: left;
width: 130rpx;
}
/* 服务客户 */
.history-th:nth-child(2) { width: 90rpx; }
/* 完成 回访/召回 */
.history-th:nth-child(3) { width: 160rpx; }
/* 业绩时长 */
.history-th:nth-child(4) { width: 120rpx; }
/* 工资 */
.history-th:nth-child(5) { width: 120rpx; }
.history-row {
display: flex;
padding: 20rpx 0;
border-bottom: 2rpx solid #fafafa;
}
.history-row-current {
background: rgba(0, 82, 217, 0.03);
border-radius: 8rpx;
padding: 20rpx 0rpx;
}
.history-td {
text-align: center;
font-size: 24rpx;
color: #242424;
font-variant-numeric: tabular-nums;
flex-shrink: 0;
}
/* 服务客户 */
.history-td:nth-child(2) { width: 90rpx; }
/* 完成 回访/召回 */
.history-td:nth-child(3) { width: 160rpx; }
/* 业绩时长 */
.history-td:nth-child(4) { width: 120rpx; }
/* 工资 */
.history-td:nth-child(5) { width: 120rpx; }
.history-td-left {
text-align: left;
width: 130rpx;
display: flex;
align-items: center;
gap: 8rpx;
font-weight: 500;
}
.history-est {
font-size: 20rpx;
color: #ed7b2f;
}
.note-list {
display: flex;
flex-direction: column;
gap: 20rpx;
}
.note-item {
background: #fafafa;
border-radius: 24rpx;
border: 2rpx solid #e7e7e7;
padding: 24rpx;
}
.note-top {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 12rpx;
}
.note-author {
font-size: 24rpx;
font-weight: 500;
color: #242424;
}
.note-time {
font-size: 22rpx;
color: #a6a6a6;
}
.note-content {
font-size: 24rpx;
color: #5e5e5e;
line-height: 1.6;
}
.note-empty {
display: flex;
flex-direction: column;
align-items: center;
padding: 48rpx 0;
gap: 16rpx;
}
.empty-hint {
font-size: 24rpx;
color: #c5c5c5;
}
.bottom-bar {
position: fixed;
bottom: 0;
left: 0;
right: 0;
height: 128rpx;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(20px);
border-top: 2rpx solid #eeeeee;
display: flex;
align-items: center;
gap: 24rpx;
padding: 0 32rpx;
z-index: 100;
}
.btn-chat {
flex: 1;
height: 88rpx;
background: linear-gradient(135deg, #0052d9, #3b82f6);
color: #ffffff;
font-weight: 500;
border-radius: 24rpx;
display: flex;
align-items: center;
justify-content: center;
gap: 12rpx;
font-size: 28rpx;
box-shadow: 0 8rpx 24rpx rgba(0, 82, 217, 0.3);
}
.btn-chat--hover {
opacity: 0.85;
}
.btn-note {
flex: 1;
height: 88rpx;
background: #f3f3f3;
color: #242424;
font-weight: 500;
border-radius: 24rpx;
display: flex;
align-items: center;
justify-content: center;
gap: 12rpx;
font-size: 28rpx;
}
.btn-note--hover {
background: #e7e7e7;
}
.notes-popup-overlay {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(0, 0, 0, 0.5);
z-index: 200;
display: flex;
align-items: flex-end;
}
.notes-popup {
width: 100%;
background: #ffffff;
border-radius: 48rpx 48rpx 0 0;
padding: 40rpx;
padding-bottom: 64rpx;
max-height: 70vh;
overflow-y: auto;
}
.notes-popup-header {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 32rpx;
}
.notes-popup-title {
font-size: 32rpx;
font-weight: 600;
color: #242424;
}
.notes-popup-close {
width: 64rpx;
height: 64rpx;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
background: #f3f3f3;
}
.notes-popup-close--hover {
background: #e7e7e7;
}
.notes-popup-list {
display: flex;
flex-direction: column;
gap: 20rpx;
}
.notes-popup-item {
padding: 28rpx;
background: #fafafa;
border-radius: 24rpx;
border: 2rpx solid #f3f3f3;
}
.notes-popup-item-top {
display: flex;
align-items: center;
gap: 8rpx;
margin-bottom: 12rpx;
}
.notes-popup-item-date {
font-size: 22rpx;
color: #a6a6a6;
}
.notes-popup-item-text {
font-size: 24rpx;
color: #5e5e5e;
line-height: 1.6;
}
.text-primary {
color: #0052d9 !important;
}
.text-success {
color: #00a870 !important;
}
.text-warning {
color: #ed7b2f !important;
}
.text-purple {
color: #7c3aed !important;
}
.safe-area-bottom {
padding-bottom: env(safe-area-inset-bottom);
}.card-title-row { margin-bottom: 24rpx; }
.card-title-row .section-title { margin-bottom: 0; }
.top-customer-list { display: flex; flex-direction: column; gap: 16rpx; }
.top-customer-item { display: flex; align-items: center; gap: 24rpx; padding: 16rpx 0; border-bottom: 2rpx solid #f3f3f3; }
.top-customer-item:last-child { border-bottom: none; }
.top-customer-item--hover { background: #f9f9f9; border-radius: 16rpx; }
.top-customer-avatar { width: 76rpx; height: 76rpx; border-radius: 20rpx; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.top-customer-avatar-text { font-size: 30rpx; font-weight: 500; color: #ffffff; }
.avatar-gradient-pink { background: linear-gradient(135deg, #f472b6, #e11d48); }
.avatar-gradient-amber { background: linear-gradient(135deg, #fbbf24, #f97316); }
.avatar-gradient-green { background: linear-gradient(135deg, #4ade80, #059669); }
.avatar-gradient-blue { background: linear-gradient(135deg, #60a5fa, #4f46e5); }
/* 头像渐变色由 app.wxss 全局 .avatar-{key} 统一提供VI §8 */
.avatar-gradient-teal { background: linear-gradient(135deg, #2dd4bf, #10b981); }
.top-customer-info { flex: 1; min-width: 0; }
.top-customer-name-row { display: flex; align-items: center; gap: 8rpx; margin-bottom: 8rpx; }
.top-customer-name { font-size: 28rpx; font-weight: 600; color: #242424; }
.top-customer-heart { font-size: 24rpx; }
.top-customer-score { font-size: 24rpx; font-weight: 700; font-variant-numeric: tabular-nums; }
.top-customer-score-success { color: #00a870; }
.top-customer-score-warning { color: #ed7b2f; }
.top-customer-score-gray { color: #8b8b8b; }
.top-customer-stats { display: flex; align-items: center; gap: 24rpx; }
.top-customer-stat { font-size: 22rpx; color: #a6a6a6; }
.top-customer-stat-val { font-weight: 600; color: #393939; }
.toggle-btn { display: flex; align-items: center; justify-content: center; padding: 16rpx 0; font-size: 26rpx; color: var(--color-primary); font-weight: 500; margin-top: 8rpx; }
.toggle-btn--hover { opacity: 0.6; }
.task-item--hover { opacity: 0.75; }
/* perf-progress-box */
.perf-progress-box {
padding: 24rpx 24rpx 50rpx 24rpx;
border: 1rpx solid rgba(0, 0, 0, 0.2);
border-radius: 16rpx;
background: rgba(0, 139, 199, 0.02);
}
/* 近期服务明细 */