Browse Source

Merge branch 'master' of https://git.cocorobo.cn/CocoRoboLabs/pbl_admin_table

lsc 3 months ago
parent
commit
a98e1c83bd
53 changed files with 1179 additions and 566 deletions
  1. 0 0
      dist/css/app.4fb416ff.css
  2. 0 0
      dist/css/app.9227c134.css
  3. 3 0
      dist/img/add.427d692e.svg
  4. 0 1
      dist/img/hg1.163bbe4c.svg
  5. 4 0
      dist/img/hg1.759e9fd4.svg
  6. 4 0
      dist/img/hg2.789205ec.svg
  7. 0 1
      dist/img/hg2.81924561.svg
  8. 4 0
      dist/img/hg3.1d6e0d63.svg
  9. 0 1
      dist/img/hg3.605a21cf.svg
  10. 3 0
      dist/img/img1.5b62d5eb.svg
  11. 1 0
      dist/img/img2.e2cc9387.svg
  12. 10 0
      dist/img/img3.2be28ae9.svg
  13. 3 0
      dist/img/img4.30fe8a33.svg
  14. 5 0
      dist/img/img5.dfe3b158.svg
  15. 4 0
      dist/img/img6.51c0b5e3.svg
  16. 3 0
      dist/img/img7.de2f5aae.svg
  17. 9 0
      dist/img/img8.1a918f98.svg
  18. 0 0
      dist/img/sucai2.5176c97e.svg
  19. 0 1
      dist/img/sy.1f0006c3.svg
  20. 3 0
      dist/img/sy.5c13bc7e.svg
  21. 0 1
      dist/img/sy1.0076499f.svg
  22. 3 0
      dist/img/sy1.569a8689.svg
  23. 0 0
      dist/img/wechat.0277f1a9.svg
  24. 1 1
      dist/index.html
  25. 0 0
      dist/js/app.084f1566.js
  26. 0 0
      dist/js/app.084f1566.js.map
  27. 0 0
      dist/js/app.27882a86.js
  28. 0 0
      dist/js/app.27882a86.js.map
  29. 0 0
      dist/js/chunk-vendors.1e67db9e.js
  30. 0 0
      dist/js/chunk-vendors.1e67db9e.js.map
  31. 0 0
      dist/js/chunk-vendors.fba309d8.js.map
  32. 3 0
      src/assets/img/add.svg
  33. BIN
      src/assets/img/dong.png
  34. 4 1
      src/assets/img/hg1.svg
  35. 4 1
      src/assets/img/hg2.svg
  36. 4 1
      src/assets/img/hg3.svg
  37. 3 0
      src/assets/img/img1.svg
  38. 1 0
      src/assets/img/img2.svg
  39. 10 0
      src/assets/img/img3.svg
  40. 3 0
      src/assets/img/img4.svg
  41. 5 0
      src/assets/img/img5.svg
  42. 4 0
      src/assets/img/img6.svg
  43. 3 0
      src/assets/img/img7.svg
  44. 9 0
      src/assets/img/img8.svg
  45. 3 1
      src/assets/img/sy.svg
  46. 3 1
      src/assets/img/sy1.svg
  47. 4 0
      src/common/apiConfig.js
  48. 201 53
      src/components/botPage.vue
  49. 208 210
      src/components/sidebarL.vue
  50. 371 150
      src/components/topPage.vue
  51. 103 20
      src/views/HomeView.vue
  52. 16 8
      src/views/homepageL.vue
  53. 157 114
      src/views/login/loginPage.vue

File diff suppressed because it is too large
+ 0 - 0
dist/css/app.4fb416ff.css


File diff suppressed because it is too large
+ 0 - 0
dist/css/app.9227c134.css


+ 3 - 0
dist/img/add.427d692e.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M10.7881 0H13.2594V10.7406H24V13.2119H13.2594V24H10.7881V13.2119H0V10.7406H10.7881V0Z" fill="#969BA3"/>
+</svg>

+ 0 - 1
dist/img/hg1.163bbe4c.svg

@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1743572706807" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23826" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M907.2 257.2c0.8 0.3 1.4 0.7 2.2 1l0.4-3.3-2.6 2.3z m-803.1-0.5c0.4-0.2 0.9-0.3 1.3-0.6l-1.7-1.4 0.4 2z m769.7 40.1c-7.1 0-13.5 2.8-18.2 7.3-0.3 0.3-0.4 0.2-0.3-0.2L679.6 462.4 536.5 175.7c-6.7-8.9-17.3-14.5-29.3-14.5-14 0-26.2 7.9-32.4 19.4L334.1 462.4 152.8 298.8c-3.8-2.1-8.2-3.3-12.9-3.3-14.5 0-26.2 11.8-26.2 26.2 0 1.2-0.2 1.8-0.6 1.8l56.1 419.1c0-1.6-0.1-3.2-0.3-4.9 3.4 29.2 23.1 53.4 49.6 63.4-2.4-0.9-4.8-1.6-7-2 56.3 21.1 166.8 34.8 294.1 33.6 127.9-1.1 239.4-16.9 296.5-39.2-2.1 0.4-4.3 1-6.7 1.9 26.5-10.1 46.2-34.3 49.6-63.5-0.4 3.4-0.4 6.6-0.2 9.5l55.7-416.9c-0.2-0.2-0.4-0.8-0.4-1.7 0-14.2-11.7-26-26.3-26z" fill="#FFD700" p-id="23827"></path></svg>

+ 4 - 0
dist/img/hg1.759e9fd4.svg

@@ -0,0 +1,4 @@
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0 0H28V28H10C4.47715 28 0 23.5228 0 18V0Z" fill="#F0B343"/>
+<path d="M8.4 21V19.4444H19.6V21H8.4ZM8.4 18.2778L7.38 12.0361C7.35333 12.0361 7.3232 12.0395 7.2896 12.0462C7.256 12.053 7.22613 12.0561 7.2 12.0556C6.86667 12.0556 6.58347 11.942 6.3504 11.7149C6.11734 11.4878 6.00054 11.2124 6 10.8889C5.99947 10.5653 6.11627 10.29 6.3504 10.0629C6.58453 9.83578 6.86773 9.72222 7.2 9.72222C7.53227 9.72222 7.81573 9.83578 8.0504 10.0629C8.28507 10.29 8.4016 10.5653 8.4 10.8889C8.4 10.9796 8.38987 11.0639 8.3696 11.1417C8.34933 11.2194 8.32613 11.2907 8.3 11.3556L10.8 12.4444L13.3 9.11945C13.1533 9.01574 13.0333 8.87963 12.94 8.71111C12.8467 8.54259 12.8 8.36111 12.8 8.16667C12.8 7.84259 12.9168 7.567 13.1504 7.33989C13.384 7.11278 13.6672 6.99948 14 7C14.3328 7.00052 14.6163 7.11408 14.8504 7.34067C15.0845 7.56726 15.2011 7.84259 15.2 8.16667C15.2 8.36111 15.1533 8.54259 15.06 8.71111C14.9667 8.87963 14.8467 9.01574 14.7 9.11945L17.2 12.4444L19.7 11.3556C19.6733 11.2907 19.6499 11.2194 19.6296 11.1417C19.6093 11.0639 19.5995 10.9796 19.6 10.8889C19.6 10.5648 19.7168 10.2892 19.9504 10.0621C20.184 9.835 20.4672 9.72171 20.8 9.72222C21.1328 9.72274 21.4163 9.8363 21.6504 10.0629C21.8845 10.2895 22.0011 10.5648 22 10.8889C21.9989 11.213 21.8824 11.4886 21.6504 11.7157C21.4184 11.9428 21.1349 12.0561 20.8 12.0556C20.7733 12.0556 20.7435 12.0524 20.7104 12.0462C20.6773 12.04 20.6472 12.0366 20.62 12.0361L19.6 18.2778H8.4Z" fill="black"/>
+</svg>

+ 4 - 0
dist/img/hg2.789205ec.svg

@@ -0,0 +1,4 @@
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0 0H28V28H10C4.47715 28 0 23.5228 0 18V0Z" fill="black"/>
+<path d="M8.4 21V19.4444H19.6V21H8.4ZM8.4 18.2778L7.38 12.0361C7.35333 12.0361 7.3232 12.0395 7.2896 12.0462C7.256 12.053 7.22613 12.0561 7.2 12.0556C6.86667 12.0556 6.58347 11.942 6.3504 11.7149C6.11734 11.4878 6.00054 11.2124 6 10.8889C5.99947 10.5653 6.11627 10.29 6.3504 10.0629C6.58453 9.83578 6.86773 9.72222 7.2 9.72222C7.53227 9.72222 7.81573 9.83578 8.0504 10.0629C8.28507 10.29 8.4016 10.5653 8.4 10.8889C8.4 10.9796 8.38987 11.0639 8.3696 11.1417C8.34933 11.2194 8.32613 11.2907 8.3 11.3556L10.8 12.4444L13.3 9.11945C13.1533 9.01574 13.0333 8.87963 12.94 8.71111C12.8467 8.54259 12.8 8.36111 12.8 8.16667C12.8 7.84259 12.9168 7.567 13.1504 7.33989C13.384 7.11278 13.6672 6.99948 14 7C14.3328 7.00052 14.6163 7.11408 14.8504 7.34067C15.0845 7.56726 15.2011 7.84259 15.2 8.16667C15.2 8.36111 15.1533 8.54259 15.06 8.71111C14.9667 8.87963 14.8467 9.01574 14.7 9.11945L17.2 12.4444L19.7 11.3556C19.6733 11.2907 19.6499 11.2194 19.6296 11.1417C19.6093 11.0639 19.5995 10.9796 19.6 10.8889C19.6 10.5648 19.7168 10.2892 19.9504 10.0621C20.184 9.835 20.4672 9.72171 20.8 9.72222C21.1328 9.72274 21.4163 9.8363 21.6504 10.0629C21.8845 10.2895 22.0011 10.5648 22 10.8889C21.9989 11.213 21.8824 11.4886 21.6504 11.7157C21.4184 11.9428 21.1349 12.0561 20.8 12.0556C20.7733 12.0556 20.7435 12.0524 20.7104 12.0462C20.6773 12.04 20.6472 12.0366 20.62 12.0361L19.6 18.2778H8.4Z" fill="#CFCFCF"/>
+</svg>

+ 0 - 1
dist/img/hg2.81924561.svg

@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1743572706807" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23826" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M907.2 257.2c0.8 0.3 1.4 0.7 2.2 1l0.4-3.3-2.6 2.3z m-803.1-0.5c0.4-0.2 0.9-0.3 1.3-0.6l-1.7-1.4 0.4 2z m769.7 40.1c-7.1 0-13.5 2.8-18.2 7.3-0.3 0.3-0.4 0.2-0.3-0.2L679.6 462.4 536.5 175.7c-6.7-8.9-17.3-14.5-29.3-14.5-14 0-26.2 7.9-32.4 19.4L334.1 462.4 152.8 298.8c-3.8-2.1-8.2-3.3-12.9-3.3-14.5 0-26.2 11.8-26.2 26.2 0 1.2-0.2 1.8-0.6 1.8l56.1 419.1c0-1.6-0.1-3.2-0.3-4.9 3.4 29.2 23.1 53.4 49.6 63.4-2.4-0.9-4.8-1.6-7-2 56.3 21.1 166.8 34.8 294.1 33.6 127.9-1.1 239.4-16.9 296.5-39.2-2.1 0.4-4.3 1-6.7 1.9 26.5-10.1 46.2-34.3 49.6-63.5-0.4 3.4-0.4 6.6-0.2 9.5l55.7-416.9c-0.2-0.2-0.4-0.8-0.4-1.7 0-14.2-11.7-26-26.3-26z" fill="#C0C0C0" p-id="23827"></path></svg>

+ 4 - 0
dist/img/hg3.1d6e0d63.svg

@@ -0,0 +1,4 @@
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0 0H28V28H10C4.47715 28 0 23.5228 0 18V0Z" fill="#D9D9D9"/>
+<path d="M8.4 21V19.4444H19.6V21H8.4ZM8.4 18.2778L7.38 12.0361C7.35333 12.0361 7.3232 12.0395 7.2896 12.0462C7.256 12.053 7.22613 12.0561 7.2 12.0556C6.86667 12.0556 6.58347 11.942 6.3504 11.7149C6.11734 11.4878 6.00054 11.2124 6 10.8889C5.99947 10.5653 6.11627 10.29 6.3504 10.0629C6.58453 9.83578 6.86773 9.72222 7.2 9.72222C7.53227 9.72222 7.81573 9.83578 8.0504 10.0629C8.28507 10.29 8.4016 10.5653 8.4 10.8889C8.4 10.9796 8.38987 11.0639 8.3696 11.1417C8.34933 11.2194 8.32613 11.2907 8.3 11.3556L10.8 12.4444L13.3 9.11945C13.1533 9.01574 13.0333 8.87963 12.94 8.71111C12.8467 8.54259 12.8 8.36111 12.8 8.16667C12.8 7.84259 12.9168 7.567 13.1504 7.33989C13.384 7.11278 13.6672 6.99948 14 7C14.3328 7.00052 14.6163 7.11408 14.8504 7.34067C15.0845 7.56726 15.2011 7.84259 15.2 8.16667C15.2 8.36111 15.1533 8.54259 15.06 8.71111C14.9667 8.87963 14.8467 9.01574 14.7 9.11945L17.2 12.4444L19.7 11.3556C19.6733 11.2907 19.6499 11.2194 19.6296 11.1417C19.6093 11.0639 19.5995 10.9796 19.6 10.8889C19.6 10.5648 19.7168 10.2892 19.9504 10.0621C20.184 9.835 20.4672 9.72171 20.8 9.72222C21.1328 9.72274 21.4163 9.8363 21.6504 10.0629C21.8845 10.2895 22.0011 10.5648 22 10.8889C21.9989 11.213 21.8824 11.4886 21.6504 11.7157C21.4184 11.9428 21.1349 12.0561 20.8 12.0556C20.7733 12.0556 20.7435 12.0524 20.7104 12.0462C20.6773 12.04 20.6472 12.0366 20.62 12.0361L19.6 18.2778H8.4Z" fill="#AE938C"/>
+</svg>

+ 0 - 1
dist/img/hg3.605a21cf.svg

@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1743572706807" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23826" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M907.2 257.2c0.8 0.3 1.4 0.7 2.2 1l0.4-3.3-2.6 2.3z m-803.1-0.5c0.4-0.2 0.9-0.3 1.3-0.6l-1.7-1.4 0.4 2z m769.7 40.1c-7.1 0-13.5 2.8-18.2 7.3-0.3 0.3-0.4 0.2-0.3-0.2L679.6 462.4 536.5 175.7c-6.7-8.9-17.3-14.5-29.3-14.5-14 0-26.2 7.9-32.4 19.4L334.1 462.4 152.8 298.8c-3.8-2.1-8.2-3.3-12.9-3.3-14.5 0-26.2 11.8-26.2 26.2 0 1.2-0.2 1.8-0.6 1.8l56.1 419.1c0-1.6-0.1-3.2-0.3-4.9 3.4 29.2 23.1 53.4 49.6 63.4-2.4-0.9-4.8-1.6-7-2 56.3 21.1 166.8 34.8 294.1 33.6 127.9-1.1 239.4-16.9 296.5-39.2-2.1 0.4-4.3 1-6.7 1.9 26.5-10.1 46.2-34.3 49.6-63.5-0.4 3.4-0.4 6.6-0.2 9.5l55.7-416.9c-0.2-0.2-0.4-0.8-0.4-1.7 0-14.2-11.7-26-26.3-26z" fill="#CD7F32" p-id="23827"></path></svg>

+ 3 - 0
dist/img/img1.5b62d5eb.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M16.1141 13.9831C15.8562 14.2419 15.5251 14.4155 15.1655 14.4802L10.8796 15.2517C10.5982 15.3026 10.3086 15.2852 10.0353 15.2009C9.76193 15.1166 9.51286 14.9678 9.30899 14.7672C9.10513 14.5666 8.95245 14.3199 8.8638 14.0479C8.77514 13.776 8.75312 13.4867 8.79956 13.2045L9.51387 8.86155C9.5745 8.49175 9.74993 8.1504 10.0153 7.88582L15.9284 2H5.57088C5.00254 2 4.45748 2.22577 4.0556 2.62764C3.65373 3.02951 3.42796 3.57457 3.42796 4.1429V16.8846L2.03648 21.0603C1.99614 21.1817 1.98911 21.3116 2.01612 21.4366C2.04313 21.5616 2.10319 21.677 2.19003 21.7708C2.27687 21.8647 2.38731 21.9335 2.50982 21.9701C2.63233 22.0067 2.76242 22.0098 2.88651 21.9789L8.51527 20.5718H19.8571C20.4254 20.5718 20.9705 20.346 21.3724 19.9441C21.7742 19.5423 22 18.9972 22 18.4289V8.07154L16.1141 13.9831ZM19.5985 2.11C19.3362 2.00065 19.0472 1.97201 18.7686 2.02774C18.4899 2.08347 18.2342 2.22104 18.0342 2.42287L11.2768 9.15156L10.5625 13.4945L14.8483 12.7231L21.5771 5.96579C21.711 5.83298 21.8173 5.67498 21.8898 5.50089C21.9624 5.3268 21.9997 5.14007 21.9997 4.95148C21.9997 4.76289 21.9624 4.57617 21.8898 4.40208C21.8173 4.22799 21.711 4.06999 21.5771 3.93718L20.0628 2.42287C19.9303 2.28846 19.7725 2.18164 19.5985 2.10857V2.11Z" fill="#0663FE"/>
+</svg>

File diff suppressed because it is too large
+ 1 - 0
dist/img/img2.e2cc9387.svg


+ 10 - 0
dist/img/img3.2be28ae9.svg

@@ -0,0 +1,10 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_289_1673)">
+<path d="M23 2H1C0.734784 2 0.48043 2.10536 0.292893 2.29289C0.105357 2.48043 0 2.73478 0 3L0 21C0 21.2652 0.105357 21.5196 0.292893 21.7071C0.48043 21.8946 0.734784 22 1 22H23C23.2652 22 23.5196 21.8946 23.7071 21.7071C23.8946 21.5196 24 21.2652 24 21V3C24 2.73478 23.8946 2.48043 23.7071 2.29289C23.5196 2.10536 23.2652 2 23 2ZM22 20H20V19H15V20H2V4H22V20ZM10.29 9.71C10.29 9.25648 10.4702 8.82154 10.7908 8.50085C11.1115 8.18016 11.5465 8 12 8C12.95 8 13.71 8.77 13.71 9.71C13.71 10.66 12.95 11.43 12 11.43C11.05 11.43 10.29 10.66 10.29 9.71ZM5.71 11.29C5.71 10.58 6.29 10 7 10C7.34213 10 7.67025 10.1359 7.91217 10.3778C8.15409 10.6198 8.29 10.9479 8.29 11.29C8.29 12 7.71 12.57 7 12.57C6.29 12.57 5.71 12 5.71 11.29ZM15.71 11.29C15.71 10.9479 15.8459 10.6198 16.0878 10.3778C16.3298 10.1359 16.6579 10 17 10C17.3421 10 17.6702 10.1359 17.9122 10.3778C18.1541 10.6198 18.29 10.9479 18.29 11.29C18.29 12 17.71 12.57 17 12.57C16.29 12.57 15.71 12 15.71 11.29ZM20 15.14V16H4V15.14C4 14.2 5.55 13.43 7 13.43C7.55 13.43 8.11 13.54 8.6 13.73C9.35 13.04 10.7 12.57 12 12.57C13.3 12.57 14.65 13.04 15.4 13.73C15.89 13.54 16.45 13.43 17 13.43C18.45 13.43 20 14.2 20 15.14Z" fill="#0663FE"/>
+</g>
+<defs>
+<clipPath id="clip0_289_1673">
+<rect width="24" height="24" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 3 - 0
dist/img/img4.30fe8a33.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M8 9C8.28333 9 8.521 8.904 8.713 8.712C8.905 8.52 9.00067 8.28267 9 8C8.99933 7.71733 8.90333 7.48 8.712 7.288C8.52067 7.096 8.28333 7 8 7C7.71667 7 7.47933 7.096 7.288 7.288C7.09667 7.48 7.00067 7.71733 7 8C6.99933 8.28267 7.09533 8.52033 7.288 8.713C7.48067 8.90567 7.718 9.00133 8 9ZM8 13C8.28333 13 8.521 12.904 8.713 12.712C8.905 12.52 9.00067 12.2827 9 12C8.99933 11.7173 8.90333 11.48 8.712 11.288C8.52067 11.096 8.28333 11 8 11C7.71667 11 7.47933 11.096 7.288 11.288C7.09667 11.48 7.00067 11.7173 7 12C6.99933 12.2827 7.09533 12.5203 7.288 12.713C7.48067 12.9057 7.718 13.0013 8 13ZM8 17C8.28333 17 8.521 16.904 8.713 16.712C8.905 16.52 9.00067 16.2827 9 16C8.99933 15.7173 8.90333 15.48 8.712 15.288C8.52067 15.096 8.28333 15 8 15C7.71667 15 7.47933 15.096 7.288 15.288C7.09667 15.48 7.00067 15.7173 7 16C6.99933 16.2827 7.09533 16.5203 7.288 16.713C7.48067 16.9057 7.718 17.0013 8 17ZM5 21C4.45 21 3.97933 20.8043 3.588 20.413C3.19667 20.0217 3.00067 19.5507 3 19V5C3 4.45 3.196 3.97933 3.588 3.588C3.98 3.19667 4.45067 3.00067 5 3H16L21 8V19C21 19.55 20.8043 20.021 20.413 20.413C20.0217 20.805 19.5507 21.0007 19 21H5ZM5 19H19V9H15V5H5V19Z" fill="#0663FE"/>
+</svg>

+ 5 - 0
dist/img/img5.dfe3b158.svg

@@ -0,0 +1,5 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M12.75 12.75C13.3433 12.75 13.9234 12.9259 14.4167 13.2556C14.9101 13.5852 15.2946 14.0538 15.5216 14.602C15.7487 15.1501 15.8081 15.7533 15.6924 16.3353C15.5766 16.9172 15.2909 17.4518 14.8713 17.8713C14.4518 18.2909 13.9172 18.5766 13.3353 18.6924C12.7533 18.8081 12.1501 18.7487 11.602 18.5216C11.0538 18.2946 10.5852 17.9101 10.2556 17.4167C9.92595 16.9234 9.75 16.3433 9.75 15.75C9.75099 14.9547 10.0674 14.1922 10.6298 13.6298C11.1922 13.0674 11.9547 12.751 12.75 12.75ZM12.75 10.5C11.7117 10.5 10.6966 10.8079 9.83326 11.3848C8.9699 11.9617 8.29699 12.7816 7.89963 13.7409C7.50227 14.7002 7.39831 15.7558 7.60088 16.7742C7.80345 17.7926 8.30347 18.7281 9.03769 19.4623C9.77192 20.1965 10.7074 20.6966 11.7258 20.8991C12.7442 21.1017 13.7998 20.9977 14.7591 20.6004C15.7184 20.203 16.5383 19.5301 17.1152 18.6667C17.6921 17.8034 18 16.7884 18 15.75C18 14.3576 17.4469 13.0223 16.4623 12.0377C15.4777 11.0531 14.1424 10.5 12.75 10.5Z" fill="#0663FE"/>
+<path d="M14.6895 19.8105L16.8105 17.6895L19.5 20.3775L17.3775 22.5L14.6895 19.8105ZM7.5 19.5H4.5V3H11.379L16.5 8.121V9H18V7.5L12 1.5H4.5C4.10218 1.5 3.72064 1.65804 3.43934 1.93934C3.15804 2.22064 3 2.60218 3 3V19.5C3 19.8978 3.15804 20.2794 3.43934 20.5607C3.72064 20.842 4.10218 21 4.5 21H7.5V19.5Z" fill="#0663FE"/>
+<path d="M16.5 9H10.5V3H12L16.5 7.5V9ZM16.5 9H18V10.5H16.5V9Z" fill="#0663FE"/>
+</svg>

+ 4 - 0
dist/img/img6.51c0b5e3.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9.5 16C5.634 16 2.5 12.866 2.5 9C2.5 5.134 5.634 2 9.5 2C13.366 2 16.5 5.134 16.5 9" stroke="#0560FD" stroke-width="2" stroke-linejoin="round"/>
+<path d="M22 9H9V22H22V9Z" fill="#0560FD" stroke="#0560FD" stroke-width="2" stroke-linejoin="round"/>
+</svg>

+ 3 - 0
dist/img/img7.de2f5aae.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M3 6.5C3 5.67188 3.67188 5 4.5 5H7.5C8.32812 5 9 5.67188 9 6.5V7H15V6.5C15 5.67188 15.6719 5 16.5 5H19.5C20.3281 5 21 5.67188 21 6.5V9.5C21 10.3281 20.3281 11 19.5 11H16.5C15.6719 11 15 10.3281 15 9.5V9H9V9.5C9 9.55312 8.99687 9.60625 8.99062 9.65625L11.5 13H14.5C15.3281 13 16 13.6719 16 14.5V17.5C16 18.3281 15.3281 19 14.5 19H11.5C10.6719 19 10 18.3281 10 17.5V14.5C10 14.4469 10.0031 14.3938 10.0094 14.3438L7.5 11H4.5C3.67188 11 3 10.3281 3 9.5V6.5Z" fill="#0663FE"/>
+</svg>

+ 9 - 0
dist/img/img8.1a918f98.svg

@@ -0,0 +1,9 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M8.8235 2.75C12.175 2.75 14.8965 5.4715 14.8965 8.8235V14.8965H2.75V8.8235C2.75 5.471 5.4715 2.75 8.8235 2.75Z" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M8.54303 14.8965C8.54303 18.4055 11.3875 21.25 14.8965 21.25C18.4055 21.25 21.25 18.405 21.25 14.8965C21.25 11.388 18.4055 8.54303 14.8965 8.54303" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M5.2105 20.5335C6.15656 20.5335 6.9235 19.7665 6.9235 18.8205C6.9235 17.8744 6.15656 17.1075 5.2105 17.1075C4.26443 17.1075 3.4975 17.8744 3.4975 18.8205C3.4975 19.7665 4.26443 20.5335 5.2105 20.5335Z" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M6.282 8.11198C6.282 8.17328 6.2323 8.22298 6.171 8.22298C6.10969 8.22298 6.06 8.17328 6.06 8.11198C6.06 8.05067 6.10969 8.00098 6.171 8.00098C6.2323 8.00098 6.282 8.05067 6.282 8.11198Z" fill="#0663FE" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M11.245 8.11198C11.245 8.17328 11.1953 8.22298 11.134 8.22298C11.0727 8.22298 11.023 8.17328 11.023 8.11198C11.023 8.05067 11.0727 8.00098 11.134 8.00098C11.1953 8.00098 11.245 8.05067 11.245 8.11198Z" fill="#0663FE" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M17.725 13.7855C17.725 13.8468 17.6753 13.8965 17.614 13.8965C17.5527 13.8965 17.503 13.8468 17.503 13.7855C17.503 13.7242 17.5527 13.6745 17.614 13.6745C17.6753 13.6745 17.725 13.7242 17.725 13.7855Z" fill="#0663FE" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M17.2945 5.80199L19.724 3.37299M17.2945 3.37299L19.724 5.80199" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+</svg>

File diff suppressed because it is too large
+ 0 - 0
dist/img/sucai2.5176c97e.svg


+ 0 - 1
dist/img/sy.1f0006c3.svg

@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1744013519945" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4321" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M939.175079 484.343103 557.721321 107.755166c-1.927909-2.289136-5.950526-6.025227-11.568477-9.730619-10.06217-6.627954-20.757766-10.001795-31.783891-10.001795-11.855002 0-22.820752 3.40454-32.597419 10.092869-6.477528 4.458545-9.942443 8.465812-11.4334 10.454096L89.606831 484.373803c-6.522554 6.417153-10.107195 14.973016-10.107195 24.071232 0 9.06854 3.584642 17.624403 10.107195 24.041556 11.990079 11.900028 29.494755 8.495488 46.169529-7.92346l25.592888-25.306362 41.892109-40.08495 0 389.497968c0 48.143487 39.617299 87.308485 88.317465 87.308485l148.993382 0L440.572204 687.670975c0-19.160385 15.84692-34.736129 35.30918-34.736129l77.020164 0c19.47761 0 35.293831 15.575744 35.293831 34.736129l0 248.307296 149.008732 0c48.685839 0 88.332814-39.164998 88.332814-87.308485L825.536926 461.189777l67.484997 66.355267c11.508102 7.531534 21.842471 11.538801 30.217209 11.538801 6.236028 0 11.44875-2.169409 15.936971-6.598278 6.507204-6.417153 10.092869-14.94334 10.122545-24.041556C949.297624 499.346819 945.712983 490.789932 939.175079 484.343103z" fill="#64748B" p-id="4322" data-spm-anchor-id="a313x.search_index.0.i0.3ddb3a81SQqGzv" class="selected"></path></svg>

+ 3 - 0
dist/img/sy.5c13bc7e.svg

@@ -0,0 +1,3 @@
+<svg width="20" height="24" viewBox="0 0 20 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M3.33315 24C2.44914 24 1.60134 23.6514 0.976257 23.0308C0.35117 22.4102 0 21.5684 0 20.6908V9.66002C0 9.62178 0.00185188 9.58502 0.00555537 9.54972H0C0 8.91324 0.25443 8.30324 0.706627 7.85539L7.64402 0.968896C8.26908 0.348512 9.11672 0 10.0006 0C10.8844 0 11.732 0.348512 12.3571 0.968896L19.2934 7.85539C19.7456 8.30435 20 8.91434 20 9.54861H19.9944C19.9981 9.58538 20 9.62215 20 9.65892V20.6897C20 21.5673 19.6488 22.409 19.0237 23.0296C18.3987 23.6502 17.5509 23.9989 16.6669 23.9989L3.33315 24ZM10.785 2.52864L17.7768 9.4703V20.6919C17.7768 20.9844 17.6597 21.265 17.4514 21.4719C17.243 21.6787 16.9604 21.795 16.6657 21.795H13.3326V16.2796C13.3326 15.4019 12.9814 14.5602 12.3563 13.9396C11.7313 13.319 10.8835 12.9704 9.99944 12.9704C9.11544 12.9704 8.26764 13.319 7.64255 13.9396C7.01747 14.5602 6.6663 15.4019 6.6663 16.2796V21.795H3.33315C3.03848 21.795 2.75588 21.6787 2.54752 21.4719C2.33916 21.265 2.2221 20.9844 2.2221 20.6919V9.4703L9.21393 2.52864C9.42229 2.32185 9.70483 2.20568 9.99944 2.20568C10.2941 2.20568 10.5766 2.32185 10.785 2.52864Z" fill="#969BA3"/>
+</svg>

+ 0 - 1
dist/img/sy1.0076499f.svg

@@ -1 +0,0 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1744013519945" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4321" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M939.175079 484.343103 557.721321 107.755166c-1.927909-2.289136-5.950526-6.025227-11.568477-9.730619-10.06217-6.627954-20.757766-10.001795-31.783891-10.001795-11.855002 0-22.820752 3.40454-32.597419 10.092869-6.477528 4.458545-9.942443 8.465812-11.4334 10.454096L89.606831 484.373803c-6.522554 6.417153-10.107195 14.973016-10.107195 24.071232 0 9.06854 3.584642 17.624403 10.107195 24.041556 11.990079 11.900028 29.494755 8.495488 46.169529-7.92346l25.592888-25.306362 41.892109-40.08495 0 389.497968c0 48.143487 39.617299 87.308485 88.317465 87.308485l148.993382 0L440.572204 687.670975c0-19.160385 15.84692-34.736129 35.30918-34.736129l77.020164 0c19.47761 0 35.293831 15.575744 35.293831 34.736129l0 248.307296 149.008732 0c48.685839 0 88.332814-39.164998 88.332814-87.308485L825.536926 461.189777l67.484997 66.355267c11.508102 7.531534 21.842471 11.538801 30.217209 11.538801 6.236028 0 11.44875-2.169409 15.936971-6.598278 6.507204-6.417153 10.092869-14.94334 10.122545-24.041556C949.297624 499.346819 945.712983 490.789932 939.175079 484.343103z" fill="#0354D7" p-id="4322" data-spm-anchor-id="a313x.search_index.0.i0.3ddb3a81SQqGzv" class="selected"></path></svg>

+ 3 - 0
dist/img/sy1.569a8689.svg

@@ -0,0 +1,3 @@
+<svg width="20" height="24" viewBox="0 0 20 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M3.33315 24C2.44914 24 1.60134 23.6514 0.976257 23.0308C0.35117 22.4102 0 21.5684 0 20.6908V9.66002C0 9.62178 0.00185188 9.58502 0.00555537 9.54972H0C0 8.91324 0.25443 8.30324 0.706627 7.85539L7.64402 0.968896C8.26908 0.348512 9.11672 0 10.0006 0C10.8844 0 11.732 0.348512 12.3571 0.968896L19.2934 7.85539C19.7456 8.30435 20 8.91434 20 9.54861H19.9944C19.9981 9.58538 20 9.62215 20 9.65892V20.6897C20 21.5673 19.6488 22.409 19.0237 23.0296C18.3987 23.6502 17.5509 23.9989 16.6669 23.9989L3.33315 24ZM10.785 2.52864L17.7768 9.4703V20.6919C17.7768 20.9844 17.6597 21.265 17.4514 21.4719C17.243 21.6787 16.9604 21.795 16.6657 21.795H13.3326V16.2796C13.3326 15.4019 12.9814 14.5602 12.3563 13.9396C11.7313 13.319 10.8835 12.9704 9.99944 12.9704C9.11544 12.9704 8.26764 13.319 7.64255 13.9396C7.01747 14.5602 6.6663 15.4019 6.6663 16.2796V21.795H3.33315C3.03848 21.795 2.75588 21.6787 2.54752 21.4719C2.33916 21.265 2.2221 20.9844 2.2221 20.6919V9.4703L9.21393 2.52864C9.42229 2.32185 9.70483 2.20568 9.99944 2.20568C10.2941 2.20568 10.5766 2.32185 10.785 2.52864Z" fill="#0663FE"/>
+</svg>

+ 0 - 0
dist/img/wechat.d3d8349b.svg → dist/img/wechat.0277f1a9.svg


+ 1 - 1
dist/index.html

@@ -36,7 +36,7 @@
         width: 100%;
         background: #e6eaf0;
         font-family: '黑体';
-      }</style><script defer="defer" src="/js/chunk-vendors.fba309d8.js"></script><script defer="defer" src="/js/app.27882a86.js"></script><link href="/css/chunk-vendors.7cfe4581.css" rel="stylesheet"><link href="/css/app.9227c134.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but pblAdminTable doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html><script>function stopSafari() {
+      }</style><script defer="defer" src="/js/chunk-vendors.1e67db9e.js"></script><script defer="defer" src="/js/app.084f1566.js"></script><link href="/css/chunk-vendors.7cfe4581.css" rel="stylesheet"><link href="/css/app.4fb416ff.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but pblAdminTable doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html><script>function stopSafari() {
     //阻止safari浏览器双击放大功能
     let lastTouchEnd = 0  //更新手指弹起的时间
     document.documentElement.addEventListener("touchstart", function (event) {

File diff suppressed because it is too large
+ 0 - 0
dist/js/app.084f1566.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/app.084f1566.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/js/app.27882a86.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/app.27882a86.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/js/chunk-vendors.1e67db9e.js


File diff suppressed because it is too large
+ 0 - 0
dist/js/chunk-vendors.1e67db9e.js.map


File diff suppressed because it is too large
+ 0 - 0
dist/js/chunk-vendors.fba309d8.js.map


+ 3 - 0
src/assets/img/add.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M10.7881 0H13.2594V10.7406H24V13.2119H13.2594V24H10.7881V13.2119H0V10.7406H10.7881V0Z" fill="#969BA3"/>
+</svg>

BIN
src/assets/img/dong.png


+ 4 - 1
src/assets/img/hg1.svg

@@ -1 +1,4 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1743572706807" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23826" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M907.2 257.2c0.8 0.3 1.4 0.7 2.2 1l0.4-3.3-2.6 2.3z m-803.1-0.5c0.4-0.2 0.9-0.3 1.3-0.6l-1.7-1.4 0.4 2z m769.7 40.1c-7.1 0-13.5 2.8-18.2 7.3-0.3 0.3-0.4 0.2-0.3-0.2L679.6 462.4 536.5 175.7c-6.7-8.9-17.3-14.5-29.3-14.5-14 0-26.2 7.9-32.4 19.4L334.1 462.4 152.8 298.8c-3.8-2.1-8.2-3.3-12.9-3.3-14.5 0-26.2 11.8-26.2 26.2 0 1.2-0.2 1.8-0.6 1.8l56.1 419.1c0-1.6-0.1-3.2-0.3-4.9 3.4 29.2 23.1 53.4 49.6 63.4-2.4-0.9-4.8-1.6-7-2 56.3 21.1 166.8 34.8 294.1 33.6 127.9-1.1 239.4-16.9 296.5-39.2-2.1 0.4-4.3 1-6.7 1.9 26.5-10.1 46.2-34.3 49.6-63.5-0.4 3.4-0.4 6.6-0.2 9.5l55.7-416.9c-0.2-0.2-0.4-0.8-0.4-1.7 0-14.2-11.7-26-26.3-26z" fill="#FFD700" p-id="23827"></path></svg>
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0 0H28V28H10C4.47715 28 0 23.5228 0 18V0Z" fill="#F0B343"/>
+<path d="M8.4 21V19.4444H19.6V21H8.4ZM8.4 18.2778L7.38 12.0361C7.35333 12.0361 7.3232 12.0395 7.2896 12.0462C7.256 12.053 7.22613 12.0561 7.2 12.0556C6.86667 12.0556 6.58347 11.942 6.3504 11.7149C6.11734 11.4878 6.00054 11.2124 6 10.8889C5.99947 10.5653 6.11627 10.29 6.3504 10.0629C6.58453 9.83578 6.86773 9.72222 7.2 9.72222C7.53227 9.72222 7.81573 9.83578 8.0504 10.0629C8.28507 10.29 8.4016 10.5653 8.4 10.8889C8.4 10.9796 8.38987 11.0639 8.3696 11.1417C8.34933 11.2194 8.32613 11.2907 8.3 11.3556L10.8 12.4444L13.3 9.11945C13.1533 9.01574 13.0333 8.87963 12.94 8.71111C12.8467 8.54259 12.8 8.36111 12.8 8.16667C12.8 7.84259 12.9168 7.567 13.1504 7.33989C13.384 7.11278 13.6672 6.99948 14 7C14.3328 7.00052 14.6163 7.11408 14.8504 7.34067C15.0845 7.56726 15.2011 7.84259 15.2 8.16667C15.2 8.36111 15.1533 8.54259 15.06 8.71111C14.9667 8.87963 14.8467 9.01574 14.7 9.11945L17.2 12.4444L19.7 11.3556C19.6733 11.2907 19.6499 11.2194 19.6296 11.1417C19.6093 11.0639 19.5995 10.9796 19.6 10.8889C19.6 10.5648 19.7168 10.2892 19.9504 10.0621C20.184 9.835 20.4672 9.72171 20.8 9.72222C21.1328 9.72274 21.4163 9.8363 21.6504 10.0629C21.8845 10.2895 22.0011 10.5648 22 10.8889C21.9989 11.213 21.8824 11.4886 21.6504 11.7157C21.4184 11.9428 21.1349 12.0561 20.8 12.0556C20.7733 12.0556 20.7435 12.0524 20.7104 12.0462C20.6773 12.04 20.6472 12.0366 20.62 12.0361L19.6 18.2778H8.4Z" fill="black"/>
+</svg>

+ 4 - 1
src/assets/img/hg2.svg

@@ -1 +1,4 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1743572706807" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23826" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M907.2 257.2c0.8 0.3 1.4 0.7 2.2 1l0.4-3.3-2.6 2.3z m-803.1-0.5c0.4-0.2 0.9-0.3 1.3-0.6l-1.7-1.4 0.4 2z m769.7 40.1c-7.1 0-13.5 2.8-18.2 7.3-0.3 0.3-0.4 0.2-0.3-0.2L679.6 462.4 536.5 175.7c-6.7-8.9-17.3-14.5-29.3-14.5-14 0-26.2 7.9-32.4 19.4L334.1 462.4 152.8 298.8c-3.8-2.1-8.2-3.3-12.9-3.3-14.5 0-26.2 11.8-26.2 26.2 0 1.2-0.2 1.8-0.6 1.8l56.1 419.1c0-1.6-0.1-3.2-0.3-4.9 3.4 29.2 23.1 53.4 49.6 63.4-2.4-0.9-4.8-1.6-7-2 56.3 21.1 166.8 34.8 294.1 33.6 127.9-1.1 239.4-16.9 296.5-39.2-2.1 0.4-4.3 1-6.7 1.9 26.5-10.1 46.2-34.3 49.6-63.5-0.4 3.4-0.4 6.6-0.2 9.5l55.7-416.9c-0.2-0.2-0.4-0.8-0.4-1.7 0-14.2-11.7-26-26.3-26z" fill="#C0C0C0" p-id="23827"></path></svg>
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0 0H28V28H10C4.47715 28 0 23.5228 0 18V0Z" fill="black"/>
+<path d="M8.4 21V19.4444H19.6V21H8.4ZM8.4 18.2778L7.38 12.0361C7.35333 12.0361 7.3232 12.0395 7.2896 12.0462C7.256 12.053 7.22613 12.0561 7.2 12.0556C6.86667 12.0556 6.58347 11.942 6.3504 11.7149C6.11734 11.4878 6.00054 11.2124 6 10.8889C5.99947 10.5653 6.11627 10.29 6.3504 10.0629C6.58453 9.83578 6.86773 9.72222 7.2 9.72222C7.53227 9.72222 7.81573 9.83578 8.0504 10.0629C8.28507 10.29 8.4016 10.5653 8.4 10.8889C8.4 10.9796 8.38987 11.0639 8.3696 11.1417C8.34933 11.2194 8.32613 11.2907 8.3 11.3556L10.8 12.4444L13.3 9.11945C13.1533 9.01574 13.0333 8.87963 12.94 8.71111C12.8467 8.54259 12.8 8.36111 12.8 8.16667C12.8 7.84259 12.9168 7.567 13.1504 7.33989C13.384 7.11278 13.6672 6.99948 14 7C14.3328 7.00052 14.6163 7.11408 14.8504 7.34067C15.0845 7.56726 15.2011 7.84259 15.2 8.16667C15.2 8.36111 15.1533 8.54259 15.06 8.71111C14.9667 8.87963 14.8467 9.01574 14.7 9.11945L17.2 12.4444L19.7 11.3556C19.6733 11.2907 19.6499 11.2194 19.6296 11.1417C19.6093 11.0639 19.5995 10.9796 19.6 10.8889C19.6 10.5648 19.7168 10.2892 19.9504 10.0621C20.184 9.835 20.4672 9.72171 20.8 9.72222C21.1328 9.72274 21.4163 9.8363 21.6504 10.0629C21.8845 10.2895 22.0011 10.5648 22 10.8889C21.9989 11.213 21.8824 11.4886 21.6504 11.7157C21.4184 11.9428 21.1349 12.0561 20.8 12.0556C20.7733 12.0556 20.7435 12.0524 20.7104 12.0462C20.6773 12.04 20.6472 12.0366 20.62 12.0361L19.6 18.2778H8.4Z" fill="#CFCFCF"/>
+</svg>

+ 4 - 1
src/assets/img/hg3.svg

@@ -1 +1,4 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1743572706807" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="23826" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M907.2 257.2c0.8 0.3 1.4 0.7 2.2 1l0.4-3.3-2.6 2.3z m-803.1-0.5c0.4-0.2 0.9-0.3 1.3-0.6l-1.7-1.4 0.4 2z m769.7 40.1c-7.1 0-13.5 2.8-18.2 7.3-0.3 0.3-0.4 0.2-0.3-0.2L679.6 462.4 536.5 175.7c-6.7-8.9-17.3-14.5-29.3-14.5-14 0-26.2 7.9-32.4 19.4L334.1 462.4 152.8 298.8c-3.8-2.1-8.2-3.3-12.9-3.3-14.5 0-26.2 11.8-26.2 26.2 0 1.2-0.2 1.8-0.6 1.8l56.1 419.1c0-1.6-0.1-3.2-0.3-4.9 3.4 29.2 23.1 53.4 49.6 63.4-2.4-0.9-4.8-1.6-7-2 56.3 21.1 166.8 34.8 294.1 33.6 127.9-1.1 239.4-16.9 296.5-39.2-2.1 0.4-4.3 1-6.7 1.9 26.5-10.1 46.2-34.3 49.6-63.5-0.4 3.4-0.4 6.6-0.2 9.5l55.7-416.9c-0.2-0.2-0.4-0.8-0.4-1.7 0-14.2-11.7-26-26.3-26z" fill="#CD7F32" p-id="23827"></path></svg>
+<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0 0H28V28H10C4.47715 28 0 23.5228 0 18V0Z" fill="#D9D9D9"/>
+<path d="M8.4 21V19.4444H19.6V21H8.4ZM8.4 18.2778L7.38 12.0361C7.35333 12.0361 7.3232 12.0395 7.2896 12.0462C7.256 12.053 7.22613 12.0561 7.2 12.0556C6.86667 12.0556 6.58347 11.942 6.3504 11.7149C6.11734 11.4878 6.00054 11.2124 6 10.8889C5.99947 10.5653 6.11627 10.29 6.3504 10.0629C6.58453 9.83578 6.86773 9.72222 7.2 9.72222C7.53227 9.72222 7.81573 9.83578 8.0504 10.0629C8.28507 10.29 8.4016 10.5653 8.4 10.8889C8.4 10.9796 8.38987 11.0639 8.3696 11.1417C8.34933 11.2194 8.32613 11.2907 8.3 11.3556L10.8 12.4444L13.3 9.11945C13.1533 9.01574 13.0333 8.87963 12.94 8.71111C12.8467 8.54259 12.8 8.36111 12.8 8.16667C12.8 7.84259 12.9168 7.567 13.1504 7.33989C13.384 7.11278 13.6672 6.99948 14 7C14.3328 7.00052 14.6163 7.11408 14.8504 7.34067C15.0845 7.56726 15.2011 7.84259 15.2 8.16667C15.2 8.36111 15.1533 8.54259 15.06 8.71111C14.9667 8.87963 14.8467 9.01574 14.7 9.11945L17.2 12.4444L19.7 11.3556C19.6733 11.2907 19.6499 11.2194 19.6296 11.1417C19.6093 11.0639 19.5995 10.9796 19.6 10.8889C19.6 10.5648 19.7168 10.2892 19.9504 10.0621C20.184 9.835 20.4672 9.72171 20.8 9.72222C21.1328 9.72274 21.4163 9.8363 21.6504 10.0629C21.8845 10.2895 22.0011 10.5648 22 10.8889C21.9989 11.213 21.8824 11.4886 21.6504 11.7157C21.4184 11.9428 21.1349 12.0561 20.8 12.0556C20.7733 12.0556 20.7435 12.0524 20.7104 12.0462C20.6773 12.04 20.6472 12.0366 20.62 12.0361L19.6 18.2778H8.4Z" fill="#AE938C"/>
+</svg>

+ 3 - 0
src/assets/img/img1.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M16.1141 13.9831C15.8562 14.2419 15.5251 14.4155 15.1655 14.4802L10.8796 15.2517C10.5982 15.3026 10.3086 15.2852 10.0353 15.2009C9.76193 15.1166 9.51286 14.9678 9.30899 14.7672C9.10513 14.5666 8.95245 14.3199 8.8638 14.0479C8.77514 13.776 8.75312 13.4867 8.79956 13.2045L9.51387 8.86155C9.5745 8.49175 9.74993 8.1504 10.0153 7.88582L15.9284 2H5.57088C5.00254 2 4.45748 2.22577 4.0556 2.62764C3.65373 3.02951 3.42796 3.57457 3.42796 4.1429V16.8846L2.03648 21.0603C1.99614 21.1817 1.98911 21.3116 2.01612 21.4366C2.04313 21.5616 2.10319 21.677 2.19003 21.7708C2.27687 21.8647 2.38731 21.9335 2.50982 21.9701C2.63233 22.0067 2.76242 22.0098 2.88651 21.9789L8.51527 20.5718H19.8571C20.4254 20.5718 20.9705 20.346 21.3724 19.9441C21.7742 19.5423 22 18.9972 22 18.4289V8.07154L16.1141 13.9831ZM19.5985 2.11C19.3362 2.00065 19.0472 1.97201 18.7686 2.02774C18.4899 2.08347 18.2342 2.22104 18.0342 2.42287L11.2768 9.15156L10.5625 13.4945L14.8483 12.7231L21.5771 5.96579C21.711 5.83298 21.8173 5.67498 21.8898 5.50089C21.9624 5.3268 21.9997 5.14007 21.9997 4.95148C21.9997 4.76289 21.9624 4.57617 21.8898 4.40208C21.8173 4.22799 21.711 4.06999 21.5771 3.93718L20.0628 2.42287C19.9303 2.28846 19.7725 2.18164 19.5985 2.10857V2.11Z" fill="#0663FE"/>
+</svg>

File diff suppressed because it is too large
+ 1 - 0
src/assets/img/img2.svg


+ 10 - 0
src/assets/img/img3.svg

@@ -0,0 +1,10 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_289_1673)">
+<path d="M23 2H1C0.734784 2 0.48043 2.10536 0.292893 2.29289C0.105357 2.48043 0 2.73478 0 3L0 21C0 21.2652 0.105357 21.5196 0.292893 21.7071C0.48043 21.8946 0.734784 22 1 22H23C23.2652 22 23.5196 21.8946 23.7071 21.7071C23.8946 21.5196 24 21.2652 24 21V3C24 2.73478 23.8946 2.48043 23.7071 2.29289C23.5196 2.10536 23.2652 2 23 2ZM22 20H20V19H15V20H2V4H22V20ZM10.29 9.71C10.29 9.25648 10.4702 8.82154 10.7908 8.50085C11.1115 8.18016 11.5465 8 12 8C12.95 8 13.71 8.77 13.71 9.71C13.71 10.66 12.95 11.43 12 11.43C11.05 11.43 10.29 10.66 10.29 9.71ZM5.71 11.29C5.71 10.58 6.29 10 7 10C7.34213 10 7.67025 10.1359 7.91217 10.3778C8.15409 10.6198 8.29 10.9479 8.29 11.29C8.29 12 7.71 12.57 7 12.57C6.29 12.57 5.71 12 5.71 11.29ZM15.71 11.29C15.71 10.9479 15.8459 10.6198 16.0878 10.3778C16.3298 10.1359 16.6579 10 17 10C17.3421 10 17.6702 10.1359 17.9122 10.3778C18.1541 10.6198 18.29 10.9479 18.29 11.29C18.29 12 17.71 12.57 17 12.57C16.29 12.57 15.71 12 15.71 11.29ZM20 15.14V16H4V15.14C4 14.2 5.55 13.43 7 13.43C7.55 13.43 8.11 13.54 8.6 13.73C9.35 13.04 10.7 12.57 12 12.57C13.3 12.57 14.65 13.04 15.4 13.73C15.89 13.54 16.45 13.43 17 13.43C18.45 13.43 20 14.2 20 15.14Z" fill="#0663FE"/>
+</g>
+<defs>
+<clipPath id="clip0_289_1673">
+<rect width="24" height="24" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 3 - 0
src/assets/img/img4.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M8 9C8.28333 9 8.521 8.904 8.713 8.712C8.905 8.52 9.00067 8.28267 9 8C8.99933 7.71733 8.90333 7.48 8.712 7.288C8.52067 7.096 8.28333 7 8 7C7.71667 7 7.47933 7.096 7.288 7.288C7.09667 7.48 7.00067 7.71733 7 8C6.99933 8.28267 7.09533 8.52033 7.288 8.713C7.48067 8.90567 7.718 9.00133 8 9ZM8 13C8.28333 13 8.521 12.904 8.713 12.712C8.905 12.52 9.00067 12.2827 9 12C8.99933 11.7173 8.90333 11.48 8.712 11.288C8.52067 11.096 8.28333 11 8 11C7.71667 11 7.47933 11.096 7.288 11.288C7.09667 11.48 7.00067 11.7173 7 12C6.99933 12.2827 7.09533 12.5203 7.288 12.713C7.48067 12.9057 7.718 13.0013 8 13ZM8 17C8.28333 17 8.521 16.904 8.713 16.712C8.905 16.52 9.00067 16.2827 9 16C8.99933 15.7173 8.90333 15.48 8.712 15.288C8.52067 15.096 8.28333 15 8 15C7.71667 15 7.47933 15.096 7.288 15.288C7.09667 15.48 7.00067 15.7173 7 16C6.99933 16.2827 7.09533 16.5203 7.288 16.713C7.48067 16.9057 7.718 17.0013 8 17ZM5 21C4.45 21 3.97933 20.8043 3.588 20.413C3.19667 20.0217 3.00067 19.5507 3 19V5C3 4.45 3.196 3.97933 3.588 3.588C3.98 3.19667 4.45067 3.00067 5 3H16L21 8V19C21 19.55 20.8043 20.021 20.413 20.413C20.0217 20.805 19.5507 21.0007 19 21H5ZM5 19H19V9H15V5H5V19Z" fill="#0663FE"/>
+</svg>

+ 5 - 0
src/assets/img/img5.svg

@@ -0,0 +1,5 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M12.75 12.75C13.3433 12.75 13.9234 12.9259 14.4167 13.2556C14.9101 13.5852 15.2946 14.0538 15.5216 14.602C15.7487 15.1501 15.8081 15.7533 15.6924 16.3353C15.5766 16.9172 15.2909 17.4518 14.8713 17.8713C14.4518 18.2909 13.9172 18.5766 13.3353 18.6924C12.7533 18.8081 12.1501 18.7487 11.602 18.5216C11.0538 18.2946 10.5852 17.9101 10.2556 17.4167C9.92595 16.9234 9.75 16.3433 9.75 15.75C9.75099 14.9547 10.0674 14.1922 10.6298 13.6298C11.1922 13.0674 11.9547 12.751 12.75 12.75ZM12.75 10.5C11.7117 10.5 10.6966 10.8079 9.83326 11.3848C8.9699 11.9617 8.29699 12.7816 7.89963 13.7409C7.50227 14.7002 7.39831 15.7558 7.60088 16.7742C7.80345 17.7926 8.30347 18.7281 9.03769 19.4623C9.77192 20.1965 10.7074 20.6966 11.7258 20.8991C12.7442 21.1017 13.7998 20.9977 14.7591 20.6004C15.7184 20.203 16.5383 19.5301 17.1152 18.6667C17.6921 17.8034 18 16.7884 18 15.75C18 14.3576 17.4469 13.0223 16.4623 12.0377C15.4777 11.0531 14.1424 10.5 12.75 10.5Z" fill="#0663FE"/>
+<path d="M14.6895 19.8105L16.8105 17.6895L19.5 20.3775L17.3775 22.5L14.6895 19.8105ZM7.5 19.5H4.5V3H11.379L16.5 8.121V9H18V7.5L12 1.5H4.5C4.10218 1.5 3.72064 1.65804 3.43934 1.93934C3.15804 2.22064 3 2.60218 3 3V19.5C3 19.8978 3.15804 20.2794 3.43934 20.5607C3.72064 20.842 4.10218 21 4.5 21H7.5V19.5Z" fill="#0663FE"/>
+<path d="M16.5 9H10.5V3H12L16.5 7.5V9ZM16.5 9H18V10.5H16.5V9Z" fill="#0663FE"/>
+</svg>

+ 4 - 0
src/assets/img/img6.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9.5 16C5.634 16 2.5 12.866 2.5 9C2.5 5.134 5.634 2 9.5 2C13.366 2 16.5 5.134 16.5 9" stroke="#0560FD" stroke-width="2" stroke-linejoin="round"/>
+<path d="M22 9H9V22H22V9Z" fill="#0560FD" stroke="#0560FD" stroke-width="2" stroke-linejoin="round"/>
+</svg>

+ 3 - 0
src/assets/img/img7.svg

@@ -0,0 +1,3 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M3 6.5C3 5.67188 3.67188 5 4.5 5H7.5C8.32812 5 9 5.67188 9 6.5V7H15V6.5C15 5.67188 15.6719 5 16.5 5H19.5C20.3281 5 21 5.67188 21 6.5V9.5C21 10.3281 20.3281 11 19.5 11H16.5C15.6719 11 15 10.3281 15 9.5V9H9V9.5C9 9.55312 8.99687 9.60625 8.99062 9.65625L11.5 13H14.5C15.3281 13 16 13.6719 16 14.5V17.5C16 18.3281 15.3281 19 14.5 19H11.5C10.6719 19 10 18.3281 10 17.5V14.5C10 14.4469 10.0031 14.3938 10.0094 14.3438L7.5 11H4.5C3.67188 11 3 10.3281 3 9.5V6.5Z" fill="#0663FE"/>
+</svg>

+ 9 - 0
src/assets/img/img8.svg

@@ -0,0 +1,9 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M8.8235 2.75C12.175 2.75 14.8965 5.4715 14.8965 8.8235V14.8965H2.75V8.8235C2.75 5.471 5.4715 2.75 8.8235 2.75Z" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M8.54303 14.8965C8.54303 18.4055 11.3875 21.25 14.8965 21.25C18.4055 21.25 21.25 18.405 21.25 14.8965C21.25 11.388 18.4055 8.54303 14.8965 8.54303" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M5.2105 20.5335C6.15656 20.5335 6.9235 19.7665 6.9235 18.8205C6.9235 17.8744 6.15656 17.1075 5.2105 17.1075C4.26443 17.1075 3.4975 17.8744 3.4975 18.8205C3.4975 19.7665 4.26443 20.5335 5.2105 20.5335Z" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M6.282 8.11198C6.282 8.17328 6.2323 8.22298 6.171 8.22298C6.10969 8.22298 6.06 8.17328 6.06 8.11198C6.06 8.05067 6.10969 8.00098 6.171 8.00098C6.2323 8.00098 6.282 8.05067 6.282 8.11198Z" fill="#0663FE" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M11.245 8.11198C11.245 8.17328 11.1953 8.22298 11.134 8.22298C11.0727 8.22298 11.023 8.17328 11.023 8.11198C11.023 8.05067 11.0727 8.00098 11.134 8.00098C11.1953 8.00098 11.245 8.05067 11.245 8.11198Z" fill="#0663FE" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M17.725 13.7855C17.725 13.8468 17.6753 13.8965 17.614 13.8965C17.5527 13.8965 17.503 13.8468 17.503 13.7855C17.503 13.7242 17.5527 13.6745 17.614 13.6745C17.6753 13.6745 17.725 13.7242 17.725 13.7855Z" fill="#0663FE" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M17.2945 5.80199L19.724 3.37299M17.2945 3.37299L19.724 5.80199" stroke="#0663FE" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
+</svg>

+ 3 - 1
src/assets/img/sy.svg

@@ -1 +1,3 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1744013519945" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4321" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M939.175079 484.343103 557.721321 107.755166c-1.927909-2.289136-5.950526-6.025227-11.568477-9.730619-10.06217-6.627954-20.757766-10.001795-31.783891-10.001795-11.855002 0-22.820752 3.40454-32.597419 10.092869-6.477528 4.458545-9.942443 8.465812-11.4334 10.454096L89.606831 484.373803c-6.522554 6.417153-10.107195 14.973016-10.107195 24.071232 0 9.06854 3.584642 17.624403 10.107195 24.041556 11.990079 11.900028 29.494755 8.495488 46.169529-7.92346l25.592888-25.306362 41.892109-40.08495 0 389.497968c0 48.143487 39.617299 87.308485 88.317465 87.308485l148.993382 0L440.572204 687.670975c0-19.160385 15.84692-34.736129 35.30918-34.736129l77.020164 0c19.47761 0 35.293831 15.575744 35.293831 34.736129l0 248.307296 149.008732 0c48.685839 0 88.332814-39.164998 88.332814-87.308485L825.536926 461.189777l67.484997 66.355267c11.508102 7.531534 21.842471 11.538801 30.217209 11.538801 6.236028 0 11.44875-2.169409 15.936971-6.598278 6.507204-6.417153 10.092869-14.94334 10.122545-24.041556C949.297624 499.346819 945.712983 490.789932 939.175079 484.343103z" fill="#64748B" p-id="4322" data-spm-anchor-id="a313x.search_index.0.i0.3ddb3a81SQqGzv" class="selected"></path></svg>
+<svg width="20" height="24" viewBox="0 0 20 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M3.33315 24C2.44914 24 1.60134 23.6514 0.976257 23.0308C0.35117 22.4102 0 21.5684 0 20.6908V9.66002C0 9.62178 0.00185188 9.58502 0.00555537 9.54972H0C0 8.91324 0.25443 8.30324 0.706627 7.85539L7.64402 0.968896C8.26908 0.348512 9.11672 0 10.0006 0C10.8844 0 11.732 0.348512 12.3571 0.968896L19.2934 7.85539C19.7456 8.30435 20 8.91434 20 9.54861H19.9944C19.9981 9.58538 20 9.62215 20 9.65892V20.6897C20 21.5673 19.6488 22.409 19.0237 23.0296C18.3987 23.6502 17.5509 23.9989 16.6669 23.9989L3.33315 24ZM10.785 2.52864L17.7768 9.4703V20.6919C17.7768 20.9844 17.6597 21.265 17.4514 21.4719C17.243 21.6787 16.9604 21.795 16.6657 21.795H13.3326V16.2796C13.3326 15.4019 12.9814 14.5602 12.3563 13.9396C11.7313 13.319 10.8835 12.9704 9.99944 12.9704C9.11544 12.9704 8.26764 13.319 7.64255 13.9396C7.01747 14.5602 6.6663 15.4019 6.6663 16.2796V21.795H3.33315C3.03848 21.795 2.75588 21.6787 2.54752 21.4719C2.33916 21.265 2.2221 20.9844 2.2221 20.6919V9.4703L9.21393 2.52864C9.42229 2.32185 9.70483 2.20568 9.99944 2.20568C10.2941 2.20568 10.5766 2.32185 10.785 2.52864Z" fill="#969BA3"/>
+</svg>

+ 3 - 1
src/assets/img/sy1.svg

@@ -1 +1,3 @@
-<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1744013519945" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4321" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M939.175079 484.343103 557.721321 107.755166c-1.927909-2.289136-5.950526-6.025227-11.568477-9.730619-10.06217-6.627954-20.757766-10.001795-31.783891-10.001795-11.855002 0-22.820752 3.40454-32.597419 10.092869-6.477528 4.458545-9.942443 8.465812-11.4334 10.454096L89.606831 484.373803c-6.522554 6.417153-10.107195 14.973016-10.107195 24.071232 0 9.06854 3.584642 17.624403 10.107195 24.041556 11.990079 11.900028 29.494755 8.495488 46.169529-7.92346l25.592888-25.306362 41.892109-40.08495 0 389.497968c0 48.143487 39.617299 87.308485 88.317465 87.308485l148.993382 0L440.572204 687.670975c0-19.160385 15.84692-34.736129 35.30918-34.736129l77.020164 0c19.47761 0 35.293831 15.575744 35.293831 34.736129l0 248.307296 149.008732 0c48.685839 0 88.332814-39.164998 88.332814-87.308485L825.536926 461.189777l67.484997 66.355267c11.508102 7.531534 21.842471 11.538801 30.217209 11.538801 6.236028 0 11.44875-2.169409 15.936971-6.598278 6.507204-6.417153 10.092869-14.94334 10.122545-24.041556C949.297624 499.346819 945.712983 490.789932 939.175079 484.343103z" fill="#0354D7" p-id="4322" data-spm-anchor-id="a313x.search_index.0.i0.3ddb3a81SQqGzv" class="selected"></path></svg>
+<svg width="20" height="24" viewBox="0 0 20 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M3.33315 24C2.44914 24 1.60134 23.6514 0.976257 23.0308C0.35117 22.4102 0 21.5684 0 20.6908V9.66002C0 9.62178 0.00185188 9.58502 0.00555537 9.54972H0C0 8.91324 0.25443 8.30324 0.706627 7.85539L7.64402 0.968896C8.26908 0.348512 9.11672 0 10.0006 0C10.8844 0 11.732 0.348512 12.3571 0.968896L19.2934 7.85539C19.7456 8.30435 20 8.91434 20 9.54861H19.9944C19.9981 9.58538 20 9.62215 20 9.65892V20.6897C20 21.5673 19.6488 22.409 19.0237 23.0296C18.3987 23.6502 17.5509 23.9989 16.6669 23.9989L3.33315 24ZM10.785 2.52864L17.7768 9.4703V20.6919C17.7768 20.9844 17.6597 21.265 17.4514 21.4719C17.243 21.6787 16.9604 21.795 16.6657 21.795H13.3326V16.2796C13.3326 15.4019 12.9814 14.5602 12.3563 13.9396C11.7313 13.319 10.8835 12.9704 9.99944 12.9704C9.11544 12.9704 8.26764 13.319 7.64255 13.9396C7.01747 14.5602 6.6663 15.4019 6.6663 16.2796V21.795H3.33315C3.03848 21.795 2.75588 21.6787 2.54752 21.4719C2.33916 21.265 2.2221 20.9844 2.2221 20.6919V9.4703L9.21393 2.52864C9.42229 2.32185 9.70483 2.20568 9.99944 2.20568C10.2941 2.20568 10.5766 2.32185 10.785 2.52864Z" fill="#0663FE"/>
+</svg>

+ 4 - 0
src/common/apiConfig.js

@@ -72,6 +72,10 @@ export const API_CONFIG = {
     ajax_addedUsuallyApp: {
       functionName: "select_addedUsuallyApp",
     },
+     // 查询后台预设常用ai工具
+     ajax_AdminApp: {
+      functionName: "select_AdminApp",
+    },
 
     // 查询已添加常用应用
     ajax_usuallyApp: {

+ 201 - 53
src/components/botPage.vue

@@ -4,37 +4,64 @@
             热门应用
         </div>
 
-        <div class="conBlock" v-for="(k,ind) in hotApp" :key="ind+'p'">
-            <div style="display: flex;justify-content: space-between;margin-bottom: 16px;">
-                <div style="color: #1f2937;font-weight: 600;font-size: 18px;margin-bottom: 16px;">{{ tab[ind].name }}</div>
-                <div @click="lookMore(ind)" style="color: #0354d7;font-size: 14px;cursor: pointer;">查看全部</div>
-            </div>
-            <div style="display: grid;grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));gap: 16px;">
-                <div v-for="(item,index) in k" class="tabCon" @click="openNewWindow(item)"  :key="index" style="min-width: 308px;">
-                        <div class="AppList">
-                            <img class="appImg" :src="JSON.parse(item.json).icon" alt="">
+
+        <div class="hotAppBlo" >
+            <div class="BigBlo" v-for="(k,ind) in hotApp" :key="ind+'p'" >
+                <div class="conBlock">
+                    <div class="conBlockOne conW1" @click="openNewWindow(k[0])" >
+                        <div class="conBlockTwo">
+                            <img class="appImg" :src="JSON.parse(k[0].json).icon" alt="">
                             <div class="con">
-                                <div class="tit">{{ item.name }}</div>
+                                <div class="tit">{{ k[0].name }}</div>
                                 <div class="bri">
-                                    <el-tooltip class="item" effect="light" :content="item.detail" placement="bottom">
+                                    <el-tooltip class="item" effect="light" :content="k[0].detail" placement="bottom">
                                         <span>
-                                            {{ item.detail }}
+                                            {{ k[0].detail }}
                                         </span>
                                     </el-tooltip>
                                 </div>
                             </div>
-                            <div class="hg">
-                                <img style="width: 20px;" v-if="index == 0" src="../assets/img/hg1.svg" alt="">
-                                <img style="width: 20px;" v-if="index == 1" src="../assets/img/hg2.svg" alt="">
-                                <img style="width: 20px;" v-if="index == 2" src="../assets/img/hg3.svg" alt="">
-                            </div>
+                        </div>
+                       
+                        <img class="hg" style="width: 20px;" src="../assets/img/hg1.svg" alt="">
+                    </div>
+
+                    <div style="display: flex;" class="conBlock2">
+                        <div v-for="(item,index) in list(k)" 
+                        class="tabCon" @click="openNewWindow(item)"  :key="index">
+                                <div style="display: flex;flex-direction: column; gap: 12px;">
+                                    <img class="appImg" :src="JSON.parse(item.json).icon" alt="">
+                                    <div class="con">
+                                        <div class="tit">{{ item.name }}</div>
+                                        <div class="bri">
+                                            <el-tooltip class="item" effect="light" :content="item.detail" placement="bottom">
+                                                <span>
+                                                    {{ item.detail }}
+                                                </span>
+                                            </el-tooltip>
+                                        </div>
+                                    </div>
+                                    <img class="hg" style="width: 20px;" v-if="index == 0" src="../assets/img/hg2.svg" alt="">
+                                    <img class="hg" style="width: 20px;" v-if="index == 1" src="../assets/img/hg3.svg" alt="">
+                                </div>
+                        </div>
                     </div>
                 </div>
+                <div style="display: flex;justify-content: space-between;">
+                    <div class="AppTit">{{ tab[ind].name }}</div>
+                    <div class="AppBri" @click="lookMore(ind)">查看全部</div>
+                </div>
             </div>
+           
         </div>
+
+
+
+
+
+
         <el-dialog
         :title="diaTit"
-        
         :visible.sync="dialogVisible"
         class="moreDia"
         :close-on-click-modal="false"
@@ -42,10 +69,12 @@
         width="60%"
         :before-close="handleClose">
             <div v-loading="loading" style="display: grid;grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));gap: 16px;">
-                <div v-for="(item,index) in moreList" class="tabCon" @click="openNewWindow(item)"  :key="index" style="min-width: 308px;">
-                        <div class="AppList">
-                            <img class="appImg" :src="JSON.parse(item.json).icon" alt="">
-                            <div class="con">
+                <div v-for="(item,index) in moreList" 
+                class="tabConDia" @click="openNewWindow(item)"  
+                :key="index" >
+                        <div style="display: flex;align-items: center;">
+                            <img class="appImg"  :src="JSON.parse(item.json).icon" alt="">
+                            <div class="con" style="height: auto;">
                                 <div class="tit">{{ item.name }}</div>
                                 <div class="bri">
                                     <el-tooltip class="item" effect="light" :content="item.detail" placement="bottom">
@@ -55,12 +84,10 @@
                                     </el-tooltip>
                                 </div>
                             </div>
-                            <div class="hg">
-                                <img style="width: 20px;" v-if="index == 0" src="../assets/img/hg1.svg" alt="">
-                                <img style="width: 20px;" v-if="index == 1" src="../assets/img/hg2.svg" alt="">
-                                <img style="width: 20px;" v-if="index == 2" src="../assets/img/hg3.svg" alt="">
-                            </div>
-                    </div>
+                        </div>
+                    <img class="hg" style="width: 20px;" v-if="index == 0" src="../assets/img/hg1.svg" alt="">
+                    <img class="hg" style="width: 20px;" v-if="index == 1" src="../assets/img/hg2.svg" alt="">
+                    <img class="hg" style="width: 20px;" v-if="index == 2" src="../assets/img/hg3.svg" alt="">
                 </div>
             </div>
         </el-dialog>
@@ -77,6 +104,13 @@ import { mapGetters } from 'vuex';
         props:['hotApp'],
         computed: {
             ...mapGetters(['userinfo']),
+            list(){
+                return function(val) {
+                    // console.log(val);
+                    let newArr = val.slice(1)
+                    return newArr
+                }
+            }
         },
         data() {
             return {
@@ -138,6 +172,78 @@ import { mapGetters } from 'vuex';
 </script>
 
 <style scoped>
+.hotAppBlo{
+    display: grid;
+    grid-template-columns: repeat(4, 1fr);
+    gap: 20px;
+    
+}
+.BigBlo{
+    background-color: #EFEFEF;
+    border-radius: 10px;
+    padding: 20px;
+    border: 1px solid #BDBDBD;
+    box-shadow: 0px 0px 40px 0px #0000000D;
+}
+.conBlock{
+    display: flex;
+    box-sizing: border-box;
+    margin-bottom: 10px;
+    border-radius: 10px;
+    height: calc(100% - 20px);
+    gap: 10px;
+    flex-direction: column;
+    justify-content: space-around;
+}
+
+
+.AppBri{
+    font-family: PingFang SC;
+    font-weight: 600;
+    font-size: 14px;
+    line-height: 100%;
+    letter-spacing: 0%;
+    text-align: right;
+    color: #969BA3;
+    cursor: pointer;
+}
+.AppTit{
+    font-family: PingFang SC;
+    font-weight: 600;
+    font-size: 16px;
+    line-height: 100%;
+}
+
+.conBlockOne{
+    background-color: #fff;
+    border-radius: 10px;
+    padding: 26px 14px;
+    box-sizing: border-box;
+    position: relative;
+    overflow: hidden;
+    justify-content: flex-start;
+    position: relative;
+    cursor: pointer;
+    transition: all 0.3s ease; /* 统一过渡效果 */
+}
+.conBlockOne:hover{
+    transform: translateY(-5px); /* 向上位移 */
+    box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
+}
+.conBlockTwo{
+    width: 100%;
+    height: 90px;
+    box-sizing: border-box;
+    display: flex;
+    flex-direction: column;
+    margin-top: auto; /* 将子元素推到底部 */
+    gap: 12px;
+}
+
+.conBlock2{
+    justify-content: space-between;
+    gap: 10px;
+}
 .moreDia >>> .el-dialog{
     border-radius: 10px;
 }
@@ -146,60 +252,102 @@ import { mapGetters } from 'vuex';
     overflow: auto;
     border-top: 1px #e7e7e7 solid;
 }
-.conBlock{
-    background-color: #fff;
-    padding: 24px;
-    box-sizing: border-box;
-    margin-bottom: 24px;
+.AppList{
+    position: relative;
+    flex-wrap: wrap;display: flex;
+    justify-content: space-between;
+    overflow: hidden;
+    background: #fff;
+    border: 1px rgb(243 244 246 / var(--tw-border-opacity, 1)) solid;
     border-radius: 10px;
+    padding: 16px;box-sizing: border-box;
+}
+.conW1{
+    /* height: 100%; */
+  
+    width: 100%;
+    height: 50%;
+    min-height: 100px;
 }
+
 .tabCon{
     transition: all 0.3s ease; /* 统一过渡效果 */
     border-radius: 10px;
     cursor: pointer;
+    display: flex;
+    width: 50%;
+    height: 100%;
+    min-height: 115px;
+    background: #fff;
+    padding: 26px 14px;
+    box-sizing: border-box;
+    position: relative;
+    overflow: hidden;
 }
+.tabConDia{
+    border-radius: 10px;
+    cursor: pointer;
+    display: grid;grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
+    min-height: 80px;
+    background: #fff;
+    padding: 15px;
+    box-sizing: border-box;
+    position: relative;
+    overflow: hidden;
+    min-width: 308px;border: 1px #e7e7e7 solid;
+}
+
 .tabCon:hover{
     transform: translateY(-5px); /* 向上位移 */
     box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
 }
-.hg img{
-    width: 23px !important;
-    height: 20px;
+.hg {
+    width: 28px !important;
+    height: 28px;
+    position: absolute;
+    top: 0;
+    right: 0;
 }
 .con{
     flex: 1;
-    margin-left: 12px;
     display: flex;
     flex-direction: column;
-    justify-content: center;
+    gap: 6px;
+    height: 54px;
+    justify-content: flex-end;
+}
+
+.appImg{
+    width: 32px;
+    height: 32px;
+    border-radius: 50%;
+    object-fit: cover;
+    margin-right: 10px;
 }
 .tit{
-    color: #1f2937;font-size: 16px;height: 24px;line-height: 24px;
+    color: #000000;
     -webkit-line-clamp: 1;
     display: -webkit-box;
     -webkit-box-orient: vertical;
     overflow: hidden;
     text-overflow: ellipsis;
+    font-family: PingFang SC;
+    font-weight: 500;
+    font-size: 14px;
+    line-height: 100%;
 }
 .bri{
-    color: #6b7280;font-size: 12px;height: 16px;line-height: 16px;
-    overflow: hidden;
+    color: #969BA3;
     -webkit-line-clamp: 1;
     display: -webkit-box;
     -webkit-box-orient: vertical;
     overflow: hidden;
     text-overflow: ellipsis;
+    font-family: PingFang SC;
+    font-weight: 300;
+    font-size: 10px;
+    line-height: 12px;
 }
-.appImg{
-    width: 48px;
-    height: 48px;
-    border-radius: 50%;
-    object-fit: cover;
-}
-.AppList{
-    flex-wrap: wrap;display: flex;
-    justify-content: space-between;
-    border: 1px rgb(243 244 246 / var(--tw-border-opacity, 1)) solid;
-    border-radius: 10px;padding: 16px;box-sizing: border-box;
-}
+
+
 </style>

+ 208 - 210
src/components/sidebarL.vue

@@ -1,125 +1,114 @@
 <template>
-        <div style="position: relative;height: 100%;">
-            <div class="left">
+        <div class="left">
+            <!-- <div > -->
                 <div class="logo2">
                     <img :src="fromL.basics.logo ? fromL.basics.logo : require('../assets/img/moren.png')" alt="">
                 </div>
-                <div class="ulT">
+                <!-- <div class="ulT"> -->
 
-                    <!-- 默认首页 -->
-                    <div class="ulTOne" @click.stop="goto(0)" :style="{background :activeL === 0 ?'#E6F0FF':'',zIndex:9 }">
-                        <div  class="menu_left">
+                <!-- 默认首页 -->
+                <div class="ulTOne" @click.stop="goto(0)">
+                    <div class="menu_left">
+                        <div class="iconW">
                             <img  class="logo" :src="activeL === 0 ? require('../assets/img/sy1.svg') : require('../assets/img/sy.svg')" alt="">
-                            <span  :style="{color : activeL === 0 ? '#0051D7' :''}">首页</span>
                         </div>
+                        <span class="barT" :style="{color : activeL === 0 ? '#0051D7' :''}">首页</span>
                     </div>
+                </div>
 
-                    <!-- 权限 -->
-                    <div class="TwoBar ulTOne" v-for="(item,index) in appSignL(fromL.admin.sidebar.list)"
-                        :key="index+1">
-
-                        <!-- 渲染菜单类型 -->
-                        <div  class="menu_left" v-if="item.menuName">
-                            <!-- :src="activeL === (index +1) ? item.menuActiveIcon : item.menuIcon" -->
-                            <img :src="item.menuIcon" class="logo" alt="">
-                            <span >{{ item.menuName }}</span>
-                            <!-- :style="{color : activeL === (index +1) ? '#0051D7' :''}" -->
-                              <!-- 二级导航 -->
+                <!-- 权限 -->
+                <div  v-for="(item,index) in appSignL(fromL.admin.sidebar.list)"
+                    :key="index+1">
+
+                    <!-- 渲染菜单类型 -->
+                     <div class="ulTOne TwoBar" v-if="item.menuName">
+                          <!-- 二级导航 -->
+                        <transition name="slide">
+                            <div class="ulTCopy2">
+                                <div class="ulTCopyTit">
+                                    <span>{{ item.menuName }}</span>
+                                </div>
+                                <div class="ulTCopyHei">
+                                    <div class="ulTCopyTxt" 
+                                    v-for="(i,ind) in appSignL(item.children)"
+                                        @click="levTwo(i,ind,index)" :key="ind+'a'">
+                                            <div class="ulTCopyTxt"
+                                             :style="{background : (activeLTwo === index+1 +'+' + ind)? '#E6F0FF' : ''}"
+                                            v-for="(p,pin) in AppCon(i.url)" :key="pin+'p'">
+                                            <el-tooltip class="item" 
+                                            effect="dark" :content="p.name" placement="right">
+                                                        <div class="ulTCopyConT">{{ p.name }}</div>
+                                                    </el-tooltip>
+                                            </div>
+                                    </div>
+                                </div>
+                            </div>
+                        </transition>
+                        <div class="menu_left">
+                            <div class="iconW">
+                                <img :src="activeL === (index +1) ? item.menuActiveIcon : item.menuIcon" class="logo" alt="">
+                            </div>
+                            <span class="barT">{{ item.menuName }}</span>
+                        </div>
+                        
+                     </div>
+                   
+                
+                    <!-- 渲染平台工具类型 -->
+                    <div @click.stop="goto(index,item)" 
+                     v-else>
+                        <div class="ulTOne TwoBar" 
+                        @mouseenter="mouGet(item.toolId)" 
+                        v-for="(p,pin) in AppCon(item.url)" :key="pin+'p'">
+                          <!-- 二级导航 -->
                                 <transition name="slide">
-                                    <div class="ulTCopy">
-                                        <div class="ulTCopyTit">
-                                            <span>{{ item.menuName }}</span>
-                                            <!-- <span @click="closeCopy" class="cha" style="color: #6B7280;font-size: 23px;cursor: pointer;">⨯</span> -->
-                                        </div>
-                                        <div class="ulTCopyHei">
-                                            <div class="ulTCopyTxt" :style="{background : (activeLTwo === index+1 +'+' + ind)? '#E6F0FF' : ''}" 
-                                            v-for="(i,ind) in appSignL(item.children)"
-                                             @click="levTwo(i,ind,index)" :key="ind+'a'">
-                                            <!-- {{ activeLTwo }}------{{  index+1 +'+' + ind }} -->
-                                                <div>
-                                                    <div style="display: flex;justify-content: space-between;align-items: center;" v-for="(p,pin) in AppCon(i.url)" :key="pin+'p'">
-                                                        <img style="width: 30px;object-fit: contain;height: 30px;margin-right: 5px;"  
-                                                        :src="p.icon" 
-                                                        alt="">
-                                                        <div class="ovlH">{{ p.name }}</div>
-                                                    </div>
+                                        <div class="ulTCopy2" v-if="item.toolId == 'appStore'">
+                                            <div class="ulTCopyTit">
+                                                <span>CocoFlow</span>
+                                            </div>
+                                            <div class="ulTCopyHei" >
+                                                <span v-if="cocoFlowList[0].length" style="color: #00000066;">最近使用</span>
+                                                <div class="ulTCopyTxt"  
+                                                v-for="(i,ind) in cocoFlowList[0]" 
+                                                @click="openNewWindow(i.url)" :key="ind+'ab'">
+                                                    <el-tooltip class="item" effect="dark" 
+                                                    :content="i.name" placement="right">
+                                                        <div class="ulTCopyConT">{{ i.name }}</div>
+                                                    </el-tooltip>
+                                                </div>
+                                                <span v-if="cocoFlowList[1].length" style="color: #00000066;">我的收藏</span>
+
+                                                <div class="ulTCopyTxt"
+                                                v-for="(i,ind) in cocoFlowList[1]" @click="openNewWindow(i.url)" :key="ind+'a'">
+                                                    <el-tooltip class="item" effect="dark" 
+                                                    :content="i.name" placement="right">
+                                                        <div class="ulTCopyConT">{{ i.name }}</div>
+                                                    </el-tooltip>
                                                 </div>
                                             </div>
                                         </div>
-                                    </div>
-
-                                </transition>
-                        </div>
-                    
-                        <!-- 渲染平台工具类型 -->
-                        <div @click.stop="goto(index,item)" style="border-radius: 10px;" 
-                        :style="{background :activeL === (index +1) ?'#E6F0FF':'',zIndex : 9999 }" v-else>
-                            <div  v-for="(p,pin) in AppCon(item.url)" :key="pin+'p'">
+                                    </transition>
                                 <div class="menu_left" >
-                                    <div>
-                                        <img class="logo3"  
-                                        :src="activeL === (index +1) ? p.icon : p.activeIcon" 
+                                    <div class="iconW">
+                                        <img class="logo"  
+                                        :src="activeL === (index +1) ? p.activeIcon : p.defaultIcon" 
                                         alt="">
                                     </div>
-                                    <span :style="{color : activeL === (index +1) ? '#0051D7' :''}">
+                                    <span class="barT" :style="{color : activeL === (index +1) ? '#0051D7' :''}">
                                         {{ p.name }}
                                     </span>
                                 </div>
-                            </div>
-
-                            <transition name="slide" style="z-index: -10;">
-                                    <!-- 应用中心 -->
-                                    <div class="ulTCopy" style="z-index: -10;"  v-if="item.toolId == 'appStore'">
-                                        <div class="ulTCopyTit">
-                                            <span>CocoFlow</span>
-                                            <!-- <span @click="closeCopy" class="cha" style="color: #6B7280;font-size: 23px;cursor: pointer;">⨯</span> -->
-                                        </div>
-                                        <div class="ulTCopyHei" >
-                                            <span style="color: #00000066;">最近使用</span>
-                                            <div class="ulTCopyTxt"  
-                                            v-for="(i,ind) in cocoFlowList[0]" @click="openNewWindow(i.url)" :key="ind+'ab'">
-                                                <div  class="ulTCopyTxtCon">
-                                                        <img style="width: 20px;height: 20px;border-radius: 10px;object-fit: contain;margin-right: 5px;"  
-                                                        :src="JSON.parse(i.json).icon" 
-                                                        alt="">
-                                                        <div class="ovlH">{{ i.name }}</div>
-                                                </div>
-                                            </div>
-                                            <span style="color: #00000066;">我的收藏</span>
 
-                                            <div class="ulTCopyTxt"
-                                            v-for="(i,ind) in cocoFlowList[1]" @click="openNewWindow(i.url)" :key="ind+'a'">
-                                                    <div class="ulTCopyTxtCon" >
-                                                        <img style="width: 20px;height: 20px;border-radius: 10px;object-fit: contain;margin-right: 5px;"  
-                                                        :src="JSON.parse(i.json).icon" 
-                                                        alt="">
-                                                        <div class="ovlH">{{ i.name }}</div>
-                                                </div>
-                                            </div>
-                                        </div>
-
-                                    </div>
-
-                                </transition>
                         </div>
                     </div>
-                
-                </div>
-                <div class="userInfo">
-                    <img style="width: 40px;height: 40px;object-fit: cover;border-radius: 50%;margin-bottom: 4px;" :src="userinfo.headportrait ? userinfo.headportrait : require('../assets/img/toux.png')" alt="">
-                    <div style="margin-bottom: 8px;">{{ userinfo.username }}</div>
-                    <span style="cursor: pointer;padding: 5px;background-color: #e7e7e7;box-sizing: border-box;border-radius: 5px;" @click="handleLogout">退出登录</span>
                 </div>
-            </div>
-           
-           
-          
+
         </div>
 </template>
 
 <script>
 import { mapGetters, mapActions } from 'vuex';
-import { loginOut } from '@/api/user';
+
 import store from '../store'
 import { API_CONFIG } from "@/common/apiConfig";
 
@@ -150,7 +139,7 @@ import { API_CONFIG } from "@/common/apiConfig";
             // 筛选是否为管理员可见,是否被删除
             appSignL(){
                 return function(val){
-                    // console.log(val);
+                    // console.log('appSignL',val);
                     
                     let data = []
                     if (this.userinfo.type == 1 && this.userinfo.role == 1) {
@@ -174,6 +163,7 @@ import { API_CONFIG } from "@/common/apiConfig";
             return {
                 // 一级选中第几个
                 activeL:0,
+                visible:true,
                 // 二级选中第几个
                 activeLTwo: null,
                 cocoFlowList:[],
@@ -184,29 +174,12 @@ import { API_CONFIG } from "@/common/apiConfig";
             ...mapActions({
                 logout: 'user/logout'
             }),
-            async handleLogout() {
-                this.$confirm('确定退出吗', '提示', {
-                    confirmButtonText: '确定',
-                    cancelButtonText: '取消',
-                    type: 'warning'
-                }).then(async () => {
-                    loginOut()
-                    .then(async () => {
-                        this.$message({
-                        message: '退出成功',
-                        type: 'success'
-                        });
-                        await this.logout();
-                        this.$router.push('/login');
-                    })
-                    .catch(err => {
-                        console.error(err);
-                    });
-                }).catch(() => {
-                    // 取消操作
-                });
-            },
 
+            mouGet(val){
+                if(val != 'appStore') return
+                console.log('666')
+                this.getData()
+            },
             // 点击一级导航
             async goto(index,val = null){
                 // console.log('goto',val);
@@ -281,8 +254,11 @@ import { API_CONFIG } from "@/common/apiConfig";
 
                     let pl = {json:kpl ,stateL :true,toolId :val.toolId}
 
+                    // 添加打开应用
                     this.$emit('AddAppJson',pl)
             },
+            
+            // 获取cocoFlow收藏与历史使用记录
             getData(){
                 let params = [
                     {
@@ -299,7 +275,6 @@ import { API_CONFIG } from "@/common/apiConfig";
                     })
                     .catch((err) => {
                         console.log(err);
-                        this.loading = false
                         this.$message.error("获取常见应用失败");
                     });
             },
@@ -307,6 +282,7 @@ import { API_CONFIG } from "@/common/apiConfig";
             async levTwo(val,index,aInd){     
                 
                 this.activeL = ''
+                this.activeL = aInd +1
                 this.activeLTwo = `${aInd + 1}+${index}`
 
                 // 点击相同应用不刷新
@@ -375,26 +351,61 @@ import { API_CONFIG } from "@/common/apiConfig";
 </script>
 
 <style scoped>
+.ulTCopy{
+    overflow: auto;
+    height: 100%;
+}
+.ulTCopy2 {
+    height: 90%;
+    width: 154px;
+    overflow: hidden;
+    background-color: #FFFFFFE5 !important;
+    border-radius: 12px;
+    position: fixed;
+    left: -75px;
+    top: 70px;
+    z-index: -100;
+    background-color: #ffffff;
+    transition: transform .5s ease;
+
+}
+
+.TwoBar:hover .ulTCopy2{
+    display: block !important;
+    transform: translateX(164px) !important; /* 初始位置在视图之外 */
+    z-index: -100;
+    box-shadow: 0px 6px 30px 5px #0000000D;
+
+}
 
 .logo{
-  width: 80px;
-  height: 68px;
+  margin: auto;
+  width: 21px;
+  max-height: 24px;
 }
-.logo3{
-    height: 25px;object-fit: contain;transform: scale(1.5);
+
+.iconW{
+    width: 30px;
+    height: 30px;
+    display: flex;
+    align-content: center;
+    justify-content: center;
+    padding: 1px;
+    box-sizing: border-box;
 }
-.logo2{
-  padding: 16px;
+.logo2 {
+  padding: 8px;
   box-sizing: border-box;
-  height: 68px;
+  height: 48px;
   width: 100%;
   background-color: #fff;
   text-align: center;
-  border-bottom: .5px #e5e7eb solid;
 }
 .logo2 img{
-  width: 37px;
+    width: 30px;
+    height: 30px;
 }
+
 .userInfo{
   width: 80px;
   color: #374151;
@@ -411,65 +422,55 @@ import { API_CONFIG } from "@/common/apiConfig";
     font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji" !important;
     width: 80px;
     height: 100%;
+    padding:23px 6px;
+    box-sizing: border-box;
     background-color: #ffffff;
     display: flex;
     flex-direction: column;
     align-items: center;
-    justify-content: space-between;
-    position: relative;
-    box-shadow: 5px 0 8px rgba(0, 0, 0, 0.1);
-    /* z-index: 999; */
-
-}
-.left .ulT { 
-  width: 100%;
-  height: 100%;
-  padding: 8px 0;
-  box-sizing: border-box;
-  display: flex;
-  gap: 10px;
-  overflow: auto;
-  overflow-x: hidden;
-  flex-direction: column;
-  background-color: #ffffff;
+    gap: 24px;
+    overflow: auto;
+    border-right: 1px #D5D5D5 solid;
 }
-.left .ulT .ulTOne{ 
+
+.ulTOne{ 
+    width: 100%;
     border-radius: 10px;
-    margin: 0 auto;
+    display: flex;
+    height: 48px;
+    width: 48px;
+    flex-wrap:nowrap;
+    align-content: center;
+    justify-content: center;
+    position: relative;
 }
 
-.ulT div:nth-child(1){
-    margin-top: 0;
-}
-.ulTCopy{
-    position: fixed;
-    left: -256px;
-    top: 0;
-    height: 100%;
-    width: 256px;
-    z-index: -100;
-    background-color: #ffffff;
-    overflow: visible; 
-    transform: translateX(0px); /* 初始位置在视图之外 */
-    box-shadow: inset 2px 0 8px rgba(0, 0, 0, 0.1),5px 3px 5px 0px rgba(0, 0, 0, 0.1);
-    transition: transform .5s ease;
 
+.barT{
+    font-size:10px;
+    overflow: hidden;
+    white-space: nowrap;
+    text-overflow: ellipsis;
 }
 
-.TwoBar:hover .ulTCopy{
-    transform: translateX(336px); /* 初始位置在视图之外 */
-    z-index: -100;
-    display: block !important;
-}
-.TwoBar{
-    position: relative;
-    padding:0 8px;box-sizing: border-box;
+.menu_left {
+  width: 32px;
+  height: 42px;
+  font-size: 10px;
+  color: #64748b;
+  box-sizing: border-box;
+  cursor: pointer;
+  margin: auto;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  gap: 2px;
 }
 
+
 .slide-enter-active, .slide-leave-active {
   transition: transform 0.5s ease;
   z-index: -1000 !important;
-
 }
 
 .slide-enter{
@@ -477,71 +478,68 @@ import { API_CONFIG } from "@/common/apiConfig";
   transform: translateX(0); /* 进入时移动到正常位置 */
 }
 .slide-leave-to /* .slide-leave-active in <2.1.8 */ {
-
     z-index: -1000 !important;
-
-  transform: translateX(0); /* 进入时移动到正常位置 */
+    transform: translateX(0); /* 进入时移动到正常位置 */
 }
 
 .ulTCopyTit{
-    height: 72px;padding: 16px;box-sizing: border-box;color: #000;font-size: 18px;font-weight: 600;
-    display: flex;
-    align-items: center;
-    justify-content: space-between;
+    font-family: PingFang SC;
+    font-weight: 600;
+    font-size: 12px;
+    letter-spacing: 0px;
+    color: #000;
+    height: 40px;
+    padding: 12px 16px;
+    box-sizing: border-box;
     border-bottom: .5px #e5e7eb solid;
+    background: #fff !important;
 }
 .ulTCopyHei{
-    padding: 16px;box-sizing: border-box;display: flex;flex-direction: column;gap: 10px;
+    display: flex;flex-direction: column;
+    gap: 10px;
     overflow: auto;
+    padding: 10px;
+    overflow-x: hidden;
     height: calc(100% - 72px);
 }
 .ulTCopyTxt{
-    height: 48px;padding: 12px;box-sizing: border-box;display: flex;align-items: center;
+    box-sizing: border-box;display: flex;
+    align-items: center;
     color: #374151;
+    width: 100%;
     border-radius: 10px;
-    cursor: pointer;
     font-size: 16px;
     margin: 0;
 }
+.ulTCopyTxtBlock{
+    width: 100%;
+}
+.ulTCopyConT {
+    width: 100%;
+    font-size: 12px;
+    cursor: pointer;
+    border-radius: 8px;
+    padding: 8px;
+    box-sizing: border-box;
+    white-space: nowrap;
+    overflow: hidden;
+    text-overflow: ellipsis;
+   
+}
+.ulTCopyConT:hover{
+    background: #e7e7e7;
+}
 .ulTCopyTxtCon{
    display: flex;align-items: center;width: 100%;
 }
-.ulTCopyTxt:hover{
+/* .ulTCopyTxt:hover{
     background-color: #f3f4f6 !important;
-}
+} */
 .cha:hover{
     color: #000 !important;
 }
 
-.menu_left {
-  width: 64px;
-  height: 70px;
-  font-size: 10px;
-  margin-top: 3px;
-  white-space: nowrap;
-  color: #64748b;
-  align-items: center;
-  justify-content: center;
-  display: flex;
-  flex-wrap: wrap;
-  padding: 12px;
-  box-sizing: border-box;
-  border-radius: 10px;
-  border: none;
-  z-index: 1000000;
-  text-decoration: none; /* 移除下划线 */
-  cursor: pointer;
-  border-radius: 10px;
-  margin-top: 12px;
-}
 
-.menu_left:hover{
-    background-color: #f3f4f6 !important;
-}
-.menu_left img{
-  width: 22px;
-  height: 20px;
-}
 .ovlH{
     overflow: hidden;
     white-space: nowrap;

+ 371 - 150
src/components/topPage.vue

@@ -8,24 +8,36 @@
                     <div>AI平台!</div>
                 </div>
                 <div class="topDetail">
-                    <!-- 探索AI教育的无限可能,提升教学效率与学习体验 -->
                      {{ fromL.basics.brief }}
                 </div>
             </div>
             <img style="width: 96px;height: 96px;" src="../assets/img/root.png" alt="">
+            
+            <!-- <div v-if="fromL.basics.loginBanner" style="margin: 20px 0;border-radius: 10px;overflow: hidden;">
+                <el-carousel :interval="5000" arrow="always">
+                    <el-carousel-item v-for="(item,index) in bannerL(fromL.basics.loginBanner)" :key="index">
+                        <img style="width: 100%;object-fit: cover;" :src="fromL.basics.loginBanner" alt="">
+                    </el-carousel-item>
+                </el-carousel>
+            </div> -->
         </div>
+
+        <!-- 平台应用  -->
         <div class="TabList">
-            <div class="TabListCon" @click="openApp(item)" v-for="(item,index) in appSignL(fromL.admin.index.list)" :key="index">
+            <div
+                @mouseenter="setHovered(index, true)"
+                @mouseleave="setHovered(index, false)"
+                class="TabListAll"
+                @click="openApp(item)" 
+                v-for="(item,index) in tabList" 
+                :key="index+'1p'">
+                <div class="TabListCon">
                     <div v-for="(p,pin) in AppCon(item.url)" :key="pin+'p'">
-                        <img style="height: 25px;object-fit: contain;transform: scale(1.5);margin-bottom: 12px;"     
-                        :src="p.icon" 
-                        alt="">
+                        <img class="imgApp" v-if="tabList[index].hovered ? p.hoverIcon : p.platformIcon" :src="tabList[index].hovered ? p.hoverIcon : p.platformIcon" alt="">
                         <div class="TabListName">
                             {{ p.name }}
                         </div>
                     </div>
-
-                   
                     <div class="TabListBri">
                         <el-tooltip class="item" effect="light" :content="item.description" placement="bottom">
                             <span>
@@ -33,36 +45,74 @@
                             </span>
                         </el-tooltip>
                     </div>
+
+                </div>
+                    
             </div>
         </div>
+
+        <!-- 常见应用  -->
         <div class="footCon">
             <div class="footConLeft">
-                <div><img style="margin-bottom: 12px;height: 41px;width: 36px;" src="../assets/img/sucai2.svg" alt=""></div>
-                <div style="font-size: 20px;font-weight: 600;color: #1f2937;margin-bottom: 8px;">CocoFlow</div>
-                <div style="color: #4b5563;font-size: 14px;">汇聚丰富的教育AI应用,搭建属于您的专属教育应用</div>
+                <img src="../assets/img/dong.png" alt="">
             </div>
 
-            <div class="footList">
-                <div class="footListCon" v-for="(item,index) in CocoFlowList" @click="openNewWindow(item)" :key="index">
-                    <div @click="openData()"><img style="margin-bottom: 12px;height: 24px;width: 22px;" :src="JSON.parse(item.json).icon" alt=""></div>
-                    <div class="TabListName">{{ item.name }}</div>
-                    <div class="TabListBri">
-                        <el-tooltip class="item" effect="light" :content="item.detail" placement="bottom">
-                            <span>
-                                {{ item.detail }}
-                            </span>
-                        </el-tooltip>
+            <div style="display: flex;gap: 16px;flex: 1;">
+                <div class="footList">
+                    <div class="footListCon" v-for="(item,index) in admincocoFlow" @click="openNewWindow(item)" :key="index+'2p'">
+                        <div class="footListConimg">
+                            <img v-if="!fromL.admin.cocoFlow.length" 
+                            style="margin-bottom: 12px;height: 24px;width: 22px;" 
+                            :src="appImgList[index]" alt="">
+                            <img
+                            style="margin-bottom: 12px;height: 24px;width: 22px;"  
+                            v-else :src="JSON.parse(item.json).icon" alt="">
+                        </div>
+                           
+                            
+                        <div class="TabListName">{{ item.name }}</div>
+                        <div class="TabListBri">
+                            <el-tooltip class="item" effect="light" :content="item.detail" placement="bottom">
+                                <span>
+                                    {{ item.detail }}
+                                </span>
+                            </el-tooltip>
+                        </div>
+                        <!-- <div class="cha" @click.stop="delApp(item.lid)">
+                            <img style="width: 20px;" src="../assets/img/cha.svg" alt="">
+                        </div> -->
                     </div>
-                    <div class="cha" @click.stop="delApp(item.lid)">
-                        <img style="width: 20px;" src="../assets/img/cha.svg" alt="">
+                </div>
+
+                <div class="footList2">
+                    <div class="footList2Tit">
+                        常见应用
+                    </div>
+                    <div v-for="(i,index) in (4 - CocoFlowList.length)" @click="openUsuallyApp" 
+                    :key="index+'3p'" class="footListCon2">
+                        <div style="margin-bottom: 8px;font-size: 40px;color: #0354D7;">
+                            <img src="../assets/img/add.svg" alt="">
+                        </div>
+                    </div> 
+                    <div class="footListCon6" v-for="(item,index) in CocoFlowList" @click="openNewWindow(item)" :key="index+'4p'">
+                        <div class="footListConimg">
+                            <img style="margin-bottom: 12px;height: 24px;width: 22px;" :src="JSON.parse(item.json).icon" alt="">
+                        </div>
+                        <div class="TabListName">{{ item.name }}</div>
+                        <div class="TabListBri">
+                            <el-tooltip class="item" effect="light" :content="item.detail" placement="bottom">
+                                <span>
+                                    {{ item.detail }}
+                                </span>
+                            </el-tooltip>
+                        </div>
+                        <div class="cha" @click.stop="delApp(item.lid)">
+                            <img style="width: 20px;" src="../assets/img/cha.svg" alt="">
+                        </div>
                     </div>
                 </div>
-                <!-- v-if="userinfo.type == 1 && userinfo.role == 1" -->
-                <div :style="{width : CocoFlowList.length ? '' : '187px'}" v-if="CocoFlowList.length < 4" @click="openUsuallyApp" class="footListCon footListCon2">
-                    <div style="margin-bottom: 8px;font-size: 40px;color: #0354D7;">+</div>
-                    <div class="TabListBri">添加常用应用</div>
-                </div> 
             </div>
+            
         </div>
 
         <!-- 常见应用弹框 -->
@@ -75,7 +125,7 @@
         width="60%"
         :before-close="handleClose">
             <div v-loading="loading" style="display: grid;grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));gap: 16px;height: 300px;overflow: auto;">
-                <div v-for="(item,index) in isAdd(usuallyList)" class="tabCon" @click="addApp(item.id)"  :key="index" style="min-width: 308px;">
+                <div v-for="(item,index) in isAdd(usuallyList)" class="tabCon" @click="addApp(item.id)"  :key="index+'6p'" style="min-width: 308px;">
                         <div class="AppList">
                             <img class="appImg" :src="JSON.parse(item.json).icon" alt="">
                             <div class="con">
@@ -110,10 +160,18 @@ import { API_CONFIG } from "@/common/apiConfig";
     export default {
         computed: {
             ...mapGetters(['userinfo','fromL']),
-              // 如果hk,com没有图标,默认使用cn的
-              AppCon(){
+            // banner循环图
+            // bannerL(){
+            //     return function(val){
+            //         console.log('val',val);
+            //         return val.split(',')
+            //     }
+            // },
+            // 如果hk,com没有图标,默认使用cn的
+            AppCon(){
                 return function(c) {
                     let k = JSON.parse(JSON.stringify(c))
+
                     let data = k.filter(e=>{
                         return e.region == this.userinfo.schoolArea || e.region == this.userinfo.orgArea
                     })
@@ -127,40 +185,36 @@ import { API_CONFIG } from "@/common/apiConfig";
                         data[0].icon = data2[0].icon
                         data[0].activeIcon = data2[0].activeIcon
                     }
+                    
                     return data
                 };
             },
             // 筛选是否为管理员可见,是否被删除
             appSignL(){
                 return function(val){
-                    
                     let data = []
                     if (this.userinfo.type == 1 && this.userinfo.role == 1) {
                         val.forEach( e =>{
                             if (e.menuName || e.status == 0) {
-                               data.push(e)
+                                data.push(e)
                             }
                         })
                     } else {
                         val.forEach( e =>{
                             if (e.menuName || (e.isAdmin == '0' && e.status == 0)) {
-                               data.push(e)
+                                data.push(e)
                             }
                         })
                     }
                     return data
                 }
             },
+            // 判断是否被添加过
             isAdd(){
                 return function(val){
                     const difference = val.filter(item1 => 
                         !this.CocoFlowList.some(item2 => item1.id === item2.id)
                     );
-                    // console.log('difference',difference);
-                    
-                //    let data = val.filter(e=>{
-                //     return !this.CocoFlowList.includes(e.id) 
-                //    })
                     return difference
                 }
             }
@@ -168,18 +222,39 @@ import { API_CONFIG } from "@/common/apiConfig";
         data() {
             return {
                 dialogVisible:false, 
-                //常见ai应用列表
+                //常见ai应用列表(添加弹框)
                 usuallyList:[], 
                 loading:false,
                  //选中应用列表
                 tab:[],
-                // 已添加ai应用数组
-                CocoFlowList:[]
+                // 管理平台添加常见cocoFlow应用
+                admincocoFlow:[],
+                // 用户ai应用数组
+                CocoFlowList:[],
+                // 平台工具 
+                tabList:[],
+                appImgList:[
+                    require('../assets/img/img4.svg'),
+                    require('../assets/img/img1.svg'),
+                    require('../assets/img/img3.svg'),
+                    require('../assets/img/img5.svg'),
+                    require('../assets/img/img8.svg'),
+                    require('../assets/img/img2.svg'),
+                    require('../assets/img/img7.svg'),
+                    require('../assets/img/img6.svg'),
+                ],
+
+                hovList:[],
             }
         },
         methods: {
-            openData(){
-                window.topU.U.MD.D.I.openApplication('my')
+            setHovered(index, value) {
+                // console.log(index, value);
+                
+
+                this.tabList[index].hovered = value;
+                // console.log('this.tabList',this.tabList[index].hovered);
+                
             },
             // 删除应用
             delApp(val){
@@ -218,14 +293,14 @@ import { API_CONFIG } from "@/common/apiConfig";
                 this.tab= []
                 this.dialogVisible = false
             },
-            // 弹框选添加应用
+            // 弹框选添加应用
             addApp(val){
                 // let data = this.CocoFlowList.filter(e=>{
                 //     return e.id == val 
                 // })
                 // if (data.length != 0) return this.$message.info('常用列表已添加')
                 let kpl = [...this.tab,...this.CocoFlowList]
-                console.log(kpl);
+                // console.log(kpl);
                 
 
                 const index = this.tab.indexOf(val);
@@ -274,7 +349,7 @@ import { API_CONFIG } from "@/common/apiConfig";
                 this.getData()
                 this.handleClose()
             },
-            // 循环添加常见应用
+            // 循环添加用户选择常见应用
             XAdd(val){
                 return new Promise((resolve) => {
                     let params = [
@@ -316,6 +391,62 @@ import { API_CONFIG } from "@/common/apiConfig";
                         this.$message.error("获取工具数据失败");
                     });
             },
+            siftCoco(){
+                let data = []
+                let val = JSON.parse(JSON.stringify(this.fromL.admin.index.list))
+                
+                // 用户是管理员全部展示
+                if (this.userinfo.type == 1 && this.userinfo.role == 1) {
+                    val.forEach( e =>{
+                        if (e.menuName || e.status == 0) {
+                            data.push(e)
+                        }
+                    })
+                } else {
+                    // 用户不是管理员,判断是否为用户可见 isAdmin 0普通用户 status是否被删除
+                    val.forEach( e =>{
+                        if (e.menuName || (e.isAdmin == '0' && e.status == 0)) {
+                            data.push(e)
+                        }
+                    })
+                }
+
+                
+                this.tabList = data
+                console.log('this.tabList',this.tabList);
+
+            },
+            getAdmincocoFlow(){
+                // 筛选可用平台工具,判断是否管理员可见,去除已删除工具
+                this.siftCoco()
+                // console.log('getAdmincocoFlow',this.fromL);
+                
+                let appList=["2d05a12a-f0e7-11ef-b508-005056924926",
+                            "38ee6402-0539-11f0-b508-005056924926",
+                            "1c83613c-ffb7-11ef-b508-005056924926",
+                            "0d3d87bd-00b6-11f0-b508-005056924926",
+                            "ee61f383-0311-11f0-b508-005056924926",
+                            "701615ab-ffe8-11ef-b508-005056924926",
+                            "d1edef14-ef6f-11ef-b508-005056924926",
+                            "a8781a86-00d8-11f0-b508-005056924926"]
+
+                let params = [
+                    {
+                        functionName: API_CONFIG.ajax_AdminApp.functionName,
+                        con: this.fromL.admin.cocoFlow.length == 0 ? appList.join(',') : this.fromL.admin.cocoFlow.join(','), 
+                    },
+                ];
+                
+                this.$ajax
+                    .post(API_CONFIG.baseUrl, params)
+                    .then((res) => {
+                        this.admincocoFlow = res.data[0]
+                    })
+                    .catch((err) => {
+                        console.log(err);
+                        this.$message.error("获取工具数据失败");
+                    });
+            },
 
             // 打开平台应用
             async openApp(val){
@@ -394,159 +525,225 @@ import { API_CONFIG } from "@/common/apiConfig";
 </script>
 
 <style scoped>
-.moreDia >>> .el-dialog{
-    border-radius: 10px;
+/* 顶部区域 */
+.topBlock{
+    display: flex;
+    flex-direction: column;
+    justify-content: space-between;
 }
-.moreDia >>> .el-dialog__body{
-    height: 345px;
-    /* overflow: auto; */
-    border-top: 1px #e7e7e7 solid;
+.topTit{
+    font-size: 30px;
+    height: 100%;
+    color: #000;
+    font-weight: 600;
 }
-.conBlock{
-    background-color: #fff;
+.topDetail{
+    color: #64748B;
+    margin-top: 16px;
+}
+
+
+
+
+
+
+
+/* 平台应用 */
+.TabList{
+    display: grid;
+    grid-template-columns: repeat(3, 1fr);
+    gap: 20px; /* 网格间距 */
+    margin-bottom: 16px;
+}
+
+.TabListAll{
+    position: relative !important;
+    display: flex;
+    justify-content: flex-end;
+}
+.imgApp{
+    width: 120px;
+    height: 140px;
+    object-fit: contain;
+    position: absolute;
+    top: 50%;
+    transform: translate(0,-50%) !important;
+    left: 0px;
+}
+.TabListCon{
+    width: 170px;
+    height: 140px;
     padding: 24px;
     box-sizing: border-box;
-    margin-bottom: 24px;
+    background-color: #fff;
     border-radius: 10px;
-}
-.tabCon{
+    width: calc(100% - 60px);
     transition: all 0.3s ease; /* 统一过渡效果 */
-    border-radius: 10px;
+    background-size: 20px 20px;
     cursor: pointer;
-}
-
-.con{
-    flex: 1;
-    margin-left: 12px;
+    box-shadow: 0px 4px 10px 0px #0000000D;
     display: flex;
     flex-direction: column;
-    justify-content: center;
+    justify-content: flex-end;
+    align-items: end;
 }
-.tit{
-    color: #1f2937;font-size: 16px;height: 24px;line-height: 24px;
-    -webkit-line-clamp: 1;
+.TabListCon:hover{
+    width: calc(100% - 50px);
+    height: 125px;
+    margin-right: 10px;
+    box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
+}
+.TabListCon:hover TabListBri{
+    -webkit-line-clamp: 2;
+    width: 150px;
+}
+.TabListName{
+    color: #1f2937;
+    font-size: 16px;
+    font-weight: 600;
+    padding: 5px 0;
+    margin-bottom: 4px;
+    -webkit-line-clamp: 2;
     display: -webkit-box;
     -webkit-box-orient: vertical;
     overflow: hidden;
     text-overflow: ellipsis;
 }
-.bri{
-    color: #6b7280;font-size: 12px;height: 16px;line-height: 16px;
-    overflow: hidden;
+.TabListBri{
+    color: #4b5563;
+    font-size: 12px;
     -webkit-line-clamp: 1;
     display: -webkit-box;
     -webkit-box-orient: vertical;
     overflow: hidden;
     text-overflow: ellipsis;
 }
-.appImg{
-    width: 48px;
-    height: 48px;
-    border-radius: 50%;
-    object-fit: cover;
-}
-.AppList{
-    flex-wrap: wrap;display: flex;
-    justify-content: space-between;
-    border: 1px rgb(243 244 246 / var(--tw-border-opacity, 1)) solid;
-    border-radius: 10px;padding: 16px;box-sizing: border-box;
-    position: relative;
+
+.tabCon{
+    transition: all 0.3s ease; /* 统一过渡效果 */
+    border-radius: 10px;
+    cursor: pointer;
 }
+
+
+
+
+
+/* 常见应用样式 */
 .footCon{
     display: flex;
+    height: 350px;
     justify-content: space-between;
-    padding: 16px;
     box-sizing: border-box;
-    background-color: #eff6ff;
     border-radius: 10px;
-    background-image: radial-gradient(#E6F0FF 1px, transparent 1px);
+    margin: 80px 0;
+    /* background-image: radial-gradient(#E6F0FF 1px, transparent 1px); */
     background-size: 20px 20px;
 }
-.footListCon2{
+
+/* 图片 */
+.footConLeft{
+    width: 400px;
+    box-sizing: border-box;
     display: flex;
     justify-content: center;
-    flex-direction: column;
     align-items: center;
-    max-width: 187px;
+}
+.footConLeft img{
+    object-fit: contain;
+}
+
+/* 中间后面设置应用 */
+.footList{
+    display: grid;
+    grid-template-columns: repeat(4, 1fr);
+    grid-template-rows: repeat(2, 1fr); /* 创建两行,每行高度相等 */
+    gap: 16px; /* 网格间距 */
+    flex: 2;
 }
 .footListCon{
     background-color: #fff;
     border-radius: 10px;
-    padding: 24px;
+    box-shadow: 0px 0px 22.4px 0px #0000000D;
+    padding: 16px;
     box-sizing: border-box;
     transition: all 0.3s ease; /* 统一过渡效果 */
-    min-height: 156px;
-    max-width: 187px;
-    background-image: radial-gradient(#E6F0FF 1px, transparent 1px);
-    background-size: 20px 20px;
+    cursor: pointer;
+}
+.footListCon6{
+    background-color: #fff;
+    border-radius: 10px;
+    box-shadow: 0px 0px 22.4px 0px #0000000D;
+    padding: 16px;
+    box-sizing: border-box;
     cursor: pointer;
     position: relative;
 }
+.footListCon6:hover .cha{
+    display: block;
+}
 .footListCon:hover{
-    transform: translateY(-5px); /* 向上位移 */
+    transform: translate(-5px,-10px); /* 向上位移 */
     box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
 }
+
+.footListConimg{
+    height: 40%;
+    padding-top: 8px;
+    box-sizing: border-box;
+}
 .cha{
     display: none;position: absolute;top: 10px;right: 10px;
 }
 .footListCon:hover .cha{
     display: block;
 }
-.footConLeft{
-    padding: 25px;
-    min-width: 50px;
-    box-sizing: border-box;
-}
-.footList{
+
+/* 添加常见应用区域 */
+.footList2{
     display: grid;
-    grid-template-columns: repeat(4, 1fr);
-    gap: 16px; /* 网格间距 */
+    grid-template-columns: repeat(2, 1fr);
+    grid-template-rows: repeat(2, 1fr); /* 创建两行,每行高度相等 */
+    gap: 16px;
+    flex: 1;
+    position: relative;
 }
-.TabList{
-    display: grid;
-    grid-template-columns: repeat(3, 1fr);
-    gap: 16px; /* 网格间距 */
-    margin-bottom: 16px;
+.footList2Tit{
+    position: absolute;
+    top: -30px;
+    left: 0;
+    font-family: PingFang SC;
+    color: #000;
 }
 
-.TabListCon{
-    width: 170px;
-    height: 140px;
-    padding: 24px;
-    box-sizing: border-box;
-    background-color: #fff;
-    border-radius: 10px;
-    width: 100%;
-    box-shadow: 0 0 #0000, 0 0 #0000, 0 1px 2px 0 rgb(0 0 0 / 0.05);
-    transition: all 0.3s ease; /* 统一过渡效果 */
-    background-image: radial-gradient(#E6F0FF 1px, transparent 1px);
-    background-size: 20px 20px;
+.footListCon2{
+    display: flex;
     cursor: pointer;
+    justify-content: center;
+    flex-direction: column;
+    align-items: center;
+    border: 1px dashed  #000000;
+    box-sizing: border-box;
+    border-radius: 12px;
+    border-width: 1px;
+    background-color: #E5E5E5;
 }
-.TabListCon:hover{
-    transform: translateY(-5px); /* 向上位移 */
-    box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
+.footListCon2:hover {
+    background: #C9C9C9;
 }
-.TabListName{
-    color: #1f2937;
-    font-size: 18px;
-    font-weight: 600;
-    margin-bottom: 4px;
-    -webkit-line-clamp: 2;
-    display: -webkit-box;
-    -webkit-box-orient: vertical;
-    overflow: hidden;
-    text-overflow: ellipsis;
+
+
+
+/* 弹框 */
+.moreDia >>> .el-dialog{
+    border-radius: 10px;
 }
-.TabListBri{
-    color: #4b5563;
-    font-size: 12px;
-    -webkit-line-clamp: 2;
-    display: -webkit-box;
-    -webkit-box-orient: vertical;
-    overflow: hidden;
-    text-overflow: ellipsis;
+.moreDia >>> .el-dialog__body{
+    height: 345px;
+    /* overflow: auto; */
+    border-top: 1px #e7e7e7 solid;
 }
+/* 对号 */
 .top{
     display: flex;
     min-height: 144px;
@@ -559,19 +756,43 @@ import { API_CONFIG } from "@/common/apiConfig";
     border-radius: 10px;
     box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)
 }
-.topBlock{
+
+.AppList{
+    flex-wrap: wrap;display: flex;
+    justify-content: space-between;
+    border: 1px rgb(243 244 246 / var(--tw-border-opacity, 1)) solid;
+    border-radius: 10px;padding: 16px;box-sizing: border-box;
+    position: relative;
+}
+.appImg{
+    width: 48px;
+    height: 48px;
+    border-radius: 50%;
+    object-fit: cover;
+}
+.con{
+    flex: 1;
+    margin-left: 12px;
     display: flex;
     flex-direction: column;
-    justify-content: space-between;
+    justify-content: center;
 }
-.topTit{
-    font-size: 30px;
-    height: 100%;
-    color: #000;
-    font-weight: 600;
+.tit{
+    color: #1f2937;font-size: 16px;height: 24px;line-height: 24px;
+    -webkit-line-clamp: 1;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    overflow: hidden;
+    text-overflow: ellipsis;
 }
-.topDetail{
-    color: #64748B;
-    margin-top: 16px;
+.bri{
+    color: #6b7280;font-size: 12px;height: 16px;line-height: 16px;
+    overflow: hidden;
+    -webkit-line-clamp: 1;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    overflow: hidden;
+    text-overflow: ellipsis;
 }
+
 </style>

+ 103 - 20
src/views/HomeView.vue

@@ -1,17 +1,37 @@
 <template>
   <div class="body">
-    <!-- <div class="top">
-      <div class="title">CocoClass后台管理</div>
-      <div class="person">
-        <div class="person_name">{{ userinfo ? userinfo.username : "" }}</div>
-        <el-button type="text" @click="handleLogout" style="margin-left: 20px">退出</el-button>
-      </div>
-    </div> -->
+   
     <div class="container">
       <div class="leftBar" style="height: 100%;">
         <sidebarL @getPer="getPer" @AddAppJson="AddAppJson" :urlAddress.sync="urlAddress"  ref="sidebarLRef"></sidebarL>
       </div>
       <div class="table-container">
+
+        <div class="top">
+          <div class="topCon">
+            <div class="title">
+              <span v-if="userinfo.orgName">{{userinfo.orgName}}</span >
+              <span style="color: #0663FE;font-weight: 600;">{{ userinfo.schoolName }}</span>
+                
+            </div>
+            <div class="person">
+              <div class="person_name">
+                <img
+                style="width: 40px;height: 40px;object-fit: cover;border-radius: 50%;" 
+                :src="userinfo.headportrait ? userinfo.headportrait : require('../assets/img/toux.png')" alt="">
+                <div class="personInfo">
+                  <div class="personInfoTit">
+                    {{  userinfo.username }}
+                  </div>
+                  <div class="personInfoBri">
+                    {{ userinfo.accountNumber }}
+                  </div>
+                </div>
+              </div>
+              <el-button type="text" @click="handleLogout" style="margin-left: 20px">退出</el-button>
+            </div>
+          </div>
+        </div>
         <!-- <router-view></router-view> -->
          <!-- 首页 -->
          <homepageL @AddAppJson="AddAppJson" :urlAddress.sync="urlAddress" v-show="!appSign" ref="homepageLRef"></homepageL>
@@ -69,30 +89,36 @@ export default {
     ...mapActions({
       logout: 'user/logout'
     }),
+    // 打开平台应用工具
     AddAppJson(val){
       console.log('val',val);
-      this.loading = true
 
-      setTimeout(() => {
-        this.loading = false
-      }, 2000);
-      
+      // 判断有没有打开过这个应用
       let data = this.AppJSon.filter(e=>{
         return val.toolId == e.toolId
       })
-      console.log('data',data);
+     
+
+     
+      
+     
 
-      if (data.length == 0) {
+      // console.log('data',data);
+
+      if (data.length == 0) {   //为0则添加进列表,并将其他的展示状态改为false
+        this.loading = true
+
+        // 打开平台工具加载两秒
+        setTimeout(() => {
+          this.loading = false
+        }, 2000);
         this.AppJSon.forEach(e=>{
           this.$set(e, 'stateL', false); // 使用 Vue.set 确保响应式
         })
-
         this.AppJSon.push(val)
-        
-        
       }else{
         this.AppJSon.forEach(e=>{
-          if (val.toolId == e.toolId) {
+          if (val.toolId == e.toolId) {  //已经打开过了,将点击的工具展示状态改为false
             this.$set(e, 'stateL', true); // 使用 Vue.set 确保响应式
           }else{
             this.$set(e, 'stateL', false); // 确保响应式更新
@@ -127,8 +153,11 @@ export default {
    
     // 获取学校权限与组织权限,优先使用学校权限,其次使用组织权限
     getPer() {
+      // 查询首页应用
       this.$refs.homepageLRef.getData()
+      //查询cocofrow最近使用与收藏
       this.$refs.sidebarLRef.getData()
+
       let params = [
         {
           functionName: API_CONFIG.ajax_schoolPermission.functionName, // 调用存储过程的名称
@@ -146,6 +175,8 @@ export default {
           this.perData= JSON.parse(data[0].json)
           this.getToolData()
 
+
+
         })
         .catch((err) => {
           console.error("请求失败,错误信息:", err);
@@ -197,6 +228,7 @@ export default {
 				let _index = toolList.findIndex((i2) => i == i2.id);
 				if (_index != -1) {
 					_form.admin.index.list[index] = toolList[_index];
+          _form.admin.index.list[index].hovered = false
 				} else {
 					console.log("无工具", i);
 				}
@@ -230,6 +262,8 @@ export default {
 
       // console.log('_form',_form);
       await store.commit('user/SET_FROM', _form)
+      // 获取后台管理设置常见应用
+      this.$refs.homepageLRef.getadmincocoFlow()
       
 			this.$forceUpdate();
 		},
@@ -241,14 +275,63 @@ export default {
 </script>
 
 <style scoped>
-
+.top{
+  width: 100%;
+  padding: 0 90px;
+  display: flex;
+  height: 60px;
+  box-sizing: border-box;
+}
+.topCon{
+  display: flex;
+  width: 100%;
+  justify-content: space-between;
+  align-items: center;
+}
 .body {
   width: 100%;
   height: 100%;
   overflow: hidden;
   font-family: ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
 }
-
+.title{
+  font-family: PingFang SC;
+  font-weight: 400;
+  font-size: 14px;
+  line-height: 100%;
+  letter-spacing: 0%;
+  color: #969BA3;
+  display: flex;
+  gap: 11px;
+}
+.person{
+  display: flex;
+  align-items: center;
+}
+.person_name{
+  display: flex;
+  gap: 9px;
+}
+.personInfo{
+  display: flex;
+  flex-direction: column;
+  justify-content: space-between;
+}
+.personInfoTit{
+  font-family: PingFang SC;
+  font-weight: 500;
+  font-size: 16px;
+  line-height: 100%;
+  color: #000000;
+}
+.personInfoBri{
+  font-family: PingFang SC;
+  font-weight: 300;
+  font-size: 10px;
+  line-height: 100%;
+  text-align: center;
+  color: #969BA3;
+}
 .container {
   display: flex;
   width: 100%;

+ 16 - 8
src/views/homepageL.vue

@@ -25,21 +25,28 @@ import { API_CONFIG } from "@/common/apiConfig";
         },
         data() {
             return {
-                CocoFlowList:[],
+                // CocoFlowList:[],
                 hotApp:[],
-                
             }
         },
         
 
         methods: {
+            // 获取后台管理设置常见应用
+            getadmincocoFlow(){
+                this.$refs.topPageRef.getAdmincocoFlow()
+            },
+
+            // 查询首页应用
             getData(){
+                // 获取已添加cocoFlow应用
                 this.$refs.topPageRef.getData()
+
                 let params = [
                     {
-                    functionName: API_CONFIG.ajax_allApp.functionName, // 调用存储过程的名称
-                    uid: this.userinfo.userid, //组织id
-                    cn: this.userinfo.schoolArea ? this.userinfo.schoolArea : this.userinfo.orgArea, //学校id
+                        functionName: API_CONFIG.ajax_allApp.functionName, // 调用存储过程的名称
+                        uid: this.userinfo.userid, 
+                        cn: this.userinfo.schoolArea ? this.userinfo.schoolArea : this.userinfo.orgArea, 
                     },
                 ];
                 
@@ -49,7 +56,7 @@ import { API_CONFIG } from "@/common/apiConfig";
                     .then((res) => {
                         console.log(res);
                         let data = res.data
-                        this.CocoFlowList = data[0]
+                        // this.CocoFlowList = data[0]
                         this.hotApp = [data[1],data[2],data[3],data[4],]
 
                     })
@@ -72,10 +79,11 @@ import { API_CONFIG } from "@/common/apiConfig";
         overflow: auto;
     }
     .packageL{
-        padding: 24px;
+        padding: 10px 81px;
         box-sizing: border-box;
         margin: auto;
-        max-width: 1280px;
+        padding-bottom: 100px;
+        /* max-width: 1280px; */
     }
 
 /* 整个滚动条轨道 */

+ 157 - 114
src/views/login/loginPage.vue

@@ -50,7 +50,7 @@
 									<el-option
 										v-for="item in OrgOptions"
 										:key="item.Uorg"
-										:label="item.name"
+										:label="item.name || item.schoolName"
 										:value="item.Uorg"
 									>
 									</el-option>
@@ -140,7 +140,7 @@ import { mapActions } from "vuex";
 import axios from "axios";
 import qs from "qs";
 import { API_CONFIG } from "@/common/apiConfig";
-import '@/common/wxLogin';
+import "@/common/wxLogin";
 
 export default {
 	name: "loginPage",
@@ -160,14 +160,29 @@ export default {
 			showName: "",
 			oloading: false,
 			openid: "",
+			allowOrgList: [
+				{
+					id: "3823a6a5-1b6e-11f0-a66a-005056924926",
+					list: [
+						"3823a6a5-1b6e-11f0-a66a-005056924926",
+						"292e34dc-1b6e-11f0-a66a-005056924926",
+						"21d6b367-1b6e-11f0-a66a-005056924926",
+						"1a1a172d-1b6e-11f0-a66a-005056924926",
+						"1197f86b-1b6e-11f0-a66a-005056924926",
+						"f235659b-1b6d-11f0-a66a-005056924926",
+						"d87b62d3-1b6d-11f0-a66a-005056924926",
+						"c25ea59b-1b6d-11f0-a66a-005056924926",
+					],
+				},
+			],
 		};
 	},
 	watch: {
 		loginType(newValue) {
-			if(newValue != 'weChat'){
-				this.$refs.QRcode.innerHTML = ''
+			if (newValue != "weChat") {
+				this.$refs.QRcode.innerHTML = "";
 			}
-		}
+		},
 	},
 	methods: {
 		...mapActions({
@@ -186,6 +201,14 @@ export default {
 				return;
 			}
 
+			if (this.allowOrgList.find((i) => i.id == this.org2)) {
+				let _list = this.allowOrgList.find((i) => i.id == this.org2).list;
+				let _nowOrgId = this.OrgOptions.find((i) => i.Uorg == this.org).id;
+				if (!_list.includes(_nowOrgId)) {
+					return this.$message.error("该组织/学校不允许登录");
+				}
+			}
+
 			let orgValue = this.org ? "@" + this.org : "@cocorobo.cc";
 			let email = "";
 			const regEmail = new RegExp(
@@ -235,16 +258,18 @@ export default {
 					});
 			} else if (this.loginType == "bind") {
 				// this.$message.info("绑定账号");
-				let data = await this.$ajax.post(API_CONFIG.baseUrl2 + 'checkOpenId', [{email: email}])
-				if(!data.data[0].length){
+				let data = await this.$ajax.post(API_CONFIG.baseUrl2 + "checkOpenId", [
+					{ email: email },
+				]);
+				if (!data.data[0].length) {
 					this.$message.error("未查找到对应账号请重新输入");
-					return
+					return;
 				}
-				if(data.data[0][0].thirdpartyid){
+				if (data.data[0][0].thirdpartyid) {
 					this.$message.error("该账号已绑定微信登录请重新输入");
-					return
+					return;
 				}
-				
+
 				let params = {
 					geetest_challenge: "",
 					geetest_validate: "",
@@ -256,29 +281,31 @@ export default {
 				axios.defaults.withCredentials = true;
 				console.log("👇");
 				axios
-				.post("https://beta.api.cocorobo.cn/api/user", qs.stringify(params))
-				.then(async (res) => {
-					console.log("res", res);
-					let _data = res.data[0][0];
-					if (_data.active === 1) {
-						await this.$ajax.post(API_CONFIG.baseUrl2 + 'UpdateOpenId', [{userid: _data.userid, openid: this.openid}])
-						window.localStorage["identity"] = JSON.stringify(_data.identity);
-						this.$message.success("绑定成功");
-						await this.login();
-						this.$router.push({ path: this.redirect || "/" });
-					} else {
-						this.$message.error("绑定失败");
-					}
-					this.loading = false;
-				})
-				.catch((e) => {
-					if (e.response && e.response.data == "Wrong email or password") {
-						this.$message.error("账号或密码错误");
-					} else {
-						this.$message.error("绑定失败");
-					}
-					this.loading = false;
-				});
+					.post("https://beta.api.cocorobo.cn/api/user", qs.stringify(params))
+					.then(async (res) => {
+						console.log("res", res);
+						let _data = res.data[0][0];
+						if (_data.active === 1) {
+							await this.$ajax.post(API_CONFIG.baseUrl2 + "UpdateOpenId", [
+								{ userid: _data.userid, openid: this.openid },
+							]);
+							window.localStorage["identity"] = JSON.stringify(_data.identity);
+							this.$message.success("绑定成功");
+							await this.login();
+							this.$router.push({ path: this.redirect || "/" });
+						} else {
+							this.$message.error("绑定失败");
+						}
+						this.loading = false;
+					})
+					.catch((e) => {
+						if (e.response && e.response.data == "Wrong email or password") {
+							this.$message.error("账号或密码错误");
+						} else {
+							this.$message.error("绑定失败");
+						}
+						this.loading = false;
+					});
 			}
 		},
 		async getLoading() {
@@ -296,29 +323,32 @@ export default {
 		},
 		// 输入账号获取组织
 		getOrgData() {
-			let params = [
-				{
-					functionName: API_CONFIG.ajax_liYuanOrg.functionName,
-					uname: this.account,
-				},
-			];
-			this.$ajax
-				.post(API_CONFIG.baseUrl, params)
-				.then((res) => {
-					console.log("res", res);
-					this.org = "";
-					this.OrgOptions = "";
+			return new Promise((resolve) => {
+				let params = [
+					{
+						functionName: API_CONFIG.ajax_liYuanOrg.functionName,
+						uname: this.account,
+					},
+				];
+				this.$ajax
+					.post(API_CONFIG.baseUrl, params)
+					.then((res) => {
+						console.log("res", res);
+						this.org = "";
+						this.OrgOptions = "";
 
-					this.OrgOptions = res.data[0];
-					if (this.OrgOptions.length == 1) {
-						this.org = this.OrgOptions[0].Uorg;
-						this.$forceUpdate();
-					}
-				})
-				.catch((err) => {
-					console.log(err);
-					this.$message.error("获取组织失败");
-				});
+						this.OrgOptions = res.data[0];
+						if (this.OrgOptions.length == 1) {
+							this.org = this.OrgOptions[0].Uorg;
+							this.$forceUpdate();
+						}
+						resolve();
+					})
+					.catch((err) => {
+						console.log(err);
+						this.$message.error("获取组织失败");
+					});
+			});
 		},
 		//获取组织或学校的数据
 		getOrdOidData() {
@@ -336,89 +366,102 @@ export default {
 					let data = res.data[0];
 					console.log("data", data);
 					this.form = JSON.parse(data[0].json);
-					this.showName = data[0].name;
+					this.showName = this.form.basics.title || data[0].name;
 				})
 				.catch((err) => {
 					console.error("请求失败,错误信息:", err);
 				});
 		},
-		wechatLogin(){
-			this.loginType = 'weChat'
+		wechatLogin() {
+			this.loginType = "weChat";
 			setTimeout(() => {
 				const randomState = Math.random().toString(36).substring(2); // 生成随机状态
 				// eslint-disable-next-line no-undef
 				new WxLogin({
-					self_redirect:true,
-					id: "QRcode", 
-					appid: "wxe9d7fff3c659445f", 
-					scope: "snsapi_login", 
-					redirect_uri: encodeURIComponent("https://cocorobo.cn/weixin.html"),//https://liyuan.cocorobo.cn/#/wxTest
+					self_redirect: true,
+					id: "QRcode",
+					appid: "wxe9d7fff3c659445f",
+					scope: "snsapi_login",
+					redirect_uri: encodeURIComponent("https://cocorobo.cn/weixin.html"), //https://liyuan.cocorobo.cn/#/wxTest
 					state: randomState,
 					style: "black",
 					href: "data:text/css;base64,LmltcG93ZXJCb3gge2Rpc3BsYXk6IGZsZXg7fQouaW1wb3dlckJveCAucXJjb2RlIHt3aWR0aDogMjMycHg7IGhlaWdodDogMjMycHh9Ci5pbXBvd2VyQm94IC50aXRsZSB7ZGlzcGxheTogbm9uZTt9Ci5pbXBvd2VyQm94IC5pbmZvIHtkaXNwbGF5OiBub25lO30KLmxvZ2luUGFuZWx7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmZsZXg7ZmxleC1kaXJlY3Rpb246Y29sdW1uO2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO30KLnN0YXR1c19pY29uIHtkaXNwbGF5OiBub25lfQoud2ViX3FyY29kZV9wYW5lbF9hcmVhe2hlaWdodDoxMDAlO3dpZHRoOjEwMCU7ZGlzcGxheTpmbGV4O2FsaWduLWl0ZW1zOmNlbnRlcjtqdXN0aWZ5LWNvbnRlbnQ6Y2VudGVyO30K",
-					onReady: function(isReady){
+					onReady: function (isReady) {
 						console.log(isReady);
-					}
+					},
 				});
 				setTimeout(() => {
-					let iframe = this.$refs.QRcode.querySelector('iframe')
-					iframe.style.width = '100%'
-					iframe.style.height = '100%'
-					
+					let iframe = this.$refs.QRcode.querySelector("iframe");
+					iframe.style.width = "100%";
+					iframe.style.height = "100%";
 				}, 0);
-			},0);
+			}, 0);
 		},
 		async getOpenId(openid) {
-
 			// oiztX1dwR-W2mBJ5HcvaSEB8yKGY
 			axios.defaults.withCredentials = false;
 			let params = {
-				openid: openid
-			}
-			this.openid = openid
+				openid: openid,
+			};
+			this.openid = openid;
 			axios.defaults.withCredentials = true;
-			axios.post(`https://beta.api.cocorobo.cn/api/user`, qs.stringify(params)).then(async res => {
-				console.log("res", res);
-				let _data = res.data[0][0];
-				if (_data.active === 1) {
-					window.localStorage["identity"] = JSON.stringify(_data.identity);
-					this.$message.success("登录成功");
-					await this.login();
-					this.$router.push({ path: this.redirect || "/" });
-				} else {
-					this.$message.error("登录失败");
-				}
-				this.loading = false;
-			}).catch(err => {
-				console.log(err.response)
-				if (err && err.response && err.response.status === 401) {
-					this.loginType = 'bind';
-				}
-			})
-
-				// 
+			axios
+				.post(`https://beta.api.cocorobo.cn/api/user`, qs.stringify(params))
+				.then(async (res) => {
+					console.log("res", res);
+					let _data = res.data[0][0];
+					// let userData = await this.ajax.get("https://pbl.cocorobo.cn/api/pbl/selectUser/selectUser", { userid: _data.userid });
+					// let _uorg = userData.data[0][0].org;
+					this.account = _data.username;
+					await this.getOrgData();
+
+					if (this.allowOrgList.find((i) => i.id == this.org2)) {
+						let _list = this.allowOrgList.find((i) => i.id == this.org2).list;
+						let _nowOrgId = this.OrgOptions.find((i) => i.Uorg == this.org).id;
+						if (!_list.includes(_nowOrgId)) {
+							this.wechatLogin();
+							return this.$message.error("该组织/学校不允许登录");
+						}
+					}
+					if (_data.active === 1) {
+						window.localStorage["identity"] = JSON.stringify(_data.identity);
+						this.$message.success("登录成功");
+						await this.login();
+						this.$router.push({ path: this.redirect || "/" });
+					} else {
+						this.$message.error("登录失败");
+					}
+					this.loading = false;
+				})
+				.catch((err) => {
+					console.log(err.response);
+					if (err && err.response && err.response.status === 401) {
+						this.loginType = "bind";
+					}
+				});
 
+			//
 		},
 	},
 	mounted() {
-		let _this = this
-		window.addEventListener('message', function (e) { // 监听 message 事件
+		let _this = this;
+		window.addEventListener("message", function (e) {
+			// 监听 message 事件
+			console.log(e);
+			if (e.data && e.data.method == "getOpenId") {
 				console.log(e);
-				if(e.data && e.data.method == "getOpenId"){
-					console.log(e);
-					console.log(e.data.code);
-					console.log(_this.loginType);
-					
-					if(e.data.code == 200){
-						_this.getOpenId(e.data.data.openid)
-					}else {
-						_this.$message.error('扫码登录失败请重新扫码')
-						_this.wechatLogin()
-					}
+				console.log(e.data.code);
+				console.log(_this.loginType);
 
+				if (e.data.code == 200) {
+					_this.getOpenId(e.data.data.openid);
+				} else {
+					_this.$message.error("扫码登录失败请重新扫码");
+					_this.wechatLogin();
 				}
+			}
 		});
-		// this.getLoading();
+		this.getLoading();
 		this.getOrdOidData();
 	},
 };
@@ -576,11 +619,11 @@ export default {
 }
 
 .fa_weChat > .QRcode {
-    width: 100%;
-    height: 100%;
-    display: flex;
-    align-items: center;
-    justify-content: center;
+	width: 100%;
+	height: 100%;
+	display: flex;
+	align-items: center;
+	justify-content: center;
 	/* background-color: black; */
 }
 

Some files were not shown because too many files changed in this diff