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:{ blt:{
list:{
name: "全部在线标签列表信息",
req: async function(data){
return await http.post(
`${config.API_URL}/third/tdevice/blt/`,
data
);
}
},
all:{ all:{
name: "全部在线标签列表信息", name: "全部在线标签列表信息",
req: async function(data){ 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", "icon": "el-icon-menu",
}, },
"component": "am/audio" "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" "component": "ops/log_request"
}, },
/*{ {
"name": "monitor", "name": "thirdLogs",
"path": "/ops/monitor", "path": "/ops/thirdLogs",
"meta": { "meta": {
"title": "服务监控", "title": "第三方日志",
"icon": "el-icon-fold", "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, userMaskerLayer: null,
jobDomMarkerLayer: null, jobDomMarkerLayer: null,
riskMarkerLayer: null,// riskMarkerLayer: null,//
areaMarkerLayer: null,//
pointMarkerLayer: null,// pointMarkerLayer: null,//
polygonMaskerLayer: null,// polygonMaskerLayer: null,//
cameraMaskerLayer: null,// cameraMaskerLayer: null,//
@ -840,6 +841,7 @@
carsMaskerLayer: null,// carsMaskerLayer: null,//
manMaskerLayer: null,// manMaskerLayer: null,//
flyManager: null, flyManager: null,
eareMarker: null,
dropIndex: '1', dropIndex: '1',
countIndex: '2', countIndex: '2',
markList: [false, false, false, false, false, false, false], markList: [false, false, false, false, false, false, false],
@ -963,6 +965,8 @@
this.polygonMarkerLayers();// this.polygonMarkerLayers();//
this.speakersMaskerLayers();// this.speakersMaskerLayers();//
this.jobDomMarkerLayers();// this.jobDomMarkerLayers();//
this.areaMarkerLayers();//
let compassControl = new jsmap.JSCompassControl({ let compassControl = new jsmap.JSCompassControl({
position: jsmap.JSControlPosition.LEFT_TOP, position: jsmap.JSControlPosition.LEFT_TOP,
offset: { offset: {
@ -979,7 +983,6 @@
} }
}); });
window.map.addControl(zoomControl); window.map.addControl(zoomControl);
// this.pointMaskerLayers();//
}); });
window.map.on('mapClickNode', event => { window.map.on('mapClickNode', event => {
let item = event; let item = event;
@ -1096,9 +1099,45 @@
}, },
methods: { methods: {
areaRowClick(data) { areaRowClick(data) {
this.areaDetail = true; let that = this;
console.log(data); that.areaDetail = true;
debugger; // 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() { getAllPost() {
@ -1299,6 +1338,16 @@
window.map.addLayer(that.jobDomMarkerLayer); window.map.addLayer(that.jobDomMarkerLayer);
that.showJobDomMarkers(); that.showJobDomMarkers();
}, },
//
areaMarkerLayers() {
let that = this;
that.areaMarkerLayer = new jsmap.JSDomMarkerLayer({
minimumLevel: 3,
maxmumLevel: 22,
show: true
});
window.map.addLayer(that.areaMarkerLayer);
},
//layer //layer
userMaskerLayers() {// userMaskerLayers() {//
let that = this; let that = this;

View File

@ -3,7 +3,9 @@
<el-descriptions :column="1" border size="small"> <el-descriptions :column="1" border size="small">
<el-descriptions-item label="请求接口">{{data.path}}</el-descriptions-item> <el-descriptions-item label="请求接口">{{data.path}}</el-descriptions-item>
<el-descriptions-item label="请求方法">{{data.method}}</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="日志id">{{data.id}}</el-descriptions-item>
<el-descriptions-item label="日志时间">{{data.requested_at}}</el-descriptions-item> <el-descriptions-item label="日志时间">{{data.requested_at}}</el-descriptions-item>
</el-descriptions> </el-descriptions>
@ -32,15 +34,17 @@
methods: { methods: {
setData(data){ setData(data){
this.data = data; this.data = data;
// debugger;
console.log(data);
let dataStr = ''; let dataStr = '';
for (let i in data) { 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; dataStr += X;
console.log(i);
} }
console.log(dataStr);
this.dataStr = dataStr; this.dataStr = dataStr;
document.getElementById("logDetail").innerHTML = dataStr; document.getElementById("logDetail").innerHTML = dataStr;
} }
@ -50,7 +54,7 @@
<style scoped> <style scoped>
.code { .code {
background: #848484; background: #0F0F0F;
padding:15px; padding:15px;
color: #fff; color: #fff;
font-size: 12px; font-size: 12px;

View File

@ -11,16 +11,25 @@
<el-main class="nopadding"> <el-main class="nopadding">
<scTable ref="table" :apiObj="apiObj" row-key="id" stripe highlightCurrentRow @row-click="rowClick"> <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="#" 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="路径" 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="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-table-column label="操作" align="center" width="100">
<el-button type="text" size="small">查看详情</el-button> <el-button type="text" size="small">查看详情</el-button>
</el-table-column> </el-table-column>
</scTable> </scTable>
</el-main> </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> <logInfo ref="logInfo"></logInfo>
</el-drawer> </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>