From 9f4609f4822222632ab2fcf85d58b0b4b8459160 Mon Sep 17 00:00:00 2001 From: web <candymxq888@outlook.com> Date: 星期一, 26 五月 2025 17:30:33 +0800 Subject: [PATCH] fix:修改播放⑦ --- /dev/null | 118 ------------- package-lock.json | 281 ++++-------------------------- src/components/VideoPlayer/VideoPlayer.vue | 18 + package.json | 2 src/views/screen/flow/graphic/index.vue | 83 ++------ 5 files changed, 81 insertions(+), 421 deletions(-) diff --git a/package-lock.json b/package-lock.json index afe1a1c..5f2d21b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,9 +15,9 @@ "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", @@ -445,67 +445,6 @@ "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", @@ -532,11 +471,6 @@ "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", @@ -1079,11 +1013,6 @@ } } }, - "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", @@ -1295,19 +1224,19 @@ "node": ">=0.10.0" } }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/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": "*" } @@ -1589,6 +1518,14 @@ "node": ">= 0.10" } }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/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", @@ -1767,11 +1704,6 @@ "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", @@ -1815,14 +1747,6 @@ }, "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": { @@ -1876,11 +1800,6 @@ "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", @@ -2365,28 +2284,6 @@ "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", @@ -2415,28 +2312,6 @@ "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": { @@ -2504,17 +2379,6 @@ }, "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": { @@ -2857,6 +2721,18 @@ "he": "bin/he" } }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/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", @@ -2869,16 +2745,6 @@ "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": { @@ -3284,11 +3150,6 @@ "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", @@ -3414,11 +3275,6 @@ "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", @@ -3673,24 +3529,6 @@ "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": { @@ -4488,17 +4326,6 @@ "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", @@ -5149,6 +4976,14 @@ "node": ">=10.13.0" } }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/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", @@ -5372,28 +5207,6 @@ }, "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": { @@ -5628,12 +5441,12 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "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/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "dependencies": { + "base64-arraybuffer": "^1.0.2" } }, "node_modules/vary": { @@ -5776,14 +5589,6 @@ }, "peerDependencies": { "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": { diff --git a/package.json b/package.json index 4e1884a..b323d65 100644 --- a/package.json +++ b/package.json @@ -22,9 +22,9 @@ "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", diff --git a/src/components/VideoPlayer/VideoPlayer.vue b/src/components/VideoPlayer/VideoPlayer.vue index ee5f2a8..084aca4 100644 --- a/src/components/VideoPlayer/VideoPlayer.vue +++ b/src/components/VideoPlayer/VideoPlayer.vue @@ -62,7 +62,7 @@ } const handleEnter = () => { - if(!showPlay.value && !showLoading.value) { + if(props.item.deviceId && props.item.channelId && !showPlay.value && !showLoading.value) { showPause.value = true; } } @@ -92,10 +92,17 @@ audio: true, recorder: false, }, - controlAutoHide: true, - forceNoOffscreen: true, + controlAutoHide: false, + forceNoOffscreen: false, + hasAudio: false, + heartTimeout: 5, + heartTimeoutReplay:true, + heartTimeoutReplayTimes: 3, + hiddenAutoPause: false, isNotMute: false, - heartTimeoutReplay:false, + hotKey: true, + isFlv: false, + recordType: "mp4", }) ); } @@ -107,6 +114,9 @@ if(props.autoPlay && props.item.deviceId && props.item.channelId) { handlePlayer() } + if(!props.item.deviceId || !props.item.channelId) { + showPlay.value = false; + } }; onMounted(() => { diff --git a/src/views/screen/flow/graphic/components/FullScreenVideo.vue b/src/views/screen/flow/graphic/components/FullScreenVideo.vue deleted file mode 100644 index 3e28545..0000000 --- a/src/views/screen/flow/graphic/components/FullScreenVideo.vue +++ /dev/null @@ -1,118 +0,0 @@ -<script setup> -import EZUIKit from 'ezuikit-js'; - -const props = defineProps({ - data: { - type: Object, - default: {}, - } -}) - -const emit = defineEmits(['close']) - -let ezKitEl = '' -let ezKitId = 'ezid' - -const closeScreen = () => { - ezKitEl.stop(); //停止播放视频 - emit('close') -} - -onMounted(() => { - ezKitEl = new EZUIKit.EZUIKitPlayer({ - id: ezKitId, - url: props.data.url, - accessToken: props.data.accessToken, - }) -}) - -</script> - -<template> - <div class="modal"> - <div class="vb" :id="ezKitId"></div> - <div class="close" @click="closeScreen"><el-icon><CircleClose /></el-icon></div> - <div class="mask"> - <div class="list"> - <div class="item"> - <div class="name">水位:</div> - <div class="val"><span>{{props.data.waterLevel}}</span>m</div> - </div> - <div class="item"> - <div class="name">流速:</div> - <div class="val"><span>{{props.data.flowVelocity}}</span>m/s</div> - </div> - <div class="item"> - <div class="name">瞬时流量:</div> - <div class="val"><span>{{props.data.newFlow}}</span>m³/h</div> - </div> - <div class="item"> - <div class="name">累计流量:</div> - <div class="val"><span>{{props.data.totalFlow}}</span>m³</div> - </div> - <div class="item"> - <div class="name">水面宽度:</div> - <div class="val"><span>{{props.data.waterWidth}}</span>m</div> - </div> - <div class="item"> - <div class="name">过水面积:</div> - <div class="val"><span>{{props.data.waterArea}}</span>m³</div> - </div> - </div> - </div> - </div> -</template> - -<style scoped lang="scss"> -.modal{ - position: absolute; - left: 2%; - top: 2%; - width: 96%; - height: 96%; - z-index: 100; - .vb{ - position: absolute; - width: 100%; - height: 100%; - top: 0; - left: 0; - } - .close{ - position: absolute; - right: 1%; - top: 1%; - font-size: 2rem; - color: #fff; - } - .mask{ - position: absolute; - left: 5%; - bottom: 5%; - width: 15%; - background-color: rgba(0, 0, 0, 0.5); - color: #fff; - padding: 1rem; - border-radius: 1rem; - .item{ - display: flex; - align-items: center; - padding: 0.5rem 0; - .name{ - width: 6rem; - } - .val{ - display: flex; - align-items: center; - span{ - display: inline-block; - width: 6rem; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - } - } - } - } -} -</style> \ No newline at end of file diff --git a/src/views/screen/flow/graphic/index.vue b/src/views/screen/flow/graphic/index.vue index 621d13b..8fce991 100644 --- a/src/views/screen/flow/graphic/index.vue +++ b/src/views/screen/flow/graphic/index.vue @@ -1,11 +1,11 @@ <script setup> -import {onMounted, ref, onUnmounted} from "vue"; +import {onMounted, ref} from "vue"; import {getUserType} from '@/utils/auth.js' import {getFlowPointList} from '@/api/screen/index' import {getFlowVideoData} from '@/api/screen/graphic/index.js' -import EZUIKit from 'ezuikit-js'; import {useRoute, useRouter} from "vue-router"; -import FullScreenVideo from "./components/FullScreenVideo.vue"; +import VideoPlayer from "@/components/VideoPlayer/VideoPlayer.vue"; +import html2canvas from 'html2canvas'; const route = useRoute(); const router = useRouter(); @@ -14,26 +14,28 @@ const userType = ref(getUserType()) const searchVal = ref('') const playerData = ref([]) -const hasFullScreen = ref(false) -const fullIndex = ref() -let ezKitList = []; //视频组件实例数组 -let ezKitId = []; //视频盒子id数组 -let timer = null; // 全屏弹窗 const handleFullScreen = (index) => { - fullIndex.value = index; - hasFullScreen.value = true; -} - -// 关闭全屏弹窗 -const closeFullScreen = () => { - hasFullScreen.value = false; + const dom = document.getElementById(`player${index}`) + dom.requestFullscreen() } // 抓拍 -const handleSnap = (index) => { - ezKitList[index].capturePicture(`capture-${new Date().getTime()}`, 0.8); +const handleSnap = async (index) => { + const dom = document.getElementById(`player${index}`) + const canvas = await html2canvas(dom, { + backgroundColor: null, // 透明背景 + scale: 2, // 提高分辨率 + logging: false, // 关闭日志 + useCORS: true, // 允许跨域图片 + allowTaint: true, // 允许污染图片 + }); + const imgUrl = canvas.toDataURL('image/png'); + const adom = document.createElement("a"); + adom.download = `截图_${new Date().getTime()}.png` + adom.href = imgUrl; + adom.click() } // 获取监控点菜单 @@ -45,63 +47,27 @@ // 选择菜单 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) - } - // 停止播放 - ezKitList?.forEach(item => { - item.stop(); - }) }) </script> @@ -149,7 +115,9 @@ <div class="monitor-list"> <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="item-video" :id="`player${index}`"> + <VideoPlayer :item="item" :autoPlay="true" /> + </div> <div class="info"> <div class="info-list"> <div class="info-item"> @@ -197,11 +165,6 @@ </div> </div> </div> - <FullScreenVideo - v-if="hasFullScreen" - :data="playerData[fullIndex]" - @close="closeFullScreen" - /> </div> </template> @@ -301,7 +264,7 @@ color: #fff; } - .videoBox { + .item-video { width: 100%; height: 60%; background-color: #000; -- Gitblit v1.9.3