You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1037 lines
31 KiB
Vue

<template>
<el-dialog
class="parameterSetDialog"
title="参数设置"
:visible.sync="isShow"
:close-on-click-modal="false"
width="1100px"
@close="handleclose"
>
<el-tabs v-model="activeName" type="border-card" @tab-click="handleClick">
<!-- <el-tab-pane label="装置时间" name="1">
<div class="deviceTime">
<el-form
:model="deviceTimeForm"
label-position="right"
label-width="84px"
>
<el-form-item label="装置时间">
<el-input
v-model="deviceTimeForm.zztime"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item label="新装置时间">
<el-input v-model="deviceTimeForm.newzztime"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="searchTime">查询</el-button>
<el-button type="primary" @click="setTime">设置</el-button>
</el-form-item>
</el-form>
</div>
</el-tab-pane> -->
<el-tab-pane label="采样参数" name="2">
<div class="tabsBox">
<el-tabs
v-model="tabsActive"
type="card"
@tab-click="samphandleClick"
>
<el-tab-pane label="查询实际参数" name="first">
<div class="queryParam">
<el-form
:model="samplingForm"
label-position="right"
label-width="152px"
>
<el-form-item label="采集时间周期(分钟)">
<el-input
v-model="samplingForm.mainTime"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item label="高速采样点数">
<el-input
v-model="samplingForm.sampleCount"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item label="高速采样频率">
<el-input
v-model="samplingForm.sampleFrequency"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item label="心跳上送周期(分钟)">
<el-input
v-model="samplingForm.heartbeatTime"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="samplingSearch"
:loading="sampLoading"
>查询</el-button
>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
<el-tab-pane label="设置参数" name="second">
<div class="queryParam">
<el-form
:model="samplingForm"
label-position="right"
label-width="164px"
ref="samplingFormref"
:rules="samplingrules"
>
<el-form-item label="采集时间周期(分钟)">
<el-input v-model="samplingForm.mainTime"></el-input>
</el-form-item>
<el-form-item label="高速采样点数">
<el-input v-model="samplingForm.sampleCount"></el-input>
</el-form-item>
<el-form-item label="高速采样频率">
<el-input v-model="samplingForm.sampleFrequency"></el-input>
</el-form-item>
<el-form-item
label="心跳上送周期(分钟)"
prop="heartbeatTime"
>
<el-input v-model="samplingForm.heartbeatTime"></el-input>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="samplingSet"
:loading="sampSetLoading"
>设置</el-button
>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
</el-tabs>
</div>
</el-tab-pane>
<el-tab-pane label="上位机信息" name="3">
<div class="tabsBox">
<el-tabs v-model="tabsActive" type="card" @tab-click="uphandleClick">
<el-tab-pane label="查询实际参数" name="first">
<div class="queryParam">
<el-form
:model="upperComputer"
label-position="right"
label-width="124px"
>
<el-form-item label="IP地址">
<el-input
v-model="upperComputer.ip"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item label="端口号">
<el-input
v-model="upperComputer.port"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item label="域名">
<el-input
v-model="upperComputer.domain"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="upperSearch"
:loading="upperLoading"
>查询</el-button
>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
<el-tab-pane label="设置参数" name="second">
<div class="queryParam">
<el-form
:model="upperComputer"
label-position="right"
label-width="124px"
ref="upperFormref"
:rules="upperrulse"
>
<el-form-item label="IP地址" prop="ip">
<el-input v-model="upperComputer.ip"></el-input>
</el-form-item>
<el-form-item label="端口号" prop="port">
<el-input v-model="upperComputer.port"></el-input>
</el-form-item>
<el-form-item label="域名">
<el-input v-model="upperComputer.domain"></el-input>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="upperSet"
:loading="upperSetLoading"
>设置</el-button
>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
</el-tabs>
</div>
</el-tab-pane>
<el-tab-pane label="ID参数" name="4">
<div class="tabsBox">
<el-tabs v-model="tabsActive" type="card" @tab-click="idhandleClick">
<el-tab-pane label="查询实际参数" name="first">
<div class="queryParam">
<el-form
:model="idParameter"
label-position="right"
label-width="124px"
>
<el-form-item label="CMD_ID">
<el-input
v-model="idParameter.newCmdId"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item label="杆塔ID">
<el-input
v-model="idParameter.componentId"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item label="原始ID">
<el-input
v-model="idParameter.originalId"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="idSearch"
:loading="idLoading"
>查询</el-button
>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
<el-tab-pane label="设置参数" name="second">
<div class="queryParam">
<el-form
:model="idParameter"
label-position="right"
label-width="124px"
ref="idParameterref"
:rules="idrules"
>
<el-form-item label="CMD_ID" prop="newCmdId">
<el-input v-model="idParameter.newCmdId"></el-input>
</el-form-item>
<el-form-item label="杆塔ID" prop="componentId">
<el-input v-model="idParameter.componentId"></el-input>
</el-form-item>
<el-form-item label="原始ID">
<el-input
v-model="idParameter.originalId"
disabled="disabled"
></el-input>
</el-form-item>
<el-form-item>
<el-button
type="primary"
@click="idSet"
:loading="idSetLoading"
>设置</el-button
>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
</el-tabs>
</div>
</el-tab-pane>
<el-tab-pane label="图像采集参数" name="5">
<div class="tabsBox">
<imageCapture ref="imageCaptureref" :rowdata="rowData"></imageCapture>
</div>
</el-tab-pane>
<el-tab-pane label="视频采集参数" name="6">
<div class="tabsBox">
<videoCapture ref="videoCaptureref" :rowdata="rowData"></videoCapture>
</div>
</el-tab-pane>
<el-tab-pane label="装置运行状态报" name="7">
<div class="runform">
<el-form :model="runStatusForm" :inline="true" label-width="150px">
<el-form-item label="4G信号强度">
<el-input
v-model="runStatusForm.zztime"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item label="2G信号强度">
<el-input
v-model="runStatusForm.newzztime"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item label="剩余运行内存">
<el-input
v-model="runStatusForm.newzztime"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item label="剩余存储内存">
<el-input
v-model="runStatusForm.newzztime"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item label="上次启动时间">
<el-input
v-model="runStatusForm.newzztime"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item label="查询最新时间">
<el-input
v-model="runStatusForm.newzztime"
:disabled="true"
></el-input>
</el-form-item>
<el-form-item class="runformbtn">
<el-button
type="primary"
@click="runstatusSearch"
:loading="statusLoading"
>查询</el-button
>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
<el-tab-pane label="GPS位置" name="8">
<div class="runform">
<el-form :model="gpsForm" :inline="true" label-width="150px">
<!-- <el-form-item label="坐标类型">
<el-input v-model="gpsForm.zztime" :disabled="true"></el-input>
</el-form-item> -->
<el-form-item label="经度">
<el-input v-model="gpsForm.longitude" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="纬度">
<el-input v-model="gpsForm.latitude" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="半径">
<el-input v-model="gpsForm.radius" :disabled="true"></el-input>
</el-form-item>
<el-form-item label="查询最新时间">
<!-- <el-input
v-model="gpsForm.updatetime"
:disabled="true"
></el-input> -->
<el-date-picker
:disabled="true"
v-model="gpsForm.updatetime"
type="datetime"
placeholder="选择日期时间"
>
</el-date-picker>
</el-form-item>
<el-form-item class="runformbtn">
<el-button type="primary" @click="gpsSearch">查询</el-button>
</el-form-item>
</el-form>
</div>
</el-tab-pane>
<el-tab-pane label="基本操作" name="9">
<div class="resetDevice">
<h3>装置复位</h3>
<el-button type="primary" @click.native.stop="handleDeviceReset"
>复位</el-button
>
</div>
</el-tab-pane>
</el-tabs>
<div slot="footer" class="dialog-footer">
<el-button @click="isShow = false">取 消</el-button>
</div>
</el-dialog>
</template>
<script>
import {
resetTerminalApi,
getTermLastGPSPosition,
setTermCamera,
getTermCameraRequest,
} from "@/utils/api/index";
import imageCapture from "./imageCapture.vue";
import videoCapture from "./videoCapture.vue";
export default {
props: {
photoDialog: {
type: Boolean,
},
},
components: {
imageCapture,
videoCapture,
},
data() {
let validCmid = (rule, value, callback) => {
let reg = /^[0-9A-Za-z_/\\/-]{17}$/;
if (!reg.test(value)) {
callback(new Error("装置id为17位编码"));
} else {
callback();
}
};
return {
isShow: false,
activeName: "2",
deviceTimeForm: {
zztime: "", //装置时间
newzztime: "", //新装置时间
},
//采样参数
samplingForm: {
mainTime: "",
sampleCount: "",
sampleFrequency: "",
heartbeatTime: "",
},
sampLoading: false,
sampSetLoading: false,
samplingrules: {
heartbeatTime: [
{ required: true, message: "请输入心跳周期", trigger: "blur" },
],
},
//上位机信息
upperComputer: {
ip: "",
port: "",
domain: "",
},
upperrulse: {
ip: [{ required: true, message: "请输入ip", trigger: "blur" }],
port: [{ required: true, message: "请输入端口号", trigger: "blur" }],
},
upperLoading: false,
upperSetLoading: false,
//id参数
idParameter: {
newCmdId: "",
componentId: "",
originalId: "",
},
idrules: {
newCmdId: [
{ required: true, message: "请输入CMD_ID", trigger: "blur" },
{ validator: validCmid, trigger: "blur" },
],
componentId: [
{ required: true, message: "请输入杆塔ID", trigger: "blur" },
{ validator: validCmid, trigger: "blur" },
],
},
idLoading: false,
idSetLoading: false,
runStatusForm: {},
statusLoading: false,
gpsForm: {}, //gps位置
tabsActive: "first",
rowData: {},
requestid: "",
timer: null,
i: 0,
};
},
mounted() {},
created() {},
watch: {},
methods: {
//tab被触发
handleClick(tab, event) {
window.clearInterval(this.timer);
this.timer = null;
this.i = 0;
console.log(tab, event);
this.$refs.imageCaptureref.clearData();
this.$refs.videoCaptureref.clearData();
//每次切换重置选项卡
this.tabsActive = "first";
if (tab.label == "图像采集参数") {
console.log("图像采集参数");
this.$refs.imageCaptureref.getSingleAccess(this.rowData);
this.$refs.imageCaptureref.getRatio(this.rowData);
} else if (tab.label == "视频采集参数") {
console.log("视频采集参数");
this.$refs.videoCaptureref.getSingleAccess(this.rowData);
this.$refs.videoCaptureref.getRatio(this.rowData);
}
},
//装置时间查询
searchTime() {},
//装置时间设置
setTime() {},
//采样参数重置数据
samphandleClick() {
this.samplingForm = {};
this.i = 0;
this.timer = null;
clearInterval(this.timer);
},
//上位机重置数据
uphandleClick() {
this.upperComputer = {};
this.i = 0;
this.timer = null;
clearInterval(this.timer);
},
//id重置数据
idhandleClick() {
this.idParameter = {};
this.i = 0;
this.timer = null;
clearInterval(this.timer);
},
//采样参数查询
// -act=sampling [0xA4 ] --flag=[Request Set Flag, default is set=1, 0: request] --rf=[Request Flag] --reqtype=[Request Type] --maintime=[Main Time] --samplecount=[Sample Count] --samplingfreq=[Sample Frequency] --heartbeat=[Heartbeat Time]
samplingSearch() {
if (this.rowData.isonline || this.rowData.onlinestatus === 1) {
this.sampLoading = true;
let params = [
{
name: "act",
value: "sampling",
},
{
name: "flag",
value: 0,
},
// {
// name: "rf",
// value: 15,
// },
// {
// name: "reqtype",
// value: "0xA4",
// },
{
name: "maintime",
value: "",
},
{
name: "samplecount",
value: "",
},
{
name: "samplingfreq",
value: "",
},
{
name: "heartbeat",
value: "",
},
];
this.setTermFn(params);
} else {
this.$message({
duration: 1500,
showClose: true,
message: "装置下线,发送指令失败",
type: "error",
});
}
},
//设置采样查询
samplingSet() {
if (this.rowData.isonline || this.rowData.onlinestatus === 1) {
this.$refs.samplingFormref.validate((valid) => {
if (valid) {
this.sampSetLoading = true;
let params = [
{
name: "act",
value: "sampling",
},
{
name: "flag",
value: 1,
},
// {
// name: "rf",
// value: 15,
// },
// {
// name: "reqtype",
// value: "0xA4",
// },
{
name: "maintime",
value: this.samplingForm.mainTime,
},
{
name: "samplecount",
value: this.samplingForm.sampleCount,
},
{
name: "samplingfreq",
value: this.samplingForm.sampleFrequency,
},
{
name: "heartbeat",
value: this.samplingForm.heartbeatTime,
},
];
this.setTermFn(params);
} else {
console.log("error submit!!");
return false;
}
});
} else {
this.$message({
duration: 1500,
showClose: true,
message: "装置下线,发送指令失败",
type: "error",
});
}
},
//上位机查询
//--act=cma [0xA7] --flag=[Request Set Flag, default is set=1, 0: request] --ip=[IP Address] --cmaport=[CMA Port] --domain=[Domain]
upperSearch() {
if (this.rowData.isonline || this.rowData.onlinestatus === 1) {
this.upperLoading = true;
let params = [
{
name: "act",
value: "cma",
},
{
name: "flag",
value: 0,
},
{
name: "ip",
value: "",
},
{
name: "cmaport",
value: "",
},
{
name: "domain",
value: "",
},
];
this.setTermFn(params);
} else {
this.$message({
duration: 1500,
showClose: true,
message: "装置下线,发送指令失败",
type: "error",
});
}
},
//上位机设置
upperSet() {
if (this.rowData.isonline || this.rowData.onlinestatus === 1) {
this.$refs.upperFormref.validate((valid) => {
console.log(valid);
if (valid) {
this.upperSetLoading = true;
let params = [
{
name: "act",
value: "cma",
},
{
name: "flag",
value: 1,
},
{
name: "ip",
value: this.upperComputer.ip,
},
{
name: "cmaport",
value: this.upperComputer.port,
},
{
name: "domain",
value: this.upperComputer.domain,
},
];
this.setTermFn(params);
} else {
console.log("error submit!!");
return false;
}
});
} else {
this.$message({
duration: 1500,
showClose: true,
message: "装置下线,发送指令失败",
type: "error",
});
}
},
//id参数查询
// --act=termid [0xAC] --flag=[Request Set Flag, default is set=1, 0: request] --newcmdid=[New CMD ID] --compid=[Component Id] --orgid=[Original Id]
idSearch() {
if (this.rowData.isonline || this.rowData.onlinestatus === 1) {
this.idLoading = true;
let params = [
{
name: "act",
value: "termid",
},
{
name: "flag",
value: 0,
},
{
name: "newcmdid",
value: "",
},
{
name: "compid",
value: "",
},
{
name: "orgid",
value: "",
},
];
this.setTermFn(params);
} else {
this.$message({
duration: 1500,
showClose: true,
message: "装置下线,发送指令失败",
type: "error",
});
}
},
//id参数设置
idSet() {
if (this.rowData.isonline || this.rowData.onlinestatus === 1) {
this.$refs.idParameterref.validate((valid) => {
if (valid) {
this.idSetLoading = true;
let params = [
{
name: "act",
value: "termid",
},
{
name: "flag",
value: 1,
},
{
name: "newcmdid",
value: this.idParameter.newCmdId,
},
{
name: "compid",
value: this.idParameter.componentId,
},
{
name: "orgid",
value: this.idParameter.originalId,
},
];
this.setTermFn(params);
} else {
console.log("error submit!!");
return false;
}
});
} else {
this.$message({
duration: 1500,
showClose: true,
message: "装置下线,发送指令失败",
type: "error",
});
}
},
//装置状态报
//--act=runningstatus [0xEA] --cmdid=[CMD_ID]
runstatusSearch() {
this.statusLoading = true;
let params = [
{
name: "act",
value: "runningstatus",
},
];
this.setTermFn(params);
},
setTermFn(dataParams) {
console.log("点击了统一的接口", "runningstatus");
setTermCamera({
termId: this.rowData.id,
list: dataParams,
})
.then((res) => {
console.log(res);
this.requestid = res.data.requestId;
//this.getinfo1();
clearInterval(this.timer);
this.timer = window.setInterval(() => {
this.getinfo();
this.i++;
}, 1000);
// this.timer = setInterval(() => {
// this.getinfo();
// this.i++;
// }, 1000);
})
.catch((err) => {});
},
getinfo() {
getTermCameraRequest({ requestid: this.requestid })
.then((res) => {
if (res.data.success == 1) {
window.clearInterval(this.timer);
this.timer = null;
this.i = 0;
this.sampLoading = false;
this.sampSetLoading = false;
this.upperLoading = false;
this.upperSetLoading = false;
this.idLoading = false;
this.idSetLoading = false;
this.statusLoading = false;
console.log("终止轮询");
// && res.data.result == 255
console.log(JSON.parse(res.data.data));
this.samplingForm = JSON.parse(res.data.data);
//ip地址解析开始
this.upperComputer = JSON.parse(res.data.data);
//修改cmdid
this.idParameter = JSON.parse(res.data.data);
let hexArray = this.upperComputer.ip
.toString(16)
.match(/.{1,2}/g)
.reverse();
console.log(hexArray);
for (let j = 0; j < hexArray.length; j++) {
console.log(hexArray[j]);
console.log(parseInt(hexArray[j], 16));
hexArray[j] = parseInt(hexArray[j], 16);
}
console.log(hexArray);
this.upperComputer.ip = hexArray.join(".");
//ip地址解析结束
console.log(this.idParameter);
this.$message({
duration: 1500,
showClose: true,
message: "信息已更新",
type: "success",
});
} else if (this.i > 9) {
window.clearInterval(this.timer);
this.timer = null;
this.i = 0;
this.$message({
duration: 1500,
showClose: true,
message: "暂未获取到信息,请稍后再试!!",
type: "warning",
});
this.sampLoading = false;
this.sampSetLoading = false;
this.upperLoading = false;
this.upperSetLoading = false;
this.idLoading = false;
this.idSetLoading = false;
this.statusLoading = false;
}
})
.catch((err) => {});
},
//gps位置查询
gpsSearch() {
console.log(this.rowData);
getTermLastGPSPosition({
termId: this.rowData.id,
})
.then((res) => {
this.gpsForm = res.data;
console.log(this.gpsForm);
$moment().format("YYYY-MM-DD HH:mm:ss");
// this.$message({
// duration: 1500,
// showClose: true,
// message: "gps信息已更新",
// type: "success",
// });
})
.catch((err) => {});
},
//装置复位
handleDeviceReset() {
console.log(this.rowData);
this.$confirm("此操作将复位装置, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
resetTerminalApi({ cmId: this.rowData.cmdId || this.rowData.cmdid })
.then((res) => {
if (res.code == 200) {
this.$message({
duration: 1500,
showClose: true,
message: "装置已复位",
type: "success",
});
} else {
this.$message({
duration: 1500,
showClose: true,
message: res.msg,
type: "error",
});
}
})
.catch((err) => {});
})
.catch(() => {
// this.$message({
// duration: 1500,
// showClose: true,
// type: "info",
// message: "已取消删除",
// });
});
},
display(val) {
this.isShow = true;
this.rowData = val;
console.log(this.rowData);
},
hide() {
this.isShow = false;
},
handleclose() {
this.isShow = false;
this.activeName = "2";
this.tabsActive = "first";
this.samplingForm = {};
this.upperComputer = {};
this.idParameter = {};
this.gpsForm = {};
this.i = 0;
clearInterval(this.timer);
this.timer = null;
this.sampLoading = false;
this.sampSetLoading = false;
this.upperLoading = false;
this.upperSetLoading = false;
this.idLoading = false;
this.idSetLoading = false;
this.statusLoading = false;
},
},
destroyed() {
if (this.timer) {
console.log(this.timer);
clearInterval(this.timer);
this.timer = null;
this.i = 0;
} //利用vue的生命周期函数
},
};
</script>
<style lang="less">
.parameterSetDialog {
.el-tabs__content {
height: 436px;
.deviceTime {
width: 400px;
margin: 0 auto;
margin-top: 24px;
.el-input {
width: 200px;
}
}
.runform {
width: 730px;
margin: 0 auto;
margin-top: 24px;
.runformbtn {
margin-top: 10px;
width: 100%;
display: flex;
.el-form-item__content {
margin: auto;
}
}
.el-input {
width: 200px;
}
}
.queryParam {
width: 400px;
margin: 0 auto;
margin-top: 24px;
.el-input {
width: 200px;
}
}
.resetDevice {
h3 {
margin-bottom: 8px;
font-size: 16px;
font-weight: normal;
}
}
.tabsBox {
.el-tabs__item.is-active {
color: #fff;
background-color: #169e8c;
}
}
.el-input.is-disabled .el-input__inner {
color: #666;
}
}
}
</style>