/* 页面基础样式 */ page { overflow-x: hidden; width: 100%; } .orders-page { background: linear-gradient(180deg, #5B9BD5 0%, #4A90C2 100%); min-height: 100vh; padding-top: env(safe-area-inset-top); padding-bottom: calc(50px + env(safe-area-inset-bottom)); overflow-x: hidden; width: 100%; box-sizing: border-box; display: flex; flex-direction: column; align-items: center; } /* 状态选项卡 */ .status-tabs { background: rgba(255, 255, 255, 0.95); padding: 24rpx 20rpx; border-bottom: none; margin: 24rpx auto 0 auto; border-radius: 24rpx; box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.12); max-width: 700rpx; width: calc(100% - 32rpx); backdrop-filter: blur(12rpx); } .tabs-scroll { display: flex; justify-content: space-between; align-items: center; width: 100%; box-sizing: border-box; padding: 0; gap: 12rpx; } .tab-item { display: flex; align-items: center; justify-content: center; padding: 16rpx 20rpx; border-radius: 50rpx; font-size: 26rpx; font-weight: 500; color: #666; background: rgba(74, 144, 194, 0.08); transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); border: 2rpx solid rgba(74, 144, 194, 0.15); flex: 1; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; letter-spacing: 0.5rpx; } .tab-item.active { background: linear-gradient(135deg, #4A90C2 0%, #357ABD 100%); color: #fff; font-weight: 600; transform: translateY(-2rpx); box-shadow: 0 6rpx 20rpx rgba(74, 144, 194, 0.35); border-color: rgba(74, 144, 194, 0.3); } /* 订单列表 */ .orders-list { padding: 40rpx 16rpx 32rpx; display: flex; flex-direction: column; align-items: center; width: 100%; box-sizing: border-box; } .order-card { background: rgba(255, 255, 255, 0.96); border-radius: 28rpx; margin-bottom: 36rpx; box-shadow: 0 12rpx 40rpx rgba(74, 144, 194, 0.18); border: 1rpx solid rgba(255, 255, 255, 0.4); overflow: hidden; backdrop-filter: blur(16rpx); width: 100%; max-width: 700rpx; box-sizing: border-box; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .order-card:active { transform: translateY(2rpx); box-shadow: 0 8rpx 24rpx rgba(74, 144, 194, 0.12); } /* 包车订单样式 */ .charter-order { background: linear-gradient(135deg, #1a1a1a 0%, #2d2d2d 100%); border: 2rpx solid #d4af37; box-shadow: 0 8rpx 32rpx rgba(212, 175, 55, 0.3); } /* 订单头部 */ .order-header { display: flex; justify-content: space-between; align-items: flex-start; padding: 36rpx 36rpx 28rpx 36rpx; border-bottom: 1rpx solid rgba(240, 240, 240, 0.6); } .charter-order .order-header { border-bottom-color: #444; } .order-info { flex: 1; } .order-no { font-size: 24rpx; color: #999; margin-bottom: 8rpx; } .charter-order .order-no { color: #ccc; } .activity-name { font-size: 34rpx; font-weight: 600; color: #333; line-height: 1.4; letter-spacing: 0.5rpx; } .charter-order .activity-name { color: #d4af37; } .order-status { padding: 8rpx 20rpx; border-radius: 20rpx; font-size: 24rpx; font-weight: bold; } .order-status.pending { background: rgba(250, 140, 22, 0.15); color: #fa8c16; border: 1rpx solid rgba(250, 140, 22, 0.3); } .order-status.ongoing { background: rgba(74, 144, 194, 0.15); color: #4A90C2; border: 1rpx solid rgba(74, 144, 194, 0.3); } .order-status.completed { background: rgba(82, 196, 26, 0.15); color: #52c41a; border: 1rpx solid rgba(82, 196, 26, 0.3); } .order-status.cancelled { background: rgba(255, 77, 79, 0.15); color: #ff4d4f; border: 1rpx solid rgba(255, 77, 79, 0.3); } .charter-order .order-status.pending { background: #d4af37; color: #1a1a1a; } .charter-order .order-status.ongoing { background: #1890ff; color: #fff; } /* 行程信息 */ .trip-info { padding: 28rpx 36rpx 32rpx; } .trip-route { display: flex; align-items: center; margin-bottom: 28rpx; padding: 20rpx; background: rgba(74, 144, 194, 0.05); border-radius: 16rpx; border: 1rpx solid rgba(74, 144, 194, 0.1); } .route-item { flex: 1; } .route-label { font-size: 24rpx; color: #999; margin-bottom: 8rpx; } .charter-order .route-label { color: #ccc; } .route-location { font-size: 30rpx; color: #333; font-weight: 600; line-height: 1.3; } .charter-order .route-location { color: #fff; } .route-arrow { font-size: 36rpx; color: #4A90C2; margin: 0 28rpx; font-weight: 600; opacity: 0.8; } .charter-order .route-arrow { color: #d4af37; } .trip-details { background: rgba(74, 144, 194, 0.06); padding: 24rpx; border-radius: 18rpx; border: 1rpx solid rgba(74, 144, 194, 0.08); } .charter-order .trip-details { background: #333; } .detail-item { display: flex; margin-bottom: 16rpx; align-items: center; } .detail-item:last-child { margin-bottom: 0; } .detail-label { font-size: 26rpx; color: #666; width: 160rpx; flex-shrink: 0; } .charter-order .detail-label { color: #ccc; } .detail-value { font-size: 26rpx; color: #333; flex: 1; } .charter-order .detail-value { color: #fff; } /* 司机信息 */ .driver-info { padding: 24rpx 32rpx; background: rgba(74, 144, 194, 0.05); border-top: 1rpx solid rgba(74, 144, 194, 0.1); border-bottom: 1rpx solid rgba(74, 144, 194, 0.1); } .charter-order .driver-info { background: #333; border-top-color: #444; border-bottom-color: #444; } .driver-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 20rpx; } .driver-title { font-size: 28rpx; font-weight: bold; color: #333; } .charter-order .driver-title { color: #d4af37; } .driver-tip { font-size: 22rpx; color: #999; max-width: 400rpx; } .charter-order .driver-tip { color: #ccc; } .driver-details { display: flex; align-items: center; gap: 20rpx; } .driver-avatar { width: 80rpx; height: 80rpx; border-radius: 50%; overflow: hidden; flex-shrink: 0; } .avatar-img { width: 100%; height: 100%; } .driver-basic { flex: 1; } .driver-name { font-size: 28rpx; font-weight: bold; color: #333; margin-bottom: 8rpx; } .charter-order .driver-name { color: #fff; } .driver-car { font-size: 24rpx; color: #666; } .car-number { font-weight: bold; } .charter-order .driver-car { color: #ccc; } .driver-phone { font-size: 24rpx; color: #666; margin-bottom: 8rpx; } .driver-rating { font-size: 22rpx; color: #ff9500; font-weight: 600; } .vehicle-info { margin-top: 12rpx; padding: 12rpx; background: rgba(74, 144, 194, 0.05); border-radius: 8rpx; border-left: 4rpx solid #4A90C2; } .vehicle-model { font-size: 24rpx; font-weight: 600; color: #4A90C2; margin-bottom: 4rpx; } .vehicle-plate { font-size: 22rpx; color: #666; margin-bottom: 4rpx; } .vehicle-capacity { font-size: 20rpx; color: #999; } .driver-actions { display: flex; gap: 16rpx; } .action-btn { padding: 12rpx 20rpx; border-radius: 20rpx; font-size: 24rpx; border: none; font-weight: bold; box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.1); } .call-btn { background: linear-gradient(135deg, #52c41a 0%, #389e0d 100%); color: #fff; } .location-btn { background: linear-gradient(135deg, #4A90C2 0%, #357ABD 100%); color: #fff; } /* 司机状态 */ .driver-status { display: flex; align-items: center; } .status-assigned { background: rgba(24, 144, 255, 0.1); color: #1890ff; padding: 6rpx 12rpx; border-radius: 12rpx; font-size: 22rpx; font-weight: 500; } .status-picked { background: rgba(255, 193, 7, 0.1); color: #ffc107; padding: 6rpx 12rpx; border-radius: 12rpx; font-size: 22rpx; font-weight: 500; } .status-transit { background: rgba(82, 196, 26, 0.1); color: #52c41a; padding: 6rpx 12rpx; border-radius: 12rpx; font-size: 22rpx; font-weight: 500; } .status-completed { background: rgba(146, 146, 146, 0.1); color: #929292; padding: 6rpx 12rpx; border-radius: 12rpx; font-size: 22rpx; font-weight: 500; } .driver-rating { font-size: 22rpx; color: #f39c12; margin-top: 4rpx; } .charter-order .driver-rating { color: #f1c40f; } /* 司机未分配状态 */ .driver-pending { padding: 40rpx 32rpx; background: rgba(74, 144, 194, 0.05); border-top: 1rpx solid rgba(74, 144, 194, 0.1); border-bottom: 1rpx solid rgba(74, 144, 194, 0.1); text-align: center; } .charter-order .driver-pending { background: #333; border-top-color: #444; border-bottom-color: #444; } .pending-icon { font-size: 60rpx; margin-bottom: 16rpx; animation: rotate 2s linear infinite; } @keyframes rotate { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .pending-text { font-size: 28rpx; color: #666; font-weight: 500; margin-bottom: 8rpx; } .charter-order .pending-text { color: #ccc; } .pending-desc { font-size: 24rpx; color: #999; } .charter-order .pending-desc { color: #999; } /* 价格信息 */ .price-info { display: flex; justify-content: space-between; align-items: center; padding: 24rpx 32rpx; } .price-label { font-size: 28rpx; color: #666; } .charter-order .price-label { color: #ccc; } .price-value { font-size: 36rpx; font-weight: bold; color: #4A90C2; } .charter-order .price-value { color: #d4af37; } /* 订单操作 */ .order-actions { display: flex; justify-content: space-between; align-items: center; padding: 28rpx 36rpx; background: rgba(74, 144, 194, 0.04); border-top: 1rpx solid rgba(74, 144, 194, 0.08); } .charter-order .order-actions { background: #333; } .create-time { font-size: 26rpx; color: #999; flex: 1; min-width: 0; font-weight: 500; line-height: 1.4; } .charter-order .create-time { color: #ccc; } .action-buttons { display: flex; gap: 16rpx; align-items: center; flex-shrink: 0; } .cancel-btn, .detail-btn { padding: 16rpx 28rpx; border-radius: 50rpx; font-size: 26rpx; border: none; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 140rpx; max-width: 180rpx; text-align: center; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); letter-spacing: 0.5rpx; } .cancel-btn { background: rgba(255, 255, 255, 0.95); color: #ff4d4f; border: 2rpx solid #ff4d4f; box-shadow: 0 2rpx 8rpx rgba(255, 77, 79, 0.2); } .detail-btn { background: linear-gradient(135deg, #4A90C2 0%, #357ABD 100%); color: #fff; box-shadow: 0 6rpx 20rpx rgba(74, 144, 194, 0.35); } .detail-btn:active { transform: translateY(1rpx); box-shadow: 0 4rpx 12rpx rgba(74, 144, 194, 0.25); } .charter-order .detail-btn { background: #d4af37; color: #1a1a1a; } /* 空状态 */ .empty-orders { text-align: center; padding: 120rpx 32rpx; background: rgba(255, 255, 255, 0.1); border-radius: 24rpx; margin: 32rpx auto; backdrop-filter: blur(10rpx); border: 1rpx solid rgba(255, 255, 255, 0.2); width: 100%; max-width: 680rpx; box-sizing: border-box; } .empty-icon { font-size: 120rpx; margin-bottom: 32rpx; color: rgba(255, 255, 255, 0.8); } .empty-text { font-size: 32rpx; color: rgba(255, 255, 255, 0.9); margin-bottom: 16rpx; font-weight: bold; } .empty-desc { font-size: 26rpx; color: rgba(255, 255, 255, 0.7); } /* 中等屏幕适配 */ @media screen and (max-width: 414px) and (min-width: 376px) { .tabs-scroll { gap: 6rpx; } .tab-item { font-size: 22rpx; padding: 12rpx 8rpx; } .cancel-btn, .detail-btn { font-size: 24rpx; padding: 15rpx 24rpx; min-width: 130rpx; max-width: 170rpx; border-radius: 45rpx; } .action-buttons { gap: 14rpx; } .create-time { font-size: 25rpx; } .order-actions { padding: 26rpx 34rpx; } } /* 小屏幕适配 */ @media screen and (max-width: 375px) { .status-tabs { margin: 15rpx auto 0 auto; width: calc(100% - 30rpx); max-width: 100%; padding: 16rpx 12rpx; } .tabs-scroll { gap: 4rpx; } .orders-list { padding: 24rpx 15rpx; } .order-card { max-width: 100%; margin-bottom: 24rpx; } .tab-item { font-size: 20rpx; padding: 12rpx 6rpx; border-radius: 30rpx; } .cancel-btn, .detail-btn { font-size: 22rpx; padding: 14rpx 20rpx; min-width: 120rpx; max-width: 160rpx; border-radius: 40rpx; } .action-buttons { gap: 12rpx; } .create-time { font-size: 24rpx; } .order-actions { padding: 24rpx 32rpx; } .empty-orders { margin: 24rpx auto; width: calc(100% - 30rpx); padding: 100rpx 24rpx; } }