TransFlow/node_modules/.cache/babel-loader/5600c73446814ac84bd51dac2a1...

1 line
73 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{"remainingRequest":"E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\babel-loader\\lib\\index.js!E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\cache-loader\\dist\\cjs.js??ref--0-0!E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!E:\\视频边缘计算管理平台\\TransFlow\\src\\views\\AnalysisMain.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\视频边缘计算管理平台\\TransFlow\\src\\views\\AnalysisMain.vue","mtime":1679447653598},{"path":"E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\babel-loader\\lib\\index.js","mtime":499162500000},{"path":"E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"E:\\视频边缘计算管理平台\\TransFlow\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["import \"core-js/modules/es6.function.name\";\nimport \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.regexp.split\";\nimport \"core-js/modules/es6.typed.uint8-array\";\nimport \"core-js/modules/web.dom.iterable\";\nimport _defineProperty from \"E:/\\u89C6\\u9891\\u8FB9\\u7F18\\u8BA1\\u7B97\\u7BA1\\u7406\\u5E73\\u53F0/TransFlow/node_modules/@babel/runtime/helpers/esm/defineProperty\";\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nimport editModal from \"@/views/bounced/maintenanceRemind\";\nimport { getGetShipjk, getDeleteShipjk, getApplication, getStopAlgorithm, startVideoAnalysis, getSetVideoMode, getVideoMode } from \"../api/index\";\nimport serverUrl from \"../config/apiurl.js\";\nimport axios from 'axios';\n\nvar os = require('os');\n\nexport default {\n data: function data() {\n var _ref;\n\n return _ref = {\n receiveNews: \"\",\n topicSends: [],\n componentShow: \"\",\n numArr: [],\n currentDate: new Date(),\n closeStatus: null,\n dis: false,\n dialogFormVisible: false,\n videoTypeShow: false,\n loading: true,\n fileList: [],\n form: {\n radio: '',\n videoName: '视频01',\n city: '',\n videoStreamAddress: '',\n videoPath: '',\n numSatus: 0,\n LicensePlateRecognitionSwitch: 0\n },\n formLabelWidth: '120px'\n }, _defineProperty(_ref, \"formLabelWidth\", '200px'), _defineProperty(_ref, \"videoTypeForm\", {\n videoType: '实时视频' // videoType:'离线视频'\n\n }), _defineProperty(_ref, \"videoList\", []), _defineProperty(_ref, \"fullscreenLoading\", false), _defineProperty(_ref, \"ip\", ''), _defineProperty(_ref, \"numSatus\", 0), _defineProperty(_ref, \"newNumber\", 0), _ref;\n },\n //离开当前页面后执行\n destroyed: function destroyed() {// console.log(\"离开当前页\")\n // client.end();\n },\n created: function created() {\n this.getVideoList();\n },\n mounted: function mounted() {\n this.createMqtt();\n },\n watch: {\n videoList: {\n handler: function handler(newVal) {\n var _this = this;\n\n if (newVal) {\n newVal.forEach(function (item) {\n if (item.status == '加载中') {\n console.log(\"加载中\", item);\n setTimeout(function () {\n _this.getVideoList();\n }, 10000);\n }\n });\n }\n },\n deep: true\n }\n },\n methods: {\n changeChepai: function changeChepai() {},\n //传输视频源类型\n SetVideoMode: function SetVideoMode(val) {\n getSetVideoMode({\n Mode: val\n }).then(function (res) {\n console.log(\"res\", res);\n });\n },\n changeRadio: function changeRadio() {\n this.SetVideoMode(this.videoTypeForm.videoType);\n },\n //获取视频源类型\n getVideoType: function getVideoType() {\n var _this2 = this;\n\n getVideoMode().then(function (res) {\n console.log(\"res\", res.data.data);\n _this2.videoTypeForm.videoType = res.data.data;\n });\n },\n\n /** 创建mqtt */\n createMqtt: function createMqtt() {\n console.log(\"this.videoTypeForm.videoType\", this.videoTypeForm.videoType); //创建链接,接收数据\n\n if (this.videoTypeForm.videoType == '实时视频') {\n console.log(\"this.videoTypeForm.videoType\", this.videoTypeForm.videoType);\n window.PubScribe(null, -1, this.realInfo, 'videoId');\n window.publish('Custom', JSON.stringify({\n \"type\": 'getImage',\n \"videoid\": 'all'\n }));\n } else if (this.videoTypeForm.videoType == '离线视频') {\n console.log(\"this.videoTypeForm.videoType\", this.videoTypeForm.videoType);\n this.topicSends = ['VideoStatusData'];\n window.PubScribe(this.topicSends, '001', this.realInfo, 'videoId');\n }\n },\n //停止订阅mqtt\n disConnect: function disConnect() {// if (client != null) {\n // client.unsubscribe(this.topicSends);\n // client = null;\n // }\n },\n\n /** 实时数据分类 */\n realInfo: function realInfo(topic, message) {\n // console.log(\"topic\",topic)\n switch (topic) {\n // 接收托片\n case \"img0\":\n case \"img1\":\n case \"img2\":\n case \"img3\":\n case \"img4\":\n case \"img5\":\n case \"img6\":\n case \"img7\":\n case \"img8\":\n try {\n var utf8decoder = new TextDecoder();\n var u8arr = new Uint8Array(message);\n var temp = utf8decoder.decode(u8arr); // 将二进制数据转为字符串\n\n var msg = JSON.parse(temp); //这一步报错则返回的是二进制流图片不报错则返回的是JSON的错误提示数据\n // var newArr = []\n //msg为转换后的JSON数据\n\n if (msg.rate == 'low') {\n console.log(\"msg\", msg);\n\n if (this.videoList.length != 0) {\n for (var i = 0; i < this.videoList.length; i++) {\n if (msg.id == this.videoList[i].id) {\n this.videoList[i].img = 'data:image/png;base64,' + msg.pic;\n this.videoList[i].msg = msg;\n }\n }\n }\n } // this.imgUrl3 = 'data:image/png;base64,' + msg.pic;\n // console.log(\"imageUrl\", imageUrl)\n\n } catch (error) {}\n\n break;\n\n case \"hert\":\n try {\n var _utf8decoder = new TextDecoder();\n\n var _u8arr = new Uint8Array(message);\n\n var _temp = _utf8decoder.decode(_u8arr); // 将二进制数据转为字符串\n\n\n var _msg = JSON.parse(_temp); //这一步报错则返回的是二进制流图片不报错则返回的是JSON的错误提示数据\n // console.log(\"hert\", msg) //msg为转换后的JSON数据\n\n\n if (_msg == '') {}\n } catch (error) {}\n\n break;\n\n case \"VideoStatusData\":\n try {\n var _utf8decoder2 = new TextDecoder();\n\n var _u8arr2 = new Uint8Array(message);\n\n var _temp2 = _utf8decoder2.decode(_u8arr2); // 将二进制数据转为字符串\n\n\n var _msg2 = JSON.parse(_temp2); //这一步报错则返回的是二进制流图片不报错则返回的是JSON的错误提示数据\n\n\n console.log(\"VideoStatusData\", _msg2); //msg为转换后的JSON数据\n\n this.changeStatus(_msg2);\n } catch (error) {}\n\n break;\n }\n\n this.receiveNews = \"\";\n },\n changeStatus: function changeStatus(msg) {\n for (var i = 0; i < this.videoList.length; i++) {\n //分析中\n if (msg.type == 'video_under_analysis' && msg.video_id == this.videoList[i].id) {\n var numSatusN = '';\n this.videoList[i].videoAnalysisStatus = '分析中';\n numSatusN = msg.number_frames / msg.total_frames * 100;\n this.videoList[i].numSatus = parseFloat(numSatusN.toFixed(2));\n } else if (msg.type == 'video_analyzed' && msg.video_id == this.videoList[i].id) {\n //已分析\n console.log(\"已分析\");\n this.videoList[i].videoAnalysisStatus = '已分析';\n var ip = window.location.host;\n var ipData = 'http://' + ip.split(':')[0] + ':5000'; // var ipData ='http://172.16.1.168:5000/'\n\n this.videoList[i].img = ipData + msg.pic_path;\n } else if (msg.type == 'video_analyse_unusual' && msg.video_id == this.videoList[i].id) {\n //分析异常\n console.log(\"分析异常\");\n this.videoList[i].videoAnalysisStatus = '分析异常';\n } else if (msg.type == 'video_loading' && msg.video_id == this.videoList[i].id) {\n //分析异常\n console.log(\"加载中\");\n this.videoList[i].videoAnalysisStatus = '加载中';\n }\n }\n },\n generateMixed: function generateMixed(n) {\n var chars = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];\n var res = \"\";\n\n for (var i = 0; i < n; i++) {\n var id = Math.floor(Math.random() * 36);\n res += chars[id];\n }\n\n return res;\n },\n informationInfo: function informationInfo(data, item) {\n if (data == '新增') {\n var random = this.generateMixed(3);\n console.log(\"random\", random); // console.log(\"this.file\",this.file)\n // this.file = undefined\n\n console.log(\"this.$refs.inputer\", this.$refs.inputer);\n this.form = {\n radio: '',\n videoName: '视频' + random,\n city: '',\n videoStreamAddress: '',\n LicensePlateRecognitionSwitch: 0,\n videoPath: ''\n }, this.dialogFormVisible = true;\n }\n },\n open: function open(item) {\n var _this3 = this;\n\n console.log(\"item\", item);\n this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(function () {\n getDeleteShipjk({\n VideoId: item\n }).then(function (res) {\n console.log(\"res\", res);\n\n _this3.$message({\n type: 'success',\n message: '删除成功!'\n });\n\n _this3.getVideoList();\n });\n }).catch(function () {\n _this3.$message({\n type: 'info',\n message: '已取消删除'\n });\n });\n },\n openRight: function openRight(item) {\n var _this4 = this;\n\n console.log(\"item\", item);\n startVideoAnalysis(item.id).then(function (res) {\n //\n if (res.data.msg == '请求成功') {\n _this4.$message({\n message: '启动成功',\n type: 'success'\n }); // setTimeout(() => {\n // this.getAnalysisStatus()\n // }, 5000);\n // if(this.videoAnalysisSta=='已分析'){\n // }else if(this.videoAnalysisSta=='分析中'){\n // this.description = '正在分析中'\n // setTimeout(() => {\n // this.getAnalysisStatus()\n // }, 5000); \n // }else if(this.videoAnalysisSta=='未分析'){\n // } \n\n }\n });\n },\n //\n commit: function commit(form) {\n var _this5 = this;\n\n console.log(\"form\", form);\n var formData = new FormData();\n formData.append(\"VideoName\", form.videoName);\n formData.append(\"VideoType\", this.videoTypeForm.videoType);\n window.publish('Custom', JSON.stringify({\n \"type\": 'getImage',\n \"videoid\": 'all'\n }));\n\n if (this.videoTypeForm.videoType == '离线视频') {\n formData.append(\"VideoPath\", form.videoStreamAddress);\n formData.append(\"LicensePlateRecognitionSwitch\", form.LicensePlateRecognitionSwitch);\n } else {\n formData.append(\"VideoStreamAddress\", form.videoStreamAddress);\n }\n\n axios({\n method: \"post\",\n url: serverUrl.dataUrl,\n data: formData\n }).then(function (res) {\n console.log(\"提交按钮\", res);\n\n if (res.data.msg == '添加成功') {\n _this5.$message({\n message: res.data.msg,\n type: 'success'\n });\n\n _this5.getVideoList(); // if(this.videoTypeForm.videoType=='离线视频'){\n // startVideoAnalysis(res.data.data).then(res => {\n // if(res.data.msg=='请求成功'){\n // this.$message({\n // message: '启动成功',\n // type: 'success'\n // }); \n // } \n // });\n // }else{\n // }\n\n } else {\n _this5.$message({\n message: res.data.msg,\n type: 'warning'\n });\n }\n\n _this5.dialogFormVisible = false;\n });\n },\n handleFileChange: function handleFileChange(e) {\n var inputDOM = this.$refs.inputer;\n this.file = inputDOM.files[0]; // 通过DOM取文件数据\n },\n //应用\n applicationBtn: function applicationBtn() {\n var _this6 = this;\n\n // this.createMqtt()\n getApplication().then(function (res) {\n console.log(\"res\", res);\n\n if (res.data.code == 200) {\n var loading = _this6.$loading({\n lock: true,\n text: 'Loading',\n spinner: 'el-icon-loading',\n background: 'rgba(0, 0, 0, 0.7)'\n });\n\n setTimeout(function () {\n loading.close();\n setTimeout(function () {\n _this6.getVideoList();\n }, 5000);\n\n _this6.$message({\n message: res.data.msg,\n type: 'success'\n }); // setTimeout(() => {\n // window.publish('Custom',JSON.stringify({\"type\":'getImage',\"videoid\":'all'}));\n // }, 3000); \n\n }, 15000);\n }\n });\n },\n //停止\n stopAlgorithmBtn: function stopAlgorithmBtn() {\n var _this7 = this;\n\n getStopAlgorithm().then(function (res) {\n console.log(\"res\", res);\n\n if (res.data.code == 200) {\n _this7.getVideoList();\n\n _this7.$message({\n message: res.data.msg,\n type: 'success'\n });\n }\n });\n },\n S4: function S4() {\n return ((1 + Math.random()) * 0x10000 | 0).toString(16).substring(1);\n },\n guid: function guid() {\n return this.S4() + this.S4() + \"-\" + this.S4() + \"-\" + this.S4() + \"-\" + this.S4() + \"-\" + this.S4() + this.S4() + this.S4();\n },\n load: function load() {\n var _this8 = this;\n\n var size = this.file.size; //文件大小\n // this.fileList = []\n\n var maxZrea = 8; //设置每个分区大小 MB\n\n var bufferSize = maxZrea * (1024 * 1024);\n var fileStart = 0;\n var fileEnd = bufferSize;\n var arrFile = [];\n\n while (fileStart < size) {\n var fileInfo = {\n File: this.file.slice(fileStart, fileEnd),\n Start: fileStart,\n End: fileEnd\n };\n arrFile.push(fileInfo);\n fileStart = fileEnd;\n fileEnd = fileStart + bufferSize;\n }\n\n var newNumber = 0;\n var loadingN = this.$loading({\n lock: true,\n text: newNumber + '/' + arrFile.length,\n target: '.el-dialog',\n spinner: 'el-icon-loading',\n background: 'rgba(0, 0, 0, 0.7)'\n });\n console.log(\"loadingN\", loadingN.text);\n var count = arrFile.length;\n var filename = this.file.name + \"~\" + this.guid();\n\n for (var i = 0; i < count; i++) {\n var formData = new FormData(); //new一个formData事件\n\n formData.append(\"file\", arrFile[i].File); //将file属性添加到formData里\n\n var url = serverUrl.getSpareElementOrder + \"?Name=\" + filename + \"&Number=\" + i + \"&BufferSize=\" + bufferSize + \"&Count=\" + count + \"&Start=\" + arrFile[i].Start + \"&End=\" + arrFile[i].End + \"&Size=\" + size;\n axios.post(url, formData, {\n headers: {\n \"Content-Type\": \"multipart/form-data;\"\n }\n }).then(function (r) {\n if (r.data.code != 200) {} else {\n if (r.data.data == null) {\n _this8.dis = true; // var newN = i\n\n _this8.newNumber = newNumber++;\n loadingN.text = _this8.newNumber + '/' + arrFile.length;\n } else {\n _this8.dis = false;\n loadingN.close();\n\n _this8.$message({\n message: r.data.msg,\n type: 'success'\n });\n\n _this8.form.videoStreamAddress = r.data.data;\n\n _this8.fileList.push(r.data.data);\n }\n }\n }).catch(function (e) {\n console.log(e);\n });\n }\n },\n goToPage: function goToPage(videoAnalysisStatus, id, num, name, type, status, msg, videoPath) {\n console.log(\"id\", id);\n console.log(\"num\", num);\n console.log(\"name\", name);\n console.log(\"type\", type);\n console.log(\"status\", status);\n console.log(\"msg\", msg);\n console.log(\"videoAnalysisStatus\", videoAnalysisStatus);\n\n if (type == '离线视频') {\n if (videoAnalysisStatus != '已分析') {} else if (videoAnalysisStatus == '已分析') {\n this.$router.push({\n path: 'index',\n query: {\n id: id,\n num: num,\n name: name,\n type: type,\n status: status,\n msg: msg,\n videoPath: videoPath\n }\n });\n }\n } else {\n this.$router.push({\n path: 'index',\n query: {\n id: id,\n num: num,\n name: name,\n type: type,\n status: status,\n msg: msg,\n videoPath: videoPath\n }\n });\n }\n },\n //获取视频数据\n getVideoList: function getVideoList() {\n var _this9 = this;\n\n getGetShipjk().then(function (res) {\n console.log(\"res\", res);\n\n if (res.data.msg == '成功') {\n // if(val=='重启'){\n setTimeout(function () {\n window.publish('Custom', JSON.stringify({\n \"type\": 'getImage',\n \"videoid\": 'all'\n }));\n }, 2000); // }\n\n if (res.data.data.length != 0) {\n _this9.videoTypeForm.videoType = res.data.data[0].videoType;\n\n if (_this9.videoTypeForm.videoType == '离线视频') {\n _this9.createMqtt();\n }\n\n _this9.getVideoType();\n } else {\n _this9.SetVideoMode(_this9.videoTypeForm.videoType);\n } // console.log(\"this.videoTypeForm.videoType\",this.videoTypeForm.videoType)\n\n\n var arr = [];\n var ip = window.location.host;\n var ipData = 'http://' + ip.split(':')[0] + ':5000'; // var ipData ='http://172.16.1.168:5000/'\n\n res.data.data.forEach(function (item) {\n if (_this9.videoTypeForm.videoType == '离线视频' && item.videoAnalysisStatus == '已分析') {\n arr.push({\n id: item.videoId,\n type: item.videoType,\n title: item.videoName,\n num: item.number,\n status: item.status,\n videoStreamAddress: item.videoStreamAddress,\n videoPath: item.videoPath,\n // img: require('@/assets/img/AnalysisMain/img1.png'),\n // img:'',\n trafficAnalysisStatus: item.trafficAnalysisStatus,\n videoAnalysisStatus: item.videoAnalysisStatus,\n numberFrames: item.numberFrames,\n totalFrames: item.totalFrames,\n numSatus: 0,\n msg: {},\n img: ipData + item.picPath\n });\n } else {\n arr.push({\n id: item.videoId,\n type: item.videoType,\n title: item.videoName,\n num: item.number,\n status: item.status,\n videoStreamAddress: item.videoStreamAddress,\n videoPath: item.videoPath,\n img: require('@/assets/img/AnalysisMain/img1.png'),\n trafficAnalysisStatus: item.trafficAnalysisStatus,\n videoAnalysisStatus: item.videoAnalysisStatus,\n numberFrames: item.numberFrames,\n totalFrames: item.totalFrames,\n numSatus: parseFloat((item.numberFrames / item.totalFrames * 100).toFixed(2)),\n msg: {} // img:ipData+item.picPath,\n\n });\n }\n });\n _this9.videoList = arr;\n console.log(\"arr\", _this9.videoList);\n\n if (_this9.videoList.length == '0') {\n _this9.videoTypeShow = true;\n } else {\n _this9.videoTypeShow = false;\n }\n }\n });\n },\n handleRemove: function handleRemove(file, fileList) {\n console.log(file, fileList);\n },\n handlePreview: function handlePreview(file) {\n console.log(file);\n },\n handleExceed: function handleExceed(files, fileList) {\n this.$message.warning(\"\\u5F53\\u524D\\u9650\\u5236\\u9009\\u62E9 3 \\u4E2A\\u6587\\u4EF6\\uFF0C\\u672C\\u6B21\\u9009\\u62E9\\u4E86 \".concat(files.length, \" \\u4E2A\\u6587\\u4EF6\\uFF0C\\u5171\\u9009\\u62E9\\u4E86 \").concat(files.length + fileList.length, \" \\u4E2A\\u6587\\u4EF6\"));\n },\n beforeRemove: function beforeRemove(file, fileList) {\n return this.$confirm(\"\\u786E\\u5B9A\\u79FB\\u9664 \".concat(file.name, \"\\uFF1F\"));\n }\n },\n components: {\n editModal: editModal\n }\n};",{"version":3,"sources":["AnalysisMain.vue"],"names":[],"mappings":"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","sourcesContent":["<template>\r\n<div class=\"content-box\">\r\n <!-- v-if=\"videoTypeShow\" -->\r\n <div class=\"videoTypeBox\" v-if=\"videoTypeShow\">\r\n <el-form :inline=\"true\" :model=\"videoTypeForm\" class=\"demo-form-inline\" >\r\n <el-form-item label=\"视频源类型:\" >\r\n <el-radio-group v-model=\"videoTypeForm.videoType\" @change=\"changeRadio\">\r\n <el-radio label=\"实时视频\"></el-radio>\r\n <el-radio label=\"离线视频\"></el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n </el-form>\r\n </div>\r\n <div>\r\n <el-row>\r\n <el-col :span=\"6\" v-for=\"(item, index) in videoList\" :key=\"item.id\" :offset=\"index > 0 ? 0 : 0\" ref=\"typeCard\" >\r\n <el-card :body-style=\"{ padding: '0px' }\" class=\"card\" :loading=\"loading\">\r\n <div class=\"type\">\r\n <img src=\"@/assets/img/AnalysisMain/leftTop.png\" alt=\"\" v-if=\"item.type=='实时视频'\">\r\n <img src=\"@/assets/img/AnalysisMain/leftTop2.png\" alt=\"\" v-if=\"item.type=='离线视频'\">\r\n </div>\r\n <div class=\"name\">\r\n <img src=\"@/assets/img/AnalysisMain/ssVideo.png\" alt=\"\" v-if=\"item.type=='实时视频'\">\r\n <img src=\"@/assets/img/AnalysisMain/lxVideo.png\" alt=\"\" v-if=\"item.type=='离线视频'\">\r\n </div>\r\n <div class=\"statusN\">\r\n <img src=\"@/assets/img/AnalysisMain/status.png\" alt=\"\" >\r\n <span class=\"statusName\" v-if=\"item.type=='实时视频'\">{{ item.status }}</span>\r\n <span class=\"statusName\" v-if=\"item.type=='离线视频'\">{{ item.videoAnalysisStatus }}</span>\r\n </div>\r\n <!-- <div class=\"middleN\" v-if=\"item.type=='离线视频'&&item.videoAnalysisStatus=='分析中'\"> -->\r\n <!-- <div class=\"middleN\" v-if=\" (item.type=='离线视频' && item.videoAnalysisStatus=='分析中') || (item.type=='离线视频' &&item.videoAnalysisStatus=='未分析')\">\r\n \r\n <el-progress type=\"circle\" :percentage=\"item.numSatus\" text-color='#fff'></el-progress>\r\n </div> -->\r\n <div class=\"middleN\" v-if=\"item.type=='离线视频' && item.videoAnalysisStatus=='分析中'\">\r\n \r\n <el-progress type=\"circle\" :percentage=\"item.numSatus\" text-color='#fff'></el-progress>\r\n </div>\r\n <div class=\"typeRight\">\r\n <el-button type=\"primary\" icon=\"el-icon-refresh-right\" @click=\"openRight(item)\" v-if=\"item.type=='离线视频'&&item.videoAnalysisStatus=='分析异常'\"></el-button>\r\n </div>\r\n <!-- <div class=\"del\" @click=\"open(item.id)\"> <i class='el-icon-delete'></i></div> -->\r\n <img :src=\"item.img\" class=\"image\" @click=\"goToPage(item.videoAnalysisStatus\r\n,item.id,item.num,item.title,item.type,item.status,item.msg,item.videoPath)\">\r\n <div class=\"bot\">\r\n <span style=\" vertical-align: middle;\">\r\n <img src=\"@/assets/img/AnalysisMain/video (1).png\" alt=\"\">\r\n <!-- <img :src=\"item.img\" alt=\"\"> -->\r\n </span>\r\n <div class=\"bottom clearfix\">\r\n <time class=\"time\">{{ item.title }}</time>\r\n <!-- <el-button type=\"text\" class=\"button\">操作按钮</el-button> -->\r\n <!-- <div class=\"streamAddress\" :content=\"item.videoStreamAddress!=''? item.videoStreamAddress:item.videoPath\">{{item.videoStreamAddress!=''? item.videoStreamAddress:item.videoPath}}</div> -->\r\n <div class=\"streamAddress\" :content=\"item.videoStreamAddress!=''? item.videoStreamAddress:item.videoPath\">{{item.videoStreamAddress!=''? item.videoStreamAddress:item.videoPath}}</div>\r\n </div>\r\n \r\n <div class=\"st\">\r\n <!-- <span>{{ item.status }}</span> -->\r\n \r\n <el-button type=\"primary\" icon=\"el-icon-delete\" @click=\"open(item.id)\"></el-button>\r\n \r\n </div>\r\n </div>\r\n </el-card>\r\n </el-col>\r\n <el-col :span=\"6\">\r\n <el-card :body-style=\"{ padding: '0px' }\">\r\n <div class=\"middle\">\r\n <div style=\"width: 50%;height: 100%;margin: auto;padding-top: 15%;cursor: pointer;text-align: center;\" @click=\"informationInfo('新增')\">\r\n <img src=\"@/assets/img/AnalysisMain/add.png\" width=\"80%\">\r\n </div>\r\n \r\n </div>\r\n \r\n </el-card>\r\n </el-col>\r\n</el-row>\r\n<div class=\"btn\" v-if=\"videoTypeForm.videoType=='实时视频'\">\r\n \r\n <el-button type=\"primary\" @click=\"applicationBtn\">保存</el-button>\r\n <!-- <el-button type=\"primary\" @click=\"stopAlgorithmBtn\">关闭程序</el-button> -->\r\n </div>\r\n </div>\r\n <!-- <div id=\"dialog\" class=\"margin-top: 0px !important;\"> -->\r\n <el-dialog\r\n title=\"视频源配置\"\r\n width=\"40%\"\r\n :visible.sync=\"dialogFormVisible\" \r\n :close-on-click-modal=\"false\"\r\n >\r\n <!-- <editModal ></editModal> -->\r\n <el-form :model=\"form\">\r\n <el-form-item label=\"视频源名称\" :label-width=\"formLabelWidth\">\r\n <el-input v-model=\"form.videoName\" autocomplete=\"off\" style=\"width:50%\" placeholder=\"请输入视频源名称\"></el-input>\r\n </el-form-item>\r\n <!-- <el-form-item label=\"视频源类型\" :label-width=\"formLabelWidth\">\r\n <el-radio-group v-model=\"form.videoType\">\r\n <el-radio label=\"实时视频\"></el-radio>\r\n <el-radio label=\"离线视频\"></el-radio>\r\n </el-radio-group>\r\n </el-form-item> -->\r\n <el-form-item label=\"视频源地址\" :label-width=\"formLabelWidth\" v-if=\"videoTypeForm.videoType=='实时视频'\">\r\n <el-input v-model=\"form.videoStreamAddress\" autocomplete=\"off\" style=\"width:80%\" placeholder=\"请输入视频源地址\" >\r\n <template slot=\"prepend\">rtsp://</template>\r\n </el-input>\r\n <!-- <el-input v-model=\"form.videoStreamAddress\" autocomplete=\"off\" style=\"width:80%\"></el-input> -->\r\n </el-form-item>\r\n <el-form-item label=\"车牌识别开关:\" :label-width=\"formLabelWidth\" v-if=\"videoTypeForm.videoType=='离线视频'\">\r\n <el-switch\r\n v-model=\"form.LicensePlateRecognitionSwitch\"\r\n active-value=\"1\"\r\n inactive-value=\"0\"\r\n @change=\"changeChepai($event)\"\r\n ></el-switch>\r\n </el-form-item>\r\n <el-form-item label=\"离线视频上传\" :label-width=\"formLabelWidth\" v-if=\"videoTypeForm.videoType=='离线视频'\">\r\n <!-- <el-button slot=\"trigger\" size=\"small\" type=\"primary\">选取文件</el-button> -->\r\n <input type=\"file\" id=\"fileExport\" @change=\"handleFileChange\" ref=\"inputer\">\r\n <el-button size=\"small\" type=\"primary\" @click=\"load\">点击上传</el-button>\r\n \r\n <!-- <el-upload\r\n class=\"upload-demo\"\r\n action=\"#\"\r\n :file-list=\"fileList\" \r\n @change=\"handleFileChange\"\r\n multiple >\r\n <el-button type=\"file\" id=\"fileExport\" ref=\"inputer\">选取文件</el-button>\r\n <el-button style=\"margin-left: 10px;\" size=\"small\" type=\"success\" @click=\"load\">点击上传</el-button>\r\n <div slot=\"tip\" class=\"el-upload__tip\">上传文件名称请勿空格!</div>\r\n </el-upload> -->\r\n </el-form-item>\r\n \r\n </el-form>\r\n <div slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"dialogFormVisible = false\" :disabled=\"dis\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"commit(form)\" :disabled=\"dis\">确 定</el-button>\r\n </div>\r\n </el-dialog>\r\n <!-- </div> -->\r\n \r\n \r\n</div>\r\n\r\n</template>\r\n\r\n<script>\r\nimport editModal from \"@/views/bounced/maintenanceRemind\";\r\nimport {getGetShipjk,getDeleteShipjk,getApplication,getStopAlgorithm,startVideoAnalysis,getSetVideoMode,getVideoMode} from \"../api/index\";\r\nimport serverUrl from \"../config/apiurl.js\"\r\nimport axios from 'axios'\r\nconst os = require('os');\r\n\r\nexport default {\r\n data(){\r\n return{\r\n receiveNews: \"\",\r\n topicSends:[],\r\n componentShow: \"\",\r\n numArr:[],\r\n currentDate: new Date(),\r\n closeStatus: null,\r\n dis:false,\r\n dialogFormVisible: false,\r\n videoTypeShow: false,\r\n loading:true,\r\n fileList: [],\r\n form: {\r\n radio:'',\r\n videoName:'视频01',\r\n city:'',\r\n videoStreamAddress:'',\r\n videoPath:'',\r\n numSatus:0,\r\n LicensePlateRecognitionSwitch:0\r\n },\r\n formLabelWidth: '120px',\r\n formLabelWidth: '200px',\r\n videoTypeForm:{\r\n videoType:'实时视频'\r\n // videoType:'离线视频'\r\n },\r\n videoList:[],\r\n fullscreenLoading: false,\r\n ip:'',\r\n numSatus:0,\r\n newNumber:0,\r\n\r\n }\r\n },\r\n \r\n //离开当前页面后执行\r\ndestroyed: function () {\r\n// console.log(\"离开当前页\")\r\n// client.end();\r\n},\r\ncreated() {\r\nthis.getVideoList()\r\n \r\n \r\n},\r\n mounted() {\r\n this.createMqtt()\r\n \r\n },\r\n watch: {\r\n videoList: {\r\n handler(newVal) {\r\n if (newVal) {\r\n newVal.forEach((item)=>{\r\n if(item.status=='加载中'){\r\n console.log(\"加载中\",item)\r\n setTimeout(() => {\r\n this.getVideoList()\r\n }, 10000); \r\n }\r\n \r\n }) \r\n }\r\n },\r\n deep: true\r\n }\r\n },\r\n methods: {\r\n changeChepai(){},\r\n //传输视频源类型\r\n SetVideoMode(val){\r\n getSetVideoMode({Mode:val}).then(res=>{\r\n console.log(\"res\",res)\r\n })\r\n },\r\n changeRadio(){\r\n this.SetVideoMode(this.videoTypeForm.videoType)\r\n },\r\n //获取视频源类型\r\n getVideoType(){\r\n getVideoMode().then(res=>{\r\n console.log(\"res\",res.data.data)\r\n this.videoTypeForm.videoType = res.data.data\r\n })\r\n },\r\n /** 创建mqtt */\r\n createMqtt() {\r\n console.log(\"this.videoTypeForm.videoType\",this.videoTypeForm.videoType)\r\n //创建链接,接收数据\r\n if(this.videoTypeForm.videoType=='实时视频'){\r\n console.log(\"this.videoTypeForm.videoType\",this.videoTypeForm.videoType)\r\n window.PubScribe(null,-1,this.realInfo,'videoId');\r\n window.publish('Custom',JSON.stringify({\"type\":'getImage',\"videoid\":'all'})); \r\n }else if(this.videoTypeForm.videoType=='离线视频'){\r\n console.log(\"this.videoTypeForm.videoType\",this.videoTypeForm.videoType)\r\n this.topicSends = ['VideoStatusData'];\r\n window.PubScribe(this.topicSends,'001', this.realInfo,'videoId'); \r\n }\r\n \r\n },\r\n //停止订阅mqtt\r\n disConnect() {\r\n // if (client != null) {\r\n // client.unsubscribe(this.topicSends);\r\n // client = null;\r\n // }\r\n },\r\n /** 实时数据分类 */\r\n realInfo(topic, message) {\r\n // console.log(\"topic\",topic)\r\n switch (topic) {\r\n // 接收托片\r\n case \"img0\":\r\n case \"img1\":\r\n case \"img2\":\r\n case \"img3\":\r\n case \"img4\":\r\n case \"img5\":\r\n case \"img6\":\r\n case \"img7\":\r\n case \"img8\":\r\n try {\r\n const utf8decoder = new TextDecoder()\r\n const u8arr = new Uint8Array(message)\r\n const temp = utf8decoder.decode(u8arr)\t// 将二进制数据转为字符串\r\n const msg = JSON.parse(temp)\t\t//这一步报错则返回的是二进制流图片不报错则返回的是JSON的错误提示数据\r\n // var newArr = []\r\n //msg为转换后的JSON数据\r\n if(msg.rate=='low'){\r\n console.log(\"msg\", msg) \r\n if(this.videoList.length!=0){\r\n for (let i = 0; i < this.videoList.length; i++) { \r\n if(msg.id==this.videoList[i].id){\r\n this.videoList[i].img ='data:image/png;base64,' + msg.pic\r\n this.videoList[i].msg = msg\r\n } \r\n }\r\n }\r\n }\r\n \r\n // this.imgUrl3 = 'data:image/png;base64,' + msg.pic;\r\n // console.log(\"imageUrl\", imageUrl)\r\n \r\n } catch (error) {\r\n\r\n }\r\n break;\r\n case \"hert\":\r\n try {\r\n const utf8decoder = new TextDecoder()\r\n const u8arr = new Uint8Array(message)\r\n const temp = utf8decoder.decode(u8arr)\t// 将二进制数据转为字符串\r\n const msg = JSON.parse(temp)\t\t//这一步报错则返回的是二进制流图片不报错则返回的是JSON的错误提示数据\r\n // console.log(\"hert\", msg) //msg为转换后的JSON数据\r\n if(msg==''){\r\n\r\n }\r\n \r\n } catch (error) {\r\n\r\n }\r\n break; \r\n case \"VideoStatusData\":\r\n try {\r\n const utf8decoder = new TextDecoder()\r\n const u8arr = new Uint8Array(message)\r\n const temp = utf8decoder.decode(u8arr)\t// 将二进制数据转为字符串\r\n const msg = JSON.parse(temp)\t\t//这一步报错则返回的是二进制流图片不报错则返回的是JSON的错误提示数据\r\n console.log(\"VideoStatusData\", msg) //msg为转换后的JSON数据\r\n this.changeStatus(msg)\r\n \r\n \r\n } catch (error) {\r\n\r\n }\r\n break;\r\n }\r\n this.receiveNews = \"\";\r\n },\r\n changeStatus(msg){\r\n for (let i = 0; i < this.videoList.length; i++) {\r\n //分析中\r\n \r\n if(msg.type=='video_under_analysis'&&msg.video_id==this.videoList[i].id){\r\n var numSatusN=''\r\n this.videoList[i].videoAnalysisStatus = '分析中'\r\n numSatusN=msg.number_frames/msg.total_frames*100\r\n this.videoList[i].numSatus =parseFloat(numSatusN.toFixed(2))\r\n }else if(msg.type=='video_analyzed'&&msg.video_id==this.videoList[i].id){\r\n //已分析\r\n console.log(\"已分析\")\r\n this.videoList[i].videoAnalysisStatus = '已分析'\r\n var ip = window.location.host;\r\n var ipData = 'http://' + ip.split(':')[0] + ':5000';\r\n // var ipData ='http://172.16.1.168:5000/'\r\n this.videoList[i].img = ipData+msg.pic_path\r\n }else if(msg.type=='video_analyse_unusual'&&msg.video_id==this.videoList[i].id){\r\n //分析异常\r\n console.log(\"分析异常\")\r\n this.videoList[i].videoAnalysisStatus = '分析异常'\r\n }else if(msg.type=='video_loading'&&msg.video_id==this.videoList[i].id){\r\n //分析异常\r\n console.log(\"加载中\")\r\n this.videoList[i].videoAnalysisStatus = '加载中'\r\n } \r\n }\r\n \r\n },\r\n generateMixed(n) {\r\n var chars = ['0','1','2','3','4','5','6','7','8','9',\r\n 'A','B','C','D','E','F','G','H','I','J','K','L','M',\r\n 'N','O','P','Q','R','S','T','U','V','W','X','Y','Z'];\r\n var res = \"\";\r\n for(var i = 0; i < n ; i++) {\r\n var id = Math.floor(Math.random()*36);\r\n res += chars[id];\r\n }\r\n return res;\r\n},\r\n informationInfo(data,item) {\r\n \r\n if(data=='新增'){\r\n var random = this.generateMixed(3)\r\n console.log(\"random\",random)\r\n // console.log(\"this.file\",this.file)\r\n // this.file = undefined\r\n console.log(\"this.$refs.inputer\",this.$refs.inputer)\r\n this.form={\r\n radio: '',\r\n videoName:'视频'+random,\r\n city:'',\r\n videoStreamAddress:'',\r\n LicensePlateRecognitionSwitch:0,\r\n videoPath:''\r\n },\r\n \r\n this.dialogFormVisible = true;\r\n }\r\n \r\n \r\n },\r\n open(item) {\r\n console.log(\"item\",item)\r\n this.$confirm('此操作将永久删除该文件, 是否继续?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n }).then(() => {\r\n getDeleteShipjk({VideoId:item}).then(res=>{\r\n console.log(\"res\",res)\r\n this.$message({\r\n type: 'success',\r\n message: '删除成功!'\r\n });\r\n this.getVideoList()\r\n })\r\n \r\n }).catch(() => {\r\n this.$message({\r\n type: 'info',\r\n message: '已取消删除'\r\n }); \r\n });\r\n },\r\n openRight(item){\r\n console.log(\"item\",item)\r\n startVideoAnalysis(item.id).then(res => {\r\n //\r\n if(res.data.msg=='请求成功'){\r\n this.$message({\r\n message: '启动成功',\r\n type: 'success'\r\n });\r\n // setTimeout(() => {\r\n // this.getAnalysisStatus()\r\n // }, 5000);\r\n // if(this.videoAnalysisSta=='已分析'){\r\n\r\n // }else if(this.videoAnalysisSta=='分析中'){\r\n // this.description = '正在分析中'\r\n // setTimeout(() => {\r\n // this.getAnalysisStatus()\r\n // }, 5000); \r\n // }else if(this.videoAnalysisSta=='未分析'){\r\n // } \r\n } \r\n });\r\n },\r\n //\r\n\r\n commit(form){\r\n console.log(\"form\",form)\r\n let formData = new FormData();\r\n formData.append(\"VideoName\",form.videoName);\r\n formData.append(\"VideoType\",this.videoTypeForm.videoType);\r\n window.publish('Custom',JSON.stringify({\"type\":'getImage',\"videoid\":'all'}));\r\n if(this.videoTypeForm.videoType=='离线视频'){\r\n formData.append(\"VideoPath\",form.videoStreamAddress);\r\n formData.append(\"LicensePlateRecognitionSwitch\",form.LicensePlateRecognitionSwitch)\r\n }else{\r\n formData.append(\"VideoStreamAddress\",form.videoStreamAddress);\r\n }\r\n axios({\r\n method: \"post\",\r\n url: serverUrl.dataUrl,\r\n data:formData\r\n }).then((res) => {\r\n console.log(\"提交按钮\",res)\r\n if(res.data.msg=='添加成功'){\r\n this.$message({\r\n message: res.data.msg,\r\n type: 'success'\r\n });\r\n this.getVideoList()\r\n // if(this.videoTypeForm.videoType=='离线视频'){\r\n // startVideoAnalysis(res.data.data).then(res => {\r\n // if(res.data.msg=='请求成功'){\r\n // this.$message({\r\n // message: '启动成功',\r\n // type: 'success'\r\n // }); \r\n // } \r\n // });\r\n // }else{\r\n\r\n // }\r\n }else{\r\n this.$message({\r\n message: res.data.msg,\r\n type: 'warning'\r\n });\r\n }\r\n\r\n this.dialogFormVisible = false;\r\n \r\n });\r\n \r\n },\r\n handleFileChange(e) {\r\n let inputDOM = this.$refs.inputer;\r\n this.file = inputDOM.files[0];// 通过DOM取文件数据\r\n\r\n },\r\n //应用\r\n applicationBtn(){\r\n // this.createMqtt()\r\n getApplication().then(res=>{\r\n console.log(\"res\",res)\r\n if(res.data.code==200){\r\n const loading = this.$loading({\r\n lock: true,\r\n text: 'Loading',\r\n spinner: 'el-icon-loading',\r\n background: 'rgba(0, 0, 0, 0.7)'\r\n });\r\n\r\n \r\n setTimeout(() => {\r\n loading.close();\r\n \r\n setTimeout(() => {\r\n this.getVideoList()\r\n \r\n }, 5000); \r\n \r\n this.$message({\r\n message: res.data.msg,\r\n type: 'success'\r\n });\r\n // setTimeout(() => {\r\n // window.publish('Custom',JSON.stringify({\"type\":'getImage',\"videoid\":'all'}));\r\n // }, 3000); \r\n }, 15000); \r\n }\r\n })\r\n },\r\n //停止\r\n stopAlgorithmBtn(){\r\n getStopAlgorithm().then(res=>{\r\n console.log(\"res\",res)\r\n if(res.data.code==200){\r\n this.getVideoList()\r\n this.$message({\r\n message: res.data.msg,\r\n type: 'success'\r\n });\r\n }\r\n })\r\n },\r\n S4() {\r\n return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);\r\n },\r\n guid() {\r\n return (this.S4() + this.S4() + \"-\" + this.S4() + \"-\" + this.S4() + \"-\" + this.S4() + \"-\" + this.S4() + this.S4() + this.S4());\r\n },\r\n load() {\r\n let size = this.file.size;//文件大小\r\n // this.fileList = []\r\n let maxZrea = 8; //设置每个分区大小 MB\r\n let bufferSize = maxZrea * (1024 * 1024);\r\n let fileStart = 0;\r\n let fileEnd = bufferSize;\r\n let arrFile = [];\r\n \r\n while (fileStart < size) {\r\n var fileInfo = {\r\n File: this.file.slice(fileStart, fileEnd),\r\n Start: fileStart,\r\n End: fileEnd\r\n }\r\n arrFile.push(fileInfo);\r\n fileStart = fileEnd;\r\n fileEnd = fileStart + bufferSize;\r\n }\r\n let newNumber= 0\r\n var loadingN = this.$loading({\r\n lock: true,\r\n text: newNumber +'/'+arrFile.length,\r\n target: '.el-dialog',\r\n spinner: 'el-icon-loading',\r\n background: 'rgba(0, 0, 0, 0.7)'\r\n });\r\n console.log(\"loadingN\",loadingN.text)\r\n let count = arrFile.length;\r\n let filename = this.file.name + \"~\" + this.guid();\r\n for (var i = 0; i < count; i++) {\r\n let formData = new FormData();//new一个formData事件\r\n formData.append(\"file\", arrFile[i].File); //将file属性添加到formData里\r\n var url = serverUrl.getSpareElementOrder+\"?Name=\" + filename + \"&Number=\" + i + \"&BufferSize=\" + bufferSize + \"&Count=\" + count + \"&Start=\" + arrFile[i].Start + \"&End=\" + arrFile[i].End + \"&Size=\" + size;\r\n axios.post(url, formData, {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data;\",\r\n }\r\n }).then(r => {\r\n if (r.data.code!=200) {\r\n\r\n }else{ \r\n if(r.data.data==null){\r\n this.dis = true \r\n // var newN = i\r\n this.newNumber = newNumber++\r\n loadingN.text = this.newNumber +'/'+arrFile.length\r\n }else{\r\n this.dis = false\r\n loadingN.close();\r\n this.$message({\r\n message: r.data.msg,\r\n type: 'success'\r\n });\r\n this.form.videoStreamAddress=r.data.data\r\n this.fileList.push(r.data.data)\r\n }\r\n }\r\n }).catch(e => {\r\n console.log(e);\r\n });\r\n }\r\n },\r\n goToPage(videoAnalysisStatus,id,num,name,type,status,msg,videoPath) {\r\n console.log(\"id\",id)\r\n console.log(\"num\",num)\r\n console.log(\"name\",name)\r\n console.log(\"type\",type)\r\n console.log(\"status\",status)\r\n console.log(\"msg\",msg)\r\n console.log(\"videoAnalysisStatus\",videoAnalysisStatus)\r\n if(type=='离线视频'){\r\n if(videoAnalysisStatus!='已分析'){\r\n\r\n }else if(videoAnalysisStatus=='已分析'){\r\n this.$router.push({path:'index',query: {id:id,num:num,name:name,type:type,status:status,msg:msg,videoPath:videoPath}})\r\n }\r\n }else{\r\n this.$router.push({path:'index',query: {id:id,num:num,name:name,type:type,status:status,msg:msg,videoPath:videoPath}})\r\n }\r\n \r\n \r\n \r\n },\r\n //获取视频数据\r\n getVideoList(){\r\n getGetShipjk().then(res=>{\r\n console.log(\"res\",res)\r\n if(res.data.msg=='成功'){\r\n // if(val=='重启'){\r\n setTimeout(() => {\r\n window.publish('Custom',JSON.stringify({\"type\":'getImage',\"videoid\":'all'}));\r\n }, 2000);\r\n // }\r\n if(res.data.data.length!=0){\r\n this.videoTypeForm.videoType = res.data.data[0].videoType\r\n if(this.videoTypeForm.videoType=='离线视频'){\r\n this.createMqtt()\r\n }\r\n this.getVideoType()\r\n }else{\r\n this.SetVideoMode(this.videoTypeForm.videoType)\r\n }\r\n // console.log(\"this.videoTypeForm.videoType\",this.videoTypeForm.videoType)\r\n var arr = [];\r\n var ip = window.location.host;\r\n var ipData = 'http://' + ip.split(':')[0] + ':5000';\r\n // var ipData ='http://172.16.1.168:5000/'\r\n res.data.data.forEach((item)=>{\r\n if(this.videoTypeForm.videoType=='离线视频'&&item.videoAnalysisStatus=='已分析'){\r\n arr.push({\r\n id: item.videoId, \r\n type: item.videoType,\r\n title: item.videoName,\r\n num:item.number,\r\n status:item.status,\r\n videoStreamAddress:item.videoStreamAddress,\r\n videoPath:item.videoPath,\r\n // img: require('@/assets/img/AnalysisMain/img1.png'),\r\n // img:'',\r\n trafficAnalysisStatus:item.trafficAnalysisStatus,\r\n videoAnalysisStatus:item.videoAnalysisStatus,\r\n numberFrames:item.numberFrames,\r\n totalFrames:item.totalFrames,\r\n numSatus:0,\r\n msg:{},\r\n img:ipData+item.picPath,\r\n }); \r\n \r\n }else{\r\n arr.push({\r\n id: item.videoId, \r\n type: item.videoType,\r\n title: item.videoName,\r\n num:item.number,\r\n status:item.status,\r\n videoStreamAddress:item.videoStreamAddress,\r\n videoPath:item.videoPath,\r\n img: require('@/assets/img/AnalysisMain/img1.png'),\r\n trafficAnalysisStatus:item.trafficAnalysisStatus,\r\n videoAnalysisStatus:item.videoAnalysisStatus,\r\n numberFrames:item.numberFrames,\r\n totalFrames:item.totalFrames,\r\n numSatus:parseFloat((item.numberFrames/item.totalFrames*100).toFixed(2)),\r\n msg:{},\r\n // img:ipData+item.picPath,\r\n }); \r\n }\r\n }) \r\n this.videoList=arr\r\n console.log(\"arr\",this.videoList)\r\n if(this.videoList.length=='0'){\r\n this.videoTypeShow = true\r\n }else{\r\n this.videoTypeShow = false\r\n }\r\n }\r\n })\r\n },\r\n\r\n handleRemove(file, fileList) {\r\n console.log(file, fileList);\r\n },\r\n handlePreview(file) {\r\n console.log(file);\r\n },\r\n handleExceed(files, fileList) {\r\n this.$message.warning(`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`);\r\n },\r\n beforeRemove(file, fileList) {\r\n return this.$confirm(`确定移除 ${ file.name }`);\r\n },\r\n },\r\n \r\n\r\n components: {\r\n editModal\r\n },\r\n}\r\n</script>\r\n\r\n<style>\r\n .time {\r\n font-size: 13px;\r\n color: #999;\r\n }\r\n .bot{\r\n /* padding: 14px; */\r\n padding: 8px 15px;\r\n }\r\n .streamAddress{\r\n color: coral;\r\n font-size: 12px;\r\n padding-top: 5px; \r\n \r\n }\r\n .bottom {\r\n margin-top: 10px;\r\n line-height: 12px;\r\n display: inline-block;\r\n margin-left: 15px;\r\n width: 67%;\r\n text-overflow:ellipsis;\r\n white-space:nowrap; \r\n overflow:hidden; \r\n }\r\n.st{\r\n position: absolute;\r\n right: 4%;\r\n top: 80%;\r\n display: inline-block;\r\n\r\n}\r\n.st span{\r\n color: #999;\r\n}\r\n .button {\r\n padding: 0;\r\n float: right;\r\n }\r\n\r\n .image {\r\n width: 100%;\r\n display: block;\r\n \r\n }\r\n\r\n .clearfix:before,\r\n .clearfix:after {\r\n display: table;\r\n content: \"\";\r\n }\r\n \r\n .clearfix:after {\r\n clear: both\r\n }\r\n .middle{\r\n width: 100%;\r\n /* height: 100%; */\r\n height: 284px;\r\n }\r\n .el-col-6 {\r\n width: 25%;\r\n padding-left: 20px;\r\n padding-top: 20px;\r\n}\r\n.type{\r\n position: absolute;\r\n left: 0;\r\n top:0px;\r\n z-index: 98;\r\n}\r\n.typeRight{\r\n position: absolute;\r\n right: 10px;\r\n top: 5px;\r\n z-index: 98;\r\n}\r\n.middleN{\r\n position: absolute;\r\n left: 35%;\r\n top: 15%;\r\n z-index: 98;\r\n}\r\n.del{\r\n position: absolute;\r\n right: 0px;\r\n top:0px;\r\n width: 25px;\r\n height: 25px;\r\n z-index: 9999;\r\n /* background-color: #999 */\r\n}\r\n.videoTypeBox{\r\n background: #fff;\r\n /* width: 98%; */\r\n margin-left: 1%;\r\n display: flex;\r\n padding-top: 20px;\r\n padding-left: 30px;\r\n}\r\n.card{\r\n position: relative;\r\n cursor: pointer;\r\n}\r\n.name{\r\n position: absolute;\r\n left: 7px;\r\n top:0px;\r\n z-index: 99;\r\n}\r\n.statusN{\r\n position: absolute;\r\n left: 30px;\r\n top:0px;\r\n z-index: 97;\r\n}\r\n .statusName{\r\n position: absolute;\r\n left: 13px;\r\n top: 6px;\r\n z-index: 99;\r\n color: #eee;\r\n}\r\n.middleN .el-progress__text {\r\n\t color: #fff; \r\n}\r\n .el-loading-spinner{\r\nfont-size: 30px;\r\n}\r\n .el-loading-text{\r\n font-size: 18px!important;\r\n }\r\n.el_dialog {\r\n position: fixed;\r\n width: 100%;\r\n height: 100%;\r\n background-color: rgba(0, 0, 0, 0.5);\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n margin: 0;\r\n padding: 0;\r\n }\r\n\r\n .el_dialog__content {\r\n width: v-bind(width1);\r\n height: 400px;\r\n background-color: white;\r\n display: flex;\r\n flex-direction: column;\r\n justify-content: center;\r\n align-items: center;\r\n }\r\n \r\n#dialog .el-dialog__header {\r\n border-bottom: 1px solid #eee;\r\n}\r\n \r\n\r\n#dialog .el-dialog__title {\r\n font-weight: bold;\r\n color: #000;\r\n}\r\n.btn{\r\n position: absolute;\r\n right: 10%;\r\n bottom: 18%;\r\n}\r\n</style>\r\n\r\n\r\n"],"sourceRoot":"src/views"}]}