Merge branch 'pet' into dev

2024-07-22新BI页面
guoyuepeng 2024-06-20 18:37:18 +08:00
commit aba24ac8eb
11 changed files with 273 additions and 72 deletions

View File

@ -58,9 +58,9 @@
</el-table-column> </el-table-column>
<el-table-column label="闸机类别"> <el-table-column label="闸机类别">
<template slot-scope="{row}"> <template slot-scope="{row}">
<span v-if="row.GATE_CATEGORY==0"></span> <span v-if="row.GATE_CATEGORY==1"></span>
<span v-if="row.GATE_CATEGORY==1"></span> <span v-if="row.GATE_CATEGORY==2"></span>
<span v-if="row.GATE_CATEGORY==2"></span> <span v-if="row.GATE_CATEGORY==3"></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="操作" align="center" width="350px"> <el-table-column label="操作" align="center" width="350px">
@ -211,9 +211,9 @@ export default {
{ value: '2', label: '出' } { value: '2', label: '出' }
], ],
gateCategoryList: [ gateCategoryList: [
{ value: '0', label: '人行口门' }, { value: '1', label: '人行口门' },
{ value: '1', label: '车行口门' }, { value: '2', label: '车行口门' },
{ value: '2', label: '综合口门' } { value: '3', label: '综合口门' }
], ],
addDialog: { addDialog: {
visible: false, visible: false,

View File

@ -1,8 +1,38 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="rightCont"> <div class="rightCont">
<el-form label-width="50px">
<el-col :span="5">
<el-form-item label="口门名称:" label-width="110px">
<el-input v-model="searchForm.KEYWORDS" style="width:206px" placeholder="请输入内容"/>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="口门状态" label-width="110px">
<el-select v-model="searchForm.GATE_STATUS" placeholder="请选择">
<el-option v-for="(item,index) in StatusList" :key="index" :label="item.label" :value="item.value"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="所属区域" label-width="110px">
<el-select v-model="searchForm.REGION_BIANMA" placeholder="请选择">
<el-option v-for="(item,index) in RegionList" :key="index" :label="item.NAME" :value="item.BIANMA"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-form>
<div> <div>
<span @click="people" style="margin: 10px;">车行口门记录</span>
<el-table <el-table
v-loading="listLoading" v-loading="listLoading"
ref="multipleTable" ref="multipleTable"
@ -13,6 +43,8 @@
:cell-style="getPlateColor" :cell-style="getPlateColor"
style="width: 100%"> style="width: 100%">
<el-table-column type="index" label="序号" width="55" align="center"/> <el-table-column type="index" label="序号" width="55" align="center"/>
<el-table-column prop="REGION_NAME" label="区域" width="100px" align="center"/>
<el-table-column prop="AREA_NAME" label="口门名称" width="100px" align="center"/>
<el-table-column prop="vehicle_plate_number" label="车牌号" width="100px" align="center"/> <el-table-column prop="vehicle_plate_number" label="车牌号" width="100px" align="center"/>
<el-table-column prop="vehicle_category_name" label="车辆类型" width="150px" align="center"/> <el-table-column prop="vehicle_category_name" label="车辆类型" width="150px" align="center"/>
<el-table-column prop="vehicle_contact_name" label="车辆联系人" width="150ox" align="center"/> <el-table-column prop="vehicle_contact_name" label="车辆联系人" width="150ox" align="center"/>
@ -51,6 +83,17 @@ export default {
page: 1, page: 1,
limit: 20 limit: 20
}, },
searchForm: {
KEYWORDS: '',
GATE_STATUS: '',
REGION_BIANMA: '',
},
RegionList: [],
StatusList: [
{ value: '0', label: '停用' },
{ value: '1', label: '正常' },
{ value: '2', label: '暂时关闭' }
],
total: 0, total: 0,
KEYWORDS: '', KEYWORDS: '',
varList: [], varList: [],
@ -94,6 +137,14 @@ export default {
getQuery() { getQuery() {
this.getList() this.getList()
// this.hasButton()
this.getDict()
},
goKeyReset() {
this.searchForm.KEYWORDS = ''
this.searchForm.GATE_STATUS = ''
this.searchForm.REGION_BIANMA = ''
this.getList()
}, },
// //
getList() { getList() {
@ -102,7 +153,7 @@ export default {
requestFN( requestFN(
'/mkmjGateLog/page?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page, '/mkmjGateLog/page?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{ {
...this.searchForm
} }
).then((data) => { ).then((data) => {
this.listLoading = false this.listLoading = false
@ -113,26 +164,14 @@ export default {
this.listLoading = false this.listLoading = false
}) })
}, },
people(){
this.$parent.activeName = 'peopleRecordList'
},
getDict() { getDict() {
requestFN(
'/corpinfo/getSelectByCorpInfo',
{
}
).then((data) => {
this.corpList = JSON.parse(data.corpInfoJson)
}).catch((e) => {
})
requestFN( requestFN(
'dictionaries/getLevels', 'dictionaries/getLevels',
{ {
DICTIONARIES_ID: '6bba977985f6427e9d0b52afe8884d1a' DICTIONARIES_ID: '1c73fa2717f2835165104aee234caefe'
} }
).then((data) => { ).then((data) => {
this.typeData = data.list this.RegionList = data.list
}) })
.catch((e) => { .catch((e) => {
this.listLoading = false this.listLoading = false

View File

@ -0,0 +1,23 @@
<template>
<div>
<carRecordList v-show="activeName=='carRecordList'" ref="carRecordList" />
</div>
</template>
<script>
import carRecordList from './components/carRecordList.vue'
export default {
components: {
carRecordList: carRecordList
},
data() {
return {
activeName: 'carRecordList',
}
}
}
</script>
<style scoped>
</style>

View File

@ -1,26 +1,12 @@
<template>
<div>
<carRecordList v-show="activeName=='carRecordList'" ref="carRecordList" />
<peopleRecordList v-if="activeName=='peopleRecordList'" ref="peopleRecordList" />
</div>
</template>
<script> <script>
import carRecordList from './components/carRecordList.vue'
import peopleRecordList from './components/peopleRecordList.vue'
export default { export default {
components: {
carRecordList: carRecordList,
peopleRecordList:peopleRecordList
},
data() {
return {
activeName: 'carRecordList',
}
}
} }
</script> </script>
<style scoped> <template>
</style> <router-view/>
</template>
<style scoped>
</style>

View File

@ -1,8 +1,38 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<div class="rightCont"> <div class="rightCont">
<el-form label-width="50px">
<el-col :span="5">
<el-form-item label="口门名称:" label-width="110px">
<el-input v-model="searchForm.KEYWORDS" style="width:206px" placeholder="请输入内容"/>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="口门状态" label-width="110px">
<el-select v-model="searchForm.GATE_STATUS" placeholder="请选择">
<el-option v-for="(item,index) in StatusList" :key="index" :label="item.label" :value="item.value"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="5">
<el-form-item label="所属区域" label-width="110px">
<el-select v-model="searchForm.REGION_BIANMA" placeholder="请选择">
<el-option v-for="(item,index) in RegionList" :key="index" :label="item.NAME" :value="item.BIANMA"/>
</el-select>
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label-width="10px">
<el-button v-waves class="filter-item" type="primary" icon="el-icon-search" @click="getQuery">
搜索
</el-button>
<el-button v-waves class="filter-item" type="success" icon="el-icon-refresh" @click="goKeyReset">
重置
</el-button>
</el-form-item>
</el-col>
</el-form>
<div> <div>
<span @click="car" style="margin: 10px;" >人行口门记录</span>
<el-table <el-table
v-loading="listLoading" v-loading="listLoading"
ref="multipleTable" ref="multipleTable"
@ -12,11 +42,12 @@
tooltip-effect="dark" tooltip-effect="dark"
style="width: 100%"> style="width: 100%">
<el-table-column type="index" label="序号" width="55" align="center"/> <el-table-column type="index" label="序号" width="55" align="center"/>
<el-table-column prop="REGION_NAME" label="区域" width="100px" align="center"/>
<el-table-column prop="AREA_NAME" label="口门名称" width="100px" align="center"/>
<el-table-column prop="departmentName" label="公司" align="center"/> <el-table-column prop="departmentName" label="公司" align="center"/>
<el-table-column prop="personName" label="人员" width="100px" align="center"/> <el-table-column prop="personName" label="人员" width="100px" align="center"/>
<el-table-column prop="sex" label="性别" width="50px" align="center"/> <el-table-column prop="sex" label="性别" width="50px" align="center"/>
<el-table-column prop="inOrOut" label="类型" width="50px" align="center"/> <el-table-column prop="inOrOut" label="类型" width="50px" align="center"/>
<el-table-column prop="regionName" label="区域名称" width="80px" align="center"/>
<el-table-column prop="channelName" label="通道名称" align="center"/> <el-table-column prop="channelName" label="通道名称" align="center"/>
<el-table-column prop="personType" label="身份类别" width="150px" align="center"/> <el-table-column prop="personType" label="身份类别" width="150px" align="center"/>
<el-table-column prop="cardNumber" label="卡号" width="100px" align="center"/> <el-table-column prop="cardNumber" label="卡号" width="100px" align="center"/>
@ -50,6 +81,17 @@ export default {
page: 1, page: 1,
limit: 20 limit: 20
}, },
searchForm: {
KEYWORDS: '',
GATE_STATUS: '',
REGION_BIANMA: '',
},
RegionList: [],
StatusList: [
{ value: '0', label: '停用' },
{ value: '1', label: '正常' },
{ value: '2', label: '暂时关闭' }
],
total: 0, total: 0,
KEYWORDS: '', KEYWORDS: '',
varList: [], varList: [],
@ -67,6 +109,14 @@ export default {
getQuery() { getQuery() {
this.getList() this.getList()
// this.hasButton()
this.getDict()
},
goKeyReset() {
this.searchForm.KEYWORDS = ''
this.searchForm.GATE_STATUS = ''
this.searchForm.REGION_BIANMA = ''
this.getList()
}, },
// //
getList() { getList() {
@ -75,7 +125,7 @@ export default {
requestFN( requestFN(
'/mkmjGateLog/peoplePage?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page, '/mkmjGateLog/peoplePage?showCount=' + this.listQuery.limit + '&currentPage=' + this.listQuery.page,
{ {
...this.searchForm
} }
).then((data) => { ).then((data) => {
this.listLoading = false this.listLoading = false
@ -86,26 +136,15 @@ export default {
this.listLoading = false this.listLoading = false
}) })
}, },
car(){
this.$parent.activeName = 'carRecordList'
},
getDict() { getDict() {
requestFN(
'/corpinfo/getSelectByCorpInfo',
{
}
).then((data) => {
this.corpList = JSON.parse(data.corpInfoJson)
}).catch((e) => {
})
requestFN( requestFN(
'dictionaries/getLevels', 'dictionaries/getLevels',
{ {
DICTIONARIES_ID: '6bba977985f6427e9d0b52afe8884d1a' DICTIONARIES_ID: '1c73fa2717f2835165104aee234caefe'
} }
).then((data) => { ).then((data) => {
this.typeData = data.list this.RegionList = data.list
}) })
.catch((e) => { .catch((e) => {
this.listLoading = false this.listLoading = false

View File

@ -0,0 +1,23 @@
<template>
<div>
<peopleRecordList v-show="activeName=='peopleRecordList'" ref="peopleRecordList" />
</div>
</template>
<script>
import peopleRecordList from './components/peopleRecordList.vue'
export default {
components: {
peopleRecordList:peopleRecordList
},
data() {
return {
activeName: 'peopleRecordList',
}
}
}
</script>
<style scoped>
</style>

View File

@ -1,7 +1,7 @@
<template> <template>
<div class="menjin"> <div class="menjin">
<div class="block1"> <div class="block1">
<layout-title title="二道门统计"/> <layout-title title="门统计"/>
<div class="options"> <div class="options">
<div v-for="(item,index) in block1OptionsList" :key="index" class="option"> <div v-for="(item,index) in block1OptionsList" :key="index" class="option">
<div class="title active">{{ item.title }}</div> <div class="title active">{{ item.title }}</div>
@ -23,8 +23,8 @@
</div> </div>
</div> </div>
</div> </div>
<div class="block2"> <!-- <div class="block2">
<layout-title title="封闭区域"/> <layout-title title="口门区域"/>
<div class="options"> <div class="options">
<div class="bg"/> <div class="bg"/>
<div v-for="(item,index) in block2OptionsList" :key="index" class="option"> <div v-for="(item,index) in block2OptionsList" :key="index" class="option">
@ -35,7 +35,7 @@
</div> </div>
</div> </div>
</div> </div>
</div> </div> -->
<div class="block3"> <div class="block3">
<layout-title title="口门进出记录"/> <layout-title title="口门进出记录"/>
<div class="content"> <div class="content">

View File

@ -73,7 +73,7 @@
<td width="80px">{{ item.CAR_IN - item.CAR_OUT}}</td> <td width="80px">{{ item.CAR_IN - item.CAR_OUT}}</td>
</tr> </tr>
</table> </table>
<table class="table-ui"> <table class="table-ui" v-if= "type != 'CAMERA'">
<tr v-if="carRecordAllList != null && carRecordAllList.length > 0"> <tr v-if="carRecordAllList != null && carRecordAllList.length > 0">
<td colspan="6"> <td colspan="6">
<table class="table-ui"> <table class="table-ui">
@ -126,7 +126,7 @@
</tr> </tr>
</table> </table>
<div class="video"> <div class="video">
<video-play v-if="type === 'CAMERA' && info.GATEVIDEO_ID" :id="info.GATEVIDEO_ID" :type="type" :gangkou="gangkou"/> <video-play-gate v-if="type === 'CAMERA' && GATE_VIDEO_ID" :id="GATE_VIDEO_ID" :type="type" :gangkou="gangkou"/>
</div> </div>
</div> </div>
</template> </template>
@ -135,8 +135,9 @@
import { requestFN } from '@/utils/request' import { requestFN } from '@/utils/request'
import moment from 'moment' import moment from 'moment'
import videoPlay from './video_play.vue' import videoPlay from './video_play.vue'
import videoPlayGate from './video_play_gate.vue'
export default { export default {
components: { videoPlay }, components: { videoPlay, videoPlayGate },
props: { props: {
id: { id: {
type: String, type: String,
@ -221,6 +222,11 @@ export default {
} }
} }
} }
if (this.type == 'CAMERA') {
Object.assign(this.info, data.pd.info)
this.info.CODE = data.pd.video.EXTERNALINDEXCODE
this.info.VIDEONAME = data.pd.video.NAME
}
this.$forceUpdate() this.$forceUpdate()
}).catch((e) => { }).catch((e) => {

View File

@ -0,0 +1,88 @@
<template>
<div>
<div id="aLiVideoPlayer" class="prism-player"/>
</div>
</template>
<script>
import { requestFN } from '@/utils/request'
export default {
props: {
id: {
type: String,
default() {
return ''
}
},
type: {
type: String,
default() {
return ''
}
},
gangkou: {
type: String,
default: ''
},
requestUrl: {
type: String,
default: '/mkmjGateVideo/goAllVideo'
}
},
data() {
return {
hls: false,
player: null,
url: ''
}
},
beforeDestroy() {
this.player && this.player.dispose()
},
created() {
this.showVideo()
},
methods: {
showVideo() {
requestFN(
this.requestUrl,
{
GATE_VIDEO_ID: this.id
}
).then((data) => {
// for (let i = 0; i < data.videoList.length; i++) {
// if (data.videoList[0].HLSVIDEOURL) {
// this.url = data.videoList[0].GBSVIDEOURL
// this.hls = true
// } else {
this.hls = false
this.$nextTick(() => {
// eslint-disable-next-line no-undef
this.player = new Aliplayer({
'id': 'aLiVideoPlayer',
'source': data.video.HLSVIDEOURL.data.url,
'width': '100%',
'height': '500px',
'autoplay': true,
'isLive': true,
'rePlay': false,
'playsinline': true,
'preload': true,
'controlBarVisibility': 'hover',
'useH5Prism': true
}, function(player) {
console.log('The player is created')
})
})
// }
// }
})
}
}
}
</script>
<style lang="scss" scoped>
</style>

View File

@ -1385,11 +1385,8 @@ export default {
const point_type = pick.id._monitoItems.data.point_type const point_type = pick.id._monitoItems.data.point_type
const point_id = pick.id._monitoItems.data.id const point_id = pick.id._monitoItems.data.id
if (point_type == '标记点CAMERA'){ if (point_type == '标记点CAMERA'){
const { GATE_VIDEO_ID } = pick.id._monitoItems.data
alert(GATE_VIDEO_ID)
alert(pick.id._monitoItems.data)
console.log(pick.id._monitoItems.data) console.log(pick.id._monitoItems.data)
this.dialog.GATE_VIDEO_ID = GATE_VIDEO_ID this.dialog.GATE_VIDEO_ID = pick.id._monitoItems.data.GATE_VIDEO_ID
} }
if (point_type === '报警') { if (point_type === '报警') {
viewer.dataSources.remove(this.myEntityCollection[pick.id._monitoItems.data.id]) viewer.dataSources.remove(this.myEntityCollection[pick.id._monitoItems.data.id])
@ -2138,6 +2135,7 @@ export default {
point.position.y = +varList[i].LATITUDE point.position.y = +varList[i].LATITUDE
point.dialog_width = dialog_width point.dialog_width = dialog_width
point.MAP_POINT_NAME = varList[i].MAP_POINT_NAME point.MAP_POINT_NAME = varList[i].MAP_POINT_NAME
point.GATE_VIDEO_ID = varList[i].GATE_VIDEO_ID
// 使 // 使
point.gangkou = this.gangkouActive point.gangkou = this.gangkouActive
// //

View File

@ -199,6 +199,8 @@ export default {
{ BUS_TEXT_LIBRARY_ID: this.e.BUS_TEXT_LIBRARY_ID } { BUS_TEXT_LIBRARY_ID: this.e.BUS_TEXT_LIBRARY_ID }
).then((data) => { ).then((data) => {
this.loading = false this.loading = false
if (!data.data.labels || data.data.labels.length === 0) data.data.labels = ['']
data.data.TYPE_INFO = data.data.TYPE
this.form = data.data this.form = data.data
this.form.FILE = [] this.form.FILE = []
this.form.types = [] this.form.types = []
@ -208,10 +210,7 @@ export default {
if (!this.form.TYPES || this.form.TYPES.length === 0) this.form.TYPES = [''] if (!this.form.TYPES || this.form.TYPES.length === 0) this.form.TYPES = ['']
if (!this.form.SPECIFICATION_TYPES || this.form.SPECIFICATION_TYPES.length === 0) this.form.SPECIFICATION_TYPES = [''] if (!this.form.SPECIFICATION_TYPES || this.form.SPECIFICATION_TYPES.length === 0) this.form.SPECIFICATION_TYPES = ['']
if (!this.form.CATEGORY_LIST || this.form.CATEGORY_LIST.length === 0) this.form.CATEGORY_LIST = [''] if (!this.form.CATEGORY_LIST || this.form.CATEGORY_LIST.length === 0) this.form.CATEGORY_LIST = ['']
if (!this.form.labels || this.form.labels.length === 0) this.form.labels = ['']
this.remoteControl.keyOne = !(this.form.CATEGORY_LIST[0].CATEGORY_ID === '8051d985a2bc406a83ea9360b64182b2') this.remoteControl.keyOne = !(this.form.CATEGORY_LIST[0].CATEGORY_ID === '8051d985a2bc406a83ea9360b64182b2')
this.form.TYPE_INFO = this.form.TYPE
this.$set(this.form, 'TYPE_INFO', this.form.TYPE)
}).catch((e) => { }).catch((e) => {
this.$message.error(e) this.$message.error(e)
this.loading = false this.loading = false