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

704 lines
11 KiB

2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
2 months ago
  1. /* 页面容器 */
  2. .home-container {
  3. width: 100%;
  4. min-height: 100vh;
  5. background: linear-gradient(180deg, #86D8D0 0%, #a9dfda 30%, #cfe9e7 60%, #ECF8F7 90%);
  6. padding-top: env(safe-area-inset-top);
  7. }
  8. /* 主要内容区域 */
  9. .box {
  10. width: 93%;
  11. margin: 0 auto;
  12. padding-bottom: 40rpx;
  13. }
  14. /* AI问诊 */
  15. .Aidiagnosis {
  16. position: fixed;
  17. right: 0;
  18. bottom: 150px;
  19. margin: 0 auto;
  20. z-index: 100;
  21. }
  22. .Aidiagnosis image {
  23. width: 120rpx;
  24. height: 120rpx;
  25. border-radius: 50%;
  26. }
  27. .orientation{
  28. display: flex;
  29. align-items: center;
  30. justify-content: space-between;
  31. margin-bottom: 10rpx;
  32. }
  33. /* 定位 */
  34. .orientation2 {
  35. display: flex;
  36. align-items: center;
  37. padding: 20rpx 0;
  38. color: #fff;
  39. font-weight: bold;
  40. font-size: 26rpx;
  41. }
  42. .orientation image {
  43. width: 40rpx;
  44. height: 40rpx;
  45. margin-right: 10rpx;
  46. }
  47. .orientation3{
  48. display: flex;
  49. align-items: center;
  50. color: #fff;
  51. }
  52. /* 轮播图区域 - 已修复 */
  53. .swiper-container {
  54. position: relative;
  55. border-radius: 20rpx;
  56. overflow: hidden;
  57. box-shadow: 0 10rpx 40rpx rgba(0, 0, 0, 0.1);
  58. animation: scaleIn 0.6s ease-out 0.4s both;
  59. }
  60. @keyframes scaleIn {
  61. from {
  62. opacity: 0;
  63. transform: scale(0.95);
  64. }
  65. to {
  66. opacity: 1;
  67. transform: scale(1);
  68. }
  69. }
  70. .custom-swiper {
  71. border-radius: 20rpx;
  72. }
  73. .swiper-item {
  74. position: relative;
  75. height: 360rpx;
  76. overflow: hidden;
  77. border-radius: 20rpx;
  78. transition: transform 0.5s ease;
  79. }
  80. .swiper-item.active {
  81. transform: scale(1.02);
  82. }
  83. .swiper-image {
  84. width: 100%;
  85. height: 100%;
  86. transition: transform 8s ease;
  87. }
  88. .swiper-mask {
  89. position: absolute;
  90. top: 0;
  91. left: 0;
  92. right: 0;
  93. bottom: 0;
  94. background: linear-gradient(to right, rgba(0, 0, 0, 0.3), transparent 50%);
  95. }
  96. .swiper-content {
  97. position: absolute;
  98. bottom: 60rpx;
  99. left: 40rpx;
  100. z-index: 2;
  101. max-width: 60%;
  102. }
  103. .swiper-tag {
  104. display: inline-block;
  105. padding: 6rpx 20rpx;
  106. background: rgba(76, 175, 80, 0.9);
  107. color: white;
  108. font-size: 20rpx;
  109. border-radius: 20rpx;
  110. margin-bottom: 16rpx;
  111. backdrop-filter: blur(10rpx);
  112. }
  113. .swiper-title {
  114. display: block;
  115. font-size: 36rpx;
  116. font-weight: bold;
  117. color: #FFFFFF;
  118. margin-bottom: 8rpx;
  119. text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.3);
  120. line-height: 1.4;
  121. }
  122. .swiper-desc {
  123. display: block;
  124. font-size: 24rpx;
  125. color: rgba(255, 255, 255, 0.9);
  126. text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.2);
  127. }
  128. .swiper-gradient {
  129. position: absolute;
  130. bottom: 0;
  131. left: 0;
  132. right: 0;
  133. height: 120rpx;
  134. background: linear-gradient(to top, rgba(0, 0, 0, 0.4), transparent);
  135. }
  136. .custom-indicator {
  137. position: absolute;
  138. bottom: 30rpx;
  139. right: 30rpx;
  140. display: flex;
  141. align-items: center;
  142. z-index: 3;
  143. }
  144. .indicator-dot {
  145. width: 12rpx;
  146. height: 12rpx;
  147. border-radius: 50%;
  148. background: rgba(255, 255, 255, 0.5);
  149. margin: 0 6rpx;
  150. transition: all 0.3s ease;
  151. }
  152. .indicator-dot.active {
  153. width: 40rpx;
  154. background: #96DBD4;
  155. border-radius: 6rpx;
  156. }
  157. /* 卡片类型 */
  158. .kap {
  159. animation: kapIn 0.5s ease-out 0.5s both;
  160. }
  161. @keyframes kapIn {
  162. from {
  163. opacity: 0;
  164. }
  165. to {
  166. opacity: 1;
  167. }
  168. }
  169. .card {
  170. width: 100%;
  171. display: grid;
  172. grid-template-columns: 1.1fr 2fr;
  173. column-gap: 20rpx;
  174. margin: 20rpx 0;
  175. }
  176. .card2 {
  177. background-color: #F8918C;
  178. border-radius: 25rpx;
  179. padding: 30rpx 20rpx 120rpx;
  180. }
  181. .card2 view:nth-child(1) {
  182. font-size: 38rpx;
  183. color: #fff;
  184. font-weight: bold;
  185. letter-spacing: 0.1em;
  186. }
  187. .card2_1 {
  188. margin: 10rpx 0;
  189. font-size: 26rpx;
  190. color: #FDE8E1;
  191. }
  192. .card3 {
  193. display: grid;
  194. grid-template-rows: 1fr 1fr;
  195. row-gap: 20rpx;
  196. }
  197. .card3>view {
  198. border-radius: 25rpx;
  199. padding: 0 0 0 20rpx;
  200. }
  201. .card3_1 {
  202. background-color: #5EBEB8;
  203. }
  204. .card3_1 view:last-child {
  205. color: #D9F0EE;
  206. }
  207. .card3_2 {
  208. background-color: #E9B770;
  209. }
  210. .card3_2 view:last-child {
  211. color: #F4E8DB;
  212. }
  213. .card3_kp view:first-child {
  214. font-size: 38rpx;
  215. color: #fff;
  216. margin: 30rpx 0 10rpx 0;
  217. }
  218. .card3_kp view:last-child {
  219. font-size: 26rpx;
  220. }
  221. /* 知识库 */
  222. .repository {
  223. width: 100%;
  224. display: grid;
  225. grid-template-columns: 1fr 1fr 1fr;
  226. column-gap: 20rpx;
  227. }
  228. .repository>view {
  229. padding: 20rpx 0 20rpx 20rpx;
  230. border-radius: 20rpx;
  231. }
  232. .zsk view:first-child {
  233. color: #fff;
  234. margin-bottom: 5rpx;
  235. }
  236. .zsk view:last-child {
  237. background-color: #fff;
  238. font-size: 22rpx;
  239. display: inline-block;
  240. padding: 0 10rpx;
  241. }
  242. .repository1_1 {
  243. background-color: #6CAB86;
  244. }
  245. .repository1_2 {
  246. background-color: #017D77;
  247. }
  248. .repository1_3 {
  249. background-color: #FD8140;
  250. }
  251. /* 通知公告区域 */
  252. .notice-section {
  253. background: #FFFFFF;
  254. border-radius: 20rpx;
  255. padding: 20rpx 20rpx 0;
  256. margin: 20rpx 0;
  257. box-shadow: 0 8rpx 30rpx rgba(0, 0, 0, 0.05);
  258. animation: fadeIn 0.6s ease-out 0.6s both;
  259. position: relative;
  260. overflow: hidden;
  261. }
  262. @keyframes fadeIn {
  263. from {
  264. opacity: 0;
  265. transform: translateY(30rpx);
  266. }
  267. to {
  268. opacity: 1;
  269. transform: translateY(0);
  270. }
  271. }
  272. /* 通知标题区域 */
  273. .notice-header {
  274. display: flex;
  275. justify-content: space-between;
  276. align-items: center;
  277. margin-bottom: 20rpx;
  278. padding-bottom: 20rpx;
  279. border-bottom: 1px solid rgba(150, 219, 212, 0.2);
  280. }
  281. .notice-title {
  282. display: flex;
  283. align-items: center;
  284. gap: 12rpx;
  285. }
  286. .notice-icon {
  287. font-size: 32rpx;
  288. }
  289. .notice-title-text {
  290. font-size: 32rpx;
  291. font-weight: 600;
  292. color: #333;
  293. position: relative;
  294. padding-left: 16rpx;
  295. }
  296. .notice-title-text::before {
  297. content: '';
  298. position: absolute;
  299. left: 0;
  300. top: 50%;
  301. transform: translateY(-50%);
  302. width: 6rpx;
  303. height: 28rpx;
  304. background: linear-gradient(135deg, #FF9800, #F44336);
  305. border-radius: 3rpx;
  306. }
  307. .notice-more {
  308. font-size: 24rpx;
  309. color: #96DBD4;
  310. padding: 8rpx 16rpx;
  311. background: rgba(150, 219, 212, 0.1);
  312. border-radius: 20rpx;
  313. transition: all 0.3s ease;
  314. }
  315. .notice-more:active {
  316. background: rgba(150, 219, 212, 0.2);
  317. transform: scale(0.95);
  318. }
  319. /* 通知内容区域 */
  320. .notice-content {
  321. position: relative;
  322. }
  323. .notice-swiper {
  324. height: 160rpx;
  325. }
  326. .notice-item {
  327. transition: all 0.3s ease;
  328. display: flex;
  329. flex-direction: column;
  330. justify-content: center;
  331. position: relative;
  332. cursor: pointer;
  333. }
  334. .notice-item.highlight {
  335. background: rgba(150, 219, 212, 0.08);
  336. border-radius: 16rpx;
  337. padding: 20rpx;
  338. margin: 0 -10rpx;
  339. }
  340. .notice-item-header {
  341. display: flex;
  342. justify-content: space-between;
  343. align-items: center;
  344. margin-bottom: 16rpx;
  345. }
  346. .notice-type-container {
  347. display: flex;
  348. align-items: center;
  349. gap: 10rpx;
  350. }
  351. .notice-type {
  352. padding: 6rpx 16rpx;
  353. border-radius: 20rpx;
  354. font-size: 22rpx;
  355. font-weight: 500;
  356. display: inline-flex;
  357. align-items: center;
  358. justify-content: center;
  359. min-width: 80rpx;
  360. }
  361. /* 优化通知类型样式 */
  362. .notice-type.urgent {
  363. background: linear-gradient(135deg, #FF5252, #FF1744);
  364. color: white;
  365. box-shadow: 0 4rpx 12rpx rgba(244, 67, 54, 0.2);
  366. }
  367. .notice-type.important {
  368. background: linear-gradient(135deg, #FF9800, #FF9100);
  369. color: white;
  370. box-shadow: 0 4rpx 12rpx rgba(255, 152, 0, 0.2);
  371. }
  372. .notice-type.normal {
  373. background: linear-gradient(135deg, #96DBD4, #60C0B9);
  374. color: white;
  375. box-shadow: 0 4rpx 12rpx rgba(33, 150, 243, 0.2);
  376. }
  377. .notice-badge {
  378. background: #FF4081;
  379. color: white;
  380. font-size: 18rpx;
  381. padding: 2rpx 8rpx;
  382. border-radius: 10rpx;
  383. margin-left: 4rpx;
  384. }
  385. .notice-time {
  386. font-size: 22rpx;
  387. color: #888;
  388. font-family: 'Arial', sans-serif;
  389. }
  390. .notice-text-container {
  391. display: flex;
  392. justify-content: space-between;
  393. align-items: center;
  394. }
  395. .notice-text {
  396. font-size: 28rpx;
  397. color: #333;
  398. line-height: 1.5;
  399. flex: 1;
  400. display: -webkit-box;
  401. -webkit-box-orient: vertical;
  402. -webkit-line-clamp: 2;
  403. overflow: hidden;
  404. font-weight: 500;
  405. padding-right: 20rpx;
  406. }
  407. .notice-arrow {
  408. font-size: 24rpx;
  409. color: #96DBD4;
  410. opacity: 0.7;
  411. transition: all 0.3s ease;
  412. }
  413. .notice-item.highlight .notice-arrow {
  414. opacity: 1;
  415. transform: translateX(4rpx);
  416. }
  417. /* 用户提问板块 */
  418. .user-question-section {
  419. background: #FFFFFF;
  420. border-radius: 24rpx;
  421. padding: 32rpx;
  422. margin: 40rpx 0 20rpx;
  423. box-shadow: 0 8rpx 40rpx rgba(0, 0, 0, 0.06);
  424. animation: slideUp 0.8s ease-out 0.8s both;
  425. }
  426. @keyframes slideUp {
  427. from {
  428. opacity: 0;
  429. transform: translateY(60rpx);
  430. }
  431. to {
  432. opacity: 1;
  433. transform: translateY(0);
  434. }
  435. }
  436. /* 标题区域 */
  437. .question-header {
  438. display: flex;
  439. justify-content: space-between;
  440. align-items: center;
  441. margin-bottom: 40rpx;
  442. padding-bottom: 24rpx;
  443. border-bottom: 1px solid rgba(150, 219, 212, 0.3);
  444. }
  445. .question-title {
  446. display: flex;
  447. flex-direction: column;
  448. }
  449. .title-text {
  450. font-size: 38rpx;
  451. font-weight: bold;
  452. color: #7ad1cb;
  453. margin-bottom: 8rpx;
  454. position: relative;
  455. padding-left: 20rpx;
  456. }
  457. .title-text::before {
  458. content: '';
  459. position: absolute;
  460. left: 0;
  461. top: 50%;
  462. transform: translateY(-50%);
  463. width: 8rpx;
  464. height: 32rpx;
  465. background: #60C0B9;
  466. border-radius: 4rpx;
  467. }
  468. .title-text1_1 {
  469. font-size: 38rpx;
  470. font-weight: bold;
  471. color: #7499C8;
  472. margin-bottom: 8rpx;
  473. position: relative;
  474. padding-left: 20rpx;
  475. }
  476. .title-text1_1::before {
  477. content: '';
  478. position: absolute;
  479. left: 0;
  480. top: 50%;
  481. transform: translateY(-50%);
  482. width: 8rpx;
  483. height: 32rpx;
  484. background: #79b2d3;
  485. border-radius: 4rpx;
  486. }
  487. .title-sub {
  488. font-size: 24rpx;
  489. color: #999;
  490. padding-left: 20rpx;
  491. }
  492. .view-all {
  493. display: flex;
  494. align-items: center;
  495. font-size: 26rpx;
  496. color: #60C0B9;
  497. padding: 12rpx 24rpx;
  498. background: rgba(96, 192, 185, 0.1);
  499. border-radius: 30rpx;
  500. transition: all 0.3s ease;
  501. }
  502. .view-all:active {
  503. background: rgba(96, 192, 185, 0.2);
  504. transform: scale(0.98);
  505. }
  506. .view-all1_1{
  507. display: flex;
  508. align-items: center;
  509. font-size: 26rpx;
  510. color: #608ac0;
  511. padding: 12rpx 24rpx;
  512. background: rgba(96, 192, 185, 0.1);
  513. border-radius: 30rpx;
  514. transition: all 0.3s ease;
  515. }
  516. .view-all1_1:active {
  517. background: rgba(131, 158, 199, 0.2);
  518. transform: scale(0.98);
  519. }
  520. /* 问题元信息 */
  521. .question-meta {
  522. display: flex;
  523. justify-content: space-between;
  524. align-items: flex-start;
  525. margin-bottom: 28rpx;
  526. }
  527. .question-tag {
  528. flex: 1;
  529. display: flex;
  530. align-items: flex-start;
  531. gap: 12rpx;
  532. }
  533. .tag-text {
  534. font-size: 30rpx;
  535. color: #333;
  536. line-height: 1.5;
  537. font-weight: 500;
  538. display: -webkit-box;
  539. -webkit-box-orient: vertical;
  540. -webkit-line-clamp: 2;
  541. overflow: hidden;
  542. }
  543. /* 用户信息 */
  544. .question-info {
  545. display: flex;
  546. justify-content: space-between;
  547. align-items: center;
  548. margin-bottom: 28rpx;
  549. padding-bottom: 20rpx;
  550. border-bottom: 1px dashed rgba(0, 0, 0, 0.08);
  551. }
  552. .user-info {
  553. display: flex;
  554. align-items: center;
  555. gap: 16rpx;
  556. }
  557. .user-avatar {
  558. width: 64rpx;
  559. height: 64rpx;
  560. border-radius: 50%;
  561. background: #E0F2F1;
  562. border: 2rpx solid #60C0B9;
  563. }
  564. .user-detail {
  565. display: flex;
  566. flex-direction: column;
  567. }
  568. .user-name {
  569. font-size: 26rpx;
  570. font-weight: 500;
  571. color: #333;
  572. margin-bottom: 6rpx;
  573. }
  574. .time-info {
  575. font-size: 22rpx;
  576. color: #999;
  577. background: rgba(0, 0, 0, 0.04);
  578. padding: 6rpx 16rpx;
  579. border-radius: 16rpx;
  580. }
  581. .post-footer {
  582. display: flex;
  583. align-items: center;
  584. justify-content: flex-end;
  585. }
  586. .post-meta {
  587. display: flex;
  588. align-items: center;
  589. gap: 25rpx;
  590. }
  591. .meta-item {
  592. display: flex;
  593. align-items: center;
  594. gap: 8rpx;
  595. }
  596. .meta-icon {
  597. width: 28rpx;
  598. height: 28rpx;
  599. opacity: 0.5;
  600. }
  601. .meta-count {
  602. font-size: 26rpx;
  603. font-weight: 600;
  604. color: #64748b;
  605. }