123
parent
5557446d27
commit
d903cd1544
|
@ -188,6 +188,30 @@ const infoApi = {
|
|||
//禁用设备
|
||||
stopDevice(params) {
|
||||
return postPBRequest("/data", params, 56102);
|
||||
}
|
||||
},
|
||||
//重置健康信息
|
||||
resetHealth(params) {
|
||||
return postPBRequest("/data", params, 56007);
|
||||
},
|
||||
// 设定
|
||||
setHis(params) {
|
||||
return postPBRequest("/data", params, 56004);
|
||||
},
|
||||
// 启用
|
||||
startHis(params) {
|
||||
return postPBRequest("/data", params, 56002);
|
||||
},
|
||||
// 导出
|
||||
exportHis(params) {
|
||||
return postPBRequest("/data", params, 56006);
|
||||
},
|
||||
// 清空
|
||||
clearHis(params) {
|
||||
return postPBRequest("/data", params, 56005);
|
||||
},
|
||||
// 写值
|
||||
writeValue(params) {
|
||||
return postPBRequest("/data", params, 56001);
|
||||
},
|
||||
};
|
||||
export default infoApi;
|
|
@ -1,54 +1,56 @@
|
|||
<template>
|
||||
<el-drawer v-model="visible" direction="rtl" :before-close="closeDialog">
|
||||
<div class="btns">
|
||||
<el-button type="primary" size="large" @click="resetCount">重置</el-button>
|
||||
</div>
|
||||
|
||||
<fieldset class="box2 title_box2">
|
||||
<legend class="box-ht">点位名称</legend>
|
||||
<span>{{ formData.point_name }}</span>
|
||||
<el-button type="primary" size="large" @click="resetHealth">重置</el-button>
|
||||
</fieldset>
|
||||
<fieldset class="box2">
|
||||
<legend class="box-ht">读计数</legend>
|
||||
<!-- <el-form label-width="130px">
|
||||
<el-form label-width="130px">
|
||||
<el-form-item label="总计数">
|
||||
<el-input disabled v-model="health[healthObj.status]"></el-input>
|
||||
<el-input disabled v-model="formData.read_health.total_count"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="成功计数">
|
||||
<el-input disabled v-model="health[healthObj.status]"></el-input>
|
||||
<el-input disabled v-model="formData.read_health.success_count"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="最后一次成功时间">
|
||||
<el-input disabled v-model="healthObj.last_success_time"></el-input>
|
||||
<el-input disabled v-model="formData.read_health.last_success_time"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="失败计数">
|
||||
<el-input disabled v-model="health[healthObj.status]"></el-input>
|
||||
<el-input disabled v-model="formData.read_health.failure_count"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="最后一次失败时间">
|
||||
<el-input disabled v-model="healthObj.last_failure_ctime"></el-input>
|
||||
<el-input disabled v-model="formData.read_health.last_failure_ctime"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="最后一次失败原因">
|
||||
<el-input disabled v-model="healthObj.last_failure_cause"></el-input>
|
||||
<el-input disabled v-model="formData.read_health.last_failure_cause"></el-input>
|
||||
</el-form-item>
|
||||
</el-form> -->
|
||||
</el-form>
|
||||
</fieldset>
|
||||
<fieldset class="box2">
|
||||
<legend class="box-ht">写计数</legend>
|
||||
<!-- <el-form label-width="130px">
|
||||
<el-form label-width="130px">
|
||||
<el-form-item label="总计数">
|
||||
<el-input disabled v-model="health[healthObj.status]"></el-input>
|
||||
<el-input disabled v-model="formData.write_health.total_count"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="成功计数">
|
||||
<el-input disabled v-model="health[healthObj.status]"></el-input>
|
||||
<el-input disabled v-model="formData.write_health.success_count"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="最后一次成功时间">
|
||||
<el-input disabled v-model="healthObj.last_success_time"></el-input>
|
||||
<el-input disabled v-model="formData.write_health.last_success_time"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="失败计数">
|
||||
<el-input disabled v-model="health[healthObj.status]"></el-input>
|
||||
<el-input disabled v-model="formData.write_health.failure_count"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="最后一次失败时间">
|
||||
<el-input disabled v-model="healthObj.last_failure_ctime"></el-input>
|
||||
<el-input disabled v-model="formData.write_health.last_failure_ctime"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="最后一次失败原因">
|
||||
<el-input disabled v-model="healthObj.last_failure_cause"></el-input>
|
||||
<el-input disabled v-model="formData.write_health.last_failure_cause"></el-input>
|
||||
</el-form-item>
|
||||
</el-form> -->
|
||||
|
||||
</el-form>
|
||||
</fieldset>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
@ -74,27 +76,17 @@ export default {
|
|||
});
|
||||
|
||||
onMounted(() => {
|
||||
getD();
|
||||
});
|
||||
const getD = async () => {
|
||||
// const parm = {
|
||||
// driver_name: props.formData.driver_name
|
||||
// }
|
||||
// const res = await infoApi.getD(parm);
|
||||
// if (res.code == 0) {
|
||||
// state.name = res.data.name
|
||||
// state.healthObj = res.data.health;
|
||||
// state.countObj = res.data.count;
|
||||
// }
|
||||
};
|
||||
const resetCount = async () => {
|
||||
// const parm = {
|
||||
// name: props.formData.name
|
||||
// }
|
||||
// const res = await infoApi.resetCount(parm);
|
||||
// if (res.code == 0) {
|
||||
// getD();
|
||||
// }
|
||||
const resetHealth = async () => {
|
||||
const parm = {
|
||||
driver_name: props.formData.driver_name,
|
||||
device_name: props.formData.device_name,
|
||||
point_name: props.formData.point_name
|
||||
}
|
||||
const res = await infoApi.resetHealth(parm);
|
||||
if (res.code == 0) {
|
||||
ElMessage.success(res.message || "请求成功");
|
||||
}
|
||||
}
|
||||
const closeDialog = () => {
|
||||
ctx.emit("dialogClose");
|
||||
|
@ -105,13 +97,13 @@ export default {
|
|||
...toRefs(state),
|
||||
visible,
|
||||
closeDialog,
|
||||
getD,
|
||||
resetCount
|
||||
resetHealth
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
|
||||
::v-deep .el-form-item__content {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
|
@ -120,4 +112,9 @@ export default {
|
|||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.title_box2 {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -1,13 +1,25 @@
|
|||
<template>
|
||||
<el-drawer v-model="visible" direction="rtl" :before-close="closeDialog">
|
||||
<div class="btns">
|
||||
<el-button type="primary" size="large" @click="set">设定</el-button>
|
||||
<el-button type="primary" size="large" @click="start">启用</el-button>
|
||||
<el-button type="primary" size="large" @click="expor">导出</el-button>
|
||||
<el-button type="primary" size="large" @click="clear">清空</el-button>
|
||||
|
||||
<div class="count-status">
|
||||
<el-tag>最大计数: {{ formData.history && formData.history.max }}</el-tag>
|
||||
<el-tag>状态: {{ formData.history && !formData.history.enable?"启用":"禁用" }}</el-tag>
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<el-table :data="tableData" height="400" border
|
||||
:header-cell-style="{ background: '#F6F7FC' }" size="large">
|
||||
<el-table-column type="index" label="序号" width="80" align="center" />
|
||||
<el-table-column prop="timestamp" label="时间戳" align="center" />
|
||||
<el-table-column prop="value" label="点位值" align="center" />
|
||||
|
||||
</el-table>
|
||||
</div>
|
||||
<div class="btns">
|
||||
<el-button type="primary" size="large" @click="setHis">设定</el-button>
|
||||
<el-button type="primary" size="large" @click="startHis">启用</el-button>
|
||||
<el-button type="primary" size="large" @click="exportHis">导出</el-button>
|
||||
<el-button type="primary" size="large" @click="clearHis">清空</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</template>
|
||||
<script>
|
||||
|
@ -18,40 +30,71 @@ export default {
|
|||
props: ["dialogVisible", "formData"],
|
||||
emits: ["dialogClose", "dialogSuccess"],
|
||||
setup(props, ctx) {
|
||||
const ruleFormRef = ref(null);
|
||||
const state = reactive({
|
||||
|
||||
tableData: [],
|
||||
})
|
||||
const ruleFormRef = ref(null);
|
||||
|
||||
const visible = computed(() => {
|
||||
return props.dialogVisible;
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
getHis();
|
||||
console.log(props.formData)
|
||||
state.tableData = props.formData.history.history_value
|
||||
});
|
||||
const getHis = async () => {
|
||||
// const parm = {
|
||||
// driver_name: props.formData.driver_name
|
||||
// }
|
||||
// const res = await infoApi.getD(parm);
|
||||
// if (res.code == 0) {
|
||||
// state.name = res.data.name
|
||||
// state.healthObj = res.data.health;
|
||||
// state.countObj = res.data.count;
|
||||
// }
|
||||
};
|
||||
const set = async () => {
|
||||
|
||||
const setHis = async () => {
|
||||
const parm = {
|
||||
driver_name: props.formData.driver_name,
|
||||
device_name: props.formData.device_name,
|
||||
point_name: props.formData.point_name,
|
||||
history: {
|
||||
max: props.formData.history.max
|
||||
}
|
||||
const start = async () => {
|
||||
|
||||
}
|
||||
const expor = async () => {
|
||||
|
||||
const res = await infoApi.setHis(parm);
|
||||
if (res.code == 0) {
|
||||
state.name = res.data.name
|
||||
ElMessage.success(res.message || "请求成功");
|
||||
ctx.emit("dialogClose");
|
||||
}
|
||||
}
|
||||
const startHis = async () => {
|
||||
const parm = {
|
||||
driver_name: props.formData.driver_name,
|
||||
device_name: props.formData.device_name,
|
||||
point_name: props.formData.point_name,
|
||||
}
|
||||
const res = await infoApi.startHis(parm);
|
||||
if (res.code == 0) {
|
||||
ElMessage.success(res.data || "请求成功");
|
||||
ctx.emit("dialogClose");
|
||||
}
|
||||
}
|
||||
const exportHis = async () => {
|
||||
const parm = {
|
||||
driver_name: props.formData.driver_name,
|
||||
device_name: props.formData.device_name,
|
||||
point_name: props.formData.point_name,
|
||||
}
|
||||
const res = await infoApi.exportHis(parm);
|
||||
if (res.code == 0) {
|
||||
ElMessage.success(res.message || "请求成功");
|
||||
ctx.emit("dialogClose");
|
||||
}
|
||||
}
|
||||
const clearHis = async () => {
|
||||
const parm = {
|
||||
driver_name: props.formData.driver_name,
|
||||
device_name: props.formData.device_name,
|
||||
point_name: props.formData.point_name,
|
||||
}
|
||||
const res = await infoApi.clearHis(parm);
|
||||
if (res.code == 0) {
|
||||
ElMessage.success(res.data || "请求成功");
|
||||
ctx.emit("dialogClose");
|
||||
}
|
||||
const clear = async () => {
|
||||
|
||||
}
|
||||
const closeDialog = () => {
|
||||
ctx.emit("dialogClose");
|
||||
|
@ -62,11 +105,10 @@ export default {
|
|||
...toRefs(state),
|
||||
visible,
|
||||
closeDialog,
|
||||
getHis,
|
||||
set,
|
||||
start,
|
||||
expor,
|
||||
clear
|
||||
setHis,
|
||||
startHis,
|
||||
exportHis,
|
||||
clearHis
|
||||
};
|
||||
},
|
||||
};
|
||||
|
@ -80,4 +122,8 @@ export default {
|
|||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
.count-status {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
}
|
||||
</style>
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
<template>
|
||||
<el-drawer v-model="visible" direction="rtl" :before-close="closeDialog">
|
||||
<div class="count-status">
|
||||
<el-input-number v-model="writeV" style="width: 240px" placeholder="请输入点位值" />
|
||||
</div>
|
||||
<div class="btns">
|
||||
<el-button type="primary" size="large" @click="writeValue">写值</el-button>
|
||||
</div>
|
||||
</el-drawer>
|
||||
</template>
|
||||
<script>
|
||||
import { onMounted, reactive, ref, toRefs, computed, nextTick } from "vue";
|
||||
import infoApi from "@/api/infoApi.js";
|
||||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
export default {
|
||||
props: ["dialogVisible", "formData"],
|
||||
emits: ["dialogClose", "dialogSuccess"],
|
||||
setup(props, ctx) {
|
||||
const state = reactive({
|
||||
writeV: '',
|
||||
})
|
||||
const visible = computed(() => {
|
||||
return props.dialogVisible;
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
|
||||
});
|
||||
|
||||
const writeValue = async () => {
|
||||
const parm = {
|
||||
driver_name: props.formData.driver_name,
|
||||
device_name: props.formData.device_name,
|
||||
point_name: props.formData.point_name,
|
||||
point_in_value: state.writeV
|
||||
}
|
||||
const res = await infoApi.writeValue(parm);
|
||||
if (res.code == 0) {
|
||||
ElMessage.success(res.data || "请求成功");
|
||||
ctx.emit("dialogClose");
|
||||
}
|
||||
}
|
||||
const closeDialog = () => {
|
||||
ctx.emit("dialogClose");
|
||||
};
|
||||
|
||||
|
||||
return {
|
||||
...toRefs(state),
|
||||
visible,
|
||||
closeDialog,
|
||||
writeValue
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .el-form-item__content {
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
|
||||
>span {
|
||||
margin-left: 10px;
|
||||
}
|
||||
}
|
||||
.count-status {
|
||||
display: flex;
|
||||
justify-content: space-around;
|
||||
}
|
||||
</style>
|
|
@ -319,3 +319,6 @@ s {
|
|||
.height100 {
|
||||
height:100%;
|
||||
}
|
||||
.el-drawer__header {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
|
@ -15,7 +15,7 @@
|
|||
<el-tag>通讯名称: {{ curDriver.driver_name }}</el-tag>
|
||||
<el-tag>通讯总计数: {{ curDriver.health && curDriver.health.total_count }}</el-tag>
|
||||
<el-tag>通讯描述: {{ curDriver.driver_description }}</el-tag>
|
||||
<el-tag>通讯状态: {{ curDriver.driver_status }}</el-tag>
|
||||
<el-tag>通讯状态: {{ txStatus[curDriver.driver_status] }}</el-tag>
|
||||
<el-tag>通讯成功计数: {{ curDriver.health && curDriver.health.success_count }}</el-tag>
|
||||
<el-tag>通讯失败计数: {{ curDriver.health && curDriver.health.failure_count }}</el-tag>
|
||||
<el-tag>通讯最后一次成功时间: {{ curDriver.health && curDriver.health.last_success_time }}</el-tag>
|
||||
|
@ -45,16 +45,16 @@
|
|||
<div class="box-info">
|
||||
<el-tag>设备名称: {{ curDevice.device_name }}</el-tag>
|
||||
<el-tag>设备描述: {{ curDevice.device_description }}</el-tag>
|
||||
<el-button type="danger" @click="doDevice">{{!curDevice.device_disable? '启用' : '禁用'}}</el-button>
|
||||
<el-button type="danger" @click="doDevice">{{!curDevice.device_disable? '禁用' : '启用'}}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-table :data="tableData" height="400" border :row-class-name="tableRowClassName"
|
||||
<el-table :data="tableData" height="400" border
|
||||
:header-cell-style="{ background: '#F6F7FC' }" size="large">
|
||||
<el-table-column type="index" label="序号" width="80" align="center" />
|
||||
<el-table-column prop="point_name" label="名称" width="150" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="point_description" label="描述" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="point_quality" label="质量" width="100" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="point_value" label="值" width="100" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="point_in_value" label="点位值" width="100" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="point_unit" label="单位" width="100" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="point_type" label="类型" width="100" align="center" show-overflow-tooltip />
|
||||
<el-table-column prop="point_timestamp" label="时间戳" width="200" align="center" show-overflow-tooltip />
|
||||
|
@ -63,10 +63,10 @@
|
|||
<el-button type="success" size="large" @click="openHis(scope.row)">
|
||||
历史
|
||||
</el-button>
|
||||
<el-button type="warning" size="large" @click="openDe(scope.row)" v-if="scope.row.point_permissions ==2">
|
||||
<el-button type="warning" size="large" @click="openDe(scope.row)" >
|
||||
详情
|
||||
</el-button>
|
||||
<el-button type="primary" size="large" v-if="scope.row.point_permissions ==2">
|
||||
<el-button type="primary" size="large" @click="openWrite(scope.row)" >
|
||||
写值
|
||||
</el-button>
|
||||
</template>
|
||||
|
@ -93,6 +93,14 @@
|
|||
@dialogSuccess="dialogSuccess"
|
||||
>
|
||||
</His>
|
||||
<Write
|
||||
:formData="formData"
|
||||
:dialogVisible="dialogVisible2"
|
||||
v-if="dialogVisible2"
|
||||
@dialogClose="dialogClose"
|
||||
@dialogSuccess="dialogSuccess"
|
||||
>
|
||||
</Write>
|
||||
</el-card>
|
||||
</template>
|
||||
|
||||
|
@ -102,10 +110,13 @@ import infoApi from "@/api/infoApi.js";
|
|||
import { ElMessage, ElMessageBox } from "element-plus";
|
||||
import De from "@/components/De.vue";
|
||||
import His from "@/components/His.vue";
|
||||
import Write from "@/components/Write.vue";
|
||||
export default {
|
||||
name: "data",
|
||||
components: {
|
||||
De
|
||||
De,
|
||||
His,
|
||||
Write
|
||||
},
|
||||
setup() {
|
||||
|
||||
|
@ -128,10 +139,13 @@ export default {
|
|||
formData: {},
|
||||
dialogVisible: false,
|
||||
dialogVisible1: false,
|
||||
dialogVisible2: false,
|
||||
txStatus: [] //通讯状态
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
getDriverData();
|
||||
getTxStatus();
|
||||
});
|
||||
|
||||
const getDriverData = async () => {
|
||||
|
@ -147,6 +161,16 @@ export default {
|
|||
|
||||
|
||||
}
|
||||
// 获取通讯状态
|
||||
const getTxStatus = async () => {
|
||||
|
||||
const res = await infoApi.getTxStatus();
|
||||
if (res.code == 0) {
|
||||
state.txStatus = res.data;
|
||||
}
|
||||
|
||||
|
||||
};
|
||||
const changeQd = (i, item) => {
|
||||
state.indexi = i;
|
||||
state.curDriver = item;
|
||||
|
@ -191,26 +215,30 @@ export default {
|
|||
|
||||
}
|
||||
}
|
||||
// 启用禁用设备
|
||||
const doDevice = async () => {
|
||||
const param = {
|
||||
driver_name: state.curDevice.driver_name,
|
||||
device_name: state.curDevice.device_name
|
||||
}
|
||||
const res = !state.curDevice.device_disable? await infoApi.startDevice(param): await infoApi.stopDevice(param);
|
||||
const res = !state.curDevice.device_disable? await infoApi.stopDevice(param): await infoApi.startDevice(param);
|
||||
if (res.code == 0) {
|
||||
ElMessage.success(res.message || '请求成功');
|
||||
getDeviceData(state.curDevice.driver_name);
|
||||
getPointData(state.curDevice);
|
||||
getDeviceData(state.curDriver.driver_name);
|
||||
}
|
||||
}
|
||||
const dialogClose = () => {
|
||||
state.dialogVisible = false;
|
||||
state.dialogVisible1 = false;
|
||||
state.dialogVisible2= false;
|
||||
// 更新点位表
|
||||
getPointData(state.curDevice);
|
||||
};
|
||||
|
||||
const dialogSuccess = () => {
|
||||
state.dialogVisible = false;
|
||||
state.dialogVisible1 = false;
|
||||
state.dialogVisible2= false;
|
||||
};
|
||||
const openDe = (item) => {
|
||||
state.formData = JSON.parse(JSON.stringify(item));
|
||||
|
@ -221,6 +249,11 @@ export default {
|
|||
state.formData = JSON.parse(JSON.stringify(item));
|
||||
state.dialogVisible1 = true;
|
||||
|
||||
}
|
||||
const openWrite = (item) => {
|
||||
state.formData = JSON.parse(JSON.stringify(item));
|
||||
state.dialogVisible2 = true;
|
||||
|
||||
}
|
||||
return {
|
||||
...toRefs(state),
|
||||
|
@ -231,7 +264,9 @@ export default {
|
|||
dialogClose,
|
||||
dialogSuccess,
|
||||
openDe,
|
||||
openHis
|
||||
openHis,
|
||||
openWrite,
|
||||
getTxStatus
|
||||
};
|
||||
},
|
||||
};
|
||||
|
@ -321,6 +356,7 @@ export default {
|
|||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 0 10px;
|
||||
.el-tag {
|
||||
margin: 10px;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue