Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
3d1b94c8d7
@ -12,8 +12,10 @@
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.0.10",
|
||||
"@liveqing/liveplayer-v3": "3.7.10",
|
||||
"@tinymce/tinymce-vue": "^6.1.0",
|
||||
"@types/js-cookie": "^3.0.2",
|
||||
"@types/three": "^0.175.0",
|
||||
"@types/tinymce": "^4.6.9",
|
||||
"@vueuse/core": "^9.1.1",
|
||||
"@wangeditor/editor": "^5.0.0",
|
||||
"@wangeditor/editor-for-vue": "^5.1.10",
|
||||
@ -38,6 +40,7 @@
|
||||
"sm-crypto": "^0.3.12",
|
||||
"sortablejs": "^1.14.0",
|
||||
"three": "^0.152.2",
|
||||
"tinymce": "^7.8.0",
|
||||
"tween": "^0.9.0",
|
||||
"vue": "^3.2.40",
|
||||
"vue-clipboard3": "^2.0.0",
|
||||
|
68
riis-web/src/api/auxiliarymanage/index.ts
Normal file
68
riis-web/src/api/auxiliarymanage/index.ts
Normal file
@ -0,0 +1,68 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
//分页查询变电站辅控设备
|
||||
export function queryDevice(params:any){
|
||||
return request({
|
||||
url: '/auxcontrol/meter-device/page',
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//查询所有变电站辅控设备
|
||||
export function listDevice(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/Device/list',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//新增变电站辅控设备信息
|
||||
export function addDevice(data:any){
|
||||
return request({
|
||||
url: '/auxcontrol/meter-device/addMeterDevice',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//修改变电站辅控设备信息
|
||||
export function updateDevice(data:any){
|
||||
return request({
|
||||
url: '/auxcontrol/meter-device/updateMeterDevice',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//根据ID删除变电站辅控设备信息
|
||||
export function deleteDeviceById(params:any){
|
||||
return request({
|
||||
url: '/auxcontrol/meter-device/deleteMeterDeviceById',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//批量删除变电站辅控设备信息
|
||||
export function deleteDeviceByIds(params:any){
|
||||
return request({
|
||||
url: '/auxcontrol/meter-device/deleteDeviceByIds',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
|
||||
//批量修改变电站辅控设备信息
|
||||
export function updateDeviceByIds(params:any){
|
||||
return request({
|
||||
url: '/auxcontrol/meter-device/batchUpdateMeterDeviceIp' ,
|
||||
method: 'post',
|
||||
data:params
|
||||
});
|
||||
}
|
||||
|
||||
//查询视频监控的设备信息
|
||||
export function listWvpDevices(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/Device/listWvpDevices',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
@ -2,7 +2,7 @@ import request from '@/utils/request';
|
||||
//新增变电站辅控设备信号
|
||||
export function addDeviceSignal(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceSignal/addDeviceSignal',
|
||||
url: '/auxcontrol/device-signal/addDeviceSignal',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
@ -10,7 +10,7 @@ export function addDeviceSignal(data:any){
|
||||
//分页查询变电站辅控设备信号
|
||||
export function queryDeviceSignal(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceSignal/page',
|
||||
url: '/auxcontrol/device-signal/page',
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
@ -27,7 +27,7 @@ export function listDeviceSignal(params:any){
|
||||
//修改变电站辅控设备信号
|
||||
export function updateDeviceSignal(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceSignal/updateDeviceSignal',
|
||||
url: '/auxcontrol/device-signal/updateDeviceSignal',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
@ -35,7 +35,7 @@ export function updateDeviceSignal(data:any){
|
||||
//根据ID删除变电站辅控设备信号
|
||||
export function deleteDeviceSignalById(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceSignal/deleteDeviceSignalById',
|
||||
url: '/auxcontrol/device-signal/deleteDeviceSignalById',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
@ -43,7 +43,7 @@ export function deleteDeviceSignalById(params:any){
|
||||
//批量删除变电站辅控设备信号
|
||||
export function deleteDeviceByIds(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceSignal/deleteDeviceSignalByIds',
|
||||
url: '/auxcontrol/device-signal/deleteDeviceSignalByIds',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
@ -51,16 +51,16 @@ export function deleteDeviceByIds(params:any){
|
||||
//查询所有变电站辅控设备
|
||||
export function getDeviceTree(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/Device/getDeviceTree',
|
||||
method: 'post',
|
||||
url: '/basedata/substation-maindevice/getComponentTree',
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
|
||||
// 新增变电站辅控设备告警参数设置
|
||||
// 新增变电站辅控设备告警参数设置
|
||||
export function addDeviceAlarmParameter(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceAlarmParameter/addDeviceAlarmParameter',
|
||||
url: '/auxcontrol/device-alarm-parameter/addDeviceAlarmParameter',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
@ -68,7 +68,7 @@ export function addDeviceAlarmParameter(data:any){
|
||||
//根据ID删除变电站辅控设备告警参数设置
|
||||
export function deleteDeviceAlarmParameterById(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceAlarmParameter/deleteDeviceAlarmParameterById',
|
||||
url: '/auxcontrol/device-alarm-parameter/deleteDeviceAlarmParameterById',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
@ -76,7 +76,7 @@ export function deleteDeviceAlarmParameterById(params:any){
|
||||
//批量删除变电站辅控设备告警参数设置
|
||||
export function deleteDeviceAlarmParameterByIds(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceAlarmParameter/deleteDeviceAlarmParameterByIds',
|
||||
url: '/auxcontrol/device-alarm-parameter/deleteDeviceAlarmParameterByIds',
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
@ -84,7 +84,7 @@ export function deleteDeviceAlarmParameterByIds(params:any){
|
||||
//分页查询变电站辅控设备告警参数设置
|
||||
export function DeviceAlarmParameter(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceAlarmParameter/page',
|
||||
url: '/auxcontrol/device-alarm-parameter/page',
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
@ -92,8 +92,16 @@ export function DeviceAlarmParameter(params:any){
|
||||
//修改变电站辅控设备告警参数设置
|
||||
export function updateDeviceAlarmParameter(data:any){
|
||||
return request({
|
||||
url: '/monitorConfig/DeviceAlarmParameter/updateDeviceAlarmParameter',
|
||||
url: '/auxcontrol/device-alarm-parameter/updateDeviceAlarmParameter',
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//根据系统编号查询设备
|
||||
export function getMeterDeviceByCode(data:any){
|
||||
return request({
|
||||
url: '/auxcontrol/meter-device/getMeterDeviceByCode',
|
||||
method: 'get',
|
||||
params:data
|
||||
});
|
||||
}
|
57
riis-web/src/api/systemmanage/index.ts
Normal file
57
riis-web/src/api/systemmanage/index.ts
Normal file
@ -0,0 +1,57 @@
|
||||
import request from '@/utils/request';
|
||||
|
||||
export function getSystemDevice(params:any){
|
||||
return request({
|
||||
url: '/auxcontrol/gateway-device/page' ,
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
|
||||
export function getSystemDeviceList(params:any){
|
||||
return request({
|
||||
url: '/monitorConfig/gateway-device/list' ,
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//网关机
|
||||
export function getGatewayList(params:any){
|
||||
return request({
|
||||
url: '/auxcontrol/gateway-device/getGatewayList' ,
|
||||
method: 'get',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//新增变电站系统设备
|
||||
export function addSystemDevice(data:any){
|
||||
return request({
|
||||
url: '/auxcontrol/gateway-device/addGatewayDevice' ,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//数据变电站系统设备
|
||||
export function updateSystemDevice(data:any){
|
||||
return request({
|
||||
url: '/auxcontrol/gateway-device/updateGatewayDevice' ,
|
||||
method: 'post',
|
||||
data
|
||||
});
|
||||
}
|
||||
//根据ID删除变电站系统设备
|
||||
export function deleteSystemDeviceById(params:any){
|
||||
return request({
|
||||
url: '/auxcontrol/gateway-device/deleteGatewayDeviceById' ,
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
||||
//批量变电站系统设备
|
||||
export function deleteSystemDeviceByIds(params:any){
|
||||
return request({
|
||||
url: '/auxcontrol/gateway-device/batchDeleteGateway' ,
|
||||
method: 'post',
|
||||
params:params
|
||||
});
|
||||
}
|
652
riis-web/src/views/ledgermanagement/auxiliarymanage/index.vue
Normal file
652
riis-web/src/views/ledgermanagement/auxiliarymanage/index.vue
Normal file
@ -0,0 +1,652 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, reactive, nextTick } from 'vue'
|
||||
import Page from '@/components/Pagination/page.vue'
|
||||
import { ElMessageBox, ElMessage, ElTable, FormRules, ElTree } from 'element-plus'
|
||||
import { getDeviceByType } from '@/api/device'
|
||||
import { queryDevice, addDevice, updateDevice, deleteDeviceById, deleteDeviceByIds, updateDeviceByIds } from '@/api/auxiliarymanage/index';
|
||||
import { getGatewayList } from '@/api/systemmanage'
|
||||
import Eldialog from '@/components/seccmsdialog/eldialog.vue'
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
const userStore = useUserStore();
|
||||
//树形控件类型定义
|
||||
interface Tree {
|
||||
[x: string]: any;
|
||||
label: string;
|
||||
children?: Tree[];
|
||||
}
|
||||
const ruleFormRef: any = ref(null);
|
||||
const equipform: any = ref({})
|
||||
const rules = reactive<FormRules>({
|
||||
deviceName: [{ required: true, message: "请输入设备名称", trigger: "blur" }],
|
||||
deviceCode: [{ required: true, message: "请输入设备编号", trigger: "blur" }],
|
||||
deviceType: [{ required: true, message: '请选择设备类型', trigger: 'change', }]
|
||||
});
|
||||
const queryInfo: any = ref({
|
||||
current: 1,
|
||||
size: 15,
|
||||
total: 0
|
||||
})
|
||||
const queryparams: any = ref({
|
||||
deviceModel: '',
|
||||
deviceType: '',
|
||||
status: '',
|
||||
deviceName: ''
|
||||
})
|
||||
const typeoptions: any = ref([])
|
||||
const regionoptions: any = ref([])
|
||||
|
||||
const statusoptions: any = ref([])
|
||||
const multipleSelection = ref([])
|
||||
const loading = ref(false)
|
||||
const tableData: any = ref([])
|
||||
const handleSelectionChange = (val: any) => {
|
||||
multipleSelection.value = val
|
||||
}
|
||||
const dialogVisible = ref(false)
|
||||
const dialogtitle = ref('新增辅控设备')
|
||||
|
||||
const defaultProps = { label: "dictname" };
|
||||
const checktreenode: any = ref({})
|
||||
const handleNodeClick = (data: Tree) => {
|
||||
queryInfo.value.current = 1
|
||||
queryInfo.value.size = 15
|
||||
queryparams.value.deviceName = ''
|
||||
queryparams.value.deviceModel = ''
|
||||
queryparams.value.deviceType = ''
|
||||
queryparams.value.status = ''
|
||||
checktreenode.value.code = data.itemcode
|
||||
checktreenode.value.id = data.id
|
||||
checktreenode.value.name = data.dictname
|
||||
getData();
|
||||
};
|
||||
const treeRef = ref<InstanceType<typeof ElTree>>()
|
||||
const treeData: any = ref([])
|
||||
const treeloading = ref(false)
|
||||
const vMove = {
|
||||
mounted(el: any) {
|
||||
el.onmousedown = function (e: any) {
|
||||
var init = e.clientX;
|
||||
var parent: any = document.getElementById("silderLeft");
|
||||
const initWidth: any = parent.offsetWidth;
|
||||
document.onmousemove = function (e) {
|
||||
var end = e.clientX;
|
||||
var newWidth = end - init + initWidth;
|
||||
parent.style.width = newWidth + "px";
|
||||
};
|
||||
document.onmouseup = function () {
|
||||
document.onmousemove = document.onmouseup = null;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
const temDeviceData: any = ref([]) // 列表
|
||||
function getSystemDevice() {
|
||||
getGatewayList({stationId:userStore.stationId}).then((res: any) => {
|
||||
temDeviceData.value = res.data
|
||||
})
|
||||
}
|
||||
function correlationSubmit() {
|
||||
let id = [] as any[];
|
||||
multipleSelection.value.forEach((item: any) => {
|
||||
id.push(item.deviceId)
|
||||
})
|
||||
let params = {
|
||||
ids: id,
|
||||
ip: equipform.value.netdeviceIp
|
||||
};
|
||||
updateDeviceByIds(params).then((res: any) => {
|
||||
ElMessage({
|
||||
message: "关联成功",
|
||||
type: "success",
|
||||
});
|
||||
correlationVisible.value = false
|
||||
getData()
|
||||
})
|
||||
}
|
||||
onMounted(() => {
|
||||
init()
|
||||
queryselect()
|
||||
})
|
||||
function init() {
|
||||
const params = {
|
||||
dictcode: 'system'
|
||||
}
|
||||
treeloading.value = true
|
||||
getDeviceByType(params).then((res: any) => {
|
||||
if (res.data.length !== 0 && res.data !== null) {
|
||||
treeData.value = res.data
|
||||
treeloading.value = false
|
||||
if (res.data.length !== 0 && res.data !== null) {
|
||||
nextTick(() => {
|
||||
treeRef.value?.setCurrentKey(res.data[0].id);
|
||||
checktreenode.value.code = res.data[0].itemcode
|
||||
checktreenode.value.name = res.data[0].dictname
|
||||
getData();
|
||||
});
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
function queryselect() {
|
||||
const statusparams = {
|
||||
dictcode: 'deviceStatus'
|
||||
}
|
||||
getDeviceByType(statusparams).then((res: any) => {
|
||||
statusoptions.value = res.data
|
||||
})
|
||||
const deviceTypeparams = {
|
||||
dictcode: 'deviceType'
|
||||
}
|
||||
getDeviceByType(deviceTypeparams).then((ress: any) => {
|
||||
typeoptions.value = ress.data
|
||||
})
|
||||
getDeviceByType({ dictcode: 'deviceArea' }).then((ress: any) => {
|
||||
regionoptions.value = ress.data
|
||||
})
|
||||
|
||||
}
|
||||
function getData() {
|
||||
loading.value = true
|
||||
const params = {
|
||||
systemcode: checktreenode.value.code,
|
||||
current: queryInfo.value.current,
|
||||
size: queryInfo.value.size,
|
||||
deviceName: queryparams.value.deviceName,
|
||||
deviceModel: queryparams.value.deviceModel,
|
||||
deviceType: queryparams.value.deviceType,
|
||||
status: queryparams.value.status
|
||||
}
|
||||
queryDevice(params).then((res: any) => {
|
||||
tableData.value = res.data.records
|
||||
queryInfo.value.total = res.data.total
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
function editclick(row: any) {
|
||||
isSwitch.value = false
|
||||
dialogtitle.value = '修改辅控设备'
|
||||
getSystemDevice()
|
||||
equipform.value = JSON.parse(JSON.stringify(row))
|
||||
dialogVisible.value = true
|
||||
}
|
||||
function delclick(row: any) {
|
||||
ElMessageBox.confirm("确定删除此辅控设备信息吗?", "删除提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}).then(() => {
|
||||
let params = {
|
||||
id: row.deviceId
|
||||
};
|
||||
deleteDeviceById(params).then((res: any) => {
|
||||
ElMessage({
|
||||
message: "删除成功",
|
||||
type: "success",
|
||||
});
|
||||
getData()
|
||||
});
|
||||
}).catch(() => { })
|
||||
}
|
||||
function delclicks() {
|
||||
ElMessageBox.confirm("确定删除选择辅控设备信息吗?", "删除提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}).then(() => {
|
||||
let id = [] as any[];
|
||||
multipleSelection.value.forEach((item: any) => {
|
||||
id.push(item.deviceId)
|
||||
})
|
||||
let params = {
|
||||
ids: id.join(','),
|
||||
};
|
||||
deleteDeviceByIds(params).then((res: any) => {
|
||||
ElMessage({
|
||||
message: "删除成功",
|
||||
type: "success",
|
||||
});
|
||||
getData()
|
||||
});
|
||||
}).catch(() => { })
|
||||
}
|
||||
function addclick() {
|
||||
if (ruleFormRef.value != null) ruleFormRef.value.resetFields();
|
||||
isSwitch.value = false
|
||||
equipform.value = {}
|
||||
equipform.value.systemcode = checktreenode.value.code
|
||||
equipform.value.status = '02'
|
||||
dialogtitle.value = '新增辅控设备'
|
||||
getSystemDevice()
|
||||
dialogVisible.value = true
|
||||
}
|
||||
const isSwitch = ref(false)
|
||||
function formsubmit(formEl: any) {
|
||||
formEl.validate((valid: any) => {
|
||||
if (valid) {
|
||||
if (isSwitch.value == true) {
|
||||
return
|
||||
}
|
||||
isSwitch.value = true
|
||||
loading.value = true
|
||||
equipform.value.stationId = userStore.stationId
|
||||
if (equipform.value.deviceId) {
|
||||
updateDevice(equipform.value).then((res: any) => {
|
||||
ElMessage({
|
||||
message: "修改成功",
|
||||
type: "success",
|
||||
});
|
||||
isSwitch.value = false
|
||||
dialogVisible.value = false
|
||||
loading.value = false
|
||||
getData()
|
||||
}).catch(() => {
|
||||
isSwitch.value = false
|
||||
loading.value = false
|
||||
})
|
||||
} else {
|
||||
addDevice(equipform.value).then((res: any) => {
|
||||
ElMessage({
|
||||
message: "新增成功",
|
||||
type: "success",
|
||||
});
|
||||
isSwitch.value = false
|
||||
dialogVisible.value = false
|
||||
loading.value = false
|
||||
getData()
|
||||
}).catch(() => {
|
||||
isSwitch.value = false
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
function handleClose() {
|
||||
if (ruleFormRef.value != null) ruleFormRef.value.resetFields();
|
||||
dialogVisible.value = false
|
||||
correlationVisible.value = false
|
||||
}
|
||||
function dateFormat(row: any) { // 时间方法
|
||||
const daterc = row;
|
||||
if (daterc != null) {
|
||||
var date = new Date(daterc);
|
||||
var year = date.getFullYear();
|
||||
var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1;
|
||||
date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
|
||||
var day = date.getDate() < 10 ? "0" + date.getDate() : date.getDate();
|
||||
var hours = date.getHours() < 10 ? "0" + date.getHours() : date.getHours();
|
||||
var minutes = date.getMinutes() < 10 ? "0" + date.getMinutes() : date.getMinutes();
|
||||
var seconds = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds();
|
||||
// 拼接
|
||||
return year + "-" + month + "-" + day + " " + hours + ":" + minutes + ":" + seconds;
|
||||
}
|
||||
}
|
||||
function resetData() {
|
||||
queryInfo.value.current = 1
|
||||
queryInfo.value.size = 10
|
||||
queryparams.value.deviceName = ''
|
||||
queryparams.value.deviceModel = ''
|
||||
queryparams.value.deviceType = ''
|
||||
queryparams.value.status = ''
|
||||
getData()
|
||||
}
|
||||
const correlationVisible = ref(false)
|
||||
function correlationClick() {
|
||||
equipform.value = {
|
||||
netdeviceIp: ""
|
||||
}
|
||||
getSystemDevice()
|
||||
correlationVisible.value = true
|
||||
}
|
||||
const tableRowClassName = ({
|
||||
row,
|
||||
rowIndex,
|
||||
}: {
|
||||
row: any
|
||||
rowIndex: number
|
||||
}) => {
|
||||
if (rowIndex % 2 === 0) {
|
||||
return 'warning-row'
|
||||
} else if (rowIndex % 2 === 1) {
|
||||
return 'success-row'
|
||||
}
|
||||
return ''
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<div class="faulttemplate-box">
|
||||
<aside id="silderLeft">
|
||||
<el-tree v-loading="treeloading" ref="treeRef" node-key="id" :data="treeData" :highlight-current="true"
|
||||
:props="defaultProps" :expand-on-click-node="false" @node-click="handleNodeClick"
|
||||
style="height: calc(100vh - 175px); overflow: auto;margin-top: 10px;">
|
||||
</el-tree>
|
||||
<div class="moveBtn" v-move>
|
||||
<div class="moveBtn-line"></div>
|
||||
</div>
|
||||
</aside>
|
||||
<section class="silderRight">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<div
|
||||
style="margin-bottom:10px;display: flex;display: -webkit-flex; justify-content: space-between;-webkit-justify-content: space-between; width: 100%;">
|
||||
<div>
|
||||
<el-input v-model="queryparams.deviceName" placeholder="请输入设备名称" style="width: 220px;"
|
||||
clearable />
|
||||
<el-input v-model="queryparams.deviceModel" placeholder="请输入设备型号"
|
||||
style="width: 220px;margin-left: 10px;" clearable />
|
||||
<el-select v-model="queryparams.deviceType" placeholder="请选择设备类型"
|
||||
style="width: 220px;margin-left: 10px;" clearable>
|
||||
<el-option v-for="item in typeoptions" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
<el-button class="searchButton" type="primary" style="margin-left: 10px;" @click="getData">搜索</el-button>
|
||||
<el-button class="searchButton" style="margin-left: 10px;" @click="resetData">重置</el-button>
|
||||
</div>
|
||||
<div>
|
||||
<el-button class="searchButton" :disabled="multipleSelection.length <= 0 ? true : false" type="primary"
|
||||
style="margin-left: 10px;" @click="correlationClick">关联网关设备IP</el-button>
|
||||
<el-button class="searchButton" type="primary" style="margin-left: 10px;"
|
||||
@click="addclick">新增</el-button>
|
||||
<el-button class="searchButton" :disabled="multipleSelection.length <= 0 ? true : false"
|
||||
style="margin-left: 10px;" @click="delclicks">删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table ref="multipleTableRef" :data="tableData" style="width: 100%;margin-bottom: 20px;height: calc(78vh);
|
||||
overflow: auto;" row-key="id" default-expand-all :v-loading="loading"
|
||||
@selection-change="handleSelectionChange" :row-class-name="tableRowClassName"
|
||||
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
||||
<el-table-column type="selection" align="center" width="55" />
|
||||
<el-table-column label="序号" type="index" width="50" />
|
||||
<el-table-column label="设备编号" prop="deviceCode" width="80" />
|
||||
<el-table-column label="设备名称" prop="deviceName" />
|
||||
<el-table-column label="设备类型" prop="deviceTypeName" width="170" />
|
||||
<el-table-column label="设备型号" prop="deviceModel" width="170" />
|
||||
<el-table-column label="出厂编号" prop="productionNum" width="150" />
|
||||
<el-table-column label="出厂日期" prop="productionDate" width="160">
|
||||
<template #default="scope">
|
||||
<span>{{ dateFormat(scope.row.productionDate) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="安装位置" prop="place" />
|
||||
<el-table-column label="网关设备IP" prop="netdeviceIp" width="120" />
|
||||
<el-table-column fixed="right" label="操作" width="80">
|
||||
<template #default="scope">
|
||||
<span
|
||||
style="display: flex;display: -webkit-flex;justify-content: space-around; -webkit-justify-content: space-around; ">
|
||||
<img src="@/assets/tableicon/xg.png" title="修改"
|
||||
style="cursor: pointer;" @click="editclick(scope.row)">
|
||||
<img src="@/assets/tableicon/sc.png" title="删除"
|
||||
style="cursor: pointer;" @click="delclick(scope.row)">
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<Page class="mt-[20px]" :total="queryInfo.total" v-model:size="queryInfo.size"
|
||||
v-model:current="queryInfo.current" @pagination="getData" />
|
||||
</section>
|
||||
<Eldialog v-if="dialogVisible" :title="dialogtitle" :zIndex="2000" :width="'50%'" @before-close="handleClose">
|
||||
<template v-slot:PopFrameContent>
|
||||
<el-form ref="ruleFormRef" :rules="rules" :model="equipform" label-width="120px" style="margin-top:15px ;">
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="所属系统">
|
||||
<el-input v-model="checktreenode.name" disabled clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="设备编号" prop="deviceCode">
|
||||
<el-input v-model="equipform.deviceCode" maxlength="40" show-word-limit
|
||||
placeholder="请输入设备编号" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="设备名称" prop="deviceName">
|
||||
<el-input v-model="equipform.deviceName" maxlength="100" show-word-limit
|
||||
placeholder="请输入设备名称" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="设备类型" prop="deviceType">
|
||||
<el-select v-model="equipform.deviceType" placeholder="请选择设备类型" style="width: 100%;" >
|
||||
<el-option v-for="item in typeoptions" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="中文描述">
|
||||
<el-input v-model="equipform.deviceDesc" maxlength="100" show-word-limit
|
||||
placeholder="请输入设备编号" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="设备型号">
|
||||
<el-input v-model="equipform.deviceModel" maxlength="100" show-word-limit
|
||||
placeholder="请输入设备型号" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="出厂编号">
|
||||
<el-input v-model="equipform.productionNum" maxlength="40" show-word-limit
|
||||
placeholder="请输入出厂编号" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="出厂日期">
|
||||
<el-date-picker v-model="equipform.productionDate" show-word-limit type="date"
|
||||
style="width:100%" format="YYYY-MM-DD" value-format="YYYY-MM-DD"
|
||||
placeholder="请输入出厂日期" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="生产厂家">
|
||||
<el-input v-model="equipform.manufacturer" maxlength="100" show-word-limit
|
||||
placeholder="请输入生产厂家" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="生产国家">
|
||||
<el-input v-model="equipform.madein" maxlength="100" show-word-limit
|
||||
placeholder="请输入生产国家" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="实物ID">
|
||||
<el-input v-model="equipform.phyassetId" maxlength="40" show-word-limit
|
||||
placeholder="请输入实物ID" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="区域标识">
|
||||
<!-- <el-input v-model="equipform.region" maxlength="40" show-word-limit placeholder="请输入区域标识" clearable /> -->
|
||||
<el-select style="width: 100%;" v-model="equipform.region" placeholder="请选择区域标识 ">
|
||||
<el-option v-for="item in regionoptions" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<el-form-item label="安装位置">
|
||||
<el-input v-model="equipform.place" maxlength="100" show-word-limit placeholder="请输入安装位置"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="以太网Mac地址">
|
||||
<el-input v-model="equipform.macAddr" maxlength="40" show-word-limit
|
||||
placeholder="请输入以太网Mac地址" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="width: 50%;">
|
||||
<el-form-item label="以太网IP地址">
|
||||
<el-input v-model="equipform.ipAddr" maxlength="40" show-word-limit
|
||||
placeholder="请输入以太网IP地址" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
</div>
|
||||
<el-form-item label="对应网关设备IP">
|
||||
<el-select style="width: 100%;" v-model="equipform.netdeviceIp" placeholder="请选择对应网关设备IP" clearable filterable>
|
||||
<el-option v-for="item in temDeviceData" :key="item.ipAddr"
|
||||
:label="item.deviceName + ' - ' + item.ipAddr" :value="item.ipAddr" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span class="dialog-footer" style="display: flex;justify-content: flex-end;">
|
||||
<el-button class="searchButton" @click="handleClose">取消</el-button>
|
||||
<el-button class="searchButton" type="primary" @click="formsubmit(ruleFormRef)">确定</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</Eldialog>
|
||||
<Eldialog v-if="correlationVisible" :title="'关联设备网关IP'" :zIndex="2000" :width="'600px'"
|
||||
@before-close="handleClose">
|
||||
<template v-slot:PopFrameContent>
|
||||
<el-form :model="equipform" label-width="120px" style="margin-top: 15px;">
|
||||
<el-form-item label="对应网关设备IP">
|
||||
<el-select style="width: 100%;" v-model="equipform.netdeviceIp" placeholder="请选择对应网关设备IP" clearable filterable>
|
||||
<el-option v-for="item in temDeviceData" :key="item.ipAddr"
|
||||
:label="item.deviceName + ' - ' + item.ipAddr" :value="item.ipAddr" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span class="dialog-footer" style="display: flex;justify-content: flex-end;">
|
||||
<el-button class="searchButton" @click="handleClose">取消</el-button>
|
||||
<el-button class="searchButton" type="primary" @click="correlationSubmit">确定</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</Eldialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.looknum {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.silderLeft-default {
|
||||
:deep(.el-tree-node__label) {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.faulttemplate-box {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
display: -webkit-flex;
|
||||
background-color: #f2f4f900;
|
||||
padding: 15px 15px 0px 15px;
|
||||
|
||||
}
|
||||
|
||||
#silderLeft {
|
||||
width: 300px;
|
||||
padding: 5px 0px 10px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 3px;
|
||||
position: relative;
|
||||
background: url(@/assets/navigation/ty_260x988.png);
|
||||
background-size: 100% 100%;
|
||||
|
||||
&:hover {
|
||||
.moveBtn {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 拖动条 */
|
||||
.moveBtn {
|
||||
height: 100%;
|
||||
width: 15px;
|
||||
padding: 0 6px;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
right: -15px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.moveBtn-line {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
cursor: col-resize;
|
||||
user-select: none;
|
||||
background-color: #60bfff;
|
||||
}
|
||||
|
||||
.silderRight {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
height: calc(100vh - 160px);
|
||||
overflow: auto;
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
border-radius: 3px;
|
||||
padding: 15px;
|
||||
padding-bottom: 0px;
|
||||
box-sizing: border-box;
|
||||
margin-left: 15px;
|
||||
background: url(@/assets/newimg/cjrw_1890.png);
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 86px;
|
||||
height: 86px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
:deep(.el-tree-node.is-current>.el-tree-node__content) {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
// color: #fff !important;
|
||||
}
|
||||
|
||||
:deep(.el-tree) {
|
||||
background-color: #ffffff00 !important;
|
||||
--el-tree-node-hover-bg-color: #0099ff09;
|
||||
}
|
||||
|
||||
|
||||
|
||||
:deep(.el-tree-node__content) {
|
||||
width: 100% !important;
|
||||
height: 40px !important;
|
||||
margin: auto !important;
|
||||
}
|
||||
|
||||
.el-message-box {
|
||||
width: 300px !important;
|
||||
}
|
||||
|
||||
:deep(.el-table:not(.el-table--border) .el-table__cell) {
|
||||
border: none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
:deep(.el-tree) {
|
||||
background-color: #ffffff00 !important;
|
||||
--el-tree-node-hover-bg-color: #0099ff09;
|
||||
}
|
||||
|
||||
:deep(.el-input) {
|
||||
--el-input-bg-color: #ffffff00 !important;
|
||||
}
|
||||
|
||||
:deep(.el-input-group__append) {
|
||||
background: #ffffff00 !important;
|
||||
}
|
||||
:deep(.el-input .el-input__count .el-input__count-inner){
|
||||
background-color: rgba(240, 248, 255, 0);
|
||||
}
|
||||
</style>
|
608
riis-web/src/views/ledgermanagement/equipmentsignal/index.vue
Normal file
608
riis-web/src/views/ledgermanagement/equipmentsignal/index.vue
Normal file
@ -0,0 +1,608 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted, reactive, nextTick } from 'vue'
|
||||
import Page from '@/components/Pagination/page.vue'
|
||||
import { ElMessageBox, ElMessage, ElTable, FormRules, ElTree } from 'element-plus'
|
||||
import { getDeviceTree, queryDeviceSignal, addDeviceSignal, updateDeviceSignal, deleteDeviceSignalById, deleteDeviceByIds,getMeterDeviceByCode } from '@/api/equipmentsignal';
|
||||
import { publicTree } from '@/utils/validate';
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
import Eldialog from '@/components/seccmsdialog/eldialog.vue'
|
||||
import { getDeviceByType } from '@/api/device'
|
||||
import Alarmset from '@/views/ledgermanagement/equipmentsignal/alarmset.vue'
|
||||
const userStore = useUserStore();
|
||||
const typeoptions: any = ref([])
|
||||
//树形控件类型定义
|
||||
interface Tree {
|
||||
[x: string]: any;
|
||||
label: string;
|
||||
children?: Tree[];
|
||||
}
|
||||
const rules = reactive<FormRules>({
|
||||
signalName: [{ required: true, message: "请输入信号名称", trigger: "blur" }],
|
||||
signalCode: [{ required: true, message: "请输入信号编号", trigger: "blur" }],
|
||||
systemcode: [{ required: true, message: "选择所属系统", trigger: "blur" }],
|
||||
meterDeviceId: [{ required: true, message: "选择辅控设备", trigger: "blur" }],
|
||||
});
|
||||
const signalform: any = ref({})
|
||||
const ruleFormRef: any = ref(null);
|
||||
const signalrangestart = ref('')
|
||||
const signalrangeend = ref('')
|
||||
const queryInfo: any = ref({
|
||||
current: 1,
|
||||
size: 15,
|
||||
total: 0
|
||||
})
|
||||
const multipleSelection = ref([])
|
||||
const loading = ref(false)
|
||||
const tableData: any = ref([])
|
||||
const handleSelectionChange = (val: any) => {
|
||||
multipleSelection.value = val
|
||||
}
|
||||
const dialogVisible = ref(false)
|
||||
const dialogtitle = ref('新增信号设备')
|
||||
const currentNodeid = ref("")
|
||||
const defaultProps = { label: "name" };
|
||||
const signalName = ref('')
|
||||
const treeRef = ref<InstanceType<typeof ElTree>>()
|
||||
const treeData: any = ref([])
|
||||
const treeloading = ref(false)
|
||||
const handleNodeClick = (data: any, node: any) => {
|
||||
// 有子元素的节点,不能选中
|
||||
if (data.children.length > 0) {
|
||||
nextTick(() => {
|
||||
treeRef.value?.setCurrentKey(currentNodeid.value);
|
||||
});
|
||||
} else {
|
||||
queryInfo.value.current = 1
|
||||
queryInfo.value.size = 15
|
||||
signalName.value = ''
|
||||
currentNodeid.value = data.id
|
||||
getData();
|
||||
}
|
||||
};
|
||||
const vMove = {
|
||||
mounted(el: any) {
|
||||
el.onmousedown = function (e: any) {
|
||||
var init = e.clientX;
|
||||
var parent: any = document.getElementById("silderLeft");
|
||||
const initWidth: any = parent.offsetWidth;
|
||||
document.onmousemove = function (e) {
|
||||
var end = e.clientX;
|
||||
var newWidth = end - init + initWidth;
|
||||
parent.style.width = newWidth + "px";
|
||||
};
|
||||
document.onmouseup = function () {
|
||||
document.onmousemove = document.onmouseup = null;
|
||||
};
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
const dialogVisibles = ref(false)
|
||||
const dialogtitles = ref('新增信号设备')
|
||||
const alarmquerylist: any = ref({})
|
||||
const temDeviceData: any = ref([]) // 系统设备列表
|
||||
onMounted(() => {
|
||||
getDeviceByType({ dictcode: 'ykytType' }).then((ress: any) => {
|
||||
typeoptions.value = ress.data
|
||||
})
|
||||
init()
|
||||
})
|
||||
const CameraName = ref('')
|
||||
function init() {
|
||||
treeloading.value = true
|
||||
getDeviceTree({ componentName: CameraName.value, stationCode: userStore.stationCode }).then((res: any) => {
|
||||
treeData.value = publicTree(res.data, '')
|
||||
treeloading.value = false
|
||||
currentNodeid.value = res.data[0].children[0].children[0].children[0].id
|
||||
queryInfo.value.current = 1
|
||||
queryInfo.value.size = 15
|
||||
signalName.value = ''
|
||||
getData();
|
||||
nextTick(() => {
|
||||
treeRef.value?.setCurrentKey(currentNodeid.value);
|
||||
});
|
||||
})
|
||||
}
|
||||
function isykyttype(val: any) {
|
||||
let name: any = ''
|
||||
for (let i = 0; i < typeoptions.value.length; i++) {
|
||||
if (typeoptions.value[i].itemcode === val) {
|
||||
name = typeoptions.value[i].dictname
|
||||
break
|
||||
}
|
||||
}
|
||||
return name
|
||||
}
|
||||
function getData() {
|
||||
loading.value = true
|
||||
const params = {
|
||||
current: queryInfo.value.current,
|
||||
size: queryInfo.value.size,
|
||||
signalName: signalName.value,
|
||||
mainComponentId: currentNodeid.value
|
||||
}
|
||||
queryDeviceSignal(params).then((res: any) => {
|
||||
tableData.value = res.data.records
|
||||
queryInfo.value.total = res.data.total
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
function editclick(row: any) {
|
||||
signalform.value = JSON.parse(JSON.stringify(row))
|
||||
getmeterDeviceId()
|
||||
gettype()
|
||||
if (signalform.value.normalRange !== '' && signalform.value.normalRange !== undefined && signalform.value.normalRange !== null) {
|
||||
signalrangestart.value = signalform.value.normalRange.match(/(\S*)~/)[1]
|
||||
signalrangeend.value = signalform.value.normalRange.match(/~(\S*)/)[1]
|
||||
}
|
||||
dialogtitle.value = '修改信号设备'
|
||||
isSwitch.value = false
|
||||
dialogVisible.value = true
|
||||
}
|
||||
function delclick(row: any) {
|
||||
ElMessageBox.confirm("确定删除此信号信息吗?", "删除提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}).then(() => {
|
||||
let params = {
|
||||
id: row.signalId
|
||||
};
|
||||
deleteDeviceSignalById(params).then((res: any) => {
|
||||
ElMessage({
|
||||
message: "删除成功",
|
||||
type: "success",
|
||||
});
|
||||
getData()
|
||||
})
|
||||
}).catch(() => { })
|
||||
}
|
||||
function delclicks() {
|
||||
ElMessageBox.confirm("确定删除选择信号信息吗?", "删除提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}).then(() => {
|
||||
let id = [] as any[];
|
||||
multipleSelection.value.forEach((item: any) => {
|
||||
id.push(item.signalId)
|
||||
})
|
||||
let params = {
|
||||
ids: id.join(','),
|
||||
};
|
||||
deleteDeviceByIds(params).then(() => {
|
||||
getData();
|
||||
ElMessage({
|
||||
message: "删除成功",
|
||||
type: "success",
|
||||
});
|
||||
});
|
||||
}).catch(() => { })
|
||||
}
|
||||
const belonging:any = ref([])
|
||||
function gettype() {
|
||||
const params = {
|
||||
dictcode: 'system'
|
||||
}
|
||||
getDeviceByType(params).then((res: any) => {
|
||||
if (res.data.length !== 0 && res.data !== null) {
|
||||
belonging.value = res.data
|
||||
}
|
||||
})
|
||||
}
|
||||
const eterDevice:any = ref([])
|
||||
function getmeterDeviceId(){
|
||||
getMeterDeviceByCode({stationId:userStore.stationId,systemCode:signalform.value.systemcode}).then((res:any)=>{
|
||||
eterDevice.value = res.data
|
||||
})
|
||||
}
|
||||
function addclick() {
|
||||
gettype()
|
||||
if (ruleFormRef.value != null) ruleFormRef.value.resetFields();
|
||||
isSwitch.value = false
|
||||
signalform.value = {}
|
||||
signalform.value.signalType = 0
|
||||
dialogtitle.value = '新增信号设备'
|
||||
signalrangeend.value = ''
|
||||
signalrangestart.value = ''
|
||||
dialogVisible.value = true
|
||||
}
|
||||
const isSwitch = ref(false)
|
||||
function formsubmit(formEl: any) {
|
||||
formEl.validate((valid: any) => {
|
||||
if (valid) {
|
||||
if (signalrangestart.value !== '') {
|
||||
if (signalrangeend.value === '') {
|
||||
ElMessage({
|
||||
message: "请填写完整范围!",
|
||||
type: "warning",
|
||||
});
|
||||
return
|
||||
}
|
||||
}
|
||||
if (signalrangeend.value !== '') {
|
||||
if (signalrangestart.value === '') {
|
||||
ElMessage({
|
||||
message: "请填写完整范围!",
|
||||
type: "warning",
|
||||
});
|
||||
return
|
||||
}
|
||||
}
|
||||
if (signalrangestart.value !== '' && signalrangeend.value !== '') {
|
||||
if (signalform.value.signalUnit === '') {
|
||||
ElMessage({
|
||||
message: "请填写信号单位!",
|
||||
type: "warning",
|
||||
});
|
||||
return
|
||||
}
|
||||
}
|
||||
if (isSwitch.value == true) {
|
||||
return
|
||||
}
|
||||
isSwitch.value = true
|
||||
loading.value = true
|
||||
signalform.value.mainComponentId = currentNodeid.value
|
||||
if (signalform.value.signalId) {
|
||||
if (signalrangestart.value !== '' && signalrangeend.value !== '' && signalform.value.signalUnit !== '') {
|
||||
signalform.value.normalRange = signalrangestart.value + '~' + signalrangeend.value
|
||||
}
|
||||
updateDeviceSignal(signalform.value).then((res: any) => {
|
||||
ElMessage({
|
||||
message: "修改成功",
|
||||
type: "success",
|
||||
});
|
||||
isSwitch.value = false
|
||||
dialogVisible.value = false
|
||||
loading.value = false
|
||||
getData()
|
||||
}).catch(() => {
|
||||
isSwitch.value = false
|
||||
loading.value = false
|
||||
})
|
||||
} else {
|
||||
if (signalrangestart.value !== '' && signalrangeend.value !== '' && signalform.value.signalUnit !== '') {
|
||||
signalform.value.normalRange = signalrangestart.value + '~' + signalrangeend.value
|
||||
}
|
||||
addDeviceSignal(signalform.value).then((res: any) => {
|
||||
ElMessage({
|
||||
message: "新增成功",
|
||||
type: "success",
|
||||
});
|
||||
isSwitch.value = false
|
||||
dialogVisible.value = false
|
||||
loading.value = false
|
||||
getData()
|
||||
}).catch(() => {
|
||||
isSwitch.value = false
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
function handleClose() {
|
||||
dialogVisible.value = false
|
||||
}
|
||||
function setclick(row: any) {
|
||||
alarmquerylist.value = {
|
||||
signalId: row.signalId,
|
||||
deviceId:row.meterDeviceId,
|
||||
signalName: row.signalName
|
||||
}
|
||||
dialogtitles.value = row.signalName + '信号告警设置'
|
||||
dialogVisibles.value = true
|
||||
}
|
||||
function handleCloses() {
|
||||
dialogVisibles.value = false
|
||||
}
|
||||
const tableRowClassName = ({
|
||||
row,
|
||||
rowIndex,
|
||||
}: {
|
||||
row: any
|
||||
rowIndex: number
|
||||
}) => {
|
||||
if (rowIndex % 2 === 0) {
|
||||
return 'warning-row'
|
||||
} else if (rowIndex % 2 === 1) {
|
||||
return 'success-row'
|
||||
}
|
||||
return ''
|
||||
}
|
||||
</script>
|
||||
<template>
|
||||
<div class="faulttemplate-box">
|
||||
<aside id="silderLeft">
|
||||
<el-input v-model="CameraName" clearable placeholder="请输入部件名称" @clear="getData()" @keyup.enter="getData()"
|
||||
style="width:100%;margin-top: 10px;" class="videomonitor-input">
|
||||
<template #suffix>
|
||||
<img src="@/assets/videoimg/u2937.png" style="cursor:pointer ;" @click="getData">
|
||||
</template>
|
||||
</el-input>
|
||||
<el-scrollbar height="calc(83vh)">
|
||||
<el-tree v-loading="treeloading" ref="treeRef" node-key="id" :data="treeData" :highlight-current="true"
|
||||
:props="defaultProps" :expand-on-click-node="false" default-expand-all @node-click="handleNodeClick"
|
||||
style="margin-top: 10px;">
|
||||
</el-tree>
|
||||
</el-scrollbar>
|
||||
|
||||
<div class="moveBtn" v-move>
|
||||
<div class="moveBtn-line"></div>
|
||||
</div>
|
||||
</aside>
|
||||
<section class="silderRight">
|
||||
<el-row>
|
||||
<el-col :span="24">
|
||||
<div
|
||||
style="margin-bottom:10px;display: flex;display: -webkit-flex; justify-content: space-between;-webkit-justify-content: space-between; width: 100%;">
|
||||
<div>
|
||||
<el-input v-model="signalName" placeholder="请输入信号名称" style="width: 220px;" clearable />
|
||||
<el-button class="searchButton" type="primary" style="margin-left: 10px;" @click="getData">搜索</el-button>
|
||||
</div>
|
||||
<div>
|
||||
<el-button class="searchButton" type="primary" style="margin-left: 10px;"
|
||||
:disabled="currentNodeid !== '' ? false : true"
|
||||
@click="addclick">新增</el-button>
|
||||
<el-button class="searchButton" :type="multipleSelection.length <= 0 ? '' : 'primary'"
|
||||
:disabled="multipleSelection.length <= 0 ? true : false" style="margin-left: 10px;"
|
||||
@click="delclicks">删除</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-table ref="multipleTableRef" :data="tableData" style="width: 100%;margin-bottom: 20px;height: calc(78vh);
|
||||
overflow: auto;" row-key="id" default-expand-all :v-loading="loading"
|
||||
@selection-change="handleSelectionChange" :row-class-name="tableRowClassName"
|
||||
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
||||
<el-table-column type="selection" align="center" width="55" />
|
||||
<el-table-column label="序号" type="index" width="50" />
|
||||
<el-table-column label="信号编号" prop="signalCode" width="100" />
|
||||
<el-table-column label="信号名称" prop="signalName" min-width="140" />
|
||||
<el-table-column label="信号单位" prop="signalUnit" width="80" />
|
||||
<el-table-column label="遥控遥调类型" prop="ykytType" width="150">
|
||||
<template #default="scope">
|
||||
<span>{{ isykyttype(scope.row.ykytType) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="是否告警信号" prop="signalType" width="100">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.signalType === '1'">是</span>
|
||||
<span v-else>否</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column label="遥信地址(yx)" prop="yxAddr" />
|
||||
<el-table-column label="遥测地址(yc)" prop="ycAddr" />
|
||||
<el-table-column label="遥控地址(yk)" prop="ykAddr" />
|
||||
<el-table-column label="遥调地址(yt)" prop="ytAddr" />
|
||||
<!-- <el-table-column label="数据地址" prop="reportAddr" /> -->
|
||||
<el-table-column fixed="right" label="操作" width="100">
|
||||
<template #default="scope">
|
||||
<span
|
||||
style="display: flex;display: -webkit-flex;justify-content: space-around; -webkit-justify-content: space-around; ">
|
||||
<img src="@/assets/tableicon/xg.png" v-hasPerm="['update:devicesignal']" title="修改"
|
||||
style="cursor: pointer;" @click="editclick(scope.row)">
|
||||
<img src="@/assets/tableicon/gjsz.png" title="告警设置" style="cursor: pointer;"
|
||||
@click="setclick(scope.row)">
|
||||
<img src="@/assets/tableicon/sc.png" v-hasPerm="['del:devicesignal']" title="删除"
|
||||
style="cursor: pointer;" @click="delclick(scope.row)">
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
<Page class="mt-[20px]" :total="queryInfo.total" v-model:size="queryInfo.size"
|
||||
v-model:current="queryInfo.current" @pagination="getData" />
|
||||
</section>
|
||||
<Eldialog v-if="dialogVisible" :title="dialogtitle" :zIndex="2000" :width="'40%'" @before-close="handleClose">
|
||||
<template v-slot:PopFrameContent>
|
||||
<el-form ref="ruleFormRef" :model="signalform" label-width="100px" :rules="rules" style="margin-top: 15px;">
|
||||
<el-form-item label="信号编号" prop="signalCode">
|
||||
<el-input v-model="signalform.signalCode" maxlength="40" show-word-limit placeholder="请输入信号编号"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="信号名称" prop="signalName">
|
||||
<el-input v-model="signalform.signalName" maxlength="100" show-word-limit placeholder="请输入信号名称"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="所属系统" prop="systemcode">
|
||||
<el-select v-model="signalform.systemcode" placeholder="请选择所属系统" clearable style="width: 100%;" @change="getmeterDeviceId">
|
||||
<el-option v-for="item in belonging" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="辅控设备" prop="meterDeviceId" >
|
||||
<el-select v-model="signalform.meterDeviceId" placeholder="请选择辅控设备" clearable style="width: 100%;" :disabled="!signalform.systemcode">
|
||||
<el-option v-for="item in eterDevice" :key="item.deviceId" :label="item.deviceName"
|
||||
:value="item.deviceId" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="信号单位">
|
||||
<el-input v-model="signalform.signalUnit" maxlength="40" show-word-limit placeholder="请输入信号单位"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<div style="width: calc(100% - 100px);">
|
||||
<el-form-item label="遥控遥调类型">
|
||||
<el-select v-model="signalform.ykytType" placeholder="请选择遥控遥调类型" clearable
|
||||
style="width: 100%;">
|
||||
<el-option v-for="item in typeoptions" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="padding-left: 10px;">
|
||||
<el-checkbox v-model="signalform.signalType" true-label="1"
|
||||
false-label="0">是否告警信号</el-checkbox>
|
||||
</div>
|
||||
</div>
|
||||
<div style="display: flex;justify-content: space-between;">
|
||||
<div style="width: 57%;">
|
||||
<el-form-item label="正常范围">
|
||||
<el-input v-model="signalrangestart" maxlength="50" show-word-limit placeholder="请输入范围"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="margin: 6px 10px 0px;">~</div>
|
||||
<div style="width: 43%;">
|
||||
<el-input v-model="signalrangeend" maxlength="50" show-word-limit placeholder="请输入范围"
|
||||
clearable />
|
||||
</div>
|
||||
</div>
|
||||
<el-form-item label="遥信地址">
|
||||
<el-input v-model="signalform.yxAddr" placeholder="请输入遥信地址" maxlength="600" show-word-limit
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="遥测地址">
|
||||
<el-input v-model="signalform.ycAddr" placeholder="请输入遥测地址" maxlength="600" show-word-limit
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="遥控地址">
|
||||
<el-input v-model="signalform.ykAddr" placeholder="请输入遥控地址" maxlength="600" show-word-limit
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="遥调地址">
|
||||
<el-input v-model="signalform.ytAddr" placeholder="请输入遥调地址" maxlength="600" show-word-limit
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item label="数据地址">
|
||||
<el-input v-model="signalform.reportAddr" maxlength="600" show-word-limit placeholder="请输入数据地址" clearable />
|
||||
</el-form-item> -->
|
||||
</el-form>
|
||||
<span class="dialog-footer" style="display: flex;justify-content: flex-end;">
|
||||
<el-button class="searchButton" @click="handleClose">取消</el-button>
|
||||
<el-button class="searchButton" type="primary" @click="formsubmit(ruleFormRef)">确定</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</Eldialog>
|
||||
<Eldialog v-if="dialogVisibles" :title="dialogtitles" :zIndex="2000" :width="'65%'" @before-close="handleCloses">
|
||||
<template v-slot:PopFrameContent>
|
||||
<Alarmset v-if="dialogVisibles" :alarmquerylist="alarmquerylist" />
|
||||
</template>
|
||||
</Eldialog>
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.looknum {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.silderLeft-default {
|
||||
:deep(.el-tree-node__label) {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.faulttemplate-box {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
display: -webkit-flex;
|
||||
background-color: #f2f4f900;
|
||||
padding: 15px 15px 0px 15px;
|
||||
|
||||
}
|
||||
|
||||
#silderLeft {
|
||||
width: 300px;
|
||||
padding: 5px 10px 10px;
|
||||
box-sizing: border-box;
|
||||
border-radius: 3px;
|
||||
position: relative;
|
||||
background: url(@/assets/navigation/ty_260x988.png);
|
||||
background-size: 100% 100%;
|
||||
|
||||
&:hover {
|
||||
.moveBtn {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* 拖动条 */
|
||||
.moveBtn {
|
||||
height: 100%;
|
||||
width: 15px;
|
||||
padding: 0 6px;
|
||||
opacity: 0;
|
||||
position: absolute;
|
||||
right: -15px;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.moveBtn-line {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
cursor: col-resize;
|
||||
user-select: none;
|
||||
background-color: #60bfff;
|
||||
}
|
||||
|
||||
.silderRight {
|
||||
flex: 1;
|
||||
width: 100%;
|
||||
height: calc(100vh - 160px);
|
||||
overflow: auto;
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
border-radius: 3px;
|
||||
padding: 15px;
|
||||
padding-bottom: 0px;
|
||||
box-sizing: border-box;
|
||||
margin-left: 15px;
|
||||
background: url(@/assets/newimg/cjrw_1890.png);
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
|
||||
.avatar {
|
||||
width: 86px;
|
||||
height: 86px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
:deep(.el-tree-node.is-current>.el-tree-node__content) {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
// color: #fff !important;
|
||||
}
|
||||
|
||||
:deep(.el-tree) {
|
||||
background-color: #ffffff00 !important;
|
||||
--el-tree-node-hover-bg-color: #0099ff09;
|
||||
}
|
||||
|
||||
|
||||
|
||||
:deep(.el-tree-node__content) {
|
||||
width: 100% !important;
|
||||
height: 40px !important;
|
||||
margin: auto !important;
|
||||
}
|
||||
|
||||
.el-message-box {
|
||||
width: 300px !important;
|
||||
}
|
||||
|
||||
:deep(.el-table:not(.el-table--border) .el-table__cell) {
|
||||
border: none;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
:deep(.el-tree) {
|
||||
background-color: #ffffff00 !important;
|
||||
--el-tree-node-hover-bg-color: #0099ff09;
|
||||
}
|
||||
|
||||
:deep(.el-input) {
|
||||
--el-input-bg-color: #ffffff00 !important;
|
||||
}
|
||||
|
||||
:deep(.el-input-group__append) {
|
||||
background: #ffffff00 !important;
|
||||
}
|
||||
|
||||
:deep(.el-input .el-input__count .el-input__count-inner) {
|
||||
background-color: rgba(240, 248, 255, 0);
|
||||
}
|
||||
</style>
|
498
riis-web/src/views/ledgermanagement/systemmanage/index.vue
Normal file
498
riis-web/src/views/ledgermanagement/systemmanage/index.vue
Normal file
@ -0,0 +1,498 @@
|
||||
<script lang="ts">
|
||||
export default {
|
||||
name: "record",
|
||||
};
|
||||
</script>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref, onMounted } from 'vue'
|
||||
import Eldialog from '@/components/seccmsdialog/eldialog.vue'
|
||||
import Page from '@/components/Pagination/page.vue'
|
||||
import { ElMessageBox, ElMessage, ElTable, ElProgress } from 'element-plus'
|
||||
import { getSystemDevice, addSystemDevice, updateSystemDevice, deleteSystemDeviceById, deleteSystemDeviceByIds } from '@/api/systemmanage/index'
|
||||
import { getDeviceByType } from '@/api/device'
|
||||
import { useUserStore } from '@/store/modules/user';
|
||||
const userStore = useUserStore();
|
||||
onMounted(() => {
|
||||
getDeviceByType({ dictcode: 'deviceType' }).then((res) => {
|
||||
EquipmentType.value = res.data
|
||||
})
|
||||
getDeviceByType({ dictcode: 'deviceStatus' }).then((res) => {
|
||||
statusoption.value = res.data
|
||||
})
|
||||
getData()
|
||||
})
|
||||
function currency(list: any, itemcode: any) {
|
||||
let dictname = ''
|
||||
list.forEach((element: any) => {
|
||||
if (element.itemcode == itemcode) {
|
||||
dictname = element.dictname
|
||||
}
|
||||
})
|
||||
return dictname
|
||||
}
|
||||
const queryInfo: any = ref({
|
||||
size: 10,
|
||||
total: 0,
|
||||
current: 1,
|
||||
deviceName: '',
|
||||
deviceModel: '',
|
||||
deviceType: '',
|
||||
status: ''
|
||||
})
|
||||
const multipleSelection = ref([])
|
||||
const loading = ref(false)
|
||||
const tableData: any = ref([])
|
||||
const handleSelectionChange = (val: any) => {
|
||||
multipleSelection.value = val
|
||||
}
|
||||
const dialogVisible = ref(false)
|
||||
const dialogtitle = ref('新增系统设备')
|
||||
const manageFromm: any = ref({})
|
||||
const Mainrules = ref({
|
||||
deviceName: [
|
||||
{ required: true, message: '请输入设备名称', trigger: 'blur' },
|
||||
],
|
||||
deviceCode: [
|
||||
{ required: true, message: '请输入设备编号', trigger: 'blur' },
|
||||
],
|
||||
deviceType: [
|
||||
{ required: true, message: '请选择设备类型', trigger: 'change' }
|
||||
],
|
||||
protocol: [
|
||||
{ required: true, message: '请选择协议类型', trigger: 'change' }
|
||||
],
|
||||
})
|
||||
const protocoloption = ref(['IEC104', 'IEC61850'])
|
||||
const EquipmentType: any = ref([])
|
||||
const statusoption: any = ref([])
|
||||
function getData() {
|
||||
loading.value = true
|
||||
const params = {
|
||||
size: queryInfo.value.size,
|
||||
current: queryInfo.value.current,
|
||||
deviceName: queryInfo.value.deviceName,
|
||||
deviceModel: queryInfo.value.deviceModel,
|
||||
deviceType: queryInfo.value.deviceType,
|
||||
status: queryInfo.value.status
|
||||
}
|
||||
getSystemDevice(params).then((res: any) => {
|
||||
tableData.value = res.data.records
|
||||
queryInfo.value.total = res.data.total
|
||||
loading.value = false
|
||||
})
|
||||
|
||||
}
|
||||
function editclick(row: any) {
|
||||
manageFromm.value = JSON.parse(JSON.stringify(row))
|
||||
dialogtitle.value = '修改系统设备'
|
||||
isSwitch.value = false
|
||||
dialogVisible.value = true
|
||||
}
|
||||
function delclick(row: any) {
|
||||
ElMessageBox.confirm("确定删除此系统设备信息吗?", "删除提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}).then(() => {
|
||||
let params = {
|
||||
id: row.id,
|
||||
};
|
||||
deleteSystemDeviceById(params).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
getData()
|
||||
ElMessage({
|
||||
message: '删除成功',
|
||||
type: 'success',
|
||||
})
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
function addclick() {
|
||||
isSwitch.value = false
|
||||
dialogtitle.value = '新增系统设备'
|
||||
dialogVisible.value = true
|
||||
if (ruleFormRef.value != null) ruleFormRef.value.resetFields();
|
||||
manageFromm.value = {
|
||||
deviceCode: "",
|
||||
deviceName: "",
|
||||
deviceType: "",
|
||||
deviceDesc: "",
|
||||
deviceModel: "",
|
||||
productionNum: "",
|
||||
productionDate: "",
|
||||
manufacturer: "",
|
||||
madein: "",
|
||||
phyassetId: "",
|
||||
frequency: "",
|
||||
status: "02",
|
||||
urcb: "",
|
||||
brcb: "",
|
||||
protocol: 'IEC104'
|
||||
}
|
||||
}
|
||||
function delclicks() {
|
||||
let id = [] as any[];
|
||||
multipleSelection.value.forEach((item: any) => {
|
||||
id.push(item.id)
|
||||
})
|
||||
|
||||
ElMessageBox.confirm("确定删除勾选的系统设备信息吗?", "删除提示", {
|
||||
confirmButtonText: "确定",
|
||||
cancelButtonText: "取消",
|
||||
type: "warning",
|
||||
}).then(() => {
|
||||
let params = {
|
||||
ids: id.join(','),
|
||||
};
|
||||
deleteSystemDeviceByIds(params).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
getData()
|
||||
ElMessage({
|
||||
message: '删除成功',
|
||||
type: 'success',
|
||||
})
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
const isSwitch = ref(false)
|
||||
function formsubmit(formEl: any) {
|
||||
formEl.validate((valid: any) => {
|
||||
if (valid) {
|
||||
if (manageFromm.value.protocol == 'IEC104') {
|
||||
if (manageFromm.value.iecAddr == '' || manageFromm.value.iecAddr == undefined) {
|
||||
ElMessage({
|
||||
message: "请填写104协议地址!",
|
||||
type: "warning",
|
||||
});
|
||||
return
|
||||
}
|
||||
}
|
||||
if (manageFromm.value.protocol == 'IEC61850') {
|
||||
if (manageFromm.value.urcb == '' || manageFromm.value.urcb == undefined) {
|
||||
ElMessage({
|
||||
message: "请填写遥测类报告控制块!",
|
||||
type: "warning",
|
||||
});
|
||||
return
|
||||
}
|
||||
if (manageFromm.value.brcb == '' || manageFromm.value.brcb == undefined) {
|
||||
ElMessage({
|
||||
message: "请填写遥信类报告控制块!",
|
||||
type: "warning",
|
||||
});
|
||||
return
|
||||
}
|
||||
}
|
||||
if (isSwitch.value == true) {
|
||||
return
|
||||
}
|
||||
isSwitch.value = true
|
||||
manageFromm.value.stationId = userStore.stationId
|
||||
if (manageFromm.value.id) {
|
||||
updateSystemDevice(manageFromm.value).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
ElMessage({
|
||||
message: "保存成功",
|
||||
type: "success",
|
||||
});
|
||||
dialogVisible.value = false
|
||||
getData()
|
||||
} else {
|
||||
ElMessage({
|
||||
message: res.msg,
|
||||
type: "error",
|
||||
});
|
||||
isSwitch.value = false
|
||||
}
|
||||
|
||||
|
||||
}).catch(() => {
|
||||
isSwitch.value = false
|
||||
})
|
||||
} else {
|
||||
addSystemDevice(manageFromm.value).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
ElMessage({
|
||||
message: "保存成功",
|
||||
type: "success",
|
||||
});
|
||||
dialogVisible.value = false
|
||||
getData()
|
||||
} else {
|
||||
ElMessage({
|
||||
message: res.msg,
|
||||
type: "error",
|
||||
});
|
||||
isSwitch.value = false
|
||||
}
|
||||
}).catch(() => {
|
||||
isSwitch.value = false
|
||||
})
|
||||
}
|
||||
loading.value = false
|
||||
}
|
||||
})
|
||||
}
|
||||
const ruleFormRef: any = ref(null);
|
||||
function handleClose() {
|
||||
if (ruleFormRef.value != null) ruleFormRef.value.resetFields();
|
||||
dialogVisible.value = false
|
||||
}
|
||||
function seletClick() {
|
||||
queryInfo.value.current = 1
|
||||
getData()
|
||||
}
|
||||
function clearClick() {
|
||||
queryInfo.value = {
|
||||
size: 10,
|
||||
total: 0,
|
||||
current: 1,
|
||||
deviceName: '',
|
||||
deviceModel: '',
|
||||
deviceType: '',
|
||||
status: ''
|
||||
}
|
||||
getData()
|
||||
}
|
||||
function editstatus(list: any, val: any) {
|
||||
manageFromm.value = list
|
||||
manageFromm.value.status = val
|
||||
let tipstext = '停用'
|
||||
if (val === '01') {
|
||||
tipstext = '连接'
|
||||
}
|
||||
updateSystemDevice(manageFromm.value).then((res: any) => {
|
||||
if (res.code == 0) {
|
||||
ElMessage({
|
||||
message: tipstext + "成功",
|
||||
type: "success",
|
||||
});
|
||||
getData()
|
||||
} else {
|
||||
ElMessage({
|
||||
message: tipstext + "失败",
|
||||
type: "error",
|
||||
});
|
||||
}
|
||||
}).catch(() => {
|
||||
|
||||
})
|
||||
}
|
||||
const tableRowClassName = ({
|
||||
row,
|
||||
rowIndex,
|
||||
}: {
|
||||
row: any
|
||||
rowIndex: number
|
||||
}) => {
|
||||
if (rowIndex % 2 === 0) {
|
||||
return 'warning-row'
|
||||
} else if (rowIndex % 2 === 1) {
|
||||
return 'success-row'
|
||||
}
|
||||
return ''
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div style=" padding: 17px 15px 8px 15px;">
|
||||
<div class="record-box">
|
||||
<div style="margin-bottom: 10px;display: flex;align-items: center;justify-content:space-between;">
|
||||
<div style=" display:flex;align-items: center;">
|
||||
<el-input v-model="queryInfo.deviceName" placeholder="请输入设备名称" style="width: 220px;" clearable />
|
||||
<el-input v-model="queryInfo.deviceModel" placeholder="请输入设备型号"
|
||||
style="width: 220px;margin-left: 10px;" clearable />
|
||||
<el-select v-model="queryInfo.deviceType" placeholder="请选择设备类型"
|
||||
style="width: 220px;margin-left: 10px;" clearable @change="seletClick">
|
||||
<el-option v-for="item in EquipmentType" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
<el-select v-model="queryInfo.status" placeholder="请选择设备状态" style="width: 220px;margin-left: 10px;"
|
||||
clearable @change="seletClick">
|
||||
<el-option v-for="item in statusoption" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
<el-button type="primary" class="searchButton" style="margin-left: 10px;"
|
||||
@click="seletClick">搜索</el-button>
|
||||
<el-button type="primary" class="searchButton" plain style="margin-left: 10px;"
|
||||
@click="clearClick">重置</el-button>
|
||||
</div>
|
||||
|
||||
<div style=" display:flex;align-items: center;">
|
||||
<el-button class="searchButton" type="primary" style="margin-left: 10px;" @click="addclick">新增</el-button>
|
||||
<el-button class="searchButton" :type="multipleSelection.length <= 0 ? '' : 'primary'"
|
||||
:disabled="multipleSelection.length <= 0 ? true : false" style="margin-left: 10px;"
|
||||
@click="delclicks">删除</el-button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<el-table ref="multipleTableRef" v-loading="loading" :data="tableData" row-key="id" border
|
||||
@selection-change="handleSelectionChange" style="width: 100%;height: calc(100vh - 285px)"
|
||||
:row-class-name="tableRowClassName"
|
||||
:header-cell-style="{ background: '#002b6a', color: '#B5D7FF', height: '50px' }">
|
||||
<el-table-column type="selection" align="center" width="55" />
|
||||
<el-table-column label="序号" type="index" width="50" />
|
||||
<el-table-column label="设备编号" prop="deviceCode" width="100" />
|
||||
<el-table-column label="设备名称" prop="deviceName" min-width="100" />
|
||||
<el-table-column label="设备类型" prop="deviceType" min-width="80">
|
||||
<template #default="scope">
|
||||
<span>{{ currency(EquipmentType, scope.row.deviceType) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="中文描述" prop="deviceDesc" min-width="100" />
|
||||
<el-table-column label="设备型号" prop="deviceModel" width="100" />
|
||||
<el-table-column label="出厂编号" prop="productionNum" width="100" />
|
||||
<el-table-column label="出厂日期" prop="productionDate" width="100" align="center" />
|
||||
<el-table-column label="生产厂家" prop="manufacturer" min-width="100" />
|
||||
<el-table-column label="生产国家" prop="madein" width="100" align="center" />
|
||||
<el-table-column label="以太网IP地址" prop="ipAddr" width="150" />
|
||||
<el-table-column prop="status" label="设备状态" width="100" align="center">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.status === '00'" style="font-size: 14px;color:#FF3300;">停用</span>
|
||||
<span v-else-if="scope.row.status === '01'" style="font-size: 14px;color: #00CC00;">已连接</span>
|
||||
<span v-else-if="scope.row.status === '02'" style="font-size: 14px;color: #FFCC00;">离线</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column fixed="right" label="操作" width="110">
|
||||
<template #default="scope">
|
||||
<span
|
||||
style="display: flex;display: -webkit-flex;justify-content: space-around; -webkit-justify-content: space-around; ">
|
||||
<img src="@/assets/tableicon/xg.png" title="修改"
|
||||
style="cursor: pointer;" @click="editclick(scope.row)">
|
||||
<img v-if="scope.row.status === '02'"
|
||||
src="@/assets/tableicon/lj.png" title="连接" style="cursor: pointer;"
|
||||
@click="editstatus(scope.row, '01')">
|
||||
<img v-if="scope.row.status === '02'"
|
||||
src="@/assets/tableicon/ty.png" title="停用" style="cursor: pointer;"
|
||||
@click="editstatus(scope.row, '00')">
|
||||
<img src="@/assets/tableicon/sc.png" title="删除"
|
||||
style="cursor: pointer;" @click="delclick(scope.row)">
|
||||
</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
|
||||
</el-table>
|
||||
<Page class="mt-[20px]" :total="queryInfo.total" v-model:size="queryInfo.size"
|
||||
v-model:current="queryInfo.current" @pagination="getData" />
|
||||
</div>
|
||||
<Eldialog v-if="dialogVisible" :title="dialogtitle" :zIndex="2000" :width="'50%'" @before-close="handleClose">
|
||||
<template v-slot:PopFrameContent>
|
||||
<el-form ref="ruleFormRef" :rules="Mainrules" :model="manageFromm" label-width="130px" style="margin-top:15px;">
|
||||
<div style="display: flex;">
|
||||
<el-form-item label="设备编号" prop="deviceCode" style="width: 50%;">
|
||||
<el-input v-model="manageFromm.deviceCode" maxlength="40" show-word-limit
|
||||
placeholder="请输入设备编号" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="设备名称" prop="deviceName" style="width: 50%;">
|
||||
<el-input v-model="manageFromm.deviceName" maxlength="100" show-word-limit
|
||||
placeholder="请输入设备名称" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="display: flex;">
|
||||
<el-form-item label="设备类型" prop="deviceType" style="width: 50%;">
|
||||
<el-select v-model="manageFromm.deviceType" placeholder="请选择设备类型" style="width: 100%;">
|
||||
<el-option v-for="item in EquipmentType" :key="item.itemcode" :label="item.dictname"
|
||||
:value="item.itemcode" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="设备型号" style="width: 50%;">
|
||||
<el-input v-model="manageFromm.deviceModel" maxlength="100" show-word-limit
|
||||
placeholder="请输入设备型号" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-form-item label="中文描述">
|
||||
<el-input v-model="manageFromm.deviceDesc" maxlength="100" show-word-limit placeholder="请输入中文描述"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<div style="display: flex;">
|
||||
<el-form-item label="出厂编号" style="width: 50%;">
|
||||
<el-input v-model="manageFromm.productionNum" maxlength="40" show-word-limit
|
||||
placeholder="请输入出厂编号" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="出厂日期" style="width: 50%;">
|
||||
<el-date-picker v-model="manageFromm.productionDate" type="date" value-format="YYYY-MM-DD"
|
||||
style="width:100%" placeholder="请输入出厂日期" />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="display: flex;">
|
||||
<el-form-item label="生产厂家" style="width: 50%;">
|
||||
<el-input v-model="manageFromm.manufacturer" maxlength="100" show-word-limit
|
||||
placeholder="请输入生产厂家" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="生产国家" style="width: 50%;">
|
||||
<el-input v-model="manageFromm.madein" maxlength="100" show-word-limit placeholder="请输入生产国家"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="display: flex;">
|
||||
<el-form-item label="实物ID" style="width: 50%;">
|
||||
<el-input v-model="manageFromm.phyassetId" maxlength="40" show-word-limit
|
||||
placeholder="请输入实物ID" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="采集频率(秒)" style="width: 50%;">
|
||||
<el-input v-model="manageFromm.frequency" placeholder="请输入采集频率" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<div style="display: flex;">
|
||||
<el-form-item label="以太网Mac地址" style="width: 50%;">
|
||||
<el-input v-model="manageFromm.macAddr" maxlength="40" show-word-limit
|
||||
placeholder="请输入以太网Mac地址" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item label="以太网IP地址" style="width: 50%;">
|
||||
<el-input v-model="manageFromm.ipAddr" maxlength="40" show-word-limit
|
||||
placeholder="请输入以太网IP地址" clearable />
|
||||
</el-form-item>
|
||||
</div>
|
||||
<el-form-item label="协议类型" prop="protocol">
|
||||
<el-select v-model="manageFromm.protocol" placeholder="请选择协议类型" style="width: 100%;" >
|
||||
<el-option v-for="item in protocoloption" :key="item" :label="item" :value="item" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="manageFromm.protocol === 'IEC104'" label="104协议地址">
|
||||
<el-input v-model="manageFromm.iecAddr" maxlength="40" show-word-limit placeholder="请输入104协议地址"
|
||||
clearable />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="manageFromm.protocol === 'IEC61850'" label="遥测类报告控制块">
|
||||
<el-input v-model="manageFromm.urcb" maxlength="1000" show-word-limit type="textarea"
|
||||
:autosize="{ minRows: 2 }" placeholder="请输入遥测类报告控制块" clearable />
|
||||
</el-form-item>
|
||||
<el-form-item v-if="manageFromm.protocol === 'IEC61850'" label="遥信类报告控制块">
|
||||
<el-input v-model="manageFromm.brcb" maxlength="1000" show-word-limit type="textarea"
|
||||
:autosize="{ minRows: 2 }" placeholder="请输入遥信类报告控制块" clearable />
|
||||
</el-form-item>
|
||||
<!-- <el-form-item v-if="dialogtitle === '修改系统设备'" label="设备状态">
|
||||
<el-radio-group v-model="manageFromm.status">
|
||||
<el-radio label="00">停用</el-radio>
|
||||
<el-radio label="02">离线</el-radio>
|
||||
</el-radio-group>
|
||||
</el-form-item> -->
|
||||
</el-form>
|
||||
<span class="dialog-footer" style="display: flex;justify-content: flex-end;">
|
||||
<el-button class="searchButton" @click="handleClose">取消</el-button>
|
||||
<el-button class="searchButton" type="primary" @click="formsubmit(ruleFormRef)">确定</el-button>
|
||||
</span>
|
||||
</template>
|
||||
</Eldialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.record-box {
|
||||
padding: 15px 8px 8px;
|
||||
width: 100%;
|
||||
height: calc(89vh);
|
||||
overflow: auto;
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
border: none;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
background: url(@/assets/navigation/ty_1614x988.png);
|
||||
background-size: 100% 100%;
|
||||
}
|
||||
:deep(.el-input .el-input__count .el-input__count-inner){
|
||||
background-color: rgba(240, 248, 255, 0);
|
||||
}
|
||||
</style>
|
Loading…
Reference in New Issue
Block a user