设备:量测添加加载中状态
故障:合并日志管理模块 单风机:修改显示字符
This commit is contained in:
parent
1f01735820
commit
96adbaf0f1
@ -209,7 +209,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<span class="content-number">{{ realTimeDataForSingle.monthprodenergy }}</span>
|
<span class="content-number">{{ realTimeDataForSingle.monthprodenergy }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>万kWh</div>
|
<div>kWh</div>
|
||||||
<div>月发电量</div>
|
<div>月发电量</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -221,7 +221,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<span class="content-number">{{ realTimeDataForSingle.yearprodenergy }}</span>
|
<span class="content-number">{{ realTimeDataForSingle.yearprodenergy }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>万kWh</div>
|
<div>kWh</div>
|
||||||
<div>年发电量</div>
|
<div>年发电量</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -233,7 +233,7 @@
|
|||||||
<div>
|
<div>
|
||||||
<span class="content-number">{{ realTimeDataForSingle.ikwhoverall }}</span>
|
<span class="content-number">{{ realTimeDataForSingle.ikwhoverall }}</span>
|
||||||
</div>
|
</div>
|
||||||
<div>万kWh</div>
|
<div>kWh</div>
|
||||||
<div>总发电量</div>
|
<div>总发电量</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -69,7 +69,7 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<el-button type="primary" @click="getChartData">查询</el-button>
|
<el-button type="primary" @click="getChartData" :loading="loading">查询</el-button>
|
||||||
</div>
|
</div>
|
||||||
</el-form>
|
</el-form>
|
||||||
<div class="chartPart">
|
<div class="chartPart">
|
||||||
@ -301,6 +301,7 @@ watch(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const loading = ref(false)
|
||||||
const searchFormRef = ref<FormInstance>()
|
const searchFormRef = ref<FormInstance>()
|
||||||
const lineChartVisible = ref(false)
|
const lineChartVisible = ref(false)
|
||||||
const searchInfo = reactive({
|
const searchInfo = reactive({
|
||||||
@ -337,6 +338,7 @@ const shortcuts = [
|
|||||||
const getChartData = () => {
|
const getChartData = () => {
|
||||||
searchFormRef.value?.validate((valid) => {
|
searchFormRef.value?.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
|
loading.value = true
|
||||||
getRealValueRangeReq({
|
getRealValueRangeReq({
|
||||||
startTime: dayjs(seachOptions.datePickerValue[0]).valueOf(),
|
startTime: dayjs(seachOptions.datePickerValue[0]).valueOf(),
|
||||||
endTime: dayjs(seachOptions.datePickerValue[1]).valueOf(),
|
endTime: dayjs(seachOptions.datePickerValue[1]).valueOf(),
|
||||||
@ -482,6 +484,7 @@ const initChart = (data: { values: number[]; times: number[] }) => {
|
|||||||
],
|
],
|
||||||
}
|
}
|
||||||
chartInstance.setOption(option)
|
chartInstance.setOption(option)
|
||||||
|
loading.value = false
|
||||||
}
|
}
|
||||||
|
|
||||||
const closeLineChart = () => {
|
const closeLineChart = () => {
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="main">
|
<el-main class="main">
|
||||||
<el-table :data="tableData">
|
<el-table :data="logTableData">
|
||||||
<el-table-column type="selection" width="55" />
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column label="文件名称" prop="name" align="center"></el-table-column>
|
<el-table-column label="文件名称" prop="name" align="center"></el-table-column>
|
||||||
<el-table-column label="修改时间" prop="lastModified" align="center" width="250"></el-table-column>
|
<el-table-column label="修改时间" prop="lastModified" align="center" width="250"></el-table-column>
|
||||||
@ -56,8 +56,8 @@
|
|||||||
<el-table-column label="操作" align="center" width="140">
|
<el-table-column label="操作" align="center" width="140">
|
||||||
<template #default="scope">
|
<template #default="scope">
|
||||||
<div class="tableBtnPart">
|
<div class="tableBtnPart">
|
||||||
<el-button text type="primary" @click="readFile(scope.row)">查看</el-button>
|
<el-button text type="primary" @click="logReadFile(scope.row)">查看</el-button>
|
||||||
<el-button text type="danger" @click="downloadFile(scope.row)">下载</el-button>
|
<el-button text type="danger" @click="logDownloadFile(scope.row)">下载</el-button>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
@ -66,10 +66,10 @@
|
|||||||
<el-footer class="footer">
|
<el-footer class="footer">
|
||||||
<div class="footerPart">
|
<div class="footerPart">
|
||||||
<el-pagination
|
<el-pagination
|
||||||
v-model:current-page="pageSetting.current"
|
v-model:current-page="logPageSetting.current"
|
||||||
v-model:page-size="pageSetting.pageSize"
|
v-model:page-size="logPageSetting.pageSize"
|
||||||
:total="pageSetting.total"
|
:total="logPageSetting.total"
|
||||||
:page-sizes="pageSetting.pageSizes"
|
:page-sizes="logPageSetting.pageSizes"
|
||||||
background
|
background
|
||||||
:pager-count="7"
|
:pager-count="7"
|
||||||
layout="total,prev, pager, next, jumper,sizes"
|
layout="total,prev, pager, next, jumper,sizes"
|
||||||
@ -80,16 +80,16 @@
|
|||||||
</el-container>
|
</el-container>
|
||||||
</el-container>
|
</el-container>
|
||||||
</div>
|
</div>
|
||||||
<el-dialog v-model="configDialogVisible" title="配置信息" width="500" @close="closeConfigDialog">
|
<el-dialog v-model="logConfigDialogVisible" title="配置信息" width="500" @close="closeConfigDialog">
|
||||||
<el-form ref="configFormRef" :model="configFormData" label-width="120" :rules="configFormRules">
|
<el-form ref="configFormRef" :model="logConfigFormData" label-width="120" :rules="configFormRules">
|
||||||
<el-form-item prop="timeFormat" label="时间格式">
|
<el-form-item prop="timeFormat" label="时间格式">
|
||||||
<el-input v-model="configFormData.timeFormat"></el-input>
|
<el-input v-model="logConfigFormData.timeFormat"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="delimiter" label="分隔符">
|
<el-form-item prop="delimiter" label="分隔符">
|
||||||
<el-input v-model="configFormData.delimiter"></el-input>
|
<el-input v-model="logConfigFormData.delimiter"></el-input>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item prop="validStartLine" label="有效起始行数">
|
<el-form-item prop="validStartLine" label="有效起始行数">
|
||||||
<el-input-number v-model="configFormData.validStartLine"></el-input-number>
|
<el-input-number v-model="logConfigFormData.validStartLine"></el-input-number>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-form>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
@ -258,18 +258,18 @@ const shortcuts = [
|
|||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
|
||||||
let originTableData = ref<tableItemData[]>([])
|
let logOriginTableData = ref<tableItemData[]>([])
|
||||||
const tableData = computed(() => {
|
const logTableData = computed(() => {
|
||||||
let data = originTableData.value
|
let data = logOriginTableData.value
|
||||||
if (searchData.fileName) {
|
if (searchData.fileName) {
|
||||||
const reg = new RegExp(searchData.fileName, 'i')
|
const reg = new RegExp(searchData.fileName, 'i')
|
||||||
data = data.filter((item) => reg.test(item.name))
|
data = data.filter((item) => reg.test(item.name))
|
||||||
}
|
}
|
||||||
const res = data.slice((pageSetting.current - 1) * pageSetting.pageSize, pageSetting.current * pageSetting.pageSize)
|
const res = data.slice((logPageSetting.current - 1) * logPageSetting.pageSize, logPageSetting.current * logPageSetting.pageSize)
|
||||||
pageSetting.total = res.length
|
logPageSetting.total = res.length
|
||||||
return res
|
return res
|
||||||
})
|
})
|
||||||
const pageSetting = reactive({
|
const logPageSetting = reactive({
|
||||||
current: 1,
|
current: 1,
|
||||||
pageSize: 20,
|
pageSize: 20,
|
||||||
total: 0,
|
total: 0,
|
||||||
@ -287,30 +287,30 @@ const getListForAirBlower = () => {
|
|||||||
|
|
||||||
getLogRecordListReq(data).then((res) => {
|
getLogRecordListReq(data).then((res) => {
|
||||||
if (res.success) {
|
if (res.success) {
|
||||||
pageSetting.total = res.data.length
|
logPageSetting.total = res.data.length
|
||||||
originTableData.value = res.data
|
logOriginTableData.value = res.data
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const configDialogVisible = ref(false)
|
const logConfigDialogVisible = ref(false)
|
||||||
|
|
||||||
const configFormRef = ref<FormInstance>()
|
const configFormRef = ref<FormInstance>()
|
||||||
const closeConfigDialog = () => {
|
const closeConfigDialog = () => {
|
||||||
configFormRef.value?.resetFields()
|
configFormRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
const configFormData = reactive({
|
const logConfigFormData = reactive({
|
||||||
timeFormat: 'yyyy-MM-dd-HH:mm:ss.SSS',
|
timeFormat: 'yyyy-MM-dd-HH:mm:ss.SSS',
|
||||||
delimiter: ';',
|
delimiter: ';',
|
||||||
validStartLine: 6,
|
validStartLine: 6,
|
||||||
})
|
})
|
||||||
|
|
||||||
const openConfigDialog = () => {
|
const openConfigDialog = () => {
|
||||||
configDialogVisible.value = true
|
logConfigDialogVisible.value = true
|
||||||
configFormData.delimiter = curTreeData.value.options.delimiter
|
logConfigFormData.delimiter = curTreeData.value.options.delimiter
|
||||||
configFormData.timeFormat = curTreeData.value.options.timeFormat
|
logConfigFormData.timeFormat = curTreeData.value.options.timeFormat
|
||||||
configFormData.validStartLine = curTreeData.value.options.validStartLine
|
logConfigFormData.validStartLine = curTreeData.value.options.validStartLine
|
||||||
}
|
}
|
||||||
|
|
||||||
const configFormRules = {
|
const configFormRules = {
|
||||||
@ -345,12 +345,12 @@ const submitConfig = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
const cancelConfig = () => {
|
const cancelConfig = () => {
|
||||||
configDialogVisible.value = false
|
logConfigDialogVisible.value = false
|
||||||
configFormRef.value?.resetFields()
|
configFormRef.value?.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
const setAirBlowerConfig = () => {
|
const setAirBlowerConfig = () => {
|
||||||
const stringify = JSON.stringify({ plcFormat: configFormData })
|
const stringify = JSON.stringify({ plcFormat: logConfigFormData })
|
||||||
|
|
||||||
setConfigReq({
|
setConfigReq({
|
||||||
id: curTreeData.value.id,
|
id: curTreeData.value.id,
|
||||||
@ -358,7 +358,7 @@ const setAirBlowerConfig = () => {
|
|||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
ElMessage.success('配置成功')
|
ElMessage.success('配置成功')
|
||||||
configDialogVisible.value = false
|
logConfigDialogVisible.value = false
|
||||||
return
|
return
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@ -376,13 +376,13 @@ const setAirBlowerConfig = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const previewFileDialogVisible = ref(false)
|
const previewFileDialogVisible = ref(false)
|
||||||
const readFile = (data: tableItemData) => {
|
const logReadFile = (data: tableItemData) => {
|
||||||
previewFileDialogVisible.value = true
|
previewFileDialogVisible.value = true
|
||||||
getFileKeyEnum().finally(() => {
|
getFileKeyEnum().finally(() => {
|
||||||
getFileData(data.path)
|
getFileData(data.path)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const downloadFile = (data: tableItemData) => {
|
const logDownloadFile = (data: tableItemData) => {
|
||||||
downloadFileReq({ url: data.path }).then((res) => {
|
downloadFileReq({ url: data.path }).then((res) => {
|
||||||
const url = window.URL.createObjectURL(res.data)
|
const url = window.URL.createObjectURL(res.data)
|
||||||
const a = document.createElement('a')
|
const a = document.createElement('a')
|
||||||
|
@ -48,35 +48,69 @@
|
|||||||
</div>
|
</div>
|
||||||
</el-header>
|
</el-header>
|
||||||
<el-main class="main">
|
<el-main class="main">
|
||||||
<el-table :data="tableData">
|
<el-tabs v-model="activeName" @tab-change="checkTab" class="tabs">
|
||||||
<el-table-column type="selection" width="55" />
|
<el-tab-pane label="故障录波" name="malFunction" class="tabPane">
|
||||||
<el-table-column label="文件名称" prop="name" align="center"></el-table-column>
|
<div class="tableMain">
|
||||||
<el-table-column label="修改时间" prop="lastModified" align="center" width="250"></el-table-column>
|
<el-table :data="tableData" class="tableClass">
|
||||||
<el-table-column label="文件大小" prop="size" align="center" width="120"></el-table-column>
|
<el-table-column type="selection" width="55" />
|
||||||
<el-table-column label="操作" align="center" width="140">
|
<el-table-column label="文件名称" prop="name" align="center"></el-table-column>
|
||||||
<template #default="scope">
|
<el-table-column label="修改时间" prop="lastModified" align="center" width="250"></el-table-column>
|
||||||
<div class="tableBtnPart">
|
<el-table-column label="文件大小" prop="size" align="center" width="120"></el-table-column>
|
||||||
<el-button text type="primary" @click="readFile(scope.row)">查看</el-button>
|
<el-table-column label="操作" align="center" width="140">
|
||||||
<el-button text type="danger" @click="downloadFile(scope.row)">下载</el-button>
|
<template #default="scope">
|
||||||
</div>
|
<div class="tableBtnPart">
|
||||||
</template>
|
<el-button text type="primary" @click="readFile(scope.row)">查看</el-button>
|
||||||
</el-table-column>
|
<el-button text type="danger" @click="downloadFile(scope.row)">下载</el-button>
|
||||||
</el-table>
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="footerPart">
|
||||||
|
<el-pagination
|
||||||
|
v-model:current-page="pageSetting.current"
|
||||||
|
v-model:page-size="pageSetting.pageSize"
|
||||||
|
:total="pageSetting.total"
|
||||||
|
:page-sizes="pageSetting.pageSizes"
|
||||||
|
background
|
||||||
|
:pager-count="7"
|
||||||
|
layout="total,prev, pager, next, jumper,sizes"
|
||||||
|
@change="changePageSetting"
|
||||||
|
></el-pagination>
|
||||||
|
</div>
|
||||||
|
</el-tab-pane>
|
||||||
|
<el-tab-pane label="日志管理" name="logManage" class="tabPane">
|
||||||
|
<div class="tableMain">
|
||||||
|
<el-table :data="logTableData" class="tableClass">
|
||||||
|
<el-table-column type="selection" width="55" />
|
||||||
|
<el-table-column label="文件名称" prop="name" align="center"></el-table-column>
|
||||||
|
<el-table-column label="修改时间" prop="lastModified" align="center" width="250"></el-table-column>
|
||||||
|
<el-table-column label="文件大小" prop="size" align="center" width="120"></el-table-column>
|
||||||
|
<el-table-column label="操作" align="center" width="140">
|
||||||
|
<template #default="scope">
|
||||||
|
<div class="tableBtnPart">
|
||||||
|
<el-button text type="primary" @click="readFile(scope.row)">查看</el-button>
|
||||||
|
<el-button text type="danger" @click="downloadFile(scope.row)">下载</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</el-table>
|
||||||
|
</div>
|
||||||
|
<div class="footerPart">
|
||||||
|
<el-pagination
|
||||||
|
v-model:current-page="logPageSetting.current"
|
||||||
|
v-model:page-size="logPageSetting.pageSize"
|
||||||
|
:total="logPageSetting.total"
|
||||||
|
:page-sizes="logPageSetting.pageSizes"
|
||||||
|
background
|
||||||
|
:pager-count="7"
|
||||||
|
layout="total,prev, pager, next, jumper,sizes"
|
||||||
|
@change="changePageSetting"
|
||||||
|
></el-pagination>
|
||||||
|
</div>
|
||||||
|
</el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
</el-main>
|
</el-main>
|
||||||
<el-footer class="footer">
|
|
||||||
<div class="footerPart">
|
|
||||||
<el-pagination
|
|
||||||
v-model:current-page="pageSetting.current"
|
|
||||||
v-model:page-size="pageSetting.pageSize"
|
|
||||||
:total="pageSetting.total"
|
|
||||||
:page-sizes="pageSetting.pageSizes"
|
|
||||||
background
|
|
||||||
:pager-count="7"
|
|
||||||
layout="total,prev, pager, next, jumper,sizes"
|
|
||||||
@change="changePageSetting"
|
|
||||||
></el-pagination>
|
|
||||||
</div>
|
|
||||||
</el-footer>
|
|
||||||
</el-container>
|
</el-container>
|
||||||
</el-container>
|
</el-container>
|
||||||
</div>
|
</div>
|
||||||
@ -140,10 +174,16 @@ import { ref, reactive, computed, onMounted, nextTick, onUnmounted } from 'vue'
|
|||||||
import { dayjs, ElMessage, FormInstance, TreeInstance } from 'element-plus'
|
import { dayjs, ElMessage, FormInstance, TreeInstance } from 'element-plus'
|
||||||
import { Search, Setting } from '@element-plus/icons-vue'
|
import { Search, Setting } from '@element-plus/icons-vue'
|
||||||
import { getMalFunctionListReq, setConfigReq, previewFileReq, downloadFileReq, getFileKeyEnumsReq } from '/@/api/backend/malfunction/request'
|
import { getMalFunctionListReq, setConfigReq, previewFileReq, downloadFileReq, getFileKeyEnumsReq } from '/@/api/backend/malfunction/request'
|
||||||
|
import {
|
||||||
|
getLogRecordListReq,
|
||||||
|
setConfigReq as setLogConfigReq,
|
||||||
|
previewFileReq as previewLogFileReq,
|
||||||
|
downloadFileReq as downloadLogFileReq,
|
||||||
|
getFileKeyEnumsReq as getLogFileKeyEnumsReq,
|
||||||
|
} from '/@/api/backend/logRecord/request'
|
||||||
import { equipList } from '/@/api/backend/temperature/request'
|
import { equipList } from '/@/api/backend/temperature/request'
|
||||||
import * as echarts from 'echarts'
|
import * as echarts from 'echarts'
|
||||||
import { tableItemData } from './type'
|
import { tableItemData } from './type'
|
||||||
import { id } from 'element-plus/es/locales.mjs'
|
|
||||||
|
|
||||||
const defaultProps = {
|
const defaultProps = {
|
||||||
children: 'children',
|
children: 'children',
|
||||||
@ -221,7 +261,7 @@ const getTreeDataList = () => {
|
|||||||
id: item.id,
|
id: item.id,
|
||||||
model: item.model,
|
model: item.model,
|
||||||
madeinFactory: item.madeinFactory,
|
madeinFactory: item.madeinFactory,
|
||||||
options: item.options ? JSON.parse(item.options).fdrFormat : {},
|
options: item.options ? JSON.parse(item.options) : {},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
originTreeChildData = data
|
originTreeChildData = data
|
||||||
@ -283,18 +323,29 @@ const pageSetting = reactive({
|
|||||||
const changePageSetting = () => {}
|
const changePageSetting = () => {}
|
||||||
|
|
||||||
const getListForAirBlower = () => {
|
const getListForAirBlower = () => {
|
||||||
|
console.log(activeName.value)
|
||||||
|
|
||||||
const data = {
|
const data = {
|
||||||
deviceCode: curTreeData.value.code,
|
deviceCode: curTreeData.value.code,
|
||||||
startTime: dayjs(searchData.date[0]).format('YYYY-MM'),
|
startTime: dayjs(searchData.date[0]).format('YYYY-MM'),
|
||||||
endTime: dayjs(searchData.date[1]).format('YYYY-MM'),
|
endTime: dayjs(searchData.date[1]).format('YYYY-MM'),
|
||||||
}
|
}
|
||||||
|
|
||||||
getMalFunctionListReq(data).then((res) => {
|
if (activeName.value === 'malFunction') {
|
||||||
if (res.success) {
|
getMalFunctionListReq(data).then((res) => {
|
||||||
pageSetting.total = res.data.length
|
if (res.success) {
|
||||||
originTableData.value = res.data
|
pageSetting.total = res.data.length
|
||||||
}
|
originTableData.value = res.data
|
||||||
})
|
}
|
||||||
|
})
|
||||||
|
} else if (activeName.value === 'logManage') {
|
||||||
|
getLogRecordListReq(data).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
logPageSetting.total = res.data.length
|
||||||
|
logOriginTableData.value = res.data
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const configDialogVisible = ref(false)
|
const configDialogVisible = ref(false)
|
||||||
@ -305,16 +356,22 @@ const closeConfigDialog = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const configFormData = reactive({
|
const configFormData = reactive({
|
||||||
timeFormat: 'yyyy-MM-dd-HH:mm:ss.SSS',
|
timeFormat: '',
|
||||||
delimiter: ';',
|
delimiter: '',
|
||||||
validStartLine: 6,
|
validStartLine: 4,
|
||||||
})
|
})
|
||||||
|
|
||||||
const openConfigDialog = () => {
|
const openConfigDialog = () => {
|
||||||
configDialogVisible.value = true
|
configDialogVisible.value = true
|
||||||
configFormData.delimiter = curTreeData.value.options.delimiter
|
if (activeName.value === 'malFunction') {
|
||||||
configFormData.timeFormat = curTreeData.value.options.timeFormat
|
configFormData.delimiter = curTreeData.value.options.fdrFormat.delimiter
|
||||||
configFormData.validStartLine = curTreeData.value.options.validStartLine
|
configFormData.timeFormat = curTreeData.value.options.fdrFormat.timeFormat
|
||||||
|
configFormData.validStartLine = curTreeData.value.options.fdrFormat.validStartLine
|
||||||
|
} else if (activeName.value === 'logManage') {
|
||||||
|
configFormData.delimiter = curTreeData.value.options.plcFormat.delimiter
|
||||||
|
configFormData.timeFormat = curTreeData.value.options.plcFormat.timeFormat
|
||||||
|
configFormData.validStartLine = curTreeData.value.options.plcFormat.validStartLine
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const configFormRules = {
|
const configFormRules = {
|
||||||
@ -345,6 +402,22 @@ const submitConfig = () => {
|
|||||||
configFormRef.value?.validate((valid) => {
|
configFormRef.value?.validate((valid) => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
setAirBlowerConfig()
|
setAirBlowerConfig()
|
||||||
|
.then(() => {
|
||||||
|
ElMessage.success('配置成功')
|
||||||
|
configDialogVisible.value = false
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
return getTreeDataList()
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
nextTick(() => {
|
||||||
|
treeRef.value?.setCurrentKey(curTreeData.value.id, false)
|
||||||
|
curTreeData.value = treeRef.value?.getCurrentNode()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
ElMessage.error(err)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -354,49 +427,90 @@ const cancelConfig = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const setAirBlowerConfig = () => {
|
const setAirBlowerConfig = () => {
|
||||||
const stringify = JSON.stringify({ fdrFormat: configFormData })
|
return new Promise((resolve) => {
|
||||||
|
const stringify = JSON.stringify({ fdrFormat: configFormData })
|
||||||
setConfigReq({
|
if (activeName.value === 'malFunction') {
|
||||||
id: curTreeData.value.id,
|
setConfigReq({
|
||||||
options: stringify,
|
id: curTreeData.value.id,
|
||||||
})
|
options: stringify,
|
||||||
.then(() => {
|
|
||||||
ElMessage.success('配置成功')
|
|
||||||
configDialogVisible.value = false
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
return getTreeDataList()
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
nextTick(() => {
|
|
||||||
treeRef.value?.setCurrentKey(curTreeData.value.id, false)
|
|
||||||
curTreeData.value = treeRef.value?.getCurrentNode()
|
|
||||||
})
|
})
|
||||||
})
|
.then(() => {
|
||||||
.catch((err) => {
|
resolve(true)
|
||||||
ElMessage.error('配置失败')
|
})
|
||||||
})
|
.catch(() => {
|
||||||
|
throw '配置失败'
|
||||||
|
})
|
||||||
|
} else if (activeName.value === 'logManage') {
|
||||||
|
setLogConfigReq({
|
||||||
|
id: curTreeData.value.id,
|
||||||
|
options: stringify,
|
||||||
|
})
|
||||||
|
.then(() => {
|
||||||
|
resolve(true)
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
throw '配置失败'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const previewFileDialogVisible = ref(false)
|
const previewFileDialogVisible = ref(false)
|
||||||
const readFile = (data: tableItemData) => {
|
const readFile = (data: tableItemData) => {
|
||||||
previewFileDialogVisible.value = true
|
previewFileDialogVisible.value = true
|
||||||
getFileKeyEnum().finally(() => {
|
getFileKeyEnum().finally(() => {
|
||||||
getFileData(data.path)
|
getFileData(data.path).then((res) => {
|
||||||
|
previewChartData = res.data
|
||||||
|
const attrName = Object.keys(res.data)
|
||||||
|
const data: any = []
|
||||||
|
attrName.forEach((item) => {
|
||||||
|
if (item === 'TimeStamp') {
|
||||||
|
previewChartData.TimeStamp = previewChartData.TimeStamp.map((item: any) => {
|
||||||
|
return dayjs(item).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
})
|
||||||
|
} else if (item === 'TimeStampUTC') {
|
||||||
|
previewChartData.TimeStamp = previewChartData.TimeStampUTC.map((item: any) => {
|
||||||
|
return dayjs(item).format('YYYY-MM-DD HH:mm:ss')
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
data.push({
|
||||||
|
label: fileKeyEnums[item],
|
||||||
|
key: item,
|
||||||
|
isLeaf: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
previewTreeData.value = data
|
||||||
|
originPreviewTreeData = data
|
||||||
|
previewTreeLoading.value = false
|
||||||
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
const downloadFile = (data: tableItemData) => {
|
const downloadFile = (data: tableItemData) => {
|
||||||
downloadFileReq({ url: data.path }).then((res) => {
|
runDownLoad(data)
|
||||||
const url = window.URL.createObjectURL(res.data)
|
.then((res) => {
|
||||||
const a = document.createElement('a')
|
const url = window.URL.createObjectURL(res.data)
|
||||||
a.style.display = 'none'
|
const a = document.createElement('a')
|
||||||
a.href = url
|
a.style.display = 'none'
|
||||||
a.download = data.name
|
a.href = url
|
||||||
document.body.appendChild(a)
|
a.download = data.name
|
||||||
a.click()
|
document.body.appendChild(a)
|
||||||
window.URL.revokeObjectURL(url)
|
a.click()
|
||||||
document.body.removeChild(a)
|
window.URL.revokeObjectURL(url)
|
||||||
})
|
document.body.removeChild(a)
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
ElMessage.error(err)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const runDownLoad = (data: tableItemData) => {
|
||||||
|
if (activeName.value === 'malFunction') {
|
||||||
|
return downloadFileReq({ url: data.path })
|
||||||
|
} else if (activeName.value === 'logManage') {
|
||||||
|
return downloadLogFileReq({ url: data.path })
|
||||||
|
}
|
||||||
|
return Promise.reject()
|
||||||
}
|
}
|
||||||
|
|
||||||
const closePreviewFileDialog = () => {
|
const closePreviewFileDialog = () => {
|
||||||
@ -598,31 +712,18 @@ const initPreviewChart = () => {
|
|||||||
|
|
||||||
const getFileData = (url: string) => {
|
const getFileData = (url: string) => {
|
||||||
previewTreeLoading.value = true
|
previewTreeLoading.value = true
|
||||||
previewFileReq({
|
if (activeName.value === 'malFunction') {
|
||||||
deviceCode: curTreeData.value.code,
|
return previewFileReq({
|
||||||
url: url,
|
deviceCode: curTreeData.value.code,
|
||||||
}).then((res) => {
|
url: url,
|
||||||
previewChartData = res.data
|
|
||||||
const attrName = Object.keys(res.data)
|
|
||||||
const data: any = []
|
|
||||||
|
|
||||||
attrName.forEach((item) => {
|
|
||||||
if (item === 'TimeStamp') {
|
|
||||||
previewChartData.TimeStamp = previewChartData.TimeStamp.map((item: any) => {
|
|
||||||
return dayjs(item).format('YYYY-MM-DD HH:mm:ss')
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
data.push({
|
|
||||||
label: fileKeyEnums[item],
|
|
||||||
key: item,
|
|
||||||
isLeaf: true,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
previewTreeData.value = data
|
} else if (activeName.value === 'logManage') {
|
||||||
originPreviewTreeData = data
|
return previewLogFileReq({
|
||||||
previewTreeLoading.value = false
|
deviceCode: curTreeData.value.code,
|
||||||
})
|
url: url,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return Promise.reject()
|
||||||
}
|
}
|
||||||
|
|
||||||
const fileKeyEnums: any = {}
|
const fileKeyEnums: any = {}
|
||||||
@ -630,25 +731,67 @@ const fileKeyUnit: any = {}
|
|||||||
|
|
||||||
const getFileKeyEnum = () => {
|
const getFileKeyEnum = () => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
getFileKeyEnumsReq({
|
if (activeName.value === 'malFunction') {
|
||||||
madeinfactory: curTreeData.value.madeinFactory,
|
getFileKeyEnumsReq({
|
||||||
model: curTreeData.value.model,
|
madeinfactory: curTreeData.value.madeinFactory,
|
||||||
})
|
model: curTreeData.value.model,
|
||||||
.then((res) => {
|
|
||||||
if (res.success) {
|
|
||||||
res.data.forEach((item: any) => {
|
|
||||||
fileKeyEnums[item.variable] = item?.description ?? item.variable
|
|
||||||
fileKeyUnit[item.variable] = item?.unit ?? ''
|
|
||||||
})
|
|
||||||
resolve(true)
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.then((res) => {
|
||||||
reject(false)
|
if (res.success) {
|
||||||
|
res.data.forEach((item: any) => {
|
||||||
|
fileKeyEnums[item.variable] = item?.description ?? item.variable
|
||||||
|
fileKeyUnit[item.variable] = item?.unit ?? ''
|
||||||
|
})
|
||||||
|
resolve(true)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
reject(false)
|
||||||
|
})
|
||||||
|
} else if (activeName.value === 'logManage') {
|
||||||
|
getLogFileKeyEnumsReq({
|
||||||
|
madeinfactory: curTreeData.value.madeinFactory,
|
||||||
|
model: curTreeData.value.model,
|
||||||
})
|
})
|
||||||
|
.then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
res.data.forEach((item: any) => {
|
||||||
|
fileKeyEnums[item.variable] = item?.description ?? item.variable
|
||||||
|
fileKeyUnit[item.variable] = item?.unit ?? ''
|
||||||
|
})
|
||||||
|
resolve(true)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch(() => {
|
||||||
|
reject(false)
|
||||||
|
})
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let logOriginTableData = ref<tableItemData[]>([])
|
||||||
|
const logTableData = computed(() => {
|
||||||
|
let data = logOriginTableData.value
|
||||||
|
if (searchData.fileName) {
|
||||||
|
const reg = new RegExp(searchData.fileName, 'i')
|
||||||
|
data = data.filter((item) => reg.test(item.name))
|
||||||
|
}
|
||||||
|
const res = data.slice((logPageSetting.current - 1) * logPageSetting.pageSize, logPageSetting.current * logPageSetting.pageSize)
|
||||||
|
logPageSetting.total = res.length
|
||||||
|
return res
|
||||||
|
})
|
||||||
|
const logPageSetting = reactive({
|
||||||
|
current: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
total: 0,
|
||||||
|
pageSizes: [20, 50, 100],
|
||||||
|
})
|
||||||
|
|
||||||
|
const activeName = ref<'malFunction' | 'logManage'>('malFunction')
|
||||||
|
const checkTab = () => {
|
||||||
|
getListForAirBlower()
|
||||||
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getTreeDataList().then((data: any) => {
|
getTreeDataList().then((data: any) => {
|
||||||
treeRef.value && treeRef.value.setCurrentKey(data.id, true)
|
treeRef.value && treeRef.value.setCurrentKey(data.id, true)
|
||||||
@ -739,21 +882,40 @@ onUnmounted(() => {
|
|||||||
}
|
}
|
||||||
.main {
|
.main {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
.tableBtnPart {
|
height: calc(100% - 80px);
|
||||||
display: flex;
|
.tabs {
|
||||||
justify-content: center;
|
width: 100%;
|
||||||
.el-button {
|
height: 100%;
|
||||||
margin: 0;
|
:deep(.el-tabs__content) {
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100% - 60px);
|
||||||
|
.tabPane {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.tableMain {
|
||||||
|
width: 100%;
|
||||||
|
height: calc(100% - 32px);
|
||||||
|
.tableClass {
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
.tableBtnPart {
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
.el-button {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.footerPart {
|
||||||
|
display: flex;
|
||||||
|
justify-content: right;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.footer {
|
|
||||||
.footerPart {
|
|
||||||
display: flex;
|
|
||||||
justify-content: right;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.el-input-number {
|
.el-input-number {
|
||||||
|
Loading…
Reference in New Issue
Block a user