1 |
- {"remainingRequest":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js??vue-loader-options!/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/videoService/index.vue?vue&type=style&index=1&id=0eff7157&lang=scss","dependencies":[{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/src/views/videoService/index.vue","mtime":1708395041893},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/css-loader/dist/cjs.js","mtime":1708395146948},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/loaders/stylePostLoader.js","mtime":1708395147772},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/postcss-loader/src/index.js","mtime":1708395147225},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/sass-loader/dist/cjs.js","mtime":1708395146389},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/cache-loader/dist/cjs.js","mtime":1708395146433},{"path":"/Users/caoge/Desktop/地质现场/VehicleMonitor-WEB/node_modules/vue-loader/lib/index.js","mtime":1708395147382}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:CgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoudmlkZW9TZXJ2aWNlIHsKICAuZWwtYXNpZGUgLmVsLW1lbnUtaXRlbS5pcy1hY3RpdmUgewogICAgYmFja2dyb3VuZDogI2U5ZjFmNyAhaW1wb3J0YW50OwogICAgY29sb3I6ICMyODY2ZGQgIWltcG9ydGFudDsKICB9CgogIC5lbC1tZW51LWl0ZW06aG92ZXIgewogICAgYmFja2dyb3VuZDogI2U0ZTRlNCAhaW1wb3J0YW50OwogIH0KfQouY2xhc3NOYW1lMSB7CiAgYmFja2dyb3VuZDogIzAwMDsKICAuamVzc2lidWNhLWNvbnRhaW5lciB7CiAgICBoZWlnaHQ6IGNhbGMoMTAwJSAtIDIwcHgpOwogIH0KfQo="},{"version":3,"sources":["index.vue"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAucA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"index.vue","sourceRoot":"src/views/videoService","sourcesContent":["<template>\n <el-card\n body-style=\"{padding:'0px'}\"\n style=\"height: calc(100vh - 113px)\"\n class=\"dashboard-container\"\n >\n <el-container style=\"height: 100%\" class=\"videoService\">\n <el-aside\n style=\"\n padding: 10px 20px 30px 30px;\n box-shadow: rgb(193 193 193) 0px 0px 10px;\n \"\n >\n <div\n style=\"\n display: flex;\n justify-content: space-between;\n align-items: center;\n \"\n >\n <div\n style=\"\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n \"\n >\n <div\n style=\"\n display: flex;\n justify-content: space-between;\n align-items: center;\n justify-content: center;\n width: 250px;\n background: #eee;\n height: 40px;\n color: #2766dd;\n \"\n >\n 相机列表\n <!-- <span style=\"color: #2766dd\">{{ facilityQuantity }}</span> -->\n </div>\n <!-- <div></div> -->\n </div>\n </div>\n\n <el-input\n v-model=\"searchText\"\n class=\"input-with-select\"\n placeholder=\"请输入相机编码或线路名称\"\n style=\"margin-top: 10px\"\n suffix-icon=\"el-icon-search\"\n clearable\n @change=\"cameraTree\"\n />\n <div\n style=\"\n font-size: 14px;\n float: right;\n position: relative;\n top: 8px;\n width: 50px;\n text-align: center;\n color: #f7f8f8;\n background: #2766dd;\n padding: 5px;\n border-radius: 2px;\n cursor: pointer;\n\n \"\n @click=\"clicks\"\n >\n 重置\n </div>\n <el-menu\n :default-active=\"cameraTreeIndex\"\n style=\"\n margin-top: 40px;\n height: calc(100% - 130px);\n visibility: auto;\n overflow-y: auto;\n \"\n >\n <div\n style=\"\n color: #b9b9b9;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n \"\n v-if=\"cameraTreeData.length <= 0\"\n >\n 暂无数据\n </div>\n <!--1级-->\n <el-submenu v-for=\"item1 in cameraTreeData\" :index=\"item1.index\">\n <template slot=\"title\">\n <div style=\"height: 100%; display: flex; align-items: center\">\n <img\n src=\"@/assets/1.png\"\n style=\"margin-right: 5px; width: 15px\"\n />\n <div>{{ item1.name }}</div>\n </div>\n </template>\n\n <!--2级-->\n <template v-for=\"item2 in item1.children\">\n <template v-if=\"item2.children.length > 0\">\n <!--2级有下级-->\n <el-submenu :index=\"item2.index\">\n <template slot=\"title\">{{ item2.name }}</template>\n\n <!--3级-->\n <!-- @click=\"videoPlay(item3.code, item2.index)\" -->\n <el-menu-item\n v-for=\"item3 in item2.children\"\n :index=\"item3.index\"\n >\n <el-checkbox\n :disabled=\"getNum(item3.code)\"\n @change=\"checkboxClick(item3.code)\"\n v-model=\"checkboxObj[item3.code]\"\n ><img\n src=\"@/assets/2.png\"\n style=\"\n width: 20px;\n height: 15px;\n margin-bottom: 3px;\n margin-right: 3px;\n \"\n />\n {{ item3.name }}</el-checkbox\n >\n </el-menu-item>\n </el-submenu>\n </template>\n <template v-else>\n <!--2级无下级-->\n <!-- @click=\"videoPlay(item2.code, item2.index)\" -->\n <el-menu-item :index=\"item2.index\">\n <el-checkbox\n :disabled=\"getNum(item2.code)\"\n @change=\"checkboxClick(item2.code)\"\n v-model=\"checkboxObj[item2.code]\"\n ><img\n src=\"@/assets/2.png\"\n style=\"\n width: 20px;\n height: 15px;\n margin-bottom: 3px;\n margin-right: 3px;\n \"\n />\n {{ item2.name }}</el-checkbox\n >\n </el-menu-item>\n </template>\n </template>\n </el-submenu>\n </el-menu>\n </el-aside>\n\n <playback\n style=\"padding: 60px 20px 20px 20px\"\n :videoType=\"videoType\"\n @getType=\"getType\"\n :checkboxArr=\"checkboxArr\"\n :cameraCode=\"cameraCode\"\n @tabChange=\"palyAndPlaybackTabChange\"\n :getAllCamera=\"this.getFirstRedioList\"\n ></playback>\n </el-container>\n </el-card>\n</template>\n\n<script>\nimport { mapGetters } from \"vuex\";\nimport videoLine from \"@/components/videoPlayer/videoLine\";\nimport videoPlayer from \"@/components/videoPlayer/videoPlayer\";\nimport playback from \"@/components/videoPlayer/playback\";\n// import cameraInfoMessage from \"@/components/videoPlayer/cameraInfoMessage\";\nimport {\n cameraTree,\n invite,\n records,\n videoQuantity,\n lineDate,\n videoHistoricalAlarm,\n getAlarm,\n} from \"@/api/video\";\n\nexport default {\n name: \"videoService\",\n components: { videoLine, videoPlayer, playback },\n computed: {\n ...mapGetters([\"name\"]),\n },\n data() {\n return {\n checkboxArr: [],\n checkboxObj: {},\n videoList: [],\n type: 0,\n getFirstRedioList: [],\n getSecondRedioList: [],\n isShow: true,\n cameraCode: \"\", // [摄像机] 当前选择码\n cameraTreeIndex: \"-1\", // 当前选择\n cameraTreeData: [], // 视频树\n facilityQuantity: \"\", // 设备数量\n searchText: \"\",\n videoType: 1, // [摄像机] 当前/历史视频\n cameraInfo: {\n // 当前摄像机信息\n cameraCode: \"\",\n alarmType: \"\",\n lineDir: \"\",\n deptId: \"\",\n alarmMile: \"\",\n beginMile: \"\",\n installLongitude: \"\",\n releasedTime: \"\",\n },\n historicalAlarm: {}, // [摄像机]历史数据\n };\n },\n mounted() {\n this.cameraTree();\n // this.videoQuantity();\n },\n methods: {\n clicks() {\n // this.checkboxObj = {};\n Object.keys(this.checkboxObj).map((item) => {\n this.checkboxObj[item] = false;\n });\n\n this.checkboxArr = JSON.parse(JSON.stringify([{}, {}, {}, {}]));\n this.cameraTreeData = JSON.parse(JSON.stringify(this.cameraTreeData));\n\n this.$forceUpdate();\n },\n getNum(code) {\n var index = this.type === 0 ? 1 : 4;\n var defind =\n this.checkboxArr.filter((res) => res.cameraCode).length === index;\n if (defind) {\n return !this.checkboxArr.filter((res) => res.cameraCode === code)\n .length;\n }\n return defind;\n },\n getType(res) {\n this.type = res;\n var index = this.type === 0 ? 1 : 4;\n this.checkboxArr.length = index;\n Object.keys(this.checkboxObj).map((item) => {\n this.checkboxObj[item] = false;\n });\n for (let index = 0; index < this.checkboxArr.length; index++) {\n // const element = this.checkboxArr[index];\n // if (element) {\n this.checkboxArr[index] = {};\n // }\n }\n this.checkboxArr = JSON.parse(JSON.stringify(this.checkboxArr));\n },\n checkboxClick(key, value) {\n var checkboxArr = JSON.parse(JSON.stringify(this.checkboxArr));\n if (!this.checkboxObj[key]) {\n for (let i = 0; i < checkboxArr.length; i++) {\n if (checkboxArr[i].cameraCode === key) {\n checkboxArr[i] = {};\n }\n }\n } else {\n const data = {\n cameraCode: key,\n value: this.checkboxObj[key],\n };\n for (let index = 0; index < checkboxArr.length; index++) {\n const item = checkboxArr[index];\n if (!item.cameraCode) {\n checkboxArr[index] = data;\n break;\n }\n }\n records(key, true).then((res) => {\n for (let i = 0; i < this.checkboxArr.length; i++) {\n if (this.checkboxArr[i].cameraCode === key) {\n this.checkboxArr[i].src = res.data// + \"?\" + Math.random();\n }\n }\n this.checkboxArr = JSON.parse(JSON.stringify(this.checkboxArr));\n });\n }\n\n if (\n checkboxArr.filter((item) => item.cameraCode).length > 4 &&\n this.checkboxObj[key]\n ) {\n this.checkboxObj[key] = false;\n this.checkboxObj = JSON.parse(JSON.stringify(this.checkboxObj));\n checkboxArr.splice(checkboxArr.length - 1, 1);\n }\n\n this.checkboxArr = JSON.parse(JSON.stringify(checkboxArr));\n },\n // 视频播放\n videoPlay(val, index) {\n this.videoType = 1;\n if (index) this.cameraTreeIndex = index;\n this.cameraCode = val;\n },\n // 获取摄像机树\n cameraTree() {\n cameraTree({\n railwayCode: this.searchText,\n }).then((res) => {\n this.cameraTreeData = [];\n // console.log(res.data.children,'dataaaaaaaaaaaaa..................')\n\n let code = \"\";\n\n this.cameraTreeData = res.data.children.map((item, index) => {\n item.index = `${index}`;\n item.label = item.name;\n item.value = item.code;\n item.isSelect = false;\n\n if (item.children && item.children.length > 0) {\n item.isVideo = false;\n\n // 第二级\n item.children.map((item2, index2) => {\n this.getFirstRedioList.push(item2);\n // console.log(this.getFirstRedioList, \"*********\");\n item2.index = `${index}-${index2}`;\n item2.label = item2.name;\n item2.value = item2.code;\n item2.isSelect = false;\n\n if (item2.children && item2.children.length > 0) {\n item2.isVideo = false;\n\n // 第三级\n item2.children.map((item3, index3) => {\n item3.index = `${index}-${index2}-${index3}`;\n item3.label = item3.name;\n item3.value = item3.code;\n item3.isSelect = false;\n item3.isVideo = true;\n\n if (code == \"\") {\n code = item3.code;\n this.cameraTreeIndex = item3.index;\n }\n\n return item3;\n });\n } else {\n item2.isVideo = true;\n if (code == \"\") {\n code = item2.code;\n this.cameraTreeIndex = item2.index;\n }\n }\n\n return item2;\n });\n } else {\n item.isVideo = true;\n if (code == \"\") {\n code = item.code;\n this.cameraTreeIndex = item.index;\n }\n }\n\n return item;\n });\n console.log(this.cameraTreeData, \"this.cameraTreeData**//////\");\n\n this.$set(this.cameraTreeData);\n if (code) this.videoPlay(code);\n });\n },\n },\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.dashboard {\n &-container {\n margin: 30px 30px 30px;\n }\n\n &-text {\n font-size: 30px;\n line-height: 46px;\n }\n}\n\n::v-deep .el-submenu__title {\n height: 45px;\n}\n\n::v-deep .el-submenu .el-menu-item {\n height: 42px;\n line-height: 42px;\n padding: 0 45px;\n min-width: 200px;\n}\n\n::v-deep .el-card__body {\n height: 100%;\n padding: 0;\n}\n\n::v-deep .el-menu {\n border: none;\n}\n\n.el-menu--horizontal > .el-menu-item.is-active {\n background-color: #20a0ff;\n color: #ffffff;\n height: 35px;\n line-height: 35px;\n}\n\n.el-menu-item.is-active {\n background-color: #2766dd;\n color: #ffffff;\n}\n\n.el-menu--horizontal > .el-menu-item {\n height: 35px;\n line-height: 35px;\n}\n\n.el-card.is-always-shadow,\n.el-card.is-hover-shadow:focus {\n box-shadow: none;\n}\n\n.el-card {\n border: 1px solid#FFFF;\n background-color: #fff;\n}\n</style>\n\n<style lang=\"scss\">\n.videoService {\n .el-aside .el-menu-item.is-active {\n background: #e9f1f7 !important;\n color: #2866dd !important;\n }\n\n .el-menu-item:hover {\n background: #e4e4e4 !important;\n }\n}\n.className1 {\n background: #000;\n .jessibuca-container {\n height: calc(100% - 20px);\n }\n}\n</style>"]}]}
|