设备:量测添加加载中状态

故障:合并日志管理模块
单风机:修改显示字符
This commit is contained in:
高云鹏 2024-11-27 11:11:43 +08:00
parent 1f01735820
commit 96adbaf0f1
4 changed files with 324 additions and 159 deletions

View File

@ -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>

View File

@ -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 = () => {

View File

@ -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')

View File

@ -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 {