联调文件管理页面

This commit is contained in:
guanj
2026-04-02 09:08:57 +08:00
parent 762965b1e4
commit 0b9aafc1b5
25 changed files with 829 additions and 437 deletions

View File

@@ -697,7 +697,7 @@ const handleTrend = async () => {
.then((res: any) => {
if (res.code == 'A0000') {
trendDataTime.value = ''
ElMessage.success('装置应答成功')
ElMessage.success('设备应答成功')
//每隔30s调用一下接口通知后台推送mqtt消息
trendTimer.value = window.setInterval(() => {
if (!dataSet.value.includes('_realtimedata')) return
@@ -721,7 +721,7 @@ const handleTrend = async () => {
// }
})
} else {
ElMessage.warning('装置应答失败')
ElMessage.warning('设备应答失败')
}
})
.catch(e => {
@@ -753,7 +753,7 @@ const handleHarmonicSpectrum = async () => {
// getRealDataMqttMsg()
await getBasicRealData(lineId.value).then((res: any) => {
if (res.code == 'A0000') {
ElMessage.success('装置应答成功')
ElMessage.success('设备应答成功')
// mqttMessage.value = {}
realDataTimer.value = window.setInterval(() => {
@@ -783,7 +783,7 @@ const handleReturn = async () => {
tableLoading.value = true
await getBasicRealData(lineId.value).then((res: any) => {
if (res.code == 'A0000') {
ElMessage.success('装置应答成功')
ElMessage.success('设备应答成功')
// mqttMessage.value = {}
realDataTimer.value = window.setInterval(() => {
if (!dataSet.value.includes('_realtimedata')) return
@@ -998,7 +998,7 @@ const getRealDataMqttMsg = async () => {
await getBasicRealData(lineId.value)
.then((res: any) => {
if (res.code == 'A0000') {
ElMessage.success('装置应答成功')
ElMessage.success('设备应答成功')
mqttMessage.value = {}
realDataTimer.value = window.setInterval(async () => {
@@ -1162,7 +1162,7 @@ const getRealDataMqttMsg = async () => {
console.log('mqtt客户端已断开连接.....')
})
} else {
ElMessage.success('装置应答失败')
ElMessage.success('设备应答失败')
tableLoading.value = false
}
})

View File

@@ -241,7 +241,7 @@ const tableStore = new TableStore({
width: '180',
render: 'buttons',
buttons: [
//直连装置注册
//直连设备注册
{
title: '注册',
type: 'primary',

View File

@@ -19,7 +19,7 @@
</el-breadcrumb>
</div>
<!-- <el-button :icon="Refresh" @click="handleRestartDevice" type="primary" :loading="deviceRestartLoading">
装置重启
设备重启
</el-button> -->
</div>
@@ -205,7 +205,10 @@ import {
addDeviceDir,
delDeviceDir,
listDir,
downloadFileFromFrontr
downloadFileFromFrontr,
deleteCld,
uploadFileToFront,
mkdir
} from '@/api/cs-device-boot/fileService'
import { defaultAttribute } from '@/components/table/defaultAttribute'
import { Delete, Download, Upload, Plus, Refresh, Search } from '@element-plus/icons-vue'
@@ -316,11 +319,11 @@ const vNode = () => {
])
}
//装置重启
//设备重启
const deviceRestartLoading = ref<boolean>(false)
const handleRestartDevice = () => {
deviceRestartLoading.value = true
ElMessageBox.prompt('二次校验密码确认', '装置重启', {
ElMessageBox.prompt('二次校验密码确认', '设备重启', {
confirmButtonText: '确认',
cancelButtonText: '取消',
customClass: 'customInput',
@@ -548,20 +551,37 @@ const reloadCurrentMenu = (msg: string) => {
const submitDeviceDir = () => {
formRef.value.validate((valid: any) => {
if (valid) {
let obj = {
nDid: nDid.value,
path:
activePath.value == '/'
? activePath.value + form.value.path
: activePath.value + '/' + form.value.path
}
loading.value = true
addDeviceDir(obj).then((res: any) => {
if (res.code == 'A0000') {
reloadCurrentMenu(res.message)
addDeviceDirOpen.value = false
if (devConType.value == 'CLD') {
let obj = {
devId: devId.value,
filePath:
activePath.value == '/'
? activePath.value + form.value.path
: activePath.value + '/' + form.value.path
}
})
loading.value = true
mkdir(obj).then((res: any) => {
if (res.code == 'A0000') {
reloadCurrentMenu(res.message)
addDeviceDirOpen.value = false
}
})
} else {
let obj = {
nDid: nDid.value,
path:
activePath.value == '/'
? activePath.value + form.value.path
: activePath.value + '/' + form.value.path
}
loading.value = true
addDeviceDir(obj).then((res: any) => {
if (res.code == 'A0000') {
reloadCurrentMenu(res.message)
addDeviceDirOpen.value = false
}
})
}
}
})
}
@@ -593,13 +613,30 @@ const handleDelDirOrFile = (row: any) => {
passwordConfirm(value)
.then((resp: any) => {
if (resp.code == 'A0000') {
delDeviceDir({ nDid: nDid.value, path: row.prjDataPath }).then((res: any) => {
if (res.code == 'A0000') {
reloadCurrentMenu(res.message)
// ElMessage({ message: res.message, type: 'success', duration: 5000 })
}
})
if (devConType.value == 'CLD') {
deleteCld({
devId: devId.value,
filePath: row.prjDataPath
})
.then((res: any) => {
if (res.code == 'A0000') {
reloadCurrentMenu(res.message)
}
})
.catch(e => {
loading.value = false
})
} else {
delDeviceDir({ nDid: nDid.value, path: row.prjDataPath })
.then((res: any) => {
if (res.code == 'A0000') {
reloadCurrentMenu(res.message)
}
})
.catch(e => {
loading.value = false
})
}
}
})
.catch(e => {
@@ -636,17 +673,32 @@ const handleUpload = (e: any, fileList: any, row: any) => {
localStorage.setItem('fileName', fileName.value)
changeType.value = 'upload'
localStorage.setItem('changeType', changeType.value)
const obj = {
id: nDid.value,
file: e.raw,
filePath: row || row.prjDataPath
}
uploadDeviceFile(obj).then((res: any) => {
if (res.code == 'A0000') {
reloadCurrentMenu(res.message)
status.value = 100
if (devConType.value == 'CLD') {
const obj = {
devId: devId.value,
file: e.raw,
dirPath: row || row.prjDataPath
}
})
uploadFileToFront(obj).then((res: any) => {
if (res.code == 'A0000') {
reloadCurrentMenu(res.message)
status.value = 100
}
})
} else {
const obj = {
id: nDid.value,
file: e.raw,
filePath: row || row.prjDataPath
}
uploadDeviceFile(obj).then((res: any) => {
if (res.code == 'A0000') {
reloadCurrentMenu(res.message)
status.value = 100
}
})
}
}
watch(
() => activePathList.value,

View File

@@ -20,7 +20,7 @@
type="primary"
:loading="deviceRestartLoading"
>
装置重启
设备重启
</el-button>
</template>
<el-descriptions-item label="名称">
@@ -237,11 +237,11 @@ const openGroup = () => {
})
})
}
//装置重启
//设备重启
const deviceRestartLoading = ref<boolean>(false)
const handleRestartDevice = () => {
deviceRestartLoading.value = true
ElMessageBox.prompt('二次校验密码确认', '装置重启', {
ElMessageBox.prompt('二次校验密码确认', '设备重启', {
confirmButtonText: '确认',
cancelButtonText: '取消',
customClass: 'customInput',

View File

@@ -22,7 +22,7 @@
</div>
<!-- 新增设备列表 -->
<div class="device-list-section table-wrapper">
<!-- <div class="device-list-section table-wrapper">
<vxe-table v-bind="defaultAttribute" :data="deviceTableData" height="auto" style="width: 100%">
<vxe-column field="name" title="设备名称"></vxe-column>
<vxe-column title="操作" width="200px">
@@ -33,7 +33,7 @@
</template>
</vxe-column>
</vxe-table>
</div>
</div> -->
</div>
</div>
@@ -107,7 +107,7 @@
style="width: 100%"
>
<vxe-column type="checkbox" width="60"></vxe-column>
<vxe-column field="name" title="设备名称"></vxe-column>
<vxe-column field="name" title="便携式设备名称"></vxe-column>
</vxe-table>
</div>
</div>
@@ -298,7 +298,7 @@ const addData = () => {
min-height: 0;
&:first-child {
margin-bottom: 10px;
// margin-bottom: 10px;
}
}
}

View File

@@ -6,12 +6,13 @@
:default-checked-keys="defaultCheckedKeys"
@checkChange="checkChange"
:height="35"
:engineering="true"
></DeviceTree>
<div class="device-manage-right" :style="{ height: pageHeight.height }">
<vxe-table v-bind="defaultAttribute" :data="tableData" height="auto" style="width: 100%">
<vxe-column field="enginerName" title="工程名称"></vxe-column>
<vxe-column field="projectName" title="项目名称"></vxe-column>
<vxe-column field="deviceName" title="装置名称"></vxe-column>
<vxe-column field="deviceName" title="设备名称"></vxe-column>
</vxe-table>
</div>
</div>