thirdlogs&blt

This commit is contained in:
shijing 2022-07-11 17:01:43 +08:00
parent d4b72069f2
commit 0231e6ce32
7 changed files with 267 additions and 20 deletions

View File

@ -35,6 +35,15 @@ export default {
},
blt:{
list:{
name: "全部在线标签列表信息",
req: async function(data){
return await http.post(
`${config.API_URL}/third/tdevice/blt/`,
data
);
}
},
all:{
name: "全部在线标签列表信息",
req: async function(data){
@ -64,5 +73,14 @@ export default {
}
},
thirdLog:{
name: "第三方日志",
req: async function(data){
return await http.get(
`${config.API_URL}/third/tlog/`,
data
);
}
}
}

View File

@ -525,6 +525,14 @@ const routes = [
"icon": "el-icon-menu",
},
"component": "am/audio"
},{
"name": "blt",
"path": "/am/blt",
"meta": {
"title": "定位标签",
"icon": "el-icon-menu",
},
"component": "am/blt"
},
]
},
@ -669,15 +677,15 @@ const routes = [
},
"component": "ops/log_request"
},
/*{
"name": "monitor",
"path": "/ops/monitor",
{
"name": "thirdLogs",
"path": "/ops/thirdLogs",
"meta": {
"title": "服务监控",
"title": "第三方日志",
"icon": "el-icon-fold",
},
"component": "ops/monitor"
},*/
"component": "ops/thirdLogs"
},
]
},
]

87
src/views/am/blt.vue Normal file
View File

@ -0,0 +1,87 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<div class="right-panel-search">
<el-button type="primary" icon="el-icon-search" @click="upsearch">同步</el-button>
</div>
</div>
</el-header>
<el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" row-key="id" @selection-change="selectionChange" stripe @resetQuery="resetQuery" >
<el-table-column type="selection" width="50"></el-table-column>
<el-table-column label="序号" type="index" width="50"></el-table-column>
<el-table-column label="喇叭名称" prop="name" min-width="150"></el-table-column>
<el-table-column label="音量" prop="extra" min-width="100">
<template #default="scope">
<span v-if="scope.row.extra&&scope.row.extra.player">{{scope.row.extra.player.EnvVolume}}</span>
</template>
</el-table-column>
<el-table-column label="设备sn" prop="sn" min-width="90"></el-table-column>
<el-table-column label="ip" prop="extra" min-width="90">
<template #default="scope">
<span v-if="scope.row.extra">{{scope.row.extra.ip}}</span>
</template>
</el-table-column>
<el-table-column label="状态" prop="extra" min-width="90">
<template #default="scope">
<span v-if="scope.row.extra">{{scope.row.extra.online}}</span>
</template>
</el-table-column>
<!--<el-table-column label="位置" prop="count_people" min-width="90"></el-table-column>-->
<el-table-column label="所在区域" prop="create_time" min-width="180"></el-table-column>
<el-table-column label="覆盖区域" prop="create_time" width="160"></el-table-column>
<el-table-column label="操作" fixed="right" align="center" width="160">
<template #default="scope">
<el-button-group>
<el-button text type="primary" size="small" @click="handlePosition(scope.row)">标记位置</el-button>
</el-button-group>
</template>
</el-table-column>
</scTable>
</el-main>
</el-container>
<channel-view v-if="dialogSave" ref="saveDialog" :channelType="50" :channelCode="channelCode" :channelName="channelName" @closed="dialogSave=false"></channel-view>
</template>
<script>
import channelView from './vchannel_view'
export default {
name: 'blt',
components: {
channelView
},
data() {
return {
apiObj: this.$API.third.blt.list,
dialogSave: false,
limitedVisible: false,
query: {},
selection: [],
search: {
keyword: null
},
channelCode:'',
channelName:'',
}
},
methods: {
handlePosition(row){
this.channelCode = row.sn;
this.channelName = row.name;
this.dialogSave = true;
},
//
selectionChange(selection){
this.selection = selection;
},
//
upsearch(){
},
resetQuery(){
this.query = {}
}
}
}
</script>

View File

@ -833,6 +833,7 @@
userMaskerLayer: null,
jobDomMarkerLayer: null,
riskMarkerLayer: null,//
areaMarkerLayer: null,//
pointMarkerLayer: null,//
polygonMaskerLayer: null,//
cameraMaskerLayer: null,//
@ -840,6 +841,7 @@
carsMaskerLayer: null,//
manMaskerLayer: null,//
flyManager: null,
eareMarker: null,
dropIndex: '1',
countIndex: '2',
markList: [false, false, false, false, false, false, false],
@ -963,6 +965,8 @@
this.polygonMarkerLayers();//
this.speakersMaskerLayers();//
this.jobDomMarkerLayers();//
this.areaMarkerLayers();//
let compassControl = new jsmap.JSCompassControl({
position: jsmap.JSControlPosition.LEFT_TOP,
offset: {
@ -979,7 +983,6 @@
}
});
window.map.addControl(zoomControl);
// this.pointMaskerLayers();//
});
window.map.on('mapClickNode', event => {
let item = event;
@ -1096,9 +1099,45 @@
},
methods: {
areaRowClick(data) {
this.areaDetail = true;
console.log(data);
debugger;
let that = this;
that.areaDetail = true;
// let points = data.third_info.xx_rail.detail.polygon.points[0];
window.map.flyToPosition(new jsmap.JSPoint(114.63168864138028, 38.81254802029822, 0),{duration:1000});
/*debugger;
let tool = new jsmap.JSMapCoordTool(map);
let points = data.third_info.xx_rail.detail.polygon.points;
let position = [];*/
/*for(let i=0;i<points.length;i++){
let item = tool.screenToMapCoordinate(points[i]);
// let item = new jsmap.JSPoint(points[i].x, points[i].y, 0);
position.push(item);
}*/
/*window.map.flyToPosition ({x: points[0].x, y: points[0].y, z:0},{
duration:1000,
offset:{
rotate: 45,
tilt: 60,
range: 100
}
}*/
/*that.eareMarker = new jsmap.JSPolygonMarker({
id: data.id,//id
position: [
new jsmap.JSPoint(114.63168864138028, 38.81254802029822, 0),
new jsmap.JSPoint(114.63185023632963, 38.81241816295427, 0),
new jsmap.JSPoint(114.63160294240738, 38.812229296478634,0),
new jsmap.JSPoint(114.63143965827588, 38.81235778393449, 0),
],//
// position:position,//
floorId: 1,//id
color: 'rgba(0,0,255,.44)',//
strokeColor: '#2bff1d',//线
depthTest: false,//
displayCondition: new jsmap.JSDisplayCondition(0.0, 1000), //
});
that.areaMarkerLayer.addMarker(that.eareMarker);*/
},
//
getAllPost() {
@ -1299,6 +1338,16 @@
window.map.addLayer(that.jobDomMarkerLayer);
that.showJobDomMarkers();
},
//
areaMarkerLayers() {
let that = this;
that.areaMarkerLayer = new jsmap.JSDomMarkerLayer({
minimumLevel: 3,
maxmumLevel: 22,
show: true
});
window.map.addLayer(that.areaMarkerLayer);
},
//layer
userMaskerLayers() {//
let that = this;

View File

@ -3,7 +3,9 @@
<el-descriptions :column="1" border size="small">
<el-descriptions-item label="请求接口">{{data.path}}</el-descriptions-item>
<el-descriptions-item label="请求方法">{{data.method}}</el-descriptions-item>
<el-descriptions-item label="状态代码">{{data.status_code}}</el-descriptions-item>
<el-descriptions-item v-if="data.target" label="target">{{data.target}}</el-descriptions-item>
<el-descriptions-item v-if="data.result" label="状态代码">{{data.result}}</el-descriptions-item>
<el-descriptions-item v-if="data.status_code" label="状态代码">{{data.status_code}}</el-descriptions-item>
<el-descriptions-item label="日志id">{{data.id}}</el-descriptions-item>
<el-descriptions-item label="日志时间">{{data.requested_at}}</el-descriptions-item>
</el-descriptions>
@ -32,15 +34,17 @@
methods: {
setData(data){
this.data = data;
// debugger;
console.log(data);
let dataStr = '';
for (let i in data) {
let X = i + ':' + data[i]+'<br>';
let X='';
if(typeof data[i] ==='object'){
let temp =JSON.stringify(data[i]);
X ='<span style="color: #43e669;margin-right: 6px;">'+i+'</span>'+ '' + temp+'<br>';
}else{
X ='<span style="color: #43e669;margin-right: 6px;">'+i+'</span>'+ '' + data[i]+'<br>';
}
dataStr += X;
console.log(i);
}
console.log(dataStr);
this.dataStr = dataStr;
document.getElementById("logDetail").innerHTML = dataStr;
}
@ -50,7 +54,7 @@
<style scoped>
.code {
background: #848484;
background: #0F0F0F;
padding:15px;
color: #fff;
font-size: 12px;

View File

@ -11,16 +11,25 @@
<el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe highlightCurrentRow @row-click="rowClick">
<el-table-column label="#" type="index" width="50"></el-table-column>
<el-table-column label="id" prop="id" min-width="250"></el-table-column>
<el-table-column label="method" prop="method" min-width="80"></el-table-column>
<el-table-column label="id" prop="id" min-width="200"></el-table-column>
<el-table-column label="路径" prop="path" min-width="150"></el-table-column>
<el-table-column label="view" prop="view" min-width="150"></el-table-column>
<el-table-column label="method" prop="method" min-width="150"></el-table-column>
<el-table-column label="状态码" prop="status_code" min-width="80">
<template #default="scope">
<el-tag class="ml-2" type="success" v-if="scope.row.status_code>=200&&scope.row.status_code<300">{{scope.row.status_code}}</el-tag>
<el-tag class="ml-2" type="warning" v-if="scope.row.status_code>=400&&scope.row.status_code<500">{{scope.row.status_code}}</el-tag>
<el-tag class="ml-2" type="danger" v-if="scope.row.status_code>=500">{{scope.row.status_code}}</el-tag>
</template>
</el-table-column>
<el-table-column label="操作时间" prop="requested_at" min-width="150"></el-table-column>
<el-table-column label="操作" align="center" width="100">
<el-button type="text" size="small">查看详情</el-button>
</el-table-column>
</scTable>
</el-main>
<el-drawer v-model="infoDrawer" title="日志详情" :size="600" destroy-on-close>
<el-drawer v-model="infoDrawer" title="日志详情" :size="'50%'" destroy-on-close>
<logInfo ref="logInfo"></logInfo>
</el-drawer>

View File

@ -0,0 +1,72 @@
<template>
<el-container>
<el-header>
<div class="left-panel">
<div class="right-panel-search">
<el-input v-model="search.id" placeholder="logId" clearable></el-input>
<el-button type="primary" icon="el-icon-search" @click="getSearch"></el-button>
</div>
</div>
</el-header>
<el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe highlightCurrentRow @row-click="rowClick">
<el-table-column label="#" type="index" width="50"></el-table-column>
<el-table-column label="method" prop="method" min-width="80"></el-table-column>
<el-table-column label="id" prop="id" min-width="200"></el-table-column>
<el-table-column label="路径" prop="path" min-width="150"></el-table-column>
<el-table-column label="target" prop="target" min-width="80"></el-table-column>
<el-table-column label="状态" prop="status_code" min-width="80">
<template #default="scope">
<el-tag class="ml-2" type="success" v-if="scope.row.result==='success'">成功</el-tag>
<el-tag class="ml-2" type="warning" v-if="scope.row.result==='fail'">报错</el-tag>
<el-tag class="ml-2" type="danger" v-if="scope.row.result==='error'">失败</el-tag>
</template>
</el-table-column>
<el-table-column label="操作时间" prop="requested_at" min-width="150"></el-table-column>
<el-table-column label="操作" align="center" width="100">
<el-button type="text" size="small">查看详情</el-button>
</el-table-column>
</scTable>
</el-main>
<el-drawer v-model="infoDrawer" title="日志详情" :size="'50%'" destroy-on-close>
<logInfo ref="logInfo"></logInfo>
</el-drawer>
</el-container>
</template>
<script>
import logInfo from './logInfo'
export default {
name: 'thirdLogs',
components: {
logInfo
},
data() {
return {
apiObj: this.$API.third.thirdLog,
search:{
id:null,
},
logLists:[],
infoDrawer:false,
logDetailVisible:false,
}
},
mounted() {
},
methods: {
getSearch(){
this.$refs.table.reload(this.search);
},
rowClick(row){
this.infoDrawer = true;
this.$nextTick(() => {
this.$refs.logInfo.setData(row)
})
}
}
}
</script>
<style scoped>
.treeMain {height:280px;overflow: auto;border: 1px solid #dcdfe6;margin-bottom: 10px;}
</style>