page-crm-image.scss 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622
  1. * {
  2. margin: 0;
  3. padding: 0;
  4. box-sizing: border-box;
  5. font-family: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  6. }
  7. :root {
  8. --primary: #4a8fe7;
  9. --primary-dark: #0a192f;
  10. --secondary: #5e72e4;
  11. --accent: #ff6b6b;
  12. --text-dark: #1a1a1a;
  13. --text-medium: #4a4a4a;
  14. --text-light: #8a8f9c;
  15. --bg-white: #ffffff;
  16. --bg-light: #f5f7fa;
  17. --card-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
  18. --border-radius: 12px;
  19. }
  20. body {
  21. background-color: var(--bg-white);
  22. color: var(--text-medium);
  23. padding: 0;
  24. max-width: 480px;
  25. margin: 0 auto;
  26. min-height: 100vh;
  27. position: relative;
  28. overflow-x: hidden;
  29. background: linear-gradient(to bottom, #f5f9ff 0%, #ffffff 100px);
  30. }
  31. .app-container {
  32. padding: 0 16px 40px;
  33. position: relative;
  34. }
  35. /* 头部导航 */
  36. .header {
  37. padding: 20px 0;
  38. display: flex;
  39. align-items: center;
  40. justify-content: space-between;
  41. }
  42. .header-title {
  43. font-size: 22px;
  44. font-weight: 700;
  45. color: var(--text-dark);
  46. display: flex;
  47. align-items: center;
  48. gap: 10px;
  49. }
  50. .header-title i {
  51. color: var(--primary);
  52. font-size: 24px;
  53. background: rgba(74, 143, 231, 0.1);
  54. width: 40px;
  55. height: 40px;
  56. border-radius: 12px;
  57. display: flex;
  58. align-items: center;
  59. justify-content: center;
  60. }
  61. /* 分析输入区 */
  62. .analysis-input {
  63. background: var(--bg-white);
  64. border-radius: var(--border-radius);
  65. box-shadow: var(--card-shadow);
  66. padding: 20px;
  67. margin-bottom: 24px;
  68. border: 1px solid rgba(0, 0, 0, 0.03);
  69. }
  70. .input-group {
  71. margin-bottom: 16px;
  72. }
  73. .input-group label {
  74. display: block;
  75. margin-bottom: 8px;
  76. font-weight: 600;
  77. color: var(--text-dark);
  78. font-size: 14px;
  79. }
  80. .input-group input,
  81. .input-group textarea {
  82. width: 100%;
  83. padding: 12px 16px;
  84. border-radius: var(--border-radius);
  85. border: 1px solid #e0e4e8;
  86. font-size: 14px;
  87. }
  88. .input-group input:focus,
  89. .input-group textarea:focus {
  90. outline: none;
  91. border-color: var(--primary);
  92. box-shadow: 0 0 0 3px rgba(74, 143, 231, 0.2);
  93. }
  94. .input-group textarea {
  95. min-height: 120px;
  96. resize: vertical;
  97. }
  98. .action-buttons {
  99. display: flex;
  100. gap: 12px;
  101. margin-top: 20px;
  102. }
  103. .btn {
  104. padding: 12px 20px;
  105. border-radius: var(--border-radius);
  106. font-size: 14px;
  107. font-weight: 600;
  108. border: none;
  109. cursor: pointer;
  110. flex: 1;
  111. display: flex;
  112. align-items: center;
  113. justify-content: center;
  114. gap: 8px;
  115. }
  116. .btn-primary {
  117. background: var(--primary);
  118. color: var(--text-dark);
  119. }
  120. .btn-secondary {
  121. background: var(--primary);
  122. color: var(--text-dark);
  123. opacity: 0.8;
  124. }
  125. /* 客户列表区 */
  126. .client-list-section {
  127. margin-bottom: 24px;
  128. }
  129. .section-header {
  130. display: flex;
  131. justify-content: space-between;
  132. align-items: center;
  133. margin-bottom: 16px;
  134. }
  135. .section-title {
  136. font-size: 18px;
  137. font-weight: 700;
  138. color: var(--text-dark);
  139. position: relative;
  140. padding-left: 12px;
  141. }
  142. .section-title:before {
  143. content: '';
  144. position: absolute;
  145. left: 0;
  146. top: 4px;
  147. height: 16px;
  148. width: 4px;
  149. background: var(--primary);
  150. border-radius: 2px;
  151. }
  152. .search-box {
  153. position: relative;
  154. margin-bottom: 16px;
  155. }
  156. .search-box input {
  157. width: 100%;
  158. padding: 12px 16px 12px 42px;
  159. border-radius: var(--border-radius);
  160. border: 1px solid #e0e4e8;
  161. font-size: 14px;
  162. }
  163. .search-box input:focus {
  164. outline: none;
  165. border-color: var(--primary);
  166. box-shadow: 0 0 0 3px rgba(74, 143, 231, 0.2);
  167. }
  168. .search-box i {
  169. position: absolute;
  170. left: 16px;
  171. top: 50%;
  172. transform: translateY(-50%);
  173. color: var(--text-light);
  174. }
  175. .client-list {
  176. background: var(--bg-white);
  177. border-radius: var(--border-radius);
  178. box-shadow: var(--card-shadow);
  179. overflow: hidden;
  180. border: 1px solid rgba(0, 0, 0, 0.03);
  181. }
  182. .client-item {
  183. padding: 16px;
  184. border-bottom: 1px solid #f0f2f5;
  185. display: flex;
  186. align-items: center;
  187. justify-content: space-between;
  188. cursor: pointer;
  189. }
  190. .client-item:last-child {
  191. border-bottom: none;
  192. }
  193. .client-item:hover {
  194. background: #f9fbfe;
  195. }
  196. .client-info {
  197. display: flex;
  198. align-items: center;
  199. gap: 12px;
  200. }
  201. .client-avatar {
  202. width: 40px;
  203. height: 40px;
  204. border-radius: 50%;
  205. background: linear-gradient(135deg, #4a8fe7, #5e72e4);
  206. display: flex;
  207. align-items: center;
  208. justify-content: center;
  209. color: white;
  210. font-weight: bold;
  211. font-size: 16px;
  212. }
  213. .client-name {
  214. font-weight: 600;
  215. color: var(--text-dark);
  216. margin-bottom: 2px;
  217. }
  218. .client-meta {
  219. font-size: 12px;
  220. color: var(--text-light);
  221. }
  222. .client-date {
  223. font-size: 12px;
  224. color: var(--text-light);
  225. }
  226. /* 智能推荐区 */
  227. .recommendation-section {
  228. margin-top: 24px;
  229. }
  230. .recommendation-cards {
  231. display: flex;
  232. flex-direction: column;
  233. gap: 16px;
  234. }
  235. .recommendation-card {
  236. background: var(--bg-white);
  237. border-radius: var(--border-radius);
  238. box-shadow: var(--card-shadow);
  239. padding: 20px;
  240. position: relative;
  241. border: 1px solid rgba(0, 0, 0, 0.03);
  242. }
  243. .card-header {
  244. display: flex;
  245. align-items: center;
  246. gap: 12px;
  247. margin-bottom: 16px;
  248. }
  249. .card-icon {
  250. width: 42px;
  251. height: 42px;
  252. border-radius: 12px;
  253. background: rgba(74, 143, 231, 0.15);
  254. display: flex;
  255. align-items: center;
  256. justify-content: center;
  257. color: var(--primary);
  258. font-size: 20px;
  259. }
  260. .card-title {
  261. font-size: 16px;
  262. font-weight: 700;
  263. color: var(--text-dark);
  264. }
  265. .recommendation-content {
  266. color: var(--text-medium);
  267. font-size: 14px;
  268. line-height: 1.6;
  269. margin-bottom: 16px;
  270. }
  271. .recommendation-action {
  272. display: flex;
  273. justify-content: space-between;
  274. align-items: center;
  275. }
  276. .tag {
  277. padding: 6px 12px;
  278. border-radius: 20px;
  279. background: var(--bg-light);
  280. font-size: 12px;
  281. color: var(--text-medium);
  282. font-weight: 500;
  283. }
  284. .action-btn {
  285. padding: 8px 16px;
  286. border-radius: 30px;
  287. background: var(--primary);
  288. color: white;
  289. font-size: 14px;
  290. font-weight: 600;
  291. border: none;
  292. cursor: pointer;
  293. }
  294. /* 弹窗样式 */
  295. .report-modal {
  296. position: fixed;
  297. top: 0;
  298. left: 0;
  299. right: 0;
  300. bottom: 0;
  301. background: rgba(0, 0, 0, 0.5);
  302. display: flex;
  303. align-items: center;
  304. justify-content: center;
  305. z-index: 1000;
  306. padding: 20px;
  307. }
  308. .modal-content {
  309. background: white;
  310. border-radius: var(--border-radius);
  311. width: 100%;
  312. max-width: 480px;
  313. max-height: 90vh;
  314. overflow-y: auto;
  315. box-shadow: var(--card-shadow);
  316. }
  317. .modal-header {
  318. padding: 20px;
  319. border-bottom: 1px solid #eee;
  320. text-align: center;
  321. position: relative;
  322. h2 {
  323. color: var(--primary);
  324. font-size: 20px;
  325. margin: 0;
  326. }
  327. }
  328. .back-btn {
  329. position: absolute;
  330. left: 20px;
  331. top: 50%;
  332. transform: translateY(-50%);
  333. background: none;
  334. border: none;
  335. font-size: 16px;
  336. color: var(--primary);
  337. cursor: pointer;
  338. }
  339. .modal-body {
  340. padding: 20px;
  341. }
  342. .form-group {
  343. margin-bottom: 20px;
  344. label {
  345. display: block;
  346. margin-bottom: 8px;
  347. font-weight: 600;
  348. color: var(--text-dark);
  349. font-size: 14px;
  350. }
  351. input {
  352. width: 100%;
  353. padding: 10px 12px;
  354. border-radius: var(--border-radius);
  355. border: 1px solid #e0e4e8;
  356. font-size: 14px;
  357. }
  358. }
  359. .info-item {
  360. display: flex;
  361. align-items: center;
  362. gap: 10px;
  363. padding: 12px 0;
  364. border-bottom: 1px solid #f5f5f5;
  365. i {
  366. color: var(--primary);
  367. width: 24px;
  368. text-align: center;
  369. }
  370. }
  371. .clickable-item {
  372. display: flex;
  373. align-items: center;
  374. justify-content: space-between;
  375. padding: 12px 0;
  376. border-bottom: 1px solid #f5f5f5;
  377. cursor: pointer;
  378. i:first-child {
  379. color: var(--primary);
  380. width: 24px;
  381. text-align: center;
  382. }
  383. i.fa-chevron-right {
  384. color: var(--text-light);
  385. }
  386. &:hover {
  387. background-color: #f9f9f9;
  388. }
  389. }
  390. .text-content {
  391. padding: 15px;
  392. background: #f9f9f9;
  393. border-radius: 8px;
  394. margin-top: 15px;
  395. line-height: 1.6;
  396. }
  397. .analysis-grid {
  398. display: grid;
  399. grid-template-columns: repeat(2, 1fr);
  400. gap: 12px;
  401. margin-top: 15px;
  402. }
  403. .analysis-item {
  404. background: #f5f7fa;
  405. padding: 12px;
  406. border-radius: 8px;
  407. display: flex;
  408. align-items: center;
  409. gap: 8px;
  410. i {
  411. color: var(--primary);
  412. }
  413. }
  414. .modal-footer {
  415. padding: 20px;
  416. text-align: center;
  417. border-top: 1px solid #eee;
  418. }
  419. .btn-confirm {
  420. background: var(--primary);
  421. color: white;
  422. padding: 12px 24px;
  423. border-radius: 30px;
  424. border: none;
  425. font-weight: 600;
  426. cursor: pointer;
  427. }
  428. * {
  429. margin: 0;
  430. padding: 0;
  431. box-sizing: border-box;
  432. font-family: 'Segoe UI', 'PingFang SC', 'Microsoft YaHei', sans-serif;
  433. }
  434. :root {
  435. --primary: #4a8fe7;
  436. --primary-dark: #0a192f;
  437. --secondary: #5e72e4;
  438. --accent: #ff6b6b;
  439. --text-dark: #1a1a1a;
  440. --text-medium: #4a4a4a;
  441. --text-light: #8a8f9c;
  442. --bg-white: #ffffff;
  443. --bg-light: #f5f7fa;
  444. --card-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);
  445. --border-radius: 12px;
  446. }
  447. body {
  448. background-color: var(--bg-white);
  449. color: var(--text-medium);
  450. padding: 0;
  451. max-width: 480px;
  452. margin: 0 auto;
  453. min-height: 100vh;
  454. position: relative;
  455. overflow-x: hidden;
  456. background: linear-gradient(to bottom, #f5f9ff 0%, #ffffff 100px);
  457. }
  458. .app-container {
  459. padding: 0 16px 40px;
  460. position: relative;
  461. }
  462. /* 按钮样式 */
  463. .btn {
  464. padding: 12px 20px;
  465. border-radius: var(--border-radius);
  466. font-size: 14px;
  467. font-weight: 600;
  468. border: none;
  469. cursor: pointer;
  470. flex: 1;
  471. display: flex;
  472. align-items: center;
  473. justify-content: center;
  474. gap: 8px;
  475. transition: all 0.2s ease;
  476. }
  477. .btn-blue {
  478. background: var(--primary);
  479. color: white;
  480. &:hover {
  481. background: #3a7bd5;
  482. box-shadow: 0 4px 8px rgba(74, 143, 231, 0.3);
  483. }
  484. }
  485. .action-btn {
  486. padding: 8px 16px;
  487. border-radius: 30px;
  488. background: var(--primary);
  489. color: white;
  490. font-size: 14px;
  491. font-weight: 600;
  492. border: none;
  493. cursor: pointer;
  494. }
  495. .btn-confirm {
  496. @extend .btn-blue;
  497. padding: 12px 24px;
  498. }
  499. /* 弹窗导航按钮 */
  500. .back-btn {
  501. background: none;
  502. border: none;
  503. color: var(--primary);
  504. font-size: 14px;
  505. cursor: pointer;
  506. display: flex;
  507. align-items: center;
  508. gap: 5px;
  509. padding: 5px 10px;
  510. border-radius: 4px;
  511. &:hover {
  512. background: rgba(74, 143, 231, 0.1);
  513. }
  514. i {
  515. font-size: 12px;
  516. }
  517. }
  518. .close-btn {
  519. background: none;
  520. border: none;
  521. color: var(--text-light);
  522. font-size: 16px;
  523. cursor: pointer;
  524. padding: 5px;
  525. &:hover {
  526. color: var(--primary);
  527. }
  528. }
  529. /* 弹窗头部布局 */
  530. .modal-header {
  531. display: flex;
  532. justify-content: space-between;
  533. align-items: center;
  534. padding: 15px 20px;
  535. position: relative;
  536. border-bottom: 1px solid #eee;
  537. h2 {
  538. margin: 0 auto;
  539. padding: 0 30px;
  540. font-size: 18px;
  541. color: var(--text-dark);
  542. }
  543. }