|
|
@@ -90,21 +90,15 @@
|
|
|
<el-table-column label="操作">
|
|
|
<template #default="scope">
|
|
|
<div>
|
|
|
- <el-button link >
|
|
|
- <el-tooltip effect="dark" content="详情">
|
|
|
- <el-icon>
|
|
|
- <Memo />
|
|
|
- </el-icon>
|
|
|
- </el-tooltip>
|
|
|
- </el-button>
|
|
|
- <el-button link >
|
|
|
+
|
|
|
+ <el-button link @click="goedit(scope.row)">
|
|
|
<el-tooltip effect="dark" content="编辑">
|
|
|
<el-icon>
|
|
|
<Edit />
|
|
|
</el-icon>
|
|
|
</el-tooltip>
|
|
|
</el-button>
|
|
|
- <el-button link @click="cdbd" >
|
|
|
+ <el-button link @click="cdbd(scope.row)" >
|
|
|
<el-tooltip effect="dark" content="测点绑定" >
|
|
|
<el-icon><VideoPlay /></el-icon>
|
|
|
</el-tooltip>
|
|
|
@@ -143,60 +137,90 @@
|
|
|
|
|
|
|
|
|
<el-dialog
|
|
|
- title="选择测点"
|
|
|
+ title="测点配置"
|
|
|
v-model="cdbdshow"
|
|
|
>
|
|
|
|
|
|
<div style="display: flex; flex-direction: row; justify-content: space-between">
|
|
|
<div style="display: flex; flex-direction: row;">
|
|
|
- <div
|
|
|
- style="
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- flex-wrap: nowrap;
|
|
|
- align-items: center;
|
|
|
- "
|
|
|
- >
|
|
|
- <div style="font-size: 12px; width: 100px;">监测点编号:</div>
|
|
|
- <el-input
|
|
|
- v-model="searchform.devicename"
|
|
|
- placeholder="请输入"
|
|
|
- ></el-input>
|
|
|
- </div>
|
|
|
- <div
|
|
|
- style="
|
|
|
- display: flex;
|
|
|
- flex-direction: row;
|
|
|
- flex-wrap: nowrap;
|
|
|
- align-items: center;
|
|
|
- "
|
|
|
- >
|
|
|
- <div style="font-size: 12px; width: 80px;margin-right: 10px;text-align: right;">描述:</div>
|
|
|
- <el-input
|
|
|
- v-model="searchform.devicename"
|
|
|
- placeholder="请输入"
|
|
|
- ></el-input>
|
|
|
- </div>
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
</div>
|
|
|
<div>
|
|
|
- <el-button type="primary" plain>重置</el-button>
|
|
|
- <el-button type="primary">搜索</el-button>
|
|
|
+ <el-button type="primary" plain @click="addrow">新增</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
- <el-table :data="devicetabledata" style="margin-top: 15px" height="400px">
|
|
|
- <el-table-column label="传感器编号"></el-table-column>
|
|
|
- <el-table-column label="服务"></el-table-column>
|
|
|
- <el-table-column label="描述"></el-table-column>
|
|
|
- <el-table-column label="类型"></el-table-column>
|
|
|
- <el-table-column label="单位"></el-table-column>
|
|
|
+ <el-table :data="pointdata" style="margin-top: 15px" height="400px">
|
|
|
+ <el-table-column label="变量名" prop="name">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-input v-model="scope.row.name"></el-input>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="名称" prop="label">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-input v-model="scope.row.label"></el-input>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="单位" prop="unitId">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-popover placement="right" :width="400" trigger="click">
|
|
|
+ <template #reference>
|
|
|
+ <el-button plain>{{ `${scope.row.unit}(${scope.row.unitType})` }}</el-button>
|
|
|
+ </template>
|
|
|
+ <el-table :data="allUnit" @cellClick="(row1)=>{scope.row.unit=row1.unitName;scope.row.unitType=row1.unitSymbol;}">
|
|
|
+ <el-table-column property="unitName" label="单位名称" />
|
|
|
+ <el-table-column property="unitSymbol" label="单位符号" />
|
|
|
+ <el-table-column property="unitType" label="分类" />
|
|
|
+ </el-table>
|
|
|
+ </el-popover>
|
|
|
+
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="描述" prop="desc">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-input v-model="scope.row.desc"></el-input>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="点表配置" prop="dataPointId">
|
|
|
+ <template #default="scope">
|
|
|
+ <span v-if="currentsensor.protocalType==3">无需配置</span>
|
|
|
+ <div v-if="currentsensor.protocalType!=3">
|
|
|
+ <el-popover placement="right" :width="400" trigger="click">
|
|
|
+ <template #reference>
|
|
|
+ <el-button plain>{{ `${ (currentdatapointlist.find(i=>(i.id+"")==scope.row.dataPointId) ?? {name:'失效'}).name}` }}</el-button>
|
|
|
+ </template>
|
|
|
+ <el-table :data="currentdatapointlist" @cellClick="(row1)=>{scope.row.dataPointId=row1.id;}">
|
|
|
+ <el-table-column property="name" label="点位名称" />
|
|
|
+ <el-table-column property="valueType" label="变量类型" />
|
|
|
+ <el-table-column property="addr" label="地址" />
|
|
|
+ </el-table>
|
|
|
+ </el-popover>
|
|
|
+ </div>
|
|
|
+
|
|
|
+
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ <el-table-column label="操作">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-popconfirm title="确定删除该测点?" @confirm="deldatapoint(scope.$index)">
|
|
|
+ <template #reference>
|
|
|
+ <el-button link
|
|
|
+ ><el-tooltip effect="dark" content="删除"
|
|
|
+ ><el-icon><Delete /></el-icon></el-tooltip
|
|
|
+ ></el-button>
|
|
|
+ </template>
|
|
|
+ </el-popconfirm>
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
</el-table>
|
|
|
|
|
|
|
|
|
<template #footer>
|
|
|
<div class="dialog-footer">
|
|
|
<el-button @click="cdbdshow=false;"> 取消 </el-button>
|
|
|
- <el-button type="primary" @click="cdbdshow=false"> 保存 </el-button>
|
|
|
+ <el-button type="primary" @click="dosave"> 保存 </el-button>
|
|
|
</div>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
@@ -216,19 +240,20 @@
|
|
|
</template>
|
|
|
|
|
|
<script setup>
|
|
|
-import {ref} from "vue";
|
|
|
+import {onMounted, ref} from "vue";
|
|
|
import {LayTree} from "@layui/layui-vue";
|
|
|
import "@layui/layui-vue/lib/index.css";
|
|
|
import {useRoute, useRouter} from "vue-router";
|
|
|
import {listEquipmentOrganizational} from "@/api/data/equipmentOrganizational"
|
|
|
import {listEquipmentSbook} from "@/api/data/equipmentSbook"
|
|
|
import {listSensor,delSensor,addSensor,updateSensor} from "@/api/data/sensor"
|
|
|
-import {delGateway} from "@/api/data/gateway";
|
|
|
+import {listDatapoint} from "@/api/data/datapoint";
|
|
|
+import {listUnit} from "@/api/data/unit";
|
|
|
import {ElMessage, ElMessageBox} from "element-plus";
|
|
|
|
|
|
const {proxy} = getCurrentInstance();
|
|
|
const {protocal_type, sensor_type, sensor_status} = proxy.useDict("protocal_type", "sensor_type", "sensor_status");
|
|
|
-
|
|
|
+const pointdata = ref([]);
|
|
|
|
|
|
const route = useRoute();
|
|
|
const router = useRouter();
|
|
|
@@ -255,6 +280,7 @@ const pagedata = ref({
|
|
|
current:1
|
|
|
});
|
|
|
|
|
|
+const allUnit = ref([])
|
|
|
|
|
|
const deleterow =(item)=>{
|
|
|
delSensor(item.id).then((res)=>{
|
|
|
@@ -303,7 +329,12 @@ const initdata = ()=>{
|
|
|
}
|
|
|
|
|
|
const goadd = () => {
|
|
|
- router.push("/device/sensordash/add")
|
|
|
+ router.push("/device/sensordash/add?type=0")
|
|
|
+}
|
|
|
+
|
|
|
+const goedit = (item)=>{
|
|
|
+ localStorage.setItem("currentsensor",JSON.stringify(item))
|
|
|
+ router.push("/device/sensordash/add?type=1")
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -326,7 +357,7 @@ const getalldata = () => {
|
|
|
let deviceids = getdeviceid(currentnode.value).split(",").filter(i => i != "").join(",");
|
|
|
if (deviceids != "") {
|
|
|
deviceids = deviceids.replaceAll("device_", "")
|
|
|
- listSensor({...pagedata, params: {deviceids: deviceids,...searchform.value}}).then(res => {
|
|
|
+ listSensor({...pagedata.value, params: {deviceids: deviceids,...searchform.value}}).then(res => {
|
|
|
const {rows,total,page,size} = res;
|
|
|
pagedata.value = {total:total,current:page, size:10};
|
|
|
devicetabledata.value = rows.map(item => {
|
|
|
@@ -377,12 +408,52 @@ const searchform = ref({
|
|
|
desc: ""
|
|
|
});
|
|
|
|
|
|
-
|
|
|
+const currentdatapointlist = ref([]);
|
|
|
const cdbdshow = ref(false);
|
|
|
-const cdbd = () => {
|
|
|
+const currentsensor = ref(null);
|
|
|
+const cdbd = (item) => {
|
|
|
cdbdshow.value = true;
|
|
|
+ listDatapoint({sensorId:item.id}).then(res=>{
|
|
|
+ const {rows,total,page,size} = res;
|
|
|
+ currentdatapointlist.value = rows;
|
|
|
+ currentsensor.value = item;
|
|
|
+ try{
|
|
|
+ pointdata.value = JSON.parse(item.datapoints);
|
|
|
+ }catch (e){}
|
|
|
+
|
|
|
+ })
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+const deldatapoint = (index)=>{
|
|
|
+ pointdata.value.splice(index,1)
|
|
|
}
|
|
|
|
|
|
+const addrow = ()=>{
|
|
|
+ pointdata.value.push({
|
|
|
+ name: "",
|
|
|
+ unit: "",
|
|
|
+ unitType: "0",
|
|
|
+ desc: "",
|
|
|
+ label: "",
|
|
|
+ dataPointId:null
|
|
|
+ })
|
|
|
+}
|
|
|
+onMounted(()=>{
|
|
|
+ listUnit({}).then(res=>{
|
|
|
+ allUnit.value = res.data;
|
|
|
+ })
|
|
|
+})
|
|
|
+
|
|
|
+const dosave = ()=>{
|
|
|
+ let data = JSON.stringify(pointdata.value.filter(i=>i.name!==""));
|
|
|
+ currentsensor.value.datapoints = data;
|
|
|
+ updateSensor(currentsensor.value).then(res=>{
|
|
|
+ ElMessage.success("保存成功");
|
|
|
+ cdbdshow.value = false;
|
|
|
+ getalldata();
|
|
|
+ })
|
|
|
+}
|
|
|
|
|
|
</script>
|
|
|
|