/* pages/freight-calculator/index.wxss */ /* 全局样式 */ .container { padding: 0; background-color: #f8f9fa; min-height: 100vh; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; width: 100%; max-width: 100%; box-sizing: border-box; } /* 确保所有主要元素都有box-sizing */ .main-content, .section, .form-item, .input, .location-btn, .picker, .calculate-section, .calculate-btn, .clear-btn, .result-section, .result-card, .result-item, .history-list, .history-item, .history-content, .history-actions, .clear-history-btn, .picker-overlay, .picker-popup-container, .picker-header, .picker-content, .empty-state, .divider { box-sizing: border-box; } /* 物流人员信息样式 */ .logistics-intro { background-color: #f8f9fa; border-radius: 12rpx; padding: 16rpx; margin-bottom: 20rpx; border-left: 4rpx solid #1989fa; } .intro-text { font-size: 22rpx; color: #666; line-height: 1.5; } .logistics-personnel { width: 100%; display: flex; flex-direction: column; gap: 20rpx; box-sizing: border-box; } .personnel-card { background-color: #fff; border-radius: 16rpx; padding: 24rpx; box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.08); border: 1rpx solid #e8e8e8; width: 100%; box-sizing: border-box; transition: all 0.3s ease; } .personnel-card:hover { box-shadow: 0 6rpx 20rpx rgba(0, 0, 0, 0.12); transform: translateY(-2rpx); border-color: #1989fa; } .personnel-header-section { display: flex; align-items: flex-start; margin-bottom: 20rpx; } .personnel-avatar { width: 100rpx; height: 100rpx; border-radius: 50%; background: linear-gradient(135deg, #1989fa 0%, #1890ff 100%); display: flex; align-items: center; justify-content: center; margin-right: 24rpx; flex-shrink: 0; box-shadow: 0 4rpx 12rpx rgba(25, 137, 250, 0.3); } .avatar-text { font-size: 40rpx; font-weight: 700; color: #fff; text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.2); } .avatar-image { width: 100%; height: 100%; border-radius: 50%; object-fit: cover; } .personnel-header-info { flex: 1; display: flex; flex-direction: column; gap: 8rpx; } .personnel-name { font-size: 30rpx; font-weight: 700; color: #333; line-height: 1.2; margin: 0; } .personnel-position { font-size: 22rpx; color: #666; margin: 0; font-weight: 500; } .personnel-tags { display: flex; gap: 12rpx; flex-wrap: wrap; margin-top: 4rpx; } .personnel-tag { font-size: 18rpx; color: #1890ff; background: linear-gradient(135deg, rgba(25, 137, 250, 0.15), rgba(24, 144, 255, 0.05)); padding: 8rpx 16rpx; border-radius: 20rpx; border: 1rpx solid rgba(25, 137, 250, 0.3); box-shadow: 0 2rpx 6rpx rgba(25, 137, 250, 0.15); font-weight: 500; transition: all 0.3s ease; } .personnel-tag:hover { background: linear-gradient(135deg, rgba(25, 137, 250, 0.2), rgba(24, 144, 255, 0.1)); box-shadow: 0 3rpx 8rpx rgba(25, 137, 250, 0.2); transform: translateY(-1rpx); } .personnel-description { margin-bottom: 20rpx; padding: 16rpx; background-color: #f8f9fa; border-radius: 12rpx; border-left: 4rpx solid #e3f2fd; } .description-text { font-size: 22rpx; color: #666; line-height: 1.5; margin: 0; } .personnel-contact-section { display: flex; justify-content: space-between; align-items: center; padding-top: 20rpx; border-top: 1rpx solid #f0f0f0; } .personnel-contact-info { display: flex; align-items: center; gap: 8rpx; } .contact-label { font-size: 22rpx; color: #666; font-weight: 500; } .contact-value { font-size: 24rpx; color: #333; font-weight: 600; } .contact-btn { background: linear-gradient(135deg, #1989fa 0%, #1890ff 100%); color: #fff; border: none; border-radius: 6rpx; padding: 10rpx 16rpx; font-size: 20rpx; font-weight: 600; display: flex; align-items: center; justify-content: center; gap: 6rpx; box-shadow: 0 2rpx 8rpx rgba(25, 137, 250, 0.3); transition: all 0.3s ease; white-space: nowrap; } .contact-btn:hover { background: linear-gradient(135deg, #1890ff 0%, #177ddc 100%); box-shadow: 0 6rpx 16rpx rgba(25, 137, 250, 0.4); transform: translateY(-2rpx); } .contact-btn:active { transform: translateY(0); box-shadow: 0 2rpx 8rpx rgba(25, 137, 250, 0.3); } /* 主内容区域 */ .main-content { padding: 16rpx; box-sizing: border-box; width: 100%; } /* 区块样式 */ .section { background-color: #fff; border-radius: 12rpx; padding: 20rpx; margin-bottom: 16rpx; box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05); width: 100%; box-sizing: border-box; } .section-title { font-size: 24rpx; font-weight: 600; color: #333; margin-bottom: 16rpx; display: flex; align-items: center; } .section-title::before { content: ''; width: 6rpx; height: 24rpx; background-color: #1989fa; border-radius: 3rpx; margin-right: 10rpx; } /* 表单项目样式 */ .form-item { display: flex; flex-direction: column; margin-bottom: 16rpx; position: relative; width: 100%; } /* 地址行样式 */ .address-row { margin-bottom: 16rpx; } .address-inputs { display: flex; gap: 12rpx; width: 100%; } .address-input { flex: 1; min-width: 0; } .label { font-size: 22rpx; color: #666; margin-bottom: 8rpx; font-weight: 500; } .input { height: 68rpx; border: 1rpx solid #e5e5e5; border-radius: 8rpx; padding: 0 20rpx; font-size: 24rpx; color: #333; box-sizing: border-box; line-height: 68rpx; width: 100%; } .input:focus { border-color: #1989fa; outline: none; } /* 只读输入框 */ .input.readonly { background-color: #f8f9fa; border-color: #e9ecef; color: #6c757d; } /* 位置按钮 */ .location-btn { width: 100%; height: 68rpx; background-color: #f8f9fa; border: 1rpx solid #e9ecef; border-radius: 8rpx; font-size: 22rpx; color: #495057; margin-top: 8rpx; display: flex; align-items: center; justify-content: center; box-sizing: border-box; line-height: 68rpx; flex: 1; } .location-btn::before { content: '📍'; margin-right: 8rpx; font-size: 24rpx; } /* 选择器样式 */ .picker { height: 68rpx; border: 1rpx solid #e5e5e5; border-radius: 8rpx; padding: 0 20rpx; display: flex; align-items: center; justify-content: space-between; background-color: #fff; width: 100%; font-size: 24rpx; color: #333; position: relative; box-sizing: border-box; line-height: 68rpx; } .picker::after { content: '▼'; position: absolute; right: 20rpx; top: 50%; transform: translateY(-50%); font-size: 16rpx; color: #666; } /* 计算按钮区域 */ .calculate-section { display: flex; flex-direction: column; margin-top: 24rpx; margin-bottom: 24rpx; gap: 12rpx; width: 100%; } .calculate-btn { width: 100%; height: 76rpx; background-color: #1989fa; color: #fff; border: none; border-radius: 8rpx; font-size: 26rpx; font-weight: 600; display: flex; align-items: center; justify-content: center; box-sizing: border-box; line-height: 76rpx; } .clear-btn { width: 100%; height: 76rpx; background-color: #fff; color: #666; border: 1rpx solid #e5e5e5; border-radius: 8rpx; font-size: 26rpx; display: flex; align-items: center; justify-content: center; box-sizing: border-box; line-height: 76rpx; } /* 结果区域 */ .result-section { background-color: #fff; border-radius: 12rpx; padding: 20rpx; margin-bottom: 16rpx; box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.05); width: 100%; } .result-card { background: linear-gradient(135deg, #f0f9ff 0%, #e3f2fd 100%); border-radius: 8rpx; padding: 20rpx; border-left: 4rpx solid #1989fa; width: 100%; } .result-item { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12rpx; padding: 8rpx 0; border-bottom: 1rpx solid rgba(0, 0, 0, 0.05); width: 100%; } .result-item:last-child { margin-bottom: 0; border-bottom: none; } .result-label { font-size: 22rpx; color: #666; font-weight: 500; flex: 1; } .result-value { font-size: 24rpx; font-weight: 600; color: #333; flex: 1; text-align: right; } .result-value.freight { color: #ff4d4f; font-size: 28rpx; } /* 结果提示信息 */ .result-note { margin-top: 16rpx; padding: 16rpx; background-color: #fff7e6; border-radius: 8rpx; border-left: 4rpx solid #fa8c16; width: 100%; box-sizing: border-box; } .note-text { font-size: 20rpx; color: #fa8c16; line-height: 1.5; font-weight: 500; } /* 历史记录 */ .history-list { margin-top: 12rpx; width: 100%; } .history-item { background-color: #f8f9fa; border-radius: 8rpx; padding: 16rpx; margin-bottom: 10rpx; border-left: 4rpx solid #e9ecef; width: 100%; } .history-content { display: flex; align-items: center; margin-bottom: 8rpx; flex-wrap: wrap; width: 100%; } .history-origin { font-size: 22rpx; color: #333; font-weight: 500; margin-right: 8rpx; flex: 0 0 auto; } .history-arrow { font-size: 22rpx; color: #999; margin: 0 8rpx; flex: 0 0 auto; } .history-destination { font-size: 22rpx; color: #333; font-weight: 500; margin-right: 16rpx; flex: 1; min-width: 120rpx; } .history-freight { font-size: 24rpx; font-weight: 600; color: #ff4d4f; margin-left: auto; flex: 0 0 auto; } .history-actions { display: flex; justify-content: flex-end; gap: 12rpx; margin-top: 8rpx; width: 100%; } .history-use-btn { font-size: 20rpx; color: #1989fa; background: none; border: none; padding: 0 8rpx; } .history-delete-btn { font-size: 20rpx; color: #ff4d4f; background: none; border: none; padding: 0 8rpx; } .clear-history-btn { width: 100%; height: 56rpx; background: none; border: 1rpx solid #e5e5e5; border-radius: 8rpx; font-size: 22rpx; color: #666; margin-top: 12rpx; box-sizing: border-box; } /* 选择器弹窗 */ .picker-overlay { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background-color: rgba(0, 0, 0, 0.5); display: flex; justify-content: center; align-items: flex-end; z-index: 1000; width: 100%; } .picker-popup-container { background-color: #fff; border-radius: 16rpx 16rpx 0 0; width: 100%; max-height: 70vh; overflow: hidden; } .picker-header { display: flex; justify-content: space-between; align-items: center; padding: 20rpx; border-bottom: 1rpx solid #e5e5e5; background-color: #f8f9fa; width: 100%; } .picker-title { font-size: 26rpx; font-weight: 600; color: #333; flex: 1; text-align: center; } .picker-close { font-size: 28rpx; color: #666; background: none; border: none; padding: 16rpx; width: 40rpx; height: 40rpx; display: flex; align-items: center; justify-content: center; border-radius: 50%; position: absolute; right: 20rpx; } .picker-content { padding: 24rpx; text-align: center; font-size: 24rpx; color: #666; width: 100%; } /* 空状态 */ .empty-state { text-align: center; padding: 48rpx 16rpx; color: #999; font-size: 22rpx; width: 100%; } .empty-state::before { content: '📦'; font-size: 48rpx; display: block; margin-bottom: 16rpx; } /* 分隔线 */ .divider { height: 1rpx; background-color: #e5e5e5; margin: 16rpx 0; width: 100%; } /* 标签样式 */ .tag { display: inline-block; padding: 4rpx 12rpx; border-radius: 12rpx; font-size: 20rpx; font-weight: 500; margin-right: 8rpx; margin-bottom: 8rpx; } .tag-primary { background-color: #e6f7ff; color: #1890ff; } .tag-success { background-color: #f6ffed; color: #52c41a; } .tag-warning { background-color: #fff7e6; color: #fa8c16; } .tag-danger { background-color: #fff1f0; color: #ff4d4f; } /* 车型信息样式 */ .vehicle-info { font-size: 20rpx; color: #999; margin-top: 4rpx; line-height: 1.4; } /* 详细费用明细样式 */ .detail-section { margin-top: 16rpx; background-color: #f8f9fa; border-radius: 8rpx; padding: 16rpx; border-left: 4rpx solid #e3f2fd; } .detail-text { font-size: 20rpx; color: #666; line-height: 1.5; white-space: pre-wrap; word-break: break-all; } /* 切换按钮样式 */ .toggle-btn { background: none; border: none; font-size: 20rpx; color: #1989fa; padding: 8rpx 16rpx; border-radius: 4rpx; display: flex; align-items: center; justify-content: center; } .toggle-btn:hover { background-color: rgba(25, 137, 250, 0.1); } .toggle-btn:active { background-color: rgba(25, 137, 250, 0.2); } /* 动画效果 */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(16rpx); } to { opacity: 1; transform: translateY(0); } } @keyframes slideUp { from { transform: translateY(100%); } to { transform: translateY(0); } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } /* 响应式调整 */ @media (min-width: 375px) { .main-content { padding: 20rpx; } .section { padding: 24rpx; margin-bottom: 20rpx; } .section-title { font-size: 26rpx; margin-bottom: 20rpx; } .form-item { margin-bottom: 20rpx; } .input { height: 72rpx; font-size: 26rpx; padding: 0 24rpx; } .picker { height: 72rpx; font-size: 26rpx; padding: 0 24rpx; } .location-btn { height: 72rpx; font-size: 24rpx; } .calculate-btn, .clear-btn { height: 80rpx; font-size: 28rpx; } .result-item { margin-bottom: 16rpx; padding: 12rpx 0; } .result-label { font-size: 24rpx; } .result-value { font-size: 26rpx; } .result-value.freight { font-size: 32rpx; } .history-content { margin-bottom: 12rpx; } .history-origin, .history-destination, .history-arrow { font-size: 24rpx; } .history-freight { font-size: 26rpx; } .history-use-btn, .history-delete-btn { font-size: 22rpx; } .clear-history-btn { height: 60rpx; font-size: 24rpx; } .empty-state { padding: 64rpx 24rpx; font-size: 24rpx; } .empty-state::before { font-size: 64rpx; margin-bottom: 24rpx; } .divider { margin: 24rpx 0; } } /* 大屏幕设备调整 */ @media (min-width: 750rpx) { .container { max-width: 750rpx; margin: 0 auto; } .header { max-width: 750rpx; margin: 0 auto; } } /* 小屏幕设备调整 */ @media (max-width: 320px) { .main-content { padding: 12rpx; } .section { padding: 16rpx; margin-bottom: 12rpx; } .section-title { font-size: 22rpx; margin-bottom: 12rpx; } .input { height: 64rpx; font-size: 22rpx; padding: 0 16rpx; } .picker { height: 64rpx; font-size: 22rpx; padding: 0 16rpx; } .location-btn { height: 64rpx; font-size: 20rpx; } .calculate-btn, .clear-btn { height: 72rpx; font-size: 24rpx; } .result-item { margin-bottom: 8rpx; padding: 6rpx 0; } .result-label { font-size: 20rpx; } .result-value { font-size: 22rpx; } .result-value.freight { font-size: 26rpx; } .history-content { margin-bottom: 6rpx; } .history-origin, .history-destination, .history-arrow { font-size: 20rpx; } .history-freight { font-size: 22rpx; } .history-use-btn, .history-delete-btn { font-size: 18rpx; } .clear-history-btn { height: 52rpx; font-size: 20rpx; } .empty-state { padding: 32rpx 12rpx; font-size: 20rpx; } .empty-state::before { font-size: 32rpx; margin-bottom: 12rpx; } .divider { margin: 12rpx 0; } }