/* pages/order/index.less */ // 颜色变量 - 参考图浅色社交风格 @bg-primary: #f5f6fa; @bg-secondary: #ffffff; @bg-card: #ffffff; @accent-primary: #4c6ef5; @accent-secondary: #6b7aff; @accent-gradient-start: #4c6ef5; @accent-gradient-end: #748ffc; @text-primary: #1a1a2e; @text-secondary: #6b7280; @text-muted: #9ca3af; @border-color: #e5e7eb; @status-pending: #f59f00; @status-confirmed: #4c6ef5; @status-in-progress: #20c997; @status-completed: #51cf66; @status-cancelled: #ff6b6b; @divider-color: #f3f4f6; page { background-color: @bg-primary; color: @text-primary; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; } .order-page { display: flex; flex-direction: column; height: 100vh; background-color: @bg-primary; } // ========== 筛选区域 ========== .filter-section { padding: 20rpx 0; background-color: @bg-secondary; border-bottom: 1rpx solid @border-color; } .filter-scroll { white-space: nowrap; } .filter-list { display: inline-flex; padding: 0 24rpx; gap: 20rpx; } .filter-item { display: inline-flex; align-items: center; padding: 16rpx 32rpx; background-color: @bg-primary; border-radius: 32rpx; border: 1rpx solid @border-color; transition: all 0.3s ease; &.active { background: linear-gradient(135deg, @accent-gradient-start, @accent-gradient-end); border-color: transparent; box-shadow: 0 4rpx 16rpx rgba(76, 110, 245, 0.25); .filter-text { color: #ffffff; font-weight: 600; } .filter-badge { background-color: #ffffff; color: @accent-primary; } } } .filter-text { font-size: 26rpx; color: @text-secondary; line-height: 1; } .filter-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 32rpx; height: 32rpx; padding: 0 8rpx; margin-left: 8rpx; background-color: @status-cancelled; border-radius: 16rpx; font-size: 20rpx; color: #ffffff; font-weight: 600; } // ========== 订单列表区域 ========== .order-list { flex: 1; overflow: hidden; } .order-scroll { height: 100%; padding: 0 24rpx; } .loading-container, .empty-container { display: flex; align-items: center; justify-content: center; padding: 200rpx 40rpx; } .loading-text { color: @text-secondary !important; font-size: 26rpx !important; } .empty-text { color: @text-secondary !important; font-size: 28rpx !important; } .empty-action { margin-top: 30rpx; padding: 16rpx 48rpx; background: linear-gradient(135deg, @accent-gradient-start, @accent-gradient-end); color: #ffffff; font-size: 28rpx; border-radius: 32rpx; display: inline-block; } // ========== 订单卡片 ========== .order-cards { padding: 24rpx 0 40rpx; } .order-card { margin-bottom: 24rpx; background-color: @bg-card; border-radius: 24rpx; border: 1rpx solid @border-color; box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.04); overflow: hidden; transition: transform 0.2s ease, box-shadow 0.2s ease; &:active { transform: scale(0.98); box-shadow: 0 4rpx 20rpx rgba(0, 0, 0, 0.08); } } .card-header { display: flex; align-items: center; justify-content: space-between; padding: 28rpx 28rpx 20rpx; } .order-id { display: flex; align-items: center; gap: 10rpx; } .order-id-text { font-size: 24rpx; color: @text-muted; font-weight: 500; } .status-tag { display: inline-flex; align-items: center; padding: 8rpx 18rpx; border-radius: 20rpx; font-size: 22rpx; font-weight: 600; &.pending { background-color: rgba(245, 159, 0, 0.1); color: @status-pending; } &.confirmed { background-color: rgba(76, 110, 245, 0.1); color: @accent-primary; } &.in_progress { background-color: rgba(32, 201, 151, 0.1); color: @status-in-progress; } &.completed { background-color: rgba(81, 207, 102, 0.1); color: @status-completed; } &.cancelled { background-color: rgba(255, 107, 107, 0.1); color: @status-cancelled; } } // ========== 卡片主体 ========== .card-body { padding: 0 28rpx; } .patient-row { margin-bottom: 20rpx; } .patient-info { display: flex; align-items: center; gap: 24rpx; } .patient-avatar { width: 80rpx; height: 80rpx; background: linear-gradient(135deg, @accent-gradient-start, @accent-gradient-end); border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 4rpx 12rpx rgba(76, 110, 245, 0.25); } .avatar-text { font-size: 30rpx; font-weight: 600; color: #ffffff; } .patient-detail { flex: 1; display: flex; flex-direction: column; gap: 8rpx; } .patient-name-row { display: flex; align-items: center; gap: 14rpx; } .patient-name { font-size: 32rpx; font-weight: 600; color: @text-primary; } .patient-gender { font-size: 22rpx; padding: 4rpx 12rpx; border-radius: 10rpx; background-color: rgba(76, 110, 245, 0.1); color: @accent-primary; font-weight: 500; &.male { background-color: rgba(76, 110, 245, 0.1); color: @accent-primary; } &.female { background-color: rgba(255, 107, 107, 0.1); color: @status-cancelled; } } .patient-age { font-size: 24rpx; color: @text-secondary; font-weight: 500; } .patient-phone { font-size: 24rpx; color: @text-muted; } .info-divider { height: 1rpx; background-color: @divider-color; margin: 20rpx 0; } .info-item { display: flex; align-items: flex-start; gap: 14rpx; margin-bottom: 14rpx; } .info-content { display: flex; flex-direction: column; gap: 6rpx; } .hospital-name { font-size: 28rpx; color: @text-primary; font-weight: 500; } .department-name { font-size: 24rpx; color: @text-secondary; } .service-name { font-size: 26rpx; color: @text-secondary; font-weight: 500; } .time-text { font-size: 26rpx; color: @text-secondary; font-weight: 500; } .attendant-name { font-size: 26rpx; color: @text-secondary; font-weight: 500; } // ========== 卡片底部 ========== .card-footer { display: flex; align-items: center; justify-content: space-between; padding: 24rpx 28rpx 28rpx; margin-top: 12rpx; border-top: 1rpx solid @divider-color; } .fee-section { display: flex; align-items: baseline; gap: 8rpx; } .fee-label { font-size: 24rpx; color: @text-muted; } .fee-value { font-size: 38rpx; font-weight: 700; color: @status-pending; } .action-buttons { display: flex; gap: 16rpx; } .btn { display: inline-flex; align-items: center; justify-content: center; padding: 16rpx 36rpx; border-radius: 28rpx; font-size: 26rpx; font-weight: 500; transition: all 0.2s ease; &:active { transform: scale(0.95); opacity: 0.9; } } .btn-primary { background: linear-gradient(135deg, @accent-gradient-start, @accent-gradient-end); color: #ffffff; box-shadow: 0 4rpx 16rpx rgba(76, 110, 245, 0.25); } .btn-secondary { background-color: @bg-primary; color: @text-secondary; border: 1rpx solid @border-color; &:active { background-color: rgba(76, 110, 245, 0.05); } } // ========== 加载更多 ========== .load-more { display: flex; align-items: center; justify-content: center; padding: 40rpx 20rpx; } .no-more { font-size: 24rpx; color: @text-muted; }