|
|
|
|
import type { BasicColumn, FormSchema } from '@/components/Table'
|
|
|
|
|
import {optionListApi, subSystemListApi} from "@/api/alert/model/select";
|
|
|
|
|
import {h, ref} from "vue";
|
|
|
|
|
import {systemSelectParams} from "@/api/alert/model/model/optionsModel";
|
|
|
|
|
import {formatToDateTime, getDate} from "@/utils/dateUtil";
|
|
|
|
|
|
|
|
|
|
function toTimestamp(time: string): number {
|
|
|
|
|
if (!time) return 0
|
|
|
|
|
// 兼容:2026-01-04T09:30:15 / 2026-01-04 09:30:15
|
|
|
|
|
return new Date(time.replace('T', ' ')).getTime()
|
|
|
|
|
}
|
|
|
|
|
const optionList = await optionListApi()
|
|
|
|
|
|
|
|
|
|
const systemOptions = ref<any>([])
|
|
|
|
|
systemOptions.value = optionList.systems
|
|
|
|
|
export const searchFormSchema: FormSchema[] = [
|
|
|
|
|
{
|
|
|
|
|
label: '机组',
|
|
|
|
|
field: 'unit',
|
|
|
|
|
component: 'Select',
|
|
|
|
|
// defaultValue: optionList.units[0].id || null,
|
|
|
|
|
defaultValue: null,
|
|
|
|
|
|
|
|
|
|
colProps: { span: 4 },
|
|
|
|
|
|
|
|
|
|
componentProps: ({ schema, tableAction, formActionType, formModel }) => {
|
|
|
|
|
return {
|
|
|
|
|
// xxxx props
|
|
|
|
|
placeholder: '全部机组',
|
|
|
|
|
options: optionList.units.map(unit => ({ value: unit.id, label: unit.name })),
|
|
|
|
|
onChange: async (e: any) => {
|
|
|
|
|
// const { reload } = tableAction
|
|
|
|
|
// reload()
|
|
|
|
|
// or
|
|
|
|
|
console.log(e)
|
|
|
|
|
const param: systemSelectParams = {
|
|
|
|
|
unitId: e,
|
|
|
|
|
typeId: formModel.type,
|
|
|
|
|
}
|
|
|
|
|
//如果typeId是空,则不设置system'Options
|
|
|
|
|
if (!param.typeId || !param.unitId) {
|
|
|
|
|
systemOptions.value = []
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
systemOptions.value = await subSystemListApi(param)
|
|
|
|
|
// formModel.system = systemOptions.value[0].id
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: '系统',
|
|
|
|
|
field: 'type',
|
|
|
|
|
component: 'Select',
|
|
|
|
|
// defaultValue: optionList.types[0].id || null,
|
|
|
|
|
defaultValue: null,
|
|
|
|
|
|
|
|
|
|
colProps: { span: 4 },
|
|
|
|
|
componentProps: ({ formModel }) => {
|
|
|
|
|
return {
|
|
|
|
|
placeholder: '全部系统',
|
|
|
|
|
options: optionList.types.map(type => ({ value: type.id, label: type.name })),
|
|
|
|
|
onChange: async (e: any) => {
|
|
|
|
|
// const { reload } = tableAction
|
|
|
|
|
// reload()
|
|
|
|
|
// or
|
|
|
|
|
console.log(e)
|
|
|
|
|
const param: systemSelectParams = {
|
|
|
|
|
unitId: formModel.unit,
|
|
|
|
|
typeId: e,
|
|
|
|
|
}
|
|
|
|
|
//如果typeId是空,则不设置system'Options
|
|
|
|
|
if (!param.typeId || !param.unitId) {
|
|
|
|
|
systemOptions.value = []
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
systemOptions.value = await subSystemListApi(param)
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
label: '子系统',
|
|
|
|
|
field: 'system',
|
|
|
|
|
component: 'Select',
|
|
|
|
|
// defaultValue: systemOptions.value[0].id || null,
|
|
|
|
|
defaultValue: null,
|
|
|
|
|
colProps: { span: 4 },
|
|
|
|
|
componentProps: () => {
|
|
|
|
|
return {
|
|
|
|
|
placeholder: '全部子系统',
|
|
|
|
|
options: systemOptions.value.map(system => ({ value: system.id, label: system.name })),
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
label: '模型实例名称',
|
|
|
|
|
field: 'mpName',
|
|
|
|
|
component: 'Input',
|
|
|
|
|
labelWidth: 100,
|
|
|
|
|
|
|
|
|
|
defaultValue: '',
|
|
|
|
|
colProps: { span: 5 },
|
|
|
|
|
},
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
export const columns: BasicColumn[] = [
|
|
|
|
|
{
|
|
|
|
|
title: '编号',
|
|
|
|
|
dataIndex: 'warnId',
|
|
|
|
|
width: 80,
|
|
|
|
|
fixed: 'left',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '机组',
|
|
|
|
|
dataIndex: 'unitName',
|
|
|
|
|
width: 80,
|
|
|
|
|
fixed: 'left',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '报警名称',
|
|
|
|
|
dataIndex: 'alarmName',
|
|
|
|
|
width: 200,
|
|
|
|
|
fixed: 'left',
|
|
|
|
|
// 将 JSX 改为 h 函数调用
|
|
|
|
|
customRender: ({ record }) => {
|
|
|
|
|
return h('div', [
|
|
|
|
|
h('div', record.pointName),
|
|
|
|
|
h('div', { style: 'color: #999; font-size: 12px' }, record.pointId)
|
|
|
|
|
]);
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '单位',
|
|
|
|
|
dataIndex: 'unit',
|
|
|
|
|
width: 50,
|
|
|
|
|
fixed: 'left',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '测点值',
|
|
|
|
|
dataIndex: 'unit',
|
|
|
|
|
width: 150,
|
|
|
|
|
// 将 JSX 改为 h 函数调用
|
|
|
|
|
customRender: ({ record }) => {
|
|
|
|
|
return h('div', [
|
|
|
|
|
h('div', { style: 'color: #006400;font-weight:bold' },'实时值:'+record.pointValue),
|
|
|
|
|
h('div', { style: 'color: #0960BD;font-weight:bold' },'重构值:'+record.outputPointValue),
|
|
|
|
|
]);
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '偏差值',
|
|
|
|
|
dataIndex: 'biasValue',
|
|
|
|
|
width: 40
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '安全区间',
|
|
|
|
|
dataIndex: 'limit',
|
|
|
|
|
width: 100,
|
|
|
|
|
// 将 JSX 改为 h 函数调用
|
|
|
|
|
customRender: ({ record }) => {
|
|
|
|
|
return h('div', [
|
|
|
|
|
h('div', record.lowlimit),
|
|
|
|
|
h('div', record.uplimit),
|
|
|
|
|
]);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '模型实例名称',
|
|
|
|
|
dataIndex: 'mpName',
|
|
|
|
|
width: 150,
|
|
|
|
|
ellipsis: false, // ⭐ 关键
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '预警时间',
|
|
|
|
|
dataIndex: 'insertTime',
|
|
|
|
|
width: 200,
|
|
|
|
|
// 将 JSX 改为 h 函数调用
|
|
|
|
|
customRender: ({ record }) => {
|
|
|
|
|
return h('div', [
|
|
|
|
|
h('div', record.insertTime),
|
|
|
|
|
// h('div', '--'),
|
|
|
|
|
h('div', formatToDateTime(record.currentTime))
|
|
|
|
|
|
|
|
|
|
]);
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '持续时长',
|
|
|
|
|
dataIndex: 'timeDiffStr',
|
|
|
|
|
width: 85,
|
|
|
|
|
customRender: ({ record }) => {
|
|
|
|
|
const diffMs = record.currentTime - toTimestamp(record.insertTime)
|
|
|
|
|
return getDate(diffMs)
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '告警级别',
|
|
|
|
|
dataIndex: 'alarmModelRuleName',
|
|
|
|
|
width: 80,
|
|
|
|
|
ellipsis: false, // ⭐ 关键
|
|
|
|
|
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
title: '专业',
|
|
|
|
|
dataIndex: 'systemName',
|
|
|
|
|
width: 100,
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// export const formTrend: FormSchema[] = [
|
|
|
|
|
// {
|
|
|
|
|
// label: '时间',
|
|
|
|
|
// field: 'time',
|
|
|
|
|
// show: true,
|
|
|
|
|
// component: 'RangePicker',
|
|
|
|
|
// componentProps: {
|
|
|
|
|
// placeholder: ['开始时间', '结束时间'],
|
|
|
|
|
// defaultValue: [moment().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss'), moment().format('YYYY-MM-DD HH:mm:ss')],
|
|
|
|
|
// valueFormat: 'YYYY-MM-DD HH:mm:ss',
|
|
|
|
|
// showTime: {
|
|
|
|
|
// defaultValue: [moment().subtract(1, 'day').format('YYYY-MM-DD HH:mm:ss'), moment().format('YYYY-MM-DD HH:mm:ss')],
|
|
|
|
|
// },
|
|
|
|
|
// onChange: (e: any) => {
|
|
|
|
|
// console.log(e)
|
|
|
|
|
// },
|
|
|
|
|
// colProps: {
|
|
|
|
|
// span: 8,
|
|
|
|
|
// },
|
|
|
|
|
// },
|
|
|
|
|
// },
|
|
|
|
|
// {
|
|
|
|
|
// label: '时间间隔',
|
|
|
|
|
// field: 'interval',
|
|
|
|
|
// component: 'Select',
|
|
|
|
|
// defaultValue: 60,
|
|
|
|
|
// labelWidth:100,
|
|
|
|
|
// componentProps: {
|
|
|
|
|
// options: [{ value: 60, label: '60秒' }, { value: 100, label: '100秒' }, { value: 300, label: '300秒' }],
|
|
|
|
|
// },
|
|
|
|
|
// required: true,
|
|
|
|
|
// colProps: {
|
|
|
|
|
// span: 5,
|
|
|
|
|
// },
|
|
|
|
|
// },
|
|
|
|
|
// ]
|
|
|
|
|
|