与牧同行-小程序用户端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

440 lines
7.6 KiB

  1. .personal-center {
  2. min-height: 100vh;
  3. background: linear-gradient(to bottom, #f5f7fa 0%, #e4e8f0 100%);
  4. padding-bottom: 120rpx;
  5. }
  6. /* 顶部背景 */
  7. .header-bg {
  8. height: 300rpx;
  9. background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  10. position: absolute;
  11. top: 0;
  12. left: 0;
  13. right: 0;
  14. z-index: 1;
  15. border-radius: 0 0 40rpx 40rpx;
  16. }
  17. /* 用户信息卡片 */
  18. .user-card {
  19. position: relative;
  20. z-index: 2;
  21. background: white;
  22. margin: 40rpx;
  23. border-radius: 24rpx;
  24. padding: 40rpx;
  25. box-shadow: 0 10rpx 30rpx rgba(102, 126, 234, 0.15);
  26. display: flex;
  27. align-items: center;
  28. justify-content: space-between;
  29. animation: slideUp 0.6s ease;
  30. }
  31. .user-info {
  32. display: flex;
  33. align-items: center;
  34. flex: 1;
  35. }
  36. .avatar-section {
  37. position: relative;
  38. margin-right: 30rpx;
  39. }
  40. .avatar {
  41. width: 120rpx;
  42. height: 120rpx;
  43. border-radius: 50%;
  44. border: 6rpx solid white;
  45. box-shadow: 0 10rpx 20rpx rgba(0, 0, 0, 0.1);
  46. }
  47. .avatar-badge {
  48. position: absolute;
  49. bottom: 0;
  50. right: 0;
  51. background: #07c160;
  52. width: 36rpx;
  53. height: 36rpx;
  54. border-radius: 50%;
  55. display: flex;
  56. align-items: center;
  57. justify-content: center;
  58. border: 3rpx solid white;
  59. }
  60. .avatar-badge .iconfont {
  61. color: white;
  62. font-size: 20rpx;
  63. }
  64. .user-details {
  65. flex: 1;
  66. }
  67. .user-name {
  68. display: flex;
  69. align-items: center;
  70. margin-bottom: 10rpx;
  71. }
  72. .user-name .name {
  73. font-size: 36rpx;
  74. font-weight: 600;
  75. color: #333;
  76. margin-right: 15rpx;
  77. }
  78. .user-name .iconfont {
  79. color: #667eea;
  80. font-size: 28rpx;
  81. }
  82. .user-phone {
  83. display: flex;
  84. align-items: center;
  85. font-size: 26rpx;
  86. color: #666;
  87. margin-bottom: 15rpx;
  88. }
  89. .user-phone .iconfont {
  90. margin-right: 10rpx;
  91. font-size: 24rpx;
  92. }
  93. .user-tags {
  94. display: flex;
  95. gap: 15rpx;
  96. }
  97. .user-tags .tag {
  98. background: rgba(102, 126, 234, 0.1);
  99. padding: 6rpx 15rpx;
  100. border-radius: 20rpx;
  101. font-size: 22rpx;
  102. color: #667eea;
  103. display: flex;
  104. align-items: center;
  105. }
  106. .user-tags .tag .iconfont {
  107. font-size: 20rpx;
  108. margin-right: 5rpx;
  109. }
  110. .card-arrow .iconfont {
  111. color: #ccc;
  112. font-size: 32rpx;
  113. }
  114. /* 统计数据 */
  115. .stats-grid {
  116. display: grid;
  117. grid-template-columns: repeat(4, 1fr);
  118. gap: 20rpx;
  119. margin: 30rpx 40rpx;
  120. animation: fadeIn 0.8s ease 0.2s both;
  121. }
  122. .stat-item {
  123. background: white;
  124. border-radius: 20rpx;
  125. padding: 30rpx 0;
  126. text-align: center;
  127. box-shadow: 0 5rpx 15rpx rgba(0, 0, 0, 0.05);
  128. transition: all 0.3s ease;
  129. position: relative;
  130. overflow: hidden;
  131. }
  132. .stat-item::before {
  133. content: '';
  134. position: absolute;
  135. top: 0;
  136. left: 0;
  137. right: 0;
  138. height: 4rpx;
  139. background: var(--item-color);
  140. opacity: 0;
  141. transition: opacity 0.3s ease;
  142. }
  143. .stat-item:active {
  144. transform: translateY(-5rpx);
  145. box-shadow: 0 10rpx 25rpx rgba(0, 0, 0, 0.1);
  146. }
  147. .stat-item:active::before {
  148. opacity: 1;
  149. }
  150. .stat-icon .iconfont {
  151. font-size: 44rpx;
  152. margin-bottom: 15rpx;
  153. display: block;
  154. }
  155. .stat-value {
  156. font-size: 36rpx;
  157. font-weight: 700;
  158. color: #333;
  159. margin-bottom: 5rpx;
  160. }
  161. .stat-name {
  162. font-size: 24rpx;
  163. color: #999;
  164. }
  165. /* 快捷操作 */
  166. .quick-actions {
  167. margin: 30rpx 40rpx;
  168. animation: fadeIn 0.8s ease 0.4s both;
  169. }
  170. .section-title {
  171. display: flex;
  172. align-items: center;
  173. font-size: 30rpx;
  174. font-weight: 600;
  175. color: #333;
  176. margin-bottom: 30rpx;
  177. }
  178. .section-title .iconfont {
  179. margin-right: 15rpx;
  180. font-size: 32rpx;
  181. color: #667eea;
  182. }
  183. .actions-grid {
  184. display: grid;
  185. grid-template-columns: repeat(4, 1fr);
  186. gap: 20rpx;
  187. }
  188. .action-item {
  189. text-align: center;
  190. }
  191. .action-icon {
  192. width: 90rpx;
  193. height: 90rpx;
  194. border-radius: 50%;
  195. margin: 0 auto 20rpx;
  196. display: flex;
  197. align-items: center;
  198. justify-content: center;
  199. color: white;
  200. font-size: 40rpx;
  201. box-shadow: 0 10rpx 20rpx rgba(0, 0, 0, 0.1);
  202. transition: transform 0.3s ease;
  203. }
  204. .action-item:active .action-icon {
  205. transform: scale(0.95);
  206. }
  207. .action-name {
  208. font-size: 24rpx;
  209. color: #666;
  210. }
  211. /* 功能模块 */
  212. .modules {
  213. margin: 30rpx 40rpx;
  214. animation: fadeIn 0.8s ease 0.6s both;
  215. }
  216. .module-section {
  217. background: white;
  218. border-radius: 20rpx;
  219. padding: 30rpx;
  220. margin-bottom: 30rpx;
  221. box-shadow: 0 5rpx 15rpx rgba(0, 0, 0, 0.05);
  222. }
  223. .module-items {
  224. margin-top: 20rpx;
  225. }
  226. .module-item {
  227. display: flex;
  228. align-items: center;
  229. justify-content: space-between;
  230. padding: 30rpx 0;
  231. border-bottom: 1rpx solid #f0f0f0;
  232. transition: background-color 0.2s ease;
  233. }
  234. .module-item:active {
  235. background-color: #f8f9fa;
  236. }
  237. .module-item:last-child {
  238. border-bottom: none;
  239. }
  240. .item-left {
  241. display: flex;
  242. align-items: center;
  243. flex: 1;
  244. }
  245. .item-icon {
  246. width: 60rpx;
  247. height: 60rpx;
  248. border-radius: 15rpx;
  249. background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  250. display: flex;
  251. align-items: center;
  252. justify-content: center;
  253. margin-right: 25rpx;
  254. }
  255. .item-icon .iconfont {
  256. color: white;
  257. font-size: 30rpx;
  258. }
  259. .item-info {
  260. flex: 1;
  261. }
  262. .item-name {
  263. font-size: 30rpx;
  264. color: #333;
  265. margin-bottom: 8rpx;
  266. }
  267. .item-desc {
  268. font-size: 24rpx;
  269. color: #999;
  270. margin-bottom: 5rpx;
  271. }
  272. .item-status {
  273. font-size: 22rpx;
  274. padding: 4rpx 12rpx;
  275. border-radius: 12rpx;
  276. background: rgba(255, 107, 107, 0.1);
  277. display: inline-block;
  278. }
  279. .text-orange {
  280. color: #ff9f43;
  281. background: rgba(255, 159, 67, 0.1);
  282. }
  283. .item-right {
  284. display: flex;
  285. align-items: center;
  286. }
  287. .badge {
  288. background: #ff6b6b;
  289. color: white;
  290. font-size: 20rpx;
  291. min-width: 36rpx;
  292. height: 36rpx;
  293. border-radius: 18rpx;
  294. display: flex;
  295. align-items: center;
  296. justify-content: center;
  297. padding: 0 8rpx;
  298. margin-right: 15rpx;
  299. }
  300. .item-right .iconfont {
  301. color: #ccc;
  302. font-size: 28rpx;
  303. }
  304. /* 底部操作 */
  305. .bottom-actions {
  306. margin: 30rpx 40rpx;
  307. animation: fadeIn 0.8s ease 0.8s both;
  308. }
  309. .system-info {
  310. text-align: center;
  311. font-size: 24rpx;
  312. color: #999;
  313. margin-bottom: 40rpx;
  314. display: flex;
  315. flex-direction: column;
  316. gap: 10rpx;
  317. }
  318. .action-buttons {
  319. display: flex;
  320. gap: 20rpx;
  321. }
  322. .btn {
  323. flex: 1;
  324. height: 88rpx;
  325. border-radius: 44rpx;
  326. display: flex;
  327. align-items: center;
  328. justify-content: center;
  329. font-size: 28rpx;
  330. font-weight: 500;
  331. border: none;
  332. transition: all 0.3s ease;
  333. }
  334. .btn:active {
  335. transform: scale(0.98);
  336. }
  337. .btn-setting {
  338. background: white;
  339. color: #667eea;
  340. border: 2rpx solid #667eea;
  341. }
  342. .btn-logout {
  343. background: linear-gradient(135deg, #ff6b6b 0%, #ee5a52 100%);
  344. color: white;
  345. box-shadow: 0 10rpx 20rpx rgba(255, 107, 107, 0.3);
  346. }
  347. .btn .iconfont {
  348. margin-right: 10rpx;
  349. font-size: 28rpx;
  350. }
  351. /* 动画效果 */
  352. @keyframes slideUp {
  353. from {
  354. opacity: 0;
  355. transform: translateY(30rpx);
  356. }
  357. to {
  358. opacity: 1;
  359. transform: translateY(0);
  360. }
  361. }
  362. @keyframes fadeIn {
  363. from {
  364. opacity: 0;
  365. }
  366. to {
  367. opacity: 1;
  368. }
  369. }
  370. /* 响应式调整 */
  371. @media (max-width: 375px) {
  372. .user-card,
  373. .stats-grid,
  374. .quick-actions,
  375. .modules,
  376. .bottom-actions {
  377. margin-left: 30rpx;
  378. margin-right: 30rpx;
  379. }
  380. }