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

529 lines
9.4 KiB

  1. .diagnosis-container {
  2. min-height: 100vh;
  3. width: 100%;
  4. display: flex;
  5. flex-direction: column;
  6. background: linear-gradient(180deg, #f8fafc 0%, #f0f9ff 100%);
  7. }
  8. /* 自定义导航栏 */
  9. .custom-navbar {
  10. height: 120rpx;
  11. padding-top: 40rpx;
  12. background: linear-gradient(135deg, #86D8D0 0%, #6BC4BC 100%);
  13. display: flex;
  14. align-items: center;
  15. justify-content: space-between;
  16. padding: 40rpx 32rpx 20rpx;
  17. box-shadow: 0 2rpx 12rpx rgba(134, 216, 208, 0.2);
  18. }
  19. .nav-left, .nav-right {
  20. width: 80rpx;
  21. }
  22. .nav-center {
  23. flex: 1;
  24. display: flex;
  25. flex-direction: column;
  26. align-items: center;
  27. }
  28. .nav-title {
  29. font-size: 36rpx;
  30. font-weight: 600;
  31. color: white;
  32. margin-bottom: 4rpx;
  33. }
  34. .nav-subtitle {
  35. font-size: 22rpx;
  36. color: rgba(255, 255, 255, 0.8);
  37. }
  38. .back-btn {
  39. width: 64rpx;
  40. height: 64rpx;
  41. border-radius: 50%;
  42. background: rgba(255, 255, 255, 0.2);
  43. display: flex;
  44. align-items: center;
  45. justify-content: center;
  46. }
  47. .back-icon {
  48. color: white;
  49. font-size: 36rpx;
  50. font-weight: 300;
  51. }
  52. .more-btn {
  53. width: 64rpx;
  54. height: 64rpx;
  55. border-radius: 50%;
  56. background: rgba(255, 255, 255, 0.2);
  57. display: flex;
  58. align-items: center;
  59. justify-content: center;
  60. color: white;
  61. font-size: 36rpx;
  62. font-weight: bold;
  63. }
  64. /* 医生信息卡片 */
  65. .doctor-card {
  66. background: white;
  67. margin: 24rpx 32rpx;
  68. padding: 32rpx;
  69. border-radius: 20rpx;
  70. display: flex;
  71. align-items: center;
  72. box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.06);
  73. position: relative;
  74. }
  75. .doctor-avatar {
  76. width: 120rpx;
  77. height: 120rpx;
  78. border-radius: 50%;
  79. background: linear-gradient(135deg, #86D8D0 0%, #A8E6CF 100%);
  80. display: flex;
  81. align-items: center;
  82. justify-content: center;
  83. margin-right: 24rpx;
  84. overflow: hidden;
  85. }
  86. .avatar-img {
  87. width: 100rpx;
  88. height: 100rpx;
  89. }
  90. .doctor-info {
  91. flex: 1;
  92. }
  93. .doctor-name {
  94. display: block;
  95. font-size: 32rpx;
  96. font-weight: 600;
  97. color: #333;
  98. margin-bottom: 8rpx;
  99. }
  100. .doctor-title {
  101. display: block;
  102. font-size: 24rpx;
  103. color: #86D8D0;
  104. margin-bottom: 16rpx;
  105. }
  106. .doctor-tags {
  107. display: flex;
  108. gap: 12rpx;
  109. }
  110. .tag {
  111. font-size: 20rpx;
  112. padding: 6rpx 12rpx;
  113. background: #E8F4F3;
  114. color: #6BC4BC;
  115. border-radius: 20rpx;
  116. }
  117. .online-status {
  118. position: absolute;
  119. right: 32rpx;
  120. bottom: 32rpx;
  121. font-size: 22rpx;
  122. padding: 4rpx 12rpx;
  123. border-radius: 12rpx;
  124. }
  125. .online-status.online {
  126. background: #e8f1f4;
  127. color: #6b8fc4;
  128. }
  129. /* 聊天容器 */
  130. .chat-container {
  131. flex: 1;
  132. /* padding: 0 32rpx; */
  133. display: flex;
  134. flex-direction: column;
  135. }
  136. /* 消息样式 */
  137. .message-wrapper {
  138. display: flex;
  139. margin: 40rpx 0;
  140. animation: fadeIn 0.3s ease;
  141. }
  142. @keyframes fadeIn {
  143. from { opacity: 0; transform: translateY(20rpx); }
  144. to { opacity: 1; transform: translateY(0); }
  145. }
  146. .message-wrapper.user {
  147. justify-content: flex-end;
  148. }
  149. .message-content {
  150. max-width: 70%;
  151. display: flex;
  152. flex-direction: column;
  153. }
  154. .message-wrapper.user .message-content {
  155. align-items: flex-end;
  156. }
  157. .message-wrapper.assistant .message-content {
  158. align-items: flex-start;
  159. }
  160. .message-avatar {
  161. width: 80rpx;
  162. height: 80rpx;
  163. border-radius: 50%;
  164. overflow: hidden;
  165. margin: 0 20rpx;
  166. align-self: flex-end;
  167. }
  168. .avatar {
  169. width: 100%;
  170. height: 100%;
  171. }
  172. /* 消息气泡 */
  173. .message-bubble {
  174. padding: 24rpx;
  175. border-radius: 24rpx;
  176. position: relative;
  177. line-height: 1.5;
  178. }
  179. .assistant-bubble {
  180. background: #E8F4F3;
  181. border-radius: 0 24rpx 24rpx 24rpx;
  182. }
  183. .user-bubble {
  184. background: #86D8D0;
  185. border-radius: 24rpx 0 24rpx 24rpx;
  186. }
  187. .message-text {
  188. font-size: 28rpx;
  189. color: #333;
  190. }
  191. .user-bubble .message-text {
  192. color: white;
  193. }
  194. /* 消息时间 */
  195. .message-time {
  196. font-size: 22rpx;
  197. color: #999;
  198. margin-top: 8rpx;
  199. }
  200. /* 诊断结果卡片 */
  201. .diagnosis-card {
  202. background: white;
  203. border-radius: 16rpx;
  204. padding: 24rpx;
  205. margin-top: 20rpx;
  206. border-left: 6rpx solid #86D8D0;
  207. box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
  208. }
  209. .diagnosis-header {
  210. margin-bottom: 20rpx;
  211. }
  212. .diagnosis-title {
  213. font-size: 28rpx;
  214. font-weight: 600;
  215. color: #333;
  216. }
  217. .diagnosis-item {
  218. display: flex;
  219. margin-bottom: 16rpx;
  220. align-items: flex-start;
  221. }
  222. .diagnosis-label {
  223. font-size: 26rpx;
  224. color: #666;
  225. width: 140rpx;
  226. flex-shrink: 0;
  227. }
  228. .diagnosis-value {
  229. font-size: 26rpx;
  230. color: #333;
  231. flex: 1;
  232. line-height: 1.4;
  233. }
  234. .severity-level {
  235. padding: 4rpx 16rpx;
  236. border-radius: 20rpx;
  237. font-size: 24rpx;
  238. font-weight: 500;
  239. }
  240. .severity-level.low {
  241. background: #E8F4F3;
  242. color: #6BC4BC;
  243. }
  244. .severity-level.moderate {
  245. background: #FFF3E0;
  246. color: #FF9800;
  247. }
  248. .severity-level.high {
  249. background: #FFEBEE;
  250. color: #F44336;
  251. }
  252. .diagnosis-footer {
  253. margin-top: 20rpx;
  254. padding-top: 16rpx;
  255. border-top: 1rpx solid #eee;
  256. }
  257. .disclaimer {
  258. font-size: 22rpx;
  259. color: #999;
  260. font-style: italic;
  261. }
  262. /* AI正在输入 */
  263. .typing {
  264. min-width: 200rpx;
  265. }
  266. .typing-indicator {
  267. display: flex;
  268. align-items: center;
  269. gap: 8rpx;
  270. }
  271. .typing-dot {
  272. width: 12rpx;
  273. height: 12rpx;
  274. background: #86D8D0;
  275. border-radius: 50%;
  276. animation: typingAnimation 1.4s infinite ease-in-out;
  277. }
  278. .typing-dot:nth-child(1) { animation-delay: -0.32s; }
  279. .typing-dot:nth-child(2) { animation-delay: -0.16s; }
  280. @keyframes typingAnimation {
  281. 0%, 80%, 100% { transform: scale(0.8); opacity: 0.5; }
  282. 40% { transform: scale(1); opacity: 1; }
  283. }
  284. .typing-text {
  285. font-size: 26rpx;
  286. color: #666;
  287. margin-left: 12rpx;
  288. }
  289. /* 快捷症状选择 */
  290. .symptom-quick-select {
  291. padding: 0 32rpx 20rpx;
  292. }
  293. .section-title {
  294. display: block;
  295. font-size: 26rpx;
  296. color: #666;
  297. margin-bottom: 20rpx;
  298. }
  299. .symptom-tags {
  300. white-space: nowrap;
  301. display: flex;
  302. gap: 20rpx;
  303. }
  304. .symptom-tag {
  305. display: inline-block;
  306. padding: 16rpx 24rpx;
  307. background: white;
  308. border-radius: 24rpx;
  309. border: 1rpx solid #E8F4F3;
  310. box-shadow: 0 2rpx 8rpx rgba(134, 216, 208, 0.1);
  311. transition: all 0.2s ease;
  312. }
  313. .symptom-tag:active {
  314. transform: scale(0.95);
  315. background: #E8F4F3;
  316. }
  317. .tag-text {
  318. font-size: 26rpx;
  319. color: #666;
  320. }
  321. /* 输入区域 */
  322. .input-area {
  323. background: white;
  324. padding: 20rpx 32rpx 40rpx;
  325. border-top: 1rpx solid #f0f0f0;
  326. display: flex;
  327. align-items: flex-end;
  328. gap: 20rpx;
  329. }
  330. .input-wrapper {
  331. flex: 1;
  332. background: #f8fafc;
  333. border-radius: 24rpx;
  334. padding: 16rpx 24rpx;
  335. border: 1rpx solid #E8F4F3;
  336. }
  337. .message-input {
  338. font-size: 28rpx;
  339. min-height: 60rpx;
  340. line-height: 1.5;
  341. }
  342. .placeholder {
  343. color: #aaa;
  344. }
  345. .send-btn {
  346. width: 80rpx;
  347. height: 80rpx;
  348. border-radius: 50%;
  349. background: #86D8D0;
  350. display: flex;
  351. align-items: center;
  352. justify-content: center;
  353. box-shadow: 0 4rpx 12rpx rgba(134, 216, 208, 0.3);
  354. transition: all 0.2s ease;
  355. }
  356. .send-btn-hover {
  357. background: #6BC4BC;
  358. transform: translateY(-2rpx);
  359. box-shadow: 0 6rpx 16rpx rgba(134, 216, 208, 0.4);
  360. }
  361. .send-icon {
  362. color: white;
  363. font-size: 36rpx;
  364. font-weight: 300;
  365. }
  366. /* 更多菜单 */
  367. .modal-overlay {
  368. position: fixed;
  369. top: 0;
  370. left: 0;
  371. width: 100%;
  372. height: 100%;
  373. background: rgba(0, 0, 0, 0.5);
  374. z-index: 1000;
  375. display: flex;
  376. justify-content: flex-end;
  377. align-items: flex-start;
  378. padding-top: 120rpx;
  379. padding-right: 32rpx;
  380. }
  381. .more-menu {
  382. background: white;
  383. border-radius: 16rpx;
  384. padding: 16rpx 0;
  385. box-shadow: 0 8rpx 32rpx rgba(0, 0, 0, 0.15);
  386. min-width: 240rpx;
  387. animation: slideIn 0.3s ease;
  388. }
  389. @keyframes slideIn {
  390. from { opacity: 0; transform: translateY(-20rpx); }
  391. to { opacity: 1; transform: translateY(0); }
  392. }
  393. .menu-item {
  394. display: flex;
  395. align-items: center;
  396. padding: 24rpx 32rpx;
  397. gap: 16rpx;
  398. }
  399. .menu-item:active {
  400. background: #f8fafc;
  401. }
  402. .menu-icon {
  403. font-size: 28rpx;
  404. }
  405. .menu-text {
  406. font-size: 28rpx;
  407. color: #333;
  408. }
  409. /* 加载动画 */
  410. .loading-overlay {
  411. position: fixed;
  412. top: 0;
  413. left: 0;
  414. width: 100%;
  415. height: 100%;
  416. background: rgba(255, 255, 255, 0.9);
  417. z-index: 1001;
  418. display: flex;
  419. align-items: center;
  420. justify-content: center;
  421. }
  422. .loading-content {
  423. display: flex;
  424. flex-direction: column;
  425. align-items: center;
  426. }
  427. .pulse-animation {
  428. position: relative;
  429. width: 120rpx;
  430. height: 120rpx;
  431. }
  432. .pulse-circle {
  433. position: absolute;
  434. width: 100%;
  435. height: 100%;
  436. border: 4rpx solid #86D8D0;
  437. border-radius: 50%;
  438. animation: pulse 2s infinite ease-in-out;
  439. }
  440. .pulse-circle:nth-child(2) { animation-delay: 0.5s; }
  441. .pulse-circle:nth-child(3) { animation-delay: 1s; }
  442. @keyframes pulse {
  443. 0% { transform: scale(0.8); opacity: 1; }
  444. 100% { transform: scale(1.5); opacity: 0; }
  445. }
  446. .loading-text {
  447. margin-top: 40rpx;
  448. font-size: 28rpx;
  449. color: #666;
  450. }