AI-User-XiaoShou.html 49 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364
  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>九州管理 - 智能AI权限管理系统</title>
  7. <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
  8. <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
  9. <style>
  10. * {
  11. margin: 0;
  12. padding: 0;
  13. box-sizing: border-box;
  14. font-family: 'Segoe UI', 'Microsoft YaHei', sans-serif;
  15. }
  16. :root {
  17. --primary: #1a56db;
  18. --secondary: #0e2a53;
  19. --accent: #f59e0b;
  20. --success: #10b981;
  21. --danger: #ef4444;
  22. --light: #f8fafc;
  23. --dark: #0f172a;
  24. --card-bg: rgba(255, 255, 255, 0.85);
  25. --glass: rgba(255, 255, 255, 0.1);
  26. --glass-border: rgba(255, 255, 255, 0.2);
  27. --shadow: 0 8px 32px rgba(31, 38, 135, 0.15);
  28. }
  29. body {
  30. background: linear-gradient(135deg, #0f172a, #1e293b);
  31. color: var(--light);
  32. min-height: 100vh;
  33. padding: 20px;
  34. position: relative;
  35. overflow-x: hidden;
  36. }
  37. body::before {
  38. content: '';
  39. position: absolute;
  40. top: 0;
  41. left: 0;
  42. right: 0;
  43. bottom: 0;
  44. background:
  45. radial-gradient(circle at 10% 20%, rgba(26, 86, 219, 0.15) 0%, transparent 30%),
  46. radial-gradient(circle at 90% 80%, rgba(245, 158, 11, 0.15) 0%, transparent 30%);
  47. z-index: -1;
  48. }
  49. .container {
  50. max-width: 1200px;
  51. margin: 0 auto;
  52. }
  53. /* 头部样式 */
  54. header {
  55. display: flex;
  56. justify-content: space-between;
  57. align-items: center;
  58. padding: 20px 0;
  59. margin-bottom: 30px;
  60. border-bottom: 1px solid var(--glass-border);
  61. }
  62. .logo {
  63. display: flex;
  64. align-items: center;
  65. gap: 15px;
  66. }
  67. .logo-icon {
  68. width: 50px;
  69. height: 50px;
  70. background: linear-gradient(135deg, var(--primary), #3b82f6);
  71. border-radius: 12px;
  72. display: flex;
  73. align-items: center;
  74. justify-content: center;
  75. font-size: 24px;
  76. box-shadow: var(--shadow);
  77. }
  78. .logo-text h1 {
  79. font-size: 24px;
  80. font-weight: 700;
  81. background: linear-gradient(to right, #fbcfe8, #c7d2fe);
  82. -webkit-background-clip: text;
  83. -webkit-text-fill-color: transparent;
  84. }
  85. .logo-text p {
  86. font-size: 14px;
  87. color: #cbd5e1;
  88. letter-spacing: 1px;
  89. }
  90. .user-actions {
  91. display: flex;
  92. gap: 15px;
  93. }
  94. .btn {
  95. padding: 10px 20px;
  96. border-radius: 10px;
  97. font-weight: 600;
  98. cursor: pointer;
  99. transition: all 0.3s ease;
  100. border: none;
  101. display: flex;
  102. align-items: center;
  103. gap: 8px;
  104. }
  105. .btn-primary {
  106. background: linear-gradient(135deg, var(--primary), #3b82f6);
  107. color: white;
  108. box-shadow: 0 4px 6px rgba(26, 86, 219, 0.3);
  109. }
  110. .btn-primary:hover {
  111. transform: translateY(-2px);
  112. box-shadow: 0 6px 12px rgba(26, 86, 219, 0.4);
  113. }
  114. .btn-outline {
  115. background: transparent;
  116. border: 1px solid var(--glass-border);
  117. color: #e2e8f0;
  118. }
  119. .btn-outline:hover {
  120. background: rgba(255, 255, 255, 0.1);
  121. }
  122. /* 主内容区 */
  123. .dashboard {
  124. display: flex;
  125. gap: 25px;
  126. margin-bottom: 30px;
  127. }
  128. /* 左侧面板 */
  129. .sidebar {
  130. flex: 0 0 280px;
  131. background: var(--glass);
  132. backdrop-filter: blur(10px);
  133. border-radius: 20px;
  134. border: 1px solid var(--glass-border);
  135. padding: 25px;
  136. box-shadow: var(--shadow);
  137. height: fit-content;
  138. }
  139. .section-title {
  140. font-size: 18px;
  141. font-weight: 600;
  142. margin-bottom: 20px;
  143. display: flex;
  144. align-items: center;
  145. gap: 10px;
  146. color: #e2e8f0;
  147. }
  148. .section-title i {
  149. color: var(--accent);
  150. }
  151. .filters {
  152. display: flex;
  153. flex-direction: column;
  154. gap: 15px;
  155. }
  156. .filter-group {
  157. display: flex;
  158. flex-direction: column;
  159. gap: 8px;
  160. }
  161. .filter-group label {
  162. font-size: 14px;
  163. color: #94a3b8;
  164. font-weight: 500;
  165. }
  166. .tag-filters {
  167. display: flex;
  168. flex-wrap: wrap;
  169. gap: 10px;
  170. margin-top: 5px;
  171. }
  172. .tag {
  173. padding: 5px 12px;
  174. border-radius: 20px;
  175. font-size: 12px;
  176. font-weight: 500;
  177. cursor: pointer;
  178. transition: all 0.2s ease;
  179. }
  180. .tag:hover {
  181. transform: translateY(-2px);
  182. }
  183. .tag.active {
  184. box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  185. }
  186. .tag-rookie {
  187. background: linear-gradient(135deg, #60a5fa, #3b82f6);
  188. color: white;
  189. }
  190. .tag-silver {
  191. background: linear-gradient(135deg, #cbd5e1, #94a3b8);
  192. color: var(--dark);
  193. }
  194. .tag-gold {
  195. background: linear-gradient(135deg, #fcd34d, #f59e0b);
  196. color: var(--dark);
  197. }
  198. .tag-platinum {
  199. background: linear-gradient(135deg, #a5b4fc, #818cf8);
  200. color: white;
  201. }
  202. .tag-diamond {
  203. background: linear-gradient(135deg, #67e8f9, #22d3ee);
  204. color: var(--dark);
  205. }
  206. .stats-card {
  207. background: var(--glass);
  208. backdrop-filter: blur(10px);
  209. border-radius: 15px;
  210. border: 1px solid var(--glass-border);
  211. padding: 15px;
  212. margin-top: 20px;
  213. }
  214. .stat-item {
  215. display: flex;
  216. justify-content: space-between;
  217. padding: 10px 0;
  218. border-bottom: 1px solid rgba(255, 255, 255, 0.05);
  219. }
  220. .stat-item:last-child {
  221. border-bottom: none;
  222. }
  223. .stat-value {
  224. font-weight: 700;
  225. font-size: 18px;
  226. background: linear-gradient(to right, #fbcfe8, #c7d2fe);
  227. -webkit-background-clip: text;
  228. -webkit-text-fill-color: transparent;
  229. }
  230. /* 主面板 */
  231. .main-content {
  232. flex: 1;
  233. display: flex;
  234. flex-direction: column;
  235. gap: 25px;
  236. }
  237. .ai-header {
  238. background: var(--glass);
  239. backdrop-filter: blur(10px);
  240. border-radius: 20px;
  241. border: 1px solid var(--glass-border);
  242. padding: 25px;
  243. box-shadow: var(--shadow);
  244. display: flex;
  245. justify-content: space-between;
  246. align-items: center;
  247. }
  248. .ai-title {
  249. font-size: 24px;
  250. font-weight: 700;
  251. margin-bottom: 10px;
  252. background: linear-gradient(to right, #fde68a, #fcd34d);
  253. -webkit-background-clip: text;
  254. -webkit-text-fill-color: transparent;
  255. }
  256. .ai-subtitle {
  257. color: #cbd5e1;
  258. max-width: 600px;
  259. line-height: 1.6;
  260. }
  261. .ai-highlight {
  262. color: var(--accent);
  263. font-weight: 600;
  264. }
  265. .ai-power {
  266. font-size: 48px;
  267. color: var(--accent);
  268. opacity: 0.7;
  269. }
  270. .cards-container {
  271. display: grid;
  272. grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  273. gap: 20px;
  274. margin-bottom: 30px;
  275. }
  276. .card {
  277. background: var(--card-bg);
  278. backdrop-filter: blur(10px);
  279. border-radius: 20px;
  280. border: 1px solid rgba(255, 255, 255, 0.2);
  281. overflow: hidden;
  282. box-shadow: var(--shadow);
  283. transition: all 0.3s ease;
  284. color: var(--dark);
  285. }
  286. .card:hover {
  287. transform: translateY(-5px);
  288. box-shadow: 0 12px 20px rgba(31, 38, 135, 0.2);
  289. }
  290. .card-header {
  291. padding: 20px;
  292. display: flex;
  293. align-items: center;
  294. gap: 15px;
  295. border-bottom: 1px solid rgba(0, 0, 0, 0.05);
  296. position: relative;
  297. }
  298. .card-header::before {
  299. content: '';
  300. position: absolute;
  301. top: 0;
  302. left: 0;
  303. right: 0;
  304. height: 4px;
  305. }
  306. .rookie .card-header::before { background: linear-gradient(90deg, #60a5fa, #3b82f6); }
  307. .silver .card-header::before { background: linear-gradient(90deg, #cbd5e1, #94a3b8); }
  308. .gold .card-header::before { background: linear-gradient(90deg, #fcd34d, #f59e0b); }
  309. .platinum .card-header::before { background: linear-gradient(90deg, #a5b4fc, #818cf8); }
  310. .diamond .card-header::before { background: linear-gradient(90deg, #67e8f9, #22d3ee); }
  311. .avatar {
  312. width: 60px;
  313. height: 60px;
  314. border-radius: 50%;
  315. overflow: hidden;
  316. border: 3px solid white;
  317. box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  318. }
  319. .avatar img {
  320. width: 100%;
  321. height: 100%;
  322. object-fit: cover;
  323. }
  324. .user-info {
  325. flex: 1;
  326. }
  327. .user-info h3 {
  328. font-size: 18px;
  329. font-weight: 700;
  330. margin-bottom: 5px;
  331. color: var(--dark);
  332. }
  333. .user-info p {
  334. font-size: 14px;
  335. color: #64748b;
  336. }
  337. .user-tag {
  338. padding: 4px 12px;
  339. border-radius: 20px;
  340. font-size: 12px;
  341. font-weight: 600;
  342. margin-top: 5px;
  343. display: inline-block;
  344. }
  345. .card-body {
  346. padding: 20px;
  347. display: flex;
  348. flex-direction: column;
  349. gap: 15px;
  350. }
  351. .stats {
  352. display: flex;
  353. justify-content: space-between;
  354. text-align: center;
  355. }
  356. .stat {
  357. flex: 1;
  358. }
  359. .stat-value {
  360. font-size: 20px;
  361. font-weight: 700;
  362. margin-bottom: 5px;
  363. }
  364. .stat-label {
  365. font-size: 12px;
  366. color: #64748b;
  367. }
  368. .progress-container {
  369. margin-top: 5px;
  370. }
  371. .progress-label {
  372. display: flex;
  373. justify-content: space-between;
  374. font-size: 12px;
  375. color: #64748b;
  376. margin-bottom: 5px;
  377. }
  378. .progress-bar {
  379. height: 8px;
  380. background: #e2e8f0;
  381. border-radius: 10px;
  382. overflow: hidden;
  383. }
  384. .progress {
  385. height: 100%;
  386. border-radius: 10px;
  387. }
  388. .card-footer {
  389. padding: 15px 20px;
  390. background: rgba(241, 245, 249, 0.7);
  391. display: flex;
  392. justify-content: space-between;
  393. border-top: 1px solid rgba(0, 0, 0, 0.05);
  394. }
  395. .permission-btn {
  396. padding: 8px 15px;
  397. border-radius: 8px;
  398. font-size: 12px;
  399. font-weight: 600;
  400. cursor: pointer;
  401. display: flex;
  402. align-items: center;
  403. gap: 5px;
  404. border: none;
  405. transition: all 0.2s ease;
  406. }
  407. .permission-btn:hover {
  408. transform: translateY(-2px);
  409. }
  410. .btn-edit {
  411. background: linear-gradient(135deg, #a5b4fc, #818cf8);
  412. color: white;
  413. }
  414. .btn-details {
  415. background: rgba(203, 213, 225, 0.5);
  416. color: var(--dark);
  417. }
  418. /* 图表容器 */
  419. .chart-container {
  420. background: var(--card-bg);
  421. backdrop-filter: blur(10px);
  422. border-radius: 20px;
  423. border: 1px solid rgba(255, 255, 255, 0.2);
  424. padding: 25px;
  425. box-shadow: var(--shadow);
  426. margin-bottom: 30px;
  427. }
  428. .chart-header {
  429. display: flex;
  430. justify-content: space-between;
  431. align-items: center;
  432. margin-bottom: 20px;
  433. }
  434. .chart-title {
  435. font-size: 20px;
  436. font-weight: 600;
  437. color: var(--dark);
  438. }
  439. .chart-actions {
  440. display: flex;
  441. gap: 10px;
  442. }
  443. .chart-wrapper {
  444. height: 300px;
  445. position: relative;
  446. }
  447. /* AI权限管理面板 */
  448. .permission-modal {
  449. position: fixed;
  450. top: 0;
  451. left: 0;
  452. right: 0;
  453. bottom: 0;
  454. background: rgba(15, 23, 42, 0.9);
  455. display: flex;
  456. align-items: center;
  457. justify-content: center;
  458. z-index: 1000;
  459. opacity: 0;
  460. visibility: hidden;
  461. transition: all 0.3s ease;
  462. }
  463. .permission-modal.active {
  464. opacity: 1;
  465. visibility: visible;
  466. }
  467. .modal-content {
  468. background: var(--card-bg);
  469. width: 90%;
  470. max-width: 600px;
  471. border-radius: 20px;
  472. box-shadow: var(--shadow);
  473. overflow: hidden;
  474. transform: translateY(20px);
  475. transition: transform 0.3s ease;
  476. }
  477. .permission-modal.active .modal-content {
  478. transform: translateY(0);
  479. }
  480. .modal-header {
  481. padding: 20px;
  482. background: linear-gradient(135deg, var(--primary), #3b82f6);
  483. color: white;
  484. display: flex;
  485. justify-content: space-between;
  486. align-items: center;
  487. }
  488. .modal-header h2 {
  489. font-size: 22px;
  490. }
  491. .close-btn {
  492. background: transparent;
  493. border: none;
  494. color: white;
  495. font-size: 24px;
  496. cursor: pointer;
  497. }
  498. .modal-body {
  499. padding: 25px;
  500. color: var(--dark);
  501. }
  502. .ai-recommendation {
  503. background: rgba(26, 86, 219, 0.1);
  504. border-left: 4px solid var(--primary);
  505. padding: 15px;
  506. margin-bottom: 20px;
  507. border-radius: 0 8px 8px 0;
  508. }
  509. .ai-recommendation p {
  510. margin-bottom: 10px;
  511. }
  512. .ai-recommendation .btn {
  513. margin-top: 10px;
  514. }
  515. .permission-options {
  516. display: flex;
  517. flex-direction: column;
  518. gap: 15px;
  519. }
  520. .permission-option {
  521. display: flex;
  522. justify-content: space-between;
  523. align-items: center;
  524. padding: 12px 15px;
  525. background: rgba(241, 245, 249, 0.5);
  526. border-radius: 10px;
  527. }
  528. .permission-info {
  529. flex: 1;
  530. }
  531. .permission-info h3 {
  532. font-size: 16px;
  533. margin-bottom: 5px;
  534. }
  535. .permission-info p {
  536. font-size: 13px;
  537. color: #64748b;
  538. }
  539. .switch {
  540. position: relative;
  541. display: inline-block;
  542. width: 50px;
  543. height: 24px;
  544. }
  545. .switch input {
  546. opacity: 0;
  547. width: 0;
  548. height: 0;
  549. }
  550. .slider {
  551. position: absolute;
  552. cursor: pointer;
  553. top: 0;
  554. left: 0;
  555. right: 0;
  556. bottom: 0;
  557. background-color: #ccc;
  558. transition: .4s;
  559. border-radius: 24px;
  560. }
  561. .slider:before {
  562. position: absolute;
  563. content: "";
  564. height: 16px;
  565. width: 16px;
  566. left: 4px;
  567. bottom: 4px;
  568. background-color: white;
  569. transition: .4s;
  570. border-radius: 50%;
  571. }
  572. input:checked + .slider {
  573. background-color: var(--success);
  574. }
  575. input:checked + .slider:before {
  576. transform: translateX(26px);
  577. }
  578. .modal-footer {
  579. padding: 20px;
  580. display: flex;
  581. justify-content: flex-end;
  582. gap: 15px;
  583. border-top: 1px solid rgba(0, 0, 0, 0.1);
  584. }
  585. /* 响应式调整 */
  586. @media (max-width: 992px) {
  587. .dashboard {
  588. flex-direction: column;
  589. }
  590. .sidebar {
  591. width: 100%;
  592. }
  593. }
  594. @media (max-width: 576px) {
  595. .cards-container {
  596. grid-template-columns: 1fr;
  597. }
  598. .ai-header {
  599. flex-direction: column;
  600. text-align: center;
  601. gap: 20px;
  602. }
  603. .user-actions {
  604. flex-wrap: wrap;
  605. justify-content: center;
  606. }
  607. }
  608. </style>
  609. </head>
  610. <body>
  611. <div class="container">
  612. <header>
  613. <div class="logo">
  614. <div class="logo-icon">
  615. <i class="fas fa-crown"></i>
  616. </div>
  617. <div class="logo-text">
  618. <h1>九州管理</h1>
  619. <p>智能AI权限管理系统</p>
  620. </div>
  621. </div>
  622. <div class="user-actions">
  623. <button class="btn btn-outline">
  624. <i class="fas fa-sync-alt"></i> 刷新数据
  625. </button>
  626. <button class="btn btn-primary" id="addSalesBtn">
  627. <i class="fas fa-plus"></i> 添加销售
  628. </button>
  629. </div>
  630. </header>
  631. <div class="dashboard">
  632. <div class="sidebar">
  633. <div class="section-title">
  634. <i class="fas fa-filter"></i>
  635. <span>智能筛选</span>
  636. </div>
  637. <div class="filters">
  638. <div class="filter-group">
  639. <label>销售等级</label>
  640. <div class="tag-filters">
  641. <div class="tag tag-rookie active">实习销售</div>
  642. <div class="tag tag-silver">白银销售</div>
  643. <div class="tag tag-gold">黄金销售</div>
  644. <div class="tag tag-platinum">铂金销售</div>
  645. <div class="tag tag-diamond">钻石销售</div>
  646. </div>
  647. </div>
  648. <div class="filter-group">
  649. <label>业绩范围</label>
  650. <input type="range" min="0" max="100" value="50" class="slider">
  651. </div>
  652. <div class="filter-group">
  653. <label>权限级别</label>
  654. <select class="select">
  655. <option>全部权限</option>
  656. <option>基础权限</option>
  657. <option>高级权限</option>
  658. <option>管理员权限</option>
  659. </select>
  660. </div>
  661. <button class="btn btn-primary" style="margin-top: 15px;" id="aiRecommendBtn">
  662. <i class="fas fa-robot"></i> AI智能推荐
  663. </button>
  664. </div>
  665. <div class="stats-card">
  666. <div class="section-title">
  667. <i class="fas fa-chart-line"></i>
  668. <span>团队统计</span>
  669. </div>
  670. <div class="stat-item">
  671. <div>团队成员</div>
  672. <div class="stat-value">24人</div>
  673. </div>
  674. <div class="stat-item">
  675. <div>平均业绩</div>
  676. <div class="stat-value">¥86,540</div>
  677. </div>
  678. <div class="stat-item">
  679. <div>本月成交率</div>
  680. <div class="stat-value">72.5%</div>
  681. </div>
  682. <div class="stat-item">
  683. <div>AI标签准确率</div>
  684. <div class="stat-value">94.8%</div>
  685. </div>
  686. </div>
  687. </div>
  688. <div class="main-content">
  689. <div class="ai-header">
  690. <div>
  691. <div class="ai-title">AI智能权限管理系统</div>
  692. <div class="ai-subtitle">基于深度学习的销售行为分析,<span class="ai-highlight">自动生成销售标签</span>,智能分配权限级别,动态优化团队结构,提升整体销售业绩</div>
  693. </div>
  694. <div class="ai-power">
  695. <i class="fas fa-brain"></i>
  696. </div>
  697. </div>
  698. <div class="cards-container">
  699. <!-- 实习销售 -->
  700. <div class="card rookie" data-sales-id="1">
  701. <div class="card-header">
  702. <div class="avatar">
  703. <img src="https://randomuser.me/api/portraits/women/44.jpg" alt="销售头像">
  704. </div>
  705. <div class="user-info">
  706. <h3>张雨欣</h3>
  707. <p>入职时间: 2023-08-15</p>
  708. <span class="user-tag tag-rookie">实习销售</span>
  709. </div>
  710. </div>
  711. <div class="card-body">
  712. <div class="stats">
  713. <div class="stat">
  714. <div class="stat-value">¥24,500</div>
  715. <div class="stat-label">本月业绩</div>
  716. </div>
  717. <div class="stat">
  718. <div class="stat-value">58%</div>
  719. <div class="stat-label">成交率</div>
  720. </div>
  721. <div class="stat">
  722. <div class="stat-value">12</div>
  723. <div class="stat-label">客户数</div>
  724. </div>
  725. </div>
  726. <div class="progress-container">
  727. <div class="progress-label">
  728. <span>培训进度</span>
  729. <span>65%</span>
  730. </div>
  731. <div class="progress-bar">
  732. <div class="progress" style="width: 65%; background: #60a5fa;"></div>
  733. </div>
  734. </div>
  735. <div class="progress-container">
  736. <div class="progress-label">
  737. <span>AI能力评估</span>
  738. <span>42%</span>
  739. </div>
  740. <div class="progress-bar">
  741. <div class="progress" style="width: 42%; background: #3b82f6;"></div>
  742. </div>
  743. </div>
  744. </div>
  745. <div class="card-footer">
  746. <button class="permission-btn btn-edit edit-permission">
  747. <i class="fas fa-user-cog"></i> 权限管理
  748. </button>
  749. <button class="permission-btn btn-details">
  750. <i class="fas fa-chart-bar"></i> 业绩详情
  751. </button>
  752. </div>
  753. </div>
  754. <!-- 白银销售 -->
  755. <div class="card silver" data-sales-id="2">
  756. <div class="card-header">
  757. <div class="avatar">
  758. <img src="https://randomuser.me/api/portraits/men/32.jpg" alt="销售头像">
  759. </div>
  760. <div class="user-info">
  761. <h3>王建国</h3>
  762. <p>入职时间: 2022-11-03</p>
  763. <span class="user-tag tag-silver">白银销售</span>
  764. </div>
  765. </div>
  766. <div class="card-body">
  767. <div class="stats">
  768. <div class="stat">
  769. <div class="stat-value">¥68,200</div>
  770. <div class="stat-label">本月业绩</div>
  771. </div>
  772. <div class="stat">
  773. <div class="stat-value">76%</div>
  774. <div class="stat-label">成交率</div>
  775. </div>
  776. <div class="stat">
  777. <div class="stat-value">21</div>
  778. <div class="stat-label">客户数</div>
  779. </div>
  780. </div>
  781. <div class="progress-container">
  782. <div class="progress-label">
  783. <span>客户满意度</span>
  784. <span>88%</span>
  785. </div>
  786. <div class="progress-bar">
  787. <div class="progress" style="width: 88%; background: #94a3b8;"></div>
  788. </div>
  789. </div>
  790. <div class="progress-container">
  791. <div class="progress-label">
  792. <span>AI能力评估</span>
  793. <span>78%</span>
  794. </div>
  795. <div class="progress-bar">
  796. <div class="progress" style="width: 78%; background: #64748b;"></div>
  797. </div>
  798. </div>
  799. </div>
  800. <div class="card-footer">
  801. <button class="permission-btn btn-edit edit-permission">
  802. <i class="fas fa-user-cog"></i> 权限管理
  803. </button>
  804. <button class="permission-btn btn-details">
  805. <i class="fas fa-chart-bar"></i> 业绩详情
  806. </button>
  807. </div>
  808. </div>
  809. <!-- 黄金销售 -->
  810. <div class="card gold" data-sales-id="3">
  811. <div class="card-header">
  812. <div class="avatar">
  813. <img src="https://randomuser.me/api/portraits/women/68.jpg" alt="销售头像">
  814. </div>
  815. <div class="user-info">
  816. <h3>李思琪</h3>
  817. <p>入职时间: 2021-05-22</p>
  818. <span class="user-tag tag-gold">黄金销售</span>
  819. </div>
  820. </div>
  821. <div class="card-body">
  822. <div class="stats">
  823. <div class="stat">
  824. <div class="stat-value">¥128,400</div>
  825. <div class="stat-label">本月业绩</div>
  826. </div>
  827. <div class="stat">
  828. <div class="stat-value">84%</div>
  829. <div class="stat-label">成交率</div>
  830. </div>
  831. <div class="stat">
  832. <div class="stat-value">29</div>
  833. <div class="stat-label">客户数</div>
  834. </div>
  835. </div>
  836. <div class="progress-container">
  837. <div class="progress-label">
  838. <span>大客户占比</span>
  839. <span>42%</span>
  840. </div>
  841. <div class="progress-bar">
  842. <div class="progress" style="width: 42%; background: #f59e0b;"></div>
  843. </div>
  844. </div>
  845. <div class="progress-container">
  846. <div class="progress-label">
  847. <span>AI能力评估</span>
  848. <span>92%</span>
  849. </div>
  850. <div class="progress-bar">
  851. <div class="progress" style="width: 92%; background: #fbbf24;"></div>
  852. </div>
  853. </div>
  854. </div>
  855. <div class="card-footer">
  856. <button class="permission-btn btn-edit edit-permission">
  857. <i class="fas fa-user-cog"></i> 权限管理
  858. </button>
  859. <button class="permission-btn btn-details">
  860. <i class="fas fa-chart-bar"></i> 业绩详情
  861. </button>
  862. </div>
  863. </div>
  864. <!-- 铂金销售 -->
  865. <div class="card platinum" data-sales-id="4">
  866. <div class="card-header">
  867. <div class="avatar">
  868. <img src="https://randomuser.me/api/portraits/men/75.jpg" alt="销售头像">
  869. </div>
  870. <div class="user-info">
  871. <h3>陈志强</h3>
  872. <p>入职时间: 2020-03-14</p>
  873. <span class="user-tag tag-platinum">铂金销售</span>
  874. </div>
  875. </div>
  876. <div class="card-body">
  877. <div class="stats">
  878. <div class="stat">
  879. <div class="stat-value">¥210,800</div>
  880. <div class="stat-label">本月业绩</div>
  881. </div>
  882. <div class="stat">
  883. <div class="stat-value">91%</div>
  884. <div class="stat-label">成交率</div>
  885. </div>
  886. <div class="stat">
  887. <div class="stat-value">18</div>
  888. <div class="stat-label">客户数</div>
  889. </div>
  890. </div>
  891. <div class="progress-container">
  892. <div class="progress-label">
  893. <span>客单价</span>
  894. <span>¥11,711</span>
  895. </div>
  896. <div class="progress-bar">
  897. <div class="progress" style="width: 85%; background: #818cf8;"></div>
  898. </div>
  899. </div>
  900. <div class="progress-container">
  901. <div class="progress-label">
  902. <span>AI能力评估</span>
  903. <span>97%</span>
  904. </div>
  905. <div class="progress-bar">
  906. <div class="progress" style="width: 97%; background: #a5b4fc;"></div>
  907. </div>
  908. </div>
  909. </div>
  910. <div class="card-footer">
  911. <button class="permission-btn btn-edit edit-permission">
  912. <i class="fas fa-user-cog"></i> 权限管理
  913. </button>
  914. <button class="permission-btn btn-details">
  915. <i class="fas fa-chart-bar"></i> 业绩详情
  916. </button>
  917. </div>
  918. </div>
  919. <!-- 钻石销售 -->
  920. <div class="card diamond" data-sales-id="5">
  921. <div class="card-header">
  922. <div class="avatar">
  923. <img src="https://randomuser.me/api/portraits/women/26.jpg" alt="销售头像">
  924. </div>
  925. <div class="user-info">
  926. <h3>赵雅芝</h3>
  927. <p>入职时间: 2019-08-07</p>
  928. <span class="user-tag tag-diamond">钻石销售</span>
  929. </div>
  930. </div>
  931. <div class="card-body">
  932. <div class="stats">
  933. <div class="stat">
  934. <div class="stat-value">¥356,700</div>
  935. <div class="stat-label">本月业绩</div>
  936. </div>
  937. <div class="stat">
  938. <div class="stat-value">96%</div>
  939. <div class="stat-label">成交率</div>
  940. </div>
  941. <div class="stat">
  942. <div class="stat-value">15</div>
  943. <div class="stat-label">客户数</div>
  944. </div>
  945. </div>
  946. <div class="progress-container">
  947. <div class="progress-label">
  948. <span>复购率</span>
  949. <span>63%</span>
  950. </div>
  951. <div class="progress-bar">
  952. <div class="progress" style="width: 63%; background: #22d3ee;"></div>
  953. </div>
  954. </div>
  955. <div class="progress-container">
  956. <div class="progress-label">
  957. <span>AI能力评估</span>
  958. <span>99%</span>
  959. </div>
  960. <div class="progress-bar">
  961. <div class="progress" style="width: 99%; background: #67e8f9;"></div>
  962. </div>
  963. </div>
  964. </div>
  965. <div class="card-footer">
  966. <button class="permission-btn btn-edit edit-permission">
  967. <i class="fas fa-user-cog"></i> 权限管理
  968. </button>
  969. <button class="permission-btn btn-details">
  970. <i class="fas fa-chart-bar"></i> 业绩详情
  971. </button>
  972. </div>
  973. </div>
  974. </div>
  975. <div class="chart-container">
  976. <div class="chart-header">
  977. <div class="chart-title">销售团队业绩分析</div>
  978. <div class="chart-actions">
  979. <button class="btn btn-outline">
  980. <i class="fas fa-download"></i> 导出
  981. </button>
  982. <button class="btn btn-primary">
  983. <i class="fas fa-sync-alt"></i> 更新
  984. </button>
  985. </div>
  986. </div>
  987. <div class="chart-wrapper">
  988. <canvas id="salesChart"></canvas>
  989. </div>
  990. </div>
  991. </div>
  992. </div>
  993. </div>
  994. <!-- AI权限管理面板 -->
  995. <div class="permission-modal" id="permissionModal">
  996. <div class="modal-content">
  997. <div class="modal-header">
  998. <h2>AI权限管理</h2>
  999. <button class="close-btn" id="closeModal">&times;</button>
  1000. </div>
  1001. <div class="modal-body">
  1002. <div class="ai-recommendation">
  1003. <p><i class="fas fa-lightbulb"></i> AI建议:根据该销售表现,建议升级为<span class="ai-highlight">黄金销售</span>权限级别</p>
  1004. <button class="btn btn-primary">
  1005. <i class="fas fa-check"></i> 应用AI建议
  1006. </button>
  1007. </div>
  1008. <div class="permission-options">
  1009. <div class="permission-option">
  1010. <div class="permission-info">
  1011. <h3>客户数据访问</h3>
  1012. <p>允许查看和编辑客户信息</p>
  1013. </div>
  1014. <label class="switch">
  1015. <input type="checkbox" checked>
  1016. <span class="slider"></span>
  1017. </label>
  1018. </div>
  1019. <div class="permission-option">
  1020. <div class="permission-info">
  1021. <h3>报价修改权限</h3>
  1022. <p>允许修改套餐价格和优惠</p>
  1023. </div>
  1024. <label class="switch">
  1025. <input type="checkbox">
  1026. <span class="slider"></span>
  1027. </label>
  1028. </div>
  1029. <div class="permission-option">
  1030. <div class="permission-info">
  1031. <h3>AI陪练系统</h3>
  1032. <p>使用AI虚拟陪练功能</p>
  1033. </div>
  1034. <label class="switch">
  1035. <input type="checkbox" checked>
  1036. <span class="slider"></span>
  1037. </label>
  1038. </div>
  1039. <div class="permission-option">
  1040. <div class="permission-info">
  1041. <h3>高级分析报告</h3>
  1042. <p>访问详细客户分析报告</p>
  1043. </div>
  1044. <label class="switch">
  1045. <input type="checkbox">
  1046. <span class="slider"></span>
  1047. </label>
  1048. </div>
  1049. <div class="permission-option">
  1050. <div class="permission-info">
  1051. <h3>跨区域客户</h3>
  1052. <p>访问和分配跨区域客户</p>
  1053. </div>
  1054. <label class="switch">
  1055. <input type="checkbox" checked>
  1056. <span class="slider"></span>
  1057. </label>
  1058. </div>
  1059. </div>
  1060. </div>
  1061. <div class="modal-footer">
  1062. <button class="btn btn-outline" id="cancelBtn">取消</button>
  1063. <button class="btn btn-primary" id="saveBtn">保存设置</button>
  1064. </div>
  1065. </div>
  1066. </div>
  1067. <script>
  1068. // 初始化图表
  1069. document.addEventListener('DOMContentLoaded', function() {
  1070. const ctx = document.getElementById('salesChart').getContext('2d');
  1071. // 图表数据
  1072. const salesData = {
  1073. labels: ['实习销售', '白银销售', '黄金销售', '铂金销售', '钻石销售'],
  1074. datasets: [{
  1075. label: '平均月业绩 (万元)',
  1076. data: [8.2, 22.5, 45.8, 78.3, 125.6],
  1077. backgroundColor: [
  1078. 'rgba(59, 130, 246, 0.7)',
  1079. 'rgba(148, 163, 184, 0.7)',
  1080. 'rgba(245, 158, 11, 0.7)',
  1081. 'rgba(129, 140, 248, 0.7)',
  1082. 'rgba(34, 211, 238, 0.7)'
  1083. ],
  1084. borderColor: [
  1085. 'rgb(59, 130, 246)',
  1086. 'rgb(148, 163, 184)',
  1087. 'rgb(245, 158, 11)',
  1088. 'rgb(129, 140, 248)',
  1089. 'rgb(34, 211, 238)'
  1090. ],
  1091. borderWidth: 2
  1092. }]
  1093. };
  1094. // 创建柱状图
  1095. const salesChart = new Chart(ctx, {
  1096. type: 'bar',
  1097. data: salesData,
  1098. options: {
  1099. responsive: true,
  1100. maintainAspectRatio: false,
  1101. scales: {
  1102. y: {
  1103. beginAtZero: true,
  1104. grid: {
  1105. color: 'rgba(255, 255, 255, 0.1)'
  1106. },
  1107. ticks: {
  1108. color: '#64748b'
  1109. }
  1110. },
  1111. x: {
  1112. grid: {
  1113. display: false
  1114. },
  1115. ticks: {
  1116. color: '#64748b'
  1117. }
  1118. }
  1119. },
  1120. plugins: {
  1121. legend: {
  1122. labels: {
  1123. color: '#64748b'
  1124. }
  1125. },
  1126. tooltip: {
  1127. backgroundColor: 'rgba(15, 23, 42, 0.9)',
  1128. titleColor: '#e2e8f0',
  1129. bodyColor: '#cbd5e1',
  1130. borderColor: 'rgba(255, 255, 255, 0.1)',
  1131. borderWidth: 1
  1132. }
  1133. }
  1134. }
  1135. });
  1136. // 权限管理面板交互
  1137. const modal = document.getElementById('permissionModal');
  1138. const closeBtn = document.getElementById('closeModal');
  1139. const cancelBtn = document.getElementById('cancelBtn');
  1140. const saveBtn = document.getElementById('saveBtn');
  1141. const editButtons = document.querySelectorAll('.edit-permission');
  1142. // 打开权限管理面板
  1143. editButtons.forEach(button => {
  1144. button.addEventListener('click', function(e) {
  1145. e.stopPropagation();
  1146. const card = this.closest('.card');
  1147. const salesId = card.getAttribute('data-sales-id');
  1148. const salesName = card.querySelector('h3').textContent;
  1149. const salesLevel = card.querySelector('.user-tag').textContent;
  1150. // 更新模态框标题
  1151. document.querySelector('.modal-header h2').textContent = `${salesName} - 权限管理`;
  1152. // 更新AI建议
  1153. const aiRec = document.querySelector('.ai-recommendation p');
  1154. if (salesLevel === '实习销售') {
  1155. aiRec.innerHTML = '<i class="fas fa-lightbulb"></i> AI建议:根据该销售表现,建议升级为<span class="ai-highlight">白银销售</span>权限级别';
  1156. } else if (salesLevel === '白银销售') {
  1157. aiRec.innerHTML = '<i class="fas fa-lightbulb"></i> AI建议:根据该销售表现,建议升级为<span class="ai-highlight">黄金销售</span>权限级别';
  1158. } else if (salesLevel === '黄金销售') {
  1159. aiRec.innerHTML = '<i class="fas fa-lightbulb"></i> AI建议:根据该销售表现,建议升级为<span class="ai-highlight">铂金销售</span>权限级别';
  1160. } else if (salesLevel === '铂金销售') {
  1161. aiRec.innerHTML = '<i class="fas fa-lightbulb"></i> AI建议:根据该销售表现,建议升级为<span class="ai-highlight">钻石销售</span>权限级别';
  1162. } else {
  1163. aiRec.innerHTML = '<i class="fas fa-lightbulb"></i> AI建议:该销售已达到最高权限级别,表现优秀';
  1164. }
  1165. modal.classList.add('active');
  1166. });
  1167. });
  1168. // 关闭权限管理面板
  1169. function closeModal() {
  1170. modal.classList.remove('active');
  1171. }
  1172. closeBtn.addEventListener('click', closeModal);
  1173. cancelBtn.addEventListener('click', closeModal);
  1174. saveBtn.addEventListener('click', function() {
  1175. closeModal();
  1176. // 实际应用中这里会保存权限设置
  1177. alert('权限设置已保存!');
  1178. });
  1179. // 点击模态框外部关闭
  1180. modal.addEventListener('click', function(e) {
  1181. if (e.target === modal) {
  1182. closeModal();
  1183. }
  1184. });
  1185. // AI智能推荐按钮
  1186. document.getElementById('aiRecommendBtn').addEventListener('click', function() {
  1187. alert('AI正在分析团队数据,推荐最优权限配置...\n\n结果:建议将3名白银销售升级为黄金销售权限');
  1188. });
  1189. // 添加销售按钮
  1190. document.getElementById('addSalesBtn').addEventListener('click', function() {
  1191. alert('添加新销售功能已打开,请填写销售信息');
  1192. });
  1193. // 添加卡片交互效果
  1194. const cards = document.querySelectorAll('.card');
  1195. cards.forEach(card => {
  1196. card.addEventListener('click', function() {
  1197. // 移除所有卡片的active类
  1198. cards.forEach(c => c.classList.remove('active'));
  1199. // 为当前卡片添加active类
  1200. this.classList.add('active');
  1201. });
  1202. });
  1203. // 添加标签筛选功能
  1204. const tags = document.querySelectorAll('.tag');
  1205. tags.forEach(tag => {
  1206. tag.addEventListener('click', function() {
  1207. this.classList.toggle('active');
  1208. filterSales();
  1209. });
  1210. });
  1211. function filterSales() {
  1212. // 在实际应用中,这里会根据选中的标签过滤销售卡片
  1213. console.log('应用筛选条件...');
  1214. }
  1215. });
  1216. </script>
  1217. </body>
  1218. </html>