report.wxss 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. .loading-box.data-v-d9ddd4c0 {
  2. display: flex;
  3. justify-content: center;
  4. align-items: center;
  5. height: 100vh;
  6. color: #999;
  7. }
  8. .container.data-v-d9ddd4c0 {
  9. min-height: 100vh;
  10. background-color: #F8F9FB;
  11. display: flex;
  12. flex-direction: column;
  13. }
  14. .scroll-body.data-v-d9ddd4c0 {
  15. flex: 1;
  16. padding: 30rpx 40rpx;
  17. box-sizing: border-box;
  18. }
  19. .report-card.data-v-d9ddd4c0 {
  20. background: #FFF;
  21. border-radius: 32rpx;
  22. padding: 50rpx 40rpx;
  23. margin-bottom: 30rpx;
  24. box-shadow: 0 8rpx 30rpx rgba(0, 0, 0, 0.03);
  25. }
  26. /* 维度详情 */
  27. .detail-card .section-header.data-v-d9ddd4c0 {
  28. display: flex;
  29. justify-content: space-between;
  30. align-items: center;
  31. margin-bottom: 30rpx;
  32. }
  33. .detail-card .section-header .subtitle.data-v-d9ddd4c0 {
  34. font-size: 24rpx;
  35. color: #999;
  36. }
  37. .ability-detail-list.data-v-d9ddd4c0 {
  38. display: flex;
  39. flex-direction: column;
  40. gap: 24rpx;
  41. }
  42. .ability-detail-item.data-v-d9ddd4c0 {
  43. display: flex;
  44. justify-content: space-between;
  45. align-items: center;
  46. padding: 30rpx;
  47. background: #F8F9FB;
  48. border-radius: 20rpx;
  49. }
  50. .ability-detail-item.data-v-d9ddd4c0:active {
  51. opacity: 0.8;
  52. }
  53. .ability-detail-item .item-left.data-v-d9ddd4c0 {
  54. display: flex;
  55. flex-direction: column;
  56. gap: 10rpx;
  57. }
  58. .ability-detail-item .item-left .a-name.data-v-d9ddd4c0 {
  59. font-size: 30rpx;
  60. font-weight: bold;
  61. color: #333;
  62. }
  63. .ability-detail-item .item-left .status-tag.data-v-d9ddd4c0 {
  64. font-size: 20rpx;
  65. padding: 4rpx 12rpx;
  66. border-radius: 6rpx;
  67. width: -webkit-fit-content;
  68. width: fit-content;
  69. }
  70. .ability-detail-item .item-left .status-tag.pass.data-v-d9ddd4c0 {
  71. background: rgba(82, 196, 26, 0.1);
  72. color: #52c41a;
  73. }
  74. .ability-detail-item .item-left .status-tag.fail.data-v-d9ddd4c0 {
  75. background: rgba(255, 77, 79, 0.1);
  76. color: #ff4d4f;
  77. }
  78. .ability-detail-item .item-right.data-v-d9ddd4c0 {
  79. display: flex;
  80. align-items: center;
  81. }
  82. .ability-detail-item .item-right .a-score.data-v-d9ddd4c0 {
  83. font-size: 40rpx;
  84. font-weight: bold;
  85. color: #1F6CFF;
  86. }
  87. .ability-detail-item .item-right .a-unit.data-v-d9ddd4c0 {
  88. font-size: 24rpx;
  89. color: #999;
  90. margin-left: 4rpx;
  91. margin-right: 10rpx;
  92. }
  93. .ability-detail-item .item-right .arrow-icon.data-v-d9ddd4c0 {
  94. width: 32rpx;
  95. height: 32rpx;
  96. opacity: 0.3;
  97. }
  98. /* 仪表盘 */
  99. .gauge-container.data-v-d9ddd4c0 {
  100. height: 440rpx;
  101. display: flex;
  102. justify-content: center;
  103. align-items: center;
  104. }
  105. .gauge-main.data-v-d9ddd4c0 {
  106. width: 400rpx;
  107. height: 400rpx;
  108. position: relative;
  109. }
  110. .gauge-main .gauge-base.data-v-d9ddd4c0 {
  111. position: absolute;
  112. inset: 0;
  113. border: 20rpx solid #F0F2F5;
  114. border-radius: 50%;
  115. -webkit-clip-path: polygon(0 100%, 0 0, 100% 0, 100% 100%, 50% 50%);
  116. clip-path: polygon(0 100%, 0 0, 100% 0, 100% 100%, 50% 50%);
  117. transform: rotate(135deg);
  118. }
  119. .gauge-main .gauge-progress-bar.data-v-d9ddd4c0 {
  120. position: absolute;
  121. inset: 0;
  122. border: 20rpx solid #1F6CFF;
  123. border-radius: 50%;
  124. -webkit-clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 100%, 0 100%);
  125. clip-path: polygon(50% 50%, 0 0, 100% 0, 100% 100%, 0 100%);
  126. transition: transform 1s cubic-bezier(0.4, 0, 0.2, 1);
  127. }
  128. .gauge-main .gauge-ticks.data-v-d9ddd4c0 {
  129. position: absolute;
  130. inset: 30rpx;
  131. }
  132. .gauge-main .gauge-ticks .tick.data-v-d9ddd4c0 {
  133. position: absolute;
  134. top: 0;
  135. left: 50%;
  136. width: 2rpx;
  137. height: 12rpx;
  138. background: #EEE;
  139. transform-origin: center 130rpx;
  140. }
  141. .gauge-main .gauge-needle-box.data-v-d9ddd4c0 {
  142. position: absolute;
  143. inset: 0;
  144. display: flex;
  145. justify-content: center;
  146. }
  147. .gauge-main .gauge-needle-box .needle.data-v-d9ddd4c0 {
  148. width: 16rpx;
  149. height: 110rpx;
  150. background: #1F6CFF;
  151. -webkit-clip-path: polygon(50% 0, 100% 100%, 0 100%);
  152. clip-path: polygon(50% 0, 100% 100%, 0 100%);
  153. margin-top: 50rpx;
  154. transform-origin: center 110rpx;
  155. transition: transform 1s cubic-bezier(0.4, 0, 0.2, 1);
  156. }
  157. .gauge-main .score-display.data-v-d9ddd4c0 {
  158. position: absolute;
  159. bottom: 60rpx;
  160. left: 50%;
  161. transform: translateX(-50%);
  162. text-align: center;
  163. }
  164. .gauge-main .score-display .num.data-v-d9ddd4c0 {
  165. font-size: 64rpx;
  166. font-weight: bold;
  167. color: #1F6CFF;
  168. display: block;
  169. line-height: 1;
  170. margin-bottom: 6rpx;
  171. }
  172. .gauge-main .score-display .total.data-v-d9ddd4c0 {
  173. font-size: 24rpx;
  174. color: #999;
  175. }
  176. .job-name.data-v-d9ddd4c0 {
  177. font-size: 40rpx;
  178. font-weight: bold;
  179. color: #1A1A1A;
  180. text-align: center;
  181. margin-top: 40rpx;
  182. margin-bottom: 30rpx;
  183. }
  184. .report-meta.data-v-d9ddd4c0 {
  185. display: flex;
  186. justify-content: space-between;
  187. font-size: 26rpx;
  188. color: #999;
  189. }
  190. /* 雷达图核心容器 */
  191. .spider-chart-box.data-v-d9ddd4c0 {
  192. height: 600rpx;
  193. width: 100%;
  194. position: relative;
  195. margin-top: 40rpx;
  196. display: flex;
  197. justify-content: center;
  198. align-items: center;
  199. }
  200. .pentagon-grids.data-v-d9ddd4c0 {
  201. position: absolute;
  202. inset: 0;
  203. display: flex;
  204. justify-content: center;
  205. align-items: center;
  206. }
  207. .pentagon-grids .p-grid.data-v-d9ddd4c0 {
  208. position: absolute;
  209. width: 100%;
  210. height: 100%;
  211. background: none;
  212. border: 1.5rpx solid #F0F2F5;
  213. box-sizing: border-box;
  214. }
  215. .axes.data-v-d9ddd4c0 {
  216. position: absolute;
  217. inset: 0;
  218. }
  219. .axes .axis.data-v-d9ddd4c0 {
  220. position: absolute;
  221. top: 50%;
  222. left: 50%;
  223. width: 50%;
  224. height: 1rpx;
  225. background: #F0F2F5;
  226. transform-origin: left center;
  227. }
  228. .data-area.data-v-d9ddd4c0 {
  229. position: absolute;
  230. inset: 0;
  231. }
  232. .data-area .data-polygon.data-v-d9ddd4c0 {
  233. position: absolute;
  234. inset: 0;
  235. background: rgba(31, 108, 255, 0.15);
  236. border: 3rpx solid #1F6CFF;
  237. transition: all 1s ease-in-out;
  238. }
  239. .data-area .node-point.data-v-d9ddd4c0 {
  240. position: absolute;
  241. width: 0;
  242. height: 0;
  243. display: flex;
  244. flex-direction: column;
  245. align-items: center;
  246. justify-content: center;
  247. }
  248. .data-area .node-point.data-v-d9ddd4c0::after {
  249. content: "";
  250. position: absolute;
  251. width: 12rpx;
  252. height: 12rpx;
  253. background: #1F6CFF;
  254. border-radius: 50%;
  255. border: 4rpx solid #FFF;
  256. box-shadow: 0 0 10rpx rgba(31, 108, 255, 0.3);
  257. transform: translate(-50%, -50%);
  258. }
  259. .data-area .node-point .v-label.data-v-d9ddd4c0 {
  260. font-size: 24rpx;
  261. color: #333;
  262. white-space: nowrap;
  263. }
  264. .data-area .node-point .v-score.data-v-d9ddd4c0 {
  265. font-size: 20rpx;
  266. color: #1F6CFF;
  267. white-space: nowrap;
  268. margin-top: 40rpx;
  269. }
  270. .card-anim.data-v-d9ddd4c0 {
  271. animation: slideUp-d9ddd4c0 0.8s ease-out;
  272. }
  273. @keyframes slideUp-d9ddd4c0 {
  274. from {
  275. transform: translateY(30rpx);
  276. opacity: 0;
  277. }
  278. to {
  279. transform: translateY(0);
  280. opacity: 1;
  281. }
  282. }