代码提交

This commit is contained in:
何嘉峣 2023-01-05 15:37:59 +08:00
commit 0f16142fb4
16 changed files with 849 additions and 859 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"remainingRequest":"D:\\视频边缘1215\\TransFlow\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\视频边缘1215\\TransFlow\\src\\views\\bounced\\analysisConfiguration.vue","dependencies":[{"path":"D:\\视频边缘1215\\TransFlow\\src\\views\\bounced\\analysisConfiguration.vue","mtime":1672823213558},{"path":"D:\\视频边缘1215\\TransFlow\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1671074740928},{"path":"D:\\视频边缘1215\\TransFlow\\node_modules\\vue-loader\\lib\\index.js","mtime":1671074747916}],"contextDependencies":[],"result":["import { render, staticRenderFns } from \"./analysisConfiguration.vue?vue&type=template&id=fd3d0d46&scoped=true&\"\nimport script from \"./analysisConfiguration.vue?vue&type=script&lang=js&\"\nexport * from \"./analysisConfiguration.vue?vue&type=script&lang=js&\"\nimport style0 from \"./analysisConfiguration.vue?vue&type=style&index=0&id=fd3d0d46&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fd3d0d46\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"D:\\\\视频边缘1215\\\\TransFlow\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('fd3d0d46')) {\n api.createRecord('fd3d0d46', component.options)\n } else {\n api.reload('fd3d0d46', component.options)\n }\n module.hot.accept(\"./analysisConfiguration.vue?vue&type=template&id=fd3d0d46&scoped=true&\", function () {\n api.rerender('fd3d0d46', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/bounced/analysisConfiguration.vue\"\nexport default component.exports"]}
{"remainingRequest":"D:\\视频边缘1215\\TransFlow\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\视频边缘1215\\TransFlow\\src\\views\\bounced\\analysisConfiguration.vue","dependencies":[{"path":"D:\\视频边缘1215\\TransFlow\\src\\views\\bounced\\analysisConfiguration.vue","mtime":1672884159767},{"path":"D:\\视频边缘1215\\TransFlow\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1671074740928},{"path":"D:\\视频边缘1215\\TransFlow\\node_modules\\vue-loader\\lib\\index.js","mtime":1671074747916}],"contextDependencies":[],"result":["import { render, staticRenderFns } from \"./analysisConfiguration.vue?vue&type=template&id=fd3d0d46&scoped=true&\"\nimport script from \"./analysisConfiguration.vue?vue&type=script&lang=js&\"\nexport * from \"./analysisConfiguration.vue?vue&type=script&lang=js&\"\nimport style0 from \"./analysisConfiguration.vue?vue&type=style&index=0&id=fd3d0d46&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fd3d0d46\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"D:\\\\视频边缘1215\\\\TransFlow\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('fd3d0d46')) {\n api.createRecord('fd3d0d46', component.options)\n } else {\n api.reload('fd3d0d46', component.options)\n }\n module.hot.accept(\"./analysisConfiguration.vue?vue&type=template&id=fd3d0d46&scoped=true&\", function () {\n api.rerender('fd3d0d46', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/bounced/analysisConfiguration.vue\"\nexport default component.exports"]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +1 @@
{"remainingRequest":"D:\\Hjm项目\\TransFlow\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\Hjm项目\\TransFlow\\src\\views\\bounced\\analysisConfiguration.vue","dependencies":[{"path":"D:\\Hjm项目\\TransFlow\\src\\views\\bounced\\analysisConfiguration.vue","mtime":1672882315774},{"path":"D:\\Hjm项目\\TransFlow\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\Hjm项目\\TransFlow\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["import { render, staticRenderFns } from \"./analysisConfiguration.vue?vue&type=template&id=fd3d0d46&scoped=true&\"\nimport script from \"./analysisConfiguration.vue?vue&type=script&lang=js&\"\nexport * from \"./analysisConfiguration.vue?vue&type=script&lang=js&\"\nimport style0 from \"./analysisConfiguration.vue?vue&type=style&index=0&id=fd3d0d46&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fd3d0d46\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"D:\\\\Hjm项目\\\\TransFlow\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('fd3d0d46')) {\n api.createRecord('fd3d0d46', component.options)\n } else {\n api.reload('fd3d0d46', component.options)\n }\n module.hot.accept(\"./analysisConfiguration.vue?vue&type=template&id=fd3d0d46&scoped=true&\", function () {\n api.rerender('fd3d0d46', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/bounced/analysisConfiguration.vue\"\nexport default component.exports"]}
{"remainingRequest":"D:\\Hjm项目\\TransFlow\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!D:\\Hjm项目\\TransFlow\\src\\views\\bounced\\analysisConfiguration.vue","dependencies":[{"path":"D:\\Hjm项目\\TransFlow\\src\\views\\bounced\\analysisConfiguration.vue","mtime":1672898828810},{"path":"D:\\Hjm项目\\TransFlow\\node_modules\\cache-loader\\dist\\cjs.js","mtime":499162500000},{"path":"D:\\Hjm项目\\TransFlow\\node_modules\\vue-loader\\lib\\index.js","mtime":499162500000}],"contextDependencies":[],"result":["import { render, staticRenderFns } from \"./analysisConfiguration.vue?vue&type=template&id=fd3d0d46&scoped=true&\"\nimport script from \"./analysisConfiguration.vue?vue&type=script&lang=js&\"\nexport * from \"./analysisConfiguration.vue?vue&type=script&lang=js&\"\nimport style0 from \"./analysisConfiguration.vue?vue&type=style&index=0&id=fd3d0d46&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"fd3d0d46\",\n null\n \n)\n\n/* hot reload */\nif (module.hot) {\n var api = require(\"D:\\\\Hjm项目\\\\TransFlow\\\\node_modules\\\\vue-hot-reload-api\\\\dist\\\\index.js\")\n api.install(require('vue'))\n if (api.compatible) {\n module.hot.accept()\n if (!api.isRecorded('fd3d0d46')) {\n api.createRecord('fd3d0d46', component.options)\n } else {\n api.reload('fd3d0d46', component.options)\n }\n module.hot.accept(\"./analysisConfiguration.vue?vue&type=template&id=fd3d0d46&scoped=true&\", function () {\n api.rerender('fd3d0d46', {\n render: render,\n staticRenderFns: staticRenderFns\n })\n })\n }\n}\ncomponent.options.__file = \"src/views/bounced/analysisConfiguration.vue\"\nexport default component.exports"]}

File diff suppressed because one or more lines are too long

View File

@ -7,9 +7,16 @@
<link rel="shortcut icon" href="TemplateData/favicon.ico">
<link rel="stylesheet" href="TemplateData/style.css">
</head>
<style>
body,html{
width: 100%;
height: 100%;
overflow: hidden;
}
</style>
<body>
<div id="unity-container" class="unity-desktop">
<canvas id="unity-canvas" width=960 height=600></canvas>
<div id="unity-container" style="height: 100%;" class="unity-desktop">
<canvas id="unity-canvas" width=960 height="100%"></canvas>
<div id="unity-loading-bar">
<div id="unity-logo"></div>
<div id="unity-progress-bar-empty">
@ -17,7 +24,7 @@
</div>
</div>
<div id="unity-warning"> </div>
<div id="unity-footer">
<div id="unity-footer" style="display: none;">
<div id="unity-webgl-logo"></div>
<div id="unity-fullscreen-button"></div>
<div id="unity-build-title">Painter</div>
@ -96,7 +103,7 @@
// Desktop style: Render the game canvas in a window that can be maximized to fullscreen:
canvas.style.width = "960px";
canvas.style.height = "600px";
canvas.style.height = "100%";
}
loadingBar.style.display = "block";

View File

@ -5,8 +5,7 @@
<div class="section">
<el-form :inline="true" :model="formInline" class="demo-form-inline" label-width="140px">
<div class="warning">
<i class="el-icon-warning" style="color: #409eff; margin: 0 3px 0 10px"></i
>自动保存可以使系统在异常关闭后自动恢复在这种情况下缓存数据将会丢失但所有存储数据将被保存
<i class="el-icon-warning" style="color: #409EFF; margin: 0 3px 0 10px;"></i>自动保存可以使系统在异常关闭后自动恢复在这种情况下缓存数据将会丢失但所有存储数据将被保存
</div>
<el-form-item label="自动保存:" >
<el-switch v-model="formInline.user"></el-switch>
@ -20,12 +19,12 @@
</el-form>
<el-form ref="form" :model="sizeForm" label-width="140px">
<div class="warning">
<i class="el-icon-warning" style="color: #409eff; margin: 0 3px 0 10px"></i>重置分析将删除所有累计的轨迹数据
<i class="el-icon-warning" style="color: #409EFF; margin: 0 3px 0 10px;"></i>重置分析将删除所有累计的轨迹数据
</div>
<!-- <el-form-item > -->
<el-button type="primary" @click="handleagain()" size="small" style="width:150px">重置</el-button>
<div class="warning">
<i class="el-icon-warning" style="color: #409eff; margin: 0 3px 0 10px"></i> WGS84 坐标系中输入相机位置
<i class="el-icon-warning" style="color: #409EFF; margin: 0 3px 0 10px;"></i> WGS84 坐标系中输入相机位置
</div>
<el-form-item label="相机位置:">
<el-input v-model="sizeForm.name" style="width:150px" placeholder="经度"></el-input>
@ -37,16 +36,25 @@
<div class="dataBoard">
<div class="section">
<div class="warning">
<i class="el-icon-warning" style="color: #409EFF; margin: 0 3px 0 10px;"></i>通过将图像坐标系转换为物理坐标系地理参考使您能够将像素测量转换为真实速度和距离
</div>
<p class="board-title">坐标转换</p>
<el-form ref="form" :model="coordinateForm" label-width="140px">
<el-form-item label="坐标转换开关:">
<el-switch v-model="coordinateForm.coordinateClose"></el-switch>
</el-form-item>
<el-form-item label="模型:" v-if="coordinateForm.coordinateClose==true">
<el-radio-group v-model="coordinateForm.model">
<el-radio label="Georeferencing"></el-radio>
<el-radio label="其他"></el-radio>
</el-radio-group>
<div class="warning">
<i class="el-icon-warning" style="color: #409EFF; margin: 0 3px 0 10px;"></i>地理参照允许测量物理速度和静态图像源的距离
</div>
</el-form-item>
<el-form-item label="坐标转换:" v-if="coordinateForm.coordinateClose==true">
<el-radio-group v-model="coordinateForm.coordinateTransformation">
@ -54,33 +62,42 @@
<el-radio label="其他"></el-radio>
</el-radio-group>
</el-form-item>
<div style="width: 100%; height: 300px">
<iframe
id="mapModuleTop"
@load="load"
src="./VideoWeb/index.html"
frameborder="0"
style="width: 100%; height: 100%"
></iframe>
<div style="width:100%;height:400px;margin-bottom: 10px;" v-if="coordinateForm.coordinateClose==true" >
<iframe id="mapModuleTop" @load="load" src="./VideoWeb/index.html" frameborder="0" style="width: 100%; height: 100%" ></iframe>
<!-- <iframe src="./VideoWeb/index.html" style="height: 100%; width: 100%;border: none"
ref="iframe"></iframe> -->
</div>
<el-table border :data="coordinateTableData" v-if="coordinateForm.coordinateClose==true">
<el-table-column prop="name" label="点名称" align="center" >
<template slot-scope="scope">
<el-input v-if="scope.$index === 0" v-model="scope.row.name" maxlength="30" placeholder="Required" />
<el-input
v-if="scope.$index === 0"
v-model="scope.row.name"
maxlength="30"
placeholder="Required"
/>
<span v-else v-text="scope.row.name"></span>
</template>
</el-table-column>
<el-table-column prop="longitude" label="经度" align="center">
<template slot-scope="scope">
<el-input v-if="scope.row.isEdit" v-model="scope.row.longitude" maxlength="20" placeholder="Required" />
<el-input
v-if="scope.row.isEdit"
v-model="scope.row.longitude"
maxlength="20"
placeholder="Required"
/>
<span v-else v-text="scope.row.longitude"></span>
</template>
</el-table-column>
<el-table-column prop="latitude" label="纬度" align="center">
<template slot-scope="scope">
<el-input v-if="scope.row.isEdit" v-model="scope.row.latitude" maxlength="20" placeholder="Required" />
<el-input
v-if="scope.row.isEdit"
v-model="scope.row.latitude"
maxlength="20"
placeholder="Required"
/>
<span v-else v-text="scope.row.latitude"></span>
</template>
</el-table-column>
@ -106,7 +123,7 @@
v-if="scope.$index !== 0"
size="mini"
type="text"
style="color: #f56c6c"
style="color: #F56C6C"
@click="handleDelete(scope.row)"
>{{ scope.row.isEdit ? 'Cancel' : 'Delete' }}
</el-button>
@ -114,124 +131,96 @@
</el-table-column>
</el-table>
<div style="margin-top:15px">
<el-button
type="primary"
@click="handleagain()"
size="small"
style="width: 150px"
v-if="coordinateForm.coordinateClose == true"
>保存</el-button
>
<el-button type="primary" @click="handleagain()" size="small" style="width:150px" v-if="coordinateForm.coordinateClose==true">保存</el-button>
</div>
</el-form>
</div>
</div>
<div class="dataBoard">
<div class="section">
<p class="board-title">车道识别配置</p>
<div class="warning">
<i class="el-icon-warning" style="color: #409eff; margin: 0 3px 0 10px"></i>在视频/动图上设置进口出口道
<i class="el-icon-warning" style="color: #409EFF; margin: 0 3px 0 10px;"></i>在视频/动图上设置进口出口道
</div>
<p class="board-title">车道识别配置</p>
<el-form ref="form" :model="laneform" label-width="350px">
<!-- <p>车道识别配置</p> -->
<el-form-item label="车道识别配置开关:" label-width="150px">
<el-switch v-model="laneform.laneClose"></el-switch>
</el-form-item>
<!-- <div style="width:100%;height:300px" v-if="laneform.laneClose==true">
<iframe id="mapModule" src="./VideoWeb/index.html" frameborder="0" style="width: 100%; height: calc(100% - 50px)"></iframe>
</div> -->
<div style="width:100%;height:400px" v-if="laneform.laneClose==true">
<iframe id="mapModule" src="./VideoWeb/index.html" frameborder="0" style="width: 100%; height: 100%"></iframe>
</div>
<el-form-item label="各车道中心线(区域检测器):" style="width:300px" v-if="laneform.laneClose==true">
<el-switch v-model="laneform.areaDetector"></el-switch>
</el-form-item>
<el-form-item
label="自动识别各车道中心点坐标(断面检测器):"
style="width: 300px"
v-if="laneform.laneClose == true"
>
<el-form-item label="自动识别各车道中心点坐标(断面检测器):" style="width:300px" v-if="laneform.laneClose==true">
<el-switch v-model="laneform.sectionDetector"></el-switch>
</el-form-item>
<el-button type="primary" @click="handleagain()" size="small" style="width: 150px" v-if="laneform.laneClose == true"
>保存</el-button
>
<el-button type="primary" @click="handleagain()" size="small" style="width:150px" v-if="laneform.laneClose==true">保存</el-button>
</el-form>
</div>
</div>
<div class="dataBoard">
<div class="section">
<p class="board-title">识别区域</p>
<div class="warning">
<i class="el-icon-warning" style="color: #409eff; margin: 0 3px 0 10px"></i
>您可以自定义进行视频分析的区域区域之外的部分将被忽略此功能可以帮助您检测和跟踪高分辨率视频特定部分的较小对象实现检测器的数字变焦功能
<i class="el-icon-warning" style="color: #409EFF; margin: 0 3px 0 10px;"></i>您可以自定义进行视频分析的区域区域之外的部分将被忽略此功能可以帮助您检测和跟踪高分辨率视频特定部分的较小对象实现检测器的数字变焦功能
</div>
<p class="board-title">识别区域</p>
<el-form ref="form" :model="identificationAreaform" label-width="140px">
<!-- <p>车道识别配置</p> -->
<el-form-item label="识别区域开关" style="width:250px">
<el-switch v-model="identificationAreaform.identificationAreaClose"></el-switch>
</el-form-item>
<!-- <div style="width:100%;height:300px" v-if="identificationAreaform.identificationAreaClose==true">
<iframe id="mapModule" src="./VideoWeb/index.html" frameborder="0" style="width: 100%; height: calc(100% - 50px)"></iframe>
</div> -->
<el-button
type="primary"
@click="handleagain()"
size="small"
style="width: 150px"
v-if="identificationAreaform.identificationAreaClose == true"
>保存</el-button
>
<div style="width:100%;height:400px" v-if="identificationAreaform.identificationAreaClose==true">
<iframe id="mapModule" src="./VideoWeb/index.html" frameborder="0" style="width: 100%; height: 100%"></iframe>
</div>
<el-button type="primary" @click="handleagain()" size="small" style="width:150px" v-if="identificationAreaform.identificationAreaClose==true">保存</el-button>
</el-form>
</div>
</div>
<div class="dataBoard">
<div class="section">
<p class="board-title">轨迹平滑</p>
<div class="warning">
<i class="el-icon-warning" style="color: #409eff; margin: 0 3px 0 10px"></i
>为轨迹预测滤波算法定义细化轨迹的时间窗口数值越小延迟越小适用于实时性要求高的场景数值越大轨迹的连续性越好目标即使越过一些障碍也不容易丢失
<i class="el-icon-warning" style="color: #409EFF; margin: 0 3px 0 10px;"></i>为轨迹预测滤波算法定义细化轨迹的时间窗口数值越小延迟越小适用于实时性要求高的场景数值越大轨迹的连续性越好目标即使越过一些障碍也不容易丢失
</div>
<p class="board-title">轨迹平滑</p>
<el-form ref="form" :model="trajectorySmoothingform" label-width="140px">
<el-form-item label="轨迹平滑开关" style="width:250px">
<el-switch v-model="trajectorySmoothingform.trajectorySmoothingClose"></el-switch>
</el-form-item>
<el-form-item
label="预测滤波时间"
style="width: 250px"
v-if="trajectorySmoothingform.trajectorySmoothingClose == true"
>
<el-input-number
v-model="trajectorySmoothingform.time"
@change="handleChange"
:min="2000"
:max="3000"
label="预测滤波时间"
></el-input-number>
<el-form-item label="预测滤波时间" style="width:250px" v-if="trajectorySmoothingform.trajectorySmoothingClose==true">
<el-input-number v-model="trajectorySmoothingform.time" @change="handleChange" :min="2000" :max="3000" label="预测滤波时间"></el-input-number>
</el-form-item>
<el-button
type="primary"
@click="handleagain()"
size="small"
style="width: 150px"
v-if="trajectorySmoothingform.trajectorySmoothingClose == true"
>保存</el-button
>
<el-button type="primary" @click="handleagain()" size="small" style="width:150px" v-if="trajectorySmoothingform.trajectorySmoothingClose==true">保存</el-button>
</el-form>
</div>
</div>
<div class="dataBoard">
<div class="section">
<p class="board-title">车牌识别</p>
<div class="warning">
<i class="el-icon-warning" style="color: #409eff; margin: 0 3px 0 10px"></i
>车牌识别开关牌照信息表示与目标属性断面号牌与断面设置关联
<i class="el-icon-warning" style="color: #409EFF; margin: 0 3px 0 10px;"></i>车牌识别开关牌照信息表示与目标属性断面号牌与断面设置关联
</div>
<p class="board-title">车牌识别</p>
<el-form ref="form" :model="licensePlateform" label-width="140px">
<el-form-item label="车牌识别开关" style="width:250px">
<el-switch v-model="licensePlateform.licensePlateClose"></el-switch>
</el-form-item>
<!-- <div style="width:100%;height:300px" v-if="licensePlateform.licensePlateClose==true">
<iframe id="mapModule" src="./VideoWeb/index.html" frameborder="0" style="width: 100%; height: calc(100% - 50px)"></iframe>
</div> -->
<div style="width:100%;height:400px;margin-bottom: 10px;" v-if="licensePlateform.licensePlateClose==true">
<iframe id="mapModule" src="./VideoWeb/index.html" frameborder="0" style="width: 100%; height: 100%"></iframe>
</div>
<el-table border :data="licensePlateTableData" v-if="licensePlateform.licensePlateClose==true">
<el-table-column prop="sectionPlate" label="断面号牌" align="center">
<template slot-scope="scope">
@ -288,7 +277,7 @@
v-if="scope.$index !== 0"
size="mini"
type="text"
style="color: #f56c6c"
style="color: #F56C6C"
@click="handleDelete(scope.row)"
>{{ scope.row.isEdit ? 'Cancel' : 'Delete' }}
</el-button>
@ -296,64 +285,51 @@
</el-table-column>
</el-table>
<div style="margin-top:15px">
<el-button
type="primary"
@click="handleagain()"
size="small"
style="width: 150px"
v-if="licensePlateform.licensePlateClose == true"
>保存</el-button
>
<el-button type="primary" @click="handleagain()" size="small" style="width:150px" v-if="licensePlateform.licensePlateClose==true">保存</el-button>
</div>
</el-form>
</div>
</div>
<div class="dataBoard">
<div class="section">
<p class="board-title">停车状态</p>
<div class="warning">
<i class="el-icon-warning" style="color: #409eff; margin: 0 3px 0 10px"></i
>更新频率更新频率可以根据链路带宽进行设置
<i class="el-icon-warning" style="color: #409EFF; margin: 0 3px 0 10px;"></i>位移速度加速度的阈值例如位移δ速度v加速度a则判断车辆停车
</div>
<p class="board-title">停车状态</p>
<el-form :inline="true" :model="stopStateform" class="demo-form-inline" label-width="140px">
<el-form-item label="位移:" >
<el-input-number
v-model="stopStateform.displacement"
@change="handleChange"
:min="2000"
:max="3000"
label="位移"
></el-input-number>
<el-input-number v-model="stopStateform.displacement" @change="handleChange" :min="2000" :max="3000" label="位移"></el-input-number>
</el-form-item>
<el-form-item label="速度:" >
<el-input-number
v-model="stopStateform.speed"
@change="handleChange"
:min="2000"
:max="3000"
label="速度"
></el-input-number>
<el-input-number v-model="stopStateform.speed" @change="handleChange" :min="2000" :max="3000" label="速度"></el-input-number>
</el-form-item>
<el-form-item label="加速度:">
<el-input-number
v-model="stopStateform.acceleration"
@change="handleChange"
:min="2000"
:max="3000"
label="加速度"
></el-input-number>
<el-input-number v-model="stopStateform.acceleration" @change="handleChange" :min="2000" :max="3000" label="加速度"></el-input-number>
</el-form-item>
</el-form>
<div style="margin-top:15px">
<el-button type="primary" @click="handleagain()" size="small" style="width:150px">保存</el-button>
</div>
</div>
</div>
<div class="dataBoard">
<div class="section">
<p class="board-title">通信设置</p>
<el-form :model="communicationform" class="demo-form-inline" label-width="200px">
<el-form-item label="类型:" style="margin-bottom: 20px">
<el-form-item label="更新频率:" style="margin-bottom: 20px;">
<el-input v-model="communicationform.renewalFrequency" style="width:200px;"></el-input>
</el-form-item>
<div class="warning">
<i class="el-icon-warning" style="color: #409EFF; margin: 0 3px 0 10px;"></i>更新频率可以根据链路带宽进行设置
</div>
<el-form-item label="类型:" style="margin-bottom: 20px;">
<el-radio-group v-model="communicationform.type" >
<el-radio label="快速-用于高带宽连接"></el-radio>
<el-radio label="平衡-适用于大多数连接"></el-radio>
@ -362,22 +338,22 @@
</el-radio-group>
</el-form-item>
<el-form-item label="请求轻型有效载荷:" v-if="communicationform.type=='自定义'">
<el-input v-model="communicationform.name" style="width: 200px; margin-bottom: 20px"></el-input>ms
<el-input v-model="communicationform.name" style="width:200px;margin-bottom: 20px;"></el-input>ms
</el-form-item>
<el-form-item label="请求重型有效载荷:" v-if="communicationform.type=='自定义'">
<el-input v-model="communicationform.name" style="width: 200px; margin-bottom: 20px"></el-input>ms
<el-input v-model="communicationform.name" style="width:200px;margin-bottom: 20px;"></el-input>ms
</el-form-item>
<el-form-item label="FPS分配器" v-if="communicationform.type=='自定义'">
<el-input v-model="communicationform.name" style="width: 200px; margin-bottom: 20px"></el-input>
<el-input v-model="communicationform.name" style="width:200px;margin-bottom: 20px;"></el-input>
</el-form-item>
<el-form-item label="框架决议:" v-if="communicationform.type=='自定义'">
<el-select v-model="communicationform.region" placeholder="框架决议" style="margin-bottom: 20px">
<el-select v-model="communicationform.region" placeholder="框架决议" style="margin-bottom: 20px;">
<el-option label="自动" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
</el-form-item>
<el-form-item label="压缩格式:" v-if="communicationform.type=='自定义'">
<el-select v-model="communicationform.region" placeholder="压缩格式" style="margin-bottom: 20px">
<el-select v-model="communicationform.region" placeholder="压缩格式" style="margin-bottom: 20px;">
<el-option label="JPG" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
</el-select>
@ -388,13 +364,15 @@
<el-button type="primary" @click="handleagain()" size="small" style="width:150px" >保存</el-button>
</el-form>
</div>
</div>
</div>
</div>
</template>
<script>
import mqtt from 'mqtt'; // mqtt
import mqtt from "mqtt"; // mqtt
export default {
data() {
return {
@ -413,12 +391,14 @@ export default {
region: ''
},
//
topForm: {},
topForm:{
},
//
coordinateForm:{
coordinateClose:false,
model:'Georeferencing',
coordinateTransformation: '84坐标系'
coordinateTransformation:'84坐标系',
},
coordinateTableData:[
{
@ -426,25 +406,23 @@ export default {
longitude:'111',
inIp:'01',
latitude:''
},
{
},{
name:'22',
longitude:'222',
inIp:'02',
latitude:''
},
{
},{
name:'33',
longitude:'333',
inIp:'03',
latitude:''
}
},
],
//
laneform: {
laneClose:false,
areaDetector:false,
sectionDetector: false
sectionDetector:false,
},
//
identificationAreaform: {
@ -457,7 +435,7 @@ export default {
},
//
licensePlateform: {
licensePlateClose: false
licensePlateClose:false,
},
licensePlateTableData:[
{
@ -465,29 +443,28 @@ export default {
sectionPlate:'111',
inIp:'01',
setAssociation:''
},
{
},{
thresholdValue:'22',
sectionPlate:'222',
inIp:'02',
setAssociation:''
},
{
},{
thresholdValue:'33',
sectionPlate:'333',
inIp:'03',
setAssociation:''
}
},
],
//
stopStateform: {
displacement:'2000',
speed:'2000',
acceleration: '2000'
acceleration:'2000',
},
//
communicationform: {
type: '快速-用于高带宽连接'
type:'快速-用于高带宽连接',
renewalFrequency:''
},
form: {
name: '',
@ -504,17 +481,15 @@ export default {
name:'11',
inPort:'111',
inIp:'01'
},
{
},{
name:'22',
inPort:'222',
inIp:'02'
},
{
},{
name:'33',
inPort:'333',
inIp:'03'
}
},
],
internalIpList: [],
fileList: []
@ -534,21 +509,24 @@ export default {
// this.load()
// }, 5000);//
// }
},
methods: {
load(){
console.log('1111');
var iframe = document.getElementById('mapModuleTop');
console.log('iframe', iframe);
console.log("1111")
var iframe = document.getElementById("mapModuleTop");
console.log("iframe",iframe)
iframe.onload = () => {
// setTimeout(() => {
this.testMqtt();
this.testMqtt()
// }, 5000);
};
}
},
testMqtt() {
console.log('222');
this.getDataByMqtt();
console.log("222")
this.getDataByMqtt()
},
handleChange(){},
handleagain() {
@ -622,7 +600,7 @@ export default {
outPort: null,
enabled: null,
isEdit: true
});
})
// }
// })
},
@ -631,18 +609,18 @@ export default {
for (let key in row) {
//
if (row[key] === '' || row[key] === null || typeof row[key] === 'undefined') {
this.msgError('Please complete the information');
return;
this.msgError('Please complete the information')
return
}
}
const params = {
name: row.name,
inIp: row.inIp
inIp: row.inIp,
// inPort: parseInt(row.inPort),
// outPort: parseInt(row.outPort),
// enabled: row.enabled
};
this.getReverseShellList();
}
this.getReverseShellList()
// addShell(params).then(res => {
// if (res.code === 200) {
// this.msgSuccess('Add reverse shell successfully')
@ -657,8 +635,8 @@ export default {
if (row.isEdit) {
for (let key in row) {
if (row[key] === '' || row[key] === null || typeof row[key] === 'undefined') {
this.msgError('Please complete the information');
return;
this.msgError('Please complete the information')
return
}
}
const params = {
@ -667,7 +645,7 @@ export default {
inPort: parseInt(row.inPort),
outPort: parseInt(row.outPort),
enabled: row.enabled
};
}
// updateShell(params).then(res => {
// if (res.code === 200) {
// this.msgSuccess('Update reverse shell successfully')
@ -676,30 +654,29 @@ export default {
// })
} else {
//
row.isEdit = true;
row.isEdit = true
}
},
//
handleDelete(row) {
//
if (row.isEdit) {
this.getReverseShellList();
this.getReverseShellList()
} else {
//
this.$confirm('Are you sure to delete reverse shell?', 'warning', {
confirmButtonText: 'Sure',
cancelButtonText: 'Cancel',
type: 'warning'
})
.then(() => {
}).then(() => {
// deleteShell(row.name).then(res => {
// if (res.code === 200) {
// this.msgSuccess('Delete reverse shell successfully')
// this.getReverseShellList()
// }
// })
}).catch(() => {
})
.catch(() => {});
}
},
// mqtt
@ -708,7 +685,7 @@ export default {
// that.$refs.iframe.contentWindow.getDestination(1)
// console.log("1111",document.getElementById("mapModule"))
// document.getElementById("mapModule").contentWindow.getDestination(1)
const clientId = 'test_id_' + String(new Date().getTime()); //
const clientId = "test_id_" + String(new Date().getTime()); //
// const host = 'ws://49.234.27.18:10087/'; // urlws://broker.emqx.io:8083/mqtt
const host = 'ws://172.16.1.168:10087/';
@ -722,18 +699,18 @@ export default {
username: 'admin', //
password: '123456', //
clientId: clientId, // ID
protocolId: 'MQTT',
protocolId: "MQTT",
protocolVersion: 4,
clean: true, // false线QoS12
reconnectPeriod: 2000, // 1000
connectTimeout: 30 * 1000, // CONNACK
will: {
// Broker
topic: 'img1', //
payload: '[MQTT-TEST] 遗嘱消息:连接异常断开!', //
topic: "img1", //
payload: "[MQTT-TEST] 遗嘱消息:连接异常断开!", //
qos: 0, // QoS(Quality of Service)QoS0QoS11QoS21
retain: false //
}
retain: false, //
},
};
if (this.mqttClient == undefined) {
this.mqttClient = mqtt.connect(host, options); //
@ -741,16 +718,16 @@ export default {
// const client = mqtt.connect(host) //
//
// console.log("this.mqttClient", this.mqttClient)
this.mqttClient.on('error', (err) => {
console.log('[MQTT-TEST] 连接错误:', err);
this.mqttClient.on("error", (err) => {
console.log("[MQTT-TEST] 连接错误:", err);
this.mqttClient.end();
});
//
this.mqttClient.on('reconnect', (reconnect) => {
this.mqttClient.on("reconnect", (reconnect) => {
// console.log("[MQTT-TEST] ", reconnect);
});
//
this.mqttClient.on('connect', (connect) => {
this.mqttClient.on("connect", (connect) => {
// console.log("[MQTT-TEST] ID: ", connect);
//
this.mqttClient.subscribe('img0', { qos: 0 });
@ -765,15 +742,17 @@ export default {
this.mqttClient.subscribe('stream3', { qos: 0 });
this.mqttClient.subscribe('stream4', { qos: 0 });
this.mqttClient.subscribe('stream5', { qos: 0 });
});
//
this.mqttClient.on('message', (topic, message, packet) => {
if (topic.indexOf('img0') != -1) {
this.mqttClient.on("message", (topic, message, packet) => {
if (topic.indexOf("img0") != -1) {
// try {
const utf8decoder = new TextDecoder();
const u8arr = new Uint8Array(message);
const temp = utf8decoder.decode(u8arr); //
const msg = JSON.parse(temp); //JSON
const utf8decoder = new TextDecoder()
const u8arr = new Uint8Array(message)
const temp = utf8decoder.decode(u8arr) //
const msg = JSON.parse(temp) //JSON
// debugger
// console.log("msg", msg) //msgJSON
// console.log("msg.pic", msg.pic)
@ -794,127 +773,131 @@ export default {
// const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob)
// // console.log("imageUrl", imageUrl)
// }
} else if (topic.indexOf('img1') != -1) {
} else if (topic.indexOf("img1") != -1) {
try {
const utf8decoder = new TextDecoder();
const u8arr = new Uint8Array(message);
const temp = utf8decoder.decode(u8arr); //
const msg = JSON.parse(temp); //JSON
console.log('msg', msg); //msgJSON
const utf8decoder = new TextDecoder()
const u8arr = new Uint8Array(message)
const temp = utf8decoder.decode(u8arr) //
const msg = JSON.parse(temp) //JSON
console.log("msg", msg) //msgJSON
this.imgUrl1 = 'data:image/png;base64,' + msg.pic;
console.log('imageUrl', imageUrl);
console.log("imageUrl", imageUrl)
} catch {
let imageType = 'arraybuffer';
const blob = new Blob([message], { type: imageType });
const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob);
console.log('imageUrl', imageUrl);
const blob = new Blob([message], { type: imageType })
const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob)
console.log("imageUrl", imageUrl)
}
} else if (topic.indexOf('img2') != -1) {
} else if (topic.indexOf("img2") != -1) {
try {
const utf8decoder = new TextDecoder();
const u8arr = new Uint8Array(message);
const temp = utf8decoder.decode(u8arr); //
const msg = JSON.parse(temp); //JSON
console.log('msg', msg); //msgJSON
const utf8decoder = new TextDecoder()
const u8arr = new Uint8Array(message)
const temp = utf8decoder.decode(u8arr) //
const msg = JSON.parse(temp) //JSON
console.log("msg", msg) //msgJSON
this.imgUrl2 = 'data:image/png;base64,' + msg.pic;
console.log('imageUrl', imageUrl);
console.log("imageUrl", imageUrl)
} catch {
let imageType = 'arraybuffer';
const blob = new Blob([message], { type: imageType });
const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob);
console.log('imageUrl', imageUrl);
const blob = new Blob([message], { type: imageType })
const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob)
console.log("imageUrl", imageUrl)
}
} else if (topic.indexOf('img3') != -1) {
} else if (topic.indexOf("img3") != -1) {
try {
const utf8decoder = new TextDecoder();
const u8arr = new Uint8Array(message);
const temp = utf8decoder.decode(u8arr); //
const msg = JSON.parse(temp); //JSON
console.log('msg', msg); //msgJSON
const utf8decoder = new TextDecoder()
const u8arr = new Uint8Array(message)
const temp = utf8decoder.decode(u8arr) //
const msg = JSON.parse(temp) //JSON
console.log("msg", msg) //msgJSON
this.imgUrl3 = 'data:image/png;base64,' + msg.pic;
console.log('imageUrl', imageUrl);
console.log("imageUrl", imageUrl)
} catch {
let imageType = 'arraybuffer';
const blob = new Blob([message], { type: imageType });
const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob);
console.log('imageUrl', imageUrl);
const blob = new Blob([message], { type: imageType })
const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob)
console.log("imageUrl", imageUrl)
}
} else if (topic.indexOf('img4') != -1) {
} else if (topic.indexOf("img4") != -1) {
try {
const utf8decoder = new TextDecoder();
const u8arr = new Uint8Array(message);
const temp = utf8decoder.decode(u8arr); //
const msg = JSON.parse(temp); //JSON
console.log('msg', msg); //msgJSON
const utf8decoder = new TextDecoder()
const u8arr = new Uint8Array(message)
const temp = utf8decoder.decode(u8arr) //
const msg = JSON.parse(temp) //JSON
console.log("msg", msg) //msgJSON
this.imgUrl4 = 'data:image/png;base64,' + msg.pic;
console.log('imageUrl', imageUrl);
console.log("imageUrl", imageUrl)
} catch {
let imageType = 'arraybuffer';
const blob = new Blob([message], { type: imageType });
const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob);
console.log('imageUrl', imageUrl);
const blob = new Blob([message], { type: imageType })
const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob)
console.log("imageUrl", imageUrl)
}
} else if (topic.indexOf('img5') != -1) {
} else if (topic.indexOf("img5") != -1) {
try {
const utf8decoder = new TextDecoder();
const u8arr = new Uint8Array(message);
const temp = utf8decoder.decode(u8arr); //
const msg = JSON.parse(temp); //JSON
console.log('msg', msg); //msgJSON
const utf8decoder = new TextDecoder()
const u8arr = new Uint8Array(message)
const temp = utf8decoder.decode(u8arr) //
const msg = JSON.parse(temp) //JSON
console.log("msg", msg) //msgJSON
this.imgUrl5 = 'data:image/png;base64,' + msg.pic;
console.log('imageUrl', imageUrl);
console.log("imageUrl", imageUrl)
} catch {
let imageType = 'arraybuffer';
const blob = new Blob([message], { type: imageType });
const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob);
console.log('imageUrl', imageUrl);
const blob = new Blob([message], { type: imageType })
const imageUrl = (window.URL || window.webkitURL).createObjectURL(blob)
console.log("imageUrl", imageUrl)
}
} else if (topic.indexOf('stream0') != -1) {
} else if (topic.indexOf("stream0") != -1) {
// console.log(
// `[MQTT-TEST] "${topic}" : ${message.toString()}`,
// new Date(),
// new Date().getMilliseconds()
// );
} else if (topic.indexOf('stream0') != -1) {
} else if (topic.indexOf("stream0") != -1) {
// console.log(
// `[MQTT-TEST] "${topic}" : ${message.toString()}`,
// new Date(),
// new Date().getMilliseconds()
// );
} else if (topic.indexOf('stream1') != -1) {
} else if (topic.indexOf("stream1") != -1) {
console.log(
`[MQTT-TEST] 从主题 "${topic}" 收到的内容: ${message.toString()}`,
new Date(),
new Date().getMilliseconds()
);
} else if (topic.indexOf('stream2') != -1) {
} else if (topic.indexOf("stream2") != -1) {
console.log(
`[MQTT-TEST] 从主题 "${topic}" 收到的内容: ${message.toString()}`,
new Date(),
new Date().getMilliseconds()
);
} else if (topic.indexOf('stream3') != -1) {
} else if (topic.indexOf("stream3") != -1) {
console.log(
`[MQTT-TEST] 从主题 "${topic}" 收到的内容: ${message.toString()}`,
new Date(),
new Date().getMilliseconds()
);
} else if (topic.indexOf('stream4') != -1) {
} else if (topic.indexOf("stream4") != -1) {
console.log(
`[MQTT-TEST] 从主题 "${topic}" 收到的内容: ${message.toString()}`,
new Date(),
new Date().getMilliseconds()
);
} else if (topic.indexOf('stream5') != -1) {
} else if (topic.indexOf("stream5") != -1) {
console.log(
`[MQTT-TEST] 从主题 "${topic}" 收到的内容: ${message.toString()}`,
new Date(),
new Date().getMilliseconds()
);
}
});
}
}
},
}
};
</script>
@ -944,7 +927,7 @@ export default {
.dataBoard .section {
width: 80%;
// border: 1px solid gray;
border: 1px solid #e4e7ed;
border: 1px solid #E4E7ED;
box-sizing: border-box;
padding: 15px;
margin-bottom: 3%;

View File

@ -6,7 +6,7 @@
<el-tabs type="border-card">
<el-tab-pane label="xx路口">
<div style="width:75%;height:900px;display:inline-block;border:1px soild #eee;">
<iframe id="mapModule" src="./VideoWeb/index.html" frameborder="0" style="width: 100%; height:100%;"></iframe>
<iframe id="mapModule" src="./VideoWeb/index.html" frameborder="0" style="width: 100%; height:600px;"></iframe>
<!-- <iframe src="./VideoWeb/index.html" style="height: 100%; width: 100%;border: none"
ref="iframe"></iframe> -->
</div>