/* pages/order/index.less */ // 颜色变量 @bg-primary: #0f1535; @bg-secondary: #1a1f3c; @bg-card: #1e2548; @bg-card-hover: #252d5a; @accent-primary: #4c6ef5; @accent-secondary: #6b7aff; @accent-gradient-start: #4c6ef5; @accent-gradient-end: #748ffc; @text-primary: #ffffff; @text-secondary: #a0a8d0; @text-muted: #6b7298; @border-color: #2a3366; @status-pending: #f59f00; @status-confirmed: #4c6ef5; @status-in-progress: #20c997; @status-completed: #51cf66; @status-cancelled: #ff6b6b; @divider-color: #2a3366; 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; } // ========== 顶部统计区域 ========== .header-section { position: relative; padding: 30rpx 30rpx 40rpx; overflow: hidden; .header-bg { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(135deg, @accent-gradient-start 0%, @accent-gradient-end 100%); border-radius: 0 0 40rpx 40rpx; opacity: 0.15; } &::before { content: ''; position: absolute; top: -100rpx; right: -100rpx; width: 300rpx; height: 300rpx; background: radial-gradient(circle, rgba(76, 110, 245, 0.2) 0%, transparent 70%); border-radius: 50%; } } .stats-container { position: relative; display: flex; align-items: center; justify-content: space-around; background: rgba(30, 37, 72, 0.8); backdrop-filter: blur(20rpx); border-radius: 24rpx; padding: 30rpx 20rpx; border: 1rpx solid rgba(107, 122, 255, 0.1); box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.2); } .stat-item { display: flex; flex-direction: column; align-items: center; flex: 1; } .stat-value { font-size: 40rpx; font-weight: 700; color: @text-primary; line-height: 1.2; margin-bottom: 8rpx; } .stat-label { font-size: 24rpx; color: @text-secondary; line-height: 1.4; } .stat-divider { width: 1rpx; height: 60rpx; background: linear-gradient(to bottom, transparent, @divider-color, transparent); } // ========== 筛选区域 ========== .filter-section { padding: 20rpx 0; background-color: @bg-primary; } .filter-scroll { white-space: nowrap; } .filter-list { display: inline-flex; padding: 0 20rpx; gap: 16rpx; } .filter-item { display: inline-flex; align-items: center; padding: 16rpx 28rpx; background-color: @bg-card; border-radius: 32rpx; border: 1rpx solid transparent; 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.3); .filter-text { color: @text-primary; font-weight: 600; } } } .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: @text-primary; font-weight: 600; } // ========== 订单列表区域 ========== .order-list { flex: 1; overflow: hidden; } .order-scroll { height: 100%; padding: 0 20rpx; } .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: @text-primary; font-size: 28rpx; border-radius: 32rpx; display: inline-block; } // ========== 订单卡片 ========== .order-cards { padding-bottom: 40rpx; } .order-card { margin-bottom: 24rpx; background-color: @bg-card; border-radius: 24rpx; border: 1rpx solid @border-color; overflow: hidden; transition: transform 0.2s ease, box-shadow 0.2s ease; &:active { transform: scale(0.98); background-color: @bg-card-hover; } // 状态左边框 &.pending { border-left: 4rpx solid @status-pending; } &.confirmed { border-left: 4rpx solid @status-confirmed; } &.in_progress { border-left: 4rpx solid @status-in-progress; } &.completed { border-left: 4rpx solid @status-completed; } &.cancelled { border-left: 4rpx solid @status-cancelled; opacity: 0.85; } } .card-header { display: flex; align-items: center; justify-content: space-between; padding: 24rpx 28rpx 16rpx; } .order-id { display: flex; align-items: center; gap: 10rpx; } .order-id-text { font-size: 24rpx; color: @text-muted; } .status-tag { display: inline-flex; align-items: center; padding: 6rpx 16rpx; border-radius: 8rpx; font-size: 22rpx; font-weight: 600; &.pending { background-color: rgba(245, 159, 0, 0.15); color: @status-pending; } &.confirmed { background-color: rgba(76, 110, 245, 0.15); color: @accent-secondary; } &.in_progress { background-color: rgba(32, 201, 151, 0.15); color: @status-in-progress; } &.completed { background-color: rgba(81, 207, 102, 0.15); color: @status-completed; } &.cancelled { background-color: rgba(255, 107, 107, 0.15); color: @status-cancelled; } } // ========== 卡片主体 ========== .card-body { padding: 0 28rpx; } .patient-row { margin-bottom: 16rpx; } .patient-info { display: flex; align-items: center; gap: 20rpx; } .patient-avatar { width: 72rpx; height: 72rpx; background: linear-gradient(135deg, @accent-gradient-start, @accent-gradient-end); border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .avatar-text { font-size: 28rpx; font-weight: 600; color: @text-primary; } .patient-detail { flex: 1; display: flex; flex-direction: column; gap: 6rpx; } .patient-name-row { display: flex; align-items: center; gap: 12rpx; } .patient-name { font-size: 30rpx; font-weight: 600; color: @text-primary; } .patient-gender { font-size: 22rpx; padding: 2rpx 10rpx; border-radius: 6rpx; background-color: rgba(107, 122, 255, 0.15); color: @accent-secondary; &.male { background-color: rgba(76, 110, 245, 0.15); color: @accent-primary; } &.female { background-color: rgba(255, 107, 107, 0.15); color: @status-cancelled; } } .patient-age { font-size: 22rpx; color: @text-secondary; } .patient-phone { font-size: 24rpx; color: @text-muted; } .info-divider { height: 1rpx; background: linear-gradient(to right, transparent, @divider-color, transparent); margin: 16rpx 0; } .info-item { display: flex; align-items: flex-start; gap: 12rpx; margin-bottom: 12rpx; } .info-content { display: flex; flex-direction: column; gap: 4rpx; } .hospital-name { font-size: 26rpx; color: @text-primary; font-weight: 500; } .department-name { font-size: 24rpx; color: @text-secondary; } .service-name { font-size: 26rpx; color: @text-secondary; } .time-text { font-size: 26rpx; color: @text-secondary; } .attendant-name { font-size: 26rpx; color: @text-secondary; } // ========== 卡片底部 ========== .card-footer { display: flex; align-items: center; justify-content: space-between; padding: 20rpx 28rpx 24rpx; margin-top: 8rpx; border-top: 1rpx solid rgba(42, 51, 102, 0.5); } .fee-section { display: flex; align-items: baseline; gap: 8rpx; } .fee-label { font-size: 24rpx; color: @text-muted; } .fee-value { font-size: 36rpx; font-weight: 700; color: @status-pending; } .action-buttons { display: flex; gap: 16rpx; } .btn { display: inline-flex; align-items: center; justify-content: center; padding: 14rpx 32rpx; 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: @text-primary; box-shadow: 0 4rpx 16rpx rgba(76, 110, 245, 0.3); } .btn-secondary { background-color: transparent; color: @text-secondary; border: 1rpx solid @border-color; &:active { background-color: rgba(107, 122, 255, 0.1); } } // ========== 加载更多 ========== .load-more { display: flex; align-items: center; justify-content: center; padding: 40rpx 20rpx; } .no-more { font-size: 24rpx; color: @text-muted; }