物模型:添加告警类型字段
日志管理:修改图表x轴、数据字段转枚举字段 故障录波:修改图表x轴、数据字段转枚举字段
This commit is contained in:
parent
456fede46b
commit
d262e54a1a
@ -48,6 +48,9 @@ export const delModelReq = (data: DelModelType) => {
|
|||||||
url: '/api/equipment/model/delete',
|
url: '/api/equipment/model/delete',
|
||||||
method: 'post',
|
method: 'post',
|
||||||
data: data,
|
data: data,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
showErrorMessage: false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,3 +49,14 @@ export const downloadFileReq = (data: {
|
|||||||
reductDataFormat: false
|
reductDataFormat: false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const getFileKeyEnumsReq = (data: {
|
||||||
|
madeinfactory: string
|
||||||
|
model: string
|
||||||
|
}) => {
|
||||||
|
return createAxios<never, Promise<ReqReturnType<any>>>({
|
||||||
|
url: '/api/plc/queryPlcDesc',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
@ -50,3 +50,14 @@ export const downloadFileReq = (data: {
|
|||||||
reductDataFormat: false
|
reductDataFormat: false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const getFileKeyEnumsReq = (data: {
|
||||||
|
madeinfactory: string
|
||||||
|
model: string
|
||||||
|
}) => {
|
||||||
|
return createAxios<never, Promise<ReqReturnType<any>>>({
|
||||||
|
url: '/api/fdr/queryFdrDesc',
|
||||||
|
method: 'post',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
@ -239,6 +239,11 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</template>
|
</template>
|
||||||
|
<el-form-item v-if="attributeForm.attributeType === 140" :label="ModelAttributeFieldsEnums['level']" prop="level">
|
||||||
|
<el-select v-model="attributeForm.level" :placeholder="'请选择' + ModelAttributeFieldsEnums['level']">
|
||||||
|
<el-option v-for="v in attributeFormDataLevelOptions" :key="v.value" :label="v.label" :value="v.value"></el-option>
|
||||||
|
</el-select>
|
||||||
|
</el-form-item>
|
||||||
</div>
|
</div>
|
||||||
<div class="formRowStyle">
|
<div class="formRowStyle">
|
||||||
<el-form-item :label="ModelAttributeFieldsEnums['porder']" prop="porder">
|
<el-form-item :label="ModelAttributeFieldsEnums['porder']" prop="porder">
|
||||||
@ -768,6 +773,11 @@ const attributeFormDataTypeOptions: { value: attributeTypeDataType }[] = [
|
|||||||
{ value: 'int' },
|
{ value: 'int' },
|
||||||
{ value: 'bigint' },
|
{ value: 'bigint' },
|
||||||
]
|
]
|
||||||
|
const attributeFormDataLevelOptions = [
|
||||||
|
{ value: 0, label: '提示' },
|
||||||
|
{ value: 1, label: '告警' },
|
||||||
|
{ value: 2, label: '故障' },
|
||||||
|
]
|
||||||
const originAttributeForm: AddModelAttributeType & UpdateModelAttributeType = {
|
const originAttributeForm: AddModelAttributeType & UpdateModelAttributeType = {
|
||||||
id: null,
|
id: null,
|
||||||
iotModelId: '',
|
iotModelId: '',
|
||||||
@ -780,6 +790,7 @@ const originAttributeForm: AddModelAttributeType & UpdateModelAttributeType = {
|
|||||||
dataType: '',
|
dataType: '',
|
||||||
visible: true,
|
visible: true,
|
||||||
unit: '',
|
unit: '',
|
||||||
|
level: undefined,
|
||||||
revision: 1,
|
revision: 1,
|
||||||
createdBy: undefined,
|
createdBy: undefined,
|
||||||
createdTime: undefined,
|
createdTime: undefined,
|
||||||
|
@ -67,6 +67,7 @@ export enum ModelAttributeFieldsEnums {
|
|||||||
'dataType' = '数据类型',
|
'dataType' = '数据类型',
|
||||||
'visible' = '是否可见',
|
'visible' = '是否可见',
|
||||||
'unit' = '单位',
|
'unit' = '单位',
|
||||||
|
'level' = '告警等级',
|
||||||
'revision' = '乐观锁',
|
'revision' = '乐观锁',
|
||||||
'createdBy' = '创建人',
|
'createdBy' = '创建人',
|
||||||
'createdTime' = '创建时间',
|
'createdTime' = '创建时间',
|
||||||
@ -111,6 +112,7 @@ export type AddModelAttributeType = {
|
|||||||
subSystem: string
|
subSystem: string
|
||||||
dataType: attributeTypeDataType | ''
|
dataType: attributeTypeDataType | ''
|
||||||
unit: string
|
unit: string
|
||||||
|
level?: 0 | 1 | 2
|
||||||
visible: 0 | 1 | boolean
|
visible: 0 | 1 | boolean
|
||||||
revision: number
|
revision: number
|
||||||
createdBy?: string
|
createdBy?: string
|
||||||
|
@ -136,7 +136,7 @@
|
|||||||
import { ref, reactive, computed, onMounted, nextTick, onUnmounted } from 'vue'
|
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 { getLogRecordListReq, setConfigReq, previewFileReq, downloadFileReq } from '/@/api/backend/logRecord/request'
|
import { getLogRecordListReq, setConfigReq, previewFileReq, downloadFileReq, getFileKeyEnumsReq } 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'
|
||||||
@ -189,15 +189,19 @@ const curTreeData = ref<{
|
|||||||
id: string
|
id: string
|
||||||
code: string
|
code: string
|
||||||
options: any
|
options: any
|
||||||
|
model: string
|
||||||
|
madeinFactory: string
|
||||||
children?: any[]
|
children?: any[]
|
||||||
}>({
|
}>({
|
||||||
label: '风机列表',
|
label: '风机列表',
|
||||||
id: '0',
|
id: '0',
|
||||||
code: '0',
|
code: '0',
|
||||||
|
model: '',
|
||||||
|
madeinFactory: '',
|
||||||
options: {},
|
options: {},
|
||||||
})
|
})
|
||||||
|
|
||||||
const handleNodeClick = (target: { label: string; id: string; code: string; options: any }) => {
|
const handleNodeClick = (target: { label: string; id: string; code: string; model: string; madeinFactory: string; options: any }) => {
|
||||||
curTreeData.value = target
|
curTreeData.value = target
|
||||||
if (target.id === '0') return
|
if (target.id === '0') return
|
||||||
getListForAirBlower()
|
getListForAirBlower()
|
||||||
@ -211,6 +215,8 @@ const getTreeDataList = () => {
|
|||||||
label: item.name,
|
label: item.name,
|
||||||
code: item.code,
|
code: item.code,
|
||||||
id: item.id,
|
id: item.id,
|
||||||
|
model: item.model,
|
||||||
|
madeinFactory: item.madeinFactory,
|
||||||
options: item.options ? JSON.parse(item.options).plcFormat : {},
|
options: item.options ? JSON.parse(item.options).plcFormat : {},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -372,7 +378,9 @@ const setAirBlowerConfig = () => {
|
|||||||
const previewFileDialogVisible = ref(false)
|
const previewFileDialogVisible = ref(false)
|
||||||
const readFile = (data: tableItemData) => {
|
const readFile = (data: tableItemData) => {
|
||||||
previewFileDialogVisible.value = true
|
previewFileDialogVisible.value = true
|
||||||
|
getFileKeyEnum().finally(() => {
|
||||||
getFileData(data.path)
|
getFileData(data.path)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
const downloadFile = (data: tableItemData) => {
|
const downloadFile = (data: tableItemData) => {
|
||||||
downloadFileReq({ url: data.path }).then((res) => {
|
downloadFileReq({ url: data.path }).then((res) => {
|
||||||
@ -415,6 +423,8 @@ const previewSearchTree = (val: string) => {
|
|||||||
const filterData = originPreviewTreeData.filter((item: any) => regex.test(item.label))
|
const filterData = originPreviewTreeData.filter((item: any) => regex.test(item.label))
|
||||||
previewTreeData.value = filterData
|
previewTreeData.value = filterData
|
||||||
nextTick(() => {
|
nextTick(() => {
|
||||||
|
// console.log('勾选-----',selectPreviewTree);
|
||||||
|
|
||||||
previewTreeRef.value?.setCheckedKeys(selectPreviewTree)
|
previewTreeRef.value?.setCheckedKeys(selectPreviewTree)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -433,6 +443,7 @@ const handleCheckChange = (data: any, state: boolean) => {
|
|||||||
previewChartInstance && previewChartInstance.clear()
|
previewChartInstance && previewChartInstance.clear()
|
||||||
if (state) {
|
if (state) {
|
||||||
selectPreviewTree.push(data.key)
|
selectPreviewTree.push(data.key)
|
||||||
|
// console.log('添加-----',selectPreviewTree);
|
||||||
} else {
|
} else {
|
||||||
const index = selectPreviewTree.findIndex((item: string) => item === data.key)
|
const index = selectPreviewTree.findIndex((item: string) => item === data.key)
|
||||||
selectPreviewTree.splice(index, 1)
|
selectPreviewTree.splice(index, 1)
|
||||||
@ -491,7 +502,7 @@ const initPreviewChart = () => {
|
|||||||
grid: {
|
grid: {
|
||||||
top: 50,
|
top: 50,
|
||||||
right: 23,
|
right: 23,
|
||||||
bottom: 10,
|
bottom: 50,
|
||||||
left: 18,
|
left: 18,
|
||||||
containLabel: true,
|
containLabel: true,
|
||||||
},
|
},
|
||||||
@ -517,7 +528,7 @@ const initPreviewChart = () => {
|
|||||||
color: '#4E5969',
|
color: '#4E5969',
|
||||||
interval: 'auto',
|
interval: 'auto',
|
||||||
formatter: function (value: any) {
|
formatter: function (value: any) {
|
||||||
return value.slice(0, 10)
|
return value.slice(11)
|
||||||
},
|
},
|
||||||
//rotate: 45
|
//rotate: 45
|
||||||
},
|
},
|
||||||
@ -599,7 +610,7 @@ const getFileData = (url: string) => {
|
|||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
data.push({
|
data.push({
|
||||||
label: item,
|
label: fileKeyEnums?.[item] ?? item,
|
||||||
key: item,
|
key: item,
|
||||||
isLeaf: true,
|
isLeaf: true,
|
||||||
})
|
})
|
||||||
@ -612,6 +623,22 @@ const getFileData = (url: string) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const fileKeyEnums: any = {}
|
||||||
|
const getFileKeyEnum = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
getFileKeyEnumsReq({
|
||||||
|
madeinfactory: curTreeData.value.madeinFactory,
|
||||||
|
model: curTreeData.value.model,
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
res.data.forEach((item: any) => {
|
||||||
|
fileKeyEnums[item.variable] = item.description
|
||||||
|
})
|
||||||
|
resolve(true)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
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)
|
||||||
|
@ -139,7 +139,7 @@
|
|||||||
import { ref, reactive, computed, onMounted, nextTick, onUnmounted } from 'vue'
|
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 } from '/@/api/backend/malfunction/request'
|
import { getMalFunctionListReq, setConfigReq, previewFileReq, downloadFileReq, getFileKeyEnumsReq } from '/@/api/backend/malfunction/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'
|
||||||
@ -191,16 +191,20 @@ const curTreeData = ref<{
|
|||||||
label: string
|
label: string
|
||||||
id: string
|
id: string
|
||||||
code: string
|
code: string
|
||||||
|
model: string
|
||||||
|
madeinFactory: string
|
||||||
options: any
|
options: any
|
||||||
children?: any[]
|
children?: any[]
|
||||||
}>({
|
}>({
|
||||||
label: '风机列表',
|
label: '风机列表',
|
||||||
id: '0',
|
id: '0',
|
||||||
code: '0',
|
code: '0',
|
||||||
|
model: '',
|
||||||
|
madeinFactory: '',
|
||||||
options: {},
|
options: {},
|
||||||
})
|
})
|
||||||
|
|
||||||
const handleNodeClick = (target: { label: string; id: string; code: string; options: any }) => {
|
const handleNodeClick = (target: { label: string; id: string; code: string; model: string; madeinFactory: string; options: any }) => {
|
||||||
curTreeData.value = target
|
curTreeData.value = target
|
||||||
if (target.id === '0') return
|
if (target.id === '0') return
|
||||||
getListForAirBlower()
|
getListForAirBlower()
|
||||||
@ -214,6 +218,8 @@ const getTreeDataList = () => {
|
|||||||
label: item.name,
|
label: item.name,
|
||||||
code: item.code,
|
code: item.code,
|
||||||
id: item.id,
|
id: item.id,
|
||||||
|
model: item.model,
|
||||||
|
madeinFactory: item.madeinFactory,
|
||||||
options: item.options ? JSON.parse(item.options).fdrFormat : {},
|
options: item.options ? JSON.parse(item.options).fdrFormat : {},
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
@ -374,7 +380,9 @@ const setAirBlowerConfig = () => {
|
|||||||
const previewFileDialogVisible = ref(false)
|
const previewFileDialogVisible = ref(false)
|
||||||
const readFile = (data: tableItemData) => {
|
const readFile = (data: tableItemData) => {
|
||||||
previewFileDialogVisible.value = true
|
previewFileDialogVisible.value = true
|
||||||
|
getFileKeyEnum().finally(() => {
|
||||||
getFileData(data.path)
|
getFileData(data.path)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
const downloadFile = (data: tableItemData) => {
|
const downloadFile = (data: tableItemData) => {
|
||||||
downloadFileReq({ url: data.path }).then((res) => {
|
downloadFileReq({ url: data.path }).then((res) => {
|
||||||
@ -499,7 +507,7 @@ const initPreviewChart = () => {
|
|||||||
grid: {
|
grid: {
|
||||||
top: 50,
|
top: 50,
|
||||||
right: 23,
|
right: 23,
|
||||||
bottom: 10,
|
bottom: 50,
|
||||||
left: 18,
|
left: 18,
|
||||||
containLabel: true,
|
containLabel: true,
|
||||||
},
|
},
|
||||||
@ -525,7 +533,7 @@ const initPreviewChart = () => {
|
|||||||
color: '#4E5969',
|
color: '#4E5969',
|
||||||
interval: 'auto',
|
interval: 'auto',
|
||||||
formatter: function (value: any) {
|
formatter: function (value: any) {
|
||||||
return value.slice(0, 10)
|
return value.slice(11)
|
||||||
},
|
},
|
||||||
//rotate: 45
|
//rotate: 45
|
||||||
},
|
},
|
||||||
@ -600,6 +608,8 @@ const getFileData = (url: string) => {
|
|||||||
previewChartData = res.data
|
previewChartData = res.data
|
||||||
const attrName = Object.keys(res.data)
|
const attrName = Object.keys(res.data)
|
||||||
const data: any = []
|
const data: any = []
|
||||||
|
console.log(fileKeyEnums);
|
||||||
|
|
||||||
attrName.forEach((item) => {
|
attrName.forEach((item) => {
|
||||||
if (item === 'TimeStamp') {
|
if (item === 'TimeStamp') {
|
||||||
previewChartData.TimeStamp = previewChartData.TimeStamp.map((item: any) => {
|
previewChartData.TimeStamp = previewChartData.TimeStamp.map((item: any) => {
|
||||||
@ -607,7 +617,7 @@ const getFileData = (url: string) => {
|
|||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
data.push({
|
data.push({
|
||||||
label: item,
|
label: fileKeyEnums?.[item] ?? item,
|
||||||
key: item,
|
key: item,
|
||||||
isLeaf: true,
|
isLeaf: true,
|
||||||
})
|
})
|
||||||
@ -619,6 +629,23 @@ const getFileData = (url: string) => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const fileKeyEnums: any = {}
|
||||||
|
const getFileKeyEnum = () => {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
getFileKeyEnumsReq({
|
||||||
|
madeinfactory: curTreeData.value.madeinFactory,
|
||||||
|
model: curTreeData.value.model,
|
||||||
|
}).then((res) => {
|
||||||
|
if (res.success) {
|
||||||
|
res.data.forEach((item: any) => {
|
||||||
|
fileKeyEnums[item.variable] = item.description
|
||||||
|
})
|
||||||
|
resolve(true)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
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)
|
||||||
|
Loading…
Reference in New Issue
Block a user