فهرست منبع

feat完成算法管理功能,修改左侧目录兰

kuanghua liu 2 سال پیش
والد
کامیت
a324a97406

+ 1 - 1
.env.production

@@ -1,5 +1,5 @@
 # 是否开启mock
-VITE_USE_MOCK = true
+VITE_USE_MOCK = false
 
 # 网站根目录
 VITE_PUBLIC_PATH = /

+ 172 - 110
pnpm-lock.yaml

@@ -87,8 +87,8 @@ dependencies:
     specifier: 3.3.4
     version: 3.3.4
   vue-hooks-plus:
-    specifier: ^1.8.6
-    version: 1.8.6(vue@3.3.4)
+    specifier: 1.8.6
+    version: registry.npmmirror.com/vue-hooks-plus@1.8.6(vue@3.3.4)
   vue-router:
     specifier: 4.1.2
     version: 4.1.2(vue@3.3.4)
@@ -605,7 +605,7 @@ packages:
     engines: {node: '>=v14'}
     dependencies:
       '@commitlint/types': 17.4.4
-      lodash: 4.17.21
+      lodash: registry.npmmirror.com/lodash@4.17.21
     dev: true
 
   /@commitlint/execute-rule@17.4.0:
@@ -1013,10 +1013,6 @@ packages:
     resolution: {integrity: sha512-kow8REgIIG42atN9vAaIdpEqVzj6WzV9m0PII8oce+an4Lc3eyfQF32/FbabbGmfWuF7TceTdd+gh74kOrXkPw==}
     dev: true
 
-  /@types/js-cookie@3.0.6:
-    resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==}
-    dev: false
-
   /@types/json-schema@7.0.11:
     resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
     dev: true
@@ -1364,10 +1360,6 @@ packages:
     resolution: {integrity: sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==}
     dev: false
 
-  /@vue/devtools-api@6.5.1:
-    resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==}
-    dev: false
-
   /@vue/reactivity-transform@3.3.4:
     resolution: {integrity: sha512-MXgwjako4nu5WFLAjpBnCj/ieqcjE2aJBINUNQzkZQfzIZA4xn+0fV1tIYBJvvva3N3OvKGofRLvQIwEQPpaXw==}
     dependencies:
@@ -1914,7 +1906,7 @@ packages:
   /async@2.6.4:
     resolution: {integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==}
     dependencies:
-      lodash: 4.17.21
+      lodash: registry.npmmirror.com/lodash@4.17.21
     dev: true
 
   /async@3.2.4:
@@ -2048,13 +2040,6 @@ packages:
     engines: {node: '>=6'}
     dev: true
 
-  /call-bind@1.0.2:
-    resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==}
-    dependencies:
-      function-bind: 1.1.1
-      get-intrinsic: 1.1.2
-    dev: false
-
   /callsites@3.1.0:
     resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
     engines: {node: '>=6'}
@@ -2434,7 +2419,7 @@ packages:
     dependencies:
       JSONStream: 1.3.5
       is-text-path: 1.0.1
-      lodash: 4.17.21
+      lodash: registry.npmmirror.com/lodash@4.17.21
       meow: 8.1.2
       split2: 3.2.2
       through2: 4.0.2
@@ -2653,11 +2638,6 @@ packages:
     dev: false
     optional: true
 
-  /decode-uri-component@0.2.2:
-    resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
-    engines: {node: '>=0.10'}
-    dev: false
-
   /decompress-response@4.2.1:
     resolution: {integrity: sha512-jOSne2qbyE+/r8G1VU+G/82LBs2Fs4LAsTiLSHOCOMZQl2OKZ6i8i4IyHemTe+/yIXOtTcRQMzPcgyhoFlqPkw==}
     engines: {node: '>=8'}
@@ -3425,11 +3405,6 @@ packages:
       to-regex-range: 5.0.1
     dev: true
 
-  /filter-obj@1.1.0:
-    resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==}
-    engines: {node: '>=0.10.0'}
-    dev: false
-
   /finalhandler@1.1.2:
     resolution: {integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==}
     engines: {node: '>= 0.8'}
@@ -3570,9 +3545,6 @@ packages:
   /fs.realpath@1.0.0:
     resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
 
-  /function-bind@1.1.1:
-    resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==}
-
   /functional-red-black-tree@1.0.1:
     resolution: {integrity: sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==}
     dev: true
@@ -3607,14 +3579,6 @@ packages:
     resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==}
     engines: {node: 6.* || 8.* || >= 10.*}
 
-  /get-intrinsic@1.1.2:
-    resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==}
-    dependencies:
-      function-bind: 1.1.1
-      has: 1.0.3
-      has-symbols: 1.0.3
-    dev: false
-
   /get-stdin@8.0.0:
     resolution: {integrity: sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==}
     engines: {node: '>=10'}
@@ -3656,7 +3620,7 @@ packages:
     hasBin: true
     dependencies:
       dargs: 7.0.0
-      lodash: 4.17.21
+      lodash: registry.npmmirror.com/lodash@4.17.21
       meow: 8.1.2
       split2: 3.2.2
       through2: 4.0.2
@@ -3801,19 +3765,14 @@ packages:
   /has-property-descriptors@1.0.0:
     resolution: {integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==}
     dependencies:
-      get-intrinsic: 1.1.2
-    dev: false
-
-  /has-symbols@1.0.3:
-    resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==}
-    engines: {node: '>= 0.4'}
+      get-intrinsic: registry.npmmirror.com/get-intrinsic@1.1.2
     dev: false
 
   /has-tostringtag@1.0.0:
     resolution: {integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==}
     engines: {node: '>= 0.4'}
     dependencies:
-      has-symbols: 1.0.3
+      has-symbols: registry.npmmirror.com/has-symbols@1.0.3
     dev: false
 
   /has-unicode@2.0.1:
@@ -3822,12 +3781,6 @@ packages:
     dev: false
     optional: true
 
-  /has@1.0.3:
-    resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
-    engines: {node: '>= 0.4.0'}
-    dependencies:
-      function-bind: 1.1.1
-
   /hash-sum@2.0.0:
     resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==}
     dev: true
@@ -4025,7 +3978,7 @@ packages:
       cli-width: 3.0.0
       external-editor: 3.1.0
       figures: 3.2.0
-      lodash: 4.17.21
+      lodash: registry.npmmirror.com/lodash@4.17.21
       mute-stream: 0.0.8
       ora: 5.4.1
       run-async: 2.4.1
@@ -4040,7 +3993,7 @@ packages:
     resolution: {integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==}
     engines: {node: '>= 0.4'}
     dependencies:
-      call-bind: 1.0.2
+      call-bind: registry.npmmirror.com/call-bind@1.0.2
       has-tostringtag: 1.0.0
     dev: false
 
@@ -4065,7 +4018,7 @@ packages:
   /is-core-module@2.12.1:
     resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==}
     dependencies:
-      has: 1.0.3
+      has: registry.npmmirror.com/has@1.0.3
     dev: true
 
   /is-date-object@1.0.5:
@@ -4144,7 +4097,7 @@ packages:
     resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
     engines: {node: '>= 0.4'}
     dependencies:
-      call-bind: 1.0.2
+      call-bind: registry.npmmirror.com/call-bind@1.0.2
       has-tostringtag: 1.0.0
     dev: false
 
@@ -4215,11 +4168,6 @@ packages:
     hasBin: true
     dev: true
 
-  /js-cookie@3.0.5:
-    resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==}
-    engines: {node: '>=14'}
-    dev: false
-
   /js-tokens@4.0.0:
     resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
     dev: true
@@ -4859,12 +4807,13 @@ packages:
 
   /object-inspect@1.12.2:
     resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==}
+    dev: true
 
   /object-is@1.1.5:
     resolution: {integrity: sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==}
     engines: {node: '>= 0.4'}
     dependencies:
-      call-bind: 1.0.2
+      call-bind: registry.npmmirror.com/call-bind@1.0.2
       define-properties: 1.1.4
     dev: false
 
@@ -5331,16 +5280,6 @@ packages:
       side-channel: 1.0.4
     dev: false
 
-  /query-string@7.1.3:
-    resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
-    engines: {node: '>=6'}
-    dependencies:
-      decode-uri-component: 0.2.2
-      filter-obj: 1.1.0
-      split-on-first: 1.1.0
-      strict-uri-encode: 2.0.0
-    dev: false
-
   /querystringify@2.2.0:
     resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==}
     requiresBuild: true
@@ -5436,7 +5375,7 @@ packages:
     resolution: {integrity: sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==}
     engines: {node: '>= 0.4'}
     dependencies:
-      call-bind: 1.0.2
+      call-bind: registry.npmmirror.com/call-bind@1.0.2
       define-properties: 1.1.4
       functions-have-names: 1.2.3
     dev: false
@@ -5596,11 +5535,6 @@ packages:
     dev: false
     optional: true
 
-  /screenfull@5.2.0:
-    resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==}
-    engines: {node: '>=0.10.0'}
-    dev: false
-
   /scroll-into-view-if-needed@2.2.31:
     resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==}
     dependencies:
@@ -5650,9 +5584,9 @@ packages:
   /side-channel@1.0.4:
     resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==}
     dependencies:
-      call-bind: 1.0.2
-      get-intrinsic: 1.1.2
-      object-inspect: 1.12.2
+      call-bind: registry.npmmirror.com/call-bind@1.0.2
+      get-intrinsic: registry.npmmirror.com/get-intrinsic@1.1.2
+      object-inspect: registry.npmmirror.com/object-inspect@1.12.2
     dev: false
 
   /signal-exit@3.0.7:
@@ -5786,11 +5720,6 @@ packages:
     resolution: {integrity: sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==}
     dev: true
 
-  /split-on-first@1.1.0:
-    resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==}
-    engines: {node: '>=6'}
-    dev: false
-
   /split2@3.2.2:
     resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==}
     dependencies:
@@ -5813,11 +5742,6 @@ packages:
     engines: {node: '>= 0.6'}
     dev: true
 
-  /strict-uri-encode@2.0.0:
-    resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==}
-    engines: {node: '>=4'}
-    dev: false
-
   /string-argv@0.3.1:
     resolution: {integrity: sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==}
     engines: {node: '>=0.6.19'}
@@ -6566,7 +6490,7 @@ packages:
       eslint-visitor-keys: 3.3.0
       espree: 9.3.2
       esquery: 1.4.0
-      lodash: 4.17.21
+      lodash: registry.npmmirror.com/lodash@4.17.21
       semver: 7.3.7
     transitivePeerDependencies:
       - supports-color
@@ -6590,21 +6514,6 @@ packages:
       - supports-color
     dev: true
 
-  /vue-hooks-plus@1.8.6(vue@3.3.4):
-    resolution: {integrity: sha512-RQfEJkTXYMmHztgAHLhLBc/8n90qz6Pk2xV8WPNDiu+cn9ClwxdjPHvfj6J01BJ8G+tULXEBxD8XO9F1cf0A0w==}
-    peerDependencies:
-      vue: ^3.2.25
-    dependencies:
-      '@types/js-cookie': 3.0.6
-      '@vue/devtools-api': 6.5.1
-      js-cookie: 3.0.5
-      lodash: 4.17.21
-      qs: 6.11.0
-      query-string: 7.1.3
-      screenfull: 5.2.0
-      vue: 3.3.4
-    dev: false
-
   /vue-router@4.1.2(vue@3.3.4):
     resolution: {integrity: sha512-5BP1qXFncVRwgV/XnqzsKApdMjQPqWIpoUBdL1ynz8HyLxIX/UDAx7Ql2BjmA5CXT/p61JfZvkpiFWFpaqcfag==}
     peerDependencies:
@@ -7010,6 +6919,12 @@ packages:
     version: 2.11.7
     dev: false
 
+  registry.npmmirror.com/@types/js-cookie@3.0.6:
+    resolution: {integrity: sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/js-cookie/-/js-cookie-3.0.6.tgz}
+    name: '@types/js-cookie'
+    version: 3.0.6
+    dev: false
+
   registry.npmmirror.com/@videojs/http-streaming@3.7.0(video.js@8.6.1):
     resolution: {integrity: sha512-5uLFKBL8CvD56dxxJyuxqB5CY0tdoa4SE9KbXakeiAy6iFBUEPvTr2YGLKEWvQ8Lojs1wl+FQndLdv+GO7t9Fw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@videojs/http-streaming/-/http-streaming-3.7.0.tgz}
     id: registry.npmmirror.com/@videojs/http-streaming/3.7.0
@@ -7061,6 +6976,12 @@ packages:
       is-function: registry.npmmirror.com/is-function@1.0.2
     dev: true
 
+  registry.npmmirror.com/@vue/devtools-api@6.5.1:
+    resolution: {integrity: sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.5.1.tgz}
+    name: '@vue/devtools-api'
+    version: 6.5.1
+    dev: false
+
   registry.npmmirror.com/@xmldom/xmldom@0.8.10:
     resolution: {integrity: sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@xmldom/xmldom/-/xmldom-0.8.10.tgz}
     name: '@xmldom/xmldom'
@@ -7079,6 +7000,15 @@ packages:
       pkcs7: registry.npmmirror.com/pkcs7@1.0.4
     dev: true
 
+  registry.npmmirror.com/call-bind@1.0.2:
+    resolution: {integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/call-bind/-/call-bind-1.0.2.tgz}
+    name: call-bind
+    version: 1.0.2
+    dependencies:
+      function-bind: registry.npmmirror.com/function-bind@1.1.1
+      get-intrinsic: registry.npmmirror.com/get-intrinsic@1.1.2
+    dev: false
+
   registry.npmmirror.com/canvas@2.11.2:
     resolution: {integrity: sha512-ItanGBMrmRV7Py2Z+Xhs7cT+FNt5K0vPL4p9EZ/UX/Mu7hFbkxSjKF2KVtPwX7UYWp7dRKnrTvReflgrItJbdw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/canvas/-/canvas-2.11.2.tgz}
     name: canvas
@@ -7095,6 +7025,13 @@ packages:
     dev: false
     optional: true
 
+  registry.npmmirror.com/decode-uri-component@0.2.2:
+    resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz}
+    name: decode-uri-component
+    version: 0.2.2
+    engines: {node: '>=0.10'}
+    dev: false
+
   registry.npmmirror.com/dom-walk@0.1.2:
     resolution: {integrity: sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dom-walk/-/dom-walk-0.1.2.tgz}
     name: dom-walk
@@ -7541,6 +7478,13 @@ packages:
     dev: true
     optional: true
 
+  registry.npmmirror.com/filter-obj@1.1.0:
+    resolution: {integrity: sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/filter-obj/-/filter-obj-1.1.0.tgz}
+    name: filter-obj
+    version: 1.1.0
+    engines: {node: '>=0.10.0'}
+    dev: false
+
   registry.npmmirror.com/fsevents@2.3.2:
     resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz}
     name: fsevents
@@ -7551,6 +7495,21 @@ packages:
     dev: true
     optional: true
 
+  registry.npmmirror.com/function-bind@1.1.1:
+    resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/function-bind/-/function-bind-1.1.1.tgz}
+    name: function-bind
+    version: 1.1.1
+
+  registry.npmmirror.com/get-intrinsic@1.1.2:
+    resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.1.2.tgz}
+    name: get-intrinsic
+    version: 1.1.2
+    dependencies:
+      function-bind: registry.npmmirror.com/function-bind@1.1.1
+      has: registry.npmmirror.com/has@1.0.3
+      has-symbols: registry.npmmirror.com/has-symbols@1.0.3
+    dev: false
+
   registry.npmmirror.com/global@4.4.0:
     resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/global/-/global-4.4.0.tgz}
     name: global
@@ -7566,6 +7525,21 @@ packages:
     version: 4.2.10
     dev: true
 
+  registry.npmmirror.com/has-symbols@1.0.3:
+    resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has-symbols/-/has-symbols-1.0.3.tgz}
+    name: has-symbols
+    version: 1.0.3
+    engines: {node: '>= 0.4'}
+    dev: false
+
+  registry.npmmirror.com/has@1.0.3:
+    resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/has/-/has-1.0.3.tgz}
+    name: has
+    version: 1.0.3
+    engines: {node: '>= 0.4.0'}
+    dependencies:
+      function-bind: registry.npmmirror.com/function-bind@1.1.1
+
   registry.npmmirror.com/individual@2.0.0:
     resolution: {integrity: sha512-pWt8hBCqJsUWI/HtcfWod7+N9SgAqyPEaF7JQjwzjn5vGrpg6aQ5qeAFQ7dx//UH4J1O+7xqew+gCeeFt6xN/g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/individual/-/individual-2.0.0.tgz}
     name: individual
@@ -7578,6 +7552,13 @@ packages:
     version: 1.0.2
     dev: true
 
+  registry.npmmirror.com/js-cookie@3.0.5:
+    resolution: {integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz}
+    name: js-cookie
+    version: 3.0.5
+    engines: {node: '>=14'}
+    dev: false
+
   registry.npmmirror.com/jsdom@19.0.0(canvas@2.11.2):
     resolution: {integrity: sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/jsdom/-/jsdom-19.0.0.tgz}
     id: registry.npmmirror.com/jsdom/19.0.0
@@ -7632,6 +7613,11 @@ packages:
     version: 2.2.0
     dev: true
 
+  registry.npmmirror.com/lodash@4.17.21:
+    resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz}
+    name: lodash
+    version: 4.17.21
+
   registry.npmmirror.com/m3u8-parser@6.2.0:
     resolution: {integrity: sha512-qlC00JTxYOxawcqg+RB8jbyNwL3foY/nCY61kyWP+RCuJE9APLeqB/nSlTjb4Mg0yRmyERgjswpdQxMvkeoDrg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/m3u8-parser/-/m3u8-parser-6.2.0.tgz}
     name: m3u8-parser
@@ -7694,6 +7680,12 @@ packages:
       global: registry.npmmirror.com/global@4.4.0
     dev: true
 
+  registry.npmmirror.com/object-inspect@1.12.2:
+    resolution: {integrity: sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/object-inspect/-/object-inspect-1.12.2.tgz}
+    name: object-inspect
+    version: 1.12.2
+    dev: false
+
   registry.npmmirror.com/pkcs7@1.0.4:
     resolution: {integrity: sha512-afRERtHn54AlwaF2/+LFszyAANTCggGilmcmILUzEjvs3XgFZT+xE6+QWQcAGmu4xajy+Xtj7acLOPdx5/eXWQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pkcs7/-/pkcs7-1.0.4.tgz}
     name: pkcs7
@@ -7710,6 +7702,27 @@ packages:
     engines: {node: '>= 0.6.0'}
     dev: true
 
+  registry.npmmirror.com/qs@6.11.0:
+    resolution: {integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/qs/-/qs-6.11.0.tgz}
+    name: qs
+    version: 6.11.0
+    engines: {node: '>=0.6'}
+    dependencies:
+      side-channel: registry.npmmirror.com/side-channel@1.0.4
+    dev: false
+
+  registry.npmmirror.com/query-string@7.1.3:
+    resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/query-string/-/query-string-7.1.3.tgz}
+    name: query-string
+    version: 7.1.3
+    engines: {node: '>=6'}
+    dependencies:
+      decode-uri-component: registry.npmmirror.com/decode-uri-component@0.2.2
+      filter-obj: registry.npmmirror.com/filter-obj@1.1.0
+      split-on-first: registry.npmmirror.com/split-on-first@1.1.0
+      strict-uri-encode: registry.npmmirror.com/strict-uri-encode@2.0.0
+    dev: false
+
   registry.npmmirror.com/regenerator-runtime@0.13.11:
     resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz}
     name: regenerator-runtime
@@ -7731,12 +7744,43 @@ packages:
       rust-result: registry.npmmirror.com/rust-result@1.0.0
     dev: true
 
+  registry.npmmirror.com/screenfull@5.2.0:
+    resolution: {integrity: sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/screenfull/-/screenfull-5.2.0.tgz}
+    name: screenfull
+    version: 5.2.0
+    engines: {node: '>=0.10.0'}
+    dev: false
+
+  registry.npmmirror.com/side-channel@1.0.4:
+    resolution: {integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/side-channel/-/side-channel-1.0.4.tgz}
+    name: side-channel
+    version: 1.0.4
+    dependencies:
+      call-bind: registry.npmmirror.com/call-bind@1.0.2
+      get-intrinsic: registry.npmmirror.com/get-intrinsic@1.1.2
+      object-inspect: registry.npmmirror.com/object-inspect@1.12.2
+    dev: false
+
   registry.npmmirror.com/source-map@0.6.1:
     resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz}
     name: source-map
     version: 0.6.1
     engines: {node: '>=0.10.0'}
 
+  registry.npmmirror.com/split-on-first@1.1.0:
+    resolution: {integrity: sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/split-on-first/-/split-on-first-1.1.0.tgz}
+    name: split-on-first
+    version: 1.1.0
+    engines: {node: '>=6'}
+    dev: false
+
+  registry.npmmirror.com/strict-uri-encode@2.0.0:
+    resolution: {integrity: sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz}
+    name: strict-uri-encode
+    version: 2.0.0
+    engines: {node: '>=4'}
+    dev: false
+
   registry.npmmirror.com/url-toolkit@2.2.5:
     resolution: {integrity: sha512-mtN6xk+Nac+oyJ/PrI7tzfmomRVNFIWKUbG8jdYFt52hxbiReFAXIjYskvu64/dvuW71IcB7lV8l0HvZMac6Jg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/url-toolkit/-/url-toolkit-2.2.5.tgz}
     name: url-toolkit
@@ -7790,3 +7834,21 @@ packages:
     dependencies:
       global: registry.npmmirror.com/global@4.4.0
     dev: true
+
+  registry.npmmirror.com/vue-hooks-plus@1.8.6(vue@3.3.4):
+    resolution: {integrity: sha512-RQfEJkTXYMmHztgAHLhLBc/8n90qz6Pk2xV8WPNDiu+cn9ClwxdjPHvfj6J01BJ8G+tULXEBxD8XO9F1cf0A0w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/vue-hooks-plus/-/vue-hooks-plus-1.8.6.tgz}
+    id: registry.npmmirror.com/vue-hooks-plus/1.8.6
+    name: vue-hooks-plus
+    version: 1.8.6
+    peerDependencies:
+      vue: ^3.2.25
+    dependencies:
+      '@types/js-cookie': registry.npmmirror.com/@types/js-cookie@3.0.6
+      '@vue/devtools-api': registry.npmmirror.com/@vue/devtools-api@6.5.1
+      js-cookie: registry.npmmirror.com/js-cookie@3.0.5
+      lodash: registry.npmmirror.com/lodash@4.17.21
+      qs: registry.npmmirror.com/qs@6.11.0
+      query-string: registry.npmmirror.com/query-string@7.1.3
+      screenfull: registry.npmmirror.com/screenfull@5.2.0
+      vue: 3.3.4
+    dev: false

+ 10 - 3
src/api/algo/algo.ts

@@ -1,15 +1,22 @@
 import { http } from '@/utils/http/axios';
 
-export function getAlgoInfo() {
+export function getAlgoInfo(page: number) {
   return http.request({
-    url: '/algo/getAlgoList/getList?pageNumber=1&pageSize=10',
+    url: '/cameraAlgo/getList?pageNumber=' + page + '&pageSize=12',
+    method: 'get',
+  });
+}
+
+export function searchAlgoInfo(page: number, keyWord: string) {
+  return http.request({
+    url: '/cameraAlgo/getAlgo?algoInfo=' + keyWord + '&pageNumber=' + page + '&pageSize=12',
     method: 'get',
   });
 }
 
 export function algoInfoModify(algoId: number, pushLinkPrompt: string, pushStatement: string) {
   return http.request({
-    url: '/article/add',
+    url: '/cameraAlgo/saveAlgoState',
     method: 'post',
     data: {
       algoId,

+ 0 - 69
src/api/dashboard/algoManagement/algoManagement.vue

@@ -1,69 +0,0 @@
-<template>
-  <PageWrapper>
-    <el-card shadow="never" size="small" class="proCard tabsCard">
-      <div class="background">
-        <video :src="address" controls autoplay muted style="width: 100%; height: 100%"> </video>
-      </div>
-    </el-card>
-  </PageWrapper>
-</template>
-<script lang="ts" setup>
-  import { onMounted, ref, onUnmounted } from 'vue';
-  import { PageWrapper } from '@/components/Page';
-  import videojs from 'video.js';
-  import 'video.js/dist/video-js.css';
-  import useAlgo from './use-algoData';
-
-  //调用后端数据
-  const algoDatas = useAlgo();
-  const { algoList, getAlgoDatas, algoId, pushLinkPrompt, pushStatement, modifyAlgoDatas } =
-    algoDatas;
-  //将后端拉到的数据存到algoListUse数组中进行使用
-  const algoListUse = ref<any[]>([]);
-  //刷新时从后端拉一次算法数组
-  onMounted(() => {
-    getAlgoDatas().then(() => {
-      console.log('algoList', algoList.value);
-      algoListUse.value = algoList.value;
-    });
-  });
-  //用于存储列表中选定的算法的信息
-  const currentRow = ref({
-    algoCode: '',
-    name: '',
-    remark: '',
-    url: '',
-    id: 0,
-    pushLinkPrompt: '',
-    pushStatement: '',
-  });
-
-  interface User {
-    algoCode: string;
-    name: string;
-    remark: string;
-    url: string;
-    id: number;
-    pushLinkPrompt: string;
-    pushStatement: string;
-  }
-
-  const handleCurrentChange = (val: User | undefined) => {
-    currentRow.value = val;
-    console.log('xxxxxxxxxx', currentRow.value);
-  };
-
-  const saveUpdate = () => {
-    algoId.value = currentRow.value.id;
-    modifyAlgoDatas();
-  };
-
-  const address = ref('https://www.w3schools.com/html/movie.mp4');
-</script>
-<style lang="scss" scoped>
-  .background {
-    position: relative;
-    height: 500px;
-    background-color: pink;
-  }
-</style>

+ 19 - 8
src/api/dashboard/algoManagement/use-algoData.ts

@@ -1,17 +1,25 @@
-import { getAlgoInfo, algoInfoModify } from '@/api/algo/algo';
+import { getAlgoInfo, searchAlgoInfo, algoInfoModify } from '@/api/algo/algo';
 import { ref } from 'vue';
 import { ElMessage } from 'element-plus';
 
-const algoList = ref([]);
+export function useAlgo() {
+  const algoList = ref([]);
+  const page = ref(1);
+  const keyWord = ref('');
 
-const algoId = ref(0);
-const pushLinkPrompt = ref('');
-const pushStatement = ref('');
+  const algoId = ref(0);
+  const pushLinkPrompt = ref('');
+  const pushStatement = ref('');
 
-export function useAlgo() {
   const getAlgoDatas = () => {
-    return getAlgoInfo().then((res) => {
-      algoList.value = res;
+    return getAlgoInfo(page.value).then((res) => {
+      algoList.value = res.records;
+    });
+  };
+
+  const searchAlgoDatas = () => {
+    return searchAlgoInfo(page.value, keyWord.value).then((res) => {
+      algoList.value = res.records;
     });
   };
 
@@ -30,7 +38,10 @@ export function useAlgo() {
 
   return {
     algoList,
+    page,
+    keyWord,
     getAlgoDatas,
+    searchAlgoDatas,
     algoId,
     pushLinkPrompt,
     pushStatement,

+ 351 - 0
src/views/cameras/algo-management/algoManagement.vue

@@ -0,0 +1,351 @@
+<template>
+  <PageWrapper>
+    <div class="background">
+      <div class="left">
+        <el-input
+          v-model="searchKey"
+          placeholder="请输入算法信息搜索"
+          style="margin-top: 24px; height: 32px; margin-bottom: 16px"
+          :suffix-icon="Search"
+          @blur="searchItem"
+        />
+        <div class="algo-table">
+          <el-table
+            ref="singleTableRef"
+            :data="algoList"
+            highlight-current-row
+            stripe
+            style="width: 100%"
+            height="100%"
+            :row-style="{ height: '54px' }"
+            :header-row-style="{ height: '54px' }"
+            @row-click="handleRowClick"
+          >
+            <el-table-column property="id" label="序号" width="80" align="center" />
+            <el-table-column property="code" label="算法编号" width="120" align="center" />
+            <el-table-column property="name" label="算法名称" />
+          </el-table>
+        </div>
+        <div style="display: flex; justify-content: flex-end">
+          <el-pagination
+            background
+            layout="prev, pager, next"
+            style="margin-top: 24px; height: 32px; margin-bottom: 34px"
+            :total="20"
+            v-model:current-page="curPage"
+            @current-change="changePage"
+            :page-size="10"
+          />
+        </div>
+      </div>
+      <div class="right">
+        <div class="right_top">
+          <div class="top_left">
+            <el-scrollbar height="100%">
+              <div v-if="currentRow?.name == ''" class="details_title">请在左侧列表中选择算法</div>
+              <div v-else class="details_title">{{ currentRow?.name }}检测算法展示</div>
+              <div class="textbox">
+                <div class="item_title">算法描述:</div>
+                <div class="item_details"
+                  >飞鸟检测算法用于检测生产现场是否有飞鸟出没,实时报警,安全生产。"据台湾中时新闻网11日报道,台湾防务部门称,解放军山东舰航母编队11日沿所谓“海峡中线”以西,由北向南穿越台湾海峡。台军声称“绵密掌握海空域动态”,检派适切兵力“监控应处”云云。",</div
+                >
+              </div>
+              <div class="textbox">
+                <div class="item_title">&nbsp;&nbsp;&nbsp;&nbsp;精确率:</div>
+                <div class="item_details">90%</div>
+              </div>
+              <div class="textbox">
+                <div class="item_title">&nbsp;&nbsp;&nbsp;&nbsp;找回率:</div>
+                <div class="item_details">90%</div>
+              </div>
+              <div class="textbox">
+                <div class="item_title">适用场景:</div>
+                <div class="item_details">室外作业、开阔作业场景。</div>
+              </div>
+              <div class="textbox">
+                <div class="item_title">电子围栏:</div>
+                <div class="item_details"
+                  >建议做全局检测,可选择性按需设置电子围栏。从战略高度和长远角度擘画新时代中越关系蓝图,推动中越关系确立新定位、迈入新阶段。我先后会见了赴华访问或出席会议的国家主席武文赏、政府总理范明政、越共中央书记处常务书记张氏梅同志</div
+                >
+              </div>
+            </el-scrollbar>
+          </div>
+          <div class="top_right">
+            <video :src="currentRow?.url" controls autoplay muted style="width: 100%; height: 100%">
+            </video>
+          </div>
+        </div>
+        <div class="right_bottom">
+          <div class="details_title" style="margin-bottom: 16px">报警推送编辑</div>
+          <el-form :model="alarmConfig" size="default" :rules="rules" ref="ruleFormRef">
+            <el-form-item label="语句编辑:" prop="pushLinkPrompt">
+              <div class="pushStatement">
+                <div class="remark">时间:(示例:2023.10.23 10:55:28)</div>
+                <div class="remark">地点:(示例:C919总装车间150A工位)</div>
+                <el-input
+                  v-model="alarmConfig.pushStatement"
+                  style="width: 100%; height: 74px; margin-top: 4px"
+                  placeholder="示例:【异常类:未穿反光背心违规】您好,经安全管控平台分析,在该区域发现员工未穿反光背心或穿戴不规范的情况,请及时提醒。"
+                />
+              </div>
+            </el-form-item>
+
+            <el-form-item label="链接提示:" prop="pushStatement">
+              <el-input
+                v-model="alarmConfig.pushLinkPrompt"
+                style="width: 100%"
+                placeholder="示例:请点击商飞大脑-天眼APP查看。"
+              />
+            </el-form-item>
+            <el-form-item>
+              <el-button type="primary" @click="onSubmit">保&nbsp;&nbsp;存</el-button>
+            </el-form-item>
+          </el-form>
+        </div>
+      </div>
+      <!-- <video :src="address" controls autoplay muted style="width: 100%; height: 100%"> </video> -->
+    </div>
+  </PageWrapper>
+</template>
+<script lang="ts" setup>
+  import { onMounted, ref, onUnmounted, reactive, watchEffect } from 'vue';
+  import { cloneDeep } from 'lodash-es';
+  import { PageWrapper } from '../../../components/Page';
+  import 'video.js/dist/video-js.css';
+  import useAlgo from './use-algoData';
+  import { Search } from '@element-plus/icons-vue';
+  import type { FormInstance, FormRules } from 'element-plus';
+
+  //调用后端数据
+  const algoDatas = useAlgo();
+  const {
+    algoList,
+    getAlgoDatas,
+    page,
+    keyWord,
+    searchAlgoDatas,
+    algoId,
+    pushLinkPrompt,
+    pushStatement,
+    modifyAlgoDatas,
+  } = algoDatas;
+  //将后端拉到的数据存到algoListUse数组中进行使用
+  //刷新时从后端拉一次算法数组
+  onMounted(() => {
+    getAlgoDatas();
+  });
+
+  const changePage = () => {
+    page.value = curPage.value;
+    getAlgoDatas();
+  };
+
+  const searchItem = () => {
+    keyWord.value = searchKey.value;
+    curPage.value = 1;
+    page.value = curPage.value;
+    searchAlgoDatas();
+  };
+
+  const curPage = ref(1);
+  const currentRow = ref({
+    algoCode: '',
+    name: '',
+    remark: '',
+    url: '',
+    id: 0,
+    pushLinkPrompt: '',
+    pushStatement: '',
+  });
+
+  interface User {
+    algoCode: string;
+    name: string;
+    remark: string;
+    url: string;
+    id: number;
+    pushLinkPrompt: string;
+    pushStatement: string;
+  }
+
+  const handleRowClick = (val: User | undefined) => {
+    console.log('xxxxxxxxxx', currentRow.value);
+    currentRow.value = val;
+  };
+
+  const searchKey = ref('');
+
+  interface SettingConfig {
+    pushLinkPrompt: string;
+    pushStatement: string;
+  }
+
+  const alarmConfig = ref<SettingConfig>({
+    pushLinkPrompt: '',
+    pushStatement: '',
+  });
+  const rules = ref<FormRules>({
+    pushLinkPrompt: [{ required: true, message: '此处不可空缺' }],
+    pushStatement: [{ required: true, message: '此处不可空缺' }],
+  });
+
+  const ruleFormRef = ref<FormInstance>();
+
+  const onSubmit = async () => {
+    if (!ruleFormRef.value) console.log('error submit!');
+    await ruleFormRef.value?.validate((valid, fields) => {
+      if (valid) {
+        algoId.value = currentRow.value.id;
+        pushLinkPrompt.value = alarmConfig.value.pushLinkPrompt;
+        pushStatement.value = alarmConfig.value.pushStatement;
+        console.log('algoId', algoId.value);
+        console.log('pushStatement', pushStatement.value);
+        console.log('pushLinkPrompt', pushLinkPrompt.value);
+        modifyAlgoDatas();
+      } else {
+        console.log('error submit!', fields);
+      }
+    });
+  };
+</script>
+<style lang="scss" scoped>
+  .background {
+    position: relative;
+    height: calc(100vh - 64px - 12px);
+    background-color: #ffffff;
+    display: flex;
+    flex-direction: row;
+    .left {
+      position: relative;
+      height: 100%;
+      width: 31%;
+      padding-left: 1.66%;
+      padding-right: 1.33%;
+      // background-color: green;
+      border-right: #dddddd 1px solid;
+      display: flex;
+      flex-direction: column;
+      .algo-table {
+        position: relative;
+        height: calc(100% - 72px - 90px);
+        width: 100%;
+        // background-color: red;
+        // margin-top: 16px;
+      }
+    }
+    .right {
+      position: relative;
+      height: 100%;
+      width: 69%;
+      display: flex;
+      flex-direction: column;
+      // background-color: yellow;
+      .right_top {
+        position: relative;
+        height: 364px;
+        width: 100%;
+        display: flex;
+        flex-direction: row;
+        border-bottom: #dddddd 1px solid;
+        // background-color: rebeccapurple;
+        .top_left {
+          position: relative;
+          margin-top: 90px;
+          margin-left: 4%;
+          height: 234px;
+          width: 42%;
+          display: flex;
+          flex-direction: column;
+          // background-color: rebeccapurple;
+          .details_title {
+            position: relative;
+            height: 22px;
+            width: 100%;
+            font-size: 14px;
+            font-weight: 600;
+            color: rgba(0, 0, 0, 0.85);
+            line-height: 22px;
+          }
+          .textbox {
+            position: relative;
+            margin-top: 14px;
+            width: 100%;
+            display: flex;
+            flex-direction: row;
+            .item_title {
+              position: relative;
+              width: 20.2%;
+              font-size: 14px;
+              font-weight: 500;
+              color: rgba(0, 0, 0, 0.85);
+              line-height: 22px;
+            }
+            .item_details {
+              position: relative;
+              width: 79.8%;
+              font-size: 14px;
+              font-weight: 400;
+              color: rgba(0, 0, 0, 0.85);
+              line-height: 22px;
+            }
+          }
+        }
+        .top_right {
+          position: relative;
+          margin-top: 90px;
+          margin-left: 4%;
+          height: 234px;
+          width: 45%;
+          display: flex;
+          flex-direction: row;
+          // background-color: rebeccapurple;
+        }
+      }
+      .right_bottom {
+        position: relative;
+        margin-left: 4%;
+        margin-top: 24px;
+        width: 91%;
+        display: flex;
+        flex-direction: column;
+        .details_title {
+          position: relative;
+          height: 22px;
+          width: 100%;
+          font-size: 14px;
+          font-weight: 600;
+          color: rgba(0, 0, 0, 0.85);
+          line-height: 22px;
+        }
+      }
+    }
+  }
+  .pushStatement {
+    position: relative;
+    display: flex;
+    flex-direction: column;
+    height: 155px;
+    width: 100%;
+    // background-color: red;
+    .remark {
+      position: relative;
+      height: 22px;
+      width: 100%;
+      margin-top: 4px;
+      margin-left: 10px;
+      margin-bottom: 12px;
+      font-size: 16px;
+      font-weight: 400;
+      color: rgba(0, 0, 0, 0.42);
+      line-height: 22px;
+    }
+  }
+  :deep() {
+    .el-input__wrapper {
+      align-items: flex-start !important;
+    }
+    .el-form-item__content {
+      justify-content: flex-end;
+    }
+  }
+</style>

+ 52 - 0
src/views/cameras/algo-management/use-algoData.ts

@@ -0,0 +1,52 @@
+import { getAlgoInfo, searchAlgoInfo, algoInfoModify } from '@/api/algo/algo';
+import { ref } from 'vue';
+import { ElMessage } from 'element-plus';
+
+export function useAlgo() {
+  const algoList = ref([]);
+  const page = ref(1);
+  const keyWord = ref('');
+
+  const algoId = ref(0);
+  const pushLinkPrompt = ref('');
+  const pushStatement = ref('');
+
+  const getAlgoDatas = () => {
+    return getAlgoInfo(page.value).then((res) => {
+      algoList.value = res.records;
+    });
+  };
+
+  const searchAlgoDatas = () => {
+    return searchAlgoInfo(page.value, keyWord.value).then((res) => {
+      algoList.value = res.records;
+    });
+  };
+
+  const modifyAlgoDatas = () => {
+    return algoInfoModify(algoId.value, pushLinkPrompt.value, pushStatement.value)
+      .then(function () {
+        ElMessage({
+          message: '表格数据保存成功',
+          type: 'success',
+        });
+      })
+      .catch(function () {
+        ElMessage.error('表格数据保存失败');
+      });
+  };
+
+  return {
+    algoList,
+    page,
+    keyWord,
+    getAlgoDatas,
+    searchAlgoDatas,
+    algoId,
+    pushLinkPrompt,
+    pushStatement,
+    modifyAlgoDatas,
+  };
+}
+
+export default useAlgo;

src/views/setting/account/accountBackup .vue → src/views/setting/account/account .vue


+ 0 - 98
src/views/setting/account/account.vue

@@ -1,98 +0,0 @@
-<template>
-  <PageWrapper>
-    <div class="background">
-      <div class="left">
-        <el-input
-          v-model="searchKey"
-          placeholder="请输入算法信息搜索"
-          style="margin-top: 24px; height: 32px"
-          :suffix-icon="Search"
-        />
-      </div>
-      <div class="right">
-        <div class="right_top">
-          <div class="top_left"></div>
-        </div>
-      </div>
-      <!-- <video :src="address" controls autoplay muted style="width: 100%; height: 100%"> </video> -->
-    </div>
-  </PageWrapper>
-</template>
-<script lang="ts" setup>
-  import { onMounted, ref, onUnmounted } from 'vue';
-  import { PageWrapper } from '@/components/Page';
-  import videojs from 'video.js';
-  import 'video.js/dist/video-js.css';
-  import useAlgo from '@/api/dashboard/algoManagement/use-algoData';
-  import { Search } from '@element-plus/icons-vue';
-
-  //调用后端数据
-  const algoDatas = useAlgo();
-  const { algoList, getAlgoDatas, algoId, pushLinkPrompt, pushStatement, modifyAlgoDatas } =
-    algoDatas;
-  //将后端拉到的数据存到algoListUse数组中进行使用
-  const algoListUse = ref<any[]>([]);
-  //刷新时从后端拉一次算法数组
-  onMounted(() => {
-    getAlgoDatas().then(() => {
-      console.log('algoList', algoList.value);
-      algoListUse.value = algoList.value;
-    });
-  });
-
-  const address = ref('https://www.w3schools.com/html/movie.mp4');
-
-  const searchKey = ref('');
-</script>
-<style lang="scss" scoped>
-  .background {
-    position: relative;
-    height: 888px;
-    background-color: white;
-    display: flex;
-    flex-direction: row;
-    .left {
-      position: relative;
-      height: 100%;
-      width: 31%;
-      padding-left: 1.66%;
-      padding-right: 1.33%;
-      // background-color: green;
-      border-right: #dddddd 1px solid;
-      display: flex;
-      flex-direction: column;
-      .content {
-        position: relative;
-        height: 100%;
-        width: 100%;
-        background-color: red;
-      }
-    }
-    .right {
-      position: relative;
-      height: 100%;
-      width: 69%;
-      display: flex;
-      flex-direction: column;
-      // background-color: yellow;
-      .right_top {
-        position: relative;
-        height: 364px;
-        width: 100%;
-        display: flex;
-        flex-direction: row;
-        // background-color: rebeccapurple;
-        .top_left {
-          position: relative;
-          margin-top: 90px;
-          margin-left: 1.9%;
-          height: 234px;
-          width: 42%;
-          display: flex;
-          flex-direction: row;
-          background-color: rebeccapurple;
-        }
-      }
-    }
-  }
-</style>