From bae0368f502f524fc739003fe751fb0eb06c5859 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@iotlink.com>
Date: 星期四, 17 六月 2021 14:48:29 +0800
Subject: [PATCH] 修改朔黄前端分析
---
src/pages/shuohuangMonitorAnalyze/index/App.vue | 56 +++-
vue.config.js | 7
src/pages/shuohuangMonitorAnalyze/components/charts/line.vue | 4
src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue | 273 ++++++++----------------
src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue | 25 +-
src/pages/cameraAccess/components/DataStackInfo.vue | 4
src/pages/shuohuangMonitorAnalyze/components/leftNav.vue | 26 +-
src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue | 110 ++++-----
src/api/shuohuang.ts | 39 ++-
src/pages/shuohuangMonitorAnalyze/components/lkgManage.vue | 65 +++++
10 files changed, 301 insertions(+), 308 deletions(-)
diff --git a/src/api/shuohuang.ts b/src/api/shuohuang.ts
index 592f571..869ca98 100644
--- a/src/api/shuohuang.ts
+++ b/src/api/shuohuang.ts
@@ -36,7 +36,7 @@
method: 'get',
params: query
})
- export const getCarVideos = (query: any) =>
+export const getCarVideos = (query: any) =>
request({
url: '/data/api-c/lkg/getCarVideos',
method: 'get',
@@ -125,39 +125,46 @@
method: 'post',
data
})
-export const uploadDirectory = (data:any) =>
+export const uploadDirectory = (data: any) =>
request({
- url:'/data/api-c/user/uploadMulti',
- method:'post',
+ url: '/data/api-c/user/uploadMulti',
+ method: 'post',
data
})
-export const getTransferRecord = (query:any) => request({
- url:'/data/api-c/saverecord/getlst',
+export const getTransferRecord = (query: any) => request({
+ url: '/data/api-c/saverecord/getlst',
method: 'get',
params: query
})
export const getTransferStatusList = () => request({
- url:'/data/api-c/saverecord/getStatusList',
+ url: '/data/api-c/saverecord/getStatusList',
method: 'get'
})
-export const addDevice = (data:any)=>request({
- url:'/data/api-c/device/add',
+export const addDevice = (data: any) => request({
+ url: '/data/api-c/device/add',
method: 'post',
data
})
-export const getDeviceList = ()=>request({
- url:'/data/api-c/device/getlst',
+export const getDeviceList = () => request({
+ url: '/data/api-c/device/getlst',
method: 'get'
})
-export const getDeviceInfoById = (query:any) => request({
- url:'/data/api-c/slot/getlst',
+export const getDeviceInfoById = (query: any) => request({
+ url: '/data/api-c/slot/getlst',
method: 'get',
params: query
})
-export const getEventVideo = (query:any) => request({
- url:'/data/api-c/lkg/getEventClip',
+export const getEventVideo = (query: any) => request({
+ url: '/data/api-c/lkg/getEventClip',
method: 'get',
params: query
-})
\ No newline at end of file
+})
+
+export const uploadLKG = (data: any) =>
+ request({
+ url: '/data/api-c/lkg/uploadLKGExcel',
+ method: 'post',
+ data
+ })
\ No newline at end of file
diff --git a/src/pages/cameraAccess/components/DataStackInfo.vue b/src/pages/cameraAccess/components/DataStackInfo.vue
index 1806173..abf7198 100644
--- a/src/pages/cameraAccess/components/DataStackInfo.vue
+++ b/src/pages/cameraAccess/components/DataStackInfo.vue
@@ -457,8 +457,10 @@
if (row.type === 1) {
this.videoUrl = "/files/" + row.identifier + ".mp4"
+ if (row.identifier == "") {
+ this.videoUrl = row.path;
+ }
} else if (row.type === 2) {
-
this.imgUrl = "/files/" + row.path.substr(row.path.lastIndexOf('/') + 1)
}
},
diff --git a/src/pages/shuohuangMonitorAnalyze/components/charts/line.vue b/src/pages/shuohuangMonitorAnalyze/components/charts/line.vue
index 4e491b5..ef984b6 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/charts/line.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/charts/line.vue
@@ -9,11 +9,11 @@
type: Object
}
},
- mounted () {
+ mounted() {
this.initLineChart();
},
methods: {
- initLineChart () {
+ initLineChart() {
this.$nextTick(() => {
let dom = this.$echarts.init(this.$refs['lineChart']);
dom && dom.setOption(this.options);
diff --git a/src/pages/shuohuangMonitorAnalyze/components/leftNav.vue b/src/pages/shuohuangMonitorAnalyze/components/leftNav.vue
index 3b6cb23..afeeec2 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/leftNav.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/leftNav.vue
@@ -40,6 +40,7 @@
</template>
<el-menu-item index="transferMemo">瑙嗛杞偍璁板綍</el-menu-item>
<el-menu-item index="transferDeviceManage">杞偍璁惧绠$悊</el-menu-item>
+ <el-menu-item index="lkgManage">LKG鏁版嵁绠$悊</el-menu-item>
</el-submenu>
<el-submenu index="7">
<template slot="title">
@@ -66,33 +67,33 @@
type: Function
}
},
- data () {
+ data() {
return {
publicPath: process.env.BASE_URL,
activeIndex: 'guideIndex'
}
},
- mounted(){
+ mounted() {
console.log('mounted')
window.onbeforeunload = () => {
// debugger
console.log('beforeunload')
sessionStorage.setItem('leftNavAct', this.activeIndex);
}
- if(!!sessionStorage.getItem('leftNavAct')){
+ if (!!sessionStorage.getItem('leftNavAct')) {
this.activeIndex = sessionStorage.getItem('leftNavAct');
- this.$emit('menuChange',this.activeIndex);
+ this.$emit('menuChange', this.activeIndex);
}
},
methods: {
- handleSelect(index,indePath){
+ handleSelect(index, indePath) {
this.activeIndex = index;
- this.$emit('menuChange',index);
+ this.$emit('menuChange', index);
},
- handleOpen () {
+ handleOpen() {
},
- handleClose () {
+ handleClose() {
}
}
@@ -111,20 +112,19 @@
border-bottom: 1px solid #eee;
color: rgb(0, 150, 250);
}
- .iconfont{
+ .iconfont {
padding-right: 10px;
}
- .el-menu-vertical-demo:not(.el-menu--collapse){
+ .el-menu-vertical-demo:not(.el-menu--collapse) {
width: 250px;
}
.el-menu-item,
.el-submenu__title {
text-align: left;
}
- .el-menu-item.is-active{
- color:#409EFF;
+ .el-menu-item.is-active {
+ color: #409eff;
background-color: #ecf0fc;
}
-
}
</style>
\ No newline at end of file
diff --git a/src/pages/shuohuangMonitorAnalyze/components/lkgManage.vue b/src/pages/shuohuangMonitorAnalyze/components/lkgManage.vue
new file mode 100644
index 0000000..e765b28
--- /dev/null
+++ b/src/pages/shuohuangMonitorAnalyze/components/lkgManage.vue
@@ -0,0 +1,65 @@
+<template>
+ <div class="lkg-manage">
+ <div class="import-btn">
+ <label>涓婁紶LKG鏁版嵁鏂囦欢</label>
+ <el-button
+ size="mini"
+ type="primary"
+ @click="uploadDirectoryTrigger"
+ :loading="uploading"
+ >鐐瑰嚮涓婁紶</el-button>
+ <input
+ ref="directoryInput"
+ @change="importDirectory"
+ hidden
+ type="file"
+ accept=".xlsx, .xls"
+ multiple
+ />
+ </div>
+ </div>
+</template>
+
+<script>
+import { uploadLKG } from "@/api/shuohuang"
+
+export default {
+ data() {
+ return {
+ uploading: false
+ }
+ },
+ methods: {
+ uploadDirectoryTrigger() {
+ this.$refs['directoryInput'].click();
+ },
+ importDirectory() {
+ let _this = this;
+ _this.uploading = true;
+ let formData = new FormData;
+ for (let i = 0; i < this.$refs['directoryInput'].files.length; i++) {
+ formData.append('files', this.$refs['directoryInput'].files[i])
+ }
+
+ uploadLKG(formData).then(res => {
+ if (res && res.success) {
+ this.$message.success("涓婁紶鎴愬姛")
+ }
+ _this.uploading = false;
+ }).catch(err => {
+ this.$message.warning("涓婁紶澶辫触", err)
+ _this.uploading = false;
+ })
+ },
+ }
+}
+</script>
+
+<style lang="scss">
+.lkg-manage {
+ .import-btn {
+ text-align: left;
+ margin: 10px 20px;
+ }
+}
+</style>
\ No newline at end of file
diff --git a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
index 8645349..0dddf47 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/searchForVideoAnalyze.vue
@@ -26,15 +26,9 @@
v-show="!checkedConfigs.length"
class="tip"
style="padding-left: 5px; margin-top: 3px"
- >杩樻湭閫夋嫨绛涢�夋潯浠�</span
- >
- <div
- class="config-item"
- v-for="(config, index) in checkedConfigs"
- :key="index"
- >
- <span class="title">{{ config.title }}</span
- > :
+ >杩樻湭閫夋嫨绛涢�夋潯浠�</span>
+ <div class="config-item" v-for="(config, index) in checkedConfigs" :key="index">
+ <span class="title">{{ config.title }}</span> :
<span class="val" v-for="option in config.data" :key="option.id">
<!-- <template>
<div>
@@ -46,25 +40,17 @@
<i>銆�</i>
</span>
</span>
- <i
- class="el-icon-close remove"
- @click="removeCheckedConfig(config)"
- ></i>
+ <i class="el-icon-close remove" @click="removeCheckedConfig(config)"></i>
</div>
<el-button
class="clear-config-btn"
v-if="checkedConfigs.length"
size="mini"
@click="clearCheckedConfigs"
- >鍙栨秷閫夋嫨</el-button
- >
+ >鍙栨秷閫夋嫨</el-button>
</div>
<div class="optional-config">
- <div
- class="config"
- v-for="(config, index) in optionalConfigs"
- :key="index"
- >
+ <div class="config" v-for="(config, index) in optionalConfigs" :key="index">
<template v-if="config.isShow">
<div class="title">{{ config.title }}</div>
<div class="options-wrap">
@@ -73,41 +59,23 @@
:ref="'options' + config.id"
:style="{ height: fixedOneLineHeight + 'px' }"
>
- <div
- class="option"
- v-for="(option, index) in config.data"
- :key="index"
- >
+ <div class="option" v-for="(option, index) in config.data" :key="index">
<div v-show="config.isMultCheck">
<el-checkbox v-model="option.isChecked"></el-checkbox>
<span>{{ option.name }}</span>
</div>
- <div
- v-show="!config.isMultCheck"
- @click="checkOption(config, option)"
- >
+ <div v-show="!config.isMultCheck" @click="checkOption(config, option)">
<span>{{ option.name }}</span>
</div>
</div>
</div>
<div class="btns text-center" v-show="config.isMultCheck">
- <el-button size="mini" @click="cancleMultCheck(config)"
- >鍙栨秷</el-button
- >
- <el-button
- size="mini"
- type="primary"
- @click="checkOption(config)"
- >纭畾</el-button
- >
+ <el-button size="mini" @click="cancleMultCheck(config)">鍙栨秷</el-button>
+ <el-button size="mini" type="primary" @click="checkOption(config)">纭畾</el-button>
</div>
</div>
<div class="right-btns">
- <div
- class="more"
- v-if="config.showMore"
- @click="showMore(config)"
- >
+ <div class="more" v-if="config.showMore" @click="showMore(config)">
<span>鏇村</span>
<i
:class="
@@ -130,11 +98,7 @@
<div class="config" v-if="showAdvance">
<div class="title">楂樼骇閫夐」</div>
<div>
- <el-menu
- class="el-menu-demo"
- mode="horizontal"
- @select="handleSelect"
- >
+ <el-menu class="el-menu-demo" mode="horizontal" @select="handleSelect">
<el-submenu
class="config-submenu"
:popper-append-to-body="false"
@@ -149,8 +113,7 @@
:index="index + '-' + ind"
@click="checkOption(config, option)"
class="highlevel-option"
- >{{ option.name }}</el-menu-item
- >
+ >{{ option.name }}</el-menu-item>
</el-submenu>
</el-menu>
</div>
@@ -161,22 +124,14 @@
<div class="header-bar clearfix">
<div class="left">
<div>
- <el-select
- v-model="IsFollow"
- size="mini"
- @change="filterSearchData"
- >
+ <el-select v-model="IsFollow" size="mini" @change="filterSearchData">
<el-option value label="鍏ㄩ儴"></el-option>
<el-option :value="false" label="鏈叧娉�"></el-option>
<el-option :value="true" label="宸插叧娉�"></el-option>
</el-select>
</div>
<div>
- <el-select
- v-model="IsOperate"
- size="mini"
- @change="filterSearchData"
- >
+ <el-select v-model="IsOperate" size="mini" @change="filterSearchData">
<el-option value label="鍏ㄩ儴"></el-option>
<el-option value="0" label="鏈鐞�"></el-option>
<el-option value="1" label="宸插鐞�"></el-option>
@@ -192,11 +147,7 @@
>
<i class="el-icon-menu"></i>
</div>
- <div
- class="type"
- :class="{ current: showType == 'list' }"
- @click="checkType('list')"
- >
+ <div class="type" :class="{ current: showType == 'list' }" @click="checkType('list')">
<i class="el-icon-s-operation"></i>
</div>
</div>
@@ -204,14 +155,7 @@
</div>
<div class="content" v-show="showType == 'menu'">
<el-row :gutter="20">
- <el-col
- :xs="8"
- :sm="6"
- :md="6"
- :lg="6"
- v-for="data in tabData"
- :key="data.id"
- >
+ <el-col :xs="8" :sm="6" :md="6" :lg="6" v-for="data in tabData" :key="data.id">
<div class="card">
<div class="video-wrap" @click="checkVideoDetail(data)">
<img :src="data.VideoCover" alt />
@@ -236,27 +180,22 @@
</div>
</div>
<div class="mark-info">
- <div
- class="abnormal"
- v-if="data.LableLst && data.LableLst.length"
- >
+ <div class="abnormal" v-if="data.LableLst && data.LableLst.length">
<span
class="abnormal-label"
v-for="(label, index) in data.LableLst"
:key="index"
- >{{
- label.Desc +
- (index == data.LableLst.length - 1 ? "" : "锛�")
- }}</span
>
+ {{
+ label.Desc +
+ (index == data.LableLst.length - 1 ? "" : "锛�")
+ }}
+ </span>
</div>
<div v-else>
<span>鏃犲紓甯�</span>
</div>
- <div
- class="event-tag"
- v-if="data.EventLst && data.EventLst.length"
- >
+ <div class="event-tag" v-if="data.EventLst && data.EventLst.length">
<el-tag
size="mini"
type="info"
@@ -264,25 +203,15 @@
:key="index"
style="margin-right: 5px; margin-bottom: 5px"
@click="checkEventVideo(label)"
- >{{ label.Event }}</el-tag
- >
+ >{{ label.Event }}</el-tag>
</div>
</div>
<div class="tag-info">
- <div
- class="tag"
- v-for="(tag, index) in data.tags"
- :key="index"
- >
- {{ tag }}
- </div>
+ <div class="tag" v-for="(tag, index) in data.tags" :key="index">{{ tag }}</div>
</div>
</div>
<div class="star" @click="toggleFollow(data)">
- <i
- class="iconfont"
- :class="[data.IsFollow ? 'follow' : '', 'iconguanzhu']"
- ></i>
+ <i class="iconfont" :class="[data.IsFollow ? 'follow' : '', 'iconguanzhu']"></i>
</div>
</div>
</el-col>
@@ -300,33 +229,16 @@
></el-pagination>
</div>
<div class="content" v-show="showType == 'list'">
- <el-table
- :data="tableData"
- fit
- ref="elTable"
- @row-click="checkVideoDetail"
- >
+ <el-table :data="tableData" fit ref="elTable" @row-click="checkVideoDetail">
<el-table-column label="鍚嶇О" prop="VideoName" sortable width="500">
<template slot-scope="scope" style="cursor: pointer">
<div>{{ scope.row.VideoName }}</div>
</template>
</el-table-column>
- <el-table-column
- label="澶у皬"
- prop="VideoSize"
- sortable
- ></el-table-column>
- <el-table-column
- label="淇敼鏃ユ湡"
- prop="VideoUpdateDate"
- sortable
- ></el-table-column>
- <el-table-column
- label="鍒涘缓鏃ユ湡"
- prop="VideoCreateDate"
- sortable
- ></el-table-column>
+ <el-table-column label="澶у皬" prop="VideoSize" sortable></el-table-column>
+ <el-table-column label="淇敼鏃ユ湡" prop="VideoUpdateDate" sortable></el-table-column>
+ <el-table-column label="鍒涘缓鏃ユ湡" prop="VideoCreateDate" sortable></el-table-column>
<el-table-column label="鎿嶄綔">
<template slot-scope="scope">
@@ -358,25 +270,27 @@
v-drag v-resize
- -->
+ -->
<!-- <div > -->
- <!-- :modal="false" -->
- <el-dialog v-drag v-resize
- class="dialog-video"
- :visible="videoDialogVisible"
- @close="closeDial"
- :close-on-click-modal="false"
- :destroy-on-close="true"
- :modal-append-to-body="false"
- >
- <div slot="title" class="title">
- <div class="center">
- <i class="el-icon-connection"></i>
- <span>鎾斁瑙嗛</span>
- </div>
+ <!-- :modal="false" -->
+ <el-dialog
+ v-drag
+ v-resize
+ class="dialog-video"
+ :visible="videoDialogVisible"
+ @close="closeDial"
+ :close-on-click-modal="false"
+ :destroy-on-close="true"
+ :modal-append-to-body="false"
+ >
+ <div slot="title" class="title">
+ <div class="center">
+ <i class="el-icon-connection"></i>
+ <span>鎾斁瑙嗛</span>
</div>
- <video-analyze v-if="videoDialogVisible" :videoDetails="selectedVideo" />
- </el-dialog>
+ </div>
+ <video-analyze v-if="videoDialogVisible" :videoDetails="selectedVideo" />
+ </el-dialog>
<!-- </div> -->
<el-dialog
@@ -419,8 +333,8 @@
keyword: "",
IsFollow: "",
searchTime: [
- new Date(2020, 0, 1, 0, 0, 0),
- new Date(2020, 11, 31, 23, 59, 59),
+ new Date(2021, 0, 1, 0, 0, 0),
+ new Date(2021, 11, 31, 23, 59, 59),
],
curTabPage: 1,
curTablePage: 1,
@@ -516,9 +430,9 @@
}
);
},
- closeDial(){
+ closeDial() {
this.videoDialogVisible = false
- this.selectedVideo={}
+ this.selectedVideo = {}
},
handleTabSizeChange(size) {
this.tabPageSize = size;
@@ -696,7 +610,7 @@
_this.selectedVideo = data;
_this.videoDialogVisible = true;
},
- checkFollow() {},
+ checkFollow() { },
checkType(type) {
this.showType = type;
this.filterSearchData();
@@ -744,7 +658,7 @@
opt.isChecked = false;
});
},
- handleSelect(key, keyPath) {},
+ handleSelect(key, keyPath) { },
showMore(config) {
config.isShowMore = !config.isShowMore;
this.$refs[`options${config.id}`][0].style.height = config.isShowMore
@@ -799,43 +713,43 @@
};
},
resize(el, binding, vnode) {
- const dragDom = el.querySelector('.el-dialog')
- dragDom.style.overflow = 'hidden'
- let minWidth = 400
- let minHeight = 300 //
-
- // 鎷変几
- let resizeEl = document.createElement('div')
- dragDom.appendChild(resizeEl) // 鍦ㄥ脊绐楀彸涓嬭鍔犱笂涓�涓�10-10px鐨勬帶鍒跺潡
- resizeEl.style.cursor = 'nwse-resize'
- // resizeEl.style.cursor = 'se-resize'
- resizeEl.style.position = 'absolute'
- resizeEl.style.height = '12px'
- resizeEl.style.width = '12px'
- resizeEl.style.right = '0px'
- resizeEl.style.bottom = '0px' //榧犳爣鎷変几寮圭獥
- resizeEl.style.background = 'url("/images/desktop/resize.png") no-repeat' //榧犳爣鎷変几寮圭獥
+ const dragDom = el.querySelector('.el-dialog')
+ dragDom.style.overflow = 'hidden'
+ let minWidth = 400
+ let minHeight = 300 //
- resizeEl.onmousedown = (e) => {
- // 璁板綍鍒濆x浣嶇疆
- const clientX = e.clientX // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂�
- const disX = e.clientX - resizeEl.offsetLeft
- const disY = e.clientY - resizeEl.offsetTop
+ // 鎷変几
+ let resizeEl = document.createElement('div')
+ dragDom.appendChild(resizeEl) // 鍦ㄥ脊绐楀彸涓嬭鍔犱笂涓�涓�10-10px鐨勬帶鍒跺潡
+ resizeEl.style.cursor = 'nwse-resize'
+ // resizeEl.style.cursor = 'se-resize'
+ resizeEl.style.position = 'absolute'
+ resizeEl.style.height = '12px'
+ resizeEl.style.width = '12px'
+ resizeEl.style.right = '0px'
+ resizeEl.style.bottom = '0px' //榧犳爣鎷変几寮圭獥
+ resizeEl.style.background = 'url("/images/desktop/resize.png") no-repeat' //榧犳爣鎷変几寮圭獥
- document.onmousemove = function(e) {
- e.preventDefault() // 绉诲姩鏃剁鐢ㄩ粯璁や簨浠� // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈
+ resizeEl.onmousedown = (e) => {
+ // 璁板綍鍒濆x浣嶇疆
+ const clientX = e.clientX // 榧犳爣鎸変笅锛岃绠楀綋鍓嶅厓绱犺窛绂诲彲瑙嗗尯鐨勮窛绂�
+ const disX = e.clientX - resizeEl.offsetLeft
+ const disY = e.clientY - resizeEl.offsetTop
- const x = e.clientX - disX + (e.clientX - clientX) //杩欓噷 鐢变簬elementUI鐨刣ialog鎺у埗灞呬腑鐨勶紝鎵�浠ユ按骞虫媺浼告晥鏋滄槸鍙屽��
- const y = e.clientY - disY //姣旇緝鏄惁灏忎簬鏈�灏忓楂�
- dragDom.style.width = x > minWidth ? `${x}px` : minWidth + 'px'
- dragDom.style.height =
- y > minHeight ? `${y}px` : minHeight + 'px'
- } //鎷変几缁撴潫
- document.onmouseup = function(e) {
- document.onmousemove = null
- document.onmouseup = null
- }
+ document.onmousemove = function (e) {
+ e.preventDefault() // 绉诲姩鏃剁鐢ㄩ粯璁や簨浠� // 閫氳繃浜嬩欢濮旀墭锛岃绠楃Щ鍔ㄧ殑璺濈
+
+ const x = e.clientX - disX + (e.clientX - clientX) //杩欓噷 鐢变簬elementUI鐨刣ialog鎺у埗灞呬腑鐨勶紝鎵�浠ユ按骞虫媺浼告晥鏋滄槸鍙屽��
+ const y = e.clientY - disY //姣旇緝鏄惁灏忎簬鏈�灏忓楂�
+ dragDom.style.width = x > minWidth ? `${x}px` : minWidth + 'px'
+ dragDom.style.height =
+ y > minHeight ? `${y}px` : minHeight + 'px'
+ } //鎷変几缁撴潫
+ document.onmouseup = function (e) {
+ document.onmousemove = null
+ document.onmouseup = null
}
+ }
},
},
};
@@ -1164,8 +1078,8 @@
background: #f5f5f5;
}
}
- .el-dialog__wrapper{
- top: -22px;
+ .el-dialog__wrapper {
+ top: -22px;
}
.dialog-video {
// z-index: 2020 !important;
@@ -1176,9 +1090,8 @@
.el-dialog__body {
background: #eaeaea;
padding: 0;
- // height: 100%;
- height: inherit;
-
+ // height: 100%;
+ height: inherit;
}
.el-dialog__header {
padding: 3px;
diff --git a/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue b/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
index f11d59a..9ad68c8 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/transferDeviceManage.vue
@@ -34,7 +34,10 @@
:key="indicator.id"
>
<div class="title">
- <span class="dot" :class="{'kx':indicator.id=='kx','dx':indicator.id=='dx','ccgz':indicator.id=='ccgz'}"></span>
+ <span
+ class="dot"
+ :class="{'kx':indicator.id=='kx','dx':indicator.id=='dx','ccgz':indicator.id=='ccgz'}"
+ ></span>
<span class="word">{{indicator.title}}</span>
</div>
<div class="indicator-val">{{indicator.slots.length}}</div>
@@ -52,7 +55,7 @@
<label>璁惧鐘舵��:</label>
<div>
<el-select v-model="deviceState" size="small">
- <el-option></el-option>
+ <el-option value="work" label="宸ヤ綔"></el-option>
</el-select>
</div>
</div>
@@ -111,7 +114,7 @@
<script>
import { addDevice, getDeviceList, getDeviceInfoById } from '@/api/shuohuang';
export default {
- data () {
+ data() {
return {
actTab: 'dev1',
devices: [],
@@ -124,11 +127,11 @@
IP: '',
}
},
- mounted () {
+ mounted() {
this.findDeviceList();
},
methods: {
- findDeviceList () {
+ findDeviceList() {
let _this = this;
getDeviceList().then(res => {
_this.devices = res.data;
@@ -136,7 +139,7 @@
_this.findDeviceIfo()
})
},
- findDeviceIfo () {
+ findDeviceIfo() {
let _this = this;
getDeviceInfoById({ DeviceID: this.actTab }).then(res => {
// debugger
@@ -162,7 +165,7 @@
//_this.generalIndicators
})
},
- toAddDevice () {
+ toAddDevice() {
let _this = this;
let params = {
Name: this.Name,
@@ -178,14 +181,14 @@
}
})
},
- showAddDevice () {
+ showAddDevice() {
this.visibleOfialogAddDev = true;
},
- checkTab (tab, event) {
+ checkTab(tab, event) {
this.findDeviceIfo();
},
- checkSlot (row) {
+ checkSlot(row) {
}
}
@@ -247,7 +250,7 @@
flex: 1;
position: relative;
&:not(.lastOne):after {
- content: '';
+ content: "";
width: 1px;
height: 57px;
background: #e9e9e9;
diff --git a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
index c1a6ea0..90ab683 100644
--- a/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
+++ b/src/pages/shuohuangMonitorAnalyze/components/videoAnalyze.vue
@@ -9,15 +9,15 @@
v-show="showLocChoise"
>
<span class="el-dropdown-link">
- {{ curCamera }}<i class="el-icon-arrow-down el-icon--right"></i>
+ {{ curCamera }}
+ <i class="el-icon-arrow-down el-icon--right"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item
v-for="(item, index) in popDownArr"
:key="index"
:command="item"
- >{{ item.Camera }}</el-dropdown-item
- >
+ >{{ item.Camera }}</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
@@ -118,13 +118,11 @@
</template>
<div class="player-control">
<div class="progress-bar">
- <el-tooltip
- placement="top"
- v-for="(item, index) in eventMarks"
- :key="index"
- >
+ <el-tooltip placement="top" v-for="(item, index) in eventMarks" :key="index">
<div slot="content">
- {{ getTimeStr(item.offset) }}<br />{{ item.text }}
+ {{ getTimeStr(item.offset) }}
+ <br />
+ {{ item.text }}
</div>
<div
class="self-dot"
@@ -134,13 +132,11 @@
@click="dotJump(item.offset)"
></div>
</el-tooltip>
- <el-tooltip
- placement="top"
- v-for="(item, index) in labelMarks"
- :key="index"
- >
+ <el-tooltip placement="top" v-for="(item, index) in labelMarks" :key="index">
<div slot="content">
- {{ getTimeStr(item.offset) }}<br />{{ item.text }}
+ {{ getTimeStr(item.offset) }}
+ <br />
+ {{ item.text }}
</div>
<div
class="label-dot"
@@ -161,7 +157,7 @@
@mouseover.native="intoBar"
@change="progressChange"
></el-slider>
- </div>
+ </div>
<div class="control-zone">
<span class="time">{{ curPlayTime }} / {{ maxVideoTime }}</span>
<div class="play-btn">
@@ -205,23 +201,18 @@
v-show="isUnusual == 1"
type="primary"
@click="addLabel(curVideo)"
- >娣诲姞鏍囨敞</el-button
- >
+ >娣诲姞鏍囨敞</el-button>
</div>
<div class="flex-box fixed-height-box">
<label v-if="!showTable">鏍囨敞淇℃伅:</label>
<div class="mark-list" v-if="!showTable">
- <div
- class="mark"
- v-for="mark in curVideo.LableLst"
- :key="mark.ID"
- >
+ <div class="mark" v-for="mark in curVideo.LableLst" :key="mark.ID">
<div class="time">
- <span
- >{{ pad0(Math.floor(mark.Time / 60)) }}:{{
- pad0(mark.Time % 60)
- }}</span
- >
+ <span>
+ {{ pad0(Math.floor(mark.Time / 60)) }}:{{
+ pad0(mark.Time % 60)
+ }}
+ </span>
<i class="el-icon-edit" @click="editCurLabel(mark)"></i>
<i class="el-icon-delete" @click="removeCurLabel(mark)"></i>
</div>
@@ -230,12 +221,12 @@
</div>
</div>
</div>
- </div></el-tab-pane
- >
+ </div>
+ </el-tab-pane>
<!-- <div class="flex-box fixed-height-box2"></div> -->
<dataset-chart style="width: 100%" v-if="showTable"></dataset-chart>
- <el-tab-pane label="鍏噷鏍�" name="second"> </el-tab-pane>
+ <el-tab-pane label="鍏噷鏍�" name="second"></el-tab-pane>
</el-tabs>
</div>
<div class="bot-right block">
@@ -274,23 +265,16 @@
<el-radio :label="1">鏍囨敞鍦ㄥ叏閮ㄤ綅缃殑瑙嗛娈�</el-radio>
<el-radio :label="0">浠呮爣娉ㄩ�変腑鐨勮棰戞</el-radio>
</el-radio-group>
- </div> -->
+ </div>-->
<div class="label-check">
<p class="label">闅愭偅闂:</p>
<el-checkbox-group v-model="labelCheckedList">
- <el-checkbox
- v-for="item in labelOptions"
- :key="item.ID"
- :label="item.ID"
- >{{ item.Name }}</el-checkbox
- >
+ <el-checkbox v-for="item in labelOptions" :key="item.ID" :label="item.ID">{{ item.Name }}</el-checkbox>
</el-checkbox-group>
</div>
<div class="btns">
<el-button @click="cancelLabelChecked" size="small">鍙栨秷</el-button>
- <el-button @click="submitLabelChecked" size="small" type="primary"
- >纭畾</el-button
- >
+ <el-button @click="submitLabelChecked" size="small" type="primary">纭畾</el-button>
</div>
</el-dialog>
</div>
@@ -540,18 +524,18 @@
Driver1: cmd.Driver1,
}).then((res) => {
_this.allCurVideos = res.data;
- _this.curCamera = cmd.Camera;
- _this.curRoomVideos = _this.allCurVideos.filter((item) => {
- return item.Camera == cmd.Camera;
+ _this.curCamera = cmd.Camera;
+ _this.curRoomVideos = _this.allCurVideos.filter((item) => {
+ return item.Camera == cmd.Camera;
+ });
+ _this.curVideo = _this.curRoomVideos.find((item) => {
+ return item.ID == cmd.ID;
+ });
+ _this.$nextTick(() => {
+ _this.$refs[`player_${_this.curVideo.ID}`][0].init();
+ });
});
- _this.curVideo = _this.curRoomVideos.find((item) => {
- return item.ID == cmd.ID;
- });
- _this.$nextTick(() => {
- _this.$refs[`player_${_this.curVideo.ID}`][0].init();
- });
- });
-
+
},
pad0(val) {
return val < 10 ? "0" + val : val;
@@ -583,7 +567,8 @@
if (_this.guid == 1) {
_this.maxVideoTime = _this.curVideo.VideoTime;
}
- _this.videoArrs = res.data.filter((item) => v.UniqeID == item.UniqeID);
+
+ _this.videoArrs = res.data.filter((item) => v.GroupID == item.GroupID);
_this.allCurVideos = res.data;
_this.curRoomVideos = _this.allCurVideos.filter((item) => {
return item.Camera == "鍙告満瀹�";
@@ -600,7 +585,7 @@
},
getRelatedVideos(video) {
let _this = this;
- getRelatedVideoInfo({ UniqeID: video.UniqeID }).then((res) => {
+ getRelatedVideoInfo({ GroupID: video.GroupID }).then((res) => {
let arr = [];
let map = {};
res.data.forEach((item) => {
@@ -618,7 +603,7 @@
});
},
refreshCurVideoLabel(video) {
- getRelatedVideoInfo({ UniqeID: video.UniqeID }).then((res) => {
+ getRelatedVideoInfo({ GroupID: video.GroupID }).then((res) => {
res.data.forEach((d) => {
if (d.ID === video.ID) {
video.LableLst = d.LableLst;
@@ -630,7 +615,7 @@
this.refreshCurVideoLabel(video);
this.curVideo = video;
this.videoArrs = this.allCurVideos.filter(
- (item) => video.UniqeID == item.UniqeID
+ (item) => video.GroupID == item.GroupID
);
this.$nextTick(() => {
this.$refs[`player_${this.curVideo.ID}`][0].init();
@@ -656,7 +641,7 @@
`calc(` + 100 / guid + `%)`;
// this.$refs["playerWrap"].offsetHeight / guid + "px";
}
- console.log(this.$refs[`player_${this.videoArrs[index].ID}`]);
+ // console.log(this.$refs[`player_${this.videoArrs[index].ID}`]);
});
},
cancelLabelChecked() {
@@ -681,12 +666,12 @@
let query = {
ID: this.selectedLabelId,
ParentID: tempArr.join(","),
- ParentUniqID: this.curVideo.UniqeID + "",
+ ParentUniqID: this.curVideo.GroupID + "",
Time: Math.round(this.setLabelTime) + "",
Codes: this.labelCheckedList.join(","),
Desc: desc.join("锛�"),
};
-
+
editLabel(query).then((rsp) => {
if (rsp && rsp.success) {
_this.labelDialogVisible = false;
@@ -728,7 +713,7 @@
Desc: mark.Desc,
ParentUniqID: mark.ParentUniqID,
Time: mark.Time,
- ParentID:mark.ParentID
+ ParentID: mark.ParentID
};
delLabel(obj).then((rsp) => {
if (rsp && rsp.success) {
@@ -751,6 +736,11 @@
});
},
mergeMarks(videoInfo) {
+ if (!videoInfo.EventLst || !videoInfo.LableLst) {
+ console.log("mergeMarks data null")
+ return;
+ }
+
const eMarks = videoInfo.EventLst.map((item) => {
return {
offset: item.SecondsInVideo,
diff --git a/src/pages/shuohuangMonitorAnalyze/index/App.vue b/src/pages/shuohuangMonitorAnalyze/index/App.vue
index 66b81b3..be77a89 100644
--- a/src/pages/shuohuangMonitorAnalyze/index/App.vue
+++ b/src/pages/shuohuangMonitorAnalyze/index/App.vue
@@ -11,55 +11,71 @@
<top-nav></top-nav>
</div>
<div class="container">
+ <!-- 棣栭〉 -->
+ <guideIndex v-show="actPage=='guideIndex'"></guideIndex>
+
<searchForVideoAnalyze v-if="actPage=='searchForVideoAnalyze'"></searchForVideoAnalyze>
<memberManage v-if="actPage=='memberManage'"></memberManage>
<taskManage v-if="actPage=='taskManage'"></taskManage>
<transferMemo v-if="actPage=='transferMemo'"></transferMemo>
<transferDeviceManage v-if="actPage=='transferDeviceManage'"></transferDeviceManage>
<configManage v-if="actPage=='configManage'"></configManage>
- <guideIndex v-if="actPage=='guideIndex'"></guideIndex>
+ <lkg v-if="actPage=='lkgManage'"></lkg>
</div>
</div>
</div>
</template>
<script>
-import LeftNav from '../components/leftNav';
+import Lkg from '../components/lkgManage'
import TopNav from '../components/topNav';
-import SearchForVideoAnalyze from '../components/searchForVideoAnalyze';
-import MemberManage from '../components/memberManage';
+import LeftNav from '../components/leftNav';
+import GuideIndex from '../components/guideIndex';
import TaskManage from '../components/taskManage';
import TransferMemo from '../components/transferMemo';
-import TransferDeviceManage from '../components/transferDeviceManage';
import ConfigManage from '../components/configManage';
-import GuideIndex from '../components/guideIndex';
+import MemberManage from '../components/memberManage';
+import TransferDeviceManage from '../components/transferDeviceManage';
+import SearchForVideoAnalyze from '../components/searchForVideoAnalyze';
+
export default {
- components: { LeftNav, TopNav, SearchForVideoAnalyze, MemberManage, TaskManage, TransferMemo, TransferDeviceManage, ConfigManage, GuideIndex },
- data () {
+ components: {
+ Lkg,
+ LeftNav,
+ TopNav,
+ SearchForVideoAnalyze,
+ MemberManage,
+ TaskManage,
+ TransferMemo,
+ TransferDeviceManage,
+ ConfigManage,
+ GuideIndex
+ },
+ data() {
return {
isCollapse: false,
actPage: 'guideIndex',
}
},
- mounted () {
-
+ mounted() {
+ // this.actPage = 'guideIndex';
},
methods: {
- markNav () {
+ markNav() {
sessionStorage.setItem('actPage', this.actPage);
this.menuChange(this.actPage);
},
- toggleCollapse () {
+ toggleCollapse() {
this.isCollapse = !this.isCollapse;
//閫氱煡褰撳墠娲诲姩椤祎able(濡傛灉鏈�) doLayout
},
- menuChange (path) {
- if(path == 'taskscreen'){
+ menuChange(path) {
+ if (path == 'taskscreen') {
//window.location.href = window.location.href+'taskscreen/index.html'
- window.open(window.location.href+'taskscreen/index.html','_blank')
- }else if(path == 'hiddendangerscreen'){
+ window.open(window.location.href + 'taskscreen/index.html', '_blank')
+ } else if (path == 'hiddendangerscreen') {
//window.location.href = window.location.href+'hiddendangerscreen/index.html'
- window.open(window.location.href+'hiddendangerscreen/index.html','_blank')
+ window.open(window.location.href + 'hiddendangerscreen/index.html', '_blank')
}
this.actPage = path;
}
@@ -70,11 +86,11 @@
<style lang="scss">
.flex-box {
display: flex;
- >label {
+ > label {
padding-right: 10px;
}
}
-.flex-end{
+.flex-end {
display: flex;
justify-content: flex-end;
}
@@ -119,7 +135,7 @@
padding: 0 3px;
color: #0096fa;
}
- i[class^='el-icon'] {
+ i[class^="el-icon"] {
padding: 3px;
font-size: 16px;
color: #0096fa;
diff --git a/vue.config.js b/vue.config.js
index 54707a5..f623575 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -41,10 +41,7 @@
})
// const serverUrl = "http://58.118.225.79:41243" // 缇婁簲
-const serverUrl = "http://192.168.20.10:7009"
-
-
-
+const serverUrl = "http://192.168.20.117:7009"
module.exports = {
pages,
@@ -91,7 +88,7 @@
},
"/data/api-v/app/findAllApp": {
// target: '/',
- target: 'http://localhost:8081/',
+ target: 'http://localhost:8080/',
changeOrigin: true,
pathRewrite: {
'^/data/api-v/app/findAllApp': 'apps.json'
--
Gitblit v1.8.0