flow.scss 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. .flow-list {
  2. display: flex;
  3. flex-direction: column;
  4. }
  5. .flow-item {
  6. position: relative;
  7. display: flex;
  8. gap: 24rpx;
  9. padding-bottom: 28rpx;
  10. }
  11. .flow-item:last-child {
  12. padding-bottom: 0;
  13. }
  14. .flow-item:not(:last-child) .flow-rail::after {
  15. content: '';
  16. position: absolute;
  17. left: 50%;
  18. top: 72rpx;
  19. bottom: -28rpx;
  20. width: 4rpx;
  21. transform: translateX(-50%);
  22. background: linear-gradient(180deg, rgba(22, 163, 74, 0.45), rgba(220, 235, 228, 0.9));
  23. border-radius: 4rpx;
  24. }
  25. .flow-rail {
  26. position: relative;
  27. width: 72rpx;
  28. flex-shrink: 0;
  29. display: flex;
  30. justify-content: center;
  31. }
  32. .flow-dot {
  33. width: 72rpx;
  34. height: 72rpx;
  35. border-radius: 24rpx;
  36. display: flex;
  37. align-items: center;
  38. justify-content: center;
  39. font-size: 32rpx;
  40. color: #fff;
  41. box-shadow: 0 12rpx 28rpx rgba(21, 128, 61, 0.2);
  42. position: relative;
  43. z-index: 1;
  44. }
  45. .flow-item.done .flow-dot {
  46. background: linear-gradient(145deg, #4ade80, #22c55e);
  47. }
  48. .flow-item.warn .flow-dot {
  49. background: linear-gradient(145deg, #ecc06a, #d6a343);
  50. box-shadow: 0 12rpx 28rpx rgba(214, 163, 67, 0.28);
  51. }
  52. .flow-item.danger .flow-dot {
  53. background: linear-gradient(145deg, #ef7a7a, #ef4444);
  54. box-shadow: 0 12rpx 28rpx rgba(209, 67, 67, 0.25);
  55. }
  56. .flow-card {
  57. flex: 1;
  58. min-width: 0;
  59. border-radius: 28rpx;
  60. padding: 22rpx 24rpx;
  61. background: linear-gradient(160deg, #f7fbf9 0%, #ffffff 55%);
  62. border: 1rpx solid #e4eee9;
  63. box-shadow: 0 8rpx 24rpx rgba(20, 55, 40, 0.04);
  64. }
  65. .flow-item.warn .flow-card {
  66. background: linear-gradient(160deg, #fff9ef 0%, #ffffff 60%);
  67. border-color: #f0e0b8;
  68. }
  69. .flow-item.danger .flow-card {
  70. background: linear-gradient(160deg, #fff4f4 0%, #ffffff 60%);
  71. border-color: #f3d0d0;
  72. }
  73. .flow-card .flow-top {
  74. display: flex;
  75. align-items: flex-start;
  76. justify-content: space-between;
  77. gap: 16rpx;
  78. margin-bottom: 8rpx;
  79. }
  80. .flow-card .flow-title {
  81. font-size: 26rpx;
  82. font-weight: 700;
  83. color: #173128;
  84. line-height: 1.35;
  85. }
  86. .flow-card .flow-badge {
  87. flex-shrink: 0;
  88. font-size: 20rpx;
  89. font-weight: 700;
  90. padding: 4rpx 14rpx;
  91. border-radius: 999rpx;
  92. }
  93. .flow-item.done .flow-badge {
  94. background: rgba(22, 163, 74, 0.12);
  95. color: #22c55e;
  96. }
  97. .flow-item.warn .flow-badge {
  98. background: rgba(214, 163, 67, 0.16);
  99. color: #8f6718;
  100. }
  101. .flow-item.danger .flow-badge {
  102. background: rgba(209, 67, 67, 0.12);
  103. color: #b13535;
  104. }
  105. .flow-card .flow-desc {
  106. font-size: 24rpx;
  107. color: #5d746a;
  108. line-height: 1.5;
  109. }
  110. .flow-card .flow-meta {
  111. margin-top: 16rpx;
  112. display: flex;
  113. flex-wrap: wrap;
  114. gap: 16rpx;
  115. align-items: center;
  116. }
  117. .flow-card .flow-meta .chip {
  118. display: inline-flex;
  119. align-items: center;
  120. gap: 8rpx;
  121. font-size: 22rpx;
  122. color: #5f7a6d;
  123. background: rgba(255, 255, 255, 0.9);
  124. border: 1rpx solid #e8f0ec;
  125. border-radius: 999rpx;
  126. padding: 4rpx 16rpx;
  127. }