1 line
119 KiB
JSON
1 line
119 KiB
JSON
{"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\\bounced\\analysisConfiguration.vue?vue&type=script&lang=js&","dependencies":[{"path":"E:\\视频边缘计算管理平台\\TransFlow\\src\\views\\bounced\\analysisConfiguration.vue","mtime":1675561599734},{"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/es7.object.get-own-property-descriptors\";\nimport \"core-js/modules/es6.object.keys\";\nimport \"core-js/modules/es6.regexp.to-string\";\nimport \"core-js/modules/es6.typed.uint8-array\";\nimport \"core-js/modules/es6.function.name\";\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\nvar _methods;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\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//\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//\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//\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 mqtt from 'mqtt'; // mqtt协议\n\nimport { getFeixpz, setCameraPosition, setLicensePlate, setParkingStatus, setFeixzbzh } from '@/api/index';\nexport default {\n props: {\n analysisConfigurationdata: {\n default: function _default() {\n return false;\n },\n type: Object,\n required: true\n }\n },\n data: function data() {\n return {\n unityDone: false,\n oldName: '',\n formRules: {\n pointName: [{\n required: true,\n message: '请输入点名称',\n trigger: 'blur'\n }],\n longitude: [{\n required: true,\n message: '请输入经度',\n trigger: 'blur'\n }],\n latitude: [{\n required: true,\n message: '请输入纬度',\n trigger: 'blur'\n }]\n },\n addDianForm: {\n pointName: '',\n longitude: '',\n latitude: '',\n oldName: ''\n },\n dialogVisible: false,\n coordinateTransformationId: '',\n AnalysisSettingId: '',\n contentShow: {\n postion: true,\n coordinate: false,\n plate: true,\n parking: true\n },\n sizeForm: {\n name: '',\n region: '',\n date1: '',\n date2: '',\n delivery: false,\n type: [],\n resource: '',\n desc: '',\n longitude: '',\n latitude: ''\n },\n formInline: {\n user: '',\n region: ''\n },\n //最上部表单\n topForm: {},\n //坐标转换\n coordinateForm: {\n coordinateClose: false,\n model: 'Georeferencing',\n coordinateTransformation: '84坐标系',\n value: '0',\n num: 1\n },\n options: [{\n value: '南',\n label: '南'\n }, {\n value: '北',\n label: '北'\n }],\n coordinateTableData: [],\n //车道识别配置\n laneform: {\n laneClose: false,\n areaDetector: false,\n sectionDetector: false\n },\n //识别区域\n identificationAreaform: {\n identificationAreaClose: false\n },\n //轨迹平滑\n trajectorySmoothingform: {\n trajectorySmoothingClose: false,\n time: ''\n },\n // 车牌识别\n licensePlateform: {\n licensePlateClose: 0\n },\n licensePlateTableData: [{\n thresholdValue: '11',\n sectionPlate: '111',\n inIp: '01',\n setAssociation: ''\n }, {\n thresholdValue: '22',\n sectionPlate: '222',\n inIp: '02',\n setAssociation: ''\n }, {\n thresholdValue: '33',\n sectionPlate: '333',\n inIp: '03',\n setAssociation: ''\n }],\n //停车状态\n stopStateform: {\n displacement: '2000',\n speed: '2000',\n acceleration: '2000'\n },\n //通信设置\n communicationform: {\n type: '快速-用于高带宽连接',\n renewalFrequency: ''\n },\n form: {\n name: '',\n region: '',\n date1: '',\n date2: '',\n delivery: false,\n type: [],\n resource: '',\n desc: ''\n },\n tableData: [{\n name: '11',\n inPort: '111',\n inIp: '01'\n }, {\n name: '22',\n inPort: '222',\n inIp: '02'\n }, {\n name: '33',\n inPort: '333',\n inIp: '03'\n }],\n internalIpList: [],\n fileList: []\n };\n },\n watch: {\n analysisConfigurationdata: {\n handler: function handler(old, newV) {\n // console.log(\"old\",old)\n // console.log(\"newV\",newV)\n if (newV != null && this.unityDone == true) {\n console.log(newV, 'yyy');\n this.$refs.analysisWeb.contentWindow.getDestination(newV);\n }\n }\n }\n },\n created: function created() {\n var _this = this;\n\n // this.getDataByMqtt()\n // this.testMqtt()\n // var iframe = document.getElementById(\"mapModule\");\n // iframe.onload = function () {\n // setTimeout(() => {\n // this.testMqtt()\n // }, 5000);\n // };\n // iframe.onload = () => {\n // setTimeout(() => {\n // this.load()\n // }, 5000);// 这样每次都会触发\n // }\n getFeixpz({\n VideoId: this.$route.query.id\n }).then(function (res) {\n _this.sizeForm.longitude = res.data.data.cameraPositionLongitude;\n _this.sizeForm.latitude = res.data.data.cameraPositionLatitude;\n _this.coordinateForm.num = res.data.data.utmArea == '-1' ? '' : res.data.data.utmArea;\n _this.coordinateForm.value = res.data.data.hemisphere;\n _this.coordinateForm.coordinateTransformation = res.data.data.coordinateTransformation;\n _this.coordinateTableData = res.data.data.pointData != null ? res.data.data.pointData.map(function (item) {\n return _objectSpread(_objectSpread({}, item), {}, {\n btnShow: '1'\n });\n }) : [];\n _this.licensePlateform.licensePlateClose = res.data.data.licensePlateRecognitionSwitch;\n _this.stopStateform.displacement = res.data.data.parkingDisplacement;\n _this.stopStateform.speed = res.data.data.parkingSpeed;\n _this.AnalysisSettingId = res.data.data.analysisSettingId;\n _this.coordinateTransformationId = res.data.data.coordinateTransformationId;\n\n _this.coordinateTableData.forEach(function (item) {\n item.btnShow = '1';\n });\n });\n },\n mounted: function mounted() {\n window.OnSceneload = this.OnSceneload;\n window.saveCoordinate = this.saveCoordinate;\n },\n methods: (_methods = {\n saveCoordinate: function saveCoordinate(obj) {\n console.log(obj);\n this.coordinateTableData.forEach(function (item) {\n if (item.pointName == obj.pointName) {\n item.imageXCoordinate = obj.imageXCoordinate;\n item.imageYCoordinate = obj.imageYCoordinate;\n }\n });\n },\n updateName: function updateName(val) {\n console.log('val', val.target.value);\n },\n handleExit: function handleExit(row, index) {\n // this.oldName = row.pointName\n row.oldName = row.pointName;\n this.$refs.analysisWeb.contentWindow.exitPoint(row.pointName);\n row.btnShow = '2'; // this.$set(this.coordinateTableData, index, row);\n },\n handleconfirm: function handleconfirm(row, index) {\n var bol = this.coordinateTableData.some(function (item, indexa) {\n return item.pointName == row.pointName && indexa != index;\n });\n\n if (bol == true) {\n this.$message({\n type: 'info',\n message: '该点位已存在'\n });\n return false;\n }\n\n var string = row.oldName + ',' + row.pointName;\n this.$refs.analysisWeb.contentWindow.saveDian(string);\n row.btnShow = '1';\n row.oldName = row.pointName; // this.$set(this.coordinateTableData, index, row);\n },\n OnSceneload: function OnSceneload(newV) {\n this.$refs.analysisWeb.contentWindow.getDianwei(this.$route.query.id);\n this.unityDone = true;\n },\n handleDeleteDian: function handleDeleteDian(row, idx) {\n var _this2 = this;\n\n this.$confirm('此操作将删除该点位, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(function () {\n _this2.coordinateTableData.splice(idx, 1); // this.coordinateTableData = this.coordinateTableData.filter(item => item.pointName != row.pointName);\n\n\n _this2.$refs.analysisWeb.contentWindow.deletePoint(row.oldName);\n\n _this2.$message({\n type: 'success',\n message: '删除成功!'\n });\n }).catch(function () {\n _this2.$message({\n type: 'info',\n message: '已取消删除'\n });\n });\n },\n handleDian: function handleDian() {\n var newPointData = {\n btnShow: '2',\n longitude: '0',\n latitude: '0'\n };\n newPointData.oldName = newPointData.pointName = String(new Date().getTime());\n this.coordinateTableData.unshift(newPointData);\n this.$refs.analysisWeb.contentWindow.setPOS(newPointData.pointName);\n },\n phoneChange: function phoneChange(e) {\n console.log('e', e.currentTarget.value);\n this.addDianForm.oldName = e.currentTarget.value;\n },\n handleClose: function handleClose(done) {\n this.$confirm('确认关闭?').then(function (_) {\n done();\n }).catch(function (_) {});\n },\n // 坐标转换接口\n handlePos: function handlePos() {\n var _this3 = this;\n\n if (this.coordinateTableData.some(function (item) {\n return item.btnShow === '2';\n })) {\n this.$message.warning('请先确认编辑');\n return;\n }\n\n var params = {\n CoordinateTransformationId: this.coordinateTransformationId,\n UTMArea: this.coordinateForm.num == '' ? '-1' : this.coordinateForm.num,\n Hemisphere: this.coordinateForm.value,\n CoordinateTransformation: this.coordinateForm.coordinateTransformation,\n PointData: this.coordinateTableData.map(function (item) {\n return {\n longitude: item.longitude,\n latitude: item.latitude,\n pointName: item.pointName,\n imageXCoordinate: item.imageXCoordinate,\n imageYCoordinate: item.imageYCoordinate\n };\n })\n };\n setFeixzbzh(params).then(function (res) {\n _this3.$message({\n type: 'success',\n message: res.data.msg\n });\n });\n },\n // 停车状态\n handleParking: function handleParking() {\n var _this4 = this;\n\n var params = new URLSearchParams();\n params.append('AnalysisSettingId', this.AnalysisSettingId);\n params.append('ParkingDisplacement', this.stopStateform.displacement);\n params.append('ParkingSpeed', this.stopStateform.speed);\n setParkingStatus(params).then(function (res) {\n _this4.$message({\n type: 'success',\n message: res.data.msg\n });\n });\n },\n // 车牌识别\n changeChepai: function changeChepai(val) {\n var _this5 = this;\n\n console.log(val, 'val111');\n var params = new URLSearchParams();\n params.append('AnalysisSettingId', this.AnalysisSettingId);\n params.append('LicensePlateRecognitionSwitch', val);\n setLicensePlate(params).then(function (res) {\n _this5.$message({\n type: 'success',\n message: res.data.msg\n });\n });\n },\n // 经纬度保存\n handSaveitude: function handSaveitude() {\n var _this6 = this;\n\n var params = new URLSearchParams();\n params.append('AnalysisSettingId', this.AnalysisSettingId);\n params.append('CameraPositionLongitude', this.sizeForm.longitude);\n params.append('CameraPositionLatitude', this.sizeForm.latitude);\n setCameraPosition(params).then(function (res) {\n _this6.$message({\n type: 'success',\n message: res.data.msg\n });\n });\n },\n // 收放\n handleContent: function handleContent(val) {\n if (val == 'postion') {\n this.contentShow.postion = !this.contentShow.postion;\n }\n\n if (val == 'coordinate') {\n this.contentShow.coordinate = !this.contentShow.coordinate;\n }\n\n if (val == 'plate') {\n this.contentShow.plate = !this.contentShow.plate;\n }\n\n if (val == 'parking') {\n this.contentShow.parking = !this.contentShow.parking;\n }\n },\n handleChange: function handleChange(value) {\n console.log(value);\n },\n load: function load() {\n var _this7 = this;\n\n console.log('1111');\n var iframe = document.getElementById('mapModuleTop');\n console.log('iframe', iframe);\n\n iframe.onload = function () {\n // setTimeout(() => {\n _this7.testMqtt(); // }, 5000);\n\n };\n },\n testMqtt: function testMqtt() {\n console.log('222');\n this.getDataByMqtt();\n }\n }, _defineProperty(_methods, \"handleChange\", function handleChange() {}), _defineProperty(_methods, \"handleagain\", function handleagain() {\n var _this8 = this;\n\n this.$confirm('此操作将重新启动系统, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(function () {// this.$message({\n // type: 'success',\n // message: '删除成功!'\n // });\n }).catch(function () {\n _this8.$message({\n type: 'info',\n message: '已取消'\n });\n });\n }), _defineProperty(_methods, \"handleReset\", function handleReset() {\n var _this9 = this;\n\n this.$confirm('此操作将重置默认值, 是否继续?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(function () {// this.$message({\n // type: 'success',\n // message: '删除成功!'\n // });\n }).catch(function () {\n _this9.$message({\n type: 'info',\n message: '已取消重置'\n });\n });\n }), _defineProperty(_methods, \"handleRemove\", function handleRemove(file, fileList) {\n console.log(file, fileList);\n }), _defineProperty(_methods, \"handlePreview\", function handlePreview(file) {\n console.log(file);\n }), _defineProperty(_methods, \"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 }), _defineProperty(_methods, \"beforeRemove\", function beforeRemove(file, fileList) {\n return this.$confirm(\"\\u786E\\u5B9A\\u79FB\\u9664 \".concat(file.name, \"\\uFF1F\"));\n }), _defineProperty(_methods, \"getReverseShellList\", function getReverseShellList() {\n // getShellList().then(res => {\n // if (res.code === 200) {\n // if (res.data && res.data.length > 0) {\n // \t// 获取到的数据加上 isEdit是false, 默认是文本\n // res.data.forEach(item => {\n // item['isEdit'] = false\n // })\n // }\n // this.tableData = res.data\n // 在表格列表前插入一行,用来新增数据\n this.tableData.unshift({\n name: '',\n inIp: '',\n inPort: null,\n outPort: null,\n enabled: null,\n isEdit: true\n }); // }\n // })\n }), _defineProperty(_methods, \"handleAdd\", function handleAdd(row) {\n for (var key in row) {\n // 判断一行字段是否输入完整\n if (row[key] === '' || row[key] === null || typeof row[key] === 'undefined') {\n this.msgError('Please complete the information');\n return;\n }\n }\n\n var params = {\n name: row.name,\n inIp: row.inIp // inPort: parseInt(row.inPort),\n // outPort: parseInt(row.outPort),\n // enabled: row.enabled\n\n };\n this.getReverseShellList(); // addShell(params).then(res => {\n // if (res.code === 200) {\n // this.msgSuccess('Add reverse shell successfully')\n // row.isEdit = false\n // this.getReverseShellList()\n // }\n // })\n }), _defineProperty(_methods, \"handleUpdate\", function handleUpdate(row) {\n // 点击Apply时\n if (row.isEdit) {\n for (var key in row) {\n if (row[key] === '' || row[key] === null || typeof row[key] === 'undefined') {\n this.msgError('Please complete the information');\n return;\n }\n }\n\n var params = {\n name: row.name,\n inIp: row.inIp,\n inPort: parseInt(row.inPort),\n outPort: parseInt(row.outPort),\n enabled: row.enabled\n }; // updateShell(params).then(res => {\n // if (res.code === 200) {\n // this.msgSuccess('Update reverse shell successfully')\n // this.getReverseShellList()\n // }\n // })\n } else {\n // 点击编辑时\n row.isEdit = true;\n }\n }), _defineProperty(_methods, \"handleDelete\", function handleDelete(row) {\n // 点击取消时\n if (row.isEdit) {\n this.getReverseShellList();\n } else {\n // 点击删除时\n this.$confirm('Are you sure to delete reverse shell?', 'warning', {\n confirmButtonText: 'Sure',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(function () {// deleteShell(row.name).then(res => {\n // if (res.code === 200) {\n // this.msgSuccess('Delete reverse shell successfully')\n // this.getReverseShellList()\n // }\n // })\n }).catch(function () {});\n }\n }), _defineProperty(_methods, \"getDataByMqtt\", function getDataByMqtt(url, topic, cIdNum) {\n var _this10 = this;\n\n // var that = this\n // that.$refs.iframe.contentWindow.getDestination(1)\n // console.log(\"1111\",document.getElementById(\"mapModule\"))\n // document.getElementById(\"mapModule\").contentWindow.getDestination(1)\n var clientId = 'test_id_' + String(new Date().getTime()); // 用户名\n // const host = 'ws://49.234.27.18:10087/'; // 一个测试用url,改成给的,ws://broker.emqx.io:8083/mqtt\n\n var host = 'ws://172.16.1.168:10087/';\n var options = {\n // 配置\n // 测试:订阅本机IP\n // host: host,\n // port: port,\n // host:\"172.16.1.168:10086\",\n keepalive: 60,\n // 心跳时间,默认60s,设置为0禁用\n username: 'admin',\n // 用户名(可选)\n password: '123456',\n // 密码(可选)\n clientId: clientId,\n // 客户端ID,默认随机生成\n protocolId: 'MQTT',\n protocolVersion: 4,\n clean: true,\n // false在离线时接收QoS1和2的消息\n reconnectPeriod: 2000,\n // 重连间隔,默认1000毫秒\n connectTimeout: 30 * 1000,\n // 收到CONNACK之前的等待时间\n will: {\n // 遗嘱消息(客户端严重断开连接时Broker将自动发送的消息)\n topic: 'img1',\n // 要发布的主题\n payload: '[MQTT-TEST] 遗嘱消息:连接异常断开!',\n // 要发布的消息\n qos: 0,\n // QoS(Quality of Service),QoS0:只负责发,QoS1:保证消息至少送达1次,QoS2:保证消息到且仅到1次\n retain: false // 保留标志\n\n }\n };\n\n if (this.mqttClient == undefined) {\n this.mqttClient = mqtt.connect(host, options); // 连接\n // const client = mqtt.connect(host, options); // 连接\n // const client = mqtt.connect(host) // 连接\n // 错误回调\n // console.log(\"this.mqttClient\", this.mqttClient)\n\n this.mqttClient.on('error', function (err) {\n console.log('[MQTT-TEST] 连接错误:', err);\n\n _this10.mqttClient.end();\n }); // 重连回调\n\n this.mqttClient.on('reconnect', function (reconnect) {// console.log(\"[MQTT-TEST] 重连中……\", reconnect);\n }); // 连接回调\n\n this.mqttClient.on('connect', function (connect) {\n // console.log(\"[MQTT-TEST] 已连接的客户端ID: \", connect);\n // 订阅\n _this10.mqttClient.subscribe('img0', {\n qos: 0\n });\n\n _this10.mqttClient.subscribe('img1', {\n qos: 0\n });\n\n _this10.mqttClient.subscribe('img2', {\n qos: 0\n });\n\n _this10.mqttClient.subscribe('img3', {\n qos: 0\n });\n\n _this10.mqttClient.subscribe('img4', {\n qos: 0\n });\n\n _this10.mqttClient.subscribe('img5', {\n qos: 0\n });\n\n _this10.mqttClient.subscribe('stream0', {\n qos: 0\n });\n\n _this10.mqttClient.subscribe('stream1', {\n qos: 0\n });\n\n _this10.mqttClient.subscribe('stream2', {\n qos: 0\n });\n\n _this10.mqttClient.subscribe('stream3', {\n qos: 0\n });\n\n _this10.mqttClient.subscribe('stream4', {\n qos: 0\n });\n\n _this10.mqttClient.subscribe('stream5', {\n qos: 0\n });\n }); // 接收回调\n\n this.mqttClient.on('message', function (topic, message, packet) {\n if (topic.indexOf('img0') != -1) {\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 // debugger\n // console.log(\"msg\", msg) //msg为转换后的JSON数据\n // console.log(\"msg.pic\", msg.pic)\n // debugger\n // var that = this\n // document.getElementById(\"mapModule\").contentWindow.getDestination(JSON.stringify(msg))\n // window.parent.getDestination(JSON.stringify(msg));\n // debugger\n // unity.SendMessage('AAA', 'SendImage', JSON.stringify(msg));\n // this.imgUrl = 'data:image/png;base64,' + msg.pic;\n // console.log(\"imageUrl\", imageUrl)\n // }\n // catch {\n // let imageType = 'arraybuffer';\n // const blob = new Blob([message], { type: imageType })\n // const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob)\n // // console.log(\"imageUrl\", imageUrl)\n // }\n } else if (topic.indexOf('img1') != -1) {\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\n\n console.log('msg', _msg); //msg为转换后的JSON数据\n\n _this10.imgUrl1 = 'data:image/png;base64,' + _msg.pic;\n console.log('imageUrl', imageUrl);\n } catch (_unused) {\n var imageType = 'arraybuffer';\n var blob = new Blob([message], {\n type: imageType\n });\n\n var _imageUrl = (window.URL || window.webkitURL).createObjectURL(blob);\n\n console.log('imageUrl', _imageUrl);\n }\n } else if (topic.indexOf('img2') != -1) {\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('msg', _msg2); //msg为转换后的JSON数据\n\n _this10.imgUrl2 = 'data:image/png;base64,' + _msg2.pic;\n console.log('imageUrl', imageUrl);\n } catch (_unused2) {\n var _imageType = 'arraybuffer';\n\n var _blob = new Blob([message], {\n type: _imageType\n });\n\n var _imageUrl2 = (window.URL || window.webkitURL).createObjectURL(_blob);\n\n console.log('imageUrl', _imageUrl2);\n }\n } else if (topic.indexOf('img3') != -1) {\n try {\n var _utf8decoder3 = new TextDecoder();\n\n var _u8arr3 = new Uint8Array(message);\n\n var _temp3 = _utf8decoder3.decode(_u8arr3); // 将二进制数据转为字符串\n\n\n var _msg3 = JSON.parse(_temp3); //这一步报错则返回的是二进制流图片,不报错则返回的是JSON的错误提示数据\n\n\n console.log('msg', _msg3); //msg为转换后的JSON数据\n\n _this10.imgUrl3 = 'data:image/png;base64,' + _msg3.pic;\n console.log('imageUrl', imageUrl);\n } catch (_unused3) {\n var _imageType2 = 'arraybuffer';\n\n var _blob2 = new Blob([message], {\n type: _imageType2\n });\n\n var _imageUrl3 = (window.URL || window.webkitURL).createObjectURL(_blob2);\n\n console.log('imageUrl', _imageUrl3);\n }\n } else if (topic.indexOf('img4') != -1) {\n try {\n var _utf8decoder4 = new TextDecoder();\n\n var _u8arr4 = new Uint8Array(message);\n\n var _temp4 = _utf8decoder4.decode(_u8arr4); // 将二进制数据转为字符串\n\n\n var _msg4 = JSON.parse(_temp4); //这一步报错则返回的是二进制流图片,不报错则返回的是JSON的错误提示数据\n\n\n console.log('msg', _msg4); //msg为转换后的JSON数据\n\n _this10.imgUrl4 = 'data:image/png;base64,' + _msg4.pic;\n console.log('imageUrl', imageUrl);\n } catch (_unused4) {\n var _imageType3 = 'arraybuffer';\n\n var _blob3 = new Blob([message], {\n type: _imageType3\n });\n\n var _imageUrl4 = (window.URL || window.webkitURL).createObjectURL(_blob3);\n\n console.log('imageUrl', _imageUrl4);\n }\n } else if (topic.indexOf('img5') != -1) {\n try {\n var _utf8decoder5 = new TextDecoder();\n\n var _u8arr5 = new Uint8Array(message);\n\n var _temp5 = _utf8decoder5.decode(_u8arr5); // 将二进制数据转为字符串\n\n\n var _msg5 = JSON.parse(_temp5); //这一步报错则返回的是二进制流图片,不报错则返回的是JSON的错误提示数据\n\n\n console.log('msg', _msg5); //msg为转换后的JSON数据\n\n _this10.imgUrl5 = 'data:image/png;base64,' + _msg5.pic;\n console.log('imageUrl', imageUrl);\n } catch (_unused5) {\n var _imageType4 = 'arraybuffer';\n\n var _blob4 = new Blob([message], {\n type: _imageType4\n });\n\n var _imageUrl5 = (window.URL || window.webkitURL).createObjectURL(_blob4);\n\n console.log('imageUrl', _imageUrl5);\n }\n } else if (topic.indexOf('stream0') != -1) {// console.log(\n // `[MQTT-TEST] 从主题 \"${topic}\" 收到的内容: ${message.toString()}`,\n // new Date(),\n // new Date().getMilliseconds()\n // );\n } else if (topic.indexOf('stream0') != -1) {// console.log(\n // `[MQTT-TEST] 从主题 \"${topic}\" 收到的内容: ${message.toString()}`,\n // new Date(),\n // new Date().getMilliseconds()\n // );\n } else if (topic.indexOf('stream1') != -1) {\n console.log(\"[MQTT-TEST] \\u4ECE\\u4E3B\\u9898 \\\"\".concat(topic, \"\\\" \\u6536\\u5230\\u7684\\u5185\\u5BB9: \").concat(message.toString()), new Date(), new Date().getMilliseconds());\n } else if (topic.indexOf('stream2') != -1) {\n console.log(\"[MQTT-TEST] \\u4ECE\\u4E3B\\u9898 \\\"\".concat(topic, \"\\\" \\u6536\\u5230\\u7684\\u5185\\u5BB9: \").concat(message.toString()), new Date(), new Date().getMilliseconds());\n } else if (topic.indexOf('stream3') != -1) {\n console.log(\"[MQTT-TEST] \\u4ECE\\u4E3B\\u9898 \\\"\".concat(topic, \"\\\" \\u6536\\u5230\\u7684\\u5185\\u5BB9: \").concat(message.toString()), new Date(), new Date().getMilliseconds());\n } else if (topic.indexOf('stream4') != -1) {\n console.log(\"[MQTT-TEST] \\u4ECE\\u4E3B\\u9898 \\\"\".concat(topic, \"\\\" \\u6536\\u5230\\u7684\\u5185\\u5BB9: \").concat(message.toString()), new Date(), new Date().getMilliseconds());\n } else if (topic.indexOf('stream5') != -1) {\n console.log(\"[MQTT-TEST] \\u4ECE\\u4E3B\\u9898 \\\"\".concat(topic, \"\\\" \\u6536\\u5230\\u7684\\u5185\\u5BB9: \").concat(message.toString()), new Date(), new Date().getMilliseconds());\n }\n });\n }\n }), _methods)\n};",{"version":3,"sources":["analysisConfiguration.vue"],"names":[],"mappings":"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","sourcesContent":["<template>\r\n <div class=\"analysis\">\r\n <div class=\"top\" style=\"margin-top:10px\">\r\n <div class=\"section\">\r\n <el-form :inline=\"true\" v-if=\"false\" :model=\"formInline\" class=\"demo-form-inline\" label-width=\"fit-content\">\r\n <div class=\"warning\">\r\n <p class=\"board-title\">自动保存</p>\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i\r\n >自动保存可以使系统在异常关闭后自动恢复。在这种情况下,缓存数据将会丢失,但所有存储数据将被保存。\r\n </div>\r\n <el-form-item label=\"自动保存:\">\r\n <el-switch v-model=\"formInline.user\"></el-switch>\r\n </el-form-item>\r\n <el-form-item label=\"时间间隔:\">\r\n <el-select v-model=\"formInline.region\" placeholder=\"时间间隔\">\r\n <el-option label=\"20s\" value=\"shanghai\"></el-option>\r\n <el-option label=\"30s\" value=\"beijing\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n </el-form>\r\n <el-form ref=\"form\" :model=\"sizeForm\" label-width=\"fit-content\" style=\"margin-top:15px\">\r\n <div class=\"warning\" v-if=\"false\">\r\n <p class=\"board-title\">重置分析</p>\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i>重置分析将删除所有累计的轨迹数据\r\n </div>\r\n <!-- <el-form-item > -->\r\n <el-button v-if=\"false\" type=\"primary\" @click=\"handleagain()\" size=\"small\" style=\"width: 150px\">重置</el-button>\r\n <div class=\"warning\" style=\"margin-top:15px\" @click=\"handleContent('postion')\">\r\n <i\r\n :class=\"contentShow.postion == false ? 'el-icon-arrow-right' : 'el-icon-arrow-down'\"\r\n style=\"font-weight: 600;font-size: 18px;margin-right: 5px;\"\r\n ></i>\r\n <p class=\"board-title\">相机位置</p>\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i> 在 WGS84 坐标系中输入相机位置\r\n </div>\r\n <el-form-item label=\"相机位置:\" v-if=\"contentShow.postion\">\r\n <el-input v-model=\"sizeForm.longitude\" size=\"small\" style=\"width: 150px\" placeholder=\"经度\"></el-input>\r\n <el-input\r\n v-model=\"sizeForm.latitude\"\r\n size=\"small\"\r\n style=\"width: 150px; margin-left: 20px\"\r\n placeholder=\"纬度\"\r\n ></el-input>\r\n </el-form-item>\r\n </el-form>\r\n <div style=\"margin-top: 15px\" v-if=\"contentShow.postion\">\r\n <el-button type=\"primary\" @click=\"handSaveitude()\" size=\"small\" style=\"width: 150px\">保存</el-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"dataBoard\">\r\n <div class=\"section\">\r\n <div class=\"warning\" @click=\"handleContent('coordinate')\">\r\n <i\r\n :class=\"contentShow.coordinate == false ? 'el-icon-arrow-right' : 'el-icon-arrow-down'\"\r\n style=\"font-weight: 600;font-size: 18px;margin-right: 5px;\"\r\n ></i>\r\n <p class=\"board-title\">坐标转换</p>\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i\r\n >通过将图像坐标系转换为物理坐标系,地理参考使您能够将像素测量转换为真实速度和距离。\r\n </div>\r\n <el-form ref=\"form\" :model=\"coordinateForm\" label-width=\"fit-content\" v-if=\"contentShow.coordinate\">\r\n <!-- <el-form-item label=\"坐标转换开关:\">\r\n <el-switch v-model=\"coordinateForm.coordinateClose\"></el-switch>\r\n </el-form-item> -->\r\n <el-form-item label=\"UTM区:\" class=\"otherThings\">\r\n <el-input-number\r\n v-model=\"coordinateForm.num\"\r\n controls-position=\"right\"\r\n :precision=\"0\"\r\n size=\"small\"\r\n :min=\"1\"\r\n :max=\"60\"\r\n ></el-input-number>\r\n <div class=\"warning\" style=\"margin:0px\">\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i\r\n >地理参照允许测量物理速度和静态图像源的距离,值范围1-60。\r\n </div>\r\n </el-form-item>\r\n <el-form-item label=\"半球:\">\r\n <el-select size=\"small\" v-model=\"coordinateForm.value\" placeholder=\"请选择\">\r\n <el-option v-for=\"item in options\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\"> </el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"坐标转换:\">\r\n <el-radio-group v-model=\"coordinateForm.coordinateTransformation\">\r\n <el-radio label=\"WGS-84坐标系\"></el-radio>\r\n <el-radio label=\"其他\"></el-radio>\r\n </el-radio-group>\r\n </el-form-item>\r\n <div style=\"width: 100%; height: 702px; margin-bottom: 10px\">\r\n <iframe ref=\"analysisWeb\" src=\"./analysisWeb/index.html\" frameborder=\"0\" style=\"width: 100%; height: 100%\"></iframe>\r\n </div>\r\n <div class=\"warning\">\r\n <el-button size=\"mini\" type=\"primary\" style=\"color: #fffff\" @click=\"handleDian\">新增点 </el-button>\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i>请至少配置4个点,不满足4个点会没有数据。\r\n </div>\r\n <el-table border :data=\"coordinateTableData\">\r\n <template slot=\"empty\">\r\n <el-empty :image-size=\"100\" description=\"暂无数据\"></el-empty>\r\n </template>\r\n <el-table-column prop=\"pointName\" label=\"点名称\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n <el-input\r\n :disabled=\"scope.row.btnShow == '1' ? true : false\"\r\n v-model=\"scope.row.pointName\"\r\n maxlength=\"30\"\r\n placeholder=\"请输入\"\r\n @blur=\"updateName($event)\"\r\n />\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"longitude\" label=\"经度\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n <el-input\r\n :disabled=\"scope.row.btnShow == '1' ? true : false\"\r\n v-model=\"scope.row.longitude\"\r\n maxlength=\"20\"\r\n placeholder=\"请输入\"\r\n />\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"latitude\" label=\"纬度\" align=\"center\">\r\n <template v-slot=\"{ row, $index }\">\r\n <el-input\r\n :disabled=\"row.btnShow == '1' ? true : false\"\r\n v-model=\"row.latitude\"\r\n maxlength=\"20\"\r\n placeholder=\"请输入\"\r\n />\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"oldName\" label=\"旧名字\" align=\"center\" v-if=\"laneform.laneClose == true\">\r\n <template slot-scope=\"scope\">\r\n <el-input v-model=\"scope.row.oldName\" maxlength=\"20\" placeholder=\"请输入\" />\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作\" align=\"center\" class-name=\"small-padding fixed-width\">\r\n <template v-slot=\"{ row, $index }\">\r\n <el-button\r\n size=\"mini\"\r\n type=\"text\"\r\n style=\"color: #2090c1\"\r\n v-if=\"row.btnShow == '1' ? true : false\"\r\n @click=\"handleExit(row, $index)\"\r\n >编辑\r\n </el-button>\r\n <el-button size=\"mini\" type=\"text\" style=\"color: #2090c1\" v-else @click=\"handleconfirm(row, $index)\"\r\n >确认编辑\r\n </el-button>\r\n <el-button size=\"mini\" type=\"text\" style=\"color: #f56c6c\" @click=\"handleDeleteDian(row, $index)\"\r\n >删除\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div style=\"margin-top: 15px\">\r\n <el-button\r\n type=\"primary\"\r\n :disabled=\"coordinateTableData.length < 4\"\r\n @click=\"handlePos()\"\r\n size=\"small\"\r\n style=\"width: 150px\"\r\n >保存</el-button\r\n >\r\n </div>\r\n </el-form>\r\n </div>\r\n </div>\r\n <div class=\"dataBoard\" v-if=\"false\">\r\n <div class=\"section\">\r\n <div class=\"warning\">\r\n <p class=\"board-title\">车道识别配置</p>\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i>在视频/动图上设置进口出口道\r\n </div>\r\n <el-form ref=\"form\" :model=\"laneform\" label-width=\"350px\">\r\n <!-- <p>车道识别配置</p> -->\r\n <el-form-item label=\"车道识别配置开关:\" label-width=\"150px\">\r\n <el-switch v-model=\"laneform.laneClose\"></el-switch>\r\n </el-form-item>\r\n <div style=\"width: 100%; height: 400px\" v-if=\"laneform.laneClose == true\">\r\n <iframe id=\"mapModule\" src=\"./VideoWeb/index.html\" frameborder=\"0\" style=\"width: 100%; height: 100%\"></iframe>\r\n </div>\r\n <el-form-item label=\"各车道中心线(区域检测器):\" style=\"width: 300px\" v-if=\"laneform.laneClose == true\">\r\n <el-switch v-model=\"laneform.areaDetector\"></el-switch>\r\n </el-form-item>\r\n <el-form-item label=\"自动识别各车道中心点坐标(断面检测器):\" style=\"width: 300px\" v-if=\"laneform.laneClose == true\">\r\n <el-switch v-model=\"laneform.sectionDetector\"></el-switch>\r\n </el-form-item>\r\n <el-button type=\"primary\" @click=\"handleagain()\" size=\"small\" style=\"width: 150px\" v-if=\"laneform.laneClose == true\"\r\n >保存</el-button\r\n >\r\n </el-form>\r\n </div>\r\n </div>\r\n <div class=\"dataBoard\" v-if=\"false\">\r\n <div class=\"section\">\r\n <div class=\"warning\">\r\n <p class=\"board-title\">识别区域</p>\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i\r\n >您可以自定义进行视频分析的区域,区域之外的部分将被忽略。此功能可以帮助您检测和跟踪高分辨率视频特定部分的较小对象,实现检测器的数字变焦功能。\r\n </div>\r\n\r\n <el-form ref=\"form\" :model=\"identificationAreaform\" label-width=\"fit-content\">\r\n <!-- <p>车道识别配置</p> -->\r\n\r\n <el-form-item label=\"识别区域开关:\" style=\"width: 250px\">\r\n <el-switch v-model=\"identificationAreaform.identificationAreaClose\"></el-switch>\r\n </el-form-item>\r\n <div style=\"width: 100%; height: 400px\" v-if=\"identificationAreaform.identificationAreaClose == true\">\r\n <iframe id=\"mapModule\" src=\"./VideoWeb/index.html\" frameborder=\"0\" style=\"width: 100%; height: 100%\"></iframe>\r\n </div>\r\n <el-button\r\n type=\"primary\"\r\n @click=\"handleagain()\"\r\n size=\"small\"\r\n style=\"width: 150px\"\r\n v-if=\"identificationAreaform.identificationAreaClose == true\"\r\n >保存</el-button\r\n >\r\n </el-form>\r\n </div>\r\n </div>\r\n <div class=\"dataBoard\" v-if=\"false\">\r\n <div class=\"section\">\r\n <div class=\"warning\">\r\n <p class=\"board-title\">轨迹平滑</p>\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i\r\n >为轨迹预测滤波算法定义细化轨迹的时间窗口。数值越小,延迟越小,适用于实时性要求高的场景;数值越大,轨迹的连续性越好,目标即使越过一些障碍也不容易丢失。\r\n </div>\r\n <el-form ref=\"form\" :model=\"trajectorySmoothingform\" label-width=\"fit-content\">\r\n <el-form-item label=\"轨迹平滑开关:\" style=\"width: 250px\">\r\n <el-switch v-model=\"trajectorySmoothingform.trajectorySmoothingClose\"></el-switch>\r\n </el-form-item>\r\n <el-form-item\r\n label=\"预测滤波时间:\"\r\n style=\"width: 250px\"\r\n v-if=\"trajectorySmoothingform.trajectorySmoothingClose == true\"\r\n >\r\n <el-input-number\r\n v-model=\"trajectorySmoothingform.time\"\r\n @change=\"handleChange\"\r\n :min=\"2000\"\r\n :max=\"3000\"\r\n label=\"预测滤波时间\"\r\n ></el-input-number>\r\n </el-form-item>\r\n <el-button\r\n type=\"primary\"\r\n @click=\"handleagain()\"\r\n size=\"small\"\r\n style=\"width: 150px\"\r\n v-if=\"trajectorySmoothingform.trajectorySmoothingClose == true\"\r\n >保存</el-button\r\n >\r\n </el-form>\r\n </div>\r\n </div>\r\n <div class=\"dataBoard\">\r\n <div class=\"section\">\r\n <div class=\"warning\" @click=\"handleContent('plate')\">\r\n <i\r\n :class=\"contentShow.plate == false ? 'el-icon-arrow-right' : 'el-icon-arrow-down'\"\r\n style=\"font-weight: 600;font-size: 18px;margin-right: 5px;\"\r\n ></i>\r\n <p class=\"board-title\">车牌识别</p>\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i\r\n >车牌识别开关。牌照信息表示与目标属性。(断面号牌,与断面设置关联)\r\n </div>\r\n <el-form ref=\"form\" :model=\"licensePlateform\" label-width=\"fit-content\" v-if=\"contentShow.plate\">\r\n <el-form-item label=\"车牌识别开关:\">\r\n <el-switch\r\n v-model=\"licensePlateform.licensePlateClose\"\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 <!-- <div style=\"width: 100%; height: 400px; margin-bottom: 10px\" v-if=\"licensePlateform.licensePlateClose == true\"> -->\r\n <div style=\"width: 100%; height: 400px; margin-bottom: 10px\" v-if=\"false\">\r\n <iframe id=\"mapModule\" src=\"./VideoWeb/index.html\" frameborder=\"0\" style=\"width: 100%; height: 100%\"></iframe>\r\n </div>\r\n <!-- <el-table border :data=\"licensePlateTableData\" v-if=\"licensePlateform.licensePlateClose == true\"> -->\r\n <el-table border :data=\"licensePlateTableData\" v-if=\"false\">\r\n <el-table-column prop=\"sectionPlate\" label=\"断面号牌\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n <el-input\r\n v-if=\"scope.$index === 0\"\r\n v-model=\"scope.row.sectionPlate\"\r\n maxlength=\"30\"\r\n placeholder=\"Required\"\r\n />\r\n <span v-else v-text=\"scope.row.sectionPlate\"></span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"setAssociation\" label=\"断面设置关联:\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n <el-input\r\n v-if=\"scope.row.isEdit\"\r\n v-model=\"scope.row.setAssociation\"\r\n maxlength=\"20\"\r\n placeholder=\"Required\"\r\n />\r\n <span v-else v-text=\"scope.row.setAssociation\"></span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column prop=\"thresholdValue\" label=\"车牌匹配阈值:\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n <el-input\r\n v-if=\"scope.row.isEdit\"\r\n v-model=\"scope.row.thresholdValue\"\r\n maxlength=\"20\"\r\n placeholder=\"Required\"\r\n />\r\n <span v-else v-text=\"scope.row.thresholdValue\"></span>\r\n </template>\r\n </el-table-column>\r\n <el-table-column label=\"操作:\" align=\"center\" class-name=\"small-padding fixed-width\">\r\n <template slot-scope=\"scope\">\r\n <el-button\r\n v-if=\"scope.$index === 0\"\r\n size=\"mini\"\r\n type=\"text\"\r\n style=\"color: #2090c1\"\r\n @click=\"handleAdd(scope.row)\"\r\n >Add\r\n </el-button>\r\n <el-button\r\n v-if=\"scope.$index !== 0\"\r\n size=\"mini\"\r\n type=\"text\"\r\n style=\"color: #2090c1\"\r\n @click=\"handleUpdate(scope.row)\"\r\n >{{ scope.row.isEdit ? 'Apply' : 'Edit' }}\r\n </el-button>\r\n <el-button\r\n v-if=\"scope.$index !== 0\"\r\n size=\"mini\"\r\n type=\"text\"\r\n style=\"color: #f56c6c\"\r\n @click=\"handleDelete(scope.row)\"\r\n >{{ scope.row.isEdit ? 'Cancel' : 'Delete' }}\r\n </el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div style=\"margin-top: 15px\" v-if=\"false\">\r\n <el-button\r\n type=\"primary\"\r\n @click=\"handleagain()\"\r\n size=\"small\"\r\n style=\"width: 150px\"\r\n v-if=\"licensePlateform.licensePlateClose == true\"\r\n >保存</el-button\r\n >\r\n </div>\r\n </el-form>\r\n </div>\r\n </div>\r\n <div class=\"dataBoard\">\r\n <div class=\"section\">\r\n <div class=\"warning\" @click=\"handleContent('parking')\">\r\n <i\r\n :class=\"contentShow.parking == false ? 'el-icon-arrow-right' : 'el-icon-arrow-down'\"\r\n style=\"font-weight: 600;font-size: 18px;margin-right: 5px;\"\r\n ></i>\r\n <p class=\"board-title\">停车状态</p>\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i\r\n >位移、速度,例如位移<δ,速度<v,则判断车辆停车\r\n </div>\r\n <el-form\r\n :inline=\"true\"\r\n :model=\"stopStateform\"\r\n class=\"demo-form-inline\"\r\n label-width=\"fit-content\"\r\n v-if=\"contentShow.parking\"\r\n >\r\n <el-form-item label=\"位移:\" style=\"margin-right:10px\">\r\n <el-input-number\r\n v-model=\"stopStateform.displacement\"\r\n @change=\"handleChange\"\r\n :min=\"0\"\r\n :max=\"3000\"\r\n label=\"位移\"\r\n ></el-input-number>\r\n </el-form-item>\r\n <el-form-item label=\"速度:\" style=\"margin-right:10px\">\r\n <el-input-number\r\n v-model=\"stopStateform.speed\"\r\n @change=\"handleChange\"\r\n :min=\"0\"\r\n :max=\"3000\"\r\n label=\"速度\"\r\n ></el-input-number>\r\n </el-form-item>\r\n <el-form-item label=\"加速度:\" v-if=\"false\">\r\n <el-input-number\r\n v-model=\"stopStateform.acceleration\"\r\n @change=\"handleChange\"\r\n :min=\"2000\"\r\n :max=\"3000\"\r\n label=\"加速度\"\r\n ></el-input-number>\r\n </el-form-item>\r\n </el-form>\r\n <div style=\"margin-top: 15px\" v-if=\"contentShow.parking\">\r\n <el-button type=\"primary\" @click=\"handleParking()\" size=\"small\" style=\"width: 150px\">保存</el-button>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"dataBoard\" v-if=\"false\">\r\n <div class=\"section\">\r\n <div class=\"warning\">\r\n <p class=\"board-title\">通信设置</p>\r\n <i class=\"el-icon-warning\" style=\"color: #409eff; margin: 0 3px 0 10px\"></i>更新频率可以根据链路带宽进行设置。\r\n </div>\r\n <el-form :model=\"communicationform\" class=\"demo-form-inline\" label-width=\"fit-content\">\r\n <el-form-item label=\"更新频率:\">\r\n <el-input v-model=\"communicationform.renewalFrequency\" style=\"width: 200px\"></el-input>\r\n </el-form-item>\r\n\r\n <el-form-item label=\"类型:\" style=\"display:flex\">\r\n <el-radio-group v-model=\"communicationform.type\">\r\n <el-radio label=\"快速-用于高带宽连接\"></el-radio>\r\n <el-radio label=\"平衡-适用于大多数连接\"></el-radio>\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=\"请求轻型有效载荷:\" v-if=\"communicationform.type == '自定义'\">\r\n <el-input v-model=\"communicationform.name\" style=\"width: 200px; margin-bottom: 20px\"></el-input>ms\r\n </el-form-item>\r\n <el-form-item label=\"请求重型有效载荷:\" v-if=\"communicationform.type == '自定义'\">\r\n <el-input v-model=\"communicationform.name\" style=\"width: 200px; margin-bottom: 20px\"></el-input>ms\r\n </el-form-item>\r\n <el-form-item label=\"FPS分配器:\" v-if=\"communicationform.type == '自定义'\">\r\n <el-input v-model=\"communicationform.name\" style=\"width: 200px; margin-bottom: 20px\"></el-input>\r\n </el-form-item>\r\n <el-form-item label=\"框架决议:\" v-if=\"communicationform.type == '自定义'\">\r\n <el-select v-model=\"communicationform.region\" placeholder=\"框架决议\" style=\"margin-bottom: 20px\">\r\n <el-option label=\"自动\" value=\"shanghai\"></el-option>\r\n <el-option label=\"区域二\" value=\"beijing\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"压缩格式:\" v-if=\"communicationform.type == '自定义'\">\r\n <el-select v-model=\"communicationform.region\" placeholder=\"压缩格式\" style=\"margin-bottom: 20px\">\r\n <el-option label=\"JPG\" value=\"shanghai\"></el-option>\r\n <el-option label=\"区域二\" value=\"beijing\"></el-option>\r\n </el-select>\r\n </el-form-item>\r\n <el-form-item label=\"压缩率:\" v-if=\"communicationform.type == '自定义'\">\r\n <el-input v-model=\"communicationform.name\" style=\"width: 200px\"></el-input>\r\n </el-form-item>\r\n <el-button type=\"primary\" @click=\"handleagain()\" size=\"small\" style=\"width: 150px\">保存</el-button>\r\n </el-form>\r\n </div>\r\n </div>\r\n <!-- <el-dialog\r\n title=\"新增点\"\r\n :visible.sync=\"dialogVisible\"\r\n width=\"30%\"\r\n >\r\n <el-form ref=\"addform\" :rules=\"formRules\" :model=\"addDianForm\" label-position=\"left\" label-width=\"85px\">\r\n <el-form-item label=\"点名称:\" prop=\"pointName\" style=\"margin-bottom:15px\">\r\n <el-col :span=\"16\">\r\n <el-input v-model=\"addDianForm.pointName\" placeholder=\"请输入点名称\" @blur=\"phoneChange($event)\"></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"经度:\" style=\"margin-bottom:15px\" prop=\"longitude\">\r\n <el-col :span=\"16\">\r\n <el-input v-model=\"addDianForm.longitude\" oninput =\"value=value.replace(/[^0-9.]/g,'')\" placeholder=\"请输入经度\"></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"纬度:\" prop=\"latitude\">\r\n <el-col :span=\"16\">\r\n <el-input v-model=\"addDianForm.latitude\" oninput =\"value=value.replace(/[^0-9.]/g,'')\" placeholder=\"请输入纬度\"></el-input>\r\n </el-col>\r\n </el-form-item>\r\n <el-form-item label=\"旧名称:\" prop=\"latitude\" v-if=\"laneform.laneClose == true\">\r\n <el-col :span=\"16\">\r\n <el-input v-model=\"addDianForm.oldName\"></el-input>\r\n </el-col>\r\n </el-form-item>\r\n </el-form>\r\n <span slot=\"footer\" class=\"dialog-footer\">\r\n <el-button @click=\"dialogVisible = false\">取 消</el-button>\r\n <el-button type=\"primary\" @click=\"handleDian('addform')\">确 定</el-button>\r\n </span>\r\n </el-dialog> -->\r\n </div>\r\n</template>\r\n\r\n<script>\r\nimport mqtt from 'mqtt'; // mqtt协议\r\nimport { getFeixpz, setCameraPosition, setLicensePlate, setParkingStatus, setFeixzbzh } from '@/api/index';\r\nexport default {\r\n props: {\r\n analysisConfigurationdata: {\r\n default: () => false,\r\n type: Object,\r\n required: true\r\n }\r\n },\r\n data() {\r\n return {\r\n unityDone: false,\r\n oldName: '',\r\n formRules: {\r\n pointName: [{ required: true, message: '请输入点名称', trigger: 'blur' }],\r\n longitude: [{ required: true, message: '请输入经度', trigger: 'blur' }],\r\n latitude: [{ required: true, message: '请输入纬度', trigger: 'blur' }]\r\n },\r\n addDianForm: {\r\n pointName: '',\r\n longitude: '',\r\n latitude: '',\r\n oldName: ''\r\n },\r\n dialogVisible: false,\r\n coordinateTransformationId: '',\r\n AnalysisSettingId: '',\r\n contentShow: {\r\n postion: true,\r\n coordinate: false,\r\n plate: true,\r\n parking: true\r\n },\r\n sizeForm: {\r\n name: '',\r\n region: '',\r\n date1: '',\r\n date2: '',\r\n delivery: false,\r\n type: [],\r\n resource: '',\r\n desc: '',\r\n longitude: '',\r\n latitude: ''\r\n },\r\n formInline: {\r\n user: '',\r\n region: ''\r\n },\r\n //最上部表单\r\n topForm: {},\r\n //坐标转换\r\n coordinateForm: {\r\n coordinateClose: false,\r\n model: 'Georeferencing',\r\n coordinateTransformation: '84坐标系',\r\n value: '0',\r\n num: 1\r\n },\r\n options: [\r\n {\r\n value: '南',\r\n label: '南'\r\n },\r\n {\r\n value: '北',\r\n label: '北'\r\n }\r\n ],\r\n coordinateTableData: [],\r\n //车道识别配置\r\n laneform: {\r\n laneClose: false,\r\n areaDetector: false,\r\n sectionDetector: false\r\n },\r\n //识别区域\r\n identificationAreaform: {\r\n identificationAreaClose: false\r\n },\r\n //轨迹平滑\r\n trajectorySmoothingform: {\r\n trajectorySmoothingClose: false,\r\n time: ''\r\n },\r\n // 车牌识别\r\n licensePlateform: {\r\n licensePlateClose: 0\r\n },\r\n licensePlateTableData: [\r\n {\r\n thresholdValue: '11',\r\n sectionPlate: '111',\r\n inIp: '01',\r\n setAssociation: ''\r\n },\r\n {\r\n thresholdValue: '22',\r\n sectionPlate: '222',\r\n inIp: '02',\r\n setAssociation: ''\r\n },\r\n {\r\n thresholdValue: '33',\r\n sectionPlate: '333',\r\n inIp: '03',\r\n setAssociation: ''\r\n }\r\n ],\r\n //停车状态\r\n stopStateform: {\r\n displacement: '2000',\r\n speed: '2000',\r\n acceleration: '2000'\r\n },\r\n //通信设置\r\n communicationform: {\r\n type: '快速-用于高带宽连接',\r\n renewalFrequency: ''\r\n },\r\n form: {\r\n name: '',\r\n region: '',\r\n date1: '',\r\n date2: '',\r\n delivery: false,\r\n type: [],\r\n resource: '',\r\n desc: ''\r\n },\r\n tableData: [\r\n {\r\n name: '11',\r\n inPort: '111',\r\n inIp: '01'\r\n },\r\n {\r\n name: '22',\r\n inPort: '222',\r\n inIp: '02'\r\n },\r\n {\r\n name: '33',\r\n inPort: '333',\r\n inIp: '03'\r\n }\r\n ],\r\n internalIpList: [],\r\n fileList: []\r\n };\r\n },\r\n watch: {\r\n analysisConfigurationdata: {\r\n handler: function(old, newV) {\r\n // console.log(\"old\",old)\r\n // console.log(\"newV\",newV)\r\n if (newV != null && this.unityDone == true) {\r\n console.log(newV, 'yyy');\r\n this.$refs.analysisWeb.contentWindow.getDestination(newV);\r\n }\r\n }\r\n }\r\n },\r\n created() {\r\n // this.getDataByMqtt()\r\n // this.testMqtt()\r\n // var iframe = document.getElementById(\"mapModule\");\r\n // iframe.onload = function () {\r\n // setTimeout(() => {\r\n // this.testMqtt()\r\n // }, 5000);\r\n // };\r\n // iframe.onload = () => {\r\n // setTimeout(() => {\r\n // this.load()\r\n // }, 5000);// 这样每次都会触发\r\n // }\r\n getFeixpz({ VideoId: this.$route.query.id }).then(res => {\r\n this.sizeForm.longitude = res.data.data.cameraPositionLongitude;\r\n this.sizeForm.latitude = res.data.data.cameraPositionLatitude;\r\n this.coordinateForm.num = res.data.data.utmArea == '-1' ? '' : res.data.data.utmArea;\r\n this.coordinateForm.value = res.data.data.hemisphere;\r\n this.coordinateForm.coordinateTransformation = res.data.data.coordinateTransformation;\r\n this.coordinateTableData =\r\n res.data.data.pointData != null\r\n ? res.data.data.pointData.map(item => {\r\n return { ...item, btnShow: '1' };\r\n })\r\n : [];\r\n this.licensePlateform.licensePlateClose = res.data.data.licensePlateRecognitionSwitch;\r\n this.stopStateform.displacement = res.data.data.parkingDisplacement;\r\n this.stopStateform.speed = res.data.data.parkingSpeed;\r\n this.AnalysisSettingId = res.data.data.analysisSettingId;\r\n this.coordinateTransformationId = res.data.data.coordinateTransformationId;\r\n this.coordinateTableData.forEach(item => {\r\n item.btnShow = '1';\r\n });\r\n });\r\n },\r\n mounted() {\r\n window.OnSceneload = this.OnSceneload;\r\n window.saveCoordinate = this.saveCoordinate;\r\n },\r\n methods: {\r\n saveCoordinate(obj) {\r\n console.log(obj);\r\n this.coordinateTableData.forEach(item => {\r\n if (item.pointName == obj.pointName) {\r\n item.imageXCoordinate = obj.imageXCoordinate;\r\n item.imageYCoordinate = obj.imageYCoordinate;\r\n }\r\n });\r\n },\r\n\r\n updateName(val) {\r\n console.log('val', val.target.value);\r\n },\r\n handleExit(row, index) {\r\n // this.oldName = row.pointName\r\n row.oldName = row.pointName;\r\n this.$refs.analysisWeb.contentWindow.exitPoint(row.pointName);\r\n row.btnShow = '2';\r\n // this.$set(this.coordinateTableData, index, row);\r\n },\r\n handleconfirm(row, index) {\r\n var bol = this.coordinateTableData.some((item, indexa) => item.pointName == row.pointName && indexa != index);\r\n if (bol == true) {\r\n this.$message({\r\n type: 'info',\r\n message: '该点位已存在'\r\n });\r\n return false;\r\n }\r\n var string = row.oldName + ',' + row.pointName;\r\n this.$refs.analysisWeb.contentWindow.saveDian(string);\r\n row.btnShow = '1';\r\n row.oldName = row.pointName;\r\n // this.$set(this.coordinateTableData, index, row);\r\n },\r\n OnSceneload(newV) {\r\n this.$refs.analysisWeb.contentWindow.getDianwei(this.$route.query.id);\r\n this.unityDone = true;\r\n },\r\n handleDeleteDian(row, idx) {\r\n this.$confirm('此操作将删除该点位, 是否继续?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(() => {\r\n this.coordinateTableData.splice(idx, 1);\r\n // this.coordinateTableData = this.coordinateTableData.filter(item => item.pointName != row.pointName);\r\n this.$refs.analysisWeb.contentWindow.deletePoint(row.oldName);\r\n this.$message({\r\n type: 'success',\r\n message: '删除成功!'\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 handleDian() {\r\n const newPointData = {\r\n btnShow: '2',\r\n longitude: '0',\r\n latitude: '0'\r\n };\r\n newPointData.oldName = newPointData.pointName = String(new Date().getTime());\r\n this.coordinateTableData.unshift(newPointData);\r\n this.$refs.analysisWeb.contentWindow.setPOS(newPointData.pointName);\r\n },\r\n phoneChange(e) {\r\n console.log('e', e.currentTarget.value);\r\n this.addDianForm.oldName = e.currentTarget.value;\r\n },\r\n handleClose(done) {\r\n this.$confirm('确认关闭?')\r\n .then(_ => {\r\n done();\r\n })\r\n .catch(_ => {});\r\n },\r\n // 坐标转换接口\r\n handlePos() {\r\n if (this.coordinateTableData.some(item => item.btnShow === '2')) {\r\n this.$message.warning('请先确认编辑');\r\n return;\r\n }\r\n let params = {\r\n CoordinateTransformationId: this.coordinateTransformationId,\r\n UTMArea: this.coordinateForm.num == '' ? '-1' : this.coordinateForm.num,\r\n Hemisphere: this.coordinateForm.value,\r\n CoordinateTransformation: this.coordinateForm.coordinateTransformation,\r\n PointData: this.coordinateTableData.map(item => {\r\n return {\r\n longitude: item.longitude,\r\n latitude: item.latitude,\r\n pointName: item.pointName,\r\n imageXCoordinate: item.imageXCoordinate,\r\n imageYCoordinate: item.imageYCoordinate\r\n };\r\n })\r\n };\r\n setFeixzbzh(params).then(res => {\r\n this.$message({\r\n type: 'success',\r\n message: res.data.msg\r\n });\r\n });\r\n },\r\n // 停车状态\r\n handleParking() {\r\n const params = new URLSearchParams();\r\n params.append('AnalysisSettingId', this.AnalysisSettingId);\r\n params.append('ParkingDisplacement', this.stopStateform.displacement);\r\n params.append('ParkingSpeed', this.stopStateform.speed);\r\n setParkingStatus(params).then(res => {\r\n this.$message({\r\n type: 'success',\r\n message: res.data.msg\r\n });\r\n });\r\n },\r\n // 车牌识别\r\n changeChepai(val) {\r\n console.log(val, 'val111');\r\n const params = new URLSearchParams();\r\n params.append('AnalysisSettingId', this.AnalysisSettingId);\r\n params.append('LicensePlateRecognitionSwitch', val);\r\n setLicensePlate(params).then(res => {\r\n this.$message({\r\n type: 'success',\r\n message: res.data.msg\r\n });\r\n });\r\n },\r\n // 经纬度保存\r\n handSaveitude() {\r\n const params = new URLSearchParams();\r\n params.append('AnalysisSettingId', this.AnalysisSettingId);\r\n params.append('CameraPositionLongitude', this.sizeForm.longitude);\r\n params.append('CameraPositionLatitude', this.sizeForm.latitude);\r\n setCameraPosition(params).then(res => {\r\n this.$message({\r\n type: 'success',\r\n message: res.data.msg\r\n });\r\n });\r\n },\r\n // 收放\r\n handleContent(val) {\r\n if (val == 'postion') {\r\n this.contentShow.postion = !this.contentShow.postion;\r\n }\r\n if (val == 'coordinate') {\r\n this.contentShow.coordinate = !this.contentShow.coordinate;\r\n }\r\n if (val == 'plate') {\r\n this.contentShow.plate = !this.contentShow.plate;\r\n }\r\n if (val == 'parking') {\r\n this.contentShow.parking = !this.contentShow.parking;\r\n }\r\n },\r\n handleChange(value) {\r\n console.log(value);\r\n },\r\n load() {\r\n console.log('1111');\r\n var iframe = document.getElementById('mapModuleTop');\r\n console.log('iframe', iframe);\r\n iframe.onload = () => {\r\n // setTimeout(() => {\r\n this.testMqtt();\r\n // }, 5000);\r\n };\r\n },\r\n testMqtt() {\r\n console.log('222');\r\n this.getDataByMqtt();\r\n },\r\n handleChange() {},\r\n handleagain() {\r\n this.$confirm('此操作将重新启动系统, 是否继续?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(() => {\r\n // this.$message({\r\n // type: 'success',\r\n // message: '删除成功!'\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 handleReset() {\r\n this.$confirm('此操作将重置默认值, 是否继续?', '提示', {\r\n confirmButtonText: '确定',\r\n cancelButtonText: '取消',\r\n type: 'warning'\r\n })\r\n .then(() => {\r\n // this.$message({\r\n // type: 'success',\r\n // message: '删除成功!'\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 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(\r\n `当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${files.length + fileList.length} 个文件`\r\n );\r\n },\r\n beforeRemove(file, fileList) {\r\n return this.$confirm(`确定移除 ${file.name}?`);\r\n },\r\n // 获取列表\r\n getReverseShellList() {\r\n // getShellList().then(res => {\r\n // if (res.code === 200) {\r\n // if (res.data && res.data.length > 0) {\r\n // \t// 获取到的数据加上 isEdit是false, 默认是文本\r\n // res.data.forEach(item => {\r\n // item['isEdit'] = false\r\n // })\r\n // }\r\n // this.tableData = res.data\r\n // 在表格列表前插入一行,用来新增数据\r\n this.tableData.unshift({\r\n name: '',\r\n inIp: '',\r\n inPort: null,\r\n outPort: null,\r\n enabled: null,\r\n isEdit: true\r\n });\r\n // }\r\n // })\r\n },\r\n // 新增按钮\r\n handleAdd(row) {\r\n for (let key in row) {\r\n // 判断一行字段是否输入完整\r\n if (row[key] === '' || row[key] === null || typeof row[key] === 'undefined') {\r\n this.msgError('Please complete the information');\r\n return;\r\n }\r\n }\r\n const params = {\r\n name: row.name,\r\n inIp: row.inIp\r\n // inPort: parseInt(row.inPort),\r\n // outPort: parseInt(row.outPort),\r\n // enabled: row.enabled\r\n };\r\n this.getReverseShellList();\r\n // addShell(params).then(res => {\r\n // if (res.code === 200) {\r\n // this.msgSuccess('Add reverse shell successfully')\r\n // row.isEdit = false\r\n // this.getReverseShellList()\r\n // }\r\n // })\r\n },\r\n // 编辑或者Apply按钮\r\n handleUpdate(row) {\r\n // 点击Apply时\r\n if (row.isEdit) {\r\n for (let key in row) {\r\n if (row[key] === '' || row[key] === null || typeof row[key] === 'undefined') {\r\n this.msgError('Please complete the information');\r\n return;\r\n }\r\n }\r\n const params = {\r\n name: row.name,\r\n inIp: row.inIp,\r\n inPort: parseInt(row.inPort),\r\n outPort: parseInt(row.outPort),\r\n enabled: row.enabled\r\n };\r\n // updateShell(params).then(res => {\r\n // if (res.code === 200) {\r\n // this.msgSuccess('Update reverse shell successfully')\r\n // this.getReverseShellList()\r\n // }\r\n // })\r\n } else {\r\n // 点击编辑时\r\n row.isEdit = true;\r\n }\r\n },\r\n // 删除或取消按钮\r\n handleDelete(row) {\r\n // 点击取消时\r\n if (row.isEdit) {\r\n this.getReverseShellList();\r\n } else {\r\n // 点击删除时\r\n this.$confirm('Are you sure to delete reverse shell?', 'warning', {\r\n confirmButtonText: 'Sure',\r\n cancelButtonText: 'Cancel',\r\n type: 'warning'\r\n })\r\n .then(() => {\r\n // deleteShell(row.name).then(res => {\r\n // if (res.code === 200) {\r\n // this.msgSuccess('Delete reverse shell successfully')\r\n // this.getReverseShellList()\r\n // }\r\n // })\r\n })\r\n .catch(() => {});\r\n }\r\n },\r\n // mqtt订阅(独立)\r\n getDataByMqtt(url, topic, cIdNum) {\r\n // var that = this\r\n // that.$refs.iframe.contentWindow.getDestination(1)\r\n // console.log(\"1111\",document.getElementById(\"mapModule\"))\r\n // document.getElementById(\"mapModule\").contentWindow.getDestination(1)\r\n const clientId = 'test_id_' + String(new Date().getTime()); // 用户名\r\n // const host = 'ws://49.234.27.18:10087/'; // 一个测试用url,改成给的,ws://broker.emqx.io:8083/mqtt\r\n const host = 'ws://172.16.1.168:10087/';\r\n const options = {\r\n // 配置\r\n // 测试:订阅本机IP\r\n // host: host,\r\n // port: port,\r\n // host:\"172.16.1.168:10086\",\r\n keepalive: 60, // 心跳时间,默认60s,设置为0禁用\r\n username: 'admin', // 用户名(可选)\r\n password: '123456', // 密码(可选)\r\n clientId: clientId, // 客户端ID,默认随机生成\r\n protocolId: 'MQTT',\r\n protocolVersion: 4,\r\n clean: true, // false在离线时接收QoS1和2的消息\r\n reconnectPeriod: 2000, // 重连间隔,默认1000毫秒\r\n connectTimeout: 30 * 1000, // 收到CONNACK之前的等待时间\r\n will: {\r\n // 遗嘱消息(客户端严重断开连接时Broker将自动发送的消息)\r\n topic: 'img1', // 要发布的主题\r\n payload: '[MQTT-TEST] 遗嘱消息:连接异常断开!', // 要发布的消息\r\n qos: 0, // QoS(Quality of Service),QoS0:只负责发,QoS1:保证消息至少送达1次,QoS2:保证消息到且仅到1次\r\n retain: false // 保留标志\r\n }\r\n };\r\n if (this.mqttClient == undefined) {\r\n this.mqttClient = mqtt.connect(host, options); // 连接\r\n // const client = mqtt.connect(host, options); // 连接\r\n // const client = mqtt.connect(host) // 连接\r\n // 错误回调\r\n // console.log(\"this.mqttClient\", this.mqttClient)\r\n this.mqttClient.on('error', err => {\r\n console.log('[MQTT-TEST] 连接错误:', err);\r\n this.mqttClient.end();\r\n });\r\n // 重连回调\r\n this.mqttClient.on('reconnect', reconnect => {\r\n // console.log(\"[MQTT-TEST] 重连中……\", reconnect);\r\n });\r\n // 连接回调\r\n this.mqttClient.on('connect', connect => {\r\n // console.log(\"[MQTT-TEST] 已连接的客户端ID: \", connect);\r\n // 订阅\r\n this.mqttClient.subscribe('img0', { qos: 0 });\r\n this.mqttClient.subscribe('img1', { qos: 0 });\r\n this.mqttClient.subscribe('img2', { qos: 0 });\r\n this.mqttClient.subscribe('img3', { qos: 0 });\r\n this.mqttClient.subscribe('img4', { qos: 0 });\r\n this.mqttClient.subscribe('img5', { qos: 0 });\r\n this.mqttClient.subscribe('stream0', { qos: 0 });\r\n this.mqttClient.subscribe('stream1', { qos: 0 });\r\n this.mqttClient.subscribe('stream2', { qos: 0 });\r\n this.mqttClient.subscribe('stream3', { qos: 0 });\r\n this.mqttClient.subscribe('stream4', { qos: 0 });\r\n this.mqttClient.subscribe('stream5', { qos: 0 });\r\n });\r\n // 接收回调\r\n this.mqttClient.on('message', (topic, message, packet) => {\r\n if (topic.indexOf('img0') != -1) {\r\n // try {\r\n const utf8decoder = new TextDecoder();\r\n const u8arr = new Uint8Array(message);\r\n const temp = utf8decoder.decode(u8arr); // 将二进制数据转为字符串\r\n const msg = JSON.parse(temp); //这一步报错则返回的是二进制流图片,不报错则返回的是JSON的错误提示数据\r\n // debugger\r\n // console.log(\"msg\", msg) //msg为转换后的JSON数据\r\n // console.log(\"msg.pic\", msg.pic)\r\n // debugger\r\n // var that = this\r\n\r\n // document.getElementById(\"mapModule\").contentWindow.getDestination(JSON.stringify(msg))\r\n // window.parent.getDestination(JSON.stringify(msg));\r\n // debugger\r\n // unity.SendMessage('AAA', 'SendImage', JSON.stringify(msg));\r\n // this.imgUrl = 'data:image/png;base64,' + msg.pic;\r\n // console.log(\"imageUrl\", imageUrl)\r\n\r\n // }\r\n // catch {\r\n // let imageType = 'arraybuffer';\r\n // const blob = new Blob([message], { type: imageType })\r\n // const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob)\r\n // // console.log(\"imageUrl\", imageUrl)\r\n // }\r\n } else if (topic.indexOf('img1') != -1) {\r\n try {\r\n const utf8decoder = new TextDecoder();\r\n const u8arr = new Uint8Array(message);\r\n const temp = utf8decoder.decode(u8arr); // 将二进制数据转为字符串\r\n const msg = JSON.parse(temp); //这一步报错则返回的是二进制流图片,不报错则返回的是JSON的错误提示数据\r\n console.log('msg', msg); //msg为转换后的JSON数据\r\n this.imgUrl1 = 'data:image/png;base64,' + msg.pic;\r\n console.log('imageUrl', imageUrl);\r\n } catch {\r\n let imageType = 'arraybuffer';\r\n const blob = new Blob([message], { type: imageType });\r\n const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob);\r\n console.log('imageUrl', imageUrl);\r\n }\r\n } else if (topic.indexOf('img2') != -1) {\r\n try {\r\n const utf8decoder = new TextDecoder();\r\n const u8arr = new Uint8Array(message);\r\n const temp = utf8decoder.decode(u8arr); // 将二进制数据转为字符串\r\n const msg = JSON.parse(temp); //这一步报错则返回的是二进制流图片,不报错则返回的是JSON的错误提示数据\r\n console.log('msg', msg); //msg为转换后的JSON数据\r\n this.imgUrl2 = 'data:image/png;base64,' + msg.pic;\r\n console.log('imageUrl', imageUrl);\r\n } catch {\r\n let imageType = 'arraybuffer';\r\n const blob = new Blob([message], { type: imageType });\r\n const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob);\r\n console.log('imageUrl', imageUrl);\r\n }\r\n } else if (topic.indexOf('img3') != -1) {\r\n try {\r\n const utf8decoder = new TextDecoder();\r\n const u8arr = new Uint8Array(message);\r\n const temp = utf8decoder.decode(u8arr); // 将二进制数据转为字符串\r\n const msg = JSON.parse(temp); //这一步报错则返回的是二进制流图片,不报错则返回的是JSON的错误提示数据\r\n console.log('msg', msg); //msg为转换后的JSON数据\r\n this.imgUrl3 = 'data:image/png;base64,' + msg.pic;\r\n console.log('imageUrl', imageUrl);\r\n } catch {\r\n let imageType = 'arraybuffer';\r\n const blob = new Blob([message], { type: imageType });\r\n const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob);\r\n console.log('imageUrl', imageUrl);\r\n }\r\n } else if (topic.indexOf('img4') != -1) {\r\n try {\r\n const utf8decoder = new TextDecoder();\r\n const u8arr = new Uint8Array(message);\r\n const temp = utf8decoder.decode(u8arr); // 将二进制数据转为字符串\r\n const msg = JSON.parse(temp); //这一步报错则返回的是二进制流图片,不报错则返回的是JSON的错误提示数据\r\n console.log('msg', msg); //msg为转换后的JSON数据\r\n this.imgUrl4 = 'data:image/png;base64,' + msg.pic;\r\n console.log('imageUrl', imageUrl);\r\n } catch {\r\n let imageType = 'arraybuffer';\r\n const blob = new Blob([message], { type: imageType });\r\n const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob);\r\n console.log('imageUrl', imageUrl);\r\n }\r\n } else if (topic.indexOf('img5') != -1) {\r\n try {\r\n const utf8decoder = new TextDecoder();\r\n const u8arr = new Uint8Array(message);\r\n const temp = utf8decoder.decode(u8arr); // 将二进制数据转为字符串\r\n const msg = JSON.parse(temp); //这一步报错则返回的是二进制流图片,不报错则返回的是JSON的错误提示数据\r\n console.log('msg', msg); //msg为转换后的JSON数据\r\n this.imgUrl5 = 'data:image/png;base64,' + msg.pic;\r\n console.log('imageUrl', imageUrl);\r\n } catch {\r\n let imageType = 'arraybuffer';\r\n const blob = new Blob([message], { type: imageType });\r\n const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob);\r\n console.log('imageUrl', imageUrl);\r\n }\r\n } else if (topic.indexOf('stream0') != -1) {\r\n // console.log(\r\n // `[MQTT-TEST] 从主题 \"${topic}\" 收到的内容: ${message.toString()}`,\r\n // new Date(),\r\n // new Date().getMilliseconds()\r\n // );\r\n } else if (topic.indexOf('stream0') != -1) {\r\n // console.log(\r\n // `[MQTT-TEST] 从主题 \"${topic}\" 收到的内容: ${message.toString()}`,\r\n // new Date(),\r\n // new Date().getMilliseconds()\r\n // );\r\n } else if (topic.indexOf('stream1') != -1) {\r\n console.log(\r\n `[MQTT-TEST] 从主题 \"${topic}\" 收到的内容: ${message.toString()}`,\r\n new Date(),\r\n new Date().getMilliseconds()\r\n );\r\n } else if (topic.indexOf('stream2') != -1) {\r\n console.log(\r\n `[MQTT-TEST] 从主题 \"${topic}\" 收到的内容: ${message.toString()}`,\r\n new Date(),\r\n new Date().getMilliseconds()\r\n );\r\n } else if (topic.indexOf('stream3') != -1) {\r\n console.log(\r\n `[MQTT-TEST] 从主题 \"${topic}\" 收到的内容: ${message.toString()}`,\r\n new Date(),\r\n new Date().getMilliseconds()\r\n );\r\n } else if (topic.indexOf('stream4') != -1) {\r\n console.log(\r\n `[MQTT-TEST] 从主题 \"${topic}\" 收到的内容: ${message.toString()}`,\r\n new Date(),\r\n new Date().getMilliseconds()\r\n );\r\n } else if (topic.indexOf('stream5') != -1) {\r\n console.log(\r\n `[MQTT-TEST] 从主题 \"${topic}\" 收到的内容: ${message.toString()}`,\r\n new Date(),\r\n new Date().getMilliseconds()\r\n );\r\n }\r\n });\r\n }\r\n }\r\n }\r\n};\r\n</script>\r\n\r\n<style lang=\"scss\" scoped>\r\n// /deep/ .el-form-item__content {\r\n// display: flex;\r\n// flex-flow: row nowrap;\r\n// align-items: center;\r\n// }\r\n// /deep/ .el-form-item__label {\r\n// text-align: left;\r\n// font-size: 16px;\r\n// }\r\n.otherThings {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: center;\r\n /deep/ .el-form-item__content {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: center;\r\n }\r\n}\r\n.analysis {\r\n .board-title {\r\n font-size: 17px;\r\n font-weight: bolder;\r\n width: max-content;\r\n }\r\n}\r\n.analysis .warning {\r\n display: flex;\r\n flex-flow: row nowrap;\r\n align-items: center;\r\n margin-bottom: 15px;\r\n cursor: pointer;\r\n}\r\n.dataBoard {\r\n display: flex;\r\n justify-content: space-between;\r\n}\r\n.top .section {\r\n // width: 80%;\r\n // border: 1px solid gray;\r\n box-sizing: border-box;\r\n padding: 0 15px;\r\n margin-bottom: 15px;\r\n}\r\n.dataBoard .region,\r\n.dataBoard .section {\r\n width: 80%;\r\n // border: 1px solid gray;\r\n // border: 1px solid #e4e7ed;\r\n box-sizing: border-box;\r\n padding: 0 15px;\r\n margin-bottom: 15px;\r\n}\r\n\r\n.container {\r\n width: 100%;\r\n height: 100%;\r\n p {\r\n width: 95%;\r\n font-size: 25px;\r\n text-align: left;\r\n border-bottom: 1px solid black;\r\n margin-bottom: 20px;\r\n }\r\n}\r\n</style>\r\n"],"sourceRoot":"src/views/bounced"}]} |