index.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810
  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>律助App - 您的智能法律助手</title>
  7. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  8. <style>
  9. * {
  10. margin: 0;
  11. padding: 0;
  12. box-sizing: border-box;
  13. font-family: 'PingFang SC', 'Microsoft YaHei', sans-serif;
  14. }
  15. :root {
  16. --primary-color: #1A237E;
  17. --primary-light: #303F9F;
  18. --accent-color: #FFD700;
  19. --warning-color: #D32F2F;
  20. --success-color: #388E3C;
  21. --bg-color: #F5F5F5;
  22. --card-color: #FFFFFF;
  23. --text-primary: #212121;
  24. --text-secondary: #616161;
  25. --border-radius: 16px;
  26. --shadow: 0 4px 16px rgba(0,0,0,0.08);
  27. --transition: all 0.3s ease;
  28. }
  29. body {
  30. background-color: var(--bg-color);
  31. color: var(--text-primary);
  32. max-width: 500px;
  33. margin: 0 auto;
  34. position: relative;
  35. padding-bottom: 80px;
  36. }
  37. /* 顶部导航 */
  38. .top-nav {
  39. display: flex;
  40. justify-content: space-between;
  41. align-items: center;
  42. padding: 16px;
  43. background: white;
  44. box-shadow: 0 2px 10px rgba(0,0,0,0.05);
  45. }
  46. .logo {
  47. font-size: 20px;
  48. font-weight: bold;
  49. color: var(--primary-color);
  50. }
  51. .nav-icons {
  52. display: flex;
  53. gap: 16px;
  54. }
  55. .nav-icon {
  56. font-size: 18px;
  57. color: var(--text-secondary);
  58. cursor: pointer;
  59. position: relative;
  60. }
  61. .notification-badge {
  62. position: absolute;
  63. top: -5px;
  64. right: -5px;
  65. background: var(--warning-color);
  66. color: white;
  67. border-radius: 50%;
  68. width: 16px;
  69. height: 16px;
  70. font-size: 10px;
  71. display: flex;
  72. align-items: center;
  73. justify-content: center;
  74. }
  75. /* 搜索栏 */
  76. .search-bar {
  77. padding: 16px;
  78. }
  79. .search-container {
  80. background: white;
  81. border-radius: var(--border-radius);
  82. padding: 12px;
  83. box-shadow: var(--shadow);
  84. }
  85. .search-input {
  86. display: flex;
  87. align-items: center;
  88. background: var(--bg-color);
  89. border-radius: 24px;
  90. padding: 8px 16px;
  91. transition: var(--transition);
  92. }
  93. .search-input:focus-within {
  94. box-shadow: 0 0 0 2px rgba(26, 35, 126, 0.2);
  95. }
  96. .search-input i {
  97. color: var(--text-secondary);
  98. margin-right: 8px;
  99. }
  100. .search-input input {
  101. flex: 1;
  102. border: none;
  103. background: none;
  104. outline: none;
  105. font-size: 16px;
  106. padding: 8px 0;
  107. }
  108. .voice-btn {
  109. background: var(--primary-color);
  110. color: white;
  111. width: 36px;
  112. height: 36px;
  113. border-radius: 50%;
  114. display: flex;
  115. align-items: center;
  116. justify-content: center;
  117. cursor: pointer;
  118. transition: var(--transition);
  119. }
  120. .voice-btn:hover {
  121. background: var(--primary-light);
  122. transform: scale(1.05);
  123. }
  124. /* 消息通知 */
  125. .notification-bar {
  126. background: #FFF9C4;
  127. border-radius: var(--border-radius);
  128. padding: 12px 16px;
  129. margin: 0 16px 20px;
  130. border-left: 4px solid var(--accent-color);
  131. display: flex;
  132. align-items: center;
  133. gap: 12px;
  134. cursor: pointer;
  135. transition: var(--transition);
  136. }
  137. .notification-bar:hover {
  138. transform: translateY(-2px);
  139. box-shadow: var(--shadow);
  140. }
  141. .notification-icon {
  142. color: var(--accent-color);
  143. font-size: 18px;
  144. }
  145. /* 智能状态区 */
  146. .status-card {
  147. background: linear-gradient(135deg, var(--primary-color), var(--primary-light));
  148. color: white;
  149. border-radius: var(--border-radius);
  150. padding: 20px;
  151. margin: 0 16px 20px;
  152. box-shadow: var(--shadow);
  153. }
  154. .greeting h3 {
  155. margin-bottom: 4px;
  156. font-size: 20px;
  157. }
  158. .greeting p {
  159. opacity: 0.9;
  160. font-size: 14px;
  161. }
  162. .case-progress {
  163. margin: 20px 0;
  164. }
  165. .progress-item {
  166. margin-bottom: 16px;
  167. }
  168. .case-title {
  169. font-size: 14px;
  170. opacity: 0.9;
  171. display: flex;
  172. justify-content: space-between;
  173. margin-bottom: 8px;
  174. }
  175. .progress-bar {
  176. background: rgba(255,255,255,0.3);
  177. height: 6px;
  178. border-radius: 3px;
  179. overflow: hidden;
  180. }
  181. .progress-fill {
  182. background: var(--accent-color);
  183. height: 100%;
  184. border-radius: 3px;
  185. transition: width 1s ease;
  186. }
  187. .todo-reminder {
  188. display: flex;
  189. align-items: center;
  190. gap: 12px;
  191. font-size: 14px;
  192. background: rgba(255,255,255,0.2);
  193. padding: 12px;
  194. border-radius: 8px;
  195. }
  196. .todo-icon {
  197. color: var(--accent-color);
  198. }
  199. /* 核心功能入口 */
  200. .section-title {
  201. padding: 0 16px;
  202. margin: 24px 0 16px;
  203. display: flex;
  204. justify-content: space-between;
  205. align-items: center;
  206. }
  207. .section-title h2 {
  208. font-size: 18px;
  209. color: var(--text-primary);
  210. }
  211. .function-grid {
  212. display: grid;
  213. grid-template-columns: repeat(3, 1fr);
  214. gap: 16px;
  215. padding: 0 16px;
  216. margin-bottom: 24px;
  217. }
  218. .function-item {
  219. background: white;
  220. border-radius: var(--border-radius);
  221. padding: 20px 12px;
  222. text-align: center;
  223. box-shadow: var(--shadow);
  224. transition: var(--transition);
  225. cursor: pointer;
  226. }
  227. .function-item:hover {
  228. transform: translateY(-6px);
  229. box-shadow: 0 12px 24px rgba(0,0,0,0.15);
  230. }
  231. .function-icon {
  232. font-size: 28px;
  233. margin-bottom: 12px;
  234. height: 50px;
  235. display: flex;
  236. align-items: center;
  237. justify-content: center;
  238. }
  239. .function-name {
  240. font-size: 14px;
  241. font-weight: 500;
  242. color: var(--text-primary);
  243. }
  244. /* 动态内容区 */
  245. .dynamic-content {
  246. padding: 0 16px;
  247. }
  248. .content-section {
  249. background: white;
  250. border-radius: var(--border-radius);
  251. padding: 16px;
  252. margin-bottom: 20px;
  253. box-shadow: var(--shadow);
  254. }
  255. .section-header {
  256. display: flex;
  257. justify-content: space-between;
  258. align-items: center;
  259. margin-bottom: 16px;
  260. }
  261. .section-header h3 {
  262. font-size: 16px;
  263. }
  264. .more-link {
  265. color: var(--primary-color);
  266. font-size: 14px;
  267. text-decoration: none;
  268. display: flex;
  269. align-items: center;
  270. gap: 4px;
  271. }
  272. .hot-questions .question-item {
  273. padding: 12px 0;
  274. border-bottom: 1px solid #f0f0f0;
  275. cursor: pointer;
  276. transition: var(--transition);
  277. }
  278. .hot-questions .question-item:hover {
  279. background: #f9f9f9;
  280. margin: 0 -16px;
  281. padding: 12px 16px;
  282. }
  283. .question-item:last-child {
  284. border-bottom: none;
  285. }
  286. .tag {
  287. background: rgba(26, 35, 126, 0.1);
  288. color: var(--primary-color);
  289. padding: 4px 8px;
  290. border-radius: 12px;
  291. font-size: 12px;
  292. display: inline-block;
  293. margin-bottom: 8px;
  294. }
  295. .question-item p {
  296. margin-bottom: 8px;
  297. line-height: 1.4;
  298. }
  299. .views {
  300. color: var(--text-secondary);
  301. font-size: 12px;
  302. display: flex;
  303. align-items: center;
  304. gap: 4px;
  305. }
  306. .video-grid {
  307. display: grid;
  308. grid-template-columns: repeat(2, 1fr);
  309. gap: 12px;
  310. }
  311. .video-item {
  312. border-radius: 12px;
  313. overflow: hidden;
  314. position: relative;
  315. cursor: pointer;
  316. }
  317. .video-thumbnail {
  318. width: 100%;
  319. height: 100px;
  320. background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  321. display: flex;
  322. align-items: center;
  323. justify-content: center;
  324. color: white;
  325. font-size: 24px;
  326. }
  327. .video-title {
  328. padding: 8px;
  329. font-size: 13px;
  330. line-height: 1.3;
  331. }
  332. .service-list {
  333. display: flex;
  334. flex-direction: column;
  335. gap: 12px;
  336. }
  337. .service-item {
  338. display: flex;
  339. align-items: center;
  340. gap: 12px;
  341. padding: 12px;
  342. border-radius: 8px;
  343. background: #f9f9f9;
  344. cursor: pointer;
  345. transition: var(--transition);
  346. }
  347. .service-item:hover {
  348. background: #f0f0f0;
  349. transform: translateX(4px);
  350. }
  351. .service-icon {
  352. width: 40px;
  353. height: 40px;
  354. border-radius: 8px;
  355. background: var(--primary-color);
  356. color: white;
  357. display: flex;
  358. align-items: center;
  359. justify-content: center;
  360. }
  361. .service-info {
  362. flex: 1;
  363. }
  364. .service-name {
  365. font-weight: 500;
  366. margin-bottom: 4px;
  367. }
  368. .service-distance {
  369. font-size: 12px;
  370. color: var(--text-secondary);
  371. }
  372. /* 全局悬浮按钮 */
  373. .floating-btn {
  374. position: fixed;
  375. right: 20px;
  376. bottom: 100px;
  377. width: 60px;
  378. height: 60px;
  379. background: linear-gradient(135deg, var(--primary-color), var(--primary-light));
  380. border-radius: 50%;
  381. display: flex;
  382. align-items: center;
  383. justify-content: center;
  384. box-shadow: 0 6px 20px rgba(26, 35, 126, 0.4);
  385. cursor: pointer;
  386. z-index: 100;
  387. transition: var(--transition);
  388. animation: pulse 2s infinite;
  389. }
  390. .floating-btn:hover {
  391. transform: scale(1.1);
  392. }
  393. .floating-btn i {
  394. color: white;
  395. font-size: 24px;
  396. }
  397. @keyframes pulse {
  398. 0% {
  399. box-shadow: 0 6px 20px rgba(26, 35, 126, 0.4);
  400. }
  401. 50% {
  402. box-shadow: 0 6px 30px rgba(26, 35, 126, 0.6);
  403. }
  404. 100% {
  405. box-shadow: 0 6px 20px rgba(26, 35, 126, 0.4);
  406. }
  407. }
  408. /* 底部导航栏 */
  409. .bottom-nav {
  410. position: fixed;
  411. bottom: 0;
  412. left: 0;
  413. right: 0;
  414. max-width: 500px;
  415. margin: 0 auto;
  416. background: white;
  417. display: flex;
  418. justify-content: space-around;
  419. padding: 12px 0;
  420. box-shadow: 0 -2px 10px rgba(0,0,0,0.1);
  421. z-index: 100;
  422. }
  423. .nav-item {
  424. display: flex;
  425. flex-direction: column;
  426. align-items: center;
  427. padding: 8px 16px;
  428. border-radius: 20px;
  429. transition: var(--transition);
  430. cursor: pointer;
  431. }
  432. .nav-item.active {
  433. background: rgba(26, 35, 126, 0.1);
  434. }
  435. .nav-icon {
  436. font-size: 20px;
  437. margin-bottom: 4px;
  438. }
  439. .nav-text {
  440. font-size: 12px;
  441. font-weight: 500;
  442. }
  443. .nav-item.active .nav-text {
  444. color: var(--primary-color);
  445. }
  446. </style>
  447. </head>
  448. <body>
  449. <!-- 顶部导航 -->
  450. <div class="top-nav">
  451. <div class="logo">律助App</div>
  452. <div class="nav-icons">
  453. <div class="nav-icon">
  454. <i class="far fa-bell"></i>
  455. <div class="notification-badge">3</div>
  456. </div>
  457. <div class="nav-icon">
  458. <i class="far fa-envelope"></i>
  459. <div class="notification-badge">2</div>
  460. </div>
  461. </div>
  462. </div>
  463. <!-- 搜索栏 -->
  464. <div class="search-bar">
  465. <div class="search-container">
  466. <div class="search-input">
  467. <i class="fas fa-search"></i>
  468. <input type="text" placeholder="输入法律问题或语音咨询...">
  469. <div class="voice-btn">
  470. <i class="fas fa-microphone"></i>
  471. </div>
  472. </div>
  473. </div>
  474. </div>
  475. <!-- 消息通知 -->
  476. <div class="notification-bar">
  477. <div class="notification-icon">
  478. <i class="fas fa-bell"></i>
  479. </div>
  480. <div class="notification-text">
  481. 您有2条新消息和3个待办事项需要处理
  482. </div>
  483. </div>
  484. <!-- 智能状态区 -->
  485. <div class="status-card">
  486. <div class="greeting">
  487. <h3>下午好,张先生!</h3>
  488. <p>今天是2024年1月15日,祝您一切顺利</p>
  489. </div>
  490. <div class="case-progress">
  491. <div class="progress-item">
  492. <div class="case-title">
  493. <span>劳动争议案</span>
  494. <span>60%</span>
  495. </div>
  496. <div class="progress-bar">
  497. <div class="progress-fill" style="width: 60%"></div>
  498. </div>
  499. </div>
  500. <div class="progress-item">
  501. <div class="case-title">
  502. <span>合同纠纷案</span>
  503. <span>30%</span>
  504. </div>
  505. <div class="progress-bar">
  506. <div class="progress-fill" style="width: 30%"></div>
  507. </div>
  508. </div>
  509. </div>
  510. <div class="todo-reminder">
  511. <div class="todo-icon">
  512. <i class="fas fa-clock"></i>
  513. </div>
  514. <div class="todo-text">
  515. 明天下午3点与律师会议,请提前准备材料
  516. </div>
  517. </div>
  518. </div>
  519. <!-- 核心功能入口 -->
  520. <div class="section-title">
  521. <h2>核心功能</h2>
  522. </div>
  523. <div class="function-grid">
  524. <div class="function-item" onclick="navigateTo('ai-consult')">
  525. <div class="function-icon">
  526. <i class="fas fa-robot"></i>
  527. </div>
  528. <div class="function-name">AI法律咨询</div>
  529. </div>
  530. <div class="function-item" onclick="navigateTo('doc-generate')">
  531. <div class="function-icon">
  532. <i class="fas fa-file-contract"></i>
  533. </div>
  534. <div class="function-name">文书生成</div>
  535. </div>
  536. <div class="function-item" onclick="navigateTo('law-search')">
  537. <div class="function-icon">
  538. <i class="fas fa-balance-scale"></i>
  539. </div>
  540. <div class="function-name">法条检索</div>
  541. </div>
  542. <div class="function-item" onclick="navigateTo('case-manage')">
  543. <div class="function-icon">
  544. <i class="fas fa-folder-open"></i>
  545. </div>
  546. <div class="function-name">案件管理</div>
  547. </div>
  548. <div class="function-item" onclick="navigateTo('lawyer-service')">
  549. <div class="function-icon">
  550. <i class="fas fa-user-tie"></i>
  551. </div>
  552. <div class="function-name">找律师</div>
  553. </div>
  554. <div class="function-item" onclick="navigateTo('learn-center')">
  555. <div class="function-icon">
  556. <i class="fas fa-graduation-cap"></i>
  557. </div>
  558. <div class="function-name">学习中心</div>
  559. </div>
  560. </div>
  561. <!-- 动态内容区 -->
  562. <div class="dynamic-content">
  563. <!-- 热点法律问题 -->
  564. <div class="content-section">
  565. <div class="section-header">
  566. <h3>热点法律问题</h3>
  567. <a href="#" class="more-link">
  568. 更多 <i class="fas fa-chevron-right"></i>
  569. </a>
  570. </div>
  571. <div class="hot-questions">
  572. <div class="question-item">
  573. <div class="tag">劳动法</div>
  574. <p>公司裁员如何争取合理补偿?</p>
  575. <div class="views">
  576. <i class="far fa-eye"></i> 1.2万浏览
  577. </div>
  578. </div>
  579. <div class="question-item">
  580. <div class="tag">合同法</div>
  581. <p>租房合同中的霸王条款如何应对?</p>
  582. <div class="views">
  583. <i class="far fa-eye"></i> 8千浏览
  584. </div>
  585. </div>
  586. <div class="question-item">
  587. <div class="tag">婚姻法</div>
  588. <p>离婚财产分割有哪些注意事项?</p>
  589. <div class="views">
  590. <i class="far fa-eye"></i> 5千浏览
  591. </div>
  592. </div>
  593. </div>
  594. </div>
  595. <!-- 普法短视频 -->
  596. <div class="content-section">
  597. <div class="section-header">
  598. <h3>普法短视频</h3>
  599. <a href="#" class="more-link">
  600. 更多 <i class="fas fa-chevron-right"></i>
  601. </a>
  602. </div>
  603. <div class="video-grid">
  604. <div class="video-item">
  605. <div class="video-thumbnail">
  606. <i class="fas fa-play-circle"></i>
  607. </div>
  608. <div class="video-title">劳动合同签订注意事项</div>
  609. </div>
  610. <div class="video-item">
  611. <div class="video-thumbnail">
  612. <i class="fas fa-play-circle"></i>
  613. </div>
  614. <div class="video-title">交通事故责任认定</div>
  615. </div>
  616. </div>
  617. </div>
  618. <!-- 附近服务机构 -->
  619. <div class="content-section">
  620. <div class="section-header">
  621. <h3>附近服务机构</h3>
  622. <a href="#" class="more-link">
  623. 更多 <i class="fas fa-chevron-right"></i>
  624. </a>
  625. </div>
  626. <div class="service-list">
  627. <div class="service-item">
  628. <div class="service-icon">
  629. <i class="fas fa-balance-scale"></i>
  630. </div>
  631. <div class="service-info">
  632. <div class="service-name">正义律师事务所</div>
  633. <div class="service-distance">距离 1.2km</div>
  634. </div>
  635. </div>
  636. <div class="service-item">
  637. <div class="service-icon">
  638. <i class="fas fa-gavel"></i>
  639. </div>
  640. <div class="service-info">
  641. <div class="service-name">法律援助中心</div>
  642. <div class="service-distance">距离 2.5km</div>
  643. </div>
  644. </div>
  645. <div class="service-item">
  646. <div class="service-icon">
  647. <i class="fas fa-landmark"></i>
  648. </div>
  649. <div class="service-info">
  650. <div class="service-name">人民法院</div>
  651. <div class="service-distance">距离 3.8km</div>
  652. </div>
  653. </div>
  654. </div>
  655. </div>
  656. </div>
  657. <!-- 全局悬浮按钮 -->
  658. <div class="floating-btn">
  659. <i class="fas fa-microphone"></i>
  660. </div>
  661. <!-- 底部导航栏 -->
  662. <div class="bottom-nav">
  663. <div class="nav-item active">
  664. <div class="nav-icon">
  665. <i class="fas fa-home"></i>
  666. </div>
  667. <div class="nav-text">首页</div>
  668. </div>
  669. <div class="nav-item">
  670. <div class="nav-icon">
  671. <i class="fas fa-comments"></i>
  672. </div>
  673. <div class="nav-text">咨询</div>
  674. </div>
  675. <div class="nav-item">
  676. <div class="nav-icon">
  677. <i class="fas fa-tools"></i>
  678. </div>
  679. <div class="nav-text">工具</div>
  680. </div>
  681. <div class="nav-item">
  682. <div class="nav-icon">
  683. <i class="fas fa-user"></i>
  684. </div>
  685. <div class="nav-text">我的</div>
  686. </div>
  687. </div>
  688. <script>
  689. // 页面导航功能
  690. function navigateTo(page) {
  691. alert('即将跳转到: ' + page);
  692. // 实际项目中这里会进行页面跳转
  693. }
  694. // 语音按钮功能
  695. document.querySelector('.voice-btn').addEventListener('click', function() {
  696. alert('开始语音输入...');
  697. // 实际项目中这里会调用语音识别API
  698. });
  699. // 悬浮按钮功能
  700. document.querySelector('.floating-btn').addEventListener('click', function() {
  701. alert('开始语音咨询...');
  702. // 实际项目中这里会启动语音咨询功能
  703. });
  704. // 底部导航切换
  705. document.querySelectorAll('.nav-item').forEach(item => {
  706. item.addEventListener('click', function() {
  707. document.querySelectorAll('.nav-item').forEach(nav => {
  708. nav.classList.remove('active');
  709. });
  710. this.classList.add('active');
  711. });
  712. });
  713. // 模拟进度条动画
  714. window.addEventListener('load', function() {
  715. const progressBars = document.querySelectorAll('.progress-fill');
  716. progressBars.forEach(bar => {
  717. const width = bar.style.width;
  718. bar.style.width = '0%';
  719. setTimeout(() => {
  720. bar.style.width = width;
  721. }, 500);
  722. });
  723. });
  724. </script>
  725. </body>
  726. </html>