Files
smartDriveEEUniApp/unpackage/dist/dev/mp-weixin/pages/furniture_customer/furniture_customer.wxss
2026-01-31 21:10:40 +08:00

1030 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: #F5F5F5;
}
.page {
min-height: 100vh;
background-color: #F5F5F5;
}
.content {
padding-top: 0; /* 移除padding-top因为tab页和列表组件都使用绝对定位 */
margin-top: 0;
position: relative;
min-height: 100vh; /* 确保content有足够高度 */
}
/* 隐藏导航栏占位区域,避免产生空白 */
.uni-navbar__placeholder {
display: none !important;
}
/* 标签页 - 使用绝对定位紧贴导航栏 */
.tabs {
display: flex !important; /* 强制显示 */
visibility: visible !important; /* 强制可见 */
opacity: 1 !important; /* 强制不透明 */
background-color: #FFFFFF;
border-bottom: 1px solid #E0E0E0;
padding: 0 16rpx;
margin-top: 0;
position: fixed; /* 改为fixed定位确保始终可见 */
/* 导航栏高度statusBar + navbar动态计算 */
/* 使用内联样式动态设置top值 */
left: 0;
right: 0;
z-index: 999; /* 提高z-index确保在最上层 */
height: 72rpx; /* 明确设置标签页高度 */
box-sizing: border-box;
align-items: center;
/* 确保tab栏始终可见 */
will-change: top; /* 优化渲染性能 */
}
.tab-item {
padding: 24rpx 32rpx;
position: relative;
}
.tab-item text {
font-size: 30rpx;
color: #666;
}
.tab-item.active text {
color: #333;
font-weight: 500;
}
.tab-item.active::after {
content: '';
position: absolute;
bottom: 0;
left: 32rpx;
right: 32rpx;
height: 4rpx;
background-color: #007AFF;
border-radius: 2rpx;
}
/* 服务记录列表容器 */
.service-list-container {
/* 使用绝对定位从tab页底部开始高度计算100vh - 导航栏 - tab页 - 底部导航栏(96rpx) */
position: absolute;
/* top值通过内联样式动态设置 */
left: 0;
right: 0;
bottom: 96rpx; /* 底部导航栏高度 */
}
/* 客户列表容器 */
.customer-list-container {
/* 使用绝对定位从tab页底部开始高度计算100vh - 导航栏 - tab页 - 底部导航栏(96rpx) */
position: absolute;
/* top值通过内联样式动态设置 */
left: 0;
right: 0;
bottom: 96rpx; /* 底部导航栏高度 */
}
/* 列表头部 */
.list-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 24rpx 32rpx;
background-color: #FFFFFF;
border-bottom: 1px solid #F0F0F0;
}
.total {
font-size: 28rpx;
color: #666;
}
.filter-btn {
padding: 8rpx 16rpx;
background-color: #F5F5F5;
border-radius: 8rpx;
}
.filter-btn text {
font-size: 24rpx;
color: #666;
}
/* 服务记录列表 */
.service-list {
height: calc(100vh - 420rpx);
background-color: #FFFFFF;
}
.service-item {
padding: 32rpx;
border-bottom: 1px solid #F0F0F0;
background-color: #FFFFFF;
}
.service-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16rpx;
}
.service-title {
font-size: 32rpx;
font-weight: 500;
color: #333;
}
.service-actions {
display: flex;
align-items: center;
}
.archive-text {
font-size: 26rpx;
color: #999;
margin-right: 8rpx;
}
.service-meta {
display: flex;
align-items: center;
margin-bottom: 16rpx;
}
.service-date {
font-size: 24rpx;
color: #999;
margin-right: 16rpx;
}
.service-duration {
font-size: 24rpx;
color: #999;
}
.service-content {
margin-bottom: 24rpx;
}
.service-desc {
font-size: 28rpx;
color: #666;
line-height: 1.6;
}
.service-customer {
display: flex;
align-items: center;
margin-bottom: 16rpx;
}
.customer-avatar {
width: 64rpx;
height: 64rpx;
background-color: #2196F3;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin-right: 16rpx;
}
.avatar-text {
font-size: 32rpx;
color: #FFFFFF;
font-weight: 500;
}
.customer-name {
font-size: 28rpx;
color: #333;
}
.ai-tag {
padding-top: 16rpx;
border-top: 1px solid #F0F0F0;
}
.ai-tag text {
font-size: 24rpx;
color: #999;
}
/* 服务记录详情弹窗 */
.service-detail-modal {
background-color: #FFFFFF;
border-radius: 32rpx 32rpx 0 0;
max-height: 90vh;
display: flex;
flex-direction: column;
overflow: hidden;
}
.modal-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 32rpx;
border-bottom: 1px solid #F0F0F0;
}
.modal-close,
.modal-share {
width: 48rpx;
height: 48rpx;
display: flex;
align-items: center;
justify-content: center;
}
.modal-title {
font-size: 36rpx;
font-weight: 600;
color: #333;
flex: 1;
text-align: center;
}
.modal-date {
padding: 16rpx 32rpx;
}
.modal-date text {
font-size: 24rpx;
color: #999;
}
.modal-banner {
background-color: #E3F2FD;
padding: 24rpx 32rpx;
display: flex;
justify-content: space-between;
align-items: center;
margin: 0 32rpx 24rpx;
border-radius: 16rpx;
}
.modal-banner .banner-left {
display: flex;
align-items: center;
flex: 1;
}
.modal-banner .banner-icon {
width: 40rpx;
height: 40rpx;
background-color: #FFFFFF;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12rpx;
}
.modal-banner .banner-text {
font-size: 26rpx;
color: #1976D2;
flex: 1;
}
.modal-banner .banner-right {
font-size: 28rpx;
color: #1976D2;
font-weight: 500;
margin-left: 16rpx;
}
/* 音频播放器 */
.audio-player {
display: flex;
align-items: center;
padding: 24rpx 32rpx;
margin: 0 32rpx 24rpx;
background-color: #F5F5F5;
border-radius: 16rpx;
}
.play-btn {
width: 48rpx;
height: 48rpx;
display: flex;
align-items: center;
justify-content: center;
margin-right: 16rpx;
}
.progress-bar {
flex: 1;
height: 4rpx;
background-color: #E0E0E0;
border-radius: 2rpx;
margin: 0 16rpx;
position: relative;
}
.progress-line {
width: 30%;
height: 100%;
background-color: #007AFF;
border-radius: 2rpx;
position: relative;
}
.progress-dot {
position: absolute;
right: -8rpx;
top: 50%;
transform: translateY(-50%);
width: 16rpx;
height: 16rpx;
background-color: #007AFF;
border-radius: 50%;
border: 2rpx solid #FFFFFF;
}
.audio-time {
font-size: 24rpx;
color: #666;
margin-right: 16rpx;
min-width: 200rpx;
}
.speed-btn {
padding: 8rpx 16rpx;
background-color: #FFFFFF;
border-radius: 8rpx;
border: 1px solid #E0E0E0;
}
.speed-btn text {
font-size: 24rpx;
color: #333;
}
/* 详情标签页 */
.detail-tabs {
display: flex;
background-color: #FFFFFF;
border-bottom: 1px solid #E0E0E0;
padding: 0 32rpx;
overflow-x: auto;
position: -webkit-sticky;
position: sticky;
top: 0;
z-index: 10;
flex-shrink: 0;
}
.detail-tab-item {
padding: 24rpx 16rpx;
position: relative;
white-space: nowrap;
margin-right: 32rpx;
}
.detail-tab-item text {
font-size: 28rpx;
color: #666;
}
.detail-tab-item.active text {
color: #333;
font-weight: 500;
}
.detail-tab-item.active::after {
content: '';
position: absolute;
bottom: 0;
left: 16rpx;
right: 16rpx;
height: 4rpx;
background-color: #007AFF;
border-radius: 2rpx;
}
/* 详情内容 */
.detail-content {
flex: 1;
padding: 24rpx 32rpx;
background-color: #FFFFFF;
overflow-y: auto;
min-height: 0;
}
.summary-item {
padding: 24rpx 0;
border-bottom: 1px solid #F0F0F0;
display: flex;
flex-direction: column;
position: relative;
padding-right: 40rpx;
}
.summary-item:last-child {
border-bottom: none;
}
.summary-label {
margin-bottom: 12rpx;
}
.summary-label text {
font-size: 28rpx;
color: #666;
font-weight: 500;
}
.summary-value {
flex: 1;
}
.summary-value text {
font-size: 28rpx;
color: #333;
line-height: 1.6;
}
.summary-item uni-icons {
position: absolute;
right: 0;
top: 50%;
transform: translateY(-50%);
}
.empty-detail {
padding: 80rpx 0;
text-align: center;
}
.empty-detail text {
font-size: 28rpx;
color: #999;
}
/* 底部客户信息 */
.modal-footer {
display: flex;
align-items: center;
padding: 24rpx 32rpx;
border-top: 1px solid #F0F0F0;
background-color: #FFFFFF;
}
.footer-label {
font-size: 28rpx;
color: #666;
margin: 0 8rpx 0 12rpx;
}
.footer-customer {
font-size: 28rpx;
color: #1976D2;
flex: 1;
}
/* 服务表现样式 */
.performance-score {
text-align: center;
padding: 40rpx 32rpx;
background-color: #FFFFFF;
border-bottom: 1px solid #F0F0F0;
}
.score-label {
display: block;
font-size: 28rpx;
color: #666;
margin-bottom: 16rpx;
}
.score-value {
display: block;
font-size: 72rpx;
font-weight: 600;
color: #007AFF;
}
.performance-category {
background-color: #FFFFFF;
border-bottom: 1px solid #F0F0F0;
}
.category-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 32rpx;
}
.category-left {
display: flex;
align-items: center;
flex: 1;
}
.category-bullet {
width: 16rpx;
height: 16rpx;
border-radius: 50%;
margin-right: 16rpx;
}
.bullet-blue {
background-color: #007AFF;
}
.bullet-gray {
background-color: #999;
}
.category-name {
font-size: 30rpx;
color: #333;
font-weight: 500;
}
.category-content {
padding: 0 32rpx 32rpx;
}
.performance-banner {
background-color: #E3F2FD;
padding: 24rpx 32rpx;
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 24rpx;
border-radius: 16rpx;
}
.performance-banner .banner-left {
display: flex;
align-items: center;
flex: 1;
}
.performance-banner .banner-icon {
width: 40rpx;
height: 40rpx;
background-color: #FFFFFF;
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
margin-right: 12rpx;
}
.performance-banner .banner-text {
font-size: 26rpx;
color: #1976D2;
flex: 1;
}
.performance-banner .banner-right {
font-size: 28rpx;
color: #1976D2;
font-weight: 500;
margin-left: 16rpx;
}
.performance-audio {
margin-bottom: 24rpx;
}
.performance-audio .audio-player {
margin: 0;
}
.performance-item {
margin-bottom: 16rpx;
}
.performance-item.item-completed {
background-color: #E8F5E9;
border-radius: 12rpx;
padding: 16rpx;
}
.item-content {
display: flex;
justify-content: space-between;
align-items: center;
padding: 16rpx 0;
}
.item-left {
display: flex;
align-items: center;
flex: 1;
flex-wrap: wrap;
gap: 12rpx;
}
.item-name {
font-size: 28rpx;
color: #333;
margin-right: 16rpx;
}
.item-status {
font-size: 24rpx;
padding: 4rpx 12rpx;
border-radius: 8rpx;
}
.status-completed {
background-color: #4CAF50;
color: #FFFFFF;
}
.status-missing {
background-color: #F5F5F5;
color: #999;
}
.item-points {
font-size: 24rpx;
color: #007AFF;
font-weight: 500;
margin-left: 8rpx;
}
/* 产品类别标签页 */
.product-category-tabs {
background-color: #FFFFFF;
border-bottom: 1px solid #E0E0E0;
margin-bottom: 24rpx;
padding: 0;
}
.category-tabs-scroll {
white-space: nowrap;
width: 100%;
}
.category-tabs-wrapper {
display: inline-flex;
padding: 0 32rpx;
}
.category-tab-item {
padding: 24rpx 16rpx;
position: relative;
margin-right: 32rpx;
white-space: nowrap;
}
.category-tab-item text {
font-size: 28rpx;
color: #666;
}
.category-tab-item.active text {
color: #333;
font-weight: 500;
}
.category-tab-item.active::after {
content: '';
position: absolute;
bottom: 0;
left: 16rpx;
right: 16rpx;
height: 4rpx;
background-color: #007AFF;
border-radius: 2rpx;
}
/* 产品需求清单表格 */
.product-requirement-table {
background-color: #FFFFFF;
padding: 0;
}
.requirement-title {
padding: 24rpx 32rpx;
font-size: 32rpx;
font-weight: 600;
color: #333;
border-bottom: 1px solid #F0F0F0;
}
.requirement-table {
padding: 0 32rpx 24rpx;
}
.requirement-row {
display: flex;
padding: 24rpx 0;
border-bottom: 1px solid #F0F0F0;
}
.requirement-row:last-child {
border-bottom: none;
}
.requirement-label {
min-width: 200rpx;
width: 200rpx;
padding-right: 24rpx;
}
.requirement-label text {
font-size: 28rpx;
color: #666;
font-weight: 500;
}
.requirement-content {
flex: 1;
}
.requirement-content text {
font-size: 28rpx;
color: #333;
line-height: 1.6;
}
/* 待办事项列表 */
.todo-list {
padding: 0;
}
.todo-item {
padding: 32rpx;
border-bottom: 1px solid #F0F0F0;
background-color: #FFFFFF;
}
.todo-item:last-child {
border-bottom: none;
}
.todo-item.todo-completed {
background-color: #F5F5F5;
opacity: 0.8;
}
.todo-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 16rpx;
}
.todo-title-wrapper {
display: flex;
align-items: center;
flex: 1;
}
.todo-status-dot {
width: 16rpx;
height: 16rpx;
border-radius: 50%;
margin-right: 12rpx;
flex-shrink: 0;
}
.todo-status-dot.status-pending {
background-color: #FF9800;
}
.todo-status-dot.status-processing {
background-color: #2196F3;
}
.todo-status-dot.status-completed {
background-color: #4CAF50;
}
.todo-title {
font-size: 32rpx;
font-weight: 500;
color: #333;
flex: 1;
}
.todo-status {
font-size: 24rpx;
padding: 6rpx 16rpx;
border-radius: 12rpx;
white-space: nowrap;
}
.todo-status.status-text-pending {
background-color: #FFF3E0;
color: #FF9800;
}
.todo-status.status-text-processing {
background-color: #E3F2FD;
color: #2196F3;
}
.todo-status.status-text-completed {
background-color: #E8F5E9;
color: #4CAF50;
}
.todo-status-wrapper {
position: relative;
z-index: 10;
}
.todo-status-clickable {
display: flex;
align-items: center;
}
.todo-item.todo-clickable .todo-status-clickable {
position: relative;
}
.todo-menu-fixed {
position: fixed;
background-color: #FFFFFF;
border-radius: 8rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.15);
z-index: 10000;
overflow: hidden;
}
.todo-menu-item {
padding: 24rpx 32rpx;
border-bottom: 1px solid #F0F0F0;
transition: background-color 0.2s;
}
.todo-menu-fixed .todo-menu-item:last-child {
border-bottom: none;
}
.todo-menu-item:active {
background-color: #F5F5F5;
}
.todo-menu-item text {
font-size: 28rpx;
color: #333;
}
.todo-menu-mask {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0, 0, 0, 0.01);
z-index: 9999;
}
.todo-content {
margin-bottom: 16rpx;
padding: 16rpx;
background-color: #F5F5F5;
border-radius: 8rpx;
}
.todo-content text {
font-size: 28rpx;
color: #666;
line-height: 1.6;
}
.todo-meta {
display: flex;
flex-wrap: wrap;
gap: 16rpx;
}
.todo-meta-item {
font-size: 24rpx;
color: #999;
}
/* 章节概要样式 */
.chapter-summary-list {
padding: 0;
}
.chapter-summary-item {
background-color: #FFFFFF;
border-radius: 16rpx;
padding: 32rpx;
margin-bottom: 24rpx;
border: 1px solid #F0F0F0;
}
.chapter-summary-item:last-child {
margin-bottom: 0;
}
.chapter-summary-title {
margin-bottom: 24rpx;
padding-bottom: 16rpx;
border-bottom: 2px solid #007AFF;
}
.chapter-summary-title text {
font-size: 32rpx;
font-weight: 600;
color: #333;
}
.chapter-summary-section {
margin-bottom: 24rpx;
}
.chapter-summary-section:last-child {
margin-bottom: 0;
}
.chapter-summary-label {
margin-bottom: 12rpx;
}
.chapter-summary-label text {
font-size: 28rpx;
font-weight: 500;
color: #666;
}
.chapter-summary-content {
background-color: #F5F5F5;
border-radius: 12rpx;
padding: 20rpx;
}
.chapter-summary-content text {
font-size: 28rpx;
color: #333;
line-height: 1.8;
}
/* 录音列表弹窗样式 */
.audio-list-modal {
background-color: #FFFFFF;
border-radius: 32rpx 32rpx 0 0;
max-height: 90vh;
height: 90vh;
display: flex;
flex-direction: column;
overflow: hidden;
}
.audio-list-content {
flex: 1;
padding: 24rpx 32rpx;
box-sizing: border-box;
background-color: #F5F5F5;
min-height: 0; /* 配合 flex: 1 使用,确保可以滚动 */
height: 100%;
}
.audio-list-item {
background-color: #FFFFFF;
border-radius: 16rpx;
padding: 32rpx;
margin-bottom: 24rpx;
box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
}
.audio-item-header {
margin-bottom: 16rpx;
display: flex;
align-items: center;
}
.audio-play-btn {
min-width: 80rpx;
height: 56rpx;
padding: 0 20rpx;
display: flex;
align-items: center;
justify-content: center;
margin-right: 16rpx;
cursor: pointer;
border-radius: 8rpx;
transition: background-color 0.2s;
flex-shrink: 0;
background-color: #F5F5F5;
position: relative;
z-index: 1;
}
.audio-play-btn:active {
background-color: #E0E0E0;
}
.audio-play-text {
font-size: 24rpx;
color: #2A68FF;
font-weight: 500;
line-height: 1;
}
.audio-play-text--playing {
color: #FF3B30;
}
.audio-item-name {
font-size: 32rpx;
font-weight: 500;
color: #333;
flex: 1;
}
.audio-item-info {
margin-bottom: 16rpx;
}
.audio-item-text {
font-size: 28rpx;
color: #666;
line-height: 1.6;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
display: block;
}
.audio-item-text--empty {
color: #999;
font-style: italic;
}
.audio-item-transcribe {
display: flex;
align-items: center;
}
.transcribe-btn {
padding: 12rpx 24rpx;
background-color: #007AFF;
border-radius: 8rpx;
display: inline-flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: background-color 0.2s, opacity 0.2s;
}
.transcribe-btn:active {
background-color: #0056CC;
}
.transcribe-btn--loading {
opacity: 0.6;
background-color: #999;
cursor: not-allowed;
}
.transcribe-btn text {
font-size: 26rpx;
color: #FFFFFF;
font-weight: 500;
}
.audio-item-meta {
display: flex;
flex-wrap: nowrap;
gap: 16rpx;
padding-top: 16rpx;
border-top: 1px solid #F0F0F0;
align-items: center;
}
.audio-meta-item {
font-size: 24rpx;
color: #999;
white-space: nowrap;
flex-shrink: 0;
}
.audio-list-empty {
padding: 48rpx 0;
text-align: center;
color: #999;
font-size: 28rpx;
}
/* 录音文本内容弹框样式 */
/* 提高文本内容弹框的层级,确保显示在录音列表弹框上方 */
/* 通过深度选择器覆盖uni-popup的z-index */
.text-modal-popup {
z-index: 1000 !important;
}
.text-modal-popup .uni-popup {
z-index: 1000 !important;
}
.text-modal {
width: 100%;
height: 80vh;
max-height: 80vh;
background-color: #FFFFFF;
border-radius: 24rpx;
display: flex;
flex-direction: column;
overflow: hidden;
box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.12);
position: relative;
}
.text-modal-header {
padding: 32rpx;
border-bottom: 1px solid #F0F0F0;
display: flex;
align-items: center;
justify-content: space-between;
flex-shrink: 0;
}
.text-modal-title {
font-size: 32rpx;
font-weight: 600;
color: #333;
}
.text-modal-close {
width: 48rpx;
height: 48rpx;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
border-radius: 50%;
transition: background-color 0.2s;
}
.text-modal-close:active {
background-color: #F5F5F5;
}
.text-modal-content {
flex: 1;
height: 0;
min-height: 0;
box-sizing: border-box;
}
.text-modal-text {
font-size: 28rpx;
color: #333;
line-height: 1.8;
white-space: pre-wrap;
word-wrap: break-word;
word-break: break-all;
display: block;
padding: 32rpx;
box-sizing: border-box;
}