所有功能

master
fanluyan 2 years ago
parent d798f100ee
commit 467b6c887d

90
package-lock.json generated

@ -13844,6 +13844,49 @@
"webpack-merge": "^5.7.3", "webpack-merge": "^5.7.3",
"webpack-virtual-modules": "^0.4.2", "webpack-virtual-modules": "^0.4.2",
"whatwg-fetch": "^3.6.2" "whatwg-fetch": "^3.6.2"
},
"dependencies": {
"@vue/vue-loader-v15": {
"version": "npm:vue-loader@15.10.1",
"resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.1.tgz",
"integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==",
"dev": true,
"requires": {
"@vue/component-compiler-utils": "^3.1.0",
"hash-sum": "^1.0.2",
"loader-utils": "^1.1.0",
"vue-hot-reload-api": "^2.3.0",
"vue-style-loader": "^4.1.0"
},
"dependencies": {
"hash-sum": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
"integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
"dev": true
}
}
},
"json5": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
"requires": {
"minimist": "^1.2.0"
}
},
"loader-utils": {
"version": "1.4.2",
"resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz",
"integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
"dev": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
}
} }
}, },
"@vue/cli-shared-utils": { "@vue/cli-shared-utils": {
@ -14008,47 +14051,6 @@
} }
} }
}, },
"@vue/vue-loader-v15": {
"version": "npm:vue-loader@15.10.1",
"resolved": "https://registry.npmmirror.com/vue-loader/-/vue-loader-15.10.1.tgz",
"integrity": "sha512-SaPHK1A01VrNthlix6h1hq4uJu7S/z0kdLUb6klubo738NeQoLbS6V9/d8Pv19tU0XdQKju3D1HSKuI8wJ5wMA==",
"dev": true,
"requires": {
"@vue/component-compiler-utils": "^3.1.0",
"hash-sum": "^1.0.2",
"loader-utils": "^1.1.0",
"vue-hot-reload-api": "^2.3.0",
"vue-style-loader": "^4.1.0"
},
"dependencies": {
"hash-sum": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/hash-sum/-/hash-sum-1.0.2.tgz",
"integrity": "sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==",
"dev": true
},
"json5": {
"version": "1.0.2",
"resolved": "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
"requires": {
"minimist": "^1.2.0"
}
},
"loader-utils": {
"version": "1.4.2",
"resolved": "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz",
"integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==",
"dev": true,
"requires": {
"big.js": "^5.2.2",
"emojis-list": "^3.0.0",
"json5": "^1.0.1"
}
}
}
},
"@vue/web-component-wrapper": { "@vue/web-component-wrapper": {
"version": "1.3.0", "version": "1.3.0",
"resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz", "resolved": "https://registry.npmmirror.com/@vue/web-component-wrapper/-/web-component-wrapper-1.3.0.tgz",
@ -15567,7 +15569,7 @@
}, },
"dom7": { "dom7": {
"version": "2.1.5", "version": "2.1.5",
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-2.1.5.tgz", "resolved": "https://registry.npmjs.org/dom7/-/dom7-2.1.5.tgz",
"integrity": "sha512-xnhwVgyOh3eD++/XGtH+5qBwYTgCm0aW91GFgPJ3XG+jlsRLyJivnbP0QmUBFhI+Oaz9FV0s7cxgXHezwOEBYA==", "integrity": "sha512-xnhwVgyOh3eD++/XGtH+5qBwYTgCm0aW91GFgPJ3XG+jlsRLyJivnbP0QmUBFhI+Oaz9FV0s7cxgXHezwOEBYA==",
"dev": true, "dev": true,
"requires": { "requires": {
@ -15576,7 +15578,7 @@
"dependencies": { "dependencies": {
"ssr-window": { "ssr-window": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-2.0.0.tgz", "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-2.0.0.tgz",
"integrity": "sha512-NXzN+/HPObKAx191H3zKlYomE5WrVIkoCB5IaSdvKokxTpjBdWfr0RaP+1Z5KOfDT0ZVz+2tdtiBkhsEQ9p+0A==", "integrity": "sha512-NXzN+/HPObKAx191H3zKlYomE5WrVIkoCB5IaSdvKokxTpjBdWfr0RaP+1Z5KOfDT0ZVz+2tdtiBkhsEQ9p+0A==",
"dev": true "dev": true
} }
@ -19406,7 +19408,7 @@
}, },
"ssr-window": { "ssr-window": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-1.0.1.tgz", "resolved": "https://registry.npmjs.org/ssr-window/-/ssr-window-1.0.1.tgz",
"integrity": "sha512-dgFqB+f00LJTEgb6UXhx0h+SrG50LJvti2yMKMqAgzfUmUXZrLSv2fjULF7AWGwK25EXu8+smLR3jYsJQChPsg==", "integrity": "sha512-dgFqB+f00LJTEgb6UXhx0h+SrG50LJvti2yMKMqAgzfUmUXZrLSv2fjULF7AWGwK25EXu8+smLR3jYsJQChPsg==",
"dev": true "dev": true
}, },

@ -1,5 +1,5 @@
<template> <template>
<div id="app" class="orangeStyle"> <div id="app" class="blueStyle">
<router-view> </router-view> <router-view> </router-view>
</div> </div>
</template> </template>

@ -22,8 +22,8 @@
.el-menu-item:not(.is-disabled):focus, .el-menu-item:not(.is-disabled):focus,
.el-menu-item:not(.is-disabled):hover { .el-menu-item:not(.is-disabled):hover {
color: #20a0ff; color: #20a0ff;
background-color: @color-white; background-color: #f2f2f2;
border-bottom: 2px solid @color-white; border-bottom: 2px solid #f2f2f2;
i { i {
color: #20a0ff !important; color: #20a0ff !important;
@ -33,8 +33,8 @@
.el-submenu:focus .el-submenu__title, .el-submenu:focus .el-submenu__title,
.el-submenu:hover .el-submenu__title { .el-submenu:hover .el-submenu__title {
color: #20a0ff !important; color: #20a0ff !important;
background-color: @color-white; background-color: #f2f2f2;
border-bottom: 2px solid @color-white; border-bottom: 2px solid #f2f2f2;
i { i {
color: #20a0ff !important; color: #20a0ff !important;
@ -42,9 +42,9 @@
} }
} }
.el-menu--horizontal > .el-menu-item.is-active { .el-menu--horizontal > .el-menu-item.is-active {
border-bottom: 2px solid #fff; border-bottom: 2px solid #fff !important;
color: #20a0ff; color: #20a0ff !important;
background-color: #fff; background-color: #fff !important;
i { i {
color: #20a0ff !important; color: #20a0ff !important;
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 4.0 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

@ -4,15 +4,6 @@
<v-sidebar></v-sidebar> <v-sidebar></v-sidebar>
<div class="header-right"> <div class="header-right">
<div class="header-user-con"> <div class="header-user-con">
<el-select v-model="colorValue" @change="changeTheme">
<el-option
v-for="item in colorList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
</el-select>
<!-- 用户头像 --> <!-- 用户头像 -->
<div class="user-avator"> <div class="user-avator">
<img src="../../assets/img/user.jpeg" /> <img src="../../assets/img/user.jpeg" />
@ -38,7 +29,6 @@
</div> </div>
</template> </template>
<script> <script>
// import bus from '../common/bus';
import { mapState } from "vuex"; import { mapState } from "vuex";
import updateElementUiTheme from "update-element-ui-theme"; import updateElementUiTheme from "update-element-ui-theme";
import vSidebar from "./Sidebar.vue"; import vSidebar from "./Sidebar.vue";
@ -50,26 +40,6 @@ export default {
}, },
data() { data() {
return { return {
colorList: [
{
value: "#20a0ff",
label: "蓝色",
},
// {
// value: "#EE320C",
// label: "",
// },
// {
// value: "#00a096",
// label: "绿",
// },
{
value: "#f08200",
label: "橙色",
},
],
colorValue: "",
fullscreen: false,
dialogFormPsd: false, dialogFormPsd: false,
}; };
}, },
@ -81,40 +51,6 @@ export default {
}, },
}, },
methods: { methods: {
//
changeTheme(event) {
console.log(event);
let colorTheme = {};
colorTheme = this.colorList.find(function (item) {
return item.value === event;
}); //change
console.log(colorTheme);
const app = document.getElementById("app");
console.log(app);
if (colorTheme.label === "蓝色") {
colorTheme.value = "#20a0ff";
app.classList.add("blueStyle");
app.classList.remove("redStyle", "greenStyle", "orangeStyle");
} else if (colorTheme.label === "红色") {
colorTheme.value = "#EE320C";
app.classList.remove("blueStyle", "greenStyle", "orangeStyle");
app.classList.add("redStyle");
} else if (colorTheme.label === "绿色") {
colorTheme.value = "#00a096";
app.classList.remove("blueStyle", "redStyle", "orangeStyle");
app.classList.add("greenStyle");
} else if (colorTheme.label === "橙色") {
colorTheme.value = "#f08200";
app.classList.remove("blueStyle", "greenStyle", "redStyle");
app.classList.add("orangeStyle");
}
updateElementUiTheme({
theme: colorTheme.value,
themeName: "--my-theme-name",
});
},
// //
handleCommand(command) { handleCommand(command) {
switch (command) { switch (command) {
@ -141,10 +77,7 @@ export default {
this.dialogFormPsd = false; this.dialogFormPsd = false;
}, },
}, },
created() { created() {},
this.colorValue = this.colorList[0].label;
this.changeTheme(this.colorList[0].value);
},
mounted() {}, mounted() {},
}; };
</script> </script>

@ -1,16 +1,14 @@
<template> <template>
<div class="wrapper"> <div class="wrapper">
<v-head></v-head> <v-head></v-head>
<!-- <v-sidebar></v-sidebar> -->
<div class="content-box"> <div class="content-box">
<!-- <v-tags></v-tags> -->
<div class="content"> <div class="content">
<transition name="move" mode="out-in"> <transition name="move" mode="out-in">
<keep-alive :include="tagsList"> <keep-alive>
<router-view></router-view> <router-view></router-view>
</keep-alive> </keep-alive>
</transition> </transition>
<el-backtop target=".content"></el-backtop>
</div> </div>
</div> </div>
</div> </div>
@ -18,35 +16,15 @@
<script> <script>
import vHead from "./Header.vue"; import vHead from "./Header.vue";
//import vSidebar from './Sidebar.vue';
// import vTags from './Tags.vue';
import bus from "./bus";
export default { export default {
data() { data() {
return { return {};
tagsList: [],
collapse: false,
};
}, },
components: { components: {
vHead, vHead,
//vSidebar,
// vTags
},
created() {
bus.$on("collapse-content", (msg) => {
this.collapse = msg;
});
// 使keep-alive
bus.$on("tags", (msg) => {
let arr = [];
for (let i = 0, len = msg.length; i < len; i++) {
msg[i].name && arr.push(msg[i].name);
}
this.tagsList = arr;
});
}, },
created() {},
}; };
</script> </script>
<style lang="less"> <style lang="less">

@ -49,215 +49,84 @@
</template> </template>
<script> <script>
import bus from "../common/bus";
export default { export default {
data() { data() {
return { return {
//collapse: false,
activeIndex: "/realTimeMonitor", activeIndex: "/realTimeMonitor",
items: [ items: [
// { {
// icon: "el-icon-s-home", icon: "el-icon-s-home",
// index: "stritl", index: "stritl",
// title: "", title: "首页",
// }, },
{ {
icon: "el-icon-camera", icon: "el-icon-camera",
index: "realTimeMonitor", index: "realTimeMonitor",
title: "实时监控", title: "实时监控",
}, },
{ {
icon: "el-icon-setting", icon: "el-icon-film",
index: "devicePhotoSchedule", index: "pictureRotation",
title: "拍照时间表设置", title: "图片轮巡",
}, },
{ {
icon: "el-icon-coin", icon: "el-icon-bell",
index: "cameraChannel", index: "photoAlarm",
title: "通道管理", title: "告警处理",
}, },
{ {
icon: "el-icon-picture-outline", icon: "el-icon-search",
index: "imageSettings", index: "realTimeSearch",
title: "图像采集参数设置", title: "实时查询",
}, },
// {
// icon: "el-icon-film",
// index: "pictureRotation",
// title: "",
// },
// {
// icon: "el-icon-video-camera",
// index: "3",
// title: "",
// subs: [
// {
// index: "videoMonitor",
// title: "",
// },
// {
// index: "videoHistory",
// title: "",
// },
// ],
// },
// {
// icon: "el-icon-warning-outline",
// index: "dashboard",
// title: "",
// },
// {
// icon: "el-icon-bell",
// index: "photoAlarm",
// title: "",
// },
// {
// icon: 'el-icon-setting',
// index: '6',
// title: '',
// subs: [
// {
// index: '6-1',
// title: '',
// subs: [
// {
// index: 'form',
// title: ''
// },
// {
// index: 'form',
// title: ''
// },
// {
// index: 'form',
// title: ''
// }
// ]
// },
// {
// index: '6-2',
// title: '',
// subs: [
// {
// index: 'form',
// title: ''
// }
// ]
// },
// {
// index: '6-3',
// title: 'I1',
// subs: [
// {
// index: 'form',
// title: ''
// },
// {
// index: 'form',
// title: 'OSD'
// }
// ]
// }
// ]
// },
{ {
icon: "el-icon-files", icon: "el-icon-files",
index: "7", index: "property",
title: "资产管理", title: "资产管理",
subs: [ subs: [
{ {
index: "7-1", index: "lineInformation",
title: "用户设备", title: "线路信息管理",
subs: [ },
{ {
index: "lineInformation", index: "towerInformation",
title: "线路信息管理", title: "杆塔信息管理",
}, },
// { {
// index: "towerInformation", index: "photographicDevice",
// title: "", title: "拍照装置管理",
// },
// {
// index: 'towerTeam',
// title: ''
// },
// {
// index: 'groupInformation',
// title: ''
// },
// {
// index: 'form',
// title: '线'
// },
// {
// index: 'form',
// title: ''
// },
// {
// index: 'form',
// title: ''
// }
],
}, },
{
icon: "el-icon-coin",
index: "cameraChannel",
title: "通道管理",
},
{
icon: "el-icon-setting",
index: "devicePhotoSchedule",
title: "拍照时间表设置",
},
{
icon: "el-icon-picture-outline",
index: "imageSettings",
title: "图像采集参数设置",
},
],
},
{
icon: "el-icon-monitor",
index: "system",
title: "系统管理",
subs: [
{ {
index: "7-2", index: "userManagement",
title: "监测设备", title: "用户管理",
subs: [
// {
// index: 'SIMCard',
// title: 'SIM'
// },
{
index: "photographicDevice",
title: "拍照装置管理",
},
// {
// index: 'deviceVisualization',
// title: ''
// }
],
}, },
], ],
}, },
// {
// icon: 'el-icon-monitor',
// index: '8',
// title: '',
// subs: [
// {
// index: '8-1',
// title: '',
// subs: [
// {
// index: 'form',
// title: ''
// },
// {
// index: 'form',
// title: ''
// },
// {
// index: 'form',
// title: ''
// }
// ]
// },
// {
// index: '8-2',
// title: '',
// subs: [
// {
// index: 'form',
// title: ''
// },
// {
// index: 'form',
// title: ''
// }
// ]
// }
// ]
// }
], ],
}; };
}, },
@ -266,7 +135,7 @@ export default {
}, },
watch: { watch: {
activeIndex(newValue) { activeIndex(newValue) {
if (newValue != this.$route.path) { if (newValur != this.$route.path) {
this.activeIndex = this.$route.path; this.activeIndex = this.$route.path;
} }
}, },

@ -1,192 +0,0 @@
<template>
<div class="tags" v-if="showTags">
<ul>
<li class="tags-li" v-for="(item, index) in tagsList" :class="{ active: isActive(item.path) }" :key="index">
<router-link :to="item.path" class="tags-li-title"> <i :class="item.icon"></i>{{ item.title }} </router-link>
<span class="tags-li-icon" @click="closeTags(index)" v-if="item.path !== '/stritl'"><i class="el-icon-close"></i></span>
</li>
</ul>
<!-- <div class="tags-close-box">
<el-dropdown @command="handleTags">
<el-button size="mini" type="primary">
标签选项<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu size="small" slot="dropdown">
<el-dropdown-item command="other">关闭其他</el-dropdown-item>
<el-dropdown-item command="all">关闭所有</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
</div> -->
</div>
</template>
<script>
import bus from './bus';
export default {
data() {
return {
tagsList: []
};
},
methods: {
isActive(path) {
return path === this.$route.fullPath;
},
//
closeTags(index) {
const delItem = this.tagsList.splice(index, 1)[0];
const item = this.tagsList[index] ? this.tagsList[index] : this.tagsList[index - 1];
if (item) {
delItem.path === this.$route.fullPath && this.$router.push(item.path);
} else {
this.$router.push('/');
}
},
//
closeAll() {
this.tagsList = [];
this.$router.push('/');
},
//
closeOther() {
const curItem = this.tagsList.filter((item) => {
return item.path === this.$route.fullPath;
});
this.tagsList = curItem;
},
//
setTags(route) {
const isExist = this.tagsList.some((item) => {
return item.path === route.fullPath;
});
if (!isExist) {
if (this.tagsList.length >= 8) {
this.tagsList.shift();
}
this.tagsList.push({
title: route.meta.title,
path: route.fullPath,
icon: route.meta.icon
});
// console.log(route);
}
bus.$emit('tags', this.tagsList);
},
handleTags(command) {
command === 'other' ? this.closeOther() : this.closeAll();
}
},
computed: {
showTags() {
return this.tagsList.length > 0;
}
},
watch: {
$route(newValue, oldValue) {
this.setTags(newValue);
}
},
created() {
this.setTags(this.$route);
//
bus.$on('close_current_tags', () => {
for (let i = 0, len = this.tagsList.length; i < len; i++) {
const item = this.tagsList[i];
if (item.path === this.$route.fullPath) {
if (i < len - 1) {
this.$router.push(this.tagsList[i + 1].path);
} else if (i > 0) {
this.$router.push(this.tagsList[i - 1].path);
} else {
this.$router.push('/');
}
this.tagsList.splice(i, 1);
break;
}
}
});
}
};
</script>
<style lang="less">
.tags {
position: relative;
height: 48px;
overflow: hidden;
background: @color-white;
padding-right: 120px;
box-shadow: 0 5px 10px @border-color-light;
}
.tags ul {
box-sizing: border-box;
width: 100%;
height: 100%;
}
.tags-li {
float: left;
margin: 12px 8px 12px 8px;
border-radius: 3px;
font-size: 12px;
overflow: hidden;
cursor: pointer;
height: 24px;
line-height: 24px;
border: 1px solid @border-color-base;
background: @color-white;
padding: 0 5px 0 12px;
vertical-align: middle;
color: @color-text-regular;
-webkit-transition: all 0.3s ease-in;
-moz-transition: all 0.3s ease-in;
transition: all 0.3s ease-in;
}
.tags-li:not(.active):hover {
background: @border-color-extra-light;
}
.tags-li.active {
color: @color-white;
}
.tags-li.active {
border: 1px solid @color-primary;
background-color: @color-primary;
}
.tags-li-title {
float: left;
max-width: 80px;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
margin-right: 5px;
color: @color-text-regular;
i {
margin-right: 4px;
}
}
.tags-li.active .tags-li-title {
color: @color-white;
i {
color: @color-white;
}
}
.tags-close-box {
position: absolute;
right: 0;
top: 0;
box-sizing: border-box;
padding-top: 1px;
text-align: center;
width: 110px;
height: 30px;
background: @color-white;
box-shadow: @box-shadow-basic;
z-index: 10;
}
</style>

@ -25,6 +25,7 @@ const routes = [
icon: "el-icon-s-home", icon: "el-icon-s-home",
}, },
}, },
{ {
path: "/realTimeMonitor", path: "/realTimeMonitor",
component: () => component: () =>
@ -37,6 +38,7 @@ const routes = [
icon: "el-icon-camera", icon: "el-icon-camera",
}, },
}, },
{ {
path: "/pictureRotation", path: "/pictureRotation",
component: () => component: () =>
@ -50,58 +52,21 @@ const routes = [
}, },
}, },
{ {
path: "/videoMonitor", path: "/photoAlarm",
component: () =>
import(
/* webpackChunkName: "tabs" */ "../views/videoMonitor/index.vue"
),
meta: { title: "监控视频", icon: "el-icon-video-camera" },
},
{
path: "/videoHistory",
component: () =>
import(
/* webpackChunkName: "tabs" */ "../views/videoMonitor/videoHistory.vue"
),
meta: { title: "视频回放", icon: "el-icon-video-camera" },
},
{
path: "/devicePhotoSchedule",
component: () =>
import(
/* webpackChunkName: "tabs" */ "../views/devicePhotoSchedule/index.vue"
),
meta: { title: "拍照时间表设置", icon: "el-icon-setting" },
},
{
path: "/cameraChannel",
component: () =>
import(
/* webpackChunkName: "icon" */ "../views/cameraChannel/index.vue"
),
meta: {
title: "通道设置",
icon: "el-icon-coin",
},
},
{
path: "/imageSettings",
component: () => component: () =>
import( import(
/* webpackChunkName: "tabs" */ "../views/imageSettings/index.vue" /* webpackChunkName: "tabs" */ "../views/alarmHandling/index.vue"
), ),
meta: { title: "图像采集装置设置", icon: "el-icon-picture-outline" }, meta: { title: "告警处理", icon: "el-icon-bell" },
}, },
{ {
path: "/photoAlarm", path: "/realTimeSearch",
component: () => component: () =>
import( import(
/* webpackChunkName: "tabs" */ "../views/alarmHandling/index.vue" /* webpackChunkName: "tabs" */ "../views/realTimeSearch/index.vue"
), ),
meta: { title: "告警处理", icon: "el-icon-bell" }, meta: { title: "实时查询", icon: "el-icon-search" },
}, },
{ {
path: "/lineInformation", path: "/lineInformation",
component: () => component: () =>
@ -111,76 +76,108 @@ const routes = [
meta: { title: "线路信息管理", icon: "" }, meta: { title: "线路信息管理", icon: "" },
}, },
{ {
path: "/groupInformation", path: "/towerInformation",
component: () => component: () =>
import( import(
/* webpackChunkName: "tabs" */ "../views/management/userEquipment/groupInformation/index.vue" /* webpackChunkName: "tabs" */ "../views/management/userEquipment/towerInformation/index.vue"
), ),
meta: { title: "分组信息管理", icon: "" }, meta: { title: "杆塔信息管理", icon: "" },
}, },
{ {
path: "/towerInformation", path: "/photographicDevice",
component: () => component: () =>
import( import(
/* webpackChunkName: "tabs" */ "../views/management/userEquipment/towerInformation/index.vue" /* webpackChunkName: "tabs" */ "../views/management/monitoringEquipment/photographicDevice/index.vue"
), ),
meta: { title: "杆塔信息管理", icon: "" }, meta: { title: "拍照装置管理", icon: "" },
}, },
{ {
path: "/towerTeam", path: "/cameraChannel",
component: () => component: () =>
import( import(
/* webpackChunkName: "tabs" */ "../views/management/userEquipment/towerTeam/index.vue" /* webpackChunkName: "icon" */ "../views/cameraChannel/index.vue"
), ),
meta: { title: "杆塔班组用户", icon: "" }, meta: {
}, title: "通道设置",
icon: "el-icon-coin",
},
},
{ {
path: "/deviceVisualization", path: "/devicePhotoSchedule",
component: () => component: () =>
import( import(
/* webpackChunkName: "tabs" */ "../views/management/monitoringEquipment/deviceVisualization/index.vue" /* webpackChunkName: "tabs" */ "../views/devicePhotoSchedule/index.vue"
), ),
meta: { title: "装置分布可视化", icon: "" }, meta: { title: "拍照时间表设置", icon: "el-icon-setting" },
}, },
{ {
path: "/photographicDevice", path: "/imageSettings",
component: () => component: () =>
import( import(
/* webpackChunkName: "tabs" */ "../views/management/monitoringEquipment/photographicDevice/index.vue" /* webpackChunkName: "tabs" */ "../views/imageSettings/index.vue"
), ),
meta: { title: "拍照装置管理", icon: "" }, meta: { title: "图像采集装置设置", icon: "el-icon-picture-outline" },
}, },
{ {
path: "/SIMCard", path: "/imageSettings",
component: () => component: () =>
import( import(
/* webpackChunkName: "tabs" */ "../views/management/monitoringEquipment/SIMCard/index.vue" /* webpackChunkName: "tabs" */ "../views/imageSettings/index.vue"
), ),
meta: { title: "SIM卡管理", icon: "" }, meta: { title: "图像采集装置设置", icon: "el-icon-picture-outline" },
}, },
{ {
// 权限页面 path: "/userManagement",
path: "/permission",
component: () => component: () =>
import( import(
/* webpackChunkName: "permission" */ "../views/Permission.vue" /* webpackChunkName: "tabs" */ "../views/system/userManagement.vue"
), ),
meta: { title: "权限测试", permission: true, icon: "el-icon-setting" }, meta: { title: "用户管理", icon: "el-icon-monitor" },
}, },
// {
// path: "/videoMonitor",
// component: () =>
// import(
// /* webpackChunkName: "tabs" */ "../views/videoMonitor/index.vue"
// ),
// meta: { title: "监控视频", icon: "el-icon-video-camera" },
// },
// {
// path: "/videoHistory",
// component: () =>
// import(
// /* webpackChunkName: "tabs" */ "../views/videoMonitor/videoHistory.vue"
// ),
// meta: { title: "视频回放", icon: "el-icon-video-camera" },
// },
// {
// path: "/groupInformation",
// component: () =>
// import(
// /* webpackChunkName: "tabs" */ "../views/management/userEquipment/groupInformation/index.vue"
// ),
// meta: { title: "分组信息管理", icon: "" },
// },
// {
// path: "/towerTeam",
// component: () =>
// import(
// /* webpackChunkName: "tabs" */ "../views/management/userEquipment/towerTeam/index.vue"
// ),
// meta: { title: "杆塔班组用户", icon: "" },
// },
{ {
path: "/404", path: "/404",
component: () => component: () =>
import(/* webpackChunkName: "404" */ "../views/404.vue"), import(/* webpackChunkName: "404" */ "../views/404.vue"),
meta: { title: "404" }, meta: { title: "404" },
}, },
{
path: "/403",
component: () =>
import(/* webpackChunkName: "403" */ "../views/403.vue"),
meta: { title: "403" },
},
], ],
}, },
{ {

@ -219,3 +219,29 @@ export function getImageResolutionListJoggle(data) {
//设置图像参数 setImageParams //设置图像参数 setImageParams
//查询图像分辨率 getImageParams //查询图像分辨率 getImageParams
// 获取GPS位置
export function getTermGPSJoggle(data) {
return request({
url: "/test/getTermGPS",
method: "post",
data,
});
}
//setTermGPS 开启关闭gps
export function setTermGPSJoggle(data) {
return request({
url: "/test/setTermGPS",
method: "post",
data,
});
}
//手动拍照
export function getLatestPhotoJoggle(data) {
return request({
url: "/test/getLatestPhoto",
method: "post",
data,
});
}

@ -1,56 +0,0 @@
<template>
<div class="error-page">
<div class="error-code">4<span>0</span>3</div>
<div class="error-desc">啊哦~ 你没有权限访问该页面哦</div>
<div class="error-handle">
<router-link to="/">
<el-button type="primary" size="large">返回首页</el-button>
</router-link>
<el-button class="error-btn" type="primary" size="large" @click="goBack"></el-button>
</div>
</div>
</template>
<script>
export default {
methods: {
goBack(){
this.$router.go(-1);
}
}
}
</script>
<style scoped>
.error-page{
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
width: 100%;
height: 100%;
background: #f3f3f3;
box-sizing: border-box;
}
.error-code{
line-height: 1;
font-size: 250px;
font-weight: bolder;
color: #f02d2d;
}
.error-code span{
color: #00a854;
}
.error-desc{
font-size: 30px;
color: #777;
}
.error-handle{
margin-top: 30px;
padding-bottom: 200px;
}
.error-btn{
margin-left: 100px;
}
</style>

@ -1,56 +1,55 @@
<template> <template>
<div class="error-page"> <div class="error-page">
<div class="error-code">4<span>0</span>4</div> <div class="error-code">4<span>0</span>4</div>
<div class="error-desc">啊哦~ 你所访问的页面不存在</div> <div class="error-desc">啊哦~ 你所访问的页面不存在</div>
<div class="error-handle"> <!-- <div class="error-handle">
<router-link to="/"> <router-link to="/">
<el-button type="primary" size="large">返回首页</el-button> <el-button type="primary" size="large">返回首页</el-button>
</router-link> </router-link>
<el-button class="error-btn" type="primary" size="large" @click="goBack"></el-button> <el-button class="error-btn" type="primary" size="large" @click="goBack"></el-button>
</div> </div> -->
</div> </div>
</template> </template>
<script> <script>
export default { export default {
methods: { methods: {
goBack(){ goBack() {
this.$router.go(-1); this.$router.go(-1);
} },
} },
} };
</script> </script>
<style scoped> <style scoped>
.error-page{ .error-page {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
flex-direction: column; flex-direction: column;
width: 100%; width: 100%;
height: 100%; height: 100%;
background: #f3f3f3; background: #f3f3f3;
box-sizing: border-box; box-sizing: border-box;
} }
.error-code{ .error-code {
line-height: 1; line-height: 1;
font-size: 250px; font-size: 250px;
font-weight: bolder; font-weight: bolder;
color: #2d8cf0; color: #2d8cf0;
} }
.error-code span{ .error-code span {
color: #00a854; color: #00a854;
} }
.error-desc{ .error-desc {
font-size: 30px; font-size: 30px;
color: #777; color: #777;
} }
.error-handle{ .error-handle {
margin-top: 30px; margin-top: 30px;
padding-bottom: 200px; padding-bottom: 200px;
} }
.error-btn{ .error-btn {
margin-left: 100px; margin-left: 100px;
} }
</style> </style>

@ -1,202 +1,253 @@
<template> <template>
<div class="alarmHandBox"> <div class="alarmHandBox">
<div class="alarmTop"> <div class="alarmTop">
<div class="alarmButtonGroup"> <div class="alarmButtonGroup">
<el-button type="primary">查询</el-button> <el-button type="primary">查询</el-button>
<el-button type="primary">今日告警</el-button> <el-button type="primary">今日告警</el-button>
<el-button type="primary">最近三日告警</el-button> <el-button type="primary">最近三日告警</el-button>
<el-button type="primary">最近一周告警</el-button> <el-button type="primary">最近一周告警</el-button>
<el-button type="primary">批量处理</el-button> <el-button type="primary">批量处理</el-button>
<el-button type="primary">查看详情</el-button> <el-button type="primary">查看详情</el-button>
<el-button type="primary">导出</el-button> <el-button type="primary">导出</el-button>
<el-button type="primary">导出处理结果</el-button> <el-button type="primary">导出处理结果</el-button>
<el-button type="primary">导出图片</el-button> <el-button type="primary">导出图片</el-button>
<el-button type="primary">手动刷新</el-button> <el-button type="primary">手动刷新</el-button>
</div> </div>
</div>
<div class="alarmContain">
<div class="alarmTable">
<el-table
ref="multipleTable"
:data="tableData"
border
tooltip-effect="dark"
style="width: 100%"
@selection-change="handleSelectionChange"
height="calc(100% - 40px)"
@row-click="handleRowClick"
>
<el-table-column min-width="35">
<template slot-scope="scope">
<span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column type="selection" min-width="25"> </el-table-column>
<el-table-column
prop="alarmTime"
label="告警时间"
min-width="135"
:show-overflow-tooltip="true"
:formatter="dateFormat"
>
</el-table-column>
<el-table-column prop="alarmLevel" label="告警级别" min-width="75">
</el-table-column>
<el-table-column
prop="lineName"
label="XL"
min-width="105"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="meid"
label="GT"
min-width="115"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="orientationName"
label="监拍朝向"
min-width="95"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="companyName"
label="单位"
min-width="75"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="alarmInfo"
label="告警原因"
min-width="155"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="source"
label="分析来源"
min-width="105"
:show-overflow-tooltip="true"
>
<template>后端分析</template></el-table-column
>
<el-table-column
prop="clearDistace"
label="净空距离"
min-width="105"
:show-overflow-tooltip="true"
><template>未分析</template>
</el-table-column>
<el-table-column
prop="distanceLevel"
label="距离分级"
min-width="85"
:show-overflow-tooltip="true"
>
</el-table-column>
<el-table-column
prop="isRead"
label="是否已读"
min-width="95"
fixed="right"
>
<template slot-scope="scope">
<span v-if="scope.row.isRead == 0"></span>
<span v-if="scope.row.isRead == 1"></span>
</template>
</el-table-column>
</el-table>
<div class="pageNation">
<el-pagination
@current-change="handleCurrentChange"
:current-page="page"
:page-size="pageSize"
layout=" prev, pager, next, jumper,total"
:total="total"
>
</el-pagination>
</div> </div>
<div class="alarmContain"> </div>
<div class="alarmTable"> <div class="alarmPic">
<el-table <div class="imgshow"><img :src="photoPic" /></div>
ref="multipleTable" <div class="editorBtn">
:data="tableData" <el-button type="primary">处理</el-button>
border <el-button type="primary">查看操作详情</el-button>
tooltip-effect="dark" <el-button type="primary">设置非警告区域</el-button>
style="width: 100%" <el-button type="primary">主动拍照</el-button>
@selection-change="handleSelectionChange" <el-button type="primary">转向GT</el-button>
height="calc(100% - 40px)" <el-button type="primary">复制</el-button>
@row-click="handleRowClick" <el-button type="primary">历史图</el-button>
>
<el-table-column min-width="35">
<template slot-scope="scope">
<span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span>
</template>
</el-table-column>
<el-table-column type="selection" min-width="25"> </el-table-column>
<el-table-column
prop="alarmTime"
label="告警时间"
min-width="135"
:show-overflow-tooltip="true"
:formatter="dateFormat"
>
</el-table-column>
<el-table-column prop="alarmLevel" label="告警级别" min-width="75"> </el-table-column>
<el-table-column prop="lineName" label="XL" min-width="105" :show-overflow-tooltip="true"> </el-table-column>
<el-table-column prop="meid" label="GT" min-width="115" :show-overflow-tooltip="true"> </el-table-column>
<el-table-column prop="orientationName" label="监拍朝向" min-width="95" :show-overflow-tooltip="true">
</el-table-column>
<el-table-column prop="companyName" label="单位" min-width="75" :show-overflow-tooltip="true"> </el-table-column>
<el-table-column prop="alarmInfo" label="告警原因" min-width="155" :show-overflow-tooltip="true"> </el-table-column>
<el-table-column prop="source" label="分析来源" min-width="105" :show-overflow-tooltip="true">
<template>后端分析</template></el-table-column
>
<el-table-column prop="clearDistace" label="净空距离" min-width="105" :show-overflow-tooltip="true"
><template>未分析</template>
</el-table-column>
<el-table-column prop="distanceLevel" label="距离分级" min-width="85" :show-overflow-tooltip="true"> </el-table-column>
<el-table-column prop="isRead" label="是否已读" min-width="95" fixed="right">
<template slot-scope="scope">
<span v-if="scope.row.isRead == 0"></span>
<span v-if="scope.row.isRead == 1"></span>
</template>
</el-table-column>
</el-table>
<div class="pageNation">
<el-pagination
@current-change="handleCurrentChange"
:current-page="page"
:page-size="pageSize"
layout=" prev, pager, next, jumper,total"
:total="total"
>
</el-pagination>
</div>
</div>
<div class="alarmPic">
<div class="imgshow"><img :src="photoPic" /></div>
<div class="editorBtn">
<el-button type="primary">处理</el-button>
<el-button type="primary">查看操作详情</el-button>
<el-button type="primary">设置非警告区域</el-button>
<el-button type="primary">主动拍照</el-button>
<el-button type="primary">转向GT</el-button>
<el-button type="primary">复制</el-button>
<el-button type="primary">历史图</el-button>
</div>
</div>
</div> </div>
</div>
</div> </div>
</div>
</template> </template>
<script> <script>
import { list } from '@/utils/api/index'; //import { list } from '@/utils/api/index';
import moment from 'moment'; import moment from "moment";
export default { export default {
data() { data() {
return { return {
photoPic: '', photoPic: "",
tableData: [], tableData: [],
multipleSelection: [], multipleSelection: [],
page: 1, // page: 1, //
pageSize: 20, // pageSize: 20, //
total: 0 // total: 0, //
}; };
},
methods: {
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.page = val;
this.getTableList();
},
getTableList() {
list({
companyIdSelect: "",
timeStart: "2023-03-24 00:00:00",
timeEnd: "2023-03-24 23:59:59",
status: 0,
lineId: "",
voltageCode: "",
logicTowerId: "",
alarmInfo: "",
page: this.page,
rows: this.pageSize,
sort: "alarmTime",
order: "desc",
}).then((res) => {
console.log(res.data);
this.tableData = res.data.rows;
this.total = res.data.total;
this.photoPic =
"http://180.166.218.222:8104/media" + res.data.rows[0].photoPath;
});
}, },
methods: {
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.page = val;
this.getTableList();
},
getTableList() {
list({
companyIdSelect: '',
timeStart: '2023-03-24 00:00:00',
timeEnd: '2023-03-24 23:59:59',
status: 0,
lineId: '',
voltageCode: '',
logicTowerId: '',
alarmInfo: '',
page: this.page,
rows: this.pageSize,
sort: 'alarmTime',
order: 'desc'
}).then((res) => {
console.log(res.data);
this.tableData = res.data.rows;
this.total = res.data.total;
this.photoPic = 'http://180.166.218.222:8104/media' + res.data.rows[0].photoPath;
});
},
handleSelectionChange(val) { handleSelectionChange(val) {
this.multipleSelection = val; this.multipleSelection = val;
},
handleRowClick(row) {
//this.$refs.multipleTable.toggleRowSelection(row);
console.log(row);
this.photoPic = 'http://180.166.218.222:8104/media' + row.photoPath;
},
dateFormat(row, column) {
var date = row[column.property];
if (date == undefined) {
return '';
}
return moment(date).format('YYYY-MM-DD HH:mm:ss');
}
}, },
created() { handleRowClick(row) {
this.getTableList(); //this.$refs.multipleTable.toggleRowSelection(row);
} console.log(row);
this.photoPic = "http://180.166.218.222:8104/media" + row.photoPath;
},
dateFormat(row, column) {
var date = row[column.property];
if (date == undefined) {
return "";
}
return moment(date).format("YYYY-MM-DD HH:mm:ss");
},
},
created() {
//this.getTableList();
},
}; };
</script> </script>
<style lang="less"> <style lang="less">
.alarmHandBox { .alarmHandBox {
width: 100%; width: calc(100% - 32px);
height: 100%; height: calc(100% - 32px);
background: @color-white; padding: 16px 16px;
.alarmTop { background: #ffffff;
padding: 16px 8px; .alarmTop {
padding: 16px 8px;
}
.alarmContain {
display: flex;
height: calc(100% - 72px);
padding: 0px 8px;
.alarmTable {
width: 50%;
height: 100%;
} }
.alarmContain { .pageNation {
display: flex; margin-top: 8px;
height: calc(100% - 72px); }
padding: 0px 8px; .alarmPic {
.alarmTable { width: 50%;
width: 50%; height: 100%;
height: 100%; display: flex;
} flex-direction: column;
.pageNation { justify-content: space-between;
margin-top: 8px; .imgshow {
} width: 100%;
.alarmPic { height: 90%;
width: 50%; img {
height: 100%; width: 100%;
display: flex; height: 100%;
flex-direction: column;
justify-content: space-between;
.imgshow {
width: 100%;
height: 90%;
img {
width: 100%;
height: 100%;
}
}
.editorBtn {
margin-top: 8px;
border: 1px solid @border-color-base;
padding: 2%;
border-radius: 4px;
}
.editorBtn {
display: flex;
justify-content: flex-start;
}
} }
}
.editorBtn {
margin-top: 8px;
border: 1px solid @border-color-base;
padding: 2%;
border-radius: 4px;
}
.editorBtn {
display: flex;
justify-content: flex-start;
}
} }
}
} }
</style> </style>

@ -121,10 +121,9 @@ export default {
justify-content: center; justify-content: center;
} }
img { img {
width: auto; width: 100%;
height: auto; height: 100%;
max-width: 100%; object-fit: fill;
max-height: 100%;
} }
} }
.swiper-button-prev.swiper-button-disabled, .swiper-button-prev.swiper-button-disabled,
@ -148,10 +147,8 @@ export default {
justify-content: center; justify-content: center;
img { img {
width: auto; width: 260px;
height: auto; height: 160px;
max-width: 100%;
max-height: 100%;
} }
} }

@ -91,13 +91,16 @@
> >
</el-table-column> </el-table-column>
<el-table-column fixed="right" label="操作" width="160"> <el-table-column fixed="right" label="操作" width="260">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
@click.native.stop="handleRevisePhoto(scope.row)" @click.native.stop="handleRevisePhoto(scope.row)"
type="text" type="text"
>修改</el-button >修改</el-button
> >
<el-button type="text">装置复位</el-button>
<el-button type="text">远程升级</el-button>
<el-button <el-button
type="text" type="text"
class="deleteText" class="deleteText"

@ -1,74 +1,76 @@
<template> <template>
<div class="towerSide"> <div class="towerSide">
<el-tree <el-tree
:data="data" :data="data"
:expand-on-click-node="false" :expand-on-click-node="false"
:props="defaultProps" :props="defaultProps"
@node-click="handleNodeClick" @node-click="handleNodeClick"
default-expand-all default-expand-all
highlight-current highlight-current
node-key="id" node-key="id"
:default-expanded-keys="expandDefault" :default-expanded-keys="expandDefault"
></el-tree> ></el-tree>
</div> </div>
</template> </template>
<script> <script>
import bus from '../../../../../components/common/bus'; import bus from "../../../../../components/common/bus";
import { getListCompany } from '@/utils/api/index'; //import { getListCompany } from '@/utils/api/index';
export default { export default {
data() { data() {
return { return {
expandDefault: [], // expandDefault: [], //
data: [], data: [],
defaultProps: { defaultProps: {
children: 'children', children: "children",
label: 'text' label: "text",
} },
}; };
}, },
// //
watch: { watch: {
expandDefault(newVal, oldVal) { expandDefault(newVal, oldVal) {
if (newVal) { if (newVal) {
this.$nextTick(() => { this.$nextTick(() => {
document.querySelector('.el-tree-node__content').click(); document.querySelector(".el-tree-node__content").click();
}); });
} }
}
}, },
},
created() { created() {
getListCompany({ // getListCompany({
companyId: 'f7d966d1-f3d1-4802-946d-ad93e1ee1b9b', // companyId: 'f7d966d1-f3d1-4802-946d-ad93e1ee1b9b',
lineName: '' // lineName: ''
}).then((res) => { // }).then((res) => {
//console.log(res.data); // //console.log(res.data);
this.expandDefault.push(res.data.$treeNodeId); // this.expandDefault.push(res.data.$treeNodeId);
this.data = res.data; // this.data = res.data;
}); // });
},
methods: {
handleNodeClick(data) {
//console.log(data);
bus.$emit("nodeData", data);
}, },
methods: { },
handleNodeClick(data) {
//console.log(data);
bus.$emit('nodeData', data);
}
}
}; };
</script> </script>
<style lang="less"> <style lang="less">
.towerSide { .towerSide {
width: 234px; width: 234px;
height: 100%; height: 100%;
border-right: 1px solid @border-color-base; border-right: 1px solid @border-color-base;
// //
.el-tree { .el-tree {
.el-tree-node__content { .el-tree-node__content {
height: 32px; height: 32px;
}
}
.el-tree--highlight-current .el-tree-node.is-current > .el-tree-node__content {
background-color: @color-primary;
color: @color-white;
} }
}
.el-tree--highlight-current
.el-tree-node.is-current
> .el-tree-node__content {
background-color: @color-primary;
color: @color-white;
}
} }
</style> </style>

@ -1,58 +1,65 @@
<template> <template>
<div class="towerTableMian"> <div class="towerTableMian">
<div class="towerBtnGroup"> <div class="towerBtnGroup">
<el-button type="primary">新增</el-button> <el-button type="primary">新增</el-button>
<el-button type="primary">批量添加</el-button> <el-button type="primary">批量添加</el-button>
<el-button type="primary">同T添加</el-button> <el-button type="primary">同T添加</el-button>
<el-button type="primary">修改</el-button> <el-button type="primary">修改</el-button>
<el-button type="primary">修改XL</el-button> <el-button type="primary">修改XL</el-button>
<el-button type="primary">批量修改属地化</el-button> <el-button type="primary">批量修改属地化</el-button>
<el-button type="primary">批量修改班组</el-button> <el-button type="primary">批量修改班组</el-button>
<el-button type="primary">删除</el-button> <el-button type="primary">删除</el-button>
<el-button type="primary">查询</el-button> <el-button type="primary">查询</el-button>
<el-button type="primary">导入</el-button> <el-button type="primary">导入</el-button>
<el-button type="primary">导入模板下载</el-button> <el-button type="primary">导入模板下载</el-button>
<el-button type="primary">导出</el-button> <el-button type="primary">导出</el-button>
<el-button type="primary">导入监拍点</el-button> <el-button type="primary">导入监拍点</el-button>
<el-button type="primary">监拍点导入模板</el-button> <el-button type="primary">监拍点导入模板</el-button>
<el-button type="primary">导出监拍点</el-button> <el-button type="primary">导出监拍点</el-button>
</div> </div>
<div class="searchForm"> <div class="searchForm">
<el-form :inline="true" :model="formInline" class="demo-form-inline"> <el-form :inline="true" :model="formInline" class="demo-form-inline">
<el-form-item label="单位:"> <el-form-item label="单位:">
<el-select v-model="formInline.region" placeholder="活动区域"> <el-select v-model="formInline.region" placeholder="活动区域">
<el-option label="区域一" value="shanghai"></el-option> <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> <el-option label="区域二" value="beijing"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="DY等级:"> <el-form-item label="DY等级:">
<el-select v-model="formInline.region" placeholder="活动区域"> <el-select v-model="formInline.region" placeholder="活动区域">
<el-option label="区域一" value="shanghai"></el-option> <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> <el-option label="区域二" value="beijing"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="XL名称:"> <el-form-item label="XL名称:">
<el-input v-model="formInline.user" placeholder="审批人"></el-input> <el-input v-model="formInline.user" placeholder="审批人"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="是否为采集"> <el-form-item label="是否为采集">
<el-select v-model="formInline.region" placeholder="活动区域"> <el-select v-model="formInline.region" placeholder="活动区域">
<el-option label="区域一" value="shanghai"></el-option> <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> <el-option label="区域二" value="beijing"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="PMS编号:"> <el-form-item label="PMS编号:">
<el-input v-model="formInline.user" placeholder="审批人"></el-input> <el-input v-model="formInline.user" placeholder="审批人"></el-input>
</el-form-item> </el-form-item>
</el-form> </el-form>
</div> </div>
<el-table class="towerTable" :data="tableData" style="width: 100%" height="calc(100% - 154px)" v-loading="loading"> <el-table
<el-table-column prop="company.organName" label="单位"> </el-table-column> class="towerTable"
<el-table-column prop="line.lineName" label="XL名称"> </el-table-column> :data="tableData"
<el-table-column prop="towerName" label="GT名称"> </el-table-column> style="width: 100%"
<el-table-column prop="date" label="排序"> </el-table-column> height="calc(100% - 154px)"
<el-table-column prop="voltageLevelDict.name" label="DY等级"> </el-table-column> v-loading="loading"
<!-- <el-table-column prop="address" label="GT性质"> </el-table-column> >
<el-table-column prop="company.organName" label="单位"> </el-table-column>
<el-table-column prop="line.lineName" label="XL名称"> </el-table-column>
<el-table-column prop="towerName" label="GT名称"> </el-table-column>
<el-table-column prop="date" label="排序"> </el-table-column>
<el-table-column prop="voltageLevelDict.name" label="DY等级">
</el-table-column>
<!-- <el-table-column prop="address" label="GT性质"> </el-table-column>
<el-table-column prop="date" label="GT状态"> </el-table-column> <el-table-column prop="date" label="GT状态"> </el-table-column>
<el-table-column prop="name" label="GT材质"> </el-table-column> <el-table-column prop="name" label="GT材质"> </el-table-column>
<el-table-column prop="address" label="位置描述"> </el-table-column> <el-table-column prop="address" label="位置描述"> </el-table-column>
@ -62,164 +69,164 @@
<el-table-column prop="date" label="属地单位"> </el-table-column> <el-table-column prop="date" label="属地单位"> </el-table-column>
<el-table-column prop="name" label="PMS逻辑GT编码"> </el-table-column> <el-table-column prop="name" label="PMS逻辑GT编码"> </el-table-column>
<el-table-column prop="address" label="PMS物理GT编码"> </el-table-column> --> <el-table-column prop="address" label="PMS物理GT编码"> </el-table-column> -->
<!-- <el-table-column label="操作"> <!-- <el-table-column label="操作">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button> <el-button @click="handleClick(scope.row)" type="text" size="small">查看</el-button>
<el-button type="text" size="small">编辑</el-button> <el-button type="text" size="small">编辑</el-button>
</template> </template>
</el-table-column> --> </el-table-column> -->
</el-table> </el-table>
<div class="pageNation"> <div class="pageNation">
<el-pagination <el-pagination
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="page" :current-page="page"
:page-size="pageSize" :page-size="pageSize"
layout=" prev, pager, next, jumper,total" layout=" prev, pager, next, jumper,total"
:total="total" :total="total"
> >
</el-pagination> </el-pagination>
</div>
</div> </div>
</template> </div>
</template>
<script> <script>
import bus from '../../../../../components/common/bus'; import bus from "../../../../../components/common/bus";
import { getTowerList } from '@/utils/api/index'; //import { getTowerList } from '@/utils/api/index';
export default { export default {
data() { data() {
return { return {
tableData: [], tableData: [],
formInline: { formInline: {
user: '', user: "",
region: '' region: "",
}, },
loading: true, loading: true,
companyId: '', companyId: "",
page: 1, // page: 1, //
pageSize: 20, // pageSize: 20, //
total: 0 // total: 0, //
}; };
},
created() {
// this.loading = true;
// getTowerList({
// organId: 'f7d966d1-f3d1-4802-946d-ad93e1ee1b9b',
// towerName: '',
// towerNature: '',
// towerTexture: '',
// status: '',
// cConfig: '',
// page: this.page,
// rows: this.pageSize
// }).then((res) => {
// console.log(res);
// this.tableData = res.data.rows;
// this.total = res.data.total;
// this.loading = false;
// });
},
mounted() {
bus.$on("nodeData", (data) => {
// console.log(data);
this.loading = true;
if (data.dataType == "company") {
this.getLevelOne(data);
} else if (data.dataType == "dict") {
this.getLevelTwo(data);
} else if (data.dataType == "line") {
this.getLevelThree(data);
}
//this.getTable(data);
});
},
methods: {
//
getLevelOne(data) {
getTowerList({
organId: data.id,
towerName: "",
towerNature: "",
towerTexture: "",
status: "",
cConfig: "",
page: this.page,
rows: this.pageSize,
}).then((res) => {
//console.log(res);
this.tableData = res.data.rows;
this.total = res.data.total;
this.loading = false;
});
}, },
created() { //
// this.loading = true; getLevelTwo(data) {
// getTowerList({ getTowerList({
// organId: 'f7d966d1-f3d1-4802-946d-ad93e1ee1b9b', voltageLevel: data.id,
// towerName: '', companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
// towerNature: '', towerName: "",
// towerTexture: '', towerNature: "",
// status: '', towerTexture: "",
// cConfig: '', status: "",
// page: this.page, cConfig: "",
// rows: this.pageSize page: this.page,
// }).then((res) => { rows: this.pageSize,
// console.log(res); }).then((res) => {
// this.tableData = res.data.rows; // console.log(res);
// this.total = res.data.total; this.tableData = res.data.rows;
// this.loading = false; this.total = res.data.total;
// }); this.loading = false;
});
}, },
mounted() { //
bus.$on('nodeData', (data) => { getLevelThree(data) {
// console.log(data); getTowerList({
this.loading = true; lineId: data.id,
if (data.dataType == 'company') { towerName: "",
this.getLevelOne(data); towerNature: "",
} else if (data.dataType == 'dict') { towerTexture: "",
this.getLevelTwo(data); status: "",
} else if (data.dataType == 'line') { cConfig: "",
this.getLevelThree(data); page: this.page,
} rows: this.pageSize,
//this.getTable(data); }).then((res) => {
}); //console.log(res);
this.tableData = res.data.rows;
this.total = res.data.total;
this.loading = false;
});
}, },
methods: { handleCurrentChange(val) {
// console.log(`当前页: ${val}`);
getLevelOne(data) { this.page = val;
getTowerList({ },
organId: data.id, },
towerName: '',
towerNature: '',
towerTexture: '',
status: '',
cConfig: '',
page: this.page,
rows: this.pageSize
}).then((res) => {
//console.log(res);
this.tableData = res.data.rows;
this.total = res.data.total;
this.loading = false;
});
},
//
getLevelTwo(data) {
getTowerList({
voltageLevel: data.id,
companyId: 'f7d966d1-f3d1-4802-946d-ad93e1ee1b9b',
towerName: '',
towerNature: '',
towerTexture: '',
status: '',
cConfig: '',
page: this.page,
rows: this.pageSize
}).then((res) => {
// console.log(res);
this.tableData = res.data.rows;
this.total = res.data.total;
this.loading = false;
});
},
//
getLevelThree(data) {
getTowerList({
lineId: data.id,
towerName: '',
towerNature: '',
towerTexture: '',
status: '',
cConfig: '',
page: this.page,
rows: this.pageSize
}).then((res) => {
//console.log(res);
this.tableData = res.data.rows;
this.total = res.data.total;
this.loading = false;
});
},
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.page = val;
}
}
}; };
</script> </script>
<style lang="less"> <style lang="less">
.towerTableMian { .towerTableMian {
flex: 1; flex: 1;
min-width: 0; min-width: 0;
.towerBtnGroup { .towerBtnGroup {
padding: 16px 8px; padding: 16px 8px;
} }
.searchForm { .searchForm {
padding: 0px 8px; padding: 0px 8px;
.el-form { .el-form {
.el-form-item { .el-form-item {
margin-bottom: 0px; margin-bottom: 0px;
.el-select, .el-select,
.el-input { .el-input {
width: 100px; width: 100px;
}
}
} }
}
} }
.towerTable { }
margin-top: 12px; .towerTable {
//padding: 16px 8px 0 8px; margin-top: 12px;
} //padding: 16px 8px 0 8px;
.pageNation { }
margin-top: 8px; .pageNation {
} margin-top: 8px;
}
} }
</style> </style>

@ -1,221 +1,368 @@
<template> <template>
<div class="picRotation"> <div class="picRotation">
<div class="picHead"> <div class="picHead">
<div class="pageNation"> <div class="pageNation">
<el-pagination <el-pagination
@size-change="handleSizeChange" @size-change="handleSizeChange"
@current-change="handleCurrentChange" @current-change="handleCurrentChange"
:current-page="page" :current-page="page"
:page-size="pageSize" :page-size="pageSize"
layout=" prev, pager, next, jumper,total" layout=" prev, pager, next, jumper,total"
:total="total" :total="total"
> >
</el-pagination> </el-pagination>
</div> </div>
<div class="buttonGroup"> <div class="buttonGroup">
<el-button type="primary" @click="toggleCountdown">{{ isRuning ? '' : '' }}</el-button> <el-button type="primary" @click="toggleCountdown">{{
<el-button type="primary">全屏</el-button> isRuning ? "暂停轮巡" : "开始轮巡"
<el-button type="primary">设置</el-button> }}</el-button>
<el-button type="primary">轮询条件</el-button> <el-button type="primary">设置</el-button>
<el-select v-model="value" placeholder="请选择"> <el-button type="primary">轮询条件</el-button>
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> <el-select v-model="value" placeholder="请选择">
</el-select> <el-option
<span class="info"> v-for="item in options"
<b> {{ isRuning ? remainingTime : '已暂停' }} </b> :key="item.value"
</span> :label="item.label"
</div> :value="item.value"
</div> >
<div class="imageCenter"> </el-option>
<div class="imgList" v-for="(item, index) in picList" :key="index"> </el-select>
<img :src="basUrl + item.filePath" /> <span class="info">
<p class="infoTop">{{ item.lineName }}-{{ item.towerName }}-{{ item.orientationName }}</p> <b> {{ isRuning ? remainingTime : "已暂停" }} </b>
<p class="infoBottom">{{ item.captureTime }}</p> </span>
</div> </div>
</div>
</div> </div>
<div class="imageCenter">
<div class="imgList" v-for="(item, index) in picList" :key="index">
<img :src="item.path" />
<p class="infoTop">
{{ item.channelId }}-{{ item.termId }}-{{ item.fileSize }}
</p>
<p class="infoBottom">{{ item.photoTime }}</p>
</div>
</div>
</div>
</template> </template>
<script> <script>
import { picLoop } from '@/utils/api/index'; //import { picLoop } from "@/utils/api/index";
import qs from 'qs'; import qs from "qs";
export default { export default {
data() { data() {
return { return {
options: [ options: [
{ {
value: '选项1', value: "选项1",
label: '顺序' label: "顺序",
}, },
{ {
value: '选项2', value: "选项2",
label: '倒序' label: "倒序",
} },
], ],
value: '选项1', value: "选项1",
page: 1, // page: 1, //
pageSize: 4, // pageSize: 4, //
totalPage: 0, // totalPage: 0, //
total: 0, // total: 0, //
picList: [], // picList: [], //
basUrl: '', basUrl: "",
totalTime: 15, // totalTime: 15, //
remainingTime: 15, // remainingTime: 15, //
isRuning: false, isRuning: false,
timer: null timer: null,
}; };
},
methods: {
handleSizeChange(val) {
console.log(`每页 ${val}`);
}, },
methods: { handleCurrentChange(val) {
handleSizeChange(val) { console.log(`当前页: ${val}`);
console.log(`每页 ${val}`); this.isRuning = false;
this.pauseCountdown();
this.page = val;
this.getPicData();
},
//
getPicData() {
this.picList = [
{
id: 15,
termId: 10010,
channelId: 1,
presetId: 255,
width: 0,
height: 0,
fileSize: 265357,
photoTime: "2023-05-05T17:21:04.000+00:00",
recvTime: null,
path: "http://47.96.238.157/photos/2023/05/06/64/XYIGQ10C221000064_1_FF_20230506012104.jpg",
manualRequest: 0,
}, },
handleCurrentChange(val) { {
console.log(`当前页: ${val}`); id: 16,
this.isRuning = false; termId: 10010,
this.pauseCountdown(); channelId: 1,
this.page = val; presetId: 255,
this.getPicData(); width: 0,
height: 0,
fileSize: 263597,
photoTime: "2023-05-05T17:21:49.000+00:00",
recvTime: null,
path: "http://47.96.238.157/photos/2023/05/06/64/XYIGQ10C221000064_1_FF_20230506012149.jpg",
manualRequest: 0,
}, },
// {
getPicData() { id: 17,
picLoop({ rows: this.pageSize, page: this.page }).then((res) => { termId: 10010,
console.log(res.data); channelId: 1,
this.total = res.data.total; // presetId: 255,
this.totalPage = Math.ceil(this.total / this.pageSize); // width: 0,
this.picList = res.data.rows; // height: 0,
this.basUrl = res.data.photoserver; // fileSize: 265471,
}); photoTime: "2023-05-05T17:25:13.000+00:00",
recvTime: null,
path: "http://47.96.238.157/photos/2023/05/06/64/XYIGQ10C221000064_1_FF_20230506012513.jpg",
manualRequest: 0,
}, },
{
// id: 18,
startCountdown() { termId: 10010,
this.timer = setInterval(() => { channelId: 1,
if (this.remainingTime <= 0) { presetId: 255,
//0 width: 0,
clearInterval(this.timer); height: 0,
this.remainingTime = this.totalTime; fileSize: 263625,
this.startCountdown(); photoTime: "2023-05-05T17:36:37.000+00:00",
this.page++; recvTime: null,
this.getPicData(); path: "http://47.96.238.157/photos/2023/05/06/64/XYIGQ10C221000064_1_FF_20230506013617.jpg",
console.log(this.page); manualRequest: 0,
if (this.page > this.totalPage) {
clearInterval(this.timer);
alert('最后一页了');
this.page = 1;
this.startCountdown();
this.getPicData();
}
} else {
this.remainingTime--;
}
}, 1000);
}, },
{
// id: 19,
pauseCountdown() { termId: 10010,
clearInterval(this.timer); // channelId: 1,
presetId: 255,
width: 0,
height: 0,
fileSize: 261572,
photoTime: "2023-05-05T17:37:14.000+00:00",
recvTime: null,
path: "http://47.96.238.157/photos/2023/05/06/64/XYIGQ10C221000064_1_FF_20230506013654.jpg",
manualRequest: 0,
},
{
id: 22,
termId: 10010,
channelId: 1,
presetId: 255,
width: 0,
height: 0,
fileSize: 264348,
photoTime: "2023-05-05T17:40:06.000+00:00",
recvTime: null,
path: "http://47.96.238.157/photos/2023/05/06/64/XYIGQ10C221000064_1_FF_20230506013946.jpg",
manualRequest: 0,
},
{
id: 23,
termId: 10010,
channelId: 1,
presetId: 255,
width: 0,
height: 0,
fileSize: 262231,
photoTime: "2023-05-05T17:42:33.000+00:00",
recvTime: null,
path: "http://47.96.238.157/photos/2023/05/06/64/XYIGQ10C221000064_1_FF_20230506014213.jpg",
manualRequest: 0,
},
{
id: 24,
termId: 10010,
channelId: 1,
presetId: 255,
width: 0,
height: 0,
fileSize: 262564,
photoTime: "2023-05-05T17:43:11.000+00:00",
recvTime: null,
path: "http://47.96.238.157/photos/2023/05/06/64/XYIGQ10C221000064_1_FF_20230506014252.jpg",
manualRequest: 0,
}, },
//isRuning {
toggleCountdown() { id: 26,
if (this.isRuning) { termId: 10010,
this.pauseCountdown(); channelId: 2,
} else { presetId: 255,
this.startCountdown(); width: 0,
this.getPicData(); height: 0,
} fileSize: 177557,
this.isRuning = !this.isRuning; photoTime: "2023-05-05T17:46:23.000+00:00",
recvTime: null,
path: "http://47.96.238.157/photos/2023/05/06/64/XYIGQ10C221000064_2_FF_20230506014604.jpg",
manualRequest: 0,
},
{
id: 37,
termId: 10010,
channelId: 2,
presetId: 255,
width: 0,
height: 0,
fileSize: 219467,
photoTime: "2023-05-05T17:47:31.000+00:00",
recvTime: null,
path: "http://47.96.238.157/photos/2023/05/06/64/XYIGQ10C221000064_2_FF_20230506014711.jpg",
manualRequest: 0,
},
{
id: 89,
termId: 10010,
channelId: 2,
presetId: 255,
width: 0,
height: 0,
fileSize: 257854,
photoTime: "2023-05-06T00:54:07.000+00:00",
recvTime: null,
path: "http://47.96.238.157/photos/2023/05/06/64/XYIGQ10C221000064_2_FF_20230506085401.jpg",
manualRequest: 0,
},
];
},
//
startCountdown() {
this.timer = setInterval(() => {
if (this.remainingTime <= 0) {
//0
clearInterval(this.timer);
this.remainingTime = this.totalTime;
this.startCountdown();
this.page++;
this.getPicData();
console.log(this.page);
if (this.page > this.totalPage) {
clearInterval(this.timer);
//alert("");
this.page = 1;
this.startCountdown();
this.getPicData();
}
} else {
this.remainingTime--;
} }
}, 1000);
},
//
pauseCountdown() {
clearInterval(this.timer); //
}, },
computed: {}, //isRuning
mounted() { toggleCountdown() {
this.toggleCountdown(); if (this.isRuning) {
this.pauseCountdown();
} else {
this.startCountdown();
this.getPicData();
}
this.isRuning = !this.isRuning;
}, },
created() {}, },
computed: {},
mounted() {
//this.toggleCountdown();
},
created() {},
beforeDestroy() { beforeDestroy() {
console.log('销毁定时器'); console.log("销毁定时器");
clearInterval(this.timer); clearInterval(this.timer);
this.timer = null; this.timer = null;
} },
}; };
</script> </script>
<style lang="less"> <style lang="less">
.picRotation { .picRotation {
height: calc(100% - 8px); width: calc(100% - 32px);
width: 100%; height: calc(100% - 32px);
background: @color-white; padding: 16px 16px;
//background: #fcc; background: #ffffff;
.picHead { .picHead {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
padding: 8px 0px; padding: 0px 0px 8px 0px;
.buttonGroup {
.buttonGroup { display: flex;
display: flex; .el-select {
.el-select { margin-left: 10px;
margin-left: 10px; width: 100px;
width: 100px; }
} .info {
.info { width: 80px;
width: 80px; text-align: center;
text-align: center; margin-left: 16px;
margin-left: 16px; line-height: 32px;
line-height: 32px; b {
b { font-size: 24px;
font-size: 24px; font-weight: normal;
font-weight: normal; color: @color-success;
color: @color-success; vertical-align: middle;
vertical-align: middle;
}
}
} }
}
} }
}
.imageCenter { .imageCenter {
display: flex; display: flex;
// justify-content: space-around; // justify-content: space-around;
flex-wrap: wrap; flex-wrap: wrap;
height: calc(100% - 52px); height: calc(100% - 52px);
.imgList { .imgList {
width: 49.4%; width: 49.4%;
position: relative; position: relative;
display: inline-block; display: inline-block;
margin-right: 0.25%; margin-right: 0.25%;
margin-left: 0.25%; margin-left: 0.25%;
position: relative; margin-top: 0.3%;
-moz-border-radius: 3px; position: relative;
-webkit-border-radius: 3px; -moz-border-radius: 3px;
border-radius: 3px px; -webkit-border-radius: 3px;
height: 49%; border-radius: 3px px;
height: 49%;
img { img {
width: 100%; width: 100%;
height: 100%; height: 100%;
} }
.infoTop { .infoTop {
position: absolute; position: absolute;
bottom: 28px; bottom: 28px;
left: 0px; left: 0px;
font-size: 15px; font-size: 15px;
background-color: #3a87ad !important; background-color: #3a87ad !important;
color: @color-white; color: @color-white;
font-weight: normal; font-weight: normal;
margin-top: 2px; margin-top: 2px;
padding-left: 5px; padding-left: 5px;
padding-right: 5px; padding-right: 5px;
} }
.infoBottom { .infoBottom {
position: absolute; position: absolute;
bottom: 4px; bottom: 4px;
color: @color-white; color: @color-white;
left: 0px; left: 0px;
font-size: 15px; font-size: 15px;
background-color: #51b17c !important; background-color: #51b17c !important;
font-weight: normal; font-weight: normal;
margin-top: 2px; margin-top: 2px;
padding-left: 5px; padding-left: 5px;
padding-right: 5px; padding-right: 5px;
} }
}
} }
}
} }
</style> </style>

@ -55,6 +55,7 @@
v-model="channelValue" v-model="channelValue"
placeholder="请选择" placeholder="请选择"
@change="changeChannelId" @change="changeChannelId"
multiple
> >
<el-option <el-option
v-for="item in channelOption" v-for="item in channelOption"
@ -65,57 +66,57 @@
</el-option> </el-option>
</el-select> </el-select>
</div> </div>
<!-- <div class="GPSItemBox">
<h3>当前GPS状态</h3>
<el-select
v-model="channelValue"
placeholder="请选择"
@change="changeChannelId"
>
<el-option
v-for="item in channelOption"
:key="item.value"
:label="item.label"
:value="item.value"
>
</el-option>
</el-select>
</div> -->
<div class="setTimebtn"> <div class="setTimebtn">
<h3>操作项</h3> <h3>操作项</h3>
<div class="buttonGroup"> <div class="buttonGroup">
<el-button type="primary" @click.native.stop="handleSetSchedule()" <el-button type="primary" @click.native.stop="handleSetSchedule()"
>时间表设置</el-button >时间表设置</el-button
> >
<el-button type="primary" @click="handleShowErr" <el-button type="primary" @click="handleShowPic"
>手动拍照</el-button >手动拍照</el-button
> >
<el-button type="primary" @click="handleShowGPS" <el-button type="primary" @click="handleShowGPS"
>获取GPS位置</el-button >获取GPS位置</el-button
> >
<el-button type="primary" @click="handleShowErr">
装置信息</el-button
>
<el-dropdown
class="dropgps"
trigger="click"
@command="handleCommand"
>
<el-button type="primary">
GPS开关<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="open">开启GPS</el-dropdown-item>
<el-dropdown-item command="close">关闭GPS</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<el-button type="primary" @click="handleShowErr"
>声光报警</el-button
>
<el-button type="primary" @click="handleShowErr" <el-button type="primary" @click="handleShowErr"
>装置复位</el-button >历史图片</el-button
> >
<!-- <el-button type="primary" @click="handlePanel" <!-- <el-button type="primary" @click="handlePanel"
>图片标记</el-button >图片标记</el-button
> --> > -->
<!-- <el-button type="primary" @click="handleShowErr" <!-- -->
>监拍点信息</el-button <!--
> -->
<el-button type="primary" @click="handleShowErr">
装置信息</el-button
>
<el-button type="primary" @click="handleUpGrade" <el-button type="primary" @click="handleUpGrade"
>远程升级</el-button >远程升级</el-button
> > -->
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<setschedule ref="setschedule_ref"></setschedule> <setschedule ref="setschedule_ref"></setschedule>
<!-- 装置升级 --> <!-- 装置升级 -->
<deviceUpgrade ref="deviceupgrade_ref"></deviceUpgrade> <!-- <deviceUpgrade ref="deviceupgrade_ref"></deviceUpgrade> -->
<!-- 绘制图片 --> <!-- 绘制图片 -->
<pictureTags ref="pictureTags_ref"></pictureTags> <pictureTags ref="pictureTags_ref"></pictureTags>
</div> </div>
@ -127,13 +128,14 @@ import {
getdyTreeListJoggle, getdyTreeListJoggle,
getChannelByTermidJoggle, getChannelByTermidJoggle,
getTerminalPhotoListJoggle, getTerminalPhotoListJoggle,
getTermGPSJoggle,
setTermGPSJoggle,
getLatestPhotoJoggle,
} from "@/utils/api/index"; } from "@/utils/api/index";
import carouselChart from "../components/carouselChart.vue"; import carouselChart from "../components/carouselChart.vue";
import setschedule from "./components/setschedule.vue"; import setschedule from "./components/setschedule.vue";
import deviceUpgrade from "./components/deviceUpgrade.vue"; import deviceUpgrade from "./components/deviceUpgrade.vue";
import pictureTags from "./components/pictureTags.vue"; import pictureTags from "./components/pictureTags.vue";
export default { export default {
components: { components: {
carouselChart, carouselChart,
@ -152,15 +154,27 @@ export default {
label: "name", label: "name",
}, },
currentNodekey: "", //, currentNodekey: "", //,
channelId: "", //id cmdid: "", //id,
id: "", //id
channelList: "", // channelList: "", //
channelOption: [], // channelOption: [], //
channelValue: "", channelValue: [],
terminalPhoto: [], // terminalPhoto: [], //
dateValue: "", // dateValue: "", //
nopicPath: require("@/assets/img/nopic.jpg"), nopicPath: require("@/assets/img/nopic.jpg"),
loadingBg: true, loadingBg: true,
loading: true, loading: true,
GPSValue: "",
GpsOption: [
{
value: "1",
label: "开启",
},
{
value: "0",
label: "关闭",
},
],
}; };
}, },
watch: {}, watch: {},
@ -169,7 +183,6 @@ export default {
created() { created() {
this.getLineTreeList(); this.getLineTreeList();
this.getDateTime(); this.getDateTime();
console.log(this.dateValue);
}, },
methods: { methods: {
// //
@ -178,7 +191,6 @@ export default {
}, },
// //
changedate() { changedate() {
console.log(this.dateValue);
console.log(this.channelList); console.log(this.channelList);
this.getTerminalPhotoList( this.getTerminalPhotoList(
this.channelList[0].channelid, this.channelList[0].channelid,
@ -197,12 +209,14 @@ export default {
if (this.lineTreeData[0].list[0].list.length > 0) { if (this.lineTreeData[0].list[0].list.length > 0) {
this.currentNodekey = this.lineTreeData[0].list[0].list[0].id; // this.currentNodekey = this.lineTreeData[0].list[0].list[0].id; //
console.log(this.currentNodekey); console.log(this.currentNodekey);
this.cmdid = this.lineTreeData[0].list[0].list[0].cmdid;
console.log(this.cmdid);
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.tree.setCurrentKey(this.currentNodekey); // this.$refs.tree.setCurrentKey(this.currentNodekey); //
console.log(this.currentNodekey); console.log(this.currentNodekey);
this.channelId = this.currentNodekey; this.id = this.currentNodekey;
console.log(this.channelId); console.log(this.id);
this.getChannelList(this.channelId); //id this.getChannelList(this.id); //id
}); });
} }
this.loadingBg = false; this.loadingBg = false;
@ -228,11 +242,11 @@ export default {
console.log(res); console.log(res);
this.channelList = res.data.list; this.channelList = res.data.list;
console.log(this.channelList); console.log(this.channelList);
this.getTerminalPhotoList( // this.getTerminalPhotoList(
this.channelList[0].channelid, // this.channelList[0].channelid,
this.dateValue, // this.dateValue,
this.channelList[0].termId // this.channelList[0].termId
); // id termid // ); // id termid
this.channelOption = []; this.channelOption = [];
this.channelList.forEach((item) => { this.channelList.forEach((item) => {
this.channelOption.push({ this.channelOption.push({
@ -299,20 +313,78 @@ export default {
}); });
}, },
// //
handleUpGrade() { // handleUpGrade() {
this.$refs.deviceupgrade_ref.display(); // this.$refs.deviceupgrade_ref.display();
// },
//gps
changeGPS(val) {
console.log(val);
setTermGPSJoggle({ gpsstatus: val, termid: this.channelId })
.then((res) => {
console.log(res);
if (val == 0) {
this.$message("关闭GPS");
} else {
this.$message({
message: "成功开启GPS",
type: "success",
});
}
})
.catch((err) => {
console.log(err); //
});
},
handleCommand(command) {
switch (command) {
case "open": //
this.changeGPS(1);
break;
case "close": //
this.changeGPS(0);
break;
}
}, },
//GPS //GPS
handleShowGPS() { handleShowGPS() {
this.$alert("这是一段内容", "标题名称", { getTermGPSJoggle({ termId: this.channelId })
confirmButtonText: "确定", .then((res) => {
callback: (action) => { console.log(res);
this.$message({ this.$alert(
type: "info", "<p><label>经度:</label><span>" +
message: `action: ${action}`, `${res.data.longitude}` +
}); "</span></p><p><label>纬度:</label><span>" +
}, `${res.data.latitude}` +
}); "</span></p><p><label>半径:</label><span>" +
`${res.data.radius}` +
"</span></p>",
"GPS位置",
{
dangerouslyUseHTMLString: true,
customClass: "messageGps",
}
);
})
.catch((err) => {
console.log(err); //
});
},
//
handleShowPic() {
console.log(this.channelId);
console.log(this.cmdid);
getLatestPhotoJoggle({
captureType: 0,
channel: this.channelId,
cmdid: this.cmdid,
preset: 255,
})
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err); //
});
}, },
// //
handlePanel() { handlePanel() {
@ -347,11 +419,6 @@ export default {
overflow: auto; overflow: auto;
padding: 16px 0px; padding: 16px 0px;
.el-tree { .el-tree {
.custom-tree-node {
.iconfont {
// color: #666;
}
}
.el-tree-node__content { .el-tree-node__content {
height: 40px; height: 40px;
font-size: 12px; font-size: 12px;
@ -419,4 +486,18 @@ export default {
} }
} }
} }
.messageGps {
.el-message-box__message {
p {
line-height: 32px;
font-size: 16px;
label {
margin-right: 4px;
}
span {
color: #333;
}
}
}
}
</style> </style>

@ -0,0 +1,17 @@
<template>
<div class="realTimeSearch">查询展示图片</div>
</template>
<script>
export default {
data() {
return {};
},
methods: {},
created() {},
};
</script>
<style lang="less">
.realTimeSearch {
}
</style>

@ -0,0 +1,502 @@
<template>
<div class="stritlBox">
<div class="stritl_left">
<div class="strLeftTop">
<h3>{{ numberUnits.name }}</h3>
<bar
v-if="flag.baizhang"
:legendData="unitXData"
:seriesData="unitYData"
:boxStyle="numberUnits.boxStyle"
></bar>
</div>
<div class="strLeftMid">
<h3>{{ hazardClass.name }}</h3>
<pie
v-if="flag.baizhang"
:pieData="hazardPieData"
:boxStyle="hazardClass.boxStyle"
></pie>
</div>
<div class="strLeftBottom">
<h3>{{ monitLine.name }}</h3>
<bar
v-if="flag.baizhang"
:legendData="lineXData"
:seriesData="lineYData"
:boxStyle="monitLine.boxStyle"
></bar>
</div>
</div>
<div class="stritl_center">
<div class="strCenterTop">
<mapChart></mapChart>
</div>
<div class="strCenterbottom">
<div class="bottomL">
<h3>{{ hazardType.name }}</h3>
<horizontalBar
:legendData="hazardTypeXData"
:seriesData="hazardTypeYData"
:boxStyle="hazardType.boxStyle"
></horizontalBar>
</div>
<div class="bottomM">
<h3>{{ deviceInfo.name }}</h3>
<div class="infoBox">
<p>
<span>在运数</span>
<span>{{ infoData.deviceCount }}</span>
</p>
<p>
<span>在线数</span>
<span>{{ infoData.hasPhotoCount }}</span>
</p>
<p>
<span>杆塔覆盖率</span>
<span>{{ infoData.deviceCoverage }}%</span>
</p>
<p>
<span>在线率</span>
<span>{{ infoData.hasPhotoRate }}%</span>
</p>
</div>
</div>
<div class="bottomR">
<h3>{{ deviceOnline.name }}</h3>
<pie
:pieData="deviceOnline.onlineData"
:boxStyle="deviceOnline.boxStyle"
></pie>
</div>
</div>
</div>
<div class="stritl_right">
<div class="strRightTop">
<h3>线路分布(总计5)</h3>
<div class="tableBox">
<el-table :data="lineAllData" style="width: 100%">
<el-table-column
prop="voltageLevelStr"
label="电压等级"
align="center"
>
</el-table-column>
<el-table-column prop="lineCount" label="线路数" align="center">
</el-table-column>
<el-table-column prop="towerCount" label="安装数" align="center">
</el-table-column>
<el-table-column
prop="deviceCoverage"
label="安装覆盖率"
align="center"
>
</el-table-column>
</el-table>
</div>
</div>
<!-- <div class="strRightMid">5</div> -->
<div class="strRightBottom">
<h3>{{ patrolOpinions.name }}</h3>
<div class="suggest">
<p class="attention"><span>注意</span>{{ patrolOpinions.month }}</p>
<p class="info">
<span>{{ patrolOpinions.info1 }}</span>
<span>{{ patrolOpinions.info2 }}</span>
</p>
</div>
<h4>往年同期隐患比例分布图</h4>
<radar
:radarName="radarName"
:radarValue="radarValue"
:boxStyle="patrolOpinions.boxStyle"
:radarTitle="radarTitle"
></radar>
</div>
</div>
</div>
</template>
<script>
import bar from "./chartFiles/bar";
import horizontalBar from "./chartFiles/horizontalBar";
import pie from "./chartFiles/pie";
import radar from "./chartFiles/radar";
import mapChart from "./chartFiles/mapChart";
import {
getLineDataByVoltage,
getCapturePointDataByDanger,
getHostDeviceDataByVoltage,
getPhotoAlarmDataByAlarmType,
getCompanyDeviceInfo,
getByName,
getLastYearAlarmReasons,
} from "@/utils/api/index";
export default {
data() {
return {
name: localStorage.getItem("ms_username"),
flag: {
baizhang: false, //
},
//
unitAllData: [],
unitXData: [],
unitYData: [],
numberUnits: {
name: "装置数量统计",
boxStyle: {
width: "100%",
height: "200px",
},
},
//线
lineAllData: [],
lineXData: [],
lineYData: [],
monitLine: {
name: "监控路线统计",
boxStyle: {
width: "100%",
height: "200px",
},
},
//
hazardData: [],
hazardPieData: [],
hazardClass: {
name: "隐患分类统计",
boxStyle: {
width: "100%",
height: "200px",
},
},
//
hazardTypeData: [],
hazardTypeXData: [],
hazardTypeYData: [],
hazardType: {
name: "隐患类型统计",
boxStyle: {
width: "100%",
height: "160px",
},
},
//
infoData: [],
deviceInfo: {
name: "装置信息统计",
infoData: [
{ value: 24, name: "在运数" },
{ value: 10, name: "在线数" },
{ value: "92.31%", name: "杆塔覆盖率" },
{ value: "41.67%", name: "在线率" },
],
},
deviceOnline: {
name: "装置在线统计",
onlineData: [
{ value: 55, name: "离线" },
{ value: 45, name: "在线" },
],
boxStyle: {
width: "100%",
height: "160px",
},
},
//
patrolData: [],
radarName: [],
radarValue: [],
radarTitle: "隐患比例分布图",
patrolOpinions: {
name: "巡查意见",
month: "三月份",
info1: "1.鸟类活动开展频繁,需注意鸟类筑巢,大型鸟类驻留。",
info2:
"2.大风天气较多的季节,要注意对放风筝行为的监控,同时加强巡视对导线悬挂异物的观察。",
boxStyle: {
width: "100%",
height: "160px",
},
},
};
},
components: {
bar,
horizontalBar,
pie,
radar,
mapChart,
},
computed: {
role() {
return this.name === "admin" ? "超级管理员" : "普通用户";
},
},
methods: {},
created() {
//
getHostDeviceDataByVoltage({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
}).then((res) => {
this.unitAllData = res.data.data;
for (var i = 0; i < this.unitAllData.length; i++) {
this.unitXData.push(this.unitAllData[i].name);
this.unitYData.push(this.unitAllData[i].value);
}
this.flag.baizhang = true;
});
//
getCompanyDeviceInfo({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
}).then((res) => {
this.infoData = res.data;
});
//线
getLineDataByVoltage({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
}).then((res) => {
this.lineAllData = res.data;
console.log(this.lineAllData);
for (var i = 0; i < this.lineAllData.length; i++) {
this.lineXData.push(this.lineAllData[i].voltageLevelStr);
this.lineYData.push(this.lineAllData[i].lineCount);
}
this.flag.baizhang = true;
});
//
getCapturePointDataByDanger({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
}).then((res) => {
this.hazardData = res.data;
// let name1 = this.hazardData.nameList;
// let value1 = this.hazardData.valueList;
this.hazardPieData = res.data.list;
console.log(this.hazardPieData);
this.flag.baizhang = true;
});
//
getPhotoAlarmDataByAlarmType({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
}).then((res) => {
this.hazardTypeData = res.data.dataList;
for (var i = 0; i < this.hazardTypeData.length; i++) {
this.hazardTypeXData.push(this.hazardTypeData[i].name);
this.hazardTypeYData.push(this.hazardTypeData[i].acount);
}
this.flag.baizhang = true;
});
//
getByName({
name: "三月",
}).then((res) => {
console.log(res);
});
//
getLastYearAlarmReasons({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
month: "04",
}).then((res) => {
console.log(res);
this.patrolData = res.data;
console.log(this.patrolData);
let obj = {};
this.patrolData.forEach((item) => {
if (obj.hasOwnProperty(item.alarmInfo)) {
obj[item.alarmInfo] += item.num;
} else {
obj[item.alarmInfo] = item.num;
}
});
console.log(obj);
this.radarValue = Object.values(obj);
console.log(this.radarValue);
let max = Math.max(...this.radarValue);
//
console.log(max);
for (let i in obj) {
console.log(i);
this.radarName.push({
name: i,
max: max,
});
}
console.log(this.radarName);
});
},
};
</script>
<style lang="less">
.stritlBox {
width: 100%;
height: 100%;
display: flex;
.stritl_left,
.stritl_right {
width: 20%;
margin: 8px;
}
.stritl_left,
.stritl_right {
display: flex;
flex-direction: column;
justify-content: space-between;
.strLeftTop,
.strLeftMid,
.strLeftBottom {
height: 30%;
box-sizing: content-box;
box-shadow: @box-shadow-basic;
border: 1px solid @border-color-base;
background-color: @color-white;
border-radius: 4px;
padding: 8px;
h3 {
margin-bottom: 8px;
font-size: 15px;
}
}
.strRightTop,
.strRightBottom {
height: 46%;
box-sizing: content-box;
box-shadow: @box-shadow-basic;
border: 1px solid @border-color-base;
background-color: @color-white;
border-radius: 4px;
padding: 8px;
h3 {
margin-bottom: 8px;
font-size: 15px;
}
}
.strRightTop {
position: relative;
.tableBox {
position: absolute;
width: calc(100% - 16px);
.el-table .cell {
white-space: normal;
word-break: break-all;
}
.el-table th.el-table__cell > .cell {
min-width: 58px;
padding-left: 0px;
padding-right: 0px;
}
}
}
.strRightBottom {
h3 {
margin-bottom: 8px;
font-size: 15px;
}
.suggest {
.attention {
font-size: 14px;
margin-bottom: 8px;
span {
font-size: 14px;
color: @color-red;
}
}
.info {
display: flex;
flex-direction: column;
font-size: 14px;
line-height: 22px;
}
}
h4 {
margin-top: 8px;
margin-bottom: 8px;
}
}
}
.stritl_center {
flex: 1;
margin: 10px;
display: flex;
flex-direction: column;
.strCenterTop {
flex: 1;
box-sizing: content-box;
box-shadow: @box-shadow-basic;
border: 1px solid @border-color-base;
background-color: @color-white;
border-radius: 4px;
//padding: 8px;
}
.strCenterbottom {
margin-top: 24px;
height: 210px;
//border: 1px solid #000;
box-sizing: content-box;
display: flex;
justify-content: space-between;
.bottomL,
.bottomM,
.bottomR {
border: 1px solid #000;
box-sizing: content-box;
width: 30%;
box-shadow: @box-shadow-basic;
border: 1px solid @border-color-base;
background-color: @color-white;
border-radius: 4px;
padding: 8px;
h3 {
margin-bottom: 8px;
font-size: 15px;
}
}
.bottomM {
.infoBox {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
p {
width: 40%;
height: 68px;
background: #fcc;
text-align: center;
margin: 6px;
display: flex;
flex-direction: column;
justify-content: space-around;
span {
color: #333;
font-size: 14px;
&:last-child {
font-size: 20px;
margin-top: 5px;
font-weight: bold;
}
}
&:first-child {
background: url("../../assets/img/border-blue.png");
}
&:nth-child(2) {
background: url("../../assets/img/border-green.png");
}
&:nth-child(3) {
background: url("../../assets/img/border-yellow.png");
}
&:nth-child(4) {
background: url("../../assets/img/border-gray.png");
}
}
}
}
}
}
}
</style>

@ -1,502 +1,13 @@
<template> <template>
<div class="stritlBox"> <div class="stritlBox">首页</div>
<div class="stritl_left">
<div class="strLeftTop">
<h3>{{ numberUnits.name }}</h3>
<bar
v-if="flag.baizhang"
:legendData="unitXData"
:seriesData="unitYData"
:boxStyle="numberUnits.boxStyle"
></bar>
</div>
<div class="strLeftMid">
<h3>{{ hazardClass.name }}</h3>
<pie
v-if="flag.baizhang"
:pieData="hazardPieData"
:boxStyle="hazardClass.boxStyle"
></pie>
</div>
<div class="strLeftBottom">
<h3>{{ monitLine.name }}</h3>
<bar
v-if="flag.baizhang"
:legendData="lineXData"
:seriesData="lineYData"
:boxStyle="monitLine.boxStyle"
></bar>
</div>
</div>
<div class="stritl_center">
<div class="strCenterTop">
<mapChart></mapChart>
</div>
<div class="strCenterbottom">
<div class="bottomL">
<h3>{{ hazardType.name }}</h3>
<horizontalBar
:legendData="hazardTypeXData"
:seriesData="hazardTypeYData"
:boxStyle="hazardType.boxStyle"
></horizontalBar>
</div>
<div class="bottomM">
<h3>{{ deviceInfo.name }}</h3>
<div class="infoBox">
<p>
<span>在运数</span>
<span>{{ infoData.deviceCount }}</span>
</p>
<p>
<span>在线数</span>
<span>{{ infoData.hasPhotoCount }}</span>
</p>
<p>
<span>杆塔覆盖率</span>
<span>{{ infoData.deviceCoverage }}%</span>
</p>
<p>
<span>在线率</span>
<span>{{ infoData.hasPhotoRate }}%</span>
</p>
</div>
</div>
<div class="bottomR">
<h3>{{ deviceOnline.name }}</h3>
<pie
:pieData="deviceOnline.onlineData"
:boxStyle="deviceOnline.boxStyle"
></pie>
</div>
</div>
</div>
<div class="stritl_right">
<div class="strRightTop">
<h3>线路分布(总计5)</h3>
<div class="tableBox">
<el-table :data="lineAllData" style="width: 100%">
<el-table-column
prop="voltageLevelStr"
label="电压等级"
align="center"
>
</el-table-column>
<el-table-column prop="lineCount" label="线路数" align="center">
</el-table-column>
<el-table-column prop="towerCount" label="安装数" align="center">
</el-table-column>
<el-table-column
prop="deviceCoverage"
label="安装覆盖率"
align="center"
>
</el-table-column>
</el-table>
</div>
</div>
<!-- <div class="strRightMid">5</div> -->
<div class="strRightBottom">
<h3>{{ patrolOpinions.name }}</h3>
<div class="suggest">
<p class="attention"><span>注意</span>{{ patrolOpinions.month }}</p>
<p class="info">
<span>{{ patrolOpinions.info1 }}</span>
<span>{{ patrolOpinions.info2 }}</span>
</p>
</div>
<h4>往年同期隐患比例分布图</h4>
<radar
:radarName="radarName"
:radarValue="radarValue"
:boxStyle="patrolOpinions.boxStyle"
:radarTitle="radarTitle"
></radar>
</div>
</div>
</div>
</template> </template>
<script> <script></script>
import bar from "./chartFiles/bar";
import horizontalBar from "./chartFiles/horizontalBar";
import pie from "./chartFiles/pie";
import radar from "./chartFiles/radar";
import mapChart from "./chartFiles/mapChart";
import {
getLineDataByVoltage,
getCapturePointDataByDanger,
getHostDeviceDataByVoltage,
getPhotoAlarmDataByAlarmType,
getCompanyDeviceInfo,
getByName,
getLastYearAlarmReasons,
} from "@/utils/api/index";
export default {
data() {
return {
name: localStorage.getItem("ms_username"),
flag: {
baizhang: false, //
},
//
unitAllData: [],
unitXData: [],
unitYData: [],
numberUnits: {
name: "装置数量统计",
boxStyle: {
width: "100%",
height: "200px",
},
},
//线
lineAllData: [],
lineXData: [],
lineYData: [],
monitLine: {
name: "监控路线统计",
boxStyle: {
width: "100%",
height: "200px",
},
},
//
hazardData: [],
hazardPieData: [],
hazardClass: {
name: "隐患分类统计",
boxStyle: {
width: "100%",
height: "200px",
},
},
//
hazardTypeData: [],
hazardTypeXData: [],
hazardTypeYData: [],
hazardType: {
name: "隐患类型统计",
boxStyle: {
width: "100%",
height: "160px",
},
},
//
infoData: [],
deviceInfo: {
name: "装置信息统计",
infoData: [
{ value: 24, name: "在运数" },
{ value: 10, name: "在线数" },
{ value: "92.31%", name: "杆塔覆盖率" },
{ value: "41.67%", name: "在线率" },
],
},
deviceOnline: {
name: "装置在线统计",
onlineData: [
{ value: 55, name: "离线" },
{ value: 45, name: "在线" },
],
boxStyle: {
width: "100%",
height: "160px",
},
},
//
patrolData: [],
radarName: [],
radarValue: [],
radarTitle: "隐患比例分布图",
patrolOpinions: {
name: "巡查意见",
month: "三月份",
info1: "1.鸟类活动开展频繁,需注意鸟类筑巢,大型鸟类驻留。",
info2:
"2.大风天气较多的季节,要注意对放风筝行为的监控,同时加强巡视对导线悬挂异物的观察。",
boxStyle: {
width: "100%",
height: "160px",
},
},
};
},
components: {
bar,
horizontalBar,
pie,
radar,
mapChart,
},
computed: {
role() {
return this.name === "admin" ? "超级管理员" : "普通用户";
},
},
methods: {},
created() {
//
getHostDeviceDataByVoltage({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
}).then((res) => {
this.unitAllData = res.data.data;
for (var i = 0; i < this.unitAllData.length; i++) {
this.unitXData.push(this.unitAllData[i].name);
this.unitYData.push(this.unitAllData[i].value);
}
this.flag.baizhang = true;
});
//
getCompanyDeviceInfo({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
}).then((res) => {
this.infoData = res.data;
});
//线
getLineDataByVoltage({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
}).then((res) => {
this.lineAllData = res.data;
console.log(this.lineAllData);
for (var i = 0; i < this.lineAllData.length; i++) {
this.lineXData.push(this.lineAllData[i].voltageLevelStr);
this.lineYData.push(this.lineAllData[i].lineCount);
}
this.flag.baizhang = true;
});
//
getCapturePointDataByDanger({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
}).then((res) => {
this.hazardData = res.data;
// let name1 = this.hazardData.nameList;
// let value1 = this.hazardData.valueList;
this.hazardPieData = res.data.list;
console.log(this.hazardPieData);
this.flag.baizhang = true;
});
//
getPhotoAlarmDataByAlarmType({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
}).then((res) => {
this.hazardTypeData = res.data.dataList;
for (var i = 0; i < this.hazardTypeData.length; i++) {
this.hazardTypeXData.push(this.hazardTypeData[i].name);
this.hazardTypeYData.push(this.hazardTypeData[i].acount);
}
this.flag.baizhang = true;
});
//
getByName({
name: "三月",
}).then((res) => {
console.log(res);
});
//
getLastYearAlarmReasons({
companyId: "f7d966d1-f3d1-4802-946d-ad93e1ee1b9b",
month: "04",
}).then((res) => {
console.log(res);
this.patrolData = res.data;
console.log(this.patrolData);
let obj = {};
this.patrolData.forEach((item) => {
if (obj.hasOwnProperty(item.alarmInfo)) {
obj[item.alarmInfo] += item.num;
} else {
obj[item.alarmInfo] = item.num;
}
});
console.log(obj);
this.radarValue = Object.values(obj);
console.log(this.radarValue);
let max = Math.max(...this.radarValue);
//
console.log(max);
for (let i in obj) {
console.log(i);
this.radarName.push({
name: i,
max: max,
});
}
console.log(this.radarName);
});
},
};
</script>
<style lang="less"> <style lang="less">
.stritlBox { .stritlBox {
width: 100%; width: 100%;
height: 100%; height: 100%;
display: flex; display: flex;
.stritl_left,
.stritl_right {
width: 20%;
margin: 8px;
}
.stritl_left,
.stritl_right {
display: flex;
flex-direction: column;
justify-content: space-between;
.strLeftTop,
.strLeftMid,
.strLeftBottom {
height: 30%;
box-sizing: content-box;
box-shadow: @box-shadow-basic;
border: 1px solid @border-color-base;
background-color: @color-white;
border-radius: 4px;
padding: 8px;
h3 {
margin-bottom: 8px;
font-size: 15px;
}
}
.strRightTop,
.strRightBottom {
height: 46%;
box-sizing: content-box;
box-shadow: @box-shadow-basic;
border: 1px solid @border-color-base;
background-color: @color-white;
border-radius: 4px;
padding: 8px;
h3 {
margin-bottom: 8px;
font-size: 15px;
}
}
.strRightTop {
position: relative;
.tableBox {
position: absolute;
width: calc(100% - 16px);
.el-table .cell {
white-space: normal;
word-break: break-all;
}
.el-table th.el-table__cell > .cell {
min-width: 58px;
padding-left: 0px;
padding-right: 0px;
}
}
}
.strRightBottom {
h3 {
margin-bottom: 8px;
font-size: 15px;
}
.suggest {
.attention {
font-size: 14px;
margin-bottom: 8px;
span {
font-size: 14px;
color: @color-red;
}
}
.info {
display: flex;
flex-direction: column;
font-size: 14px;
line-height: 22px;
}
}
h4 {
margin-top: 8px;
margin-bottom: 8px;
}
}
}
.stritl_center {
flex: 1;
margin: 10px;
display: flex;
flex-direction: column;
.strCenterTop {
flex: 1;
box-sizing: content-box;
box-shadow: @box-shadow-basic;
border: 1px solid @border-color-base;
background-color: @color-white;
border-radius: 4px;
//padding: 8px;
}
.strCenterbottom {
margin-top: 24px;
height: 210px;
//border: 1px solid #000;
box-sizing: content-box;
display: flex;
justify-content: space-between;
.bottomL,
.bottomM,
.bottomR {
border: 1px solid #000;
box-sizing: content-box;
width: 30%;
box-shadow: @box-shadow-basic;
border: 1px solid @border-color-base;
background-color: @color-white;
border-radius: 4px;
padding: 8px;
h3 {
margin-bottom: 8px;
font-size: 15px;
}
}
.bottomM {
.infoBox {
display: flex;
flex-wrap: wrap;
justify-content: space-around;
p {
width: 40%;
height: 68px;
background: #fcc;
text-align: center;
margin: 6px;
display: flex;
flex-direction: column;
justify-content: space-around;
span {
color: #333;
font-size: 14px;
&:last-child {
font-size: 20px;
margin-top: 5px;
font-weight: bold;
}
}
&:first-child {
background: url("../../assets/img/border-blue.png");
}
&:nth-child(2) {
background: url("../../assets/img/border-green.png");
}
&:nth-child(3) {
background: url("../../assets/img/border-yellow.png");
}
&:nth-child(4) {
background: url("../../assets/img/border-gray.png");
}
}
}
}
}
}
} }
</style> </style>

@ -0,0 +1,13 @@
<template>
<div class="userManagement">用户管理</div>
</template>
<script></script>
<style lang="less">
.userManagement {
width: 100%;
height: 100%;
display: flex;
}
</style>
Loading…
Cancel
Save