TaskDetailModal.scss 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253
  1. $neon-green: #00d6c0;
  2. $neon-blue: #00fff4;
  3. $neon-cyan: #00ffe6;
  4. .task-detail-container {
  5. width: 100%;
  6. height: 100%;
  7. // 主要内容区域
  8. display: grid;
  9. grid-template-columns: 750px 1fr;
  10. grid-template-rows: 1fr 176px;
  11. grid-template-areas:
  12. 'robot content'
  13. 'task-list task-list';
  14. gap: 40px;
  15. .robot-section {
  16. grid-area: robot;
  17. display: flex;
  18. flex-direction: column;
  19. align-items: center;
  20. gap: 30px;
  21. padding: 100px 0;
  22. .section-title {
  23. font-size: 48px;
  24. color: $neon-cyan;
  25. font-weight: 600;
  26. text-align: center;
  27. line-height: 72px;
  28. letter-spacing: 2px;
  29. }
  30. .robot-container {
  31. position: relative;
  32. margin-top: 40px;
  33. padding-top: 40px;
  34. display: flex;
  35. flex-direction: column;
  36. justify-content: center;
  37. .robot-image {
  38. width: 486px;
  39. height: 438px;
  40. margin-left: 20px;
  41. }
  42. .placeholder-image {
  43. width: 100%;
  44. height: 100%;
  45. background: transparent;
  46. }
  47. .robot-pedestal {
  48. width: 512px;
  49. height: 83px;
  50. }
  51. .robot-status {
  52. position: absolute;
  53. top: 10px;
  54. right: 10px;
  55. display: flex;
  56. gap: 16px;
  57. .status-dot {
  58. width: 16px;
  59. height: 16px;
  60. border-radius: 50%;
  61. animation: scale-pulse 1.5s infinite ease-in-out;
  62. &:nth-child(1) {
  63. background: #dd3131;
  64. }
  65. &:nth-child(2) {
  66. background: #fa8b0d;
  67. animation-delay: 0.4s;
  68. }
  69. &:nth-child(3) {
  70. background: #fdd330;
  71. animation-delay: 0.8s;
  72. }
  73. }
  74. }
  75. }
  76. .stats-section {
  77. width: 100%;
  78. margin-top: 80px;
  79. display: flex;
  80. flex-direction: column;
  81. align-items: center;
  82. gap: 40px;
  83. .stat-item {
  84. display: flex;
  85. align-items: center;
  86. gap: 10px;
  87. .stat-label {
  88. color: $neon-cyan;
  89. font-weight: 600;
  90. font-size: 40px;
  91. line-height: 72px;
  92. letter-spacing: 2px;
  93. white-space: nowrap;
  94. }
  95. .number-container {
  96. display: flex;
  97. gap: 10px;
  98. .number-item {
  99. width: 82px;
  100. height: 95px;
  101. padding-bottom: 6px;
  102. background: url('@/assets/images/number_box.png');
  103. background-size: 100% 100%;
  104. display: flex;
  105. align-items: center;
  106. justify-content: center;
  107. font-weight: 600;
  108. font-size: 73px;
  109. line-height: 72px;
  110. letter-spacing: 2px;
  111. color: $neon-cyan;
  112. }
  113. }
  114. .stat-unit {
  115. color: $neon-cyan;
  116. font-weight: 600;
  117. font-size: 40px;
  118. line-height: 72px;
  119. letter-spacing: 2px;
  120. white-space: nowrap;
  121. }
  122. }
  123. }
  124. }
  125. .content-section {
  126. grid-area: content;
  127. height: 100%;
  128. display: flex;
  129. flex-direction: column;
  130. gap: 30px;
  131. border: 1px solid $neon-cyan;
  132. border-left-color: #086f6a;
  133. border-right-color: #086f6a;
  134. // border-radius: 8px;
  135. padding-bottom: 20px;
  136. overflow: hidden;
  137. }
  138. .task-list-section {
  139. grid-area: task-list;
  140. width: calc(100% - 40px);
  141. height: 176px;
  142. margin: 0 0 0 auto;
  143. padding: 20px 30px;
  144. border-top: 2px solid rgba(0, 255, 230, 0.5);
  145. border-bottom: 2px solid rgba(0, 255, 230, 0.5);
  146. background: radial-gradient(ellipse at center, transparent 60%, rgba(9, 51, 56, 0.8) 100%);
  147. .task-list-container {
  148. height: 100%;
  149. display: flex;
  150. overflow-x: auto;
  151. &::-webkit-scrollbar {
  152. display: none;
  153. }
  154. .task-item {
  155. flex-shrink: 0;
  156. width: 408px;
  157. display: flex;
  158. justify-content: center;
  159. align-items: center;
  160. gap: 10px;
  161. min-width: 150px;
  162. padding: 20px 0;
  163. border-top: 1px solid rgba(0, 255, 230, 0.3);
  164. border-left: 1px solid rgba(0, 255, 230, 0.3);
  165. cursor: pointer;
  166. &:last-child {
  167. border-right: 1px solid rgba(0, 255, 230, 0.3);
  168. }
  169. &.is-selected {
  170. background: rgba(0, 255, 230, 0.1);
  171. }
  172. .task-title {
  173. display: flex;
  174. align-items: center;
  175. font-weight: 400;
  176. font-size: 32px;
  177. color: $neon-cyan;
  178. line-height: 72px;
  179. letter-spacing: 1px;
  180. .clock-icon {
  181. color: $neon-cyan;
  182. margin-right: 8px;
  183. }
  184. }
  185. .task-time {
  186. font-weight: 400;
  187. font-size: 32px;
  188. color: $neon-blue;
  189. }
  190. .task-status {
  191. width: 28px;
  192. height: 28px;
  193. margin-left: 32px;
  194. border-radius: 50%;
  195. &.success {
  196. background: #13ccff;
  197. }
  198. &.warning,
  199. &.info {
  200. background: #00ff8c;
  201. }
  202. &.danger {
  203. background: #f72626;
  204. }
  205. }
  206. }
  207. }
  208. }
  209. }
  210. // 状态点动画
  211. @keyframes scale-pulse {
  212. 0%,
  213. 100% {
  214. transform: scale(1);
  215. }
  216. 50% {
  217. transform: scale(1.5);
  218. }
  219. }