ds1.0
fanluyan 2 years ago
commit 9b6e9806a9

11953
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -12,6 +12,7 @@
"core-js": "^3.8.3", "core-js": "^3.8.3",
"echarts": "^5.4.2", "echarts": "^5.4.2",
"element-ui": "^2.15.13", "element-ui": "^2.15.13",
"jquery": "^3.7.0",
"moment": "^2.29.4", "moment": "^2.29.4",
"update-element-ui-theme": "^1.0.0", "update-element-ui-theme": "^1.0.0",
"v-viewer": "^1.6.4", "v-viewer": "^1.6.4",

@ -55,7 +55,7 @@ export default {
items: [ items: [
// { // {
// icon: "el-icon-s-home", // icon: "el-icon-s-home",
// index: "stritl", // index: "/videoHistory",
// title: "", // title: "",
// }, // },
{ {

@ -11,9 +11,9 @@ Vue.use(ElementUI, {
size: "small", size: "small",
}); });
// 引入Echarts //引入Echarts;
// import * as echarts from "echarts"; import * as echarts from "echarts";
// Vue.prototype.$echarts = echarts; Vue.prototype.$echarts = echarts;
// // 引入 vue-awesome-swiper // // 引入 vue-awesome-swiper
// import VueAwesomeSwiper from "vue-awesome-swiper"; // import VueAwesomeSwiper from "vue-awesome-swiper";
@ -43,7 +43,9 @@ Vue.use(Viewer);
Viewer.setDefaults({ Viewer.setDefaults({
zIndexInline: 9999, zIndexInline: 9999,
}); });
//使用jq
import jquery from "jquery";
Vue.prototype.$ = jquery;
//使用钩子函数对路由进行权限跳转 //使用钩子函数对路由进行权限跳转
router.beforeEach((to, from, next) => { router.beforeEach((to, from, next) => {
document.title = `${to.meta.title} | 视频监控可视化平台`; document.title = `${to.meta.title} | 视频监控可视化平台`;

@ -154,14 +154,14 @@ const routes = [
// ), // ),
// meta: { title: "监控视频", icon: "el-icon-video-camera" }, // meta: { title: "监控视频", icon: "el-icon-video-camera" },
// }, // },
// { {
// path: "/videoHistory", path: "/videoHistory",
// component: () => component: () =>
// import( import(
// /* webpackChunkName: "tabs" */ "../views/videoMonitor/videoHistory.vue" /* webpackChunkName: "tabs" */ "../views/videoMonitor/videoHistory.vue"
// ), ),
// meta: { title: "视频回放", icon: "el-icon-video-camera" }, meta: { title: "视频回放" },
// }, },
// { // {
// path: "/groupInformation", // path: "/groupInformation",

@ -91,5 +91,12 @@ export default {
height: 648px; height: 648px;
} }
} }
.el-carousel__arrow {
background: rgba(0, 0, 0, 0.5);
height: 40px;
width: 40px;
color: #169e8c;
font-size: 22px;
}
} }
</style> </style>

@ -74,13 +74,25 @@
></el-option> ></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item>
<el-input
v-model="formdata.search"
placeholder="请输入线路/杆塔/设备名称"
clearable
></el-input>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" @click="onSubmit"></el-button> <el-button type="primary" @click="onSubmit"></el-button>
</el-form-item> </el-form-item>
<el-form-item>
<el-button type="primary" @click="handleListRow">{{
tableShow ? "图片列表" : "表格列表"
}}</el-button>
</el-form-item>
</el-form> </el-form>
</div> </div>
<div class="alarmContain" v-loading="loading"> <div class="alarmContain" v-loading="loading" v-if="tableShow">
<div class="alarmTable"> <div class="alarmTable">
<el-table <el-table
ref="multipleTable" ref="multipleTable"
@ -94,6 +106,9 @@
@row-click="handleRowClick" @row-click="handleRowClick"
highlight-current-row highlight-current-row
> >
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column min-width="45" label="序号"> <el-table-column min-width="45" label="序号">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span> <span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span>
@ -192,6 +207,7 @@
class="picshow" class="picshow"
v-if="selectRow.path !== '' && tableData.length !== 0" v-if="selectRow.path !== '' && tableData.length !== 0"
> >
<!-- v-viewer="OptionssalseImg" -->
<!-- <div <!-- <div
class="nosee" class="nosee"
:style="'backgroundImage:url(' + photoPic + '!1366x768)'" :style="'backgroundImage:url(' + photoPic + '!1366x768)'"
@ -235,20 +251,87 @@
</div> </div>
</div> </div>
</div> </div>
<div class="pictureBox" v-else v-loading="loading">
<div class="piclist" v-if="tableData.length !== 0">
<el-card
class="box-card imgList"
v-for="(item, index) in tableData"
:key="index"
:class="current === index ? 'bgColor' : ''"
>
<div class="bigpic">
<div class="picshow" @click="handlePicAlarm(item, index)">
<img :src="item.path + '!1366x768'" ref="picJpg" />
<!-- <canvas
id="myCanvas"
class="myCanvas"
:ref="'myCanvas' + index"
></canvas> -->
</div>
<div class="caption">
<p class="infoTop">
{{ item.lineName }} /
{{
item.displayName !== null && item.displayName !== ""
? item.displayName
: item.cmdid
}}
/
{{
item.alias !== null && item.alias !== ""
? item.alias
: item.channnelName
}}
/ <span class="alarmInfo">({{ item.enname }})</span>
</p>
<p class="infoBottom">
告警时间{{
$moment(item.alarmTime).format("YYYY-MM-DD HH:mm:ss")
}}
<el-button
type="primary"
:loading="btnpicloading"
@click.stop="handlePicList(item)"
>主动拍照</el-button
>
<el-button type="primary" @click.stop="handlePicHistory(item)"
>历史图片</el-button
>
</p>
</div>
</div>
</el-card>
</div>
<div class="piclist" v-else>
<el-empty description="暂无数据"></el-empty>
</div>
<div class="pageNation">
<el-pagination
@current-change="handleCurrentChange"
@size-change="handleSizeChange"
:current-page="page"
:page-size="pageSize"
layout="sizes, prev, pager, next, jumper,total"
:total="total"
>
</el-pagination>
</div>
</div>
</div> </div>
<!-- 点击出现大图 --> <!-- 点击出现大图 -->
<div <div v-if="showBigpic" class="showPic" v-loading="canvasloading">
v-if="showBigpic" <div
class="showPic" class="picboxI"
@click="closePic" @mousewheel.prevent="rollImg"
v-loading="canvasloading" :style="{ transform: 'scale(' + zoomD + ')' }"
> @mousedown="move"
<div class="picboxI"> >
<img @load="imgOnload" class="maskPic" :src="bigPhotoPic" /> <img @load="imgOnload" class="maskPic img" :src="bigPhotoPic" ref="" />
<canvas id="myCanvas" class="myCanvas" ref="myCanvas2"></canvas> <canvas id="myCanvas" class="myCanvas" ref="myCanvasbig"></canvas>
</div> </div>
<div class="viewClose"> <div class="viewClose" @click="closePic">
<i @click="closePic" class="el-icon-close"></i> <i class="el-icon-close"></i>
</div> </div>
</div> </div>
<historyimg ref="historyimg_ref"></historyimg> <historyimg ref="historyimg_ref"></historyimg>
@ -291,6 +374,7 @@ export default {
lineId: -1, lineId: -1,
towerId: -1, towerId: -1,
label: -1, label: -1,
search: "",
// timeVal: "", // timeVal: "",
}, },
photoPic: "", photoPic: "",
@ -310,6 +394,19 @@ export default {
selectRow: {}, selectRow: {},
alarmLoading: false, alarmLoading: false,
canvasloading: false, canvasloading: false,
tableShow: true, //
zoomD: 1,
canvansdata: "",
current: 0,
};
},
created() {
var that = this;
document.onkeydown = function (e) {
var key = window.event.keyCode;
if (key === 13) {
that.onSubmit(); //
}
}; };
}, },
mounted() { mounted() {
@ -317,6 +414,10 @@ export default {
// new Date(new Date().toLocaleDateString()).getTime(), // new Date(new Date().toLocaleDateString()).getTime(),
// new Date().getTime(), // new Date().getTime(),
// ]); // ]);
// $("#elementToZoomOn").smartZoom({
// maxScale: 2,
// });
this.$set( this.$set(
this.formdata, this.formdata,
"starttime", "starttime",
@ -327,8 +428,66 @@ export default {
this.getTableList(); this.getTableList();
}, },
methods: { methods: {
//demo
move(e) {
console.log(e);
e.preventDefault();
//
var personBox = document.querySelector(".picboxI");
var img = document.querySelector(".img");
var x = e.pageX - img.offsetLeft;
var y = e.pageY - img.offsetTop;
//
personBox.addEventListener("mousemove", move);
function move(e) {
personBox.style.left = e.pageX - x + "px";
personBox.style.top = e.pageY - y + "px";
}
//
img.addEventListener("mouseup", function () {
personBox.removeEventListener("mousemove", move);
});
//
personBox.addEventListener("mouseout", function () {
personBox.removeEventListener("mousemove", move);
});
},
//
rollImg(e) {
let direction = e.deltaY > 0 ? "down" : "up";
if (direction === "up") {
//
this.large();
} else {
//
this.Small();
}
},
//
large() {
this.$nextTick(() => {
if (this.zoomD < 6) {
this.zoomD += 0.1;
}
document.querySelector(
".picboxI"
).style.transform = `matrix(${this.zoomD}, 0, 0,${this.zoomD}, 0, 0)`;
});
},
//
Small() {
this.$nextTick(() => {
if (this.zoomD > 0.3) {
this.zoomD -= 0.1;
}
document.querySelector(
".picboxI"
).style.transform = `matrix(${this.zoomD}, 0, 0, ${this.zoomD}, 0, 0)`;
});
},
handleBigPicbox(val) { handleBigPicbox(val) {
this.canvasloading = true; this.canvasloading = true;
this.canvansdata = val;
if (val.path !== "" && this.tableData.length !== 0) { if (val.path !== "" && this.tableData.length !== 0) {
console.log(val); console.log(val);
this.bigPhotoPic = val.path; this.bigPhotoPic = val.path;
@ -340,6 +499,7 @@ export default {
}, },
closePic() { closePic() {
this.showBigpic = false; this.showBigpic = false;
this.zoomD = 1;
}, },
// //
getSearchdy() { getSearchdy() {
@ -400,7 +560,6 @@ export default {
this.photoPic = res.data.list[0].path; this.photoPic = res.data.list[0].path;
this.selectRow = res.data.list[0]; this.selectRow = res.data.list[0];
console.log(this.selectRow); console.log(this.selectRow);
// ref myTableref
this.$refs.multipleTable.setCurrentRow(this.selectRow); this.$refs.multipleTable.setCurrentRow(this.selectRow);
this.handleRowClick(this.selectRow); this.handleRowClick(this.selectRow);
}) })
@ -426,11 +585,13 @@ export default {
// //
handleCurrentChange(val) { handleCurrentChange(val) {
this.page = val; this.page = val;
this.tableData = [];
this.getTableList(); this.getTableList();
}, },
// //
handleSizeChange(val) { handleSizeChange(val) {
this.pageSize = val; this.pageSize = val;
this.tableData = [];
this.getTableList(); this.getTableList();
}, },
// //
@ -454,23 +615,124 @@ export default {
left = data.y * scaleY, left = data.y * scaleY,
width = data.width * scaleX, width = data.width * scaleX,
height = data.height * scaleY; height = data.height * scaleY;
console.log(top, left, width, height);
// this.ctx.strokeStyle = "red"; //线 // this.ctx.strokeStyle = "red"; //线
this.ctx.strokeRect(top, left, width, height); // this.ctx.strokeRect(top, left, width, height); //
//this.ctx.strokeRect(data.x, data.y, data.width, data.height); //this.ctx.strokeRect(data.x, data.y, data.width, data.height);
this.ctx.font = "24px normal"; this.ctx.font = "16px normal";
this.ctx.fillStyle = "#ff0000"; this.ctx.fillStyle = "#ff0000";
this.ctx.fillText(this.textInfo, top, left + 24); console.log(top, left, width, height);
console.log(this.canvas.width, this.canvas.height);
//
if (left > 32) {
this.ctx.fillText(this.textInfo, top, left - 4);
} else if (this.canvas.height - left + height > 32) {
this.ctx.fillText(this.textInfo, top, height - 4);
}
this.ctx.closePath(); this.ctx.closePath();
this.ctx.stroke(); this.ctx.stroke();
}, },
// //
drawline2(data) { drawline2(data) {
this.canvas = this.$refs.myCanvas2; console.log(data);
console.log(this.canvas);
this.canvas = this.$refs.myCanvasbig;
this.imgpic = this.$refs.picJpg; this.imgpic = this.$refs.picJpg;
this.textInfo = data.enname; this.textInfo = data.enname;
this.canvas.width = this.imgpic.offsetWidth; // this.canvas.width = this.imgpic.offsetWidth; //
this.canvas.height = this.imgpic.offsetHeight; // this.canvas.height = this.imgpic.offsetHeight; //
console.log(this.canvas.width, this.canvas.height);
this.ctx = this.canvas.getContext("2d");
this.ctx.beginPath();
//线
this.ctx.strokeStyle = "#ff0000";
// 线
this.ctx.lineWidth = 1;
//
var scaleX = this.canvas.width / data.photoWidth, //this.iw
scaleY = this.canvas.height / data.photoHeight; //this.ih
console.log(scaleX, scaleY);
var top = data.x * scaleX,
left = data.y * scaleY,
width = data.width * scaleX,
height = data.height * scaleY;
console.log(top, left, width, height);
// this.ctx.strokeStyle = "red"; //线
this.ctx.strokeRect(top, left, width, height); //
//this.ctx.strokeRect(data.x, data.y, data.width, data.height);
this.ctx.font = "12px normal";
this.ctx.fillStyle = "#ff0000";
//this.ctx.fillText(this.textInfo, top, left + 24);
//
if (left > 32) {
this.ctx.fillText(this.textInfo, top, left - 4);
} else if (this.canvas.height - left + height > 32) {
this.ctx.fillText(this.textInfo, top, height - 4);
}
this.ctx.closePath();
this.ctx.stroke();
},
//
drawlineListAll(val) {
for (let i = 0; i < val.length; i++) {
console.log(i);
console.log(this.$refs.myCanvas);
console.log(this.$refs.picJpg);
this.canvas = this.$refs.myCanvas;
this.imgpic = this.$refs.picJpg;
this.textInfo = val[i].enname;
console.log(this.textInfo);
console.log(this.imgpic.offsetWidth);
console.log(this.canvas);
this.canvas.width = this.imgpic.offsetWidth; //
this.canvas.height = this.imgpic.offsetHeight; //
console.log(this.canvas.width, this.canvas.height);
this.ctx = this.canvas.getContext("2d");
this.ctx.beginPath();
//线
this.ctx.strokeStyle = "#ff0000";
// 线
this.ctx.lineWidth = 1;
//
var scaleX = this.canvas.width / val[i].photoWidth, //this.iw
scaleY = this.canvas.height / val[i].photoHeight; //this.ih
console.log(scaleX, scaleY);
var top = val[i].x * scaleX,
left = val[i].y * scaleY,
width = val[i].width * scaleX,
height = val[i].height * scaleY;
console.log(top, left, width, height);
// this.ctx.strokeStyle = "red"; //线
this.ctx.strokeRect(top, left, width, height); //
//this.ctx.strokeRect(val[i].x, val[i].y, val[i].width, val[i].height);
this.ctx.font = "16px normal";
this.ctx.fillStyle = "#ff0000";
//this.ctx.fillText(this.textInfo, top, left + 24);
//
if (left > 32) {
this.ctx.fillText(this.textInfo, top, left - 4);
} else if (this.canvas.height - left + height > 32) {
this.ctx.fillText(this.textInfo, top, height - 4);
}
this.ctx.closePath();
this.ctx.stroke();
}
},
//
drawlineList(data, index) {
console.log(data);
console.log(this.$refs.myCanvasbig);
console.log(this.$refs.picJpg);
console.log("picJpg" + index);
this.canvas = this.$refs.myCanvasbig;
this.imgpic = this.$refs.picJpg;
this.textInfo = data.enname;
this.canvas.width = this.imgpic[index].offsetWidth; //
this.canvas.height = this.imgpic[index].offsetHeight; //
console.log(this.canvas.width, this.canvas.height);
this.ctx = this.canvas.getContext("2d"); this.ctx = this.canvas.getContext("2d");
this.ctx.beginPath(); this.ctx.beginPath();
//线 //线
@ -490,9 +752,15 @@ export default {
// this.ctx.strokeStyle = "red"; //线 // this.ctx.strokeStyle = "red"; //线
this.ctx.strokeRect(top, left, width, height); // this.ctx.strokeRect(top, left, width, height); //
//this.ctx.strokeRect(data.x, data.y, data.width, data.height); //this.ctx.strokeRect(data.x, data.y, data.width, data.height);
this.ctx.font = "24px normal"; this.ctx.font = "12px normal";
this.ctx.fillStyle = "#ff0000"; this.ctx.fillStyle = "#ff0000";
this.ctx.fillText(this.textInfo, top, left + 24); //this.ctx.fillText(this.textInfo, top, left + 24);
//
if (left > 32) {
this.ctx.fillText(this.textInfo, top, left - 4);
} else if (this.canvas.height - left + height > 32) {
this.ctx.fillText(this.textInfo, top, height - 4);
}
this.ctx.closePath(); this.ctx.closePath();
this.ctx.stroke(); this.ctx.stroke();
}, },
@ -583,6 +851,42 @@ export default {
this.$refs.historyimg_ref.display(); this.$refs.historyimg_ref.display();
this.$refs.historyimg_ref.getdataform(this.selectRow); this.$refs.historyimg_ref.getdataform(this.selectRow);
}, },
//
handleListRow() {
this.tableShow = !this.tableShow;
this.zoomD = 1;
if (!this.tableShow) {
this.drawlineListAll(this.tableData);
}
},
//
handlePicList(val) {
console.log(val);
this.selectRow = val;
this.handleCommandpic();
},
handlePicHistory(val) {
console.log(val);
this.selectRow = val;
this.handleHistory();
},
handlePicAlarm(val, index) {
console.log(val, index);
this.current = index;
this.canvansdata = val;
this.canvasloading = true;
if (val.path !== "" && this.tableData.length !== 0) {
console.log(val);
this.bigPhotoPic = val.path;
this.showBigpic = true;
this.$nextTick(() => {
console.log("huatu");
this.drawlineList(val, index);
});
}
},
dateFormat(row, column) { dateFormat(row, column) {
var date = row[column.property]; var date = row[column.property];
if (date == undefined) { if (date == undefined) {
@ -617,8 +921,8 @@ export default {
cursor: pointer; cursor: pointer;
.picboxI { .picboxI {
position: relative; position: relative;
max-width: 1366px; width: 1366px;
max-height: 768px; height: 768px;
margin: auto; margin: auto;
animation-name: scaleDraw; animation-name: scaleDraw;
/*关键帧名称*/ /*关键帧名称*/
@ -627,11 +931,15 @@ export default {
animation-iteration-count: 1; animation-iteration-count: 1;
/*动画播放的次数*/ /*动画播放的次数*/
animation-duration: 0.65s; animation-duration: 0.65s;
display: flex;
align-items: center;
justify-content: center;
img { img {
max-width: 1366px; max-width: 1366px;
max-height: 768px; max-height: 768px;
margin: auto; margin: auto;
position: absolute;
cursor: grab;
} }
.myCanvas { .myCanvas {
position: absolute; position: absolute;
@ -640,6 +948,7 @@ export default {
width: 100%; width: 100%;
height: 100%; height: 100%;
cursor: pointer; cursor: pointer;
pointer-events: none;
} }
} }
.viewClose { .viewClose {
@ -697,7 +1006,7 @@ export default {
} }
.alarmContain { .alarmContain {
display: flex; display: flex;
height: calc(100% - 90px); height: calc(100% - 98px);
padding: 0px 8px; padding: 0px 8px;
.alarmTable { .alarmTable {
width: 50%; width: 50%;
@ -726,7 +1035,6 @@ export default {
width: 100%; width: 100%;
height: 100%; height: 100%;
position: relative; position: relative;
.picshow { .picshow {
width: 100%; width: 100%;
height: 100%; height: 100%;
@ -758,6 +1066,7 @@ export default {
height: 100%; height: 100%;
cursor: pointer; cursor: pointer;
z-index: 2; z-index: 2;
pointer-events: none;
} }
} }
.editorBtn { .editorBtn {
@ -772,5 +1081,94 @@ export default {
} }
} }
} }
.pictureBox {
height: calc(100% - 136px);
max-height: calc(100% - 136px);
.el-empty {
margin: auto;
}
.piclist {
display: flex;
// justify-content: space-around;
flex-wrap: wrap;
overflow: auto;
border: 1px solid #eee;
height: calc(100% - 2px);
}
.imgList {
width: calc((100% - 104px) / 3);
position: relative;
display: inline-block;
margin: 8px;
position: relative;
padding: 4px;
border-radius: 3px;
background: #fff;
height: fit-content;
//height: auto;
border: 2px solid transparent;
.el-card__body {
padding: 0px;
}
.bigpic {
width: 100%;
height: 100%;
background-size: 100% 100%;
.picshow {
position: relative;
.myCanvas {
position: absolute;
width: 100%;
height: 100%;
z-index: 2;
left: 0;
top: 0;
pointer-events: none;
}
}
}
img {
cursor: pointer;
width: 100%;
height: 250px;
object-fit: fill;
}
.caption {
padding: 9px;
color: #333;
.alarmInfo {
color: #e49e61;
}
.infoTop {
font-size: 14px;
color: #000;
font-weight: normal;
margin-top: 2px;
padding-left: 5px;
padding-right: 5px;
}
.infoBottom {
color: #000;
font-size: 12px;
font-weight: normal;
margin-top: 6px;
padding-left: 5px;
padding-right: 5px;
.el-button--small {
margin-left: 24px;
padding: 4px;
width: 78px;
}
.el-button + .el-button {
margin-left: 10px;
}
}
}
}
.bgColor {
border: 2px solid #e49e61;
}
}
} }
</style> </style>

@ -79,7 +79,8 @@ export default {
if (val == null) { if (val == null) {
return (this.formdata = {}); return (this.formdata = {});
} }
this.formdata = val; //this.formdata = val;
this.formdata = JSON.parse(JSON.stringify(val));
}, },
// //
submitForm() { submitForm() {

@ -23,6 +23,9 @@
> >
<!-- <el-table-column type="index" width="55"> </el-table-column> <!-- <el-table-column type="index" width="55"> </el-table-column>
<el-table-column type="selection" width="55"> </el-table-column> --> <el-table-column type="selection" width="55"> </el-table-column> -->
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column <el-table-column
label="通道名称" label="通道名称"
show-overflow-tooltip show-overflow-tooltip

@ -8,16 +8,16 @@
bigPicPath.indexOf('nopic') == -1 && bigPicPath.indexOf('nopic') == -1 &&
bigPicPath.indexOf('videos') == -1 bigPicPath.indexOf('videos') == -1
" "
@click="handleBigPicbox(bigPicPath)" :style="bigPicPath ? 'backgroundImage:url(' + bigPicPath + ')' : ''"
> >
<!-- @click="handleBigPicbox(bigPicPath)" --> <!-- @click="handleBigPicbox(bigPicPath)" -->
<div <div
class="nosee" class="nosee"
:style="'backgroundImage:url(' + bigPicPath + ')'" :style="'backgroundImage:url(' + bigPicPath + ')'"
></div> ></div>
<viewer :options="OptionssalseImg" class="bigimgView"> <div class="bigimgView" v-viewer="OptionssalseImg">
<img ref="picJpg" class="animImg" :src="bigPicPath" /> <img ref="picJpg" class="animImg" :src="bigPicPath" />
</viewer> </div>
<canvas id="myCanvas" class="myCanvas" ref="myCanvas"></canvas> <canvas id="myCanvas" class="myCanvas" ref="myCanvas"></canvas>
<!-- <img ref="picJpg" class="animImg" :src="bigPicPath + '!1366x768'" /> --> <!-- <img ref="picJpg" class="animImg" :src="bigPicPath + '!1366x768'" /> -->
@ -33,7 +33,7 @@
<video <video
width="100%" width="100%"
height="100%" height="100%"
:src="bigPicPath" :src="bigPicPath.substring(0, bigPicPath.length - 9)"
controls="controls" controls="controls"
:poster="videopath" :poster="videopath"
autoplay autoplay
@ -50,7 +50,13 @@
@click="closePic" @click="closePic"
> >
<div class="picboxI"> <div class="picboxI">
<img class="maskPic" :src="bigPicPath" /> <img
class="maskPic"
:src="bigPicPath"
ref="bigImage"
width="100%"
height="100%"
/>
</div> </div>
<div class="viewClose"> <div class="viewClose">
<i @click="closePic" class="el-icon-close"></i> <i @click="closePic" class="el-icon-close"></i>
@ -221,6 +227,7 @@ export default {
mounted() { mounted() {
console.log(this.terminalPhoto); console.log(this.terminalPhoto);
this.bigPicPath = this.terminalPhoto[0].path + "!1366x768"; this.bigPicPath = this.terminalPhoto[0].path + "!1366x768";
// this.bigPicPath = this.terminalPhoto[0].path + "!1366x768";
this.fiveList = this.terminalPhoto.slice(this.page - 1, this.pagesize); this.fiveList = this.terminalPhoto.slice(this.page - 1, this.pagesize);
this.total = this.terminalPhoto.length / this.pagesize; this.total = this.terminalPhoto.length / this.pagesize;
console.log(this.fiveList); console.log(this.fiveList);
@ -455,6 +462,7 @@ export default {
flex-direction: column; flex-direction: column;
height: calc(100% - 0px); height: calc(100% - 0px);
box-sizing: border-box; box-sizing: border-box;
.showPic { .showPic {
position: fixed; position: fixed;
background-color: rgba(0, 0, 0, 0.5); background-color: rgba(0, 0, 0, 0.5);
@ -478,10 +486,11 @@ export default {
animation-iteration-count: 1; animation-iteration-count: 1;
/*动画播放的次数*/ /*动画播放的次数*/
animation-duration: 0.65s; animation-duration: 0.65s;
overflow: hidden;
border: 2px solid #f00;
img { img {
max-width: 1366px; width: 100%;
max-height: 768px; height: 100%;
margin: auto; margin: auto;
} }
} }
@ -586,6 +595,7 @@ export default {
line-height: 60px; line-height: 60px;
width: 40px; width: 40px;
height: 40px; height: 40px;
z-index: 4;
&:hover { &:hover {
color: @color-primary; color: @color-primary;
} }
@ -711,5 +721,6 @@ export default {
transform: scale(1); transform: scale(1);
} }
} }
// https://v1.github.surmon.me/vue-awesome-swiper/ // https://v1.github.surmon.me/vue-awesome-swiper/
</style> </style>

@ -34,6 +34,7 @@
range-separator="至" range-separator="至"
start-placeholder="开始时间" start-placeholder="开始时间"
end-placeholder="结束时间" end-placeholder="结束时间"
format="HH:mm"
value-format="HH:mm:ss" value-format="HH:mm:ss"
> >
</el-time-picker> </el-time-picker>
@ -99,7 +100,8 @@ export default {
remark: "", remark: "",
}); });
} }
this.ruleForm = val; //this.ruleForm = val;
this.ruleForm = JSON.parse(JSON.stringify(val));
this.ruleForm.list.forEach((val) => { this.ruleForm.list.forEach((val) => {
this.$set(val, "time", [val.startTime, val.endTime]); this.$set(val, "time", [val.startTime, val.endTime]);
}); });

@ -24,6 +24,9 @@
> >
<!-- <el-table-column type="index" width="55"> </el-table-column> <!-- <el-table-column type="index" width="55"> </el-table-column>
<el-table-column type="selection" width="55"> </el-table-column> --> <el-table-column type="selection" width="55"> </el-table-column> -->
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column label="名称" show-overflow-tooltip> <el-table-column label="名称" show-overflow-tooltip>
<template slot-scope="scope">{{ scope.row.name }}</template> <template slot-scope="scope">{{ scope.row.name }}</template>
</el-table-column> </el-table-column>

@ -232,7 +232,8 @@ export default {
], ],
}); });
} }
this.formInfo = val; //this.formInfo = val;
this.formInfo = JSON.parse(JSON.stringify(val));
}, },
// //
changeHandle() { changeHandle() {

@ -40,6 +40,9 @@
style="width: 100%" style="width: 100%"
v-loading="loading" v-loading="loading"
> >
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column min-width="45" label="序号"> <el-table-column min-width="45" label="序号">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span> <span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span>
@ -189,6 +192,7 @@ export default {
}, },
}; };
</script> </script>
<<<<<<< HEAD
<style lang="less"> <style lang="less">
.baseInforDialog { .baseInforDialog {
.pageNation { .pageNation {
@ -203,3 +207,6 @@ export default {
} }
} }
</style> </style>
=======
<style lang="less" scoped></style>
>>>>>>> hn1.0

@ -40,6 +40,9 @@
style="width: 100%" style="width: 100%"
v-loading="loading" v-loading="loading"
> >
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column min-width="45" label="序号"> <el-table-column min-width="45" label="序号">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span> <span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span>
@ -171,6 +174,7 @@ export default {
}, },
}; };
</script> </script>
<<<<<<< HEAD
<style lang="less"> <style lang="less">
.gpsSiteDialog { .gpsSiteDialog {
.pageNation { .pageNation {
@ -185,3 +189,6 @@ export default {
} }
} }
</style> </style>
=======
<style lang="less" scoped></style>
>>>>>>> hn1.0

@ -40,6 +40,9 @@
style="width: 100%" style="width: 100%"
v-loading="loading" v-loading="loading"
> >
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column min-width="45" label="序号"> <el-table-column min-width="45" label="序号">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span> <span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span>
@ -177,6 +180,7 @@ export default {
}, },
}; };
</script> </script>
<<<<<<< HEAD
<style lang="less"> <style lang="less">
.runStatusDialog { .runStatusDialog {
.pageNation { .pageNation {
@ -191,3 +195,6 @@ export default {
} }
} }
</style> </style>
=======
<style lang="less" scoped></style>
>>>>>>> hn1.0

@ -40,6 +40,9 @@
style="width: 100%" style="width: 100%"
v-loading="loading" v-loading="loading"
> >
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column min-width="45" label="序号"> <el-table-column min-width="45" label="序号">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span> <span>{{ (page - 1) * pageSize + scope.$index + 1 }}</span>
@ -203,6 +206,7 @@ export default {
}, },
}; };
</script> </script>
<<<<<<< HEAD
<style lang="less"> <style lang="less">
.workStatus { .workStatus {
.pageNation { .pageNation {
@ -217,3 +221,6 @@ export default {
} }
} }
</style> </style>
=======
<style lang="less" scoped></style>
>>>>>>> hn1.0

@ -47,6 +47,7 @@
<el-input <el-input
v-model="formdata.search" v-model="formdata.search"
placeholder="请输入线路/杆塔/设备编号" placeholder="请输入线路/杆塔/设备编号"
clearable
></el-input> ></el-input>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -74,6 +75,10 @@
show-overflow-tooltip show-overflow-tooltip
> >
</el-table-column> </el-table-column>
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column <el-table-column
fixed fixed
prop="lineName" prop="lineName"
@ -81,6 +86,11 @@
show-overflow-tooltip show-overflow-tooltip
min-width="120" min-width="120"
> >
<template slot-scope="scope">
<el-link @click.native.stop="handleRevisePhoto(scope.row)">{{
scope.row.lineName
}}</el-link>
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
fixed fixed
@ -89,6 +99,11 @@
show-overflow-tooltip show-overflow-tooltip
min-width="150" min-width="150"
> >
<template slot-scope="scope">
<el-link @click.native.stop="handleRevisePhoto(scope.row)">{{
scope.row.towerName
}}</el-link>
</template>
</el-table-column> </el-table-column>
<el-table-column <el-table-column
fixed fixed
@ -309,7 +324,11 @@
<el-dropdown-item command="open">开启GPS</el-dropdown-item> <el-dropdown-item command="open">开启GPS</el-dropdown-item>
<el-dropdown-item command="close">关闭GPS</el-dropdown-item> <el-dropdown-item command="close">关闭GPS</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
<<<<<<< HEAD
</el-dropdown> --> </el-dropdown> -->
=======
</el-dropdown>
>>>>>>> hn1.0
<el-button <el-button
type="text" type="text"
class="deleteText" class="deleteText"
@ -353,7 +372,11 @@
<el-dropdown-item command="open">开启GPS</el-dropdown-item> <el-dropdown-item command="open">开启GPS</el-dropdown-item>
<el-dropdown-item command="close">关闭GPS</el-dropdown-item> <el-dropdown-item command="close">关闭GPS</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
<<<<<<< HEAD
</el-dropdown> --> </el-dropdown> -->
=======
</el-dropdown>
>>>>>>> hn1.0
<el-button <el-button
type="text" type="text"
class="deleteText" class="deleteText"
@ -462,12 +485,40 @@ export default {
}; };
}, },
created() { created() {
this.getSearchdy();
this.terminalList();
this.roleUser = localStorage.getItem("role"); this.roleUser = localStorage.getItem("role");
console.log(this.roleUser); console.log(this.roleUser);
var that = this;
document.onkeydown = function (e) {
var key = window.event.keyCode;
if (key === 13) {
that.onSubmit(); //
}
};
console.log(this.$route.query);
this.formdata.search = this.$route.query.name;
console.log(this.formdata.search);
},
mounted() {
this.getSearchdy();
this.terminalList();
}, },
methods: { methods: {
//线
handleLineLink(val) {
console.log(val);
this.$router.push({
path: "/lineInformation",
query: { lineName: val.lineName, name: val.towerName },
});
},
//
handletowerLink(val) {
console.log(val);
this.$router.push({
path: "/towerInformation",
query: { lineName: val.lineName, name: val.towerName },
});
},
// //
getSearchdy() { getSearchdy() {
getSearchInfo({ type: 1 }) getSearchInfo({ type: 1 })

@ -74,6 +74,9 @@
> >
</el-table-column> --> </el-table-column> -->
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column <el-table-column
prop="lineName" prop="lineName"
label="线路名称" label="线路名称"

@ -82,7 +82,8 @@ export default {
if (val == null) { if (val == null) {
return (this.formdata = {}); return (this.formdata = {});
} }
this.formdata = val; //this.formdata = val;
this.formdata = JSON.parse(JSON.stringify(val));
//this.$set(this.formdata); //this.$set(this.formdata);
}, },
// //

@ -59,7 +59,8 @@ export default {
methods: { methods: {
// //
getdataform(val) { getdataform(val) {
this.formdata = val; //this.formdata = val;
this.formdata = JSON.parse(JSON.stringify(val));
this.formdata.lineId = val.name; this.formdata.lineId = val.name;
}, },
// //
@ -78,7 +79,6 @@ export default {
}) })
.then((res) => { .then((res) => {
if (res.code == 200) { if (res.code == 200) {
// this.$message.success("");
this.$message({ this.$message({
duration: 1500, duration: 1500,
showClose: true, showClose: true,

@ -7,6 +7,21 @@
>新增</el-button >新增</el-button
> >
</div> </div>
<div class="searchBox">
<el-form :inline="true" :model="formdata" class="demo-form-inline">
<el-form-item>
<el-input
v-model="formdata.search"
placeholder="请输入线路名称或公司名称"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit"></el-button>
<el-button type="primary" @click="onReset"></el-button>
</el-form-item>
</el-form>
</div>
<div class="lineTable"> <div class="lineTable">
<el-table <el-table
ref="multipleTable" ref="multipleTable"
@ -21,11 +36,22 @@
> >
<!-- <el-table-column type="selection" width="55"> </el-table-column> --> <!-- <el-table-column type="selection" width="55"> </el-table-column> -->
<!-- <el-table-column type="index" width="55"> </el-table-column> --> <!-- <el-table-column type="index" width="55"> </el-table-column> -->
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column label="公司名称" show-overflow-tooltip> <el-table-column label="公司名称" show-overflow-tooltip>
<template slot-scope="scope">{{ <template slot-scope="scope">{{
scope.row.bsManufacturer scope.row.bsManufacturer
}}</template> }}</template>
</el-table-column> </el-table-column>
<el-table-column
prop="dyLevelname"
label="电压等级名称"
show-overflow-tooltip
min-width="120"
>
</el-table-column>
<!-- <el-table-column <!-- <el-table-column
prop="id" prop="id"
label="线路编号" label="线路编号"
@ -41,13 +67,6 @@
> >
</el-table-column> </el-table-column>
<el-table-column
prop="dyLevelname"
label="电压等级名称"
show-overflow-tooltip
min-width="120"
>
</el-table-column>
<el-table-column <el-table-column
prop="status" prop="status"
label="是否启用" label="是否启用"
@ -119,19 +138,33 @@ export default {
pageSize: 20, // pageSize: 20, //
total: 0, // total: 0, //
loading: true, loading: true,
formdata: {
search: "",
},
}; };
}, },
created() { created() {
var that = this;
document.onkeydown = function (e) {
var key = window.event.keyCode;
if (key === 13) {
that.onSubmit(); //
}
};
// console.log(this.$route.query);
// this.formdata.search = this.$route.query.lineName;
// console.log(this.formdata.search);
},
mounted() {
this.lineList(); this.lineList();
}, },
methods: { methods: {
//线 //线
lineList() { lineList() {
this.loading = true; this.loading = true;
getLineListJoggle({ this.$set(this.formdata, "pageindex", this.page);
pageindex: this.page, this.$set(this.formdata, "pagesize", this.pageSize);
pagesize: this.pageSize, getLineListJoggle(this.formdata)
})
.then((res) => { .then((res) => {
this.lineTableData = res.data.list; this.lineTableData = res.data.list;
this.total = res.data.total; this.total = res.data.total;
@ -147,7 +180,18 @@ export default {
handleSelectionChange(val) { handleSelectionChange(val) {
this.multipleSelection = val; this.multipleSelection = val;
}, },
//
onSubmit() {
this.page = 1;
this.lineList();
},
//
onReset() {
this.formdata = {};
this.page = 1;
this.pageSize = 20;
this.lineList();
},
// //
handleAddLine() { handleAddLine() {
this.lineDialogTitle = "新增"; this.lineDialogTitle = "新增";
@ -157,6 +201,7 @@ export default {
//handleResive 线 //handleResive 线
handleResive(data) { handleResive(data) {
console.log(data);
this.lineDialogTitle = "修改"; this.lineDialogTitle = "修改";
this.$refs.addlineDialogref.display(); this.$refs.addlineDialogref.display();
this.$refs.addlineDialogref.getdataform(data); this.$refs.addlineDialogref.getdataform(data);
@ -223,7 +268,26 @@ export default {
height: calc(100% - 24px); height: calc(100% - 24px);
padding: 12px; padding: 12px;
border-radius: 4px; border-radius: 4px;
.searchBox {
margin-top: 8px;
.ml10 {
margin-left: 10px;
}
.el-form {
.dybox {
.el-form-item__content {
width: 120px;
}
}
.xlbox {
.el-form-item__content {
width: 160px;
}
}
}
}
} }
.lineBtnGroup { .lineBtnGroup {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
@ -231,8 +295,8 @@ export default {
} }
.lineTable { .lineTable {
margin-top: 16px; //margin-top: 16px;
height: calc(100% - 48px); height: calc(100% - 94px);
} }
} }
</style> </style>

@ -27,6 +27,9 @@
<el-form-item label="杆塔名称:" prop="name"> <el-form-item label="杆塔名称:" prop="name">
<el-input v-model="formdata.name" autocomplete="off"></el-input> <el-input v-model="formdata.name" autocomplete="off"></el-input>
</el-form-item> </el-form-item>
<el-form-item label="杆塔地址:" prop="address">
<el-input v-model="formdata.address" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="排序号:" prop="order"> <el-form-item label="排序号:" prop="order">
<el-input-number <el-input-number
controls-position="right" controls-position="right"
@ -80,7 +83,8 @@ export default {
order: 0, order: 0,
}); });
} }
this.formdata = val; //this.formdata = val;
this.formdata = JSON.parse(JSON.stringify(val));
}, },
// //
submitForm() { submitForm() {

@ -10,6 +10,21 @@
>新增</el-button >新增</el-button
> >
</div> </div>
<div class="searchBox">
<el-form :inline="true" :model="formdata" class="demo-form-inline">
<el-form-item>
<el-input
v-model="formdata.search"
placeholder="请输入线路/杆塔/地址"
clearable
></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit"></el-button>
<el-button type="primary" @click="onReset"></el-button>
</el-form-item>
</el-form>
</div>
<div class="deviceTable"> <div class="deviceTable">
<el-table <el-table
ref="multipleTable" ref="multipleTable"
@ -24,24 +39,39 @@
> >
<!-- <el-table-column type="index" width="55"> </el-table-column> <!-- <el-table-column type="index" width="55"> </el-table-column>
<el-table-column type="selection" width="55"> </el-table-column> --> <el-table-column type="selection" width="55"> </el-table-column> -->
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column <el-table-column
prop="lineName" prop="lineName"
label="线路名称" label="线路名称"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> >
<template slot-scope="scope">
<el-link @click.native.stop="handleResive(scope.row)">{{
scope.row.lineName
}}</el-link>
</template>
</el-table-column>
<!-- <el-table-column <!-- <el-table-column
prop="lineId" prop="lineId"
label="线路编号" label="线路编号"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> --> ></el-table-column> -->
<el-table-column prop="name" label="杆塔名称" show-overflow-tooltip>
<template slot-scope="scope">
<el-link @click.native.stop="handleResive(scope.row)">{{
scope.row.name
}}</el-link>
</template></el-table-column
>
<el-table-column <el-table-column
prop="name" prop="address"
label="杆塔名称" label="杆塔地址"
show-overflow-tooltip show-overflow-tooltip
></el-table-column> ></el-table-column>
<el-table-column prop="order" label="排序号"> <el-table-column prop="order" label="排序号" width="100">
<template slot-scope="scope"> <template slot-scope="scope">
{{ scope.row.order == null ? 0 : scope.row.order }} {{ scope.row.order == null ? 0 : scope.row.order }}
</template> </template>
@ -98,23 +128,63 @@ export default {
pageSize: 20, // pageSize: 20, //
total: 0, // total: 0, //
loading: true, loading: true,
formdata: {
search: "",
},
}; };
}, },
mounted() { created() {
console.log("ssss"); var that = this;
this.deviceList(); document.onkeydown = function (e) {
var key = window.event.keyCode;
if (key === 13) {
that.onSubmit(); //
}
};
console.log(this.$route.query);
this.formdata.search = this.$route.query.name;
console.log(this.formdata.search);
}, },
activated() { mounted() {
this.deviceList(); this.deviceList();
}, },
methods: { methods: {
//线
handleLineLink(val) {
console.log(val);
this.$router.push({
path: "/lineInformation",
query: { lineName: val.lineName, name: val.name },
});
},
//线
handletowerLink(val) {
console.log(val);
this.$router.push({
path: "/photographicDevice",
query: { lineName: val.lineName, name: val.name },
});
},
//
onSubmit() {
this.page = 1;
this.deviceList();
},
//
onReset() {
this.formdata = {};
this.page = 1;
this.pageSize = 20;
this.deviceList();
},
// //
deviceList() { deviceList() {
this.loading = true; this.loading = true;
getTowerListApi({ this.$set(this.formdata, "pageindex", this.page);
pageindex: this.page, this.$set(this.formdata, "pagesize", this.pageSize);
pagesize: this.pageSize, getTowerListApi(this.formdata)
})
.then((res) => { .then((res) => {
this.tableDate = res.data.list; this.tableDate = res.data.list;
this.total = res.data.total; this.total = res.data.total;
@ -201,16 +271,32 @@ export default {
height: calc(100% - 24px); height: calc(100% - 24px);
padding: 12px; padding: 12px;
border-radius: 4px; border-radius: 4px;
.searchBox {
margin-top: 8px;
.ml10 {
margin-left: 10px;
}
.el-form {
.dybox {
.el-form-item__content {
width: 120px;
}
}
.xlbox {
.el-form-item__content {
width: 160px;
}
}
}
}
} }
.deviceBtnGroup { .deviceBtnGroup {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;
align-items: center; align-items: center;
} }
.deviceTable { .deviceTable {
margin-top: 16px; height: calc(100% - 94px);
height: calc(100% - 48px);
//background: #fcc; //background: #fcc;
} }
} }

@ -64,15 +64,16 @@
<img src="../../assets/img/nopic.jpg" /> <img src="../../assets/img/nopic.jpg" />
</div> </div>
<p class="infoTop"> <p class="infoTop">
{{ item.linename }}-{{ {{ item.linename }}-{{ item.towername }}-{{
item.displayname !== null && item.displayname !== ""
? item.displayname
: item.cmdid
}}-{{
item.alias !== null && item.alias !== "" item.alias !== null && item.alias !== ""
? item.alias ? item.alias
: item.channnelname : item.channnelname
}} }}
<!-- {{
item.displayname !== null && item.displayname !== ""
? item.displayname
: item.cmdid
}}- -->
</p> </p>
<p class="infoBottom" v-if="item.photoTime !== null"> <p class="infoBottom" v-if="item.photoTime !== null">
{{ $moment(item.photoTime).format("yy-MM-DD HH:mm:ss") }}  {{ $moment(item.photoTime).format("yy-MM-DD HH:mm:ss") }} 

@ -57,6 +57,14 @@
<!-- 带参数的中心内容右侧参数区 --> <!-- 带参数的中心内容右侧参数区 -->
<div class="picSetBox"> <div class="picSetBox">
<div class="swiperBox" v-loading="loadingpic"> <div class="swiperBox" v-loading="loadingpic">
<div class="title">
<el-breadcrumb separator="/">
<el-breadcrumb-item> {{ towertitle }}</el-breadcrumb-item>
<el-breadcrumb-item v-if="address !== null">{{
address
}}</el-breadcrumb-item>
</el-breadcrumb>
</div>
<carouselChart <carouselChart
ref="carouselpic" ref="carouselpic"
:terminalPhoto="terminalPhoto" :terminalPhoto="terminalPhoto"
@ -67,6 +75,7 @@
<div class="zzbox"> <div class="zzbox">
<!-- <h3>装置名称</h3> --> <!-- <h3>装置名称</h3> -->
<p class="zzidname">{{ cmdid }}</p> <p class="zzidname">{{ cmdid }}</p>
<!-- <p class="addressname">{{ address }}</p> -->
</div> </div>
<div class="paramsDate"> <div class="paramsDate">
<h3>日历快速查询</h3> <h3>日历快速查询</h3>
@ -199,6 +208,9 @@
<el-dropdown-item command="close">关闭GPS</el-dropdown-item> <el-dropdown-item command="close">关闭GPS</el-dropdown-item>
</el-dropdown-menu> </el-dropdown-menu>
</el-dropdown> </el-dropdown>
<el-button type="primary" @click="handlehistoryPic">
历史图片</el-button
>
</div> </div>
</div> </div>
</div> </div>
@ -273,6 +285,9 @@ export default {
i: 0, i: 0,
newTermId: "", newTermId: "",
zzstatus: "", zzstatus: "",
address: "",
towertitle: "",
CurrentData: "",
}; };
}, },
watch: { watch: {
@ -352,9 +367,11 @@ 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; //
this.newTermId = this.lineTreeData[0].list[0].list[0].id; this.newTermId = this.lineTreeData[0].list[0].list[0].id;
this.towertitle = this.lineTreeData[0].list[0].list[0].name;
this.address = this.lineTreeData[0].list[0].list[0].address;
this.cmdid = this.lineTreeData[0].list[0].list[0].cmdid; this.cmdid = this.lineTreeData[0].list[0].list[0].cmdid;
this.zzstatus = this.lineTreeData[0].list[0].list[0].onlinestatus; this.zzstatus = this.lineTreeData[0].list[0].list[0].onlinestatus;
this.CurrentData = this.lineTreeData[0].list[0].list[0];
console.log(this.zzstatus); console.log(this.zzstatus);
this.$nextTick(() => { this.$nextTick(() => {
this.$refs.tree.setCurrentKey(this.currentNodekey); // this.$refs.tree.setCurrentKey(this.currentNodekey); //
@ -378,7 +395,10 @@ export default {
console.log(this.zzstatus); console.log(this.zzstatus);
this.channelId = data.id; //id this.channelId = data.id; //id
this.cmdid = data.cmdid; this.cmdid = data.cmdid;
this.address = data.address;
this.towertitle = data.name;
this.newTermId = data.id; //id this.newTermId = data.id; //id
this.CurrentData = data;
console.log(data); console.log(data);
this.channelValue = []; this.channelValue = [];
this.channelOption = []; this.channelOption = [];
@ -605,7 +625,6 @@ export default {
console.log(res); console.log(res);
if (res.data.isonline) { if (res.data.isonline) {
this.btnpicloading = true; this.btnpicloading = true;
getLatestPhotoJoggle({ getLatestPhotoJoggle({
captureType: 0, captureType: 0,
channel: command, channel: command,
@ -625,7 +644,6 @@ export default {
this.newPicData = res.data; this.newPicData = res.data;
console.log(this.newPicData); console.log(this.newPicData);
console.log(this.newTermId); console.log(this.newTermId);
this.timer = window.setInterval(() => { this.timer = window.setInterval(() => {
this.newPicApi(); this.newPicApi();
this.i++; this.i++;
@ -801,10 +819,13 @@ export default {
}, },
// //
// handlehistoryPic() { handlehistoryPic() {
// this.$router.push({ path: "/realTimeSearch" }); this.$router.push({
// // sessionStorage.setItem("keyPath", " realTimeSearch"); path: "/realTimeSearch",
// }, query: { lineName: this.CurrentData },
});
// sessionStorage.setItem("keyPath", " realTimeSearch");
},
dragControllerDiv() { dragControllerDiv() {
var resize = document.getElementsByClassName("resize"); var resize = document.getElementsByClassName("resize");
var left = document.getElementsByClassName("sideBar"); var left = document.getElementsByClassName("sideBar");
@ -943,6 +964,24 @@ export default {
.el-loading-mask { .el-loading-mask {
background-color: rgba(255, 255, 255, 0.6) !important; background-color: rgba(255, 255, 255, 0.6) !important;
} }
.title {
height: 32px;
padding-left: 12px;
line-height: 32px;
color: #fff;
font-size: 12px;
background-color: #169e8cb0;
.el-breadcrumb {
line-height: 32px;
color: #fff !important;
font-size: 12px;
height: 32px;
.el-breadcrumb__inner,
.el-breadcrumb__separator {
color: #fff !important;
}
}
}
} }
.totalPic { .totalPic {
width: 100%; width: 100%;
@ -977,6 +1016,13 @@ export default {
} }
.zzidname { .zzidname {
font-weight: normal; font-weight: normal;
color: #169e8c;
}
.addressname {
margin-top: 16px;
font-size: 14px;
line-height: 22px;
color: #333;
} }
} }
.setTimebtn { .setTimebtn {

@ -99,7 +99,7 @@
</el-form> </el-form>
</div> </div>
<div class="pictureBox" v-loading="loading"> <div class="pictureBox" v-loading="loading">
<div v-if="picList.length !== 0"> <div v-if="picList.length !== 0" style="width: 100%">
<el-card <el-card
class="box-card imgList" class="box-card imgList"
v-for="(item, index) in picList" v-for="(item, index) in picList"
@ -227,6 +227,18 @@ export default {
signtype: 0, //0 signtype: 0, //0
}; };
}, },
created() {
var that = this;
document.onkeydown = function (e) {
var key = window.event.keyCode;
if (key === 13) {
that.onSubmit(); //
}
};
console.log(this.$route.query);
// this.formdata.search = this.$route.query.name;
// console.log(this.formdata.search);
},
mounted() { mounted() {
// this.$set(this.formdata, "timeVal", [ // this.$set(this.formdata, "timeVal", [
// new Date(new Date().toLocaleDateString()).getTime(), // new Date(new Date().toLocaleDateString()).getTime(),
@ -340,6 +352,7 @@ export default {
// //
handleCurrentChange(val) { handleCurrentChange(val) {
this.page = val; this.page = val;
this.picList = [];
this.getPicData(); this.getPicData();
}, },
// //

@ -93,7 +93,8 @@ export default {
if (val == null) { if (val == null) {
return (this.formdata = {}); return (this.formdata = {});
} }
this.formdata = val; //this.formdata = val;
this.formdata = JSON.parse(JSON.stringify(val));
}, },
// //
submitForm() { submitForm() {

@ -20,6 +20,9 @@
> >
<!-- <el-table-column type="index" width="55"> </el-table-column> <!-- <el-table-column type="index" width="55"> </el-table-column>
<el-table-column type="selection" width="55"> </el-table-column> --> <el-table-column type="selection" width="55"> </el-table-column> -->
<template slot="empty">
<el-empty :image-size="160" description="暂无数据"></el-empty>
</template>
<el-table-column <el-table-column
label="用户名" label="用户名"
show-overflow-tooltip show-overflow-tooltip

@ -1,168 +1,240 @@
<template> <template>
<div style="padding: 20px"> <div class="echartsPage">
<el-card <div class="echart-top">
><el-tabs type="border-card" v-model="tabName" @tab-click="handleClick" <el-card class="box-card">
><el-tab-pane label="用户管理" name="用户管理" <div id="echart1" style="width: 100%; height: 100%"></div>
><div class="echart-top"> </el-card>
<div id="echart1" style="width: 100%; height: 100%"></div> <el-card class="box-card">
<div id="echart2" style="width: 100%; height: 100%"></div></div></el-tab-pane <div id="echart2" style="width: 100%; height: 100%"></div>
><el-tab-pane label="配置管理" name="配置管理" </el-card>
><div class="echart-top"> </div>
<div id="echart3" style="width: 100%; height: 100%"></div> <div class="echart-top">
<div id="echart4" style="width: 100%; height: 100%"></div></div></el-tab-pane></el-tabs <el-card class="box-card">
></el-card> <div id="echart3" style="width: 100%; height: 100%"></div>
</el-card>
<el-card class="box-card">
<div id="echart4" style="width: 100%; height: 100%"></div>
</el-card>
</div> </div>
<!-- <el-card>
<el-tabs type="border-card" v-model="tabName" @tab-click="handleClick"
><el-tab-pane label="用户管理" name="用户管理"></el-tab-pane
><el-tab-pane label="配置管理" name="配置管理"></el-tab-pane></el-tabs
></el-card> -->
</div>
</template> </template>
<script> <script>
export default { export default {
name: '', name: "",
data() { data() {
return { tabName: '配置管理', myChart1: '', myChart2: '', myChart3: '', myChart4: '' }; return {
tabName: "配置管理",
myChart1: "",
myChart2: "",
myChart3: "",
myChart4: "",
};
},
mounted() {
this.init();
},
watch: {
"$store.state.collapse"(val) {
console.log(val);
setTimeout(() => {
//echarts
this.myChart1.resize();
this.myChart2.resize();
this.myChart3.resize();
this.myChart4.resize();
}, 300);
}, },
mounted() { },
this.init(); methods: {
init() {
this.getEchart1();
this.getEchart2();
this.getEchart3();
this.getEchart4();
}, },
watch: { handleClick(value) {
'$store.state.collapse'(val) { console.log("value", value);
console.log(val); if (value.name === "用户管理") {
setTimeout(() => { this.getEchart1();
//echarts this.getEchart2();
this.myChart1.resize(); } else {
this.myChart2.resize(); this.getEchart3();
this.myChart3.resize(); }
this.myChart4.resize();
}, 300);
}
}, },
methods: { getEchart1() {
init() { this.$nextTick(() => {
this.getEchart1(); this.$echarts.init(document.getElementById("echart1")).dispose();
this.getEchart2(); this.myChart1 = this.$echarts.init(document.getElementById("echart1"));
this.getEchart3(); let option = {
this.getEchart4(); title: {
}, text: "装置数量统计",
handleClick(value) { },
console.log('value', value); legend: { top: "bottom" },
if (value.name === '用户管理') { toolbox: {
this.getEchart1(); show: true,
this.getEchart2(); },
} else { series: [
this.getEchart3(); {
} name: "面积模式",
}, type: "pie",
getEchart1() { radius: [50, 120],
this.$nextTick(() => { center: ["50%", "50%"],
this.$echarts.init(document.getElementById('echart1')).dispose(); roseType: "area",
this.myChart1 = this.$echarts.init(document.getElementById('echart1')); itemStyle: { borderRadius: 8 },
let option = { data: [
legend: { top: 'bottom' }, { value: 40, name: "rose 1" },
toolbox: { { value: 38, name: "rose 2" },
show: true, { value: 32, name: "rose 3" },
feature: { { value: 30, name: "rose 4" },
mark: { show: true }, { value: 28, name: "rose 5" },
dataView: { show: true, readOnly: false }, { value: 26, name: "rose 6" },
restore: { show: true }, { value: 22, name: "rose 7" },
saveAsImage: { show: true } { value: 18, name: "rose 8" },
} ],
}, },
series: [ ],
{ };
name: '面积模式', this.myChart1.setOption(option);
type: 'pie', window.addEventListener("resize", () => {
radius: [50, 250], this.myChart1.resize();
center: ['50%', '50%'], });
roseType: 'area', });
itemStyle: { borderRadius: 8 }, },
data: [ getEchart2() {
{ value: 40, name: 'rose 1' }, this.$nextTick(() => {
{ value: 38, name: 'rose 2' }, this.$echarts.init(document.getElementById("echart2")).dispose();
{ value: 32, name: 'rose 3' }, this.myChart2 = this.$echarts.init(document.getElementById("echart2"));
{ value: 30, name: 'rose 4' }, let option = {
{ value: 28, name: 'rose 5' }, title: {
{ value: 26, name: 'rose 6' }, text: "隐患分类统计",
{ value: 22, name: 'rose 7' }, },
{ value: 18, name: 'rose 8' } xAxis: {
] type: "category",
} data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
] },
}; yAxis: { type: "value" },
this.myChart1.setOption(option); series: [
window.addEventListener('resize', () => { {
this.myChart1.resize(); data: [120, 200, 150, 80, 70, 110, 130],
}); type: "bar",
}); showBackground: true,
}, backgroundStyle: { color: "rgba(180, 180, 180, 0.2)" },
getEchart2() { },
this.$nextTick(() => { ],
this.$echarts.init(document.getElementById('echart2')).dispose(); };
this.myChart2 = this.$echarts.init(document.getElementById('echart2')); this.myChart2.setOption(option);
let option = { window.addEventListener("resize", () => {
xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, this.myChart2.resize();
yAxis: { type: 'value' }, });
series: [ });
{ },
data: [120, 200, 150, 80, 70, 110, 130], getEchart3() {
type: 'bar', this.$nextTick(() => {
showBackground: true, this.$echarts.init(document.getElementById("echart3")).dispose();
backgroundStyle: { color: 'rgba(180, 180, 180, 0.2)' } this.myChart3 = this.$echarts.init(document.getElementById("echart3"));
} let option = {
] title: {
}; text: "装置信息统计",
this.myChart2.setOption(option); },
window.addEventListener('resize', () => { xAxis: {
this.myChart2.resize(); type: "category",
}); boundaryGap: false,
}); data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
}, },
getEchart3() { yAxis: { type: "value" },
this.$nextTick(() => { series: [
this.$echarts.init(document.getElementById('echart3')).dispose(); {
this.myChart3 = this.$echarts.init(document.getElementById('echart3')); data: [820, 932, 901, 934, 1290, 1330, 1320],
let option = { type: "line",
xAxis: { type: 'category', boundaryGap: false, data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] }, areaStyle: {},
yAxis: { type: 'value' }, },
series: [{ data: [820, 932, 901, 934, 1290, 1330, 1320], type: 'line', areaStyle: {} }] ],
}; };
this.myChart3.setOption(option); this.myChart3.setOption(option);
window.addEventListener('resize', () => { window.addEventListener("resize", () => {
this.myChart3.resize(); this.myChart3.resize();
}); });
}); });
}, },
getEchart4() { getEchart4() {
this.$nextTick(() => { this.$nextTick(() => {
this.$echarts.init(document.getElementById('echart4')).dispose(); this.$echarts.init(document.getElementById("echart4")).dispose();
this.myChart4 = this.$echarts.init(document.getElementById('echart4')); this.myChart4 = this.$echarts.init(document.getElementById("echart4"));
let option = { let option = {
xAxis: {}, title: {
yAxis: {}, text: "装置在线统计",
series: [ },
{ tooltip: {
data: [ trigger: "item",
[10, 40], },
[50, 100], legend: {
[40, 20] top: "5%",
], left: "center",
type: 'line' },
} series: [
] {
}; type: "pie",
this.myChart4.setOption(option); radius: ["40%", "70%"],
window.addEventListener('resize', () => { avoidLabelOverlap: false,
this.myChart4.resize(); itemStyle: {
}); borderRadius: 10,
}); borderColor: "#fff",
} borderWidth: 2,
} },
label: {
show: false,
position: "center",
},
emphasis: {
label: {
show: true,
fontSize: 40,
fontWeight: "bold",
},
},
labelLine: {
show: false,
},
data: [
{ value: 1048, name: "在线" },
{ value: 735, name: "离线" },
],
},
],
};
this.myChart4.setOption(option);
window.addEventListener("resize", () => {
this.myChart4.resize();
});
});
},
},
}; };
</script> </script>
<style scoped> <style lang="less">
.echart-top { .echartsPage {
height: calc(100% - 32px);
padding: 16px;
display: flex;
flex-direction: column;
justify-content: space-around;
.echart-top {
display: flex; display: flex;
height: 48%;
justify-content: space-between; justify-content: space-between;
width: 100%;
height: 500px; .el-card {
width: 48%;
height: 100%;
.el-card__body {
height: calc(100% - 40px);
}
}
}
} }
</style> </style>

@ -1,5 +1,6 @@
const { defineConfig } = require("@vue/cli-service"); const { defineConfig } = require("@vue/cli-service");
const path = require("path"); const path = require("path");
const webpack = require("webpack");
module.exports = defineConfig({ module.exports = defineConfig({
//打包清除console //打包清除console
chainWebpack(config) { chainWebpack(config) {
@ -37,4 +38,14 @@ module.exports = defineConfig({
}, },
}, },
}, },
chainWebpack: (config) => {
config.plugin("provide").use(webpack.ProvidePlugin, [
{
$: "jquery",
jquery: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery",
},
]);
},
}); });

Loading…
Cancel
Save