设备节点

This commit is contained in:
刘召雪
2020-11-23 13:27:14 +08:00
parent 13fbb593d9
commit 8d7216a6c8
5 changed files with 282 additions and 15 deletions

View File

@ -0,0 +1,47 @@
import request from '@/utils/request'
// 获取设备节点列表
export function deviceNodeList (params) {
return request({
url: '/system/device/node/list',
method: 'get',
params
})
}
// 新增节点
export function deviceNodeSave (data) {
return request({
url: '/system/device/node/save',
method: 'post',
data
})
}
/**
* 查询设备节点详细
* @param {*} nodeId
*/
export function deviceNodeInfo (nodeId) {
return request({
url: '/system/device/node/' + nodeId,
method: 'get'
})
}
// 删除节点
export function deviceNodeDel (ids) {
return request({
url: '/system/device/node/' + ids,
method: 'delete'
})
}
// 获取节点下拉
export function deviceNodeSelect (params) {
return request({
url: '/system/device/node/select',
method: 'get',
params
})
}

View File

@ -3,7 +3,7 @@ import request from '@/utils/request'
// 获取节点列表
export function nodeList (params) {
return request({
url: '/system/node/list',
url: '/system/product/node/list',
method: 'get',
params
})

View File

@ -0,0 +1,47 @@
import request from '@/utils/request'
// 获取产品节点列表
export function productNodeList (params) {
return request({
url: '/system/product/node/list',
method: 'get',
params
})
}
/**
* 查询产品节点详细
* @param { Object } params
*/
export function productNodeInfo (nodeId) {
return request({
url: '/system/product/node/' + nodeId,
method: 'get'
})
}
export function productNodeSelect (params) {
return request({
url: '/system/product/node/select',
method: 'get',
params
})
}
// 新增节点
export function productNodeAdd (data) {
return request({
url: '/system/product/node/save',
method: 'post',
data
})
}
// 删除节点
export function productNodeDel (ids) {
return request({
url: '/system/product/node/' + ids,
method: 'delete'
})
}

View File

@ -57,8 +57,12 @@
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-plus" @click="handleAddnode(scope.row)">新增节点
</el-button>
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:device:edit']">修改
</el-button>
<el-button size="mini" type="text" icon="el-icon-view" @click="handleview(scope.row)">查看节点
</el-button>
<el-button class="text-danger" size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
v-hasPermi="['system:device:edit']">删除</el-button>
</template>
@ -128,6 +132,46 @@
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
<!-- 节点列表弹框 -->
<el-dialog title="节点列表" :visible.sync="nodeDialog">
<!-- <el-button type="danger" icon="el-icon-delete" size="mini" :disabled="nodeMultiple" @click="batchHandleDeletenode">批量删除</el-button> -->
<el-button type="danger" icon="el-icon-delete" size="mini" :disabled="nodeMultiple" @click="batchHandleDeletenode">批量删除</el-button>
<el-table :data="nodeData" @selection-change="nodeHandleSelectionChange">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
<el-table-column prop="deviceId" label="设备ID"></el-table-column>
<el-table-column prop="nodeId" label="节点SN"></el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdatenode(scope.row)">修改</el-button>
<el-button class="text-danger" size="mini" type="text" icon="el-icon-delete" @click="handleDeletenode(scope.row)">删除</el-button>
</template>
</el-table-column>
</el-table>
</el-dialog>
<!-- 添加节点参数配置对话框 -->
<el-dialog :title="title" :visible.sync="nodeOpen" width="500px" append-to-body>
<el-form ref="nodeForm" :model="nodeForm" :rules="nodeRules" label-width="100px">
<el-form-item label="设备ID" prop="deviceId">
<el-input v-model="nodeForm.deviceId" disabled placeholder="请输入设备ID" />
</el-form-item>
<el-form-item label="节点名称" prop="nodeDataId">
<el-select v-model="nodeForm.nodeDataId" :disabled="!!nodeForm.id" clearable placeholder="请选择">
<el-option v-for="item in productNodeSelectList" :key="item.id" :label="item.nodeName" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="节点SN" prop="nodeId">
<el-input v-model="nodeForm.nodeId" placeholder="请输入节点SN" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="saveNode"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</el-dialog>
</section>
</template>
@ -140,10 +184,14 @@ import {
update,
del,
} from "@/api/hardware/device";
// import { nodeList, addNode, nodeInfo, delNode, nodeSelect } from "@/api/system/device/node";
import { select as productSelect } from "@/api/hardware/product";
import { select as projectSelect } from "@/api/hardware/project";
import { userSelect } from "@/api/system/user";
import { list as provinceList, getProvinceByParent } from "@/api/hardware/province";
import { productNodeList, productNodeSelect } from "@/api/hardware/productNode";
import { deviceNodeList, deviceNodeSave, deviceNodeInfo, deviceNodeDel, deviceNodeSelect } from "@/api/hardware/deviceNode";
export default {
name: "DeviceList",
components: {
@ -159,6 +207,7 @@ export default {
// },
data () {
return {
snapDeviceInfo: {},
// 产品下拉列表
productSelectList: [],
userSelectList: [],
@ -166,12 +215,15 @@ export default {
provinceSelectList: [],
citySelectList: [],
districtSelectList: [],
productNodeSelectList: [],
// 选中数组
ids: [],
nodeIds: [],
// 非单个禁用
single: true,
// 非多个禁用
multiple: true,
nodeMultiple: true,
// 显示搜索条件
showSearch: true,
// 总条数
@ -180,10 +232,14 @@ export default {
title: "",
// 是否显示弹出层
open: false,
nodeDialog: false,
nodeOpen:false,
// 表单参数
form: {},
nodeForm: {},
// 表格数据
tableData: null,
nodeData: null,
// 查询参数
queryParams: {
pageNum: 1,
@ -218,6 +274,17 @@ export default {
{ required: true, message: "区不能为空", trigger: "blur" },
],
},
nodeRules: {
nodeId: [
{ required: true, message: "节点SN不能为空", trigger: "blur" },
],
deviceId: [
{ required: true, message: "设备ID不能为空", trigger: "blur" },
],
nodeDataId: [
{ required: true, message: "节点真正ID不能为空", trigger: "blur" },
],
}
};
},
created () {
@ -262,14 +329,14 @@ export default {
}
})
},
getProvinceByParent(id) {
getProvinceByParent (id) {
return new Promise((resolve, reject) => {
getProvinceByParent(id).then(({ code, msg, data }) => {
if (code == 200) {
resolve(data);
} else {
this.$message.error(msg);
reject({msg, code})
reject({ msg, code })
}
}).catch(error => {
reject(error)
@ -304,10 +371,18 @@ export default {
});
},
// 获取节点数据列表
getListnode ({ deviceId }) {
deviceNodeList({ deviceId }).then((response) => {
this.nodeData = response.rows;
});
},
// 取消按钮
cancel () {
this.open = false;
// this.reset();
this.nodeOpen = false;
this.reset();
},
// 表单重置
@ -318,7 +393,13 @@ export default {
deviceName: "",
status: "0",
};
this.nodeForm = {
nodeId: "",
deviceId: "",
nodeDataId: "",
};
this.resetForm("form");
this.resetForm("nodeForm");
},
// 多选框选中数据
@ -328,6 +409,12 @@ export default {
this.multiple = !selection.length;
},
// nodeHandleSelectionChange(){},
nodeHandleSelectionChange (selection) {
this.nodeIds = selection.map((item) => item.id);
this.nodeMultiple = !selection.length;
},
/** 新增按钮操作 */
handleAdd () {
this.reset();
@ -335,10 +422,32 @@ export default {
this.title = "添加设备";
},
// 新增节点
handleAddnode (row) {
productNodeSelect({productId: row.productId}).then(({ code, msg, select }) => {
if (code == 200) {
this.productNodeSelectList = select;
} else {
this.$message.error(msg);
}
})
this.reset();
this.nodeOpen = true;
this.title = "添加设备节点";
this.nodeForm.deviceId = row.deviceId;
},
// 查看节点
handleview (row) {
this.nodeDialog = true;
this.snapDeviceInfo = row;
this.getListnode(row)
},
/** 修改按钮操作 */
handleUpdate (row) {
this.reset();
info(row.id).then( ({ code, info, msg }) => {
info(row.id).then(({ code, info, msg }) => {
if (200 == code) {
this.provinceCodeChange(info.proCode);
this.cityCodeChange(info.cityCode);
@ -350,6 +459,21 @@ export default {
}
})
},
/** 修改节点 */
handleUpdatenode(row){
this.reset();
productNodeSelect({productId: this.snapDeviceInfo.productId}).then(({ code, msg, select }) => {
if (code == 200) {
this.productNodeSelectList = select;
} else {
this.$message.error(msg);
}
})
this.nodeOpen = true;
this.title = "修改设备节点";
this.nodeForm = row;
},
/** 提交按钮 */
submitForm: function () {
this.$refs["form"].validate((valid) => {
@ -381,6 +505,19 @@ export default {
});
},
// 节点提交
saveNode: function () {
deviceNodeSave(this.nodeForm).then((res) => {
if (200 == res.code) {
this.msgSuccess(this.title + "成功");
this.nodeOpen = false;
this.getList();
} else {
this.msgSuccess(res.msg);
}
});
},
/** 删除按钮操作 */
handleDelete (row) {
const ids = row.id || this.ids;
@ -400,6 +537,47 @@ export default {
}).catch(res => { })
},
handleDeletenode (row) {
const ids = row.id || this.ids;
this.$confirm("是否确认删除?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
return deviceNodeDel(ids);
})
.then((res) => {
if (200 == res.code) {
this.getListnode(row);
this.msgSuccess("删除成功");
} else {
this.msgError(res.msg);
}
})
.catch((res) => { });
},
// 批量删除节点
batchHandleDeletenode () {
this.$confirm("是否确认删除?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
})
.then(() => {
return deviceNodeDel(this.nodeIds);
})
.then((res) => {
if (200 == res.code) {
this.getListnode(...this.nodeData);
this.msgSuccess("删除成功");
} else {
this.msgError(res.msg);
}
})
.catch((res) => { });
},
// 页码尺寸改变
handleSizeChange (val) {
this.queryForm.pagesize = val;

View File

@ -94,9 +94,6 @@
<el-form-item label="产品ID" prop="productId">
<el-input v-model="nodeForm.productId" disabled placeholder="请输入产品ID" />
</el-form-item>
<el-form-item label="节点ID" prop="nodeId">
<el-input v-model="nodeForm.nodeId" placeholder="请输入节点ID" />
</el-form-item>
<el-form-item label="节点名称" prop="nodeName">
<el-input v-model="nodeForm.nodeName" placeholder="请输入节点名称" />
</el-form-item>
@ -119,9 +116,7 @@
<el-table :data="nodeData" @selection-change="nodeHandleSelectionChange">
<el-table-column type="selection" width="55" align="center">
</el-table-column>
<el-table-column prop="nodeId" label="节点ID"></el-table-column>
<el-table-column prop="nodeName" label="节点名称"></el-table-column>
<el-table-column prop="status" label="状态"></el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
<el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdatenode(scope.row)" v-hasPermi="['system:node:edit']">
@ -138,7 +133,7 @@
<script>
import { list, Info, add, update, del } from "@/api/hardware/product";
import { nodeList, addNode, nodeInfo, delNode, select } from "@/api/hardware/node";
import { productNodeList, productNodeInfo, productNodeSelect, productNodeAdd, productNodeDel } from "@/api/hardware/productNode";
export default {
name: "ProductList",
data () {
@ -233,7 +228,7 @@ export default {
// 获取节点数据列表
getListnode ({ productId }) {
nodeList({ productId }).then((response) => {
productNodeList({ productId }).then((response) => {
this.nodeData = response.rows;
});
},
@ -339,7 +334,7 @@ export default {
},
/** 节点提交操作 */
saveNode: function () {
addNode(this.nodeForm).then((res) => {
productNodeAdd(this.nodeForm).then((res) => {
if (200 == res.code) {
this.msgSuccess(this.title + "成功");
this.nodeOpen = false;
@ -380,7 +375,7 @@ export default {
type: "warning",
})
.then(() => {
return delNode(ids);
return productNodeDel(ids);
})
.then((res) => {
if (200 == res.code) {
@ -401,7 +396,7 @@ export default {
type: "warning",
})
.then(() => {
return delNode(this.nodeIds);
return productNodeDel(this.nodeIds);
})
.then((res) => {
if (200 == res.code) {