business.scss 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270
  1. /* 业务通用样式 - 列表卡片 (项目列表、待办列表等) */
  2. .common-list-card {
  3. background-color: #ffffff;
  4. border-radius: 32rpx;
  5. padding: 32rpx 28rpx;
  6. margin-bottom: 28rpx;
  7. box-shadow: 0 10rpx 30rpx rgba(0, 0, 0, 0.04);
  8. position: relative;
  9. overflow: hidden;
  10. transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  11. border: 1rpx solid rgba(241, 245, 249, 0.8);
  12. &::before {
  13. content: '';
  14. position: absolute;
  15. left: 0;
  16. top: 0;
  17. bottom: 0;
  18. width: 6rpx;
  19. background: linear-gradient(180deg, #3b82f6 0%, #60a5fa 100%);
  20. opacity: 0.8;
  21. }
  22. .card-header {
  23. display: flex;
  24. justify-content: space-between;
  25. align-items: flex-start;
  26. margin-bottom: 24rpx;
  27. padding-bottom: 0;
  28. border-bottom: none;
  29. .title {
  30. font-size: 32rpx;
  31. font-weight: 600;
  32. color: #1e293b;
  33. flex: 1;
  34. padding-right: 140rpx; // 为右上角角标留出空间
  35. line-height: 1.5;
  36. overflow: hidden;
  37. text-overflow: ellipsis;
  38. display: -webkit-box;
  39. -webkit-line-clamp: 2;
  40. -webkit-box-orient: vertical;
  41. line-clamp: 2;
  42. white-space: normal;
  43. letter-spacing: 0.4rpx;
  44. }
  45. // 统一样式:右上角固定的纯色背景角标
  46. .status-badge, .status-tag {
  47. position: absolute;
  48. top: 0;
  49. right: 0;
  50. padding: 10rpx 28rpx;
  51. font-size: 20rpx;
  52. font-weight: 800;
  53. color: #ffffff;
  54. border-bottom-left-radius: 32rpx;
  55. z-index: 5;
  56. line-height: 1.4;
  57. letter-spacing: 2rpx;
  58. text-transform: uppercase;
  59. box-shadow: -4rpx 4rpx 12rpx rgba(0, 0, 0, 0.05);
  60. &.primary, &.status-10 { background: linear-gradient(135deg, #4f46e5 0%, #3b82f6 100%); }
  61. &.success, &.status-done, &.status-20 { background: linear-gradient(135deg, #059669 0%, #10b981 100%); }
  62. &.error, &.status-reject, &.status-40 { background: linear-gradient(135deg, #dc2626 0%, #ef4444 100%); }
  63. &.warning, &.status-undo, &.status-30 { background: linear-gradient(135deg, #d97706 0%, #f59e0b 100%); }
  64. &.info, &.status-ongoing, &.status-05 { background: linear-gradient(135deg, #475569 0%, #94a3b8 100%); }
  65. }
  66. }
  67. .card-body {
  68. .info-item {
  69. display: flex;
  70. padding: 12rpx 0;
  71. border-bottom: none;
  72. font-size: 28rpx;
  73. line-height: 1.5;
  74. align-items: center;
  75. &:last-child {
  76. padding-bottom: 0;
  77. }
  78. .label {
  79. color: #64748b;
  80. width: 180rpx;
  81. flex-shrink: 0;
  82. font-weight: 400;
  83. }
  84. .value {
  85. color: #334155;
  86. flex: 1;
  87. text-align: right;
  88. word-break: break-all;
  89. font-weight: 400;
  90. }
  91. .amount {
  92. color: #3b82f6;
  93. font-weight: 600;
  94. font-family: 'Inter', sans-serif;
  95. font-size: 34rpx;
  96. }
  97. }
  98. }
  99. .card-footer {
  100. margin-top: 24rpx;
  101. padding-top: 24rpx;
  102. border-top: 1rpx solid #f1f5f9;
  103. display: flex;
  104. justify-content: flex-end;
  105. }
  106. }
  107. /* 业务通用样式 - 详情页分块卡片 */
  108. .common-section-card {
  109. background-color: #ffffff;
  110. border-radius: 28rpx;
  111. padding: 32rpx;
  112. margin-bottom: 28rpx;
  113. box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.03);
  114. .section-title {
  115. font-size: 32rpx;
  116. font-weight: 600;
  117. color: #1e293b;
  118. margin-bottom: 32rpx;
  119. padding-left: 24rpx;
  120. position: relative;
  121. letter-spacing: 0.5rpx;
  122. &::before {
  123. content: '';
  124. position: absolute;
  125. left: 0;
  126. top: 50%;
  127. transform: translateY(-50%);
  128. width: 8rpx;
  129. height: 32rpx;
  130. background: linear-gradient(180deg, #3b82f6 0%, #60a5fa 100%);
  131. border-radius: 4rpx;
  132. }
  133. }
  134. .info-row {
  135. display: flex;
  136. justify-content: space-between;
  137. padding: 20rpx 0;
  138. border-bottom: 1rpx solid #f1f5f9;
  139. font-size: 28rpx;
  140. &:last-child {
  141. border-bottom: none;
  142. padding-bottom: 0;
  143. }
  144. .label {
  145. color: #64748b;
  146. width: 200rpx;
  147. flex-shrink: 0;
  148. font-weight: 400;
  149. }
  150. .value {
  151. color: #1e293b;
  152. flex: 1;
  153. text-align: right;
  154. word-break: break-all;
  155. font-weight: 600;
  156. line-height: 1.5;
  157. }
  158. &.column {
  159. flex-direction: column;
  160. align-items: flex-start;
  161. .label {
  162. margin-bottom: 16rpx;
  163. color: #64748b;
  164. }
  165. .value {
  166. text-align: left !important;
  167. width: 100%;
  168. }
  169. }
  170. .remark {
  171. background-color: #f8fafc;
  172. padding: 24rpx;
  173. border-radius: 16rpx;
  174. font-size: 26rpx;
  175. line-height: 1.6;
  176. color: #475569;
  177. min-height: 100rpx;
  178. width: 100%;
  179. box-sizing: border-box;
  180. border: 1rpx solid #f1f5f9;
  181. }
  182. }
  183. }
  184. /* 列表进入动画 */
  185. .animate-fade-in {
  186. animation: fadeIn 0.4s ease both;
  187. }
  188. @keyframes fadeIn {
  189. from {
  190. opacity: 0;
  191. transform: translateY(20rpx);
  192. }
  193. to {
  194. opacity: 1;
  195. transform: translateY(0);
  196. }
  197. }
  198. /* 业务通用样式 - 统一附件列表样式 (项目文档) */
  199. .common-file-list {
  200. .file-item {
  201. display: flex;
  202. align-items: center;
  203. padding: 28rpx 0;
  204. border-bottom: 1rpx solid #f1f5f9;
  205. &:last-child {
  206. border-bottom: none;
  207. }
  208. .file-info {
  209. flex: 1;
  210. display: flex;
  211. flex-direction: column;
  212. .f-name {
  213. font-size: 28rpx;
  214. color: #1e293b;
  215. font-weight: 700;
  216. margin-bottom: 16rpx;
  217. word-break: break-all;
  218. line-height: 1.4;
  219. }
  220. .f-meta {
  221. display: flex;
  222. justify-content: space-between;
  223. align-items: center;
  224. font-size: 22rpx;
  225. .f-type {
  226. color: #3b82f6;
  227. background-color: #eff6ff;
  228. padding: 6rpx 16rpx;
  229. border-radius: 100rpx;
  230. font-weight: 700;
  231. }
  232. .f-date {
  233. color: #94a3b8;
  234. font-weight: 500;
  235. }
  236. }
  237. }
  238. }
  239. }