前置管理
This commit is contained in:
56
src/api/cs-device-boot/frontManagement.ts
Normal file
56
src/api/cs-device-boot/frontManagement.ts
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 新增前置机
|
||||||
|
export function addNode(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/node/addNode',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//修改前置机
|
||||||
|
export function updateNode(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/node/updateNode',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//删除前置机
|
||||||
|
export function delNode(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/node/delNode',
|
||||||
|
method: 'post',
|
||||||
|
params: { id: data }
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//查询前置-进程-设备-设备树
|
||||||
|
export function nodeDeviceTree(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/node/getProcessNoAndDeviceById',
|
||||||
|
method: 'get',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//重启前置机进程
|
||||||
|
export function restartProcess(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/node/restartProcess',
|
||||||
|
method: 'post',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//更新进程号
|
||||||
|
export function updateProcess(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/node/updateDevProcessNo',
|
||||||
|
method: 'post',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -29,7 +29,6 @@ const width = ref('')
|
|||||||
|
|
||||||
|
|
||||||
const info = (selectedNodeId?: string) => {
|
const info = (selectedNodeId?: string) => {
|
||||||
console.log('tree.value:', selectedNodeId);
|
|
||||||
tree.value = []
|
tree.value = []
|
||||||
let arr1: any[] = []
|
let arr1: any[] = []
|
||||||
getCldTree().then(res => {
|
getCldTree().then(res => {
|
||||||
|
|||||||
@@ -69,6 +69,7 @@
|
|||||||
label-width="120px"
|
label-width="120px"
|
||||||
:inline="true"
|
:inline="true"
|
||||||
ref="mainForm"
|
ref="mainForm"
|
||||||
|
|
||||||
>
|
>
|
||||||
<el-form-item
|
<el-form-item
|
||||||
id="id100"
|
id="id100"
|
||||||
@@ -97,7 +98,8 @@
|
|||||||
class="form-item"
|
class="form-item"
|
||||||
label="省:"
|
label="省:"
|
||||||
v-if="nodeLevel > 0 || pageStatus == 2"
|
v-if="nodeLevel > 0 || pageStatus == 2"
|
||||||
:rules="[{ required: true, message: '请选择省', trigger: 'change' }]"
|
prop="'engineeringParam.province'"
|
||||||
|
:rules="{ required: true, message: '请选择省', trigger: 'change' }"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
filterable
|
filterable
|
||||||
@@ -120,7 +122,8 @@
|
|||||||
class="form-item"
|
class="form-item"
|
||||||
label="市:"
|
label="市:"
|
||||||
v-if="(nodeLevel > 0 || pageStatus == 2)"
|
v-if="(nodeLevel > 0 || pageStatus == 2)"
|
||||||
:rules="[{ required: true, message: '请选择市', trigger: 'change' }]"
|
:prop="'engineeringParam.city'"
|
||||||
|
:rules="{ required: true, message: '请选择市', trigger: 'change' }"
|
||||||
>
|
>
|
||||||
<el-select
|
<el-select
|
||||||
filterable
|
filterable
|
||||||
@@ -141,7 +144,8 @@
|
|||||||
class="form-item"
|
class="form-item"
|
||||||
label="工程名称:"
|
label="工程名称:"
|
||||||
v-if="nodeLevel > 0 || pageStatus == 2"
|
v-if="nodeLevel > 0 || pageStatus == 2"
|
||||||
:rules="[{ required: true, message: '请输入工程名称', trigger: 'blur' }]"
|
:prop="'name'"
|
||||||
|
:rules="{ required: true, message: '请输入工程名称', trigger: 'blur' }"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
v-model="engineeringParam.name"
|
v-model="engineeringParam.name"
|
||||||
@@ -166,7 +170,8 @@
|
|||||||
<el-tabs
|
<el-tabs
|
||||||
v-model="deviceIndex"
|
v-model="deviceIndex"
|
||||||
type="card"
|
type="card"
|
||||||
:editable="pageStatus != 1"
|
:addable="false"
|
||||||
|
:closable="pageStatus != 1"
|
||||||
@edit="handleDeviceTabsEdit"
|
@edit="handleDeviceTabsEdit"
|
||||||
@tab-click="tabChange('deviceIndex')"
|
@tab-click="tabChange('deviceIndex')"
|
||||||
>
|
>
|
||||||
@@ -180,6 +185,7 @@
|
|||||||
<el-form-item
|
<el-form-item
|
||||||
class="form-item"
|
class="form-item"
|
||||||
label="项目名称:"
|
label="项目名称:"
|
||||||
|
:prop="'projectInfoList.' + index + '.name'"
|
||||||
:rules="[{ required: true, message: '请输入项目名称', trigger: 'blur' }]"
|
:rules="[{ required: true, message: '请输入项目名称', trigger: 'blur' }]"
|
||||||
>
|
>
|
||||||
<el-input
|
<el-input
|
||||||
@@ -216,11 +222,12 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--设备-->
|
<!--设备-->
|
||||||
<div style="width: 100%" v-if="nodeLevel > 1 || pageStatus == 2">
|
<div style="width: 100%" v-if="(nodeLevel > 1 || pageStatus == 2) && (nodeLevel >= 2 || pageStatus == 2)">
|
||||||
<el-tabs
|
<el-tabs
|
||||||
v-model="busBarIndex"
|
v-model="busBarIndex"
|
||||||
type="card"
|
type="card"
|
||||||
:editable="pageStatus != 1"
|
:addable="false"
|
||||||
|
:closable="pageStatus != 1"
|
||||||
@edit="handleBusBarTabsEdit"
|
@edit="handleBusBarTabsEdit"
|
||||||
@tab-click="tabChange('busBarIndex')"
|
@tab-click="tabChange('busBarIndex')"
|
||||||
>
|
>
|
||||||
@@ -366,11 +373,12 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!--监测点-->
|
<!--监测点-->
|
||||||
<div style="width: 100%" v-if="nodeLevel > 2 || pageStatus == 2">
|
<div style="width: 100%" v-if="(nodeLevel > 2 || pageStatus == 2) && (nodeLevel >= 3 || pageStatus == 2)">
|
||||||
<el-tabs
|
<el-tabs
|
||||||
type="card"
|
type="card"
|
||||||
v-model="lineIndex"
|
v-model="lineIndex"
|
||||||
:editable="pageStatus != 1"
|
:addable="false"
|
||||||
|
:closable="pageStatus != 1"
|
||||||
@edit="handleLineTabsEdit"
|
@edit="handleLineTabsEdit"
|
||||||
@tab-click="tabChange('lineIndex')"
|
@tab-click="tabChange('lineIndex')"
|
||||||
>
|
>
|
||||||
@@ -714,12 +722,10 @@ const nodeDataList=ref()
|
|||||||
const nodeEventList=ref()
|
const nodeEventList=ref()
|
||||||
|
|
||||||
const nodeClick = (e: anyObj, data: any) => {
|
const nodeClick = (e: anyObj, data: any) => {
|
||||||
console.log(e, data)
|
|
||||||
nodeDataList.value = data
|
nodeDataList.value = data
|
||||||
nodeEventList.value = e
|
nodeEventList.value = e
|
||||||
treeClickCount.value++
|
treeClickCount.value++
|
||||||
if (treeClickCount.value > 2) return
|
if (treeClickCount.value > 2) return
|
||||||
if (treeClickCount.value > 2) return
|
|
||||||
if (treeClickCount.value == 1) {
|
if (treeClickCount.value == 1) {
|
||||||
if (pageStatus.value == 2 || pageStatus.value == 3) {
|
if (pageStatus.value == 2 || pageStatus.value == 3) {
|
||||||
if (pageStatus.value == 3 || pageStatus.value == 2) {
|
if (pageStatus.value == 3 || pageStatus.value == 2) {
|
||||||
@@ -749,12 +755,54 @@ const nodeClick = (e: anyObj, data: any) => {
|
|||||||
}else if(nodeData.value.level == 4){ //监测点
|
}else if(nodeData.value.level == 4){ //监测点
|
||||||
nodeLevel.value = 4
|
nodeLevel.value = 4
|
||||||
}
|
}
|
||||||
|
// 根据节点层级清理不需要的数据
|
||||||
|
cleanUnnecessaryData()
|
||||||
/**不是根节点请求数据 */
|
/**不是根节点请求数据 */
|
||||||
queryNodeContent()
|
queryNodeContent()
|
||||||
treeClickCount.value = 0
|
treeClickCount.value = 0
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据当前节点层级清理不需要的数据
|
||||||
|
*/
|
||||||
|
const cleanUnnecessaryData = () => {
|
||||||
|
// 根据当前节点层级清理不需要的数据
|
||||||
|
switch(nodeLevel.value) {
|
||||||
|
case 0: // 根节点
|
||||||
|
// 清理所有数据
|
||||||
|
projectInfoList.value = []
|
||||||
|
deviceInfoList.value = []
|
||||||
|
lineInfoList.value = []
|
||||||
|
break
|
||||||
|
case 1: // 工程节点
|
||||||
|
// 清理设备和监测点数据
|
||||||
|
deviceInfoList.value = []
|
||||||
|
lineInfoList.value = []
|
||||||
|
break
|
||||||
|
case 2: // 项目节点
|
||||||
|
// 清理监测点数据
|
||||||
|
lineInfoList.value = []
|
||||||
|
break
|
||||||
|
case 3: // 设备节点
|
||||||
|
// 不清理任何数据
|
||||||
|
break
|
||||||
|
case 4: // 监测点节点
|
||||||
|
// 不清理任何数据
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重置tab索引
|
||||||
|
if (nodeLevel.value < 2) {
|
||||||
|
deviceIndex.value = '0'
|
||||||
|
}
|
||||||
|
if (nodeLevel.value < 3) {
|
||||||
|
busBarIndex.value = '0'
|
||||||
|
}
|
||||||
|
if (nodeLevel.value < 4) {
|
||||||
|
lineIndex.value = '0'
|
||||||
|
}
|
||||||
|
}
|
||||||
const getparentsNode = (node: any) => {
|
const getparentsNode = (node: any) => {
|
||||||
// 检查node是否存在以及是否有parent属性
|
// 检查node是否存在以及是否有parent属性
|
||||||
if (!node || !node.parent) {
|
if (!node || !node.parent) {
|
||||||
@@ -818,6 +866,10 @@ const add = () => {
|
|||||||
engineeringParam.value.description = ''
|
engineeringParam.value.description = ''
|
||||||
engineeringParam.value.name = ''
|
engineeringParam.value.name = ''
|
||||||
engineeringParam.value.province = ''
|
engineeringParam.value.province = ''
|
||||||
|
// 清理其他层级数据
|
||||||
|
projectInfoList.value = []
|
||||||
|
deviceInfoList.value = []
|
||||||
|
lineInfoList.value = []
|
||||||
break
|
break
|
||||||
case 1: // 新增项目,添加一个新的项目tab
|
case 1: // 新增项目,添加一个新的项目tab
|
||||||
// 添加一个新的空项目到projectInfoList
|
// 添加一个新的空项目到projectInfoList
|
||||||
@@ -827,6 +879,9 @@ const add = () => {
|
|||||||
description: ''
|
description: ''
|
||||||
})
|
})
|
||||||
deviceIndex.value = (projectInfoList.value.length - 1).toString()
|
deviceIndex.value = (projectInfoList.value.length - 1).toString()
|
||||||
|
// 清理设备和监测点数据
|
||||||
|
deviceInfoList.value = []
|
||||||
|
lineInfoList.value = []
|
||||||
break
|
break
|
||||||
case 2: // 新增设备,添加一个新的设备tab
|
case 2: // 新增设备,添加一个新的设备tab
|
||||||
// 添加一个新的空设备到deviceInfoList
|
// 添加一个新的空设备到deviceInfoList
|
||||||
@@ -842,6 +897,8 @@ const add = () => {
|
|||||||
sort: 0
|
sort: 0
|
||||||
})
|
})
|
||||||
busBarIndex.value = (deviceInfoList.value.length - 1).toString()
|
busBarIndex.value = (deviceInfoList.value.length - 1).toString()
|
||||||
|
// 清理监测点数据
|
||||||
|
lineInfoList.value = []
|
||||||
break
|
break
|
||||||
case 3: // 新增监测点,添加一个新的监测点tab
|
case 3: // 新增监测点,添加一个新的监测点tab
|
||||||
// 添加一个新的空监测点到lineInfoList
|
// 添加一个新的空监测点到lineInfoList
|
||||||
@@ -943,7 +1000,7 @@ const updateProjectFunc = (id: any) => {
|
|||||||
message: '修改项目成功'
|
message: '修改项目成功'
|
||||||
})
|
})
|
||||||
pageStatus.value = 1
|
pageStatus.value = 1
|
||||||
TerminalRef.value.info()
|
treedata()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -1037,7 +1094,7 @@ const updateLineFunc = (id: any) => {
|
|||||||
message: '修改监测点成功'
|
message: '修改监测点成功'
|
||||||
})
|
})
|
||||||
pageStatus.value = 1
|
pageStatus.value = 1
|
||||||
TerminalRef.value.info()
|
treedata()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1088,14 +1145,13 @@ const remove = () => {
|
|||||||
case 2: // 项目层级
|
case 2: // 项目层级
|
||||||
// 删除项目后选中工程节点
|
// 删除项目后选中工程节点
|
||||||
const engineeringId = nodeData.value.pids ? nodeData.value.pids.split(',')[1] : null
|
const engineeringId = nodeData.value.pids ? nodeData.value.pids.split(',')[1] : null
|
||||||
console.log(engineeringId)
|
|
||||||
deleteProject(nodeData.value.id,'','','', 0).then((res: any) => {
|
deleteProject(nodeData.value.id,'','','', 0).then((res: any) => {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: res.message
|
message: res.message
|
||||||
})
|
})
|
||||||
reaseStatus()
|
reaseStatus()
|
||||||
|
console.log('engineeringId',engineeringId)
|
||||||
if (engineeringId) {
|
if (engineeringId) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
treedata(engineeringId)
|
treedata(engineeringId)
|
||||||
@@ -1159,6 +1215,17 @@ const remove = () => {
|
|||||||
}
|
}
|
||||||
// 下一步
|
// 下一步
|
||||||
const next = async () => {
|
const next = async () => {
|
||||||
|
console.log('mainForm',mainForm.value.validate)
|
||||||
|
await mainForm.value?.validate((valid: boolean) => {
|
||||||
|
console.log('valid', valid)
|
||||||
|
if (valid) {
|
||||||
|
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
const executeNextStep = () => {
|
||||||
// 在新增模式下(pageStatus == 2)保存当前数据并创建下一个层级的Tab
|
// 在新增模式下(pageStatus == 2)保存当前数据并创建下一个层级的Tab
|
||||||
switch (nodeLevel.value) {
|
switch (nodeLevel.value) {
|
||||||
case 0: // 工程层级,下一步创建项目Tab
|
case 0: // 工程层级,下一步创建项目Tab
|
||||||
@@ -1823,8 +1890,8 @@ const handleDeviceTabsEdit = (targetName: any, action: any) => {
|
|||||||
cancelButtonText: '取消',
|
cancelButtonText: '取消',
|
||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
// 如果是编辑现有项目
|
// 删除项目
|
||||||
if (pageStatus.value === 3 && projectInfoList.value[deviceIndex.value]?.id) {
|
if (projectInfoList.value[deviceIndex.value]?.id) {
|
||||||
deleteProject(
|
deleteProject(
|
||||||
projectInfoList.value[deviceIndex.value].id,
|
projectInfoList.value[deviceIndex.value].id,
|
||||||
projectInfoList.value[deviceIndex.value].name,
|
projectInfoList.value[deviceIndex.value].name,
|
||||||
@@ -1845,7 +1912,8 @@ const handleDeviceTabsEdit = (targetName: any, action: any) => {
|
|||||||
// 重置相关索引
|
// 重置相关索引
|
||||||
busBarIndex.value = '0'
|
busBarIndex.value = '0'
|
||||||
lineIndex.value = '0'
|
lineIndex.value = '0'
|
||||||
TerminalRef.value.info()
|
pageStatus.value = 1
|
||||||
|
treedata()
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// 如果是新增模式下删除未保存的项目
|
// 如果是新增模式下删除未保存的项目
|
||||||
@@ -1895,7 +1963,7 @@ const handleBusBarTabsEdit = (targetName: any, action: any) => {
|
|||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
// 如果是编辑现有设备
|
// 如果是编辑现有设备
|
||||||
if (pageStatus.value === 3 && deviceInfoList.value[busBarIndex.value]?.id) {
|
if ( deviceInfoList.value[busBarIndex.value]?.id) {
|
||||||
deleteEquipment(deviceInfoList.value[busBarIndex.value].id).then((res: any) => {
|
deleteEquipment(deviceInfoList.value[busBarIndex.value].id).then((res: any) => {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
@@ -1908,7 +1976,8 @@ const handleBusBarTabsEdit = (targetName: any, action: any) => {
|
|||||||
? (deviceInfoList.value.length - 1).toString()
|
? (deviceInfoList.value.length - 1).toString()
|
||||||
: '0'
|
: '0'
|
||||||
lineIndex.value = '0'
|
lineIndex.value = '0'
|
||||||
TerminalRef.value.info()
|
pageStatus.value = 1
|
||||||
|
treedata()
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// 如果是新增模式下删除未保存的设备
|
// 如果是新增模式下删除未保存的设备
|
||||||
@@ -1958,8 +2027,8 @@ const handleLineTabsEdit = (targetName: any, action: any) => {
|
|||||||
type: 'warning'
|
type: 'warning'
|
||||||
}).then(() => {
|
}).then(() => {
|
||||||
// 如果是编辑现有监测点
|
// 如果是编辑现有监测点
|
||||||
if (pageStatus.value === 3 && lineInfoList.value[lineIndex.value]?.id) {
|
if (lineInfoList.value[lineIndex.value]?.lineId) {
|
||||||
deleteLine(lineInfoList.value[lineIndex.value].id).then((res: any) => {
|
deleteLine(lineInfoList.value[lineIndex.value].lineId).then((res: any) => {
|
||||||
ElMessage({
|
ElMessage({
|
||||||
type: 'success',
|
type: 'success',
|
||||||
message: res.message
|
message: res.message
|
||||||
@@ -1970,7 +2039,8 @@ const handleLineTabsEdit = (targetName: any, action: any) => {
|
|||||||
lineIndex.value = lineInfoList.value.length
|
lineIndex.value = lineInfoList.value.length
|
||||||
? (lineInfoList.value.length - 1).toString()
|
? (lineInfoList.value.length - 1).toString()
|
||||||
: '0'
|
: '0'
|
||||||
TerminalRef.value.info()
|
pageStatus.value = 1
|
||||||
|
treedata()
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
// 如果是新增模式下删除未保存的监测点
|
// 如果是新增模式下删除未保存的监测点
|
||||||
@@ -1991,6 +2061,7 @@ const handleLineTabsEdit = (targetName: any, action: any) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const tabChange = (type: string) => {
|
const tabChange = (type: string) => {
|
||||||
if (type == 'deviceIndex') {
|
if (type == 'deviceIndex') {
|
||||||
busBarIndex.value = '0'
|
busBarIndex.value = '0'
|
||||||
@@ -2006,6 +2077,9 @@ const treedata = (selectedNodeId?: string) => {
|
|||||||
} else {
|
} else {
|
||||||
TerminalRef.value.info();
|
TerminalRef.value.info();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
titleList.value = []
|
||||||
|
titleList.value.unshift('在线设备')
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 重置初始状态
|
* 重置初始状态
|
||||||
|
|||||||
@@ -983,10 +983,8 @@ const getRealDataMqttMsg = async () => {
|
|||||||
// JSON.parse(JSON.stringify(JSON.parse(new TextDecoder().decode(message))))
|
// JSON.parse(JSON.stringify(JSON.parse(new TextDecoder().decode(message))))
|
||||||
// )
|
// )
|
||||||
let obj = JSON.parse(JSON.stringify(JSON.parse(new TextDecoder().decode(message))))
|
let obj = JSON.parse(JSON.stringify(JSON.parse(new TextDecoder().decode(message))))
|
||||||
// console.log("🚀 ~ mqttRef.value.on ~ obj:", obj)
|
|
||||||
if (lineId.value != obj.lineId && adminInfo.userIndex != obj.userId) return
|
if (lineId.value != obj.lineId || adminInfo.userIndex != obj.userId) return
|
||||||
// console.log("🚀 ~ mqttRef.value.on ~ obj:", obj)
|
|
||||||
// console.log("🚀 ~ mqttRef.value.on ~ formInline.dataLevel:", obj.dataLevel, formInline.dataLevel)
|
|
||||||
|
|
||||||
//处理mqtt数据 1转2除 2转1乘
|
//处理mqtt数据 1转2除 2转1乘
|
||||||
//如果消息返回值是二次值,下拉框是二次值只需要单位换算 除以1000
|
//如果消息返回值是二次值,下拉框是二次值只需要单位换算 除以1000
|
||||||
@@ -1101,6 +1099,7 @@ const getRealDataMqttMsg = async () => {
|
|||||||
}
|
}
|
||||||
if (obj.hasOwnProperty('pA') && obj.hasOwnProperty('pB')) {
|
if (obj.hasOwnProperty('pA') && obj.hasOwnProperty('pB')) {
|
||||||
mqttMessage.value = obj
|
mqttMessage.value = obj
|
||||||
|
|
||||||
//更新实时数据主页面值
|
//更新实时数据主页面值
|
||||||
realTimeFlag.value && realTimeRef.value && realTimeRef.value.setRealData(mqttMessage.value)
|
realTimeFlag.value && realTimeRef.value && realTimeRef.value.setRealData(mqttMessage.value)
|
||||||
tableLoading.value = false
|
tableLoading.value = false
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ const tableStore: any = new TableStore({
|
|||||||
title: '持续时间(s)',
|
title: '持续时间(s)',
|
||||||
minWidth: 100,
|
minWidth: 100,
|
||||||
formatter: (row: any) => {
|
formatter: (row: any) => {
|
||||||
|
console.log('row.cellValue', row.cellValue)
|
||||||
row.cellValue = row.cellValue ? row.cellValue.toFixed(2) : '/'
|
row.cellValue = row.cellValue ? row.cellValue.toFixed(2) : '/'
|
||||||
return row.cellValue
|
return row.cellValue
|
||||||
}, sortable: true
|
}, sortable: true
|
||||||
@@ -65,7 +66,8 @@ const tableStore: any = new TableStore({
|
|||||||
title: '暂降(聚升)幅值(%)',
|
title: '暂降(聚升)幅值(%)',
|
||||||
width: 100,
|
width: 100,
|
||||||
formatter: (row: any) => {
|
formatter: (row: any) => {
|
||||||
row.cellValue = row.cellValue + '' ? row.cellValue.toFixed(2) : '/'
|
//row.cellValue = row.cellValue + '' ? row.cellValue.toFixed(2) : '/'
|
||||||
|
row.cellValue = row.cellValue != null ? Number(row.cellValue).toFixed(2) : '/'
|
||||||
if (String(row.cellValue).split('.')[1] == '00') {
|
if (String(row.cellValue).split('.')[1] == '00') {
|
||||||
row.cellValue = String(row.cellValue).split('.')[0]
|
row.cellValue = String(row.cellValue).split('.')[0]
|
||||||
}
|
}
|
||||||
|
|||||||
593
src/views/govern/setting/frontManagement/index.vue
Normal file
593
src/views/govern/setting/frontManagement/index.vue
Normal file
@@ -0,0 +1,593 @@
|
|||||||
|
<template>
|
||||||
|
<div class="default-main">
|
||||||
|
<div class="default">
|
||||||
|
<div style="flex: 1">
|
||||||
|
<TableHeader>
|
||||||
|
<template v-slot:select>
|
||||||
|
<el-form-item label="前置等级">
|
||||||
|
<el-select
|
||||||
|
v-model="tableStore.table.params.nodeGrade"
|
||||||
|
clearable
|
||||||
|
placeholder="请选择前置等级"
|
||||||
|
>
|
||||||
|
<el-option
|
||||||
|
v-for="item in fontdveoption"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="状态">
|
||||||
|
<el-select v-model="tableStore.table.params.searchState" clearable placeholder="请选择状态">
|
||||||
|
<el-option
|
||||||
|
v-for="item in statusoption"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
/>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
</template>
|
||||||
|
<template v-slot:operation>
|
||||||
|
<el-button type="primary" class="ml10" @click="add" icon="el-icon-Plus">新增</el-button>
|
||||||
|
</template>
|
||||||
|
</TableHeader>
|
||||||
|
<Table
|
||||||
|
ref="tableRef"
|
||||||
|
:row-config="{ isCurrent: true, isHover: true }"
|
||||||
|
@current-change="currentChangeEvent"
|
||||||
|
></Table>
|
||||||
|
</div>
|
||||||
|
<div class="pd10" style="width: 400px" v-loading="loading">
|
||||||
|
<el-input v-model="filterText" placeholder="请输入内容" clearable show-word-limit @input="change">
|
||||||
|
<template #prefix>
|
||||||
|
<Icon name="el-icon-Search" style="font-size: 16px" />
|
||||||
|
</template>
|
||||||
|
</el-input>
|
||||||
|
<el-tree
|
||||||
|
:style="height"
|
||||||
|
style="overflow-y: auto"
|
||||||
|
:data="dataSource"
|
||||||
|
node-key="id"
|
||||||
|
ref="treeRef"
|
||||||
|
default-expand-all
|
||||||
|
:props="defaultProps"
|
||||||
|
:filter-node-method="filterNode"
|
||||||
|
>
|
||||||
|
<template #default="{ node, data }">
|
||||||
|
<div class="custom-tree-node">
|
||||||
|
<span>
|
||||||
|
<span v-if="data.processState != null">
|
||||||
|
{{ node.label }}
|
||||||
|
</span>
|
||||||
|
<span v-else>{{ data.subName }}_{{ data.name }}</span>
|
||||||
|
<span
|
||||||
|
v-if="data.processState != null"
|
||||||
|
class="iconSpan"
|
||||||
|
:style="{ background: data.processState == 0 ? '#ff0000' : '#00b07d' }"
|
||||||
|
></span>
|
||||||
|
</span>
|
||||||
|
<div>
|
||||||
|
<!-- <el-button type="primary" v-if="data.id == undefined" link icon="el-icon-Plus" ></el-button> -->
|
||||||
|
<el-button
|
||||||
|
style="margin-left: 4px"
|
||||||
|
icon="el-icon-Edit"
|
||||||
|
v-if="data.id"
|
||||||
|
type="primary"
|
||||||
|
@click="edit(data)"
|
||||||
|
link
|
||||||
|
></el-button>
|
||||||
|
|
||||||
|
<el-popconfirm
|
||||||
|
v-else
|
||||||
|
class="box-item"
|
||||||
|
title="确定重启吗?"
|
||||||
|
placement="bottom"
|
||||||
|
@confirm="restart(data)"
|
||||||
|
>
|
||||||
|
<template #actions="{ confirm, cancel }">
|
||||||
|
<el-button size="small" @click="cancel">取消</el-button>
|
||||||
|
<el-button type="warning" size="small" @click="confirm">确认</el-button>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<template #reference>
|
||||||
|
<el-button
|
||||||
|
style="margin-left: 4px"
|
||||||
|
icon="el-icon-Refresh"
|
||||||
|
type="warning"
|
||||||
|
link
|
||||||
|
@click.stop
|
||||||
|
></el-button>
|
||||||
|
</template>
|
||||||
|
</el-popconfirm>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-tree>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- 重启确认对话框 -->
|
||||||
|
<el-dialog
|
||||||
|
draggable
|
||||||
|
title="重启确认"
|
||||||
|
v-model="restartDialogVisible"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
width="400px"
|
||||||
|
:before-close="cancelRestart"
|
||||||
|
>
|
||||||
|
<el-form :model="restartForm" label-width="80px" :rules="restartRules" ref="restartFormRef">
|
||||||
|
<el-form-item label="密码:" prop="password">
|
||||||
|
<el-input
|
||||||
|
v-model="restartForm.password"
|
||||||
|
type="password"
|
||||||
|
placeholder="请输入密码"
|
||||||
|
show-password
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="cancelRestart">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="confirmRestart">确 定</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
<el-dialog
|
||||||
|
draggable
|
||||||
|
:title="dialogTitle"
|
||||||
|
v-model="dialogFormVisible"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
width="700px"
|
||||||
|
:before-close="resetForm"
|
||||||
|
>
|
||||||
|
<el-form :model="formData" label-width="120px" :rules="rules" ref="ruleFormRef">
|
||||||
|
<el-form-item label="名称:" prop="name">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.name"
|
||||||
|
placeholder="请输入名称"
|
||||||
|
maxlength="32"
|
||||||
|
show-word-limit
|
||||||
|
@input="handleInput"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="IP:" prop="ip" class="top">
|
||||||
|
<el-input v-model="formData.ip" placeholder="请输入Ip"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="等级:" prop="nodeGrade" class="top">
|
||||||
|
<el-select v-model="formData.nodeGrade" placeholder="请选择等级" style="width: 100%">
|
||||||
|
<el-option
|
||||||
|
v-for="item in fontdveoption"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="最大终端数:" prop="nodeDevNum" class="top">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.nodeDevNum"
|
||||||
|
onkeyup="value = value.replace(/[^0-9]/g,'')"
|
||||||
|
maxlength="5"
|
||||||
|
placeholder="请输入最大终端数"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="最大进程数:" prop="maxProcessNum" class="top">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.maxProcessNum"
|
||||||
|
onkeyup="value = value.replace(/[^0-9]/g,'')"
|
||||||
|
maxlength="5"
|
||||||
|
placeholder="请根据监测点规模填写合适进程数(1个进程最大可承载200个监测点)"
|
||||||
|
></el-input>
|
||||||
|
<!-- <el-select v-model="formData.maxProcessNum" placeholder="请选择等级" style="width: 100%">
|
||||||
|
<el-option
|
||||||
|
v-for="item in NumList"
|
||||||
|
:key="item.id"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.id"
|
||||||
|
></el-option>
|
||||||
|
</el-select> -->
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="排序:" prop="sort" class="top">
|
||||||
|
<el-input v-model="formData.sort" placeholder="请输入排序"></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
<el-form-item label="描述:" prop="remark" class="top">
|
||||||
|
<el-input
|
||||||
|
v-model="formData.remark"
|
||||||
|
:autosize="{ minRows: 2, maxRows: 4 }"
|
||||||
|
type="textarea"
|
||||||
|
placeholder="请输入描述"
|
||||||
|
></el-input>
|
||||||
|
</el-form-item>
|
||||||
|
</el-form>
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="resetForm">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="onSubmit">确 定</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 绑定进程号 -->
|
||||||
|
<el-dialog draggable title="绑定进程号" v-model="popUps" :close-on-click-modal="false" width="400px">
|
||||||
|
<el-select v-model="processNo" placeholder="请选择进程号" style="width: 100%">
|
||||||
|
<el-option
|
||||||
|
v-for="item in dataSource"
|
||||||
|
:key="item.name"
|
||||||
|
:label="item.name"
|
||||||
|
:value="item.name"
|
||||||
|
></el-option>
|
||||||
|
</el-select>
|
||||||
|
|
||||||
|
<template #footer>
|
||||||
|
<el-button @click="popUps = false">取 消</el-button>
|
||||||
|
<el-button type="primary" @click="bindTheProcess">确 定</el-button>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
<script setup lang="ts">
|
||||||
|
import { mainHeight } from '@/utils/layout'
|
||||||
|
import TableStore from '@/utils/tableStore'
|
||||||
|
import { ElMessage } from 'element-plus'
|
||||||
|
import { ref, onMounted, provide, reactive, nextTick } from 'vue'
|
||||||
|
import Table from '@/components/table/index.vue'
|
||||||
|
import TableHeader from '@/components/table/header/index.vue'
|
||||||
|
import { ElButton } from 'element-plus'
|
||||||
|
import {addNode,updateNode,delNode,nodeDeviceTree,restartProcess,updateProcess} from '@/api/cs-device-boot/frontManagement'
|
||||||
|
|
||||||
|
defineOptions({
|
||||||
|
name: 'govern/setting/frontManagement'
|
||||||
|
})
|
||||||
|
const filterText = ref('')
|
||||||
|
const fontdveoption: any = ref([
|
||||||
|
{ id: 0, name: '极重要' },
|
||||||
|
{ id: 1, name: '普通' },
|
||||||
|
{ id: 2, name: '备用' }
|
||||||
|
])
|
||||||
|
const statusoption: any = ref([
|
||||||
|
{ id: 0, name: '未启用' },
|
||||||
|
{ id: 1, name: '启用' }
|
||||||
|
])
|
||||||
|
const height = mainHeight(70)
|
||||||
|
const loading = ref(false)
|
||||||
|
const popUps = ref(false)
|
||||||
|
const tableRef = ref()
|
||||||
|
const processNo = ref('')
|
||||||
|
const ruleFormRef = ref()
|
||||||
|
const dataSource: any = ref([])
|
||||||
|
const defaultProps = {
|
||||||
|
children: 'deviceInfoList',
|
||||||
|
label: 'name'
|
||||||
|
}
|
||||||
|
const formData: any = ref({
|
||||||
|
name: '',
|
||||||
|
ip: '',
|
||||||
|
nodeGrade: '',
|
||||||
|
nodeDevNum: '',
|
||||||
|
sort: '',
|
||||||
|
remark: '',
|
||||||
|
maxProcessNum: ''
|
||||||
|
})
|
||||||
|
const rules = reactive({
|
||||||
|
name: [{ required: true, message: '名称不可为空', trigger: 'blur' }],
|
||||||
|
ip: [{ required: true, message: 'ip不可为空', trigger: 'blur' }],
|
||||||
|
nodeGrade: [{ required: true, message: '等级不可为空', trigger: 'blur' }],
|
||||||
|
nodeDevNum: [{ required: true, message: '最大终端数不可为空', trigger: 'blur' }],
|
||||||
|
maxProcessNum: [{ required: true, message: '最大进程数不可为空', trigger: 'blur' }],
|
||||||
|
sort: [{ required: true, message: '排序不可为空', trigger: 'blur' }],
|
||||||
|
remark: [{ required: true, message: '描述不可为空', trigger: 'blur' }]
|
||||||
|
})
|
||||||
|
const dialogFormVisible = ref(false)
|
||||||
|
|
||||||
|
const dialogTitle = ref('新增前置机')
|
||||||
|
const processId = ref('')
|
||||||
|
const tableStore = new TableStore({
|
||||||
|
url: '/cs-device-boot/node/nodeList',
|
||||||
|
method: 'POST',
|
||||||
|
column: [
|
||||||
|
{ title: '名称', field: 'name' },
|
||||||
|
{ title: 'IP', field: 'ip' },
|
||||||
|
{
|
||||||
|
title: '等级',
|
||||||
|
field: 'nodeGrade',
|
||||||
|
render: 'tag',
|
||||||
|
custom: {
|
||||||
|
0: 'success',
|
||||||
|
1: 'warning',
|
||||||
|
2: 'info'
|
||||||
|
},
|
||||||
|
replaceValue: {
|
||||||
|
0: '极重要',
|
||||||
|
1: '普通',
|
||||||
|
2: '备用'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '最大监测点数量',
|
||||||
|
field: 'nodeDevNum'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '最大进程数',
|
||||||
|
field: 'maxProcessNum'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '排序',
|
||||||
|
field: 'sort'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '状态',
|
||||||
|
field: 'state',
|
||||||
|
render: 'tag',
|
||||||
|
custom: {
|
||||||
|
0: 'warning',
|
||||||
|
1: 'success'
|
||||||
|
},
|
||||||
|
replaceValue: {
|
||||||
|
0: '未启用',
|
||||||
|
1: '启用'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ title: '描述', field: 'remark' },
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
align: 'center',
|
||||||
|
width: '180',
|
||||||
|
render: 'buttons',
|
||||||
|
buttons: [
|
||||||
|
{
|
||||||
|
name: 'edit',
|
||||||
|
title: '编辑',
|
||||||
|
type: 'primary',
|
||||||
|
icon: 'el-icon-EditPen',
|
||||||
|
render: 'basicButton',
|
||||||
|
|
||||||
|
click: async row => {
|
||||||
|
dialogFormVisible.value = true
|
||||||
|
dialogTitle.value = '前置机修改'
|
||||||
|
formData.value = JSON.parse(JSON.stringify(row))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'del',
|
||||||
|
title: '删除',
|
||||||
|
type: 'danger',
|
||||||
|
icon: 'el-icon-Delete',
|
||||||
|
render: 'confirmButton',
|
||||||
|
popconfirm: {
|
||||||
|
confirmButtonText: '确认',
|
||||||
|
cancelButtonText: '取消',
|
||||||
|
confirmButtonType: 'danger',
|
||||||
|
title: '确定删除吗?'
|
||||||
|
},
|
||||||
|
click: row => {
|
||||||
|
delNode(row.id).then(res => {
|
||||||
|
ElMessage.success('删除成功')
|
||||||
|
tableStore.index()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
beforeSearchFun: () => {
|
||||||
|
for (let key in tableStore.table.params) {
|
||||||
|
if (tableStore.table.params[key] === '' && key !== 'nodeGrade' && key !== 'searchState') {
|
||||||
|
delete tableStore.table.params[key]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
loadCallback: () => {
|
||||||
|
tableRef.value.getRef().setCurrentRow(tableStore.table.data[0])
|
||||||
|
currentChangeEvent()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
const nodeId = ref('')
|
||||||
|
// 点击行
|
||||||
|
const currentChangeEvent = () => {
|
||||||
|
// 确保 tableRef 和当前记录存在
|
||||||
|
if (!tableRef.value || !tableRef.value.getRef().getCurrentRecord()) {
|
||||||
|
loading.value = false
|
||||||
|
dataSource.value = []
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
loading.value = true
|
||||||
|
dataSource.value = []
|
||||||
|
|
||||||
|
nodeDeviceTree({
|
||||||
|
id: tableRef.value.getRef().getCurrentRecord().id
|
||||||
|
})
|
||||||
|
.then(res => {
|
||||||
|
nodeId.value = tableRef.value.getRef().getCurrentRecord().id
|
||||||
|
// 检查返回的数据是否存在且不为空
|
||||||
|
if (res.data && res.data.processDeviceList) {
|
||||||
|
dataSource.value = res.data.processDeviceList.filter(item => (item.name = item.processNo + ''))
|
||||||
|
} else {
|
||||||
|
dataSource.value = []
|
||||||
|
}
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
// 添加错误处理,确保 loading 状态也能关闭
|
||||||
|
dataSource.value = []
|
||||||
|
loading.value = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 重启进程
|
||||||
|
const restart = (data: any) => {
|
||||||
|
console.log('🚀 ~ restart ~ data:', data)
|
||||||
|
restartProcess({
|
||||||
|
deviceRebootType: data.processNo,
|
||||||
|
nodeId: nodeId.value,
|
||||||
|
processNo: 2
|
||||||
|
}).then(res => {
|
||||||
|
ElMessage.success('重启成功')
|
||||||
|
currentChangeEvent()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const treeRef = ref()
|
||||||
|
// 树过滤
|
||||||
|
const change = (val: any) => {
|
||||||
|
treeRef.value!.filter(filterText.value)
|
||||||
|
}
|
||||||
|
const edit = (data: any) => {
|
||||||
|
processNo.value = data.nodeProcess
|
||||||
|
processId.value = data.id
|
||||||
|
popUps.value = true
|
||||||
|
}
|
||||||
|
// 更新进程号
|
||||||
|
const bindTheProcess = () => {
|
||||||
|
updateProcess({
|
||||||
|
id: processId.value,
|
||||||
|
processNo: processNo.value
|
||||||
|
}).then((res: any) => {
|
||||||
|
ElMessage.success('修改成功!')
|
||||||
|
popUps.value = false
|
||||||
|
currentChangeEvent()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
const filterNode = (value: string, data: any, node: any) => {
|
||||||
|
if (!value) return true
|
||||||
|
// return data.name.includes(value)
|
||||||
|
if (data.name) {
|
||||||
|
return chooseNode(value, data, node)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 过滤父节点 / 子节点 (如果输入的参数是父节点且能匹配,则返回该节点以及其下的所有子节点;如果参数是子节点,则返回该节点的父节点。name是中文字符,enName是英文字符.
|
||||||
|
const chooseNode = (value: string, data: any, node: any) => {
|
||||||
|
if (data.name.indexOf(value) !== -1) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
const level = node.level
|
||||||
|
// 如果传入的节点本身就是一级节点就不用校验了
|
||||||
|
if (level === 1) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
// 先取当前节点的父节点
|
||||||
|
let parentData = node.parent
|
||||||
|
// 遍历当前节点的父节点
|
||||||
|
let index = 0
|
||||||
|
while (index < level - 1) {
|
||||||
|
// 如果匹配到直接返回,此处name值是中文字符,enName是英文字符。判断匹配中英文过滤
|
||||||
|
if (parentData.data.name.indexOf(value) !== -1) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
// 否则的话再往上一层做匹配
|
||||||
|
parentData = parentData.parent
|
||||||
|
index++
|
||||||
|
}
|
||||||
|
// 没匹配到返回false
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
tableStore.table.params.orderBy = 'desc'
|
||||||
|
tableStore.table.params.nodeGrade = ''
|
||||||
|
tableStore.table.params.searchState = ''
|
||||||
|
provide('tableStore', tableStore)
|
||||||
|
|
||||||
|
// 新增
|
||||||
|
const add = () => {
|
||||||
|
dialogFormVisible.value = true
|
||||||
|
dialogTitle.value = '新增前置机'
|
||||||
|
}
|
||||||
|
|
||||||
|
// 确认
|
||||||
|
const onSubmit = () => {
|
||||||
|
ruleFormRef.value.validate((valid: any) => {
|
||||||
|
if (valid) {
|
||||||
|
if (dialogTitle.value == '新增前置机') {
|
||||||
|
addNode(formData.value).then(res => {
|
||||||
|
ElMessage.success('新增前置机')
|
||||||
|
resetForm()
|
||||||
|
tableStore.onTableAction('search', {})
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
updateNode(formData.value).then(res => {
|
||||||
|
ElMessage.success('修改成功')
|
||||||
|
resetForm()
|
||||||
|
tableStore.onTableAction('search', {})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 清空表格
|
||||||
|
const resetForm = () => {
|
||||||
|
dialogFormVisible.value = false
|
||||||
|
formData.value = {
|
||||||
|
name: '',
|
||||||
|
ip: '',
|
||||||
|
nodeGrade: '',
|
||||||
|
nodeDevNum: '',
|
||||||
|
sort: '',
|
||||||
|
remark: ''
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const handleInput = (val: string) => {
|
||||||
|
formData.value.name = val.replace(/\s+/g, '')
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
tableStore.index()
|
||||||
|
}, 100)
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss" scoped>
|
||||||
|
.qrcode-label {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
z-index: -99;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
width: 180px;
|
||||||
|
height: 180px;
|
||||||
|
padding: 10px;
|
||||||
|
background: #fff;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
.qrcode-label-title {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.qrcode-label-img {
|
||||||
|
width: 140px;
|
||||||
|
height: 140px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
:deep(.default) {
|
||||||
|
display: flex;
|
||||||
|
.row--current {
|
||||||
|
background-color: var(--el-color-primary-light-8) !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.custom-tree-node {
|
||||||
|
flex: 1;
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
font-size: 14px;
|
||||||
|
padding-right: 8px;
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
.iconSpan {
|
||||||
|
display: inline-block;
|
||||||
|
width: 8px;
|
||||||
|
height: 8px;
|
||||||
|
margin-left: 3px;
|
||||||
|
border-radius: 50%;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
Reference in New Issue
Block a user