Browse Source

完成页面

master
邓宏 2 years ago
parent
commit
69aba55f2b
  1. 3
      package.json
  2. 489
      pnpm-lock.yaml
  3. BIN
      src/assets/img/home/analysis_cell.png
  4. 14
      src/assets/style/index.less
  5. 1
      src/assets/svg/search.svg
  6. 27
      src/components/index.js
  7. 87
      src/config/request.js
  8. 5
      src/main.js
  9. 5
      src/router/index.js
  10. 2
      src/store/modules/data.js
  11. 275
      src/views/analysis.vue
  12. 42
      src/views/home.vue
  13. 54
      src/views/info.vue
  14. 270
      src/views/parameter.vue
  15. 84
      src/views/query.vue

3
package.json

@ -8,9 +8,12 @@
"build": "vite build"
},
"dependencies": {
"axios": "^1.2.1",
"echarts": "^5.4.1",
"element-plus": "^2.2.27",
"vite-plugin-require-transform": "^1.0.4",
"vue": "^3.2.45",
"vue-echarts": "^6.3.3",
"vue-router": "^4.1.6",
"vue3-video-play": "^1.3.1-beta.6",
"vuex": "^4.1.0"

489
pnpm-lock.yaml

@ -1,9 +1,11 @@
lockfileVersion: 5.4
lockfileVersion: 5.3
specifiers:
'@vitejs/plugin-vue': ^2.3.3
'@vitejs/plugin-vue-jsx': ^1.3.10
axios: ^1.2.1
black-knight: 1.3.25
echarts: ^5.4.1
element-plus: ^2.2.27
less: ^4.1.3
less-loader: ~7.3.0
@ -11,14 +13,18 @@ specifiers:
vite: ^2.9.14
vite-plugin-require-transform: ^1.0.4
vue: ^3.2.45
vue-echarts: ^6.3.3
vue-router: ^4.1.6
vue3-video-play: ^1.3.1-beta.6
vuex: ^4.1.0
dependencies:
axios: 1.2.1
echarts: 5.4.1
element-plus: 2.2.27_vue@3.2.45
vite-plugin-require-transform: 1.0.4
vue: 3.2.45
vue-echarts: 6.3.3_echarts@5.4.1+vue@3.2.45
vue-router: 4.1.6_vue@3.2.45
vue3-video-play: 1.3.1-beta.6
vuex: 4.1.0_vue@3.2.45
@ -28,7 +34,7 @@ devDependencies:
'@vitejs/plugin-vue-jsx': 1.3.10
black-knight: 1.3.25
less: 4.1.3
less-loader: 7.3.0_less@4.1.3+webpack@5.75.0
less-loader: 7.3.0_less@4.1.3
sass-resources-loader: 2.2.5
vite: 2.9.14_less@4.1.3
@ -364,13 +370,6 @@ packages:
resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
engines: {node: '>=6.0.0'}
/@jridgewell/source-map/0.3.2:
resolution: {integrity: sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==}
dependencies:
'@jridgewell/gen-mapping': 0.3.2
'@jridgewell/trace-mapping': 0.3.14
dev: true
/@jridgewell/sourcemap-codec/1.4.14:
resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
@ -392,24 +391,6 @@ packages:
resolution: {integrity: sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==}
dev: false
/@types/eslint-scope/3.7.4:
resolution: {integrity: sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==}
dependencies:
'@types/eslint': 8.4.10
'@types/estree': 0.0.51
dev: true
/@types/eslint/8.4.10:
resolution: {integrity: sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==}
dependencies:
'@types/estree': 0.0.51
'@types/json-schema': 7.0.11
dev: true
/@types/estree/0.0.51:
resolution: {integrity: sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==}
dev: true
/@types/json-schema/7.0.11:
resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
dev: true
@ -424,10 +405,6 @@ packages:
resolution: {integrity: sha512-/THyiqyQAP9AfARo4pF+aCGcyiQ94tX/Is2I7HofNRqoYLgN1PBoOWu2/zTA5zMxzP5EFutMtWtGAFRKUe961Q==}
dev: false
/@types/node/18.11.15:
resolution: {integrity: sha512-VkhBbVo2+2oozlkdHXLrb3zjsRkpdnaU2bXmX8Wgle3PUi569eLRaHGlgETQHR7lLL1w7GiG3h9SnePhxNDecw==}
dev: true
/@types/web-bluetooth/0.0.16:
resolution: {integrity: sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==}
dev: false
@ -485,12 +462,14 @@ packages:
'@vue/shared': 3.2.45
estree-walker: 2.0.2
source-map: 0.6.1
dev: false
/@vue/compiler-dom/3.2.45:
resolution: {integrity: sha512-tyYeUEuKqqZO137WrZkpwfPCdiiIeXYCcJ8L4gWz9vqaxzIQRccTSwSWZ/Axx5YR2z+LvpUbmPNXxuBU45lyRw==}
dependencies:
'@vue/compiler-core': 3.2.45
'@vue/shared': 3.2.45
dev: false
/@vue/compiler-sfc/3.2.45:
resolution: {integrity: sha512-1jXDuWah1ggsnSAOGsec8cFjT/K6TMZ0sPL3o3d84Ft2AYZi2jWJgRMjw4iaK0rBfA89L5gw427H4n1RZQBu6Q==}
@ -505,12 +484,14 @@ packages:
magic-string: 0.25.9
postcss: 8.4.14
source-map: 0.6.1
dev: false
/@vue/compiler-ssr/3.2.45:
resolution: {integrity: sha512-6BRaggEGqhWht3lt24CrIbQSRD5O07MTmd+LjAn5fJj568+R9eUD2F7wMQJjX859seSlrYog7sUtrZSd7feqrQ==}
dependencies:
'@vue/compiler-dom': 3.2.45
'@vue/shared': 3.2.45
dev: false
/@vue/devtools-api/6.2.1:
resolution: {integrity: sha512-OEgAMeQXvCoJ+1x8WyQuVZzFo0wcyCmUR3baRVLmKBo1LmYZWMlRiXlux5jd0fqVJu6PfDbOrZItVqUEzLobeQ==}
@ -528,17 +509,20 @@ packages:
'@vue/shared': 3.2.45
estree-walker: 2.0.2
magic-string: 0.25.9
dev: false
/@vue/reactivity/3.2.45:
resolution: {integrity: sha512-PRvhCcQcyEVohW0P8iQ7HDcIOXRjZfAsOds3N99X/Dzewy8TVhTCT4uXpAHfoKjVTJRA0O0K+6QNkDIZAxNi3A==}
dependencies:
'@vue/shared': 3.2.45
dev: false
/@vue/runtime-core/3.2.45:
resolution: {integrity: sha512-gzJiTA3f74cgARptqzYswmoQx0fIA+gGYBfokYVhF8YSXjWTUA2SngRzZRku2HbGbjzB6LBYSbKGIaK8IW+s0A==}
dependencies:
'@vue/reactivity': 3.2.45
'@vue/shared': 3.2.45
dev: false
/@vue/runtime-dom/3.2.45:
resolution: {integrity: sha512-cy88YpfP5Ue2bDBbj75Cb4bIEZUMM/mAkDMfqDTpUYVgTf/kuQ2VQ8LebuZ8k6EudgH8pYhsGWHlY0lcxlvTwA==}
@ -546,6 +530,7 @@ packages:
'@vue/runtime-core': 3.2.45
'@vue/shared': 3.2.45
csstype: 2.6.20
dev: false
/@vue/server-renderer/3.2.45_vue@3.2.45:
resolution: {integrity: sha512-ebiMq7q24WBU1D6uhPK//2OTR1iRIyxjF5iVq/1a5I1SDMDyDu4Ts6fJaMnjrvD3MqnaiFkKQj+LKAgz5WIK3g==}
@ -555,9 +540,11 @@ packages:
'@vue/compiler-ssr': 3.2.45
'@vue/shared': 3.2.45
vue: 3.2.45
dev: false
/@vue/shared/3.2.45:
resolution: {integrity: sha512-Ewzq5Yhimg7pSztDV+RH1UDKBzmtqieXQlpTVm2AwraoRL/Rks96mvd8Vgi7Lj+h+TH8dv7mXD3FRZR3TUvbSg==}
dev: false
/@vueuse/core/9.6.0_vue@3.2.45:
resolution: {integrity: sha512-qGUcjKQXHgN+jqXEgpeZGoxdCbIDCdVPz3QiF1uyecVGbMuM63o96I1GjYx5zskKgRI0FKSNsVWM7rwrRMTf6A==}
@ -584,134 +571,6 @@ packages:
- vue
dev: false
/@webassemblyjs/ast/1.11.1:
resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==}
dependencies:
'@webassemblyjs/helper-numbers': 1.11.1
'@webassemblyjs/helper-wasm-bytecode': 1.11.1
dev: true
/@webassemblyjs/floating-point-hex-parser/1.11.1:
resolution: {integrity: sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==}
dev: true
/@webassemblyjs/helper-api-error/1.11.1:
resolution: {integrity: sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==}
dev: true
/@webassemblyjs/helper-buffer/1.11.1:
resolution: {integrity: sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==}
dev: true
/@webassemblyjs/helper-numbers/1.11.1:
resolution: {integrity: sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==}
dependencies:
'@webassemblyjs/floating-point-hex-parser': 1.11.1
'@webassemblyjs/helper-api-error': 1.11.1
'@xtuc/long': 4.2.2
dev: true
/@webassemblyjs/helper-wasm-bytecode/1.11.1:
resolution: {integrity: sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==}
dev: true
/@webassemblyjs/helper-wasm-section/1.11.1:
resolution: {integrity: sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==}
dependencies:
'@webassemblyjs/ast': 1.11.1
'@webassemblyjs/helper-buffer': 1.11.1
'@webassemblyjs/helper-wasm-bytecode': 1.11.1
'@webassemblyjs/wasm-gen': 1.11.1
dev: true
/@webassemblyjs/ieee754/1.11.1:
resolution: {integrity: sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==}
dependencies:
'@xtuc/ieee754': 1.2.0
dev: true
/@webassemblyjs/leb128/1.11.1:
resolution: {integrity: sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==}
dependencies:
'@xtuc/long': 4.2.2
dev: true
/@webassemblyjs/utf8/1.11.1:
resolution: {integrity: sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==}
dev: true
/@webassemblyjs/wasm-edit/1.11.1:
resolution: {integrity: sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==}
dependencies:
'@webassemblyjs/ast': 1.11.1
'@webassemblyjs/helper-buffer': 1.11.1
'@webassemblyjs/helper-wasm-bytecode': 1.11.1
'@webassemblyjs/helper-wasm-section': 1.11.1
'@webassemblyjs/wasm-gen': 1.11.1
'@webassemblyjs/wasm-opt': 1.11.1
'@webassemblyjs/wasm-parser': 1.11.1
'@webassemblyjs/wast-printer': 1.11.1
dev: true
/@webassemblyjs/wasm-gen/1.11.1:
resolution: {integrity: sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==}
dependencies:
'@webassemblyjs/ast': 1.11.1
'@webassemblyjs/helper-wasm-bytecode': 1.11.1
'@webassemblyjs/ieee754': 1.11.1
'@webassemblyjs/leb128': 1.11.1
'@webassemblyjs/utf8': 1.11.1
dev: true
/@webassemblyjs/wasm-opt/1.11.1:
resolution: {integrity: sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==}
dependencies:
'@webassemblyjs/ast': 1.11.1
'@webassemblyjs/helper-buffer': 1.11.1
'@webassemblyjs/wasm-gen': 1.11.1
'@webassemblyjs/wasm-parser': 1.11.1
dev: true
/@webassemblyjs/wasm-parser/1.11.1:
resolution: {integrity: sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==}
dependencies:
'@webassemblyjs/ast': 1.11.1
'@webassemblyjs/helper-api-error': 1.11.1
'@webassemblyjs/helper-wasm-bytecode': 1.11.1
'@webassemblyjs/ieee754': 1.11.1
'@webassemblyjs/leb128': 1.11.1
'@webassemblyjs/utf8': 1.11.1
dev: true
/@webassemblyjs/wast-printer/1.11.1:
resolution: {integrity: sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==}
dependencies:
'@webassemblyjs/ast': 1.11.1
'@xtuc/long': 4.2.2
dev: true
/@xtuc/ieee754/1.2.0:
resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
dev: true
/@xtuc/long/4.2.2:
resolution: {integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==}
dev: true
/acorn-import-assertions/1.8.0_acorn@8.8.1:
resolution: {integrity: sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==}
peerDependencies:
acorn: ^8
dependencies:
acorn: 8.8.1
dev: true
/acorn/8.8.1:
resolution: {integrity: sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: true
/ajv-keywords/3.5.2_ajv@6.12.6:
resolution: {integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==}
peerDependencies:
@ -750,6 +609,20 @@ packages:
resolution: {integrity: sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==}
dev: true
/asynckit/0.4.0:
resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
dev: false
/axios/1.2.1:
resolution: {integrity: sha512-I88cFiGu9ryt/tfVEi4kX2SITsvDddTajXTOFmt2uK1ZVA8LytjtdeyefdQWEf5PU8w+4SSJDoYnggflB5tW4A==}
dependencies:
follow-redirects: 1.15.2
form-data: 4.0.0
proxy-from-env: 1.1.0
transitivePeerDependencies:
- debug
dev: false
/balanced-match/1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true
@ -780,10 +653,6 @@ packages:
update-browserslist-db: 1.0.5_browserslist@4.21.2
dev: true
/buffer-from/1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
dev: true
/camelcase/6.3.0:
resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==}
engines: {node: '>=10'}
@ -809,11 +678,6 @@ packages:
supports-color: 7.2.0
dev: true
/chrome-trace-event/1.0.3:
resolution: {integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==}
engines: {node: '>=6.0'}
dev: true
/color-convert/1.9.3:
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
dependencies:
@ -833,9 +697,12 @@ packages:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
dev: true
/commander/2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
dev: true
/combined-stream/1.0.8:
resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
engines: {node: '>= 0.8'}
dependencies:
delayed-stream: 1.0.0
dev: false
/concat-map/0.0.1:
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
@ -855,6 +722,7 @@ packages:
/csstype/2.6.20:
resolution: {integrity: sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA==}
dev: false
/dayjs/1.11.4:
resolution: {integrity: sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g==}
@ -862,11 +730,6 @@ packages:
/debug/3.2.7:
resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.1.3
dev: true
@ -883,6 +746,18 @@ packages:
dependencies:
ms: 2.1.2
/delayed-stream/1.0.0:
resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
engines: {node: '>=0.4.0'}
dev: false
/echarts/5.4.1:
resolution: {integrity: sha512-9ltS3M2JB0w2EhcYjCdmtrJ+6haZcW6acBolMGIuf01Hql1yrIV01L1aRj7jsaaIULJslEP9Z3vKlEmnJaWJVQ==}
dependencies:
tslib: 2.3.0
zrender: 5.4.1
dev: false
/electron-to-chromium/1.4.196:
resolution: {integrity: sha512-uxMa/Dt7PQsLBVXwH+t6JvpHJnrsYBaxWKi/J6HE+/nBtoHENhwBoNkgkm226/Kfxeg0z1eMQLBRPPKcDH8xWA==}
dev: true
@ -904,7 +779,7 @@ packages:
escape-html: 1.0.3
lodash: 4.17.21
lodash-es: 4.17.21
lodash-unified: 1.0.2_3ib2ivapxullxkx3xftsimdk7u
lodash-unified: 1.0.2_da03a4540fbd16bbaafbb96724306afd
memoize-one: 6.0.0
normalize-wheel-es: 1.2.0
vue: 3.2.45
@ -917,14 +792,6 @@ packages:
engines: {node: '>= 4'}
dev: true
/enhanced-resolve/5.12.0:
resolution: {integrity: sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==}
engines: {node: '>=10.13.0'}
dependencies:
graceful-fs: 4.2.10
tapable: 2.2.1
dev: true
/errno/0.1.8:
resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==}
hasBin: true
@ -934,10 +801,6 @@ packages:
dev: true
optional: true
/es-module-lexer/0.9.3:
resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==}
dev: true
/esbuild-android-64/0.14.49:
resolution: {integrity: sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==}
engines: {node: '>=12'}
@ -1159,39 +1022,9 @@ packages:
resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
engines: {node: '>=0.8.0'}
/eslint-scope/5.1.1:
resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==}
engines: {node: '>=8.0.0'}
dependencies:
esrecurse: 4.3.0
estraverse: 4.3.0
dev: true
/esrecurse/4.3.0:
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
engines: {node: '>=4.0'}
dependencies:
estraverse: 5.3.0
dev: true
/estraverse/4.3.0:
resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==}
engines: {node: '>=4.0'}
dev: true
/estraverse/5.3.0:
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
engines: {node: '>=4.0'}
dev: true
/estree-walker/2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
/events/3.3.0:
resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==}
engines: {node: '>=0.8.x'}
dev: true
/fast-deep-equal/3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true
@ -1200,6 +1033,25 @@ packages:
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
dev: true
/follow-redirects/1.15.2:
resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==}
engines: {node: '>=4.0'}
peerDependencies:
debug: '*'
peerDependenciesMeta:
debug:
optional: true
dev: false
/form-data/4.0.0:
resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==}
engines: {node: '>= 6'}
dependencies:
asynckit: 0.4.0
combined-stream: 1.0.8
mime-types: 2.1.35
dev: false
/fs.realpath/1.0.0:
resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
dev: true
@ -1221,10 +1073,6 @@ packages:
engines: {node: '>=6.9.0'}
dev: true
/glob-to-regexp/0.4.1:
resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
dev: true
/glob/7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
dependencies:
@ -1244,6 +1092,7 @@ packages:
resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==}
requiresBuild: true
dev: true
optional: true
/has-flag/3.0.0:
resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
@ -1311,15 +1160,6 @@ packages:
resolution: {integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==}
dev: true
/jest-worker/27.5.1:
resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==}
engines: {node: '>= 10.13.0'}
dependencies:
'@types/node': 18.11.15
merge-stream: 2.0.0
supports-color: 8.1.1
dev: true
/js-tokens/4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@ -1328,10 +1168,6 @@ packages:
engines: {node: '>=4'}
hasBin: true
/json-parse-even-better-errors/2.3.1:
resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==}
dev: true
/json-schema-traverse/0.4.1:
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
dev: true
@ -1347,7 +1183,7 @@ packages:
engines: {node: '>= 8'}
dev: true
/less-loader/7.3.0_less@4.1.3+webpack@5.75.0:
/less-loader/7.3.0_less@4.1.3:
resolution: {integrity: sha512-Mi8915g7NMaLlgi77mgTTQvK022xKRQBIVDSyfl3ErTuBhmZBQab0mjeJjNNqGbdR+qrfTleKXqbGI4uEFavxg==}
engines: {node: '>= 10.13.0'}
peerDependencies:
@ -1358,7 +1194,6 @@ packages:
less: 4.1.3
loader-utils: 2.0.2
schema-utils: 3.1.1
webpack: 5.75.0
dev: true
/less/4.1.3:
@ -1377,13 +1212,6 @@ packages:
mime: 1.6.0
needle: 3.1.0
source-map: 0.6.1
transitivePeerDependencies:
- supports-color
dev: true
/loader-runner/4.3.0:
resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==}
engines: {node: '>=6.11.5'}
dev: true
/loader-utils/2.0.2:
@ -1399,7 +1227,7 @@ packages:
resolution: {integrity: sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==}
dev: false
/lodash-unified/1.0.2_3ib2ivapxullxkx3xftsimdk7u:
/lodash-unified/1.0.2_da03a4540fbd16bbaafbb96724306afd:
resolution: {integrity: sha512-OGbEy+1P+UT26CYi4opY4gebD8cWRDxAT6MAObIVQMiqYdxZr1g3QHWCToVsm31x2NkLS4K3+MC2qInaRMa39g==}
peerDependencies:
'@types/lodash-es': '*'
@ -1419,6 +1247,7 @@ packages:
resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
dependencies:
sourcemap-codec: 1.4.8
dev: false
/make-dir/2.1.0:
resolution: {integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==}
@ -1434,21 +1263,17 @@ packages:
resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
dev: false
/merge-stream/2.0.0:
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
dev: true
/mime-db/1.52.0:
resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
engines: {node: '>= 0.6'}
dev: true
dev: false
/mime-types/2.1.35:
resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
engines: {node: '>= 0.6'}
dependencies:
mime-db: 1.52.0
dev: true
dev: false
/mime/1.6.0:
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
@ -1486,15 +1311,9 @@ packages:
debug: 3.2.7
iconv-lite: 0.6.3
sax: 1.2.4
transitivePeerDependencies:
- supports-color
dev: true
optional: true
/neo-async/2.6.2:
resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==}
dev: true
/node-releases/2.0.6:
resolution: {integrity: sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==}
dev: true
@ -1545,6 +1364,10 @@ packages:
picocolors: 1.0.0
source-map-js: 1.0.2
/proxy-from-env/1.1.0:
resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
dev: false
/prr/1.0.1:
resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==}
dev: true
@ -1555,11 +1378,9 @@ packages:
engines: {node: '>=6'}
dev: true
/randombytes/2.1.0:
resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==}
dependencies:
safe-buffer: 5.1.2
dev: true
/resize-detector/0.3.0:
resolution: {integrity: sha512-R/tCuvuOHQ8o2boRP6vgx8hXCCy87H1eY9V5imBYeVNyNVpuL9ciReSccLj2gDcax9+2weXy3bc8Vv+NRXeEvQ==}
dev: false
/resolve/1.22.1:
resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==}
@ -1621,23 +1442,10 @@ packages:
hasBin: true
dev: true
/serialize-javascript/6.0.0:
resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==}
dependencies:
randombytes: 2.1.0
dev: true
/source-map-js/1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
/source-map-support/0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
dependencies:
buffer-from: 1.1.2
source-map: 0.6.1
dev: true
/source-map/0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
@ -1645,6 +1453,7 @@ packages:
/sourcemap-codec/1.4.8:
resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
deprecated: Please use @jridgewell/sourcemap-codec instead
dev: false
/supports-color/5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
@ -1659,13 +1468,6 @@ packages:
has-flag: 4.0.0
dev: true
/supports-color/8.1.1:
resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
engines: {node: '>=10'}
dependencies:
has-flag: 4.0.0
dev: true
/supports-preserve-symlinks-flag/1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
@ -1675,46 +1477,6 @@ packages:
resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==}
dev: true
/tapable/2.2.1:
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
engines: {node: '>=6'}
dev: true
/terser-webpack-plugin/5.3.6_webpack@5.75.0:
resolution: {integrity: sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==}
engines: {node: '>= 10.13.0'}
peerDependencies:
'@swc/core': '*'
esbuild: '*'
uglify-js: '*'
webpack: ^5.1.0
peerDependenciesMeta:
'@swc/core':
optional: true
esbuild:
optional: true
uglify-js:
optional: true
dependencies:
'@jridgewell/trace-mapping': 0.3.14
jest-worker: 27.5.1
schema-utils: 3.1.1
serialize-javascript: 6.0.0
terser: 5.16.1
webpack: 5.75.0
dev: true
/terser/5.16.1:
resolution: {integrity: sha512-xvQfyfA1ayT0qdK47zskQgRZeWLoOQ8JQ6mIgRGVNwZKdQMU+5FkCBjmv4QjcrTzyZquRw2FVtlJSRUmMKQslw==}
engines: {node: '>=10'}
hasBin: true
dependencies:
'@jridgewell/source-map': 0.3.2
acorn: 8.8.1
commander: 2.20.3
source-map-support: 0.5.21
dev: true
/throttle-debounce/3.0.1:
resolution: {integrity: sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==}
engines: {node: '>=10'}
@ -1724,6 +1486,10 @@ packages:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'}
/tslib/2.3.0:
resolution: {integrity: sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==}
dev: false
/tslib/2.4.0:
resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==}
dev: true
@ -1796,6 +1562,23 @@ packages:
vue: 3.2.45
dev: false
/vue-echarts/6.3.3_echarts@5.4.1+vue@3.2.45:
resolution: {integrity: sha512-kfaXxWHrQK7MegPQg9WWgLZjs6UpI5D7B5sDQC+3nN8z6Q3RjmaGI0KPwKLIk5fXZOfLF9GcfNi9BS59eeYsGQ==}
requiresBuild: true
peerDependencies:
'@vue/composition-api': ^1.0.5
echarts: ^5.1.2
vue: ^2.6.12 || ^3.1.1
peerDependenciesMeta:
'@vue/composition-api':
optional: true
dependencies:
echarts: 5.4.1
resize-detector: 0.3.0
vue: 3.2.45
vue-demi: 0.13.5_vue@3.2.45
dev: false
/vue-router/4.1.6_vue@3.2.45:
resolution: {integrity: sha512-DYWYwsG6xNPmLq/FmZn8Ip+qrhFEzA14EI12MsMgVxvHFDYvlr4NXpVF5hrRH1wVcDP8fGi5F4rxuJSl8/r+EQ==}
peerDependencies:
@ -1813,6 +1596,7 @@ packages:
'@vue/runtime-dom': 3.2.45
'@vue/server-renderer': 3.2.45_vue@3.2.45
'@vue/shared': 3.2.45
dev: false
/vue3-video-play/1.3.1-beta.6:
resolution: {integrity: sha512-Olrx2/LNAds7fuor/yX9ZKT9sOcwcfTt2g2YbbCrEaAmZ5Tb0hwBr5z+/CoLwELzzRzXCHPmWWoT0Wm5W/Nwpw==}
@ -1831,59 +1615,12 @@ packages:
vue: 3.2.45
dev: false
/watchpack/2.4.0:
resolution: {integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==}
engines: {node: '>=10.13.0'}
dependencies:
glob-to-regexp: 0.4.1
graceful-fs: 4.2.10
dev: true
/webpack-sources/3.2.3:
resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==}
engines: {node: '>=10.13.0'}
dev: true
/webpack/5.75.0:
resolution: {integrity: sha512-piaIaoVJlqMsPtX/+3KTTO6jfvrSYgauFVdt8cr9LTHKmcq/AMd4mhzsiP7ZF/PGRNPGA8336jldh9l2Kt2ogQ==}
engines: {node: '>=10.13.0'}
hasBin: true
peerDependencies:
webpack-cli: '*'
peerDependenciesMeta:
webpack-cli:
optional: true
dependencies:
'@types/eslint-scope': 3.7.4
'@types/estree': 0.0.51
'@webassemblyjs/ast': 1.11.1
'@webassemblyjs/wasm-edit': 1.11.1
'@webassemblyjs/wasm-parser': 1.11.1
acorn: 8.8.1
acorn-import-assertions: 1.8.0_acorn@8.8.1
browserslist: 4.21.2
chrome-trace-event: 1.0.3
enhanced-resolve: 5.12.0
es-module-lexer: 0.9.3
eslint-scope: 5.1.1
events: 3.3.0
glob-to-regexp: 0.4.1
graceful-fs: 4.2.10
json-parse-even-better-errors: 2.3.1
loader-runner: 4.3.0
mime-types: 2.1.35
neo-async: 2.6.2
schema-utils: 3.1.1
tapable: 2.2.1
terser-webpack-plugin: 5.3.6_webpack@5.75.0
watchpack: 2.4.0
webpack-sources: 3.2.3
transitivePeerDependencies:
- '@swc/core'
- esbuild
- uglify-js
dev: true
/wrappy/1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: true
/zrender/5.4.1:
resolution: {integrity: sha512-M4Z05BHWtajY2241EmMPHglDQAJ1UyHQcYsxDNzD9XLSkPDqMq4bB28v9Pb4mvHnVQ0GxyTklZ/69xCFP6RXBA==}
dependencies:
tslib: 2.3.0
dev: false

BIN
src/assets/img/home/analysis_cell.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

14
src/assets/style/index.less

@ -15,4 +15,18 @@
.fade-transform-leave-to {
opacity: 0;
transform: translateX(30px);
}
.el-textarea textarea{
&::-webkit-scrollbar{
width:6px;
}
&::-webkit-scrollbar-thumb{
background-color:rgba(0, 0, 0, 0.2);
border-radius: 10px;
transition: all .2s casc-in-out;
}
&::-webkit-scrollbar-track{
border-radius: 10px;
}
}

1
src/assets/svg/search.svg

@ -0,0 +1 @@
<?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="1671690328905" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2699" xmlns:xlink="http://www.w3.org/1999/xlink" width="300" height="300"><path d="M384 128c140.8 0 256 115.2 256 256S524.8 640 384 640 128 524.8 128 384s115.2-256 256-256m0-64C207.2 64 64 207.2 64 384s143.2 320 320 320 320-143.2 320-320S560.8 64 384 64z m294.4 569.6l-45.6 45.6 272 272 45.6-45.6-272-272z" p-id="2700"></path></svg>

After

Width:  |  Height:  |  Size: 582 B

27
src/components/index.js

@ -2,10 +2,37 @@ import svgIcon from './svg-icon.vue'
import containerWeb from './container_web.vue'
import dvLoading from './dvLoading.vue'
import VEcharts from 'vue-echarts'
// 手动引入 ECharts 各模块来减小打包体积
import {registerMap} from 'echarts'
import { use } from "echarts/core";
import { CanvasRenderer } from 'echarts/renderers'
import { BarChart, PieChart, LineChart } from 'echarts/charts'
import {
GridComponent,
TooltipComponent,
LegendComponent,
DataZoomComponent,
TitleComponent
} from 'echarts/components'
use([
CanvasRenderer,
BarChart,
PieChart,
LineChart,
TitleComponent,
GridComponent,
LegendComponent,
DataZoomComponent,
TooltipComponent
]);
const components={
svgIcon,
containerWeb,
dvLoading,
VEcharts,
}
export default{

87
src/config/request.js

@ -0,0 +1,87 @@
import axios from 'axios'
import store from "@/store"
export const host=function(host="default"){
return (process.env.NODE_ENV=="development"?{
default:`http://192.168.0.116:8080/cell-analysis/` // 孙
}:{
default:"http://ym.ynncpzs.com:8080/xilin/",
})[host]
}
// create an axios instance
const service = axios.create({
baseURL: '/', // url = base url + request url
// withCredentials: true, // send cookies when cross-domain requests
timeout: 30000 // request timeout
})
// request interceptor
service.interceptors.request.use( config => {
if(!config.disabledLoad){ //禁止加载全局状态
store.commit("data/setLoading",true)
}
if(config.proxy){
config.baseURL=`/${config.proxy}`
}else{
config.baseURL=host(config.host)
}
if (typeof config.pathData === 'object') {
for (var key in config.pathData) {
config.url = config.url.replace(new RegExp(`/:${key}(\\/|$)`), "/"+encodeURIComponent(config.pathData[key])+"$1" )
}
}
if(config.formData){ //表单数据
config.headers["Content-Type"]="application/x-www-form-urlencoded;charset=UTF-8"
config.method="POST"
var formData = new FormData()
for(var i in config.formData){
formData.append(i,config.formData[i])
}
config.data=formData
}
config.headers = Object.assign({
'X-Access-Token': store.getters['data/token'],
"Content-Type": "application/json;charset=UTF-8",
},config.headers||{})
return config
}, error => {
// do something with request error
console.log(error) // for debug
store.commit("data/setLoading",false)
return Promise.reject(error)
})
// response interceptor
service.interceptors.response.use(
response => {
setTimeout(()=>{
store.commit("data/setLoading", false)
},100)
// console.log(response,"----------------ok------------------")
if(response.status==200 && response.config.responseType=='blob')return response;//下载文件
else if(response.status==200&&response.data.code==200)return{ statu:true, data:response.data.result, msg:response.data.message, source:response.data}
// else if(/^401$|^402$/.test(response.data.code)){
// store.commit("data/clearToken", response.data.code)
// return Promise.reject({})
// }
else return{ statu:false, msg: response.data.message||"", code:response.data.code??response.status }
},
error => {
setTimeout(()=>{
store.commit("data/setLoading",false)
},100)
console.log("error code==",error.code)
console.log("error message=",error.message)
console.log("error response=",error.response)
if(error.code=="ECONNABORTED") return{ statu:false, msg:"请求超时!" }
else if(error.response?.status==404) return {statu:false, msg:"地址不存在!"}
else return{ statu:false, msg: error.response.data?.message||"服务器错误!" }
}
)
export default service;

5
src/main.js

@ -5,7 +5,7 @@ import store from '@/store'
import regComponents from '@/components'
import {defineObj} from 'black-knight/lib/config/custom'
import {provise} from 'black-knight/lib/config/tools'
import ElementPlus from 'element-plus'
import ElementPlus,{ElMessage} from 'element-plus'
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import "element-plus/dist/index.css"
import "@/assets/style/index.less"
@ -17,7 +17,10 @@ var app=createApp(App)
app.use(router)
.use(store)
.use(regComponents)
.use(ElementPlus,{locale:zhCn})
.provide('msg',ElMessage)
.use(vue3VideoPlay)
.provide('event',new provise())
.mount('#app')

5
src/router/index.js

@ -7,7 +7,10 @@ export const menu = [
path:"/",
component:()=>import("@/views/home.vue"),
children:[
{path:"/info", component:()=>import("@/views/info.vue")}
{path:"/info", component:()=>import("@/views/info.vue")},
{path:"/query", component:()=>import("@/views/query.vue")},
{path:"/parameter", component:()=>import("@/views/parameter.vue")},
{path:"/analysis", component:()=>import("@/views/analysis.vue")},
]
},
];

2
src/store/modules/data.js

@ -9,7 +9,7 @@ export default {
loading: state=>state.loading,
},
mutations:{
setLoading(){
setLoading(state,val){
if(val){
loadNum++;
state.loading = true

275
src/views/analysis.vue

@ -0,0 +1,275 @@
<style lang="less" scoped>
.card{
margin:10px auto!important;
padding:20px 30px;
table{
width:100%;
tr{
&>.score{
width:230px;
display: flex;
flex-direction: column;
align-items: center;
}
&>.line{
width:20px;
background:#F7FAFE;
}
&>.echart{
width:882px;
}
}
}
}
</style>
<template>
<div class="title"><img src="@/assets/img/home/content_title_icon.png"/>分析结果</div>
<div class="card">
<div class="title" data-title="基础评价指标"/>
<table>
<tr>
<td class="score">
<span style="color:#333;margin-bottom:16px;">保守性(一致性)得分</span>
<el-progress type="circle" :percentage="90" :stroke-width="10" :width="80">
<template #default="{percentage}">
<span style="color:#007BFF;font-size:24px;font-weight:bold;">{{(percentage/10).toFixed(1)}}</span>
</template>
</el-progress>
<span style="color:#007BFF;margin-top:13px;">评价依据</span>
<span style="color:#333;margin:30px 0 16px 0;">增殖能力得分</span>
<el-progress type="circle" :percentage="78" color="#24C142" :stroke-width="10" :width="80">
<template #default="{percentage}">
<span style="color:#24C142;font-size:24px;font-weight:bold;">{{(percentage/10).toFixed(1)}}</span>
</template>
</el-progress>
<span style="color:#007BFF;margin-top:13px;">评价依据</span>
</td>
<td class="line"/>
<td class="echart">
<v-echarts :option="base" style="height:300px;" autoresize/>
</td>
</tr>
</table>
</div>
<div class="card">
<div class="title" data-title="功能评价指标"/>
<table>
<tr>
<td class="score">
<span style="color:#333;margin-bottom:16px;">免疫调控能力得分</span>
<el-progress type="circle" :percentage="90" :stroke-width="10" :width="80">
<template #default="{percentage}">
<span style="color:#007BFF;font-size:24px;font-weight:bold;">{{(percentage/10).toFixed(1)}}</span>
</template>
</el-progress>
<span style="color:#007BFF;margin-top:13px;">评价依据</span>
<span style="color:#333;margin:30px 0 16px 0;">再生修复能力得分</span>
<el-progress type="circle" :percentage="78" color="#FFC600" :stroke-width="10" :width="80">
<template #default="{percentage}">
<span style="color:#FFC600;font-size:24px;font-weight:bold;">{{(percentage/10).toFixed(1)}}</span>
</template>
</el-progress>
<span style="color:#007BFF;margin-top:13px;">评价依据</span>
</td>
<td class="line"/>
<td class="echart">
<v-echarts :option="works" style="height:300px;" autoresize/>
</td>
</tr>
</table>
</div>
<div class="card" style="margin-bottom:100px!important;">
<div class="title" data-title="细胞优选综合评价"/>
<table>
<tr>
<td class="score">
<span style="color:#333;margin-bottom:16px;">细胞综合评价</span>
<img src="@/assets/img/home/analysis_cell.png"/>
<span style="color:#24C142;font-size:16px;font-weight:bold;">全能型</span>
</td>
<td class="line"/>
<td class="echart">
<v-echarts :option="cells" style="height:300px;" autoresize/>
</td>
</tr>
</table>
</div>
</template>
<script setup>
import { computed } from "vue";
var base=computed(()=>({
grid:{
top:40,
right:10,
bottom:10,
left:10,
containLabel:true,
},
xAxis: {
type: 'category',
boundaryGap: false,
axisLine:{show:false},
axisTick:{show:false},
data: ['1', '2', '3', '4', '5', '6', '7']
},
yAxis: {
type: 'value',
name:"细胞增殖曲线",
splitLine:{
lineStyle:{
type:"dashed"
}
}
},
series: [
{
data: [820, 932, 901, 934, 1290, 1330, 1320],
type: 'line',
areaStyle: {
color:{
type: 'linear',
x: 0,
y: 0,
x2: 0,
y2: 1,
colorStops: [
{ offset: 0, color: 'rgba(14, 132, 251, 1)' },
{ offset: 0.9, color: 'rgba(14, 132, 251, 0)' }
],
global: false
}
}
}
]
}))
var works=computed(()=>({
grid:{
top:40,
right:65,
bottom:10,
left:10,
containLabel:true,
},
xAxis: {
type: 'value',
axisLabel:{show:false},
splitLine:{show:false}
},
yAxis: {
type: 'category',
name:"T细胞免疫亚群评估",
axisTick:{show:false},
axisLine:{show:false},
data: ['CD3⁺', 'CD3⁺CD8⁺', 'CD8⁺', 'CD8⁺', 'CD8⁺', 'CD8⁺', 'CD8⁺']
},
series: [
{
type: 'bar',
showBackground: true,
barWidth:12,
itemStyle:{
color:"#007BFF",
borderRadius:10,
},
backgroundStyle: {
color: 'rgba(0, 123, 255, 0.15)',
borderRadius:10,
},
barGap:"-100%",
data: [120, 200, 150, 80, 70, 110, 130],
},
{
type: 'bar',
barWidth:15,
itemStyle:{
opacity:0,
},
animation:false,
label:{
show:true,
opacity:1,
color:"#007BFF",
fontWeight:"bold",
fontSize:16,
position:"right",
formatter(params){
return `74.64%`
},
},
data: [200, 200, 200, 200, 200, 200, 200],
}
]
}))
var cells=computed(()=>({
grid:{
top:40,
right:10,
bottom:20,
left:30,
containLabel:true,
},
xAxis: {
name:"增殖能力",
nameLocation:"middle",
nameTextStyle:{
lineHeight:30,
},
axisLine:{show:false},
axisTick:{show:false},
splitLine:{
lineStyle:{type:"dashed"}
},
},
yAxis: {
name:"分化能力",
nameLocation:"middle",
nameTextStyle:{
lineHeight:30,
},
axisLine:{show:false},
axisTick:{show:false},
splitLine:{
lineStyle:{type:"dashed"}
},
},
series: [
{
type: 'scatter',
symbolSize: 20,
itemStyle:{
color:"#24C142",
},
data: [
[10.0, 8.04],
[8.07, 6.95],
[13.0, 7.58],
[9.05, 8.81],
[11.0, 8.33],
[14.0, 7.66],
[13.4, 6.81],
[10.0, 6.33],
[14.0, 8.96],
[12.5, 6.82],
[9.15, 7.2],
[11.5, 7.2],
[3.03, 4.23],
[12.2, 7.83],
[2.02, 4.47],
[1.05, 3.33],
[4.05, 4.96],
[6.03, 7.24],
[12.0, 6.26],
[12.0, 8.84],
[7.08, 5.82],
[5.02, 5.68]
],
}
]
}))
</script>

42
src/views/home.vue

@ -3,6 +3,48 @@
.d-content{
display: flex;
flex-direction: column;
&>.title{
justify-content: center;
display: flex;
align-items: center;
color:#333;
font-weight: bold;
font-size:30px;
margin:30px 0;
img{
width:26px;
height:26px;
margin-right:10px;
}
}
&>.card{
background:#fff;
width:1200px;
padding:30px;
border-radius: 8px;
margin:auto auto 100px auto;
&>.title{
color:#0068D1;
font-weight: bold;
font-size:22px;
width:max-content;
margin-bottom:25px;
position:relative;
&:before{
content:" ";
position:absolute;
background:#DCEDFE;
width:calc(100% - 10px);
height:80%;
top:8px;
left:-3px;
}
&:after{
content:attr(data-title);
position:relative;
}
}
}
}
}
.head{

54
src/views/info.vue

@ -1,25 +1,5 @@
<style lang="less" scoped>
.title{
justify-content: center;
display: flex;
align-items: center;
color:#333;
font-weight: bold;
font-size:30px;
margin:30px 0;
img{
width:26px;
height:26px;
margin-right:10px;
}
}
.card{
background:#fff;
width:1200px;
padding:30px;
border-radius: 8px;
margin:auto auto 100px auto;
}
</style>
<template>
<div class="title"><img src="@/assets/img/home/content_title_icon.png"/>细胞基础信息登记</div>
@ -28,36 +8,52 @@
<el-row>
<el-col :span="24">
<el-form-item label="细胞编号">
<el-input placeholder="请输入"/>
<el-input placeholder="请输入" v-model="formData.number"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="物种(Speices)">
<el-select placeholder="请选择" style="width:100%;"></el-select>
<el-select placeholder="请选择" style="width:100%;" v-model="formData.speices"></el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="细胞类型(cell type)">
<el-select placeholder="请选择" style="width:100%;"></el-select>
<el-select placeholder="请选择" style="width:100%;" v-model="formData.type"></el-select>
</el-form-item>
</el-col>
<el-col :span="16">
<el-form-item label-width="10px">
<el-select placeholder="请选择" style="width:100%;"></el-select>
<el-select placeholder="请选择" style="width:100%;" v-model="formData.number"></el-select>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="备注">
<el-input type="textarea" style="width:100%;" v-model="demo" placeholder="请输入备注内容" :rows="3"/>
<el-input type="textarea" style="width:100%;" v-model="formData.remark" placeholder="请输入备注内容" :rows="3"/>
</el-form-item>
</el-col>
</el-row>
<el-button color="#0169D2" style="margin:auto;display:flex;">录入参数</el-button>
<el-button color="#0169D2" style="margin:auto;display:flex;" @click="submit">录入参数</el-button>
</el-form>
</div>
</template>
<script setup>
import { ref } from "vue";
import { inject, onMounted, ref } from "vue";
import request from '@/config/request'
var demo=ref('')
var msg=inject("msg")
var formData=ref({})
async function submit(){
var res=await request("/api/cellApi/cellBaseInfoAdd_",{
method:'post',
data: formData.value,
})
if(res.statu){
}else{
msg.error(res.msg||"保存失败!")
}
}
onMounted(async()=>{
})
</script>

270
src/views/parameter.vue

@ -0,0 +1,270 @@
<style lang="less" scoped>
.card{
margin:10px auto!important;
&>.title{
color:#0068D1;
font-weight: bold;
font-size:22px;
width:max-content;
margin-bottom:25px;
position:relative;
&:before{
content:" ";
position:absolute;
background:#DCEDFE;
width:calc(100% - 10px);
height:80%;
top:8px;
left:-3px;
}
&:after{
content:attr(data-title);
position:relative;
}
}
.el-form:deep{
margin-bottom:-18px;
.el-col.title{
margin-bottom:10px;
font-weight: bold;
color:#333;
}
.el-form-item__content{
flex-wrap: nowrap;
.example{
flex-shrink: 0;
color:#0169D2;
margin-left:10px;
cursor: pointer;
&:hover{
opacity: 0.7;
}
}
}
}
}
</style>
<template>
<div class="title"><img src="@/assets/img/home/content_title_icon.png"/>参数设定</div>
<div class="card">
<div class="title" data-title="基础评价指标" />
<el-form label-width="160px" label-position="right">
<el-row>
<el-col :span="10">
<el-form-item label="核型分析结果">
<el-select placeholder="请选择" style="width:100%;"></el-select>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item label="核型">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="STR比对结果">
<el-input placeholder="上传基因型文件">
<template #append>
<el-button>上传文件</el-button>
</template>
</el-input>
<span class="example">示例文件</span>
</el-form-item>
</el-col>
<el-col :span="10">
<el-form-item label="ATCC与DSMZ比对结果">
<el-select placeholder="请选择" style="width:100%;"></el-select>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label-width="10px">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label-width="10px">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="card">
<div class="title" data-title="增殖能力评估" />
<el-form label-position="right">
<el-row :gutter="10">
<el-col :span="24">
<el-form-item label="增殖能力评估">
<el-input placeholder="上传细胞计数表,绘制增殖曲线图">
<template #append>
<el-button>上传文件</el-button>
</template>
</el-input>
<span class="example">示例文件</span>
</el-form-item>
</el-col>
<el-col class="title" :span="24">收获细胞数</el-col>
<el-col :span="10">
<el-form-item label="代数">
<el-select placeholder="请选择" style="width:100%;"></el-select>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="支数">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="每支细胞数">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="card">
<div class="title" data-title="细胞表面抗原分析" />
<el-form label-width="85px" label-position="right">
<el-row>
<el-col :span="8">
<el-form-item label="CD73(%)">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="CD99(%)">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="CD105(%)">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label-width="260px" label="CD11b/CD19/CD34/CD45/HLA-DR(%)">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="card">
<div class="title" data-title="分化能力评估" />
<el-form>
<el-row :gutter="10">
<el-col class="title" :span="24">骨分化能力</el-col>
<el-col :span="8">
<el-form-item label="茜素红染色值">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="BMP2表达量">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="MMP13表达量">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="COL10A1表达量">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col class="title" :span="24">软骨分化能力</el-col>
<el-col :span="8">
<el-form-item label="阿辛蓝染色值">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="COL2A1表达量">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="ACAN表达量">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col class="title" :span="24">脂肪分化能力</el-col>
<el-col :span="8">
<el-form-item label="油红“O”染色值">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="IGF-1表达量">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="PPARG表达量">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
<div class="card">
<div class="title" data-title="杀瘤活性评估" />
<el-form>
<el-form-item label="骨分化特异基因表达量">
<el-input placeholder="待补充"/>
</el-form-item>
</el-form>
</div>
<div class="card">
<div class="title" data-title="免疫调控能力评估" />
<el-form>
<el-row :gutter="10">
<el-col :span="24" class="title">免疫抑制能力</el-col>
<el-col :span="8">
<el-form-item label="Th1抑制率(标准化)">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="Th2抑制率(标准化)">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="Th17抑制率(标准化)">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="9">
<el-form-item label="Tregs增殖促进率(标准化)">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="TNF-α抑制率(标准化)">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="7">
<el-form-item label="PBMC增殖倍数">
<el-input placeholder="请输入"/>
</el-form-item>
</el-col>
<el-col :span="24" class="title">软骨分化能力</el-col>
<el-col :span="24">
<el-form-item label="免疫调节能力">
<el-input placeholder="待补充"/>
</el-form-item>
</el-col>
</el-row>
</el-form>
</div>
</template>
<script setup>
</script>

84
src/views/query.vue

@ -0,0 +1,84 @@
<style lang="less" scoped>
.search{
width:1200px;
margin:auto auto 15px auto;
height:33px;
display:flex;
&>.el-select:deep{
width:160px;
.el-input{
--el-input-border-radius:20px;
--el-input-bg-color:transparent;
}
}
&>.input{
flex-grow: 1;
height:100%;
border-radius: 40px;
text-align: center;
line-height: 33px;
font-size:16px;
border:1px solid #ccc;
border-radius: 30px;
color:#999;
margin-left:20px;
cursor: text;
input{
width:100%;
border:none;
outline: none;
height:100%;
background:transparent;
text-align: center;
color:#333;
font-size:20px;
}
}
}
</style>
<template>
<div class="title"><img src="@/assets/img/home/content_title_icon.png"/>细胞基础信息登记</div>
<div class="search">
<el-select placeholder="细胞类型"></el-select>
<div class="input" @click="focus=true">
<input v-if="focus || searchVal.search" @change="pageNo=1;search()" v-model="searchVal.search" ref="input" @blur="focus=false"/>
<template v-else>
<svg-icon name="search"/> <span>请输入搜索关键词</span>
</template>
</div>
</div>
<div class="card">
<el-table :data="list" :header-cell-style="row=>({background:'#F4F6FD',border:'none'})" :cell-style="row=>({b:{color:'#215FFB'}})[row.column.property]">
<el-table-column label="细胞编号" prop="a"/>
<el-table-column label="物种 (Speices)" prop="a"/>
<el-table-column label="细胞类型 (cell type)" prop="a"/>
<el-table-column label="操作" prop="b"/>
<el-table-column label="备注" prop="a"/>
<template #empty>
<el-empty description="暂无数据"/>
</template>
</el-table>
</div>
</template>
<script setup>
import { nextTick, reactive, ref, watch } from "vue";
var focus=ref(false)
var input=ref()
var searchVal=reactive({
})
var list=ref([
{a:1,b:2},
{a:1,b:2},
{a:1,b:2},
{a:1,b:2},
])
watch(focus, n=>{
if(n){
nextTick(()=>{
input.value.focus()
})
}
})
</script>
Loading…
Cancel
Save