/* pages/order/index.less */ @bg: #f7f8fc; @card: #ffffff; @dark: #1a1a2e; @text: #3a3d5c; @muted: #a0a3bd; @border: #f0f1f5; @accent: #667eea; @accent-end: #764ba2; @pending: #e6a23c; @confirmed: #409eff; @in-progress: #67c23a; @completed: #7c5cfc; @cancelled: #b0b0b0; page { background-color: @bg; } .page { min-height: 100vh; display: flex; flex-direction: column; background: @bg; } /* === 顶部 === */ .header { background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%); padding: 60rpx 40rpx 70rpx; position: relative; overflow: hidden; &::after { content: ''; position: absolute; top: -80rpx; right: -60rpx; width: 280rpx; height: 280rpx; border-radius: 50%; background: rgba(255, 255, 255, 0.03); } &::before { content: ''; position: absolute; bottom: -120rpx; left: -80rpx; width: 200rpx; height: 200rpx; border-radius: 50%; background: rgba(255, 255, 255, 0.02); } } .header-content { position: relative; z-index: 1; } .header-title { display: block; font-size: 44rpx; font-weight: 700; color: #fff; letter-spacing: 2rpx; margin-bottom: 12rpx; } .header-sub { display: block; font-size: 26rpx; color: rgba(255, 255, 255, 0.5); font-weight: 300; letter-spacing: 1rpx; } /* === 筛选栏 === */ .filter-bar { background: @card; padding: 20rpx 0; border-bottom: 1rpx solid @border; } .filter-scroll { white-space: nowrap; } .filter-list { display: inline-flex; padding: 0 24rpx; gap: 16rpx; } .filter-tag { display: inline-flex; align-items: center; padding: 12rpx 28rpx; background: @bg; border-radius: 28rpx; font-size: 24rpx; color: @muted; border: 1rpx solid transparent; transition: all 0.25s; &.active { background: linear-gradient(135deg, @accent, @accent-end); color: #fff; border-color: transparent; box-shadow: 0 4rpx 16rpx rgba(102, 126, 234, 0.3); .filter-count { background: rgba(255, 255, 255, 0.25); color: #fff; } } } .filter-count { min-width: 32rpx; height: 32rpx; padding: 0 8rpx; margin-left: 8rpx; background: rgba(0, 0, 0, 0.06); border-radius: 16rpx; font-size: 20rpx; color: @muted; display: inline-flex; align-items: center; justify-content: center; font-weight: 600; } /* === 列表区域 === */ .list-area { flex: 1; overflow: hidden; } .list-scroll { height: 100%; padding: 0 24rpx; } .loading-box, .empty-box { display: flex; align-items: center; justify-content: center; padding: 200rpx 40rpx; } .loading-text { color: @muted !important; font-size: 26rpx !important; } .empty-text { color: @muted !important; font-size: 28rpx !important; } .empty-btn { margin-top: 24rpx; padding: 14rpx 48rpx; background: linear-gradient(135deg, @accent, @accent-end); color: #fff; font-size: 26rpx; border-radius: 28rpx; display: inline-block; } /* === 订单卡片 === */ .card-list { padding: 24rpx 0 40rpx; } .order-card { margin-bottom: 20rpx; background: @card; border-radius: 20rpx; box-shadow: 0 4rpx 24rpx rgba(0, 0, 0, 0.04); overflow: hidden; &:active { opacity: 0.92; } } .card-top { display: flex; justify-content: flex-end; align-items: center; padding: 20rpx 28rpx 0; } .order-no { font-size: 24rpx; color: @muted; font-weight: 500; font-family: 'DIN Alternate', 'Helvetica Neue', monospace; } .status-badge { font-size: 22rpx; padding: 6rpx 20rpx; border-radius: 24rpx; font-weight: 500; } .status-pending { background: #fff8e6; color: @pending; } .status-confirmed { background: #ecf5ff; color: @confirmed; } .status-in_progress { background: #f0f9eb; color: @in-progress; } .status-completed { background: #f4f0ff; color: @completed; } .status-cancelled { background: #f5f5f5; color: @cancelled; } /* === 卡片主体 === */ .card-main { padding: 0 28rpx; } .patient-line { display: flex; align-items: center; gap: 20rpx; margin-bottom: 16rpx; } .patient-avatar { width: 72rpx; height: 72rpx; border-radius: 50%; background: linear-gradient(135deg, @accent, @accent-end); display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .avatar-char { font-size: 28rpx; font-weight: 700; color: #fff; } .patient-meta { flex: 1; } .patient-name-row { display: flex; align-items: center; gap: 12rpx; margin-bottom: 4rpx; } .patient-name { font-size: 30rpx; font-weight: 600; color: @dark; } .patient-sex { font-size: 20rpx; padding: 2rpx 10rpx; border-radius: 8rpx; font-weight: 500; &.male { background: rgba(102, 126, 234, 0.1); color: @accent; } &.female { background: rgba(234, 102, 150, 0.1); color: #ea6696; } } .patient-age { font-size: 22rpx; color: @muted; } .patient-phone { font-size: 24rpx; color: @muted; } .divider { height: 1rpx; background: @border; margin: 16rpx 0; } .info-line { display: flex; align-items: baseline; margin-bottom: 12rpx; } .line-label { font-size: 24rpx; color: @muted; width: 64rpx; flex-shrink: 0; } .line-value { font-size: 26rpx; color: @text; flex: 1; } /* === 卡片底部 === */ .card-bottom { display: flex; justify-content: space-between; align-items: center; padding: 20rpx 28rpx 24rpx; margin-top: 8rpx; border-top: 1rpx solid @border; } .fee-area { display: flex; align-items: baseline; gap: 8rpx; } .fee-label { font-size: 24rpx; color: @muted; } .fee-amount { font-size: 36rpx; font-weight: 700; color: @dark; font-family: 'DIN Alternate', 'Helvetica Neue', sans-serif; } .action-area { display: flex; gap: 14rpx; } .action-btn { padding: 14rpx 32rpx; border-radius: 24rpx; font-size: 24rpx; font-weight: 500; transition: all 0.2s; &:active { transform: scale(0.95); } } .btn-solid { background: linear-gradient(135deg, @accent, @accent-end); color: #fff; box-shadow: 0 4rpx 16rpx rgba(102, 126, 234, 0.25); } .btn-ghost { background: @bg; color: @muted; border: 1rpx solid @border; } /* === 加载更多 === */ .load-more { display: flex; align-items: center; justify-content: center; padding: 32rpx 20rpx; } .no-more { font-size: 24rpx; color: @muted; }