| | |
| | | "axios": "0.27.2", |
| | | "echarts": "^5.5.1", |
| | | "element-plus": "^2.5.0", |
| | | "ezuikit-js": "^8.1.9-beta.3", |
| | | "file-saver": "2.0.5", |
| | | "fuse.js": "6.6.2", |
| | | "html2canvas": "^1.4.1", |
| | | "js-cookie": "3.0.5", |
| | | "jsencrypt": "3.3.2", |
| | | "moment": "^2.30.1", |
| | |
| | | "node": ">=12" |
| | | } |
| | | }, |
| | | "node_modules/@ezuikit/player-ezopen": { |
| | | "version": "8.1.9-beta.3", |
| | | "resolved": "https://registry.npmjs.org/@ezuikit/player-ezopen/-/player-ezopen-8.1.9-beta.3.tgz", |
| | | "integrity": "sha512-4YEA/Otp/lW8iiCOhgajhpkrbdFePUN3oMnSumrvYvDfiIMAKJLAiAmCCiXieoJ8hIzrCeXKjYUPgY5/HALHdg==", |
| | | "dependencies": { |
| | | "@ezuikit/player-plugin-record": "8.1.8-beta.3", |
| | | "@ezuikit/utils-i18n": "^1.0.1", |
| | | "@ezuikit/utils-logger": "^1.0.1", |
| | | "@ezuikit/utils-service": "1.0.1", |
| | | "@ezuikit/utils-tools": "^1.0.4", |
| | | "@juggle/resize-observer": "^3.4.0", |
| | | "dayjs": "^1.11.10", |
| | | "deepmerge": "^4.3.1", |
| | | "eventemitter3": "^5.0.1", |
| | | "jquery": "^3.7.1", |
| | | "screenfull": "^5.2.0", |
| | | "ua-parser-js": "1.0.37" |
| | | } |
| | | }, |
| | | "node_modules/@ezuikit/player-ezopen/node_modules/eventemitter3": { |
| | | "version": "5.0.1", |
| | | "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", |
| | | "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" |
| | | }, |
| | | "node_modules/@ezuikit/player-plugin-record": { |
| | | "version": "8.1.8-beta.3", |
| | | "resolved": "https://registry.npmjs.org/@ezuikit/player-plugin-record/-/player-plugin-record-8.1.8-beta.3.tgz", |
| | | "integrity": "sha512-YcQ5MR8zyg8b+o/ktr6r+YCXkiEX43HVmzVkfJsERgaokaHzoNIpOomEl51j/13gcemjSXuN6i1apCRC2v32pg==" |
| | | }, |
| | | "node_modules/@ezuikit/utils-collect": { |
| | | "version": "0.1.1", |
| | | "resolved": "https://registry.npmjs.org/@ezuikit/utils-collect/-/utils-collect-0.1.1.tgz", |
| | | "integrity": "sha512-BgEOnTtAq8rQRBAKv5rLXbQLGOnfOZ6NS0QTmiviey80JbMJlxrLiqmjL5lxvkm4JtCcXCtSgPA4tskQKN4eDA==" |
| | | }, |
| | | "node_modules/@ezuikit/utils-i18n": { |
| | | "version": "1.0.1", |
| | | "resolved": "https://registry.npmjs.org/@ezuikit/utils-i18n/-/utils-i18n-1.0.1.tgz", |
| | | "integrity": "sha512-uUjN3ADHV2ZG4QznuA7FB89/ck8AGV4qS8hm/sqeSA6/ie4ryYw8MS4wIv71WgPBIgIVDfASuEapyLOwq7R2aQ==", |
| | | "dependencies": { |
| | | "i18n-js": "^4.3.2" |
| | | } |
| | | }, |
| | | "node_modules/@ezuikit/utils-logger": { |
| | | "version": "1.0.1", |
| | | "resolved": "https://registry.npmjs.org/@ezuikit/utils-logger/-/utils-logger-1.0.1.tgz", |
| | | "integrity": "sha512-qak0MXh4vWZCji3aSCfHdWR3EbZCaqS0iMT8/QWuWPRr0vDmTRMP3kFOAw1MuMraR0ocjPBE2PaTEmUuwVqaAw==" |
| | | }, |
| | | "node_modules/@ezuikit/utils-service": { |
| | | "version": "1.0.1", |
| | | "resolved": "https://registry.npmjs.org/@ezuikit/utils-service/-/utils-service-1.0.1.tgz", |
| | | "integrity": "sha512-iNjYuU7AScBJxvKBM9PjiGI2y64QJNPT/H1Fy/Y7ZIAlw4DO//TP+x50qCho+i+EOUpWLtOqBQvtRb7a0O4X4Q==", |
| | | "dependencies": { |
| | | "@ezuikit/utils-tools": "^1.0.1", |
| | | "dayjs": "^1.11.10" |
| | | } |
| | | }, |
| | | "node_modules/@ezuikit/utils-tools": { |
| | | "version": "1.0.4", |
| | | "resolved": "https://registry.npmjs.org/@ezuikit/utils-tools/-/utils-tools-1.0.4.tgz", |
| | | "integrity": "sha512-w+LZ03qowSqrSqDnuONKPpmEn0cuCaF2pkgHL1YicR0of/ZelCho5X8cy5TXQe7UsrQkIM2M7vVennv5KnAdpQ==" |
| | | }, |
| | | "node_modules/@floating-ui/core": { |
| | | "version": "1.6.4", |
| | | "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.4.tgz", |
| | |
| | | "version": "1.5.0", |
| | | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", |
| | | "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" |
| | | }, |
| | | "node_modules/@juggle/resize-observer": { |
| | | "version": "3.4.0", |
| | | "resolved": "https://registry.npmjs.org/@juggle/resize-observer/-/resize-observer-3.4.0.tgz", |
| | | "integrity": "sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==" |
| | | }, |
| | | "node_modules/@nodelib/fs.scandir": { |
| | | "version": "2.1.5", |
| | |
| | | } |
| | | } |
| | | }, |
| | | "node_modules/abortcontroller-polyfill": { |
| | | "version": "1.7.8", |
| | | "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", |
| | | "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==" |
| | | }, |
| | | "node_modules/acorn": { |
| | | "version": "8.12.1", |
| | | "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", |
| | |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/base64-arraybuffer": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", |
| | | "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", |
| | | "engines": { |
| | | "node": ">= 0.6.0" |
| | | } |
| | | }, |
| | | "node_modules/big.js": { |
| | | "version": "5.2.2", |
| | | "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", |
| | | "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", |
| | | "dev": true, |
| | | "engines": { |
| | | "node": "*" |
| | | } |
| | | }, |
| | | "node_modules/bignumber.js": { |
| | | "version": "9.2.1", |
| | | "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.2.1.tgz", |
| | | "integrity": "sha512-+NzaKgOUvInq9TIUZ1+DRspzf/HApkCwD4btfuasFTdrfnOxqx853TgDpMolp+uv4RpRp7bPcEU2zKr9+fRmyw==", |
| | | "engines": { |
| | | "node": "*" |
| | | } |
| | |
| | | "node": ">= 0.10" |
| | | } |
| | | }, |
| | | "node_modules/css-line-break": { |
| | | "version": "2.1.0", |
| | | "resolved": "https://registry.npmmirror.com/css-line-break/-/css-line-break-2.1.0.tgz", |
| | | "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", |
| | | "dependencies": { |
| | | "utrie": "^1.0.2" |
| | | } |
| | | }, |
| | | "node_modules/css-select": { |
| | | "version": "4.3.0", |
| | | "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", |
| | |
| | | "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.12.tgz", |
| | | "integrity": "sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==" |
| | | }, |
| | | "node_modules/debounce-promise": { |
| | | "version": "3.1.2", |
| | | "resolved": "https://registry.npmjs.org/debounce-promise/-/debounce-promise-3.1.2.tgz", |
| | | "integrity": "sha512-rZHcgBkbYavBeD9ej6sP56XfG53d51CD4dnaw989YX/nZ/ZJfgRx/9ePKmTNiUiyQvh4mtrMoS3OAWW+yoYtpg==" |
| | | }, |
| | | "node_modules/debug": { |
| | | "version": "4.3.5", |
| | | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", |
| | |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/ljharb" |
| | | } |
| | | }, |
| | | "node_modules/deepmerge": { |
| | | "version": "4.3.1", |
| | | "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", |
| | | "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/define-data-property": { |
| | |
| | | "engines": { |
| | | "node": ">=0.4.0" |
| | | } |
| | | }, |
| | | "node_modules/delegate": { |
| | | "version": "3.2.0", |
| | | "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", |
| | | "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" |
| | | }, |
| | | "node_modules/dom-serializer": { |
| | | "version": "0.2.2", |
| | |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/ezuikit-js": { |
| | | "version": "8.1.9-beta.3", |
| | | "resolved": "https://registry.npmjs.org/ezuikit-js/-/ezuikit-js-8.1.9-beta.3.tgz", |
| | | "integrity": "sha512-BtpkKOafxRmZroVcol5yOpASVHi1ddUy7DGzFb/TLkoh3VER7xEOzJepiK0O7dOsXAMmxXwooMLO+DIfMXFXnw==", |
| | | "dependencies": { |
| | | "@ezuikit/player-ezopen": "8.1.9-beta.3", |
| | | "@ezuikit/utils-collect": "0.1.1", |
| | | "@ezuikit/utils-i18n": "^1.0.1", |
| | | "@ezuikit/utils-logger": "^1.0.1", |
| | | "@ezuikit/utils-tools": "^1.0.4", |
| | | "@juggle/resize-observer": "^3.4.0", |
| | | "abortcontroller-polyfill": "^1.7.5", |
| | | "debounce-promise": "^3.1.2", |
| | | "deepmerge": "^4.3.1", |
| | | "delegate": "3.2.0", |
| | | "formdata-polyfill": "^4.0.10", |
| | | "jquery": "^3.3.1", |
| | | "lodash-es": "^4.17.21", |
| | | "screenfull": "^5.2.0", |
| | | "uuid": "^8.3.0" |
| | | } |
| | | }, |
| | | "node_modules/fast-diff": { |
| | | "version": "1.2.0", |
| | | "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", |
| | |
| | | "dev": true, |
| | | "dependencies": { |
| | | "reusify": "^1.0.4" |
| | | } |
| | | }, |
| | | "node_modules/fetch-blob": { |
| | | "version": "3.2.0", |
| | | "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", |
| | | "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", |
| | | "funding": [ |
| | | { |
| | | "type": "github", |
| | | "url": "https://github.com/sponsors/jimmywarting" |
| | | }, |
| | | { |
| | | "type": "paypal", |
| | | "url": "https://paypal.me/jimmywarting" |
| | | } |
| | | ], |
| | | "dependencies": { |
| | | "node-domexception": "^1.0.0", |
| | | "web-streams-polyfill": "^3.0.3" |
| | | }, |
| | | "engines": { |
| | | "node": "^12.20 || >= 14.13" |
| | | } |
| | | }, |
| | | "node_modules/file-saver": { |
| | |
| | | }, |
| | | "engines": { |
| | | "node": ">= 6" |
| | | } |
| | | }, |
| | | "node_modules/formdata-polyfill": { |
| | | "version": "4.0.10", |
| | | "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", |
| | | "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", |
| | | "dependencies": { |
| | | "fetch-blob": "^3.1.2" |
| | | }, |
| | | "engines": { |
| | | "node": ">=12.20.0" |
| | | } |
| | | }, |
| | | "node_modules/fragment-cache": { |
| | |
| | | "he": "bin/he" |
| | | } |
| | | }, |
| | | "node_modules/html2canvas": { |
| | | "version": "1.4.1", |
| | | "resolved": "https://registry.npmmirror.com/html2canvas/-/html2canvas-1.4.1.tgz", |
| | | "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", |
| | | "dependencies": { |
| | | "css-line-break": "^2.1.0", |
| | | "text-segmentation": "^1.0.3" |
| | | }, |
| | | "engines": { |
| | | "node": ">=8.0.0" |
| | | } |
| | | }, |
| | | "node_modules/htmlparser2": { |
| | | "version": "3.10.1", |
| | | "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", |
| | |
| | | "entities": "^1.1.1", |
| | | "inherits": "^2.0.1", |
| | | "readable-stream": "^3.1.1" |
| | | } |
| | | }, |
| | | "node_modules/i18n-js": { |
| | | "version": "4.5.1", |
| | | "resolved": "https://registry.npmjs.org/i18n-js/-/i18n-js-4.5.1.tgz", |
| | | "integrity": "sha512-n7jojFj1WC0tztgr0I8jqTXuIlY1xNzXnC3mjKX/YjJhimdM+jXM8vOmn9d3xQFNC6qDHJ4ovhdrGXrRXLIGkA==", |
| | | "dependencies": { |
| | | "bignumber.js": "*", |
| | | "lodash": "*", |
| | | "make-plural": "*" |
| | | } |
| | | }, |
| | | "node_modules/image-size": { |
| | |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/jquery": { |
| | | "version": "3.7.1", |
| | | "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", |
| | | "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" |
| | | }, |
| | | "node_modules/js-base64": { |
| | | "version": "2.6.4", |
| | | "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", |
| | |
| | | "dependencies": { |
| | | "@jridgewell/sourcemap-codec": "^1.4.15" |
| | | } |
| | | }, |
| | | "node_modules/make-plural": { |
| | | "version": "7.4.0", |
| | | "resolved": "https://registry.npmjs.org/make-plural/-/make-plural-7.4.0.tgz", |
| | | "integrity": "sha512-4/gC9KVNTV6pvYg2gFeQYTW3mWaoJt7WZE5vrp1KnQDgW92JtYZnzmZT81oj/dUTqAIu0ufI2x3dkgu3bB1tYg==" |
| | | }, |
| | | "node_modules/map-cache": { |
| | | "version": "0.2.2", |
| | |
| | | "dev": true, |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | } |
| | | }, |
| | | "node_modules/node-domexception": { |
| | | "version": "1.0.0", |
| | | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", |
| | | "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", |
| | | "funding": [ |
| | | { |
| | | "type": "github", |
| | | "url": "https://github.com/sponsors/jimmywarting" |
| | | }, |
| | | { |
| | | "type": "github", |
| | | "url": "https://paypal.me/jimmywarting" |
| | | } |
| | | ], |
| | | "engines": { |
| | | "node": ">=10.5.0" |
| | | } |
| | | }, |
| | | "node_modules/normalize-path": { |
| | |
| | | "node": ">=14.0.0" |
| | | } |
| | | }, |
| | | "node_modules/screenfull": { |
| | | "version": "5.2.0", |
| | | "resolved": "https://registry.npmjs.org/screenfull/-/screenfull-5.2.0.tgz", |
| | | "integrity": "sha512-9BakfsO2aUQN2K9Fdbj87RJIEZ82Q9IGim7FqM5OsebfoFC6ZHXgDq/KvniuLTPdeM8wY2o6Dj3WQ7KeQCj3cA==", |
| | | "engines": { |
| | | "node": ">=0.10.0" |
| | | }, |
| | | "funding": { |
| | | "url": "https://github.com/sponsors/sindresorhus" |
| | | } |
| | | }, |
| | | "node_modules/scule": { |
| | | "version": "1.3.0", |
| | | "resolved": "https://registry.npmjs.org/scule/-/scule-1.3.0.tgz", |
| | |
| | | "node": ">=10.13.0" |
| | | } |
| | | }, |
| | | "node_modules/text-segmentation": { |
| | | "version": "1.0.3", |
| | | "resolved": "https://registry.npmmirror.com/text-segmentation/-/text-segmentation-1.0.3.tgz", |
| | | "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", |
| | | "dependencies": { |
| | | "utrie": "^1.0.2" |
| | | } |
| | | }, |
| | | "node_modules/to-object-path": { |
| | | "version": "0.3.0", |
| | | "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", |
| | |
| | | }, |
| | | "engines": { |
| | | "node": ">=14.17" |
| | | } |
| | | }, |
| | | "node_modules/ua-parser-js": { |
| | | "version": "1.0.37", |
| | | "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", |
| | | "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", |
| | | "funding": [ |
| | | { |
| | | "type": "opencollective", |
| | | "url": "https://opencollective.com/ua-parser-js" |
| | | }, |
| | | { |
| | | "type": "paypal", |
| | | "url": "https://paypal.me/faisalman" |
| | | }, |
| | | { |
| | | "type": "github", |
| | | "url": "https://github.com/sponsors/faisalman" |
| | | } |
| | | ], |
| | | "engines": { |
| | | "node": "*" |
| | | } |
| | | }, |
| | | "node_modules/ufo": { |
| | |
| | | "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", |
| | | "dev": true |
| | | }, |
| | | "node_modules/utrie": { |
| | | "version": "1.0.2", |
| | | "resolved": "https://registry.npmmirror.com/utrie/-/utrie-1.0.2.tgz", |
| | | "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", |
| | | "dependencies": { |
| | | "base64-arraybuffer": "^1.0.2" |
| | | "node_modules/uuid": { |
| | | "version": "8.3.2", |
| | | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", |
| | | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", |
| | | "bin": { |
| | | "uuid": "dist/bin/uuid" |
| | | } |
| | | }, |
| | | "node_modules/vary": { |
| | |
| | | "vue": "^3.2.0" |
| | | } |
| | | }, |
| | | "node_modules/web-streams-polyfill": { |
| | | "version": "3.3.3", |
| | | "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", |
| | | "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", |
| | | "engines": { |
| | | "node": ">= 8" |
| | | } |
| | | }, |
| | | "node_modules/webpack-sources": { |
| | | "version": "3.2.3", |
| | | "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", |
| | |
| | | "axios": "0.27.2", |
| | | "echarts": "^5.5.1", |
| | | "element-plus": "^2.5.0", |
| | | "ezuikit-js": "^8.1.9-beta.3", |
| | | "file-saver": "2.0.5", |
| | | "fuse.js": "6.6.2", |
| | | "html2canvas": "^1.4.1", |
| | | "js-cookie": "3.0.5", |
| | | "jsencrypt": "3.3.2", |
| | | "moment": "^2.30.1", |
| | |
| | | method: 'post', |
| | | data |
| | | }) |
| | | } |
| | | |
| | | /** |
| | | * 获取流量监测数据 |
| | | */ |
| | | export const getFlowVideoData = (params) => { |
| | | return publicRequest({ |
| | | url: '/waterFlow/getVideo', |
| | | method: 'get', |
| | | params |
| | | }) |
| | | } |
| | |
| | | { |
| | | path: '/', |
| | | hidden: true, |
| | | redirect: '/screen' |
| | | redirect: '/flow' |
| | | }, |
| | | { |
| | | path: '/login', |
| | |
| | | component: () => import('@/views/screen/flow/ecology/index.vue') |
| | | }, |
| | | { |
| | | path: 'graphic', |
| | | path: 'graphic/:id?', |
| | | component: () => import('@/views/screen/flow/graphic/index.vue') |
| | | }, |
| | | { |
| | |
| | | <div class="content"> |
| | | <router-view></router-view> |
| | | <div class="warningBox" v-if="openWarn"> |
| | | <img src="@/assets/images/flow/warn-icon.png"> |
| | | <img src="@/assets/images/flow/warn-icon.png" alt=""> |
| | | <div class="text">{{text}}</div> |
| | | </div> |
| | | </div> |
| | |
| | | localStorage.setItem('id', JSON.stringify(res.data.id)) |
| | | localStorage.setItem('userType', JSON.stringify(res.data.userType)) |
| | | |
| | | router.push("/screen"); |
| | | router.push("/flow"); |
| | | }).catch(error => { |
| | | loading.value = false; |
| | | proxy.$modal.msgError('登录失败!') |
| | |
| | | <script setup> |
| | | import {onMounted, ref} from "vue"; |
| | | import {onMounted, ref, onUnmounted} from "vue"; |
| | | import {getUserType} from '@/utils/auth.js' |
| | | import html2canvas from "html2canvas"; |
| | | import {getFlowPointList} from '@/api/screen/index' |
| | | import {getFlowVideoData} from '@/api/screen/graphic/index.js' |
| | | import EZUIKit from 'ezuikit-js'; |
| | | import {useRoute} from "vue-router"; |
| | | |
| | | const route = useRoute(); |
| | | |
| | | const menuList = ref([]) |
| | | const userType = ref(getUserType()) |
| | | const monitorRef = ref() |
| | | const searchVal = ref('') |
| | | const video = ref() |
| | | const playerData = ref([]) |
| | | const hasFullScreen = ref(false) |
| | | let ezKitList = []; //视频组件实例数组 |
| | | let ezKitId = []; //视频盒子id数组 |
| | | let timer = null; |
| | | |
| | | // 全屏操作 |
| | | const handleFullScreen = () => { |
| | | monitorRef.value.requestFullscreen() |
| | | const dom = document.getElementById(ezKitId[0]) |
| | | dom.requestFullscreen() |
| | | } |
| | | |
| | | // 监听全屏状态,是否要开起蒙层 |
| | | document.addEventListener('fullscreenchange', (val) => { |
| | | if (!document.fullscreenElement) { //退出全屏 |
| | | hasFullScreen.value = false; |
| | | } else { //开起全屏 |
| | | hasFullScreen.value = true; |
| | | } |
| | | }); |
| | | |
| | | // 抓拍 |
| | | const handleSnap = () => { |
| | | if(video.value) { |
| | | html2canvas(video.value).then(canvas => { |
| | | const link = document.createElement("a"); |
| | | link.href = canvas.toDataURL("image/png"); |
| | | link.download = '截图.png'; |
| | | link.click() |
| | | }) |
| | | } |
| | | const handleSnap = (index) => { |
| | | ezKitList[index].capturePicture(`capture-${new Date().getTime()}`, 0.8); // 参数:回调函数,图片格式,质量(0-1) |
| | | } |
| | | |
| | | const handleSearch = async () => { |
| | | } |
| | | |
| | | |
| | | // 获取监控点 |
| | | // 获取监控点菜单 |
| | | const getMoitorList = () => { |
| | | getFlowPointList().then(res => { |
| | | menuList.value = res.data |
| | | }) |
| | | } |
| | | |
| | | // 选择菜单 |
| | | const handleSelect = (id) => { |
| | | ezKitList = [] |
| | | ezKitId = [] |
| | | playerData.value = [] |
| | | clearInterval(timer) |
| | | getPlayerList(id) |
| | | } |
| | | |
| | | // 搜索 |
| | | const handleSearch = () => { |
| | | ezKitList = [] |
| | | ezKitId = [] |
| | | playerData.value = [] |
| | | clearInterval(timer) |
| | | getPlayerList() |
| | | } |
| | | |
| | | // 获取监控点 |
| | | const getPlayerList = async (id) => { |
| | | getFlowVideoData({pointId: id, pointName: searchVal.value}).then(async res => { |
| | | res.data.forEach((item, index) => { |
| | | ezKitId[index] = `ezuikitPlayer${index}` |
| | | }) |
| | | playerData.value = res.data |
| | | await nextTick() |
| | | |
| | | // 渲染视频 |
| | | res.data.forEach((item, index) => { |
| | | ezKitList[index] = new EZUIKit.EZUIKitPlayer({ |
| | | id: ezKitId[index], |
| | | url: item.url, |
| | | accessToken: item.accessToken, |
| | | }) |
| | | }) |
| | | }) |
| | | |
| | | // 挂载定时器, 只获取数据,不重新渲染视频节点 |
| | | timer = setInterval(() => { |
| | | getFlowVideoData({pointId: id, pointName: searchVal.value}).then(res => { |
| | | playerData.value = res.data |
| | | }) |
| | | }, 10000) |
| | | } |
| | | |
| | | |
| | | onMounted(() => { |
| | | getMoitorList() |
| | | getPlayerList(route.params.id || '') |
| | | }) |
| | | |
| | | onUnmounted(() => { |
| | | if (timer) { |
| | | clearInterval(timer) |
| | | } |
| | | }) |
| | | </script> |
| | | |
| | | <template> |
| | | <div class="graphic"> |
| | | <div class="graphic-menu"> |
| | | <div class="menu-t">监控点列表</div> |
| | | <el-menu class="el-menu"> |
| | | <el-menu class="el-menu" @select="handleSelect"> |
| | | <template v-for="(item, index) in menuList" :key="index+1"> |
| | | <template v-if="item?.childrenList?.length === 0"> |
| | | <el-menu-item :index="item.id">{{ item.pointName }}</el-menu-item> |
| | |
| | | <div class="graphic-monitor"> |
| | | <div class="monitor-tool"> |
| | | <div class="tool-l"> |
| | | <el-input v-model="searchVal" style="width: 20rem" placeholder="请输入监测点名称" /> |
| | | <el-button @click="handleSearch"><el-icon><Search /></el-icon>搜索</el-button> |
| | | <el-button style="margin-left: 0" v-if="userType === '1'"><el-icon><Plus /></el-icon>新增</el-button> |
| | | <el-input v-model="searchVal" style="width: 20rem" placeholder="请输入监测点名称" clearable/> |
| | | <el-button @click="handleSearch"> |
| | | <el-icon> |
| | | <Search/> |
| | | </el-icon> |
| | | 搜索 |
| | | </el-button> |
| | | <el-button style="margin-left: 0" v-if="userType === '1'"> |
| | | <el-icon> |
| | | <Plus/> |
| | | </el-icon> |
| | | 新增 |
| | | </el-button> |
| | | </div> |
| | | <div class="tool-r" @click="handleFullScreen"> |
| | | <img src="@/assets/images/flow/fullscreen.png" /> |
| | | <img src="@/assets/images/flow/fullscreen.png"/> |
| | | 全屏 |
| | | </div> |
| | | </div> |
| | | <div class="monitor-box" ref="monitorRef"> |
| | | <div class="monitor-box"> |
| | | <div class="monitor-list"> |
| | | <div class="item"> |
| | | <div class="title">新扎口流量监测点</div> |
| | | <div class="videoBox" ref="video"></div> |
| | | <div class="item" v-for="(item, index) in playerData" :key="index"> |
| | | <div class="title">{{ item.pointName }}</div> |
| | | <div class="videoBox" :id="ezKitId[index]"></div> |
| | | <div class="info"> |
| | | <div class="info-list"> |
| | | <div class="info-item"> |
| | | <div class="name">水位:</div> |
| | | <div class="val"><span>2332</span>m</div> |
| | | <div class="val"><span>{{ item.waterLevel }}</span>m</div> |
| | | </div> |
| | | <div class="info-item"> |
| | | <div class="name">表面流速:</div> |
| | | <div class="val"><span>4.5</span>m/s</div> |
| | | <div class="name">流速:</div> |
| | | <div class="val"><span>{{ item.flowVelocity }}</span>m/s</div> |
| | | </div> |
| | | <div class="info-item"> |
| | | <div class="name">水面宽度:</div> |
| | | <div class="val"><span>100</span>m</div> |
| | | <div class="name">瞬时流量:</div> |
| | | <div class="val"><span>{{ item.newFlow }}</span>m³/h</div> |
| | | </div> |
| | | <div class="info-item"> |
| | | <div class="name">平均流速:</div> |
| | | <div class="val"><span>4.5</span>m/s</div> |
| | | </div> |
| | | <div class="info-item"> |
| | | <div class="name">过水面积:</div> |
| | | <div class="val"><span>30</span>㎡</div> |
| | | </div> |
| | | <div class="info-item"> |
| | | <div class="name">雷达流速:</div> |
| | | <div class="val"><span>4.5</span>m/s</div> |
| | | </div> |
| | | <div class="info-item"> |
| | | <div class="name">实时流速:</div> |
| | | <div class="val"><span>120</span>㎡/s</div> |
| | | </div> |
| | | <div class="info-item"> |
| | | <div class="name">起点距:</div> |
| | | <div class="val"><span>500</span>m</div> |
| | | <div class="name">累计流量:</div> |
| | | <div class="val"><span>{{ item.totalFlow }}</span>m³</div> |
| | | </div> |
| | | </div> |
| | | <div class="info-btn"> |
| | | <el-button style="width: 6rem" @click="handleSnap">抓拍</el-button> |
| | | <el-button style="width: 6rem" @click="handleSnap(index)">抓拍</el-button> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div class="mask" v-show="hasFullScreen"> |
| | | <div class="mask-item"></div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | |
| | | <style scoped lang="scss"> |
| | | .graphic{ |
| | | .graphic { |
| | | height: 100%; |
| | | display: flex; |
| | | &-menu{ |
| | | |
| | | &-menu { |
| | | flex-shrink: 0; |
| | | width: 20%; |
| | | height: 100%; |
| | | padding: 10px 0; |
| | | background: linear-gradient( 135deg, #91BDDB 0%, #9EC2DB 99%); |
| | | background: linear-gradient(135deg, #91BDDB 0%, #9EC2DB 99%); |
| | | overflow-y: scroll; |
| | | |
| | | &::-webkit-scrollbar { |
| | | display: none; |
| | | } |
| | | .menu-t{ |
| | | |
| | | .menu-t { |
| | | height: 40px; |
| | | line-height: 40px; |
| | | padding-left: 20px; |
| | |
| | | background: url("@/assets/images/flow/monitor-title-bg.png") no-repeat; |
| | | background-size: 100% 100%; |
| | | } |
| | | .el-menu{ |
| | | |
| | | .el-menu { |
| | | background-color: transparent; |
| | | border-right: none; |
| | | :deep(.el-menu){ |
| | | |
| | | :deep(.el-menu) { |
| | | background-color: transparent; |
| | | } |
| | | |
| | | :deep(.el-sub-menu__title:hover) { |
| | | background-color: rgba(0, 0, 0, 0.06); |
| | | } |
| | | |
| | | :deep(.el-menu-item.is-active) { |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | &-monitor{ |
| | | |
| | | &-monitor { |
| | | flex-shrink: 0; |
| | | width: 80%; |
| | | height: 100%; |
| | | .monitor-tool{ |
| | | |
| | | .monitor-tool { |
| | | width: 100%; |
| | | height: 60px; |
| | | padding: 0 30px; |
| | | background: linear-gradient( 90deg, #91BDDB 0%, #DADFE3 100%); |
| | | background: linear-gradient(90deg, #91BDDB 0%, #DADFE3 100%); |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | .tool-l{ |
| | | |
| | | .tool-l { |
| | | display: flex; |
| | | align-items: center; |
| | | gap: 1rem; |
| | | .name{ |
| | | |
| | | .name { |
| | | font-size: 1.1rem; |
| | | } |
| | | } |
| | | .tool-r{ |
| | | |
| | | .tool-r { |
| | | display: flex; |
| | | align-items: center; |
| | | img{ |
| | | |
| | | img { |
| | | width: 25px; |
| | | margin-right: 10px; |
| | | } |
| | | } |
| | | } |
| | | .monitor-box{ |
| | | |
| | | .monitor-box { |
| | | height: calc(100% - 60px); |
| | | background: linear-gradient(180deg, #91BDDB 0%, rgba(102, 102, 102, 0.5) 100%); |
| | | .monitor-list{ |
| | | |
| | | .monitor-list { |
| | | height: 100%; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | | padding: 0 30px; |
| | | .item{ |
| | | |
| | | .item { |
| | | width: 48%; |
| | | height: 96%; |
| | | background: rgba(23,108,229,0.3); |
| | | background: rgba(23, 108, 229, 0.3); |
| | | border: 1px solid #176CE5; |
| | | padding: 20px; |
| | | border-radius: 8px; |
| | | .title{ |
| | | |
| | | .title { |
| | | height: 12%; |
| | | text-align: center; |
| | | font-size: 42px; |
| | | color: #fff; |
| | | } |
| | | .videoBox{ |
| | | |
| | | .videoBox { |
| | | width: 100%; |
| | | height: 60%; |
| | | background-color: #000; |
| | | } |
| | | .info{ |
| | | |
| | | .info { |
| | | width: 100%; |
| | | height: 25%; |
| | | display: flex; |
| | | margin-top: 20px; |
| | | .info-list{ |
| | | |
| | | .info-list { |
| | | width: 80%; |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | color: #fff; |
| | | font-size: 20px; |
| | | .info-item{ |
| | | |
| | | .info-item { |
| | | width: 50%; |
| | | padding: 8px 0; |
| | | flex-shrink: 0; |
| | | display: flex; |
| | | align-items: center; |
| | | .name{ |
| | | |
| | | .name { |
| | | width: 100px; |
| | | } |
| | | .val span{ |
| | | |
| | | .val span { |
| | | display: inline-block; |
| | | padding: 0 20px; |
| | | } |
| | | } |
| | | } |
| | | .info-btn{ |
| | | |
| | | .info-btn { |
| | | width: 20%; |
| | | padding: 1rem 0; |
| | | display: flex; |
| | | align-items: flex-end; |
| | | :deep(.el-button){ |
| | | |
| | | :deep(.el-button) { |
| | | color: #fff; |
| | | background: rgba(94,229,92,0.6); |
| | | background: rgba(94, 229, 92, 0.6); |
| | | border-radius: 4px 4px 4px 4px; |
| | | border: 1px solid rgba(94,229,92,0.6); |
| | | border: 1px solid rgba(94, 229, 92, 0.6); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | .mask{ |
| | | position: absolute; |
| | | left: 0; |
| | | top: 0; |
| | | z-index: 100; |
| | | width: 100vw; |
| | | height: 100vh; |
| | | .mask-item{ |
| | | position: absolute; |
| | | left: 5%; |
| | | bottom: 10%; |
| | | height: 400px; |
| | | width: 300px; |
| | | background-color: rgba(0, 0, 0, 0.4); |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <div class="point-address" @click="handleShow(index)"></div> |
| | | <div class="point-message" v-show="item.showMsg"> |
| | | <div class="msg-box"> |
| | | <div class="video-box" :style="{backgroundImage: `url(${item.imageRul})`}"> |
| | | <div class="video-box" :style="{backgroundImage: `url(${item.imageRul})`}" @click="jumpMonitor(item.id)"> |
| | | <el-icon><VideoPlay /></el-icon> |
| | | </div> |
| | | <div class="info-box"> |
| | |
| | | <script setup> |
| | | import {ref, onMounted} from "vue"; |
| | | import {getHomePonit} from '@/api/screen/home/index.js' |
| | | import {useRouter} from "vue-router"; |
| | | const router = useRouter(); |
| | | |
| | | // 标点配置 |
| | | const config = [ |
| | |
| | | }) |
| | | } |
| | | |
| | | // 跳转监控点 |
| | | const jumpMonitor = (id) => { |
| | | router.push({ path: `/flow/graphic/${id}` }) |
| | | } |
| | | |
| | | const handleShow = (index) => { |
| | | pointList.value[index].showMsg = !pointList.value[index].showMsg; |
| | | } |
| | |
| | | <div class="item-btn"> |
| | | <el-button size="large" type="success" @click="setMonitorData(item)">应用</el-button> |
| | | </div> |
| | | <!-- <div class="item-error">--> |
| | | <!-- <img src="@/assets/images/warning.png" />--> |
| | | <!-- </div>--> |
| | | <div class="item-error" v-if="Number(item.waterTemperature) < Number(item.lowWaterLevel) || Number(item.waterTemperature) > Number(item.tallWaterLevel)"> |
| | | <img src="@/assets/images/warning.png" alt="" /> |
| | | <div v-if="Number(item.waterTemperature) < Number(item.lowWaterLevel)">水温达到下限值</div> |
| | | <div v-else-if="Number(item.waterTemperature) > Number(item.tallWaterLevel)">水温达到上限值</div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | |
| | | width: 100%; |
| | | height: 100%; |
| | | background: rgba(0, 0, 0, 0.3); |
| | | display: flex; |
| | | flex-direction: column; |
| | | align-items: center; |
| | | justify-content: center; |
| | | |
| | | img { |
| | | width: 70%; |
| | | } |
| | | div{ |
| | | width: 100%; |
| | | text-align: center; |
| | | font-size: 3rem; |
| | | color: #f65252; |
| | | } |
| | | } |
| | | |