Commit df8309ffe0a988d4a84a4c117511af00e67d4f42

Authored by fengtao
1 parent 732fcbab

feat:新增视频管理,目前兼容m3u8和mp4

@@ -13,10 +13,10 @@ VITE_PUBLIC_PATH = / @@ -13,10 +13,10 @@ VITE_PUBLIC_PATH = /
13 # 线上演示环境 13 # 线上演示环境
14 # VITE_PROXY = [["/api","http://101.133.234.90:8080/api"]] 14 # VITE_PROXY = [["/api","http://101.133.234.90:8080/api"]]
15 # 线上测试环境 15 # 线上测试环境
16 -VITE_PROXY = [["/api","http://47.99.141.212:8080/api"]] 16 +VITE_PROXY = [["/api","https://dev.thingskit.com/api"]]
17 17
18 # 实时数据的ws地址 18 # 实时数据的ws地址
19 -VITE_WEB_SOCKET = ws://localhost:8080/api/ws/plugins/telemetry?token= 19 +VITE_WEB_SOCKET = wss://dev.thingskit.com/api/ws/plugins/telemetry?token=
20 20
21 # Delete console 21 # Delete console
22 VITE_DROP_CONSOLE = true 22 VITE_DROP_CONSOLE = true
@@ -34,11 +34,12 @@ @@ -34,11 +34,12 @@
34 "sortablejs": "^1.14.0", 34 "sortablejs": "^1.14.0",
35 "tinymce": "^5.8.2", 35 "tinymce": "^5.8.2",
36 "vditor": "^3.8.6", 36 "vditor": "^3.8.6",
37 - "vue": "3.2.2", 37 + "vue": "^3.2.31",
38 "vue-i18n": "9.1.7", 38 "vue-i18n": "9.1.7",
39 "vue-json-pretty": "^2.0.4", 39 "vue-json-pretty": "^2.0.4",
40 "vue-router": "^4.0.11", 40 "vue-router": "^4.0.11",
41 "vue-types": "^4.0.3", 41 "vue-types": "^4.0.3",
  42 + "vue3-video-play": "^1.3.1-beta.6",
42 "xlsx": "^0.17.0" 43 "xlsx": "^0.17.0"
43 }, 44 },
44 "devDependencies": { 45 "devDependencies": {
@@ -64,7 +65,7 @@ @@ -64,7 +65,7 @@
64 "@vitejs/plugin-legacy": "^1.5.1", 65 "@vitejs/plugin-legacy": "^1.5.1",
65 "@vitejs/plugin-vue": "^1.4.0", 66 "@vitejs/plugin-vue": "^1.4.0",
66 "@vitejs/plugin-vue-jsx": "^1.1.7", 67 "@vitejs/plugin-vue-jsx": "^1.1.7",
67 - "@vue/compiler-sfc": "3.2.2", 68 + "@vue/compiler-sfc": "^3.2.31",
68 "@vue/test-utils": "^2.0.0-rc.12", 69 "@vue/test-utils": "^2.0.0-rc.12",
69 "autoprefixer": "^10.3.1", 70 "autoprefixer": "^10.3.1",
70 "commitizen": "^4.2.4", 71 "commitizen": "^4.2.4",
@@ -501,6 +502,7 @@ @@ -501,6 +502,7 @@
501 }, 502 },
502 "node_modules/@babel/helper-validator-identifier": { 503 "node_modules/@babel/helper-validator-identifier": {
503 "version": "7.16.7", 504 "version": "7.16.7",
  505 + "dev": true,
504 "license": "MIT", 506 "license": "MIT",
505 "engines": { 507 "engines": {
506 "node": ">=6.9.0" 508 "node": ">=6.9.0"
@@ -1741,6 +1743,7 @@ @@ -1741,6 +1743,7 @@
1741 }, 1743 },
1742 "node_modules/@babel/types": { 1744 "node_modules/@babel/types": {
1743 "version": "7.16.8", 1745 "version": "7.16.8",
  1746 + "dev": true,
1744 "license": "MIT", 1747 "license": "MIT",
1745 "dependencies": { 1748 "dependencies": {
1746 "@babel/helper-validator-identifier": "^7.16.7", 1749 "@babel/helper-validator-identifier": "^7.16.7",
@@ -3671,68 +3674,49 @@ @@ -3671,68 +3674,49 @@
3671 } 3674 }
3672 }, 3675 },
3673 "node_modules/@vue/compiler-core": { 3676 "node_modules/@vue/compiler-core": {
3674 - "version": "3.2.2",  
3675 - "license": "MIT", 3677 + "version": "3.2.33",
  3678 + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.33.tgz",
  3679 + "integrity": "sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw==",
3676 "dependencies": { 3680 "dependencies": {
3677 - "@babel/parser": "^7.12.0",  
3678 - "@babel/types": "^7.12.0",  
3679 - "@vue/shared": "3.2.2",  
3680 - "estree-walker": "^2.0.1", 3681 + "@babel/parser": "^7.16.4",
  3682 + "@vue/shared": "3.2.33",
  3683 + "estree-walker": "^2.0.2",
3681 "source-map": "^0.6.1" 3684 "source-map": "^0.6.1"
3682 } 3685 }
3683 }, 3686 },
3684 "node_modules/@vue/compiler-dom": { 3687 "node_modules/@vue/compiler-dom": {
3685 - "version": "3.2.2",  
3686 - "license": "MIT", 3688 + "version": "3.2.33",
  3689 + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz",
  3690 + "integrity": "sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ==",
3687 "dependencies": { 3691 "dependencies": {
3688 - "@vue/compiler-core": "3.2.2",  
3689 - "@vue/shared": "3.2.2" 3692 + "@vue/compiler-core": "3.2.33",
  3693 + "@vue/shared": "3.2.33"
3690 } 3694 }
3691 }, 3695 },
3692 "node_modules/@vue/compiler-sfc": { 3696 "node_modules/@vue/compiler-sfc": {
3693 - "version": "3.2.2",  
3694 - "license": "MIT", 3697 + "version": "3.2.33",
  3698 + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz",
  3699 + "integrity": "sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q==",
3695 "dependencies": { 3700 "dependencies": {
3696 - "@babel/parser": "^7.13.9",  
3697 - "@babel/types": "^7.13.0",  
3698 - "@types/estree": "^0.0.48",  
3699 - "@vue/compiler-core": "3.2.2",  
3700 - "@vue/compiler-dom": "3.2.2",  
3701 - "@vue/compiler-ssr": "3.2.2",  
3702 - "@vue/shared": "3.2.2",  
3703 - "consolidate": "^0.16.0",  
3704 - "estree-walker": "^2.0.1",  
3705 - "hash-sum": "^2.0.0",  
3706 - "lru-cache": "^5.1.1", 3701 + "@babel/parser": "^7.16.4",
  3702 + "@vue/compiler-core": "3.2.33",
  3703 + "@vue/compiler-dom": "3.2.33",
  3704 + "@vue/compiler-ssr": "3.2.33",
  3705 + "@vue/reactivity-transform": "3.2.33",
  3706 + "@vue/shared": "3.2.33",
  3707 + "estree-walker": "^2.0.2",
3707 "magic-string": "^0.25.7", 3708 "magic-string": "^0.25.7",
3708 - "merge-source-map": "^1.1.0",  
3709 "postcss": "^8.1.10", 3709 "postcss": "^8.1.10",
3710 - "postcss-modules": "^4.0.0",  
3711 - "postcss-selector-parser": "^6.0.4",  
3712 "source-map": "^0.6.1" 3710 "source-map": "^0.6.1"
3713 } 3711 }
3714 }, 3712 },
3715 - "node_modules/@vue/compiler-sfc/node_modules/@types/estree": {  
3716 - "version": "0.0.48",  
3717 - "license": "MIT"  
3718 - },  
3719 - "node_modules/@vue/compiler-sfc/node_modules/lru-cache": {  
3720 - "version": "5.1.1",  
3721 - "license": "ISC",  
3722 - "dependencies": {  
3723 - "yallist": "^3.0.2"  
3724 - }  
3725 - },  
3726 - "node_modules/@vue/compiler-sfc/node_modules/yallist": {  
3727 - "version": "3.1.1",  
3728 - "license": "ISC"  
3729 - },  
3730 "node_modules/@vue/compiler-ssr": { 3713 "node_modules/@vue/compiler-ssr": {
3731 - "version": "3.2.2",  
3732 - "license": "MIT", 3714 + "version": "3.2.33",
  3715 + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz",
  3716 + "integrity": "sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ==",
3733 "dependencies": { 3717 "dependencies": {
3734 - "@vue/compiler-dom": "3.2.2",  
3735 - "@vue/shared": "3.2.2" 3718 + "@vue/compiler-dom": "3.2.33",
  3719 + "@vue/shared": "3.2.33"
3736 } 3720 }
3737 }, 3721 },
3738 "node_modules/@vue/devtools-api": { 3722 "node_modules/@vue/devtools-api": {
@@ -3740,45 +3724,60 @@ @@ -3740,45 +3724,60 @@
3740 "license": "MIT" 3724 "license": "MIT"
3741 }, 3725 },
3742 "node_modules/@vue/reactivity": { 3726 "node_modules/@vue/reactivity": {
3743 - "version": "3.2.26",  
3744 - "dev": true,  
3745 - "license": "MIT", 3727 + "version": "3.2.33",
  3728 + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.33.tgz",
  3729 + "integrity": "sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ==",
3746 "dependencies": { 3730 "dependencies": {
3747 - "@vue/shared": "3.2.26" 3731 + "@vue/shared": "3.2.33"
3748 } 3732 }
3749 }, 3733 },
3750 - "node_modules/@vue/reactivity/node_modules/@vue/shared": {  
3751 - "version": "3.2.26",  
3752 - "dev": true,  
3753 - "license": "MIT"  
3754 - },  
3755 - "node_modules/@vue/runtime-core": {  
3756 - "version": "3.2.2",  
3757 - "license": "MIT", 3734 + "node_modules/@vue/reactivity-transform": {
  3735 + "version": "3.2.33",
  3736 + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz",
  3737 + "integrity": "sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw==",
3758 "dependencies": { 3738 "dependencies": {
3759 - "@vue/reactivity": "3.2.2",  
3760 - "@vue/shared": "3.2.2" 3739 + "@babel/parser": "^7.16.4",
  3740 + "@vue/compiler-core": "3.2.33",
  3741 + "@vue/shared": "3.2.33",
  3742 + "estree-walker": "^2.0.2",
  3743 + "magic-string": "^0.25.7"
3761 } 3744 }
3762 }, 3745 },
3763 - "node_modules/@vue/runtime-core/node_modules/@vue/reactivity": {  
3764 - "version": "3.2.2",  
3765 - "license": "MIT", 3746 + "node_modules/@vue/runtime-core": {
  3747 + "version": "3.2.33",
  3748 + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.33.tgz",
  3749 + "integrity": "sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw==",
3766 "dependencies": { 3750 "dependencies": {
3767 - "@vue/shared": "3.2.2" 3751 + "@vue/reactivity": "3.2.33",
  3752 + "@vue/shared": "3.2.33"
3768 } 3753 }
3769 }, 3754 },
3770 "node_modules/@vue/runtime-dom": { 3755 "node_modules/@vue/runtime-dom": {
3771 - "version": "3.2.2",  
3772 - "license": "MIT", 3756 + "version": "3.2.33",
  3757 + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz",
  3758 + "integrity": "sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw==",
3773 "dependencies": { 3759 "dependencies": {
3774 - "@vue/runtime-core": "3.2.2",  
3775 - "@vue/shared": "3.2.2", 3760 + "@vue/runtime-core": "3.2.33",
  3761 + "@vue/shared": "3.2.33",
3776 "csstype": "^2.6.8" 3762 "csstype": "^2.6.8"
3777 } 3763 }
3778 }, 3764 },
  3765 + "node_modules/@vue/server-renderer": {
  3766 + "version": "3.2.33",
  3767 + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.33.tgz",
  3768 + "integrity": "sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew==",
  3769 + "dependencies": {
  3770 + "@vue/compiler-ssr": "3.2.33",
  3771 + "@vue/shared": "3.2.33"
  3772 + },
  3773 + "peerDependencies": {
  3774 + "vue": "3.2.33"
  3775 + }
  3776 + },
3779 "node_modules/@vue/shared": { 3777 "node_modules/@vue/shared": {
3780 - "version": "3.2.2",  
3781 - "license": "MIT" 3778 + "version": "3.2.33",
  3779 + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.33.tgz",
  3780 + "integrity": "sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg=="
3782 }, 3781 },
3783 "node_modules/@vue/test-utils": { 3782 "node_modules/@vue/test-utils": {
3784 "version": "2.0.0-rc.18", 3783 "version": "2.0.0-rc.18",
@@ -4898,6 +4897,7 @@ @@ -4898,6 +4897,7 @@
4898 }, 4897 },
4899 "node_modules/bluebird": { 4898 "node_modules/bluebird": {
4900 "version": "3.7.2", 4899 "version": "3.7.2",
  4900 + "dev": true,
4901 "license": "MIT" 4901 "license": "MIT"
4902 }, 4902 },
4903 "node_modules/boolbase": { 4903 "node_modules/boolbase": {
@@ -5928,16 +5928,6 @@ @@ -5928,16 +5928,6 @@
5928 "version": "0.1.1", 5928 "version": "0.1.1",
5929 "dev": true 5929 "dev": true
5930 }, 5930 },
5931 - "node_modules/consolidate": {  
5932 - "version": "0.16.0",  
5933 - "license": "MIT",  
5934 - "dependencies": {  
5935 - "bluebird": "^3.7.2"  
5936 - },  
5937 - "engines": {  
5938 - "node": ">= 0.10.0"  
5939 - }  
5940 - },  
5941 "node_modules/constant-case": { 5931 "node_modules/constant-case": {
5942 "version": "3.0.4", 5932 "version": "3.0.4",
5943 "dev": true, 5933 "dev": true,
@@ -6565,6 +6555,7 @@ @@ -6565,6 +6555,7 @@
6565 }, 6555 },
6566 "node_modules/cssesc": { 6556 "node_modules/cssesc": {
6567 "version": "3.0.0", 6557 "version": "3.0.0",
  6558 + "dev": true,
6568 "license": "MIT", 6559 "license": "MIT",
6569 "bin": { 6560 "bin": {
6570 "cssesc": "bin/cssesc" 6561 "cssesc": "bin/cssesc"
@@ -6606,8 +6597,9 @@ @@ -6606,8 +6597,9 @@
6606 "license": "MIT" 6597 "license": "MIT"
6607 }, 6598 },
6608 "node_modules/csstype": { 6599 "node_modules/csstype": {
6609 - "version": "2.6.19",  
6610 - "license": "MIT" 6600 + "version": "2.6.20",
  6601 + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
  6602 + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
6611 }, 6603 },
6612 "node_modules/currently-unhandled": { 6604 "node_modules/currently-unhandled": {
6613 "version": "0.4.1", 6605 "version": "0.4.1",
@@ -8807,20 +8799,6 @@ @@ -8807,20 +8799,6 @@
8807 "dev": true, 8799 "dev": true,
8808 "license": "MIT" 8800 "license": "MIT"
8809 }, 8801 },
8810 - "node_modules/generic-names": {  
8811 - "version": "4.0.0",  
8812 - "license": "MIT",  
8813 - "dependencies": {  
8814 - "loader-utils": "^3.2.0"  
8815 - }  
8816 - },  
8817 - "node_modules/generic-names/node_modules/loader-utils": {  
8818 - "version": "3.2.0",  
8819 - "license": "MIT",  
8820 - "engines": {  
8821 - "node": ">= 12.13.0"  
8822 - }  
8823 - },  
8824 "node_modules/gensync": { 8802 "node_modules/gensync": {
8825 "version": "1.0.0-beta.2", 8803 "version": "1.0.0-beta.2",
8826 "dev": true, 8804 "dev": true,
@@ -9315,6 +9293,7 @@ @@ -9315,6 +9293,7 @@
9315 }, 9293 },
9316 "node_modules/hash-sum": { 9294 "node_modules/hash-sum": {
9317 "version": "2.0.0", 9295 "version": "2.0.0",
  9296 + "dev": true,
9318 "license": "MIT" 9297 "license": "MIT"
9319 }, 9298 },
9320 "node_modules/he": { 9299 "node_modules/he": {
@@ -9334,6 +9313,11 @@ @@ -9334,6 +9313,11 @@
9334 "tslib": "^2.0.3" 9313 "tslib": "^2.0.3"
9335 } 9314 }
9336 }, 9315 },
  9316 + "node_modules/hls.js": {
  9317 + "version": "1.1.5",
  9318 + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.1.5.tgz",
  9319 + "integrity": "sha512-mQX5TSNtJEzGo5HPpvcQgCu+BWoKDQM6YYtg/KbgWkmVAcqOCvSTi0SuqG2ZJLXxIzdnFcKU2z7Mrw/YQWhPOA=="
  9320 + },
9337 "node_modules/homedir-polyfill": { 9321 "node_modules/homedir-polyfill": {
9338 "version": "1.0.3", 9322 "version": "1.0.3",
9339 "dev": true, 9323 "dev": true,
@@ -9580,20 +9564,6 @@ @@ -9580,20 +9564,6 @@
9580 "node": ">=0.10.0" 9564 "node": ">=0.10.0"
9581 } 9565 }
9582 }, 9566 },
9583 - "node_modules/icss-replace-symbols": {  
9584 - "version": "1.1.0",  
9585 - "license": "ISC"  
9586 - },  
9587 - "node_modules/icss-utils": {  
9588 - "version": "5.1.0",  
9589 - "license": "ISC",  
9590 - "engines": {  
9591 - "node": "^10 || ^12 || >= 14"  
9592 - },  
9593 - "peerDependencies": {  
9594 - "postcss": "^8.1.0"  
9595 - }  
9596 - },  
9597 "node_modules/idb": { 9567 "node_modules/idb": {
9598 "version": "6.1.5", 9568 "version": "6.1.5",
9599 "dev": true, 9569 "dev": true,
@@ -12147,10 +12117,6 @@ @@ -12147,10 +12117,6 @@
12147 "version": "4.17.21", 12117 "version": "4.17.21",
12148 "license": "MIT" 12118 "license": "MIT"
12149 }, 12119 },
12150 - "node_modules/lodash.camelcase": {  
12151 - "version": "4.3.0",  
12152 - "license": "MIT"  
12153 - },  
12154 "node_modules/lodash.debounce": { 12120 "node_modules/lodash.debounce": {
12155 "version": "4.0.8", 12121 "version": "4.0.8",
12156 "dev": true, 12122 "dev": true,
@@ -12707,13 +12673,6 @@ @@ -12707,13 +12673,6 @@
12707 "node": ">=4" 12673 "node": ">=4"
12708 } 12674 }
12709 }, 12675 },
12710 - "node_modules/merge-source-map": {  
12711 - "version": "1.1.0",  
12712 - "license": "MIT",  
12713 - "dependencies": {  
12714 - "source-map": "^0.6.1"  
12715 - }  
12716 - },  
12717 "node_modules/merge-stream": { 12676 "node_modules/merge-stream": {
12718 "version": "2.0.0", 12677 "version": "2.0.0",
12719 "dev": true, 12678 "dev": true,
@@ -14178,74 +14137,6 @@ @@ -14178,74 +14137,6 @@
14178 "dev": true, 14137 "dev": true,
14179 "license": "MIT" 14138 "license": "MIT"
14180 }, 14139 },
14181 - "node_modules/postcss-modules": {  
14182 - "version": "4.3.0",  
14183 - "license": "MIT",  
14184 - "dependencies": {  
14185 - "generic-names": "^4.0.0",  
14186 - "icss-replace-symbols": "^1.1.0",  
14187 - "lodash.camelcase": "^4.3.0",  
14188 - "postcss-modules-extract-imports": "^3.0.0",  
14189 - "postcss-modules-local-by-default": "^4.0.0",  
14190 - "postcss-modules-scope": "^3.0.0",  
14191 - "postcss-modules-values": "^4.0.0",  
14192 - "string-hash": "^1.1.1"  
14193 - },  
14194 - "peerDependencies": {  
14195 - "postcss": "^8.0.0"  
14196 - }  
14197 - },  
14198 - "node_modules/postcss-modules-extract-imports": {  
14199 - "version": "3.0.0",  
14200 - "license": "ISC",  
14201 - "engines": {  
14202 - "node": "^10 || ^12 || >= 14"  
14203 - },  
14204 - "peerDependencies": {  
14205 - "postcss": "^8.1.0"  
14206 - }  
14207 - },  
14208 - "node_modules/postcss-modules-local-by-default": {  
14209 - "version": "4.0.0",  
14210 - "license": "MIT",  
14211 - "dependencies": {  
14212 - "icss-utils": "^5.0.0",  
14213 - "postcss-selector-parser": "^6.0.2",  
14214 - "postcss-value-parser": "^4.1.0"  
14215 - },  
14216 - "engines": {  
14217 - "node": "^10 || ^12 || >= 14"  
14218 - },  
14219 - "peerDependencies": {  
14220 - "postcss": "^8.1.0"  
14221 - }  
14222 - },  
14223 - "node_modules/postcss-modules-scope": {  
14224 - "version": "3.0.0",  
14225 - "license": "ISC",  
14226 - "dependencies": {  
14227 - "postcss-selector-parser": "^6.0.4"  
14228 - },  
14229 - "engines": {  
14230 - "node": "^10 || ^12 || >= 14"  
14231 - },  
14232 - "peerDependencies": {  
14233 - "postcss": "^8.1.0"  
14234 - }  
14235 - },  
14236 - "node_modules/postcss-modules-values": {  
14237 - "version": "4.0.0",  
14238 - "license": "ISC",  
14239 - "dependencies": {  
14240 - "icss-utils": "^5.0.0"  
14241 - },  
14242 - "engines": {  
14243 - "node": "^10 || ^12 || >= 14"  
14244 - },  
14245 - "peerDependencies": {  
14246 - "postcss": "^8.1.0"  
14247 - }  
14248 - },  
14249 "node_modules/postcss-resolve-nested-selector": { 14140 "node_modules/postcss-resolve-nested-selector": {
14250 "version": "0.1.1", 14141 "version": "0.1.1",
14251 "dev": true, 14142 "dev": true,
@@ -14347,6 +14238,7 @@ @@ -14347,6 +14238,7 @@
14347 }, 14238 },
14348 "node_modules/postcss-selector-parser": { 14239 "node_modules/postcss-selector-parser": {
14349 "version": "6.0.8", 14240 "version": "6.0.8",
  14241 + "dev": true,
14350 "license": "MIT", 14242 "license": "MIT",
14351 "dependencies": { 14243 "dependencies": {
14352 "cssesc": "^3.0.0", 14244 "cssesc": "^3.0.0",
@@ -14391,6 +14283,7 @@ @@ -14391,6 +14283,7 @@
14391 }, 14283 },
14392 "node_modules/postcss-value-parser": { 14284 "node_modules/postcss-value-parser": {
14393 "version": "4.2.0", 14285 "version": "4.2.0",
  14286 + "dev": true,
14394 "license": "MIT" 14287 "license": "MIT"
14395 }, 14288 },
14396 "node_modules/posthtml": { 14289 "node_modules/posthtml": {
@@ -16263,10 +16156,6 @@ @@ -16263,10 +16156,6 @@
16263 "node": ">=0.6.19" 16156 "node": ">=0.6.19"
16264 } 16157 }
16265 }, 16158 },
16266 - "node_modules/string-hash": {  
16267 - "version": "1.1.3",  
16268 - "license": "CC0-1.0"  
16269 - },  
16270 "node_modules/string-length": { 16159 "node_modules/string-length": {
16271 "version": "4.0.2", 16160 "version": "4.0.2",
16272 "dev": true, 16161 "dev": true,
@@ -17280,6 +17169,14 @@ @@ -17280,6 +17169,14 @@
17280 "dev": true, 17169 "dev": true,
17281 "license": "MIT" 17170 "license": "MIT"
17282 }, 17171 },
  17172 + "node_modules/throttle-debounce": {
  17173 + "version": "3.0.1",
  17174 + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
  17175 + "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg==",
  17176 + "engines": {
  17177 + "node": ">=10"
  17178 + }
  17179 + },
17283 "node_modules/through": { 17180 "node_modules/through": {
17284 "version": "2.3.8", 17181 "version": "2.3.8",
17285 "dev": true, 17182 "dev": true,
@@ -17357,6 +17254,7 @@ @@ -17357,6 +17254,7 @@
17357 }, 17254 },
17358 "node_modules/to-fast-properties": { 17255 "node_modules/to-fast-properties": {
17359 "version": "2.0.0", 17256 "version": "2.0.0",
  17257 + "dev": true,
17360 "license": "MIT", 17258 "license": "MIT",
17361 "engines": { 17259 "engines": {
17362 "node": ">=4" 17260 "node": ">=4"
@@ -18030,6 +17928,7 @@ @@ -18030,6 +17928,7 @@
18030 }, 17928 },
18031 "node_modules/util-deprecate": { 17929 "node_modules/util-deprecate": {
18032 "version": "1.0.2", 17930 "version": "1.0.2",
  17931 + "dev": true,
18033 "license": "MIT" 17932 "license": "MIT"
18034 }, 17933 },
18035 "node_modules/utils-merge": { 17934 "node_modules/utils-merge": {
@@ -18655,38 +18554,16 @@ @@ -18655,38 +18554,16 @@
18655 "vscode-typescript-languageservice": "^0.27.25" 18554 "vscode-typescript-languageservice": "^0.27.25"
18656 } 18555 }
18657 }, 18556 },
18658 - "node_modules/vscode-vue-languageservice/node_modules/@vue/compiler-core": {  
18659 - "version": "3.2.26",  
18660 - "dev": true,  
18661 - "license": "MIT",  
18662 - "dependencies": {  
18663 - "@babel/parser": "^7.16.4",  
18664 - "@vue/shared": "3.2.26",  
18665 - "estree-walker": "^2.0.2",  
18666 - "source-map": "^0.6.1"  
18667 - }  
18668 - },  
18669 - "node_modules/vscode-vue-languageservice/node_modules/@vue/compiler-dom": {  
18670 - "version": "3.2.26",  
18671 - "dev": true,  
18672 - "license": "MIT",  
18673 - "dependencies": {  
18674 - "@vue/compiler-core": "3.2.26",  
18675 - "@vue/shared": "3.2.26"  
18676 - }  
18677 - },  
18678 - "node_modules/vscode-vue-languageservice/node_modules/@vue/shared": {  
18679 - "version": "3.2.26",  
18680 - "dev": true,  
18681 - "license": "MIT"  
18682 - },  
18683 "node_modules/vue": { 18557 "node_modules/vue": {
18684 - "version": "3.2.2",  
18685 - "license": "MIT", 18558 + "version": "3.2.33",
  18559 + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.33.tgz",
  18560 + "integrity": "sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ==",
18686 "dependencies": { 18561 "dependencies": {
18687 - "@vue/compiler-dom": "3.2.2",  
18688 - "@vue/runtime-dom": "3.2.2",  
18689 - "@vue/shared": "3.2.2" 18562 + "@vue/compiler-dom": "3.2.33",
  18563 + "@vue/compiler-sfc": "3.2.33",
  18564 + "@vue/runtime-dom": "3.2.33",
  18565 + "@vue/server-renderer": "3.2.33",
  18566 + "@vue/shared": "3.2.33"
18690 } 18567 }
18691 }, 18568 },
18692 "node_modules/vue-demi": { 18569 "node_modules/vue-demi": {
@@ -18820,6 +18697,16 @@ @@ -18820,6 +18697,16 @@
18820 "node": ">=0.10.0" 18697 "node": ">=0.10.0"
18821 } 18698 }
18822 }, 18699 },
  18700 + "node_modules/vue3-video-play": {
  18701 + "version": "1.3.1-beta.6",
  18702 + "resolved": "https://registry.npmjs.org/vue3-video-play/-/vue3-video-play-1.3.1-beta.6.tgz",
  18703 + "integrity": "sha512-Olrx2/LNAds7fuor/yX9ZKT9sOcwcfTt2g2YbbCrEaAmZ5Tb0hwBr5z+/CoLwELzzRzXCHPmWWoT0Wm5W/Nwpw==",
  18704 + "dependencies": {
  18705 + "hls.js": "^1.0.10",
  18706 + "throttle-debounce": "^3.0.1",
  18707 + "vue": "^3.2.2"
  18708 + }
  18709 + },
18823 "node_modules/w3c-hr-time": { 18710 "node_modules/w3c-hr-time": {
18824 "version": "1.0.2", 18711 "version": "1.0.2",
18825 "dev": true, 18712 "dev": true,
@@ -19703,7 +19590,8 @@ @@ -19703,7 +19590,8 @@
19703 } 19590 }
19704 }, 19591 },
19705 "@babel/helper-validator-identifier": { 19592 "@babel/helper-validator-identifier": {
19706 - "version": "7.16.7" 19593 + "version": "7.16.7",
  19594 + "dev": true
19707 }, 19595 },
19708 "@babel/helper-validator-option": { 19596 "@babel/helper-validator-option": {
19709 "version": "7.16.7", 19597 "version": "7.16.7",
@@ -20437,6 +20325,7 @@ @@ -20437,6 +20325,7 @@
20437 }, 20325 },
20438 "@babel/types": { 20326 "@babel/types": {
20439 "version": "7.16.8", 20327 "version": "7.16.8",
  20328 + "dev": true,
20440 "requires": { 20329 "requires": {
20441 "@babel/helper-validator-identifier": "^7.16.7", 20330 "@babel/helper-validator-identifier": "^7.16.7",
20442 "to-fast-properties": "^2.0.0" 20331 "to-fast-properties": "^2.0.0"
@@ -21828,106 +21717,106 @@ @@ -21828,106 +21717,106 @@
21828 } 21717 }
21829 }, 21718 },
21830 "@vue/compiler-core": { 21719 "@vue/compiler-core": {
21831 - "version": "3.2.2", 21720 + "version": "3.2.33",
  21721 + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.33.tgz",
  21722 + "integrity": "sha512-AAmr52ji3Zhk7IKIuigX2osWWsb2nQE5xsdFYjdnmtQ4gymmqXbjLvkSE174+fF3A3kstYrTgGkqgOEbsdLDpw==",
21832 "requires": { 21723 "requires": {
21833 - "@babel/parser": "^7.12.0",  
21834 - "@babel/types": "^7.12.0",  
21835 - "@vue/shared": "3.2.2",  
21836 - "estree-walker": "^2.0.1", 21724 + "@babel/parser": "^7.16.4",
  21725 + "@vue/shared": "3.2.33",
  21726 + "estree-walker": "^2.0.2",
21837 "source-map": "^0.6.1" 21727 "source-map": "^0.6.1"
21838 } 21728 }
21839 }, 21729 },
21840 "@vue/compiler-dom": { 21730 "@vue/compiler-dom": {
21841 - "version": "3.2.2", 21731 + "version": "3.2.33",
  21732 + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.33.tgz",
  21733 + "integrity": "sha512-GhiG1C8X98Xz9QUX/RlA6/kgPBWJkjq0Rq6//5XTAGSYrTMBgcLpP9+CnlUg1TFxnnCVughAG+KZl28XJqw8uQ==",
21842 "requires": { 21734 "requires": {
21843 - "@vue/compiler-core": "3.2.2",  
21844 - "@vue/shared": "3.2.2" 21735 + "@vue/compiler-core": "3.2.33",
  21736 + "@vue/shared": "3.2.33"
21845 } 21737 }
21846 }, 21738 },
21847 "@vue/compiler-sfc": { 21739 "@vue/compiler-sfc": {
21848 - "version": "3.2.2", 21740 + "version": "3.2.33",
  21741 + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.33.tgz",
  21742 + "integrity": "sha512-H8D0WqagCr295pQjUYyO8P3IejM3vEzeCO1apzByAEaAR/WimhMYczHfZVvlCE/9yBaEu/eu9RdiWr0kF8b71Q==",
21849 "requires": { 21743 "requires": {
21850 - "@babel/parser": "^7.13.9",  
21851 - "@babel/types": "^7.13.0",  
21852 - "@types/estree": "^0.0.48",  
21853 - "@vue/compiler-core": "3.2.2",  
21854 - "@vue/compiler-dom": "3.2.2",  
21855 - "@vue/compiler-ssr": "3.2.2",  
21856 - "@vue/shared": "3.2.2",  
21857 - "consolidate": "^0.16.0",  
21858 - "estree-walker": "^2.0.1",  
21859 - "hash-sum": "^2.0.0",  
21860 - "lru-cache": "^5.1.1", 21744 + "@babel/parser": "^7.16.4",
  21745 + "@vue/compiler-core": "3.2.33",
  21746 + "@vue/compiler-dom": "3.2.33",
  21747 + "@vue/compiler-ssr": "3.2.33",
  21748 + "@vue/reactivity-transform": "3.2.33",
  21749 + "@vue/shared": "3.2.33",
  21750 + "estree-walker": "^2.0.2",
21861 "magic-string": "^0.25.7", 21751 "magic-string": "^0.25.7",
21862 - "merge-source-map": "^1.1.0",  
21863 "postcss": "^8.1.10", 21752 "postcss": "^8.1.10",
21864 - "postcss-modules": "^4.0.0",  
21865 - "postcss-selector-parser": "^6.0.4",  
21866 "source-map": "^0.6.1" 21753 "source-map": "^0.6.1"
21867 - },  
21868 - "dependencies": {  
21869 - "@types/estree": {  
21870 - "version": "0.0.48"  
21871 - },  
21872 - "lru-cache": {  
21873 - "version": "5.1.1",  
21874 - "requires": {  
21875 - "yallist": "^3.0.2"  
21876 - }  
21877 - },  
21878 - "yallist": {  
21879 - "version": "3.1.1"  
21880 - }  
21881 } 21754 }
21882 }, 21755 },
21883 "@vue/compiler-ssr": { 21756 "@vue/compiler-ssr": {
21884 - "version": "3.2.2", 21757 + "version": "3.2.33",
  21758 + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.33.tgz",
  21759 + "integrity": "sha512-XQh1Xdk3VquDpXsnoCd7JnMoWec9CfAzQDQsaMcSU79OrrO2PNR0ErlIjm/mGq3GmBfkQjzZACV+7GhfRB8xMQ==",
21885 "requires": { 21760 "requires": {
21886 - "@vue/compiler-dom": "3.2.2",  
21887 - "@vue/shared": "3.2.2" 21761 + "@vue/compiler-dom": "3.2.33",
  21762 + "@vue/shared": "3.2.33"
21888 } 21763 }
21889 }, 21764 },
21890 "@vue/devtools-api": { 21765 "@vue/devtools-api": {
21891 "version": "6.0.0-beta.21.1" 21766 "version": "6.0.0-beta.21.1"
21892 }, 21767 },
21893 "@vue/reactivity": { 21768 "@vue/reactivity": {
21894 - "version": "3.2.26",  
21895 - "dev": true, 21769 + "version": "3.2.33",
  21770 + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.33.tgz",
  21771 + "integrity": "sha512-62Sq0mp9/0bLmDuxuLD5CIaMG2susFAGARLuZ/5jkU1FCf9EDbwUuF+BO8Ub3Rbodx0ziIecM/NsmyjardBxfQ==",
21896 "requires": { 21772 "requires": {
21897 - "@vue/shared": "3.2.26"  
21898 - },  
21899 - "dependencies": {  
21900 - "@vue/shared": {  
21901 - "version": "3.2.26",  
21902 - "dev": true  
21903 - } 21773 + "@vue/shared": "3.2.33"
  21774 + }
  21775 + },
  21776 + "@vue/reactivity-transform": {
  21777 + "version": "3.2.33",
  21778 + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.33.tgz",
  21779 + "integrity": "sha512-4UL5KOIvSQb254aqenW4q34qMXbfZcmEsV/yVidLUgvwYQQ/D21bGX3DlgPUGI3c4C+iOnNmDCkIxkILoX/Pyw==",
  21780 + "requires": {
  21781 + "@babel/parser": "^7.16.4",
  21782 + "@vue/compiler-core": "3.2.33",
  21783 + "@vue/shared": "3.2.33",
  21784 + "estree-walker": "^2.0.2",
  21785 + "magic-string": "^0.25.7"
21904 } 21786 }
21905 }, 21787 },
21906 "@vue/runtime-core": { 21788 "@vue/runtime-core": {
21907 - "version": "3.2.2", 21789 + "version": "3.2.33",
  21790 + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.33.tgz",
  21791 + "integrity": "sha512-N2D2vfaXsBPhzCV3JsXQa2NECjxP3eXgZlFqKh4tgakp3iX6LCGv76DLlc+IfFZq+TW10Y8QUfeihXOupJ1dGw==",
21908 "requires": { 21792 "requires": {
21909 - "@vue/reactivity": "3.2.2",  
21910 - "@vue/shared": "3.2.2"  
21911 - },  
21912 - "dependencies": {  
21913 - "@vue/reactivity": {  
21914 - "version": "3.2.2",  
21915 - "requires": {  
21916 - "@vue/shared": "3.2.2"  
21917 - }  
21918 - } 21793 + "@vue/reactivity": "3.2.33",
  21794 + "@vue/shared": "3.2.33"
21919 } 21795 }
21920 }, 21796 },
21921 "@vue/runtime-dom": { 21797 "@vue/runtime-dom": {
21922 - "version": "3.2.2", 21798 + "version": "3.2.33",
  21799 + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.33.tgz",
  21800 + "integrity": "sha512-LSrJ6W7CZTSUygX5s8aFkraDWlO6K4geOwA3quFF2O+hC3QuAMZt/0Xb7JKE3C4JD4pFwCSO7oCrZmZ0BIJUnw==",
21923 "requires": { 21801 "requires": {
21924 - "@vue/runtime-core": "3.2.2",  
21925 - "@vue/shared": "3.2.2", 21802 + "@vue/runtime-core": "3.2.33",
  21803 + "@vue/shared": "3.2.33",
21926 "csstype": "^2.6.8" 21804 "csstype": "^2.6.8"
21927 } 21805 }
21928 }, 21806 },
  21807 + "@vue/server-renderer": {
  21808 + "version": "3.2.33",
  21809 + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.33.tgz",
  21810 + "integrity": "sha512-4jpJHRD4ORv8PlbYi+/MfP8ec1okz6rybe36MdpkDrGIdEItHEUyaHSKvz+ptNEyQpALmmVfRteHkU9F8vxOew==",
  21811 + "requires": {
  21812 + "@vue/compiler-ssr": "3.2.33",
  21813 + "@vue/shared": "3.2.33"
  21814 + }
  21815 + },
21929 "@vue/shared": { 21816 "@vue/shared": {
21930 - "version": "3.2.2" 21817 + "version": "3.2.33",
  21818 + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.33.tgz",
  21819 + "integrity": "sha512-UBc1Pg1T3yZ97vsA2ueER0F6GbJebLHYlEi4ou1H5YL4KWvMOOWwpYo9/QpWq93wxKG6Wo13IY74Hcn/f7c7Bg=="
21931 }, 21820 },
21932 "@vue/test-utils": { 21821 "@vue/test-utils": {
21933 "version": "2.0.0-rc.18", 21822 "version": "2.0.0-rc.18",
@@ -22670,7 +22559,8 @@ @@ -22670,7 +22559,8 @@
22670 } 22559 }
22671 }, 22560 },
22672 "bluebird": { 22561 "bluebird": {
22673 - "version": "3.7.2" 22562 + "version": "3.7.2",
  22563 + "dev": true
22674 }, 22564 },
22675 "boolbase": { 22565 "boolbase": {
22676 "version": "1.0.0", 22566 "version": "1.0.0",
@@ -23358,12 +23248,6 @@ @@ -23358,12 +23248,6 @@
23358 "version": "0.1.1", 23248 "version": "0.1.1",
23359 "dev": true 23249 "dev": true
23360 }, 23250 },
23361 - "consolidate": {  
23362 - "version": "0.16.0",  
23363 - "requires": {  
23364 - "bluebird": "^3.7.2"  
23365 - }  
23366 - },  
23367 "constant-case": { 23251 "constant-case": {
23368 "version": "3.0.4", 23252 "version": "3.0.4",
23369 "dev": true, 23253 "dev": true,
@@ -23779,7 +23663,8 @@ @@ -23779,7 +23663,8 @@
23779 "dev": true 23663 "dev": true
23780 }, 23664 },
23781 "cssesc": { 23665 "cssesc": {
23782 - "version": "3.0.0" 23666 + "version": "3.0.0",
  23667 + "dev": true
23783 }, 23668 },
23784 "csso": { 23669 "csso": {
23785 "version": "4.2.0", 23670 "version": "4.2.0",
@@ -23806,7 +23691,9 @@ @@ -23806,7 +23691,9 @@
23806 } 23691 }
23807 }, 23692 },
23808 "csstype": { 23693 "csstype": {
23809 - "version": "2.6.19" 23694 + "version": "2.6.20",
  23695 + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.20.tgz",
  23696 + "integrity": "sha512-/WwNkdXfckNgw6S5R125rrW8ez139lBHWouiBvX8dfMFtcn6V81REDqnH7+CRpRipfYlyU1CmOnOxrmGcFOjeA=="
23810 }, 23697 },
23811 "currently-unhandled": { 23698 "currently-unhandled": {
23812 "version": "0.4.1", 23699 "version": "0.4.1",
@@ -25243,17 +25130,6 @@ @@ -25243,17 +25130,6 @@
25243 "version": "1.0.1", 25130 "version": "1.0.1",
25244 "dev": true 25131 "dev": true
25245 }, 25132 },
25246 - "generic-names": {  
25247 - "version": "4.0.0",  
25248 - "requires": {  
25249 - "loader-utils": "^3.2.0"  
25250 - },  
25251 - "dependencies": {  
25252 - "loader-utils": {  
25253 - "version": "3.2.0"  
25254 - }  
25255 - }  
25256 - },  
25257 "gensync": { 25133 "gensync": {
25258 "version": "1.0.0-beta.2", 25134 "version": "1.0.0-beta.2",
25259 "dev": true 25135 "dev": true
@@ -25559,7 +25435,8 @@ @@ -25559,7 +25435,8 @@
25559 } 25435 }
25560 }, 25436 },
25561 "hash-sum": { 25437 "hash-sum": {
25562 - "version": "2.0.0" 25438 + "version": "2.0.0",
  25439 + "dev": true
25563 }, 25440 },
25564 "he": { 25441 "he": {
25565 "version": "1.2.0", 25442 "version": "1.2.0",
@@ -25573,6 +25450,11 @@ @@ -25573,6 +25450,11 @@
25573 "tslib": "^2.0.3" 25450 "tslib": "^2.0.3"
25574 } 25451 }
25575 }, 25452 },
  25453 + "hls.js": {
  25454 + "version": "1.1.5",
  25455 + "resolved": "https://registry.npmjs.org/hls.js/-/hls.js-1.1.5.tgz",
  25456 + "integrity": "sha512-mQX5TSNtJEzGo5HPpvcQgCu+BWoKDQM6YYtg/KbgWkmVAcqOCvSTi0SuqG2ZJLXxIzdnFcKU2z7Mrw/YQWhPOA=="
  25457 + },
25576 "homedir-polyfill": { 25458 "homedir-polyfill": {
25577 "version": "1.0.3", 25459 "version": "1.0.3",
25578 "dev": true, 25460 "dev": true,
@@ -25744,13 +25626,6 @@ @@ -25744,13 +25626,6 @@
25744 "safer-buffer": ">= 2.1.2 < 3" 25626 "safer-buffer": ">= 2.1.2 < 3"
25745 } 25627 }
25746 }, 25628 },
25747 - "icss-replace-symbols": {  
25748 - "version": "1.1.0"  
25749 - },  
25750 - "icss-utils": {  
25751 - "version": "5.1.0",  
25752 - "requires": {}  
25753 - },  
25754 "idb": { 25629 "idb": {
25755 "version": "6.1.5", 25630 "version": "6.1.5",
25756 "dev": true 25631 "dev": true
@@ -27449,9 +27324,6 @@ @@ -27449,9 +27324,6 @@
27449 "lodash-es": { 27324 "lodash-es": {
27450 "version": "4.17.21" 27325 "version": "4.17.21"
27451 }, 27326 },
27452 - "lodash.camelcase": {  
27453 - "version": "4.3.0"  
27454 - },  
27455 "lodash.debounce": { 27327 "lodash.debounce": {
27456 "version": "4.0.8", 27328 "version": "4.0.8",
27457 "dev": true 27329 "dev": true
@@ -27818,12 +27690,6 @@ @@ -27818,12 +27690,6 @@
27818 "is-plain-obj": "^1.1" 27690 "is-plain-obj": "^1.1"
27819 } 27691 }
27820 }, 27692 },
27821 - "merge-source-map": {  
27822 - "version": "1.1.0",  
27823 - "requires": {  
27824 - "source-map": "^0.6.1"  
27825 - }  
27826 - },  
27827 "merge-stream": { 27693 "merge-stream": {
27828 "version": "2.0.0", 27694 "version": "2.0.0",
27829 "dev": true 27695 "dev": true
@@ -28738,43 +28604,6 @@ @@ -28738,43 +28604,6 @@
28738 "version": "0.2.3", 28604 "version": "0.2.3",
28739 "dev": true 28605 "dev": true
28740 }, 28606 },
28741 - "postcss-modules": {  
28742 - "version": "4.3.0",  
28743 - "requires": {  
28744 - "generic-names": "^4.0.0",  
28745 - "icss-replace-symbols": "^1.1.0",  
28746 - "lodash.camelcase": "^4.3.0",  
28747 - "postcss-modules-extract-imports": "^3.0.0",  
28748 - "postcss-modules-local-by-default": "^4.0.0",  
28749 - "postcss-modules-scope": "^3.0.0",  
28750 - "postcss-modules-values": "^4.0.0",  
28751 - "string-hash": "^1.1.1"  
28752 - }  
28753 - },  
28754 - "postcss-modules-extract-imports": {  
28755 - "version": "3.0.0",  
28756 - "requires": {}  
28757 - },  
28758 - "postcss-modules-local-by-default": {  
28759 - "version": "4.0.0",  
28760 - "requires": {  
28761 - "icss-utils": "^5.0.0",  
28762 - "postcss-selector-parser": "^6.0.2",  
28763 - "postcss-value-parser": "^4.1.0"  
28764 - }  
28765 - },  
28766 - "postcss-modules-scope": {  
28767 - "version": "3.0.0",  
28768 - "requires": {  
28769 - "postcss-selector-parser": "^6.0.4"  
28770 - }  
28771 - },  
28772 - "postcss-modules-values": {  
28773 - "version": "4.0.0",  
28774 - "requires": {  
28775 - "icss-utils": "^5.0.0"  
28776 - }  
28777 - },  
28778 "postcss-resolve-nested-selector": { 28607 "postcss-resolve-nested-selector": {
28779 "version": "0.1.1", 28608 "version": "0.1.1",
28780 "dev": true 28609 "dev": true
@@ -28845,6 +28674,7 @@ @@ -28845,6 +28674,7 @@
28845 }, 28674 },
28846 "postcss-selector-parser": { 28675 "postcss-selector-parser": {
28847 "version": "6.0.8", 28676 "version": "6.0.8",
  28677 + "dev": true,
28848 "requires": { 28678 "requires": {
28849 "cssesc": "^3.0.0", 28679 "cssesc": "^3.0.0",
28850 "util-deprecate": "^1.0.2" 28680 "util-deprecate": "^1.0.2"
@@ -28873,7 +28703,8 @@ @@ -28873,7 +28703,8 @@
28873 } 28703 }
28874 }, 28704 },
28875 "postcss-value-parser": { 28705 "postcss-value-parser": {
28876 - "version": "4.2.0" 28706 + "version": "4.2.0",
  28707 + "dev": true
28877 }, 28708 },
28878 "posthtml": { 28709 "posthtml": {
28879 "version": "0.9.2", 28710 "version": "0.9.2",
@@ -30137,9 +29968,6 @@ @@ -30137,9 +29968,6 @@
30137 "version": "0.3.1", 29968 "version": "0.3.1",
30138 "dev": true 29969 "dev": true
30139 }, 29970 },
30140 - "string-hash": {  
30141 - "version": "1.1.3"  
30142 - },  
30143 "string-length": { 29971 "string-length": {
30144 "version": "4.0.2", 29972 "version": "4.0.2",
30145 "dev": true, 29973 "dev": true,
@@ -30813,6 +30641,11 @@ @@ -30813,6 +30641,11 @@
30813 "version": "6.0.1", 30641 "version": "6.0.1",
30814 "dev": true 30642 "dev": true
30815 }, 30643 },
  30644 + "throttle-debounce": {
  30645 + "version": "3.0.1",
  30646 + "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-3.0.1.tgz",
  30647 + "integrity": "sha512-dTEWWNu6JmeVXY0ZYoPuH5cRIwc0MeGbJwah9KUNYSJwommQpCzTySTpEe8Gs1J23aeWEuAobe4Ag7EHVt/LOg=="
  30648 + },
30816 "through": { 30649 "through": {
30817 "version": "2.3.8", 30650 "version": "2.3.8",
30818 "dev": true 30651 "dev": true
@@ -30869,7 +30702,8 @@ @@ -30869,7 +30702,8 @@
30869 "dev": true 30702 "dev": true
30870 }, 30703 },
30871 "to-fast-properties": { 30704 "to-fast-properties": {
30872 - "version": "2.0.0" 30705 + "version": "2.0.0",
  30706 + "dev": true
30873 }, 30707 },
30874 "to-object-path": { 30708 "to-object-path": {
30875 "version": "0.3.0", 30709 "version": "0.3.0",
@@ -31271,7 +31105,8 @@ @@ -31271,7 +31105,8 @@
31271 "dev": true 31105 "dev": true
31272 }, 31106 },
31273 "util-deprecate": { 31107 "util-deprecate": {
31274 - "version": "1.0.2" 31108 + "version": "1.0.2",
  31109 + "dev": true
31275 }, 31110 },
31276 "utils-merge": { 31111 "utils-merge": {
31277 "version": "1.0.1", 31112 "version": "1.0.1",
@@ -31721,38 +31556,18 @@ @@ -31721,38 +31556,18 @@
31721 "vscode-languageserver-textdocument": "^1.0.1", 31556 "vscode-languageserver-textdocument": "^1.0.1",
31722 "vscode-pug-languageservice": "^0.27.24", 31557 "vscode-pug-languageservice": "^0.27.24",
31723 "vscode-typescript-languageservice": "^0.27.25" 31558 "vscode-typescript-languageservice": "^0.27.25"
31724 - },  
31725 - "dependencies": {  
31726 - "@vue/compiler-core": {  
31727 - "version": "3.2.26",  
31728 - "dev": true,  
31729 - "requires": {  
31730 - "@babel/parser": "^7.16.4",  
31731 - "@vue/shared": "3.2.26",  
31732 - "estree-walker": "^2.0.2",  
31733 - "source-map": "^0.6.1"  
31734 - }  
31735 - },  
31736 - "@vue/compiler-dom": {  
31737 - "version": "3.2.26",  
31738 - "dev": true,  
31739 - "requires": {  
31740 - "@vue/compiler-core": "3.2.26",  
31741 - "@vue/shared": "3.2.26"  
31742 - }  
31743 - },  
31744 - "@vue/shared": {  
31745 - "version": "3.2.26",  
31746 - "dev": true  
31747 - }  
31748 } 31559 }
31749 }, 31560 },
31750 "vue": { 31561 "vue": {
31751 - "version": "3.2.2", 31562 + "version": "3.2.33",
  31563 + "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.33.tgz",
  31564 + "integrity": "sha512-si1ExAlDUrLSIg/V7D/GgA4twJwfsfgG+t9w10z38HhL/HA07132pUQ2KuwAo8qbCyMJ9e6OqrmWrOCr+jW7ZQ==",
31752 "requires": { 31565 "requires": {
31753 - "@vue/compiler-dom": "3.2.2",  
31754 - "@vue/runtime-dom": "3.2.2",  
31755 - "@vue/shared": "3.2.2" 31566 + "@vue/compiler-dom": "3.2.33",
  31567 + "@vue/compiler-sfc": "3.2.33",
  31568 + "@vue/runtime-dom": "3.2.33",
  31569 + "@vue/server-renderer": "3.2.33",
  31570 + "@vue/shared": "3.2.33"
31756 } 31571 }
31757 }, 31572 },
31758 "vue-demi": { 31573 "vue-demi": {
@@ -31820,6 +31635,16 @@ @@ -31820,6 +31635,16 @@
31820 } 31635 }
31821 } 31636 }
31822 }, 31637 },
  31638 + "vue3-video-play": {
  31639 + "version": "1.3.1-beta.6",
  31640 + "resolved": "https://registry.npmjs.org/vue3-video-play/-/vue3-video-play-1.3.1-beta.6.tgz",
  31641 + "integrity": "sha512-Olrx2/LNAds7fuor/yX9ZKT9sOcwcfTt2g2YbbCrEaAmZ5Tb0hwBr5z+/CoLwELzzRzXCHPmWWoT0Wm5W/Nwpw==",
  31642 + "requires": {
  31643 + "hls.js": "^1.0.10",
  31644 + "throttle-debounce": "^3.0.1",
  31645 + "vue": "^3.2.2"
  31646 + }
  31647 + },
31823 "w3c-hr-time": { 31648 "w3c-hr-time": {
31824 "version": "1.0.2", 31649 "version": "1.0.2",
31825 "dev": true, 31650 "dev": true,
@@ -65,6 +65,7 @@ @@ -65,6 +65,7 @@
65 "vue-json-pretty": "^2.0.4", 65 "vue-json-pretty": "^2.0.4",
66 "vue-router": "^4.0.11", 66 "vue-router": "^4.0.11",
67 "vue-types": "^4.0.3", 67 "vue-types": "^4.0.3",
  68 + "vue3-video-play": "^1.3.1-beta.6",
68 "xlsx": "^0.17.0" 69 "xlsx": "^0.17.0"
69 }, 70 },
70 "devDependencies": { 71 "devDependencies": {
@@ -13,6 +13,8 @@ import { setupStore } from '/@/store'; @@ -13,6 +13,8 @@ import { setupStore } from '/@/store';
13 import { setupGlobDirectives } from '/@/directives'; 13 import { setupGlobDirectives } from '/@/directives';
14 import { setupI18n } from '/@/locales/setupI18n'; 14 import { setupI18n } from '/@/locales/setupI18n';
15 import { registerGlobComp } from '/@/components/registerGlobComp'; 15 import { registerGlobComp } from '/@/components/registerGlobComp';
  16 +import vue3videoPlay from 'vue3-video-play'; // 引入组件
  17 +import 'vue3-video-play/dist/style.css'; // 引入css
16 if (import.meta.env.DEV) { 18 if (import.meta.env.DEV) {
17 import('ant-design-vue/dist/antd.less'); 19 import('ant-design-vue/dist/antd.less');
18 } 20 }
@@ -46,6 +48,8 @@ async function bootstrap() { @@ -46,6 +48,8 @@ async function bootstrap() {
46 // https://next.router.vuejs.org/api/#isready 48 // https://next.router.vuejs.org/api/#isready
47 await router.isReady(); 49 await router.isReady();
48 50
  51 + app.use(vue3videoPlay);
  52 +
49 app.mount('#app', true); 53 app.mount('#app', true);
50 } 54 }
51 55
@@ -7,7 +7,24 @@ @@ -7,7 +7,24 @@
7 width="30%" 7 width="30%"
8 @ok="handleSubmit" 8 @ok="handleSubmit"
9 > 9 >
10 - <BasicForm @register="registerForm" /> 10 + <BasicForm @register="registerForm">
  11 + <template #iconSelect>
  12 + <Upload
  13 + name="avatar"
  14 + list-type="picture-card"
  15 + class="avatar-uploader"
  16 + :show-upload-list="false"
  17 + :customRequest="customUpload"
  18 + :before-upload="beforeUpload"
  19 + >
  20 + <img v-if="tenantLogo" :src="tenantLogo" alt="avatar" />
  21 + <div v-else>
  22 + <plus-outlined />
  23 + <div class="ant-upload-text">上传</div>
  24 + </div>
  25 + </Upload>
  26 + </template>
  27 + </BasicForm>
11 </BasicDrawer> 28 </BasicDrawer>
12 </template> 29 </template>
13 <script lang="ts"> 30 <script lang="ts">
@@ -16,16 +33,19 @@ @@ -16,16 +33,19 @@
16 import { formSchema } from './config.data'; 33 import { formSchema } from './config.data';
17 import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; 34 import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
18 import { createOrEditCameraManage } from '/@/api/camera/cameraManager'; 35 import { createOrEditCameraManage } from '/@/api/camera/cameraManager';
19 - 36 + import { message, Upload } from 'ant-design-vue';
20 import { useMessage } from '/@/hooks/web/useMessage'; 37 import { useMessage } from '/@/hooks/web/useMessage';
  38 + import { PlusOutlined } from '@ant-design/icons-vue';
  39 + import { upload } from '/@/api/oss/ossFileUploader';
  40 + import { FileItem } from '/@/components/Upload/src/typing';
21 41
22 export default defineComponent({ 42 export default defineComponent({
23 name: 'ContactDrawer', 43 name: 'ContactDrawer',
24 - components: { BasicDrawer, BasicForm }, 44 + components: { BasicDrawer, BasicForm, Upload, PlusOutlined },
25 emits: ['success', 'register'], 45 emits: ['success', 'register'],
26 setup(_, { emit }) { 46 setup(_, { emit }) {
27 const isUpdate = ref(true); 47 const isUpdate = ref(true);
28 - 48 + const editId = ref('');
29 const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({ 49 const [registerForm, { validate, setFieldsValue, resetFields }] = useForm({
30 labelWidth: 120, 50 labelWidth: 120,
31 schemas: formSchema, 51 schemas: formSchema,
@@ -40,18 +60,56 @@ @@ -40,18 +60,56 @@
40 if (data.record.organizationDTO) { 60 if (data.record.organizationDTO) {
41 await setFieldsValue(data.record); 61 await setFieldsValue(data.record);
42 } else { 62 } else {
  63 + editId.value = data.record.id;
  64 + tenantLogo.value = data.record?.avatar;
43 Reflect.deleteProperty(data.record, 'organizationId'); 65 Reflect.deleteProperty(data.record, 'organizationId');
44 await setFieldsValue(data.record); 66 await setFieldsValue(data.record);
45 } 67 }
  68 + } else {
  69 + tenantLogo.value = '';
  70 + editId.value = '';
46 } 71 }
47 }); 72 });
48 73
  74 + const tenantLogo = ref('');
  75 +
  76 + async function customUpload({ file }) {
  77 + if (beforeUpload(file)) {
  78 + const formData = new FormData();
  79 + formData.append('file', file);
  80 + const response = await upload(formData);
  81 + if (response.fileStaticUri) {
  82 + tenantLogo.value = response.fileStaticUri;
  83 + }
  84 + }
  85 + }
  86 +
  87 + const beforeUpload = (file: FileItem) => {
  88 + const isJpgOrPng = file.type === 'image/jpeg' || file.type === 'image/png';
  89 + if (!isJpgOrPng) {
  90 + message.error('只能上传图片文件!');
  91 + }
  92 + const isLt2M = (file.size as number) / 1024 / 1024 < 2;
  93 + if (!isLt2M) {
  94 + message.error('图片大小不能超过2MB!');
  95 + }
  96 + return isJpgOrPng && isLt2M;
  97 + };
  98 +
49 const getTitle = computed(() => (!unref(isUpdate) ? '新增视频配置' : '编辑视频配置')); 99 const getTitle = computed(() => (!unref(isUpdate) ? '新增视频配置' : '编辑视频配置'));
50 100
51 async function handleSubmit() { 101 async function handleSubmit() {
52 try { 102 try {
53 const { createMessage } = useMessage(); 103 const { createMessage } = useMessage();
54 const values = await validate(); 104 const values = await validate();
  105 + if (tenantLogo.value !== '') {
  106 + values.avatar = tenantLogo.value;
  107 + }
  108 + if (editId.value !== '') {
  109 + values.id = editId.value;
  110 + } else {
  111 + delete values.id;
  112 + }
55 setDrawerProps({ confirmLoading: true }); 113 setDrawerProps({ confirmLoading: true });
56 let saveMessage = '添加成功'; 114 let saveMessage = '添加成功';
57 let updateMessage = '修改成功'; 115 let updateMessage = '修改成功';
@@ -69,6 +127,9 @@ @@ -69,6 +127,9 @@
69 registerDrawer, 127 registerDrawer,
70 registerForm, 128 registerForm,
71 handleSubmit, 129 handleSubmit,
  130 + customUpload,
  131 + beforeUpload,
  132 + tenantLogo,
72 }; 133 };
73 }, 134 },
74 }); 135 });
  1 +<template>
  2 + <div>
  3 + <BasicModal
  4 + v-bind="$attrs"
  5 + width="55rem"
  6 + :height="heightNum"
  7 + @register="register"
  8 + title="视频预览"
  9 + @cancel="handleCancel"
  10 + :showOkBtn="false"
  11 + >
  12 + <div class="video-sty">
  13 + <div>
  14 + <vue3VideoPlay v-bind="options" :poster="videoPoster" />
  15 + </div>
  16 + </div>
  17 + </BasicModal>
  18 + </div>
  19 +</template>
  20 +<script lang="ts">
  21 + import { defineComponent, reactive, ref } from 'vue';
  22 + import { BasicModal, useModalInner } from '/@/components/Modal';
  23 +
  24 + export default defineComponent({
  25 + name: 'DialogPreviewVideo',
  26 + components: {
  27 + BasicModal,
  28 + },
  29 + emits: ['success', 'register'],
  30 + setup() {
  31 + let options: any = reactive({});
  32 + const videoPoster = ref('');
  33 + const heightNum = ref(800);
  34 + const [register] = useModalInner(async (data) => {
  35 + if (data) {
  36 + const fileText = data.record?.videoUrl.split('.').pop();
  37 + videoPoster.value = data.record?.avatar;
  38 + options.width = '800px'; //播放器高度
  39 + options.height = '500px'; //播放器高度
  40 + options.color = ''; //主题色
  41 + options.type =
  42 + fileText === 'm3u8' ? 'm3u8' : fileText === 'mp4' ? 'video/mp4' : 'video/x-flv';
  43 + options.title = data.record?.name; //视频名称
  44 + options.src = data.record?.videoUrl; //视频源
  45 + options.muted = false; //静音
  46 + options.webFullScreen = false;
  47 + options.speedRate = ['0.75', '1.0', '1.25', '1.5', '2.0']; //播放倍速
  48 + options.autoPlay = false; //自动播放
  49 + options.loop = false; //循环播放
  50 + options.mirror = false; //镜像画面
  51 + options.ligthOff = false; //关灯模式
  52 + options.volume = 0.3; //默认音量大小
  53 + options.control = true; //是否显示控制
  54 + options.controlBtns = [
  55 + 'audioTrack',
  56 + 'quality',
  57 + 'speedRate',
  58 + 'volume',
  59 + 'setting',
  60 + 'pip',
  61 + 'pageFullScreen',
  62 + 'fullScreen',
  63 + ]; //显示所有按钮,
  64 + }
  65 + });
  66 + const handleCancel = () => {};
  67 + return {
  68 + register,
  69 + handleCancel,
  70 + options,
  71 + heightNum,
  72 + videoPoster,
  73 + };
  74 + },
  75 + });
  76 +</script>
  77 +<style>
  78 + .video-sty {
  79 + width: 100%;
  80 + display: flex;
  81 + align-items: center;
  82 + justify-content: center;
  83 + }
  84 +</style>
@@ -5,12 +5,18 @@ import { copyTransFun } from '/@/utils/fnUtils'; @@ -5,12 +5,18 @@ import { copyTransFun } from '/@/utils/fnUtils';
5 // 表格列数据 5 // 表格列数据
6 export const columns: BasicColumn[] = [ 6 export const columns: BasicColumn[] = [
7 { 7 {
8 - title: '视频名字', 8 + title: '封面',
  9 + dataIndex: 'avatar',
  10 + width: 80,
  11 + slots: { customRender: 'img' },
  12 + },
  13 + {
  14 + title: '名字',
9 dataIndex: 'name', 15 dataIndex: 'name',
10 width: 120, 16 width: 120,
11 }, 17 },
12 { 18 {
13 - title: '视频厂家', 19 + title: '厂家',
14 dataIndex: 'brand', 20 dataIndex: 'brand',
15 width: 120, 21 width: 120,
16 }, 22 },
@@ -58,6 +64,12 @@ export const searchFormSchema: FormSchema[] = [ @@ -58,6 +64,12 @@ export const searchFormSchema: FormSchema[] = [
58 // 弹框配置项 64 // 弹框配置项
59 export const formSchema: FormSchema[] = [ 65 export const formSchema: FormSchema[] = [
60 { 66 {
  67 + field: 'avatar',
  68 + label: '视频封面',
  69 + slot: 'iconSelect',
  70 + component: 'Input',
  71 + },
  72 + {
61 field: 'name', 73 field: 'name',
62 label: '视频名字', 74 label: '视频名字',
63 required: true, 75 required: true,
@@ -23,6 +23,18 @@ @@ -23,6 +23,18 @@
23 批量删除 23 批量删除
24 </a-button> 24 </a-button>
25 </template> 25 </template>
  26 + <template #img="{ record }">
  27 + <TableImg
  28 + :size="30"
  29 + :showBadge="false"
  30 + :simpleShow="true"
  31 + :imgList="
  32 + typeof record.avatar !== 'undefined' && record.avatar !== '' && record.avatar != null
  33 + ? [record.avatar]
  34 + : null
  35 + "
  36 + />
  37 + </template>
26 <template #action="{ record }"> 38 <template #action="{ record }">
27 <TableAction 39 <TableAction
28 :actions="[ 40 :actions="[
@@ -51,12 +63,13 @@ @@ -51,12 +63,13 @@
51 </BasicTable> 63 </BasicTable>
52 </PageWrapper> 64 </PageWrapper>
53 <ContactDrawer @register="registerDrawer" @success="handleSuccess" /> 65 <ContactDrawer @register="registerDrawer" @success="handleSuccess" />
  66 + <VideoPreviewModal @register="registerModal" />
54 </div> 67 </div>
55 </template> 68 </template>
56 69
57 <script lang="ts"> 70 <script lang="ts">
58 import { defineComponent, reactive, ref, computed } from 'vue'; 71 import { defineComponent, reactive, ref, computed } from 'vue';
59 - import { BasicTable, useTable, TableAction } from '/@/components/Table'; 72 + import { BasicTable, useTable, TableAction, TableImg } from '/@/components/Table';
60 import { PageWrapper } from '/@/components/Page'; 73 import { PageWrapper } from '/@/components/Page';
61 import { useMessage } from '/@/hooks/web/useMessage'; 74 import { useMessage } from '/@/hooks/web/useMessage';
62 import { useDrawer } from '/@/components/Drawer'; 75 import { useDrawer } from '/@/components/Drawer';
@@ -64,6 +77,9 @@ @@ -64,6 +77,9 @@
64 import { useResetOrganizationTree, OrganizationIdTree } from '/@/views/common/organizationIdTree'; 77 import { useResetOrganizationTree, OrganizationIdTree } from '/@/views/common/organizationIdTree';
65 import { cameraPage, deleteCameraManage } from '/@/api/camera/cameraManager'; 78 import { cameraPage, deleteCameraManage } from '/@/api/camera/cameraManager';
66 import { searchFormSchema, columns } from './config.data'; 79 import { searchFormSchema, columns } from './config.data';
  80 + import VideoPreviewModal from './DialogPreviewVideo.vue';
  81 + import { useModal } from '/@/components/Modal';
  82 +
67 export default defineComponent({ 83 export default defineComponent({
68 components: { 84 components: {
69 PageWrapper, 85 PageWrapper,
@@ -71,6 +87,8 @@ @@ -71,6 +87,8 @@
71 BasicTable, 87 BasicTable,
72 TableAction, 88 TableAction,
73 ContactDrawer, 89 ContactDrawer,
  90 + VideoPreviewModal,
  91 + TableImg,
74 }, 92 },
75 setup() { 93 setup() {
76 let selectedRowIds = ref<string[]>([]); 94 let selectedRowIds = ref<string[]>([]);
@@ -81,11 +99,13 @@ @@ -81,11 +99,13 @@
81 }; 99 };
82 const searchInfo = reactive<Recordable>({}); 100 const searchInfo = reactive<Recordable>({});
83 const { organizationIdTreeRef, resetFn } = useResetOrganizationTree(searchInfo); 101 const { organizationIdTreeRef, resetFn } = useResetOrganizationTree(searchInfo);
  102 + const [registerModal, { openModal }] = useModal();
84 // 表格hooks 103 // 表格hooks
85 const [registerTable, { reload }] = useTable({ 104 const [registerTable, { reload }] = useTable({
86 title: '视频列表', 105 title: '视频列表',
87 api: cameraPage, 106 api: cameraPage,
88 columns, 107 columns,
  108 + showIndexColumn: false,
89 clickToRowSelect: false, 109 clickToRowSelect: false,
90 formConfig: { 110 formConfig: {
91 labelWidth: 120, 111 labelWidth: 120,
@@ -134,13 +154,13 @@ @@ -134,13 +154,13 @@
134 if (record) { 154 if (record) {
135 try { 155 try {
136 await deleteCameraManage([record.id]); 156 await deleteCameraManage([record.id]);
137 - createMessage.success('删除联系人成功'); 157 + createMessage.success('删除视频成功');
138 handleSuccess(); 158 handleSuccess();
139 } catch (e) {} 159 } catch (e) {}
140 } else { 160 } else {
141 try { 161 try {
142 await deleteCameraManage(selectedRowIds.value); 162 await deleteCameraManage(selectedRowIds.value);
143 - createMessage.success('批量删除联系人成功'); 163 + createMessage.success('批量删除视频成功');
144 selectedRowIds.value = []; 164 selectedRowIds.value = [];
145 handleSuccess(); 165 handleSuccess();
146 } catch (e) {} 166 } catch (e) {}
@@ -152,8 +172,11 @@ @@ -152,8 +172,11 @@
152 searchInfo.organizationId = organizationId; 172 searchInfo.organizationId = organizationId;
153 handleSuccess(); 173 handleSuccess();
154 }; 174 };
155 - const handleViewVideo = (r) => {  
156 - console.log(r); 175 + const handleViewVideo = (record) => {
  176 + openModal(true, {
  177 + isUpdate: true,
  178 + record,
  179 + });
157 }; 180 };
158 return { 181 return {
159 searchInfo, 182 searchInfo,
@@ -166,6 +189,7 @@ @@ -166,6 +189,7 @@
166 registerDrawer, 189 registerDrawer,
167 organizationIdTreeRef, 190 organizationIdTreeRef,
168 handleViewVideo, 191 handleViewVideo,
  192 + registerModal,
169 }; 193 };
170 }, 194 },
171 }); 195 });