import { ProTable } from '@repo/base'
import React from 'react'
import { useList } from './query/index'
import { Button } from 'antd'
import { useDic } from '@/query/common'
import { abnormalAlarmOptions, alarmTypes } from '../component/constants'
export default function Index() {
const actionRef = React.useRef()
const request = useList()
const misreportEnum = {
0: '否',
1: '是',
}
const { data: alarmStatus } = useDic('alarmStatus')
const { data: alarmLevel } = useDic('alarmLevel')
// 将字典数据转换为 valueEnum 格式
const formatValueEnum = data => {
if (!data) return {}
return data.reduce((acc, item) => {
acc[item.value] = item.label
return acc
}, {})
}
return (
<ProTable
request={async params => await request(params)}
actionRef={actionRef}
columns={[
{
title: '序号',
key: 'index',
valueType: 'index',
align: 'center',
width: 80,
search: false,
render: (_dom, _record, index) => {
const { current, pageSize } = actionRef?.current?.pageInfo
return (current - 1) * pageSize + index + 1
},
},
{
title: '告警时间',
dataIndex: 'alarmTime',
valueType: 'dateRange',
align: 'center',
render: (_dom, record) => record.alarmTime,
},
{
title: '告警位置',
dataIndex: 'areaName',
search: false,
align: 'center',
},
{
title: '告警事项',
dataIndex: 'alarmTypeList',
valueType: 'select',
valueEnum: formatValueEnum(abnormalAlarmOptions),
align: 'center',
render: (_dom, record) => record.alarmType?.alarmType_dicName,
},
{
title: '告警等级',
valueType: 'select',
valueEnum: formatValueEnum(alarmLevel),
dataIndex: 'alarmLevel',
align: 'center',
render: (_dom, record) => record.alarmLevel?.alarmLevel_dicName,
},
{
title: '处置人',
search: false,
dataIndex: 'handle',
align: 'center',
},
{
title: '处置时间',
search: false,
dataIndex: 'handleTime',
align: 'center',
},
{
title: '处理说明',
search: false,
dataIndex: 'handleRemark',
align: 'center',
},
{
title: '处置状态',
valueType: 'select',
valueEnum: formatValueEnum(alarmStatus),
dataIndex: 'status',
align: 'center',
render: (_dom, record) => record.status?.status_dicName,
},
{
title: '是否误报',
search: false,
valueEnum: misreportEnum,
dataIndex: 'isMisreport',
align: 'center',
},
{
title: '操作',
search: false,
dataIndex: 'action',
align: 'center',
render: (_dom, record) => (
<>
<Button key="see" type="link">
查看
</Button>
{record.status?.status_dicCode !== '1' && (
<Button key="handle" type="link">
处置
</Button>
)}
</>
),
},
]}
scroll={{ x: 1300 }}
options={false}
headerTitle="车位信息列表"
toolBarRender={() => []}
tableAlertOptionRender={() => ''}
/>
)
}
在网络请求中将alarmTime拆分成startTime和endTime