与牧同行-兽医端小程序
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.

360 lines
6.4 KiB

  1. .container-box {
  2. display: flex;
  3. flex-direction: column;
  4. height: 100vh;
  5. overflow: hidden;
  6. }
  7. /* 专家卡片*/
  8. .expert-card {
  9. background-image: linear-gradient(to top, #48c6ef 0%, #6f86d6 100%);
  10. padding: 36rpx 32rpx;
  11. display: flex;
  12. align-items: center;
  13. color: white;
  14. box-shadow: 0 8rpx 24rpx rgba(0, 30, 10, 0.25);
  15. flex-shrink: 0;
  16. position: relative;
  17. }
  18. .avatar-wrapper {
  19. position: relative;
  20. margin-right: 28rpx;
  21. flex-shrink: 0;
  22. }
  23. .avatar {
  24. width: 140rpx;
  25. height: 140rpx;
  26. border-radius: 70rpx;
  27. border: 4rpx solid rgba(255, 255, 255, 0.25);
  28. background-color: #e6f0ea;
  29. box-shadow: 0 6rpx 16rpx rgba(0, 0, 0, 0.15);
  30. transition: transform 0.2s;
  31. }
  32. .avatar:active {
  33. transform: scale(0.98);
  34. }
  35. .online-status {
  36. position: absolute;
  37. bottom: 6rpx;
  38. right: 6rpx;
  39. width: 28rpx;
  40. height: 28rpx;
  41. border-radius: 14rpx;
  42. border: 4rpx solid #1a4b2e;
  43. background-color: #a0a0a0;
  44. transition: background-color 0.2s;
  45. }
  46. .online-status.online {
  47. background-color: #4caf50;
  48. box-shadow: 0 0 0 2rpx rgba(76, 175, 80, 0.3);
  49. }
  50. .online-status.offline {
  51. background-color: #9e9e9e;
  52. }
  53. .info {
  54. flex: 1;
  55. display: flex;
  56. flex-direction: column;
  57. min-width: 0;
  58. }
  59. .name-row {
  60. display: flex;
  61. align-items: center;
  62. margin-bottom: 12rpx;
  63. flex-wrap: wrap;
  64. gap: 16rpx;
  65. }
  66. .name {
  67. font-size: 44rpx;
  68. font-weight: 600;
  69. line-height: 1.2;
  70. letter-spacing: 1rpx;
  71. text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.2);
  72. }
  73. .online-text {
  74. font-size: 24rpx;
  75. background-color: rgba(255, 255, 255, 0.2);
  76. padding: 3rpx 14rpx;
  77. border-radius: 30rpx;
  78. backdrop-filter: blur(4px);
  79. border: 1rpx solid rgba(255, 255, 255, 0.15);
  80. font-weight: 400;
  81. color: #ffecb3;
  82. }
  83. .specialty {
  84. font-size: 26rpx;
  85. opacity: 0.95;
  86. margin-bottom: 16rpx;
  87. display: flex;
  88. align-items: center;
  89. background-color: rgba(255, 255, 255, 0.1);
  90. padding: 8rpx 20rpx;
  91. border-radius: 40rpx;
  92. width: fit-content;
  93. backdrop-filter: blur(4px);
  94. border: 1rpx solid rgba(255, 255, 255, 0.1);
  95. }
  96. .experience-tag {
  97. display: flex;
  98. align-items: center;
  99. background-color: rgba(255, 255, 255, 0.1);
  100. padding: 8rpx 22rpx 8rpx 18rpx;
  101. border-radius: 60rpx;
  102. width: fit-content;
  103. }
  104. .tag-text {
  105. font-size: 26rpx;
  106. font-weight: 400;
  107. }
  108. /* 列表头部 */
  109. .list-header {
  110. padding: 28rpx 32rpx 20rpx;
  111. display: flex;
  112. justify-content: space-between;
  113. align-items: center;
  114. background-color: transparent;
  115. flex-shrink: 0;
  116. }
  117. .list-title-wrap {
  118. display: flex;
  119. align-items: baseline;
  120. gap: 12rpx;
  121. }
  122. .list-title {
  123. font-size: 34rpx;
  124. font-weight: 600;
  125. color: #1f2d3d;
  126. letter-spacing: 0.5rpx;
  127. }
  128. .list-count {
  129. font-size: 28rpx;
  130. color: #5f6b7a;
  131. background-color: #e9ecf0;
  132. padding: 4rpx 16rpx;
  133. border-radius: 30rpx;
  134. font-weight: 500;
  135. }
  136. /* 滚动区域 */
  137. .apply-scroll {
  138. flex: 1;
  139. overflow-y: auto;
  140. padding: 0 32rpx;
  141. background-color: transparent;
  142. box-sizing: border-box;
  143. }
  144. .apply-list {
  145. padding: 8rpx 0 30rpx;
  146. }
  147. /* 申请项卡片 */
  148. .apply-item {
  149. background-color: #ffffff;
  150. border-radius: 32rpx;
  151. padding: 32rpx 28rpx;
  152. margin-bottom: 20rpx;
  153. display: flex;
  154. align-items: flex-start;
  155. box-shadow: 0 8rpx 24rpx rgba(0, 20, 10, 0.04);
  156. transition: all 0.25s ease;
  157. border: 1rpx solid #edf2f7;
  158. position: relative;
  159. backdrop-filter: blur(2px);
  160. }
  161. .apply-item:active {
  162. background-color: #fafdff;
  163. transform: translateY(-4rpx);
  164. box-shadow: 0 16rpx 32rpx rgba(30, 60, 40, 0.08);
  165. border-color: #cbd5e0;
  166. }
  167. .user-avatar {
  168. width: 96rpx;
  169. height: 96rpx;
  170. border-radius: 10rpx;
  171. background-color: #dde5ed;
  172. margin-right: 28rpx;
  173. flex-shrink: 0;
  174. border: 2rpx solid #e2e8f0;
  175. transition: border-color 0.2s;
  176. }
  177. .apply-item:active .user-avatar {
  178. border-color: #2b6c4e;
  179. }
  180. .apply-content {
  181. flex: 1;
  182. min-width: 0;
  183. }
  184. .apply-header {
  185. display: flex;
  186. justify-content: space-between;
  187. align-items: center;
  188. margin-bottom: 16rpx;
  189. }
  190. .user-info {
  191. display: flex;
  192. align-items: center;
  193. gap: 16rpx;
  194. flex-wrap: wrap;
  195. flex: 1;
  196. min-width: 0;
  197. }
  198. .user-name {
  199. font-size: 34rpx;
  200. font-weight: 600;
  201. color: #1e293b;
  202. max-width: 240rpx;
  203. overflow: hidden;
  204. text-overflow: ellipsis;
  205. white-space: nowrap;
  206. }
  207. .apply-time {
  208. font-size: 24rpx;
  209. color: #94a3b8;
  210. flex-shrink: 0;
  211. margin-left: 16rpx;
  212. background-color: #f8fafc;
  213. padding: 4rpx 16rpx;
  214. border-radius: 30rpx;
  215. }
  216. .message-area {
  217. display: flex;
  218. align-items: center;
  219. justify-content: space-between;
  220. margin-bottom: 22rpx;
  221. }
  222. .message-preview {
  223. font-size: 28rpx;
  224. color: #475569;
  225. overflow: hidden;
  226. text-overflow: ellipsis;
  227. white-space: nowrap;
  228. flex: 1;
  229. min-width: 0;
  230. margin-right: 16rpx;
  231. line-height: 1.4;
  232. }
  233. .unread-badge {
  234. background: linear-gradient(145deg, #ff5f6d, #ff7b89);
  235. color: white;
  236. font-size: 22rpx;
  237. font-weight: 600;
  238. min-width: 40rpx;
  239. height: 40rpx;
  240. line-height: 40rpx;
  241. text-align: center;
  242. border-radius: 40rpx;
  243. padding: 0 12rpx;
  244. flex-shrink: 0;
  245. box-shadow: 0 4rpx 8rpx rgba(255, 95, 109, 0.25);
  246. border: 2rpx solid rgba(255, 255, 255, 0.5);
  247. }
  248. /* 空状态 */
  249. .empty-state {
  250. text-align: center;
  251. padding: 80rpx 0;
  252. color: #94a3b8;
  253. display: flex;
  254. flex-direction: column;
  255. align-items: center;
  256. }
  257. .empty-text {
  258. font-size: 32rpx;
  259. font-weight: 500;
  260. color: #64748b;
  261. margin-bottom: 8rpx;
  262. }
  263. .empty-subtext {
  264. font-size: 26rpx;
  265. color: #a0afbe;
  266. }
  267. /* 加载更多 */
  268. .loading-more {
  269. text-align: center;
  270. padding: 30rpx 0 40rpx;
  271. color: #5f7d9c;
  272. font-size: 26rpx;
  273. display: flex;
  274. align-items: center;
  275. justify-content: center;
  276. gap: 16rpx;
  277. }
  278. .loading-spinner {
  279. width: 32rpx;
  280. height: 32rpx;
  281. border: 4rpx solid #d1d9e6;
  282. border-top-color: #2b6c4e;
  283. border-radius: 50%;
  284. animation: spin 0.8s linear infinite;
  285. }
  286. @keyframes spin {
  287. to {
  288. transform: rotate(360deg);
  289. }
  290. }
  291. .no-more {
  292. text-align: center;
  293. padding: 30rpx 0;
  294. color: #9aa9b9;
  295. font-size: 26rpx;
  296. position: relative;
  297. }
  298. .no-more::before,
  299. .no-more::after {
  300. content: '';
  301. position: absolute;
  302. top: 50%;
  303. width: 60rpx;
  304. height: 1rpx;
  305. background-color: #dce3ec;
  306. }
  307. .no-more::before {
  308. left: 60rpx;
  309. }
  310. .no-more::after {
  311. right: 60rpx;
  312. }