feat: 前端页面开发
parent
00d943021b
commit
310471c1bb
@ -0,0 +1,130 @@
|
||||
import { Request, Response } from 'express';
|
||||
|
||||
const getMenus = (req: Request, res: Response) => {
|
||||
const result = {
|
||||
code: 0,
|
||||
success: true,
|
||||
data: {
|
||||
routes: [
|
||||
{
|
||||
"path": "/welcome",
|
||||
"key": "",
|
||||
"name": "welcome",
|
||||
"icon": "HomeOutlined",
|
||||
"access": "",
|
||||
"component": "Welcome",
|
||||
"title": "首页",
|
||||
"routes": []
|
||||
},
|
||||
{
|
||||
"path": "/device",
|
||||
"key": "",
|
||||
"name": "device",
|
||||
"icon": "DesktopOutlined",
|
||||
"access": "",
|
||||
"component": "",
|
||||
"title": "设备管理",
|
||||
"routes": [
|
||||
{
|
||||
"path": "/device/device-list",
|
||||
"key": "12",
|
||||
"name": "device-list",
|
||||
"icon": "",
|
||||
"access": "",
|
||||
"component": "Device/DeviceList",
|
||||
"title": "设备列表",
|
||||
"routes": []
|
||||
},
|
||||
{
|
||||
"path": "/device/device-category-list",
|
||||
"key": "13",
|
||||
"name": "device-category-list",
|
||||
"icon": "",
|
||||
"access": "",
|
||||
"component": "Device/DeviceCategoryList",
|
||||
"title": "设备类别",
|
||||
"routes": []
|
||||
},
|
||||
{
|
||||
"path": "/device/device-group-list",
|
||||
"key": "14",
|
||||
"name": "device-group-list",
|
||||
"icon": "",
|
||||
"access": "",
|
||||
"component": "Device/DeviceGroupList",
|
||||
"title": "设备组",
|
||||
"routes": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "/alarm",
|
||||
"key": "",
|
||||
"name": "alarm",
|
||||
"icon": "WarningOutlined",
|
||||
"access": "",
|
||||
"component": "",
|
||||
"title": "告警管理",
|
||||
"routes": [
|
||||
{
|
||||
"path": "/alarm/alarm-list",
|
||||
"key": "50",
|
||||
"name": "alarm-list",
|
||||
"icon": "",
|
||||
"access": "",
|
||||
"component": "Alarm/AlarmList",
|
||||
"title": "告警列表",
|
||||
"routes": []
|
||||
},
|
||||
{
|
||||
"path": "/alarm/alarm-setting",
|
||||
"key": "51",
|
||||
"name": "alarm-setting",
|
||||
"icon": "",
|
||||
"access": "",
|
||||
"component": "Alarm/AlarmSetting",
|
||||
"title": "告警设置",
|
||||
"routes": []
|
||||
},
|
||||
{
|
||||
"path": "/alarm/alarm-ways",
|
||||
"key": "55",
|
||||
"name": "alarm-ways",
|
||||
"icon": "",
|
||||
"access": "",
|
||||
"component": "Alarm/AlarmWays",
|
||||
"title": "告警方式",
|
||||
"routes": []
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"path": "alarm_rules",
|
||||
"key": "",
|
||||
"name": "alarm_rules",
|
||||
"icon": "OrderedListOutlined",
|
||||
"access": "",
|
||||
"component": "Hidden",
|
||||
"title": "告警规则",
|
||||
"routes": []
|
||||
},
|
||||
{
|
||||
"path": "interfaceManage",
|
||||
"key": "",
|
||||
"name": "interfaceManage",
|
||||
"icon": "BranchesOutlined",
|
||||
"access": "",
|
||||
"component": "Hidden",
|
||||
"title": "接口管理",
|
||||
"routes": []
|
||||
}
|
||||
]
|
||||
},
|
||||
msg: "获取成功"
|
||||
}
|
||||
return res.json(result);
|
||||
};
|
||||
|
||||
export default {
|
||||
'POST /api/mock/getMenus': getMenus,
|
||||
};
|
@ -0,0 +1,8 @@
|
||||
:global {
|
||||
.ant-form-item-control-input-content {
|
||||
.ant-space-gap-col-small {
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,233 @@
|
||||
import AlarmLevelBox from '@/components/DictionaryBox/alarmLevel';
|
||||
import TableActionCard from '@/components/TableActionCard';
|
||||
import IsDelete from '@/components/TableActionCard/isDelete';
|
||||
import { alarmLevelStatusEnum } from '@/enums/status';
|
||||
import {
|
||||
deleteDeviceCategoryDeleteDeviceCategory,
|
||||
postDeviceCategoryGetDeviceCategoryList,
|
||||
} from '@/services/device/DeviceCategory';
|
||||
import type { ActionType, ProColumns } from '@ant-design/pro-components';
|
||||
import { PageContainer, ProTable } from '@ant-design/pro-components';
|
||||
import { FormattedMessage, useIntl } from '@umijs/max';
|
||||
import { Button, Space, Tag, message } from 'antd';
|
||||
import React, { useRef, useState } from 'react';
|
||||
import { proTablePaginationOptions } from '../../../../config/defaultTable';
|
||||
import { proIconForTableActionStyle } from '../../../../config/defaultIcon';
|
||||
import { EditOutlined } from '@ant-design/icons';
|
||||
import UpdateForm from './components/UpdateForm';
|
||||
const AlarmRulesList: React.FC = () => {
|
||||
/**
|
||||
* @en-US International configuration
|
||||
* @zh-CN 国际化配置
|
||||
* */
|
||||
const intl = useIntl();
|
||||
const actionRef = useRef<ActionType>();
|
||||
// 动态设置每页数量
|
||||
const [currentPageSize, setCurrentPageSize] = useState<number>(10);
|
||||
|
||||
const handleDestroy = async (selectedRow: API.DeviceCategory) => {
|
||||
deleteDeviceCategoryDeleteDeviceCategory({ id: selectedRow.id })
|
||||
.then(() => {
|
||||
message.success(intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' }));
|
||||
actionRef.current?.reload();
|
||||
})
|
||||
.catch(() => {
|
||||
message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' }));
|
||||
});
|
||||
};
|
||||
|
||||
const [currentRow, setCurrentRow] = useState<API.DeviceCategory>();
|
||||
// 编辑弹框
|
||||
const [updateModalOpen, setUpdateModalOpen] = useState<boolean>(false);
|
||||
|
||||
const handleUpdateModal = () => {
|
||||
if (updateModalOpen) {
|
||||
setUpdateModalOpen(false);
|
||||
setCurrentRow(undefined);
|
||||
} else {
|
||||
setUpdateModalOpen(true);
|
||||
}
|
||||
};
|
||||
|
||||
const getAlarmRulesList = async () => {
|
||||
return {
|
||||
code: 0,
|
||||
success: true,
|
||||
data: {
|
||||
"list": [
|
||||
{
|
||||
"id": 1,
|
||||
"createTime": "2023-10-17T02:35:41.14308Z",
|
||||
"updateTime": "2023-10-17T02:35:41.14308Z",
|
||||
"name": "单人徘徊告警",
|
||||
"status": "已启用",
|
||||
"isEnabled": true,
|
||||
"remark": ""
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"createTime": "2023-10-17T02:40:28.292883Z",
|
||||
"updateTime": "2023-10-26T03:02:51.356036Z",
|
||||
"name": "多人聚集告警",
|
||||
"status": "未启用",
|
||||
"isEnabled": false,
|
||||
"remark": ""
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"createTime": "2023-12-12T02:54:52.204957Z",
|
||||
"updateTime": "2023-12-12T02:54:52.204957Z",
|
||||
"name": "敏感时间段告警",
|
||||
"status": "未启用",
|
||||
"isEnabled": false,
|
||||
"remark": ""
|
||||
}
|
||||
],
|
||||
"total": 3,
|
||||
"page": 1,
|
||||
"pageSize": 10
|
||||
},
|
||||
msg: "获取成功"
|
||||
}
|
||||
}
|
||||
|
||||
const columns: ProColumns<API.DeviceCategory>[] = [
|
||||
{
|
||||
title: <FormattedMessage id="alarm_rules.page.name" defaultMessage="$$$" />,
|
||||
dataIndex: 'name',
|
||||
hideInSearch: true,
|
||||
},
|
||||
|
||||
{
|
||||
title: <FormattedMessage id="alarm_rules.page.id" defaultMessage="$$$" />,
|
||||
dataIndex: 'id',
|
||||
hideInSearch: true,
|
||||
},
|
||||
{
|
||||
title: <FormattedMessage id="alarm_rules.page.status" defaultMessage="$$$" />,
|
||||
dataIndex: 'status',
|
||||
hideInSearch: true,
|
||||
render: (dom) => {
|
||||
return (
|
||||
<Tag bordered={false} color={dom === '已启用'? "success": ""} style={{
|
||||
color: dom === '已启用'? '#52C41A': "#999"
|
||||
}}>
|
||||
{dom}
|
||||
</Tag>
|
||||
);
|
||||
},
|
||||
},
|
||||
{
|
||||
title: <FormattedMessage id="alarm_rules.page.updateTime" defaultMessage="$$$" />,
|
||||
dataIndex: 'updateTime',
|
||||
sorter: true,
|
||||
hideInSearch: true,
|
||||
valueType: 'dateTime',
|
||||
},
|
||||
|
||||
{
|
||||
title: <FormattedMessage id="pages.searchTable.titleOption" defaultMessage="Operating" />,
|
||||
dataIndex: 'option',
|
||||
valueType: 'option',
|
||||
fixed: 'right',
|
||||
render: (_, record) => [
|
||||
<TableActionCard
|
||||
key="TableActionCardRef"
|
||||
renderActions={[
|
||||
{
|
||||
key: 'update',
|
||||
renderDom: (
|
||||
<Button
|
||||
key="update"
|
||||
type="link"
|
||||
size="small"
|
||||
style={{
|
||||
color:"#081FA8",
|
||||
|
||||
}}
|
||||
icon={<EditOutlined style={{
|
||||
marginRight: 3
|
||||
}} />}
|
||||
onClick={() => {
|
||||
setUpdateModalOpen(true);
|
||||
setCurrentRow(record);
|
||||
}}
|
||||
>
|
||||
<FormattedMessage id="common.edit" defaultMessage="Update" />
|
||||
</Button>
|
||||
),
|
||||
},
|
||||
{
|
||||
key: 'destroy',
|
||||
renderDom: (
|
||||
<IsDelete
|
||||
deleteApi={() => {
|
||||
handleDestroy(record).then(() => {});
|
||||
}}
|
||||
></IsDelete>
|
||||
),
|
||||
},
|
||||
]}
|
||||
></TableActionCard>,
|
||||
],
|
||||
},
|
||||
];
|
||||
return (
|
||||
<PageContainer>
|
||||
<ProTable<API.DeviceCategory>
|
||||
cardProps={{
|
||||
bodyStyle: {
|
||||
padding: 20
|
||||
}
|
||||
}}
|
||||
options={{ fullScreen: false, setting: false, density: false, reload: false }}
|
||||
actionRef={actionRef}
|
||||
rowKey="key"
|
||||
search={false}
|
||||
pagination={{
|
||||
...proTablePaginationOptions,
|
||||
pageSize: currentPageSize,
|
||||
onChange: (page, pageSize) => setCurrentPageSize(pageSize),
|
||||
}}
|
||||
columnsState={{
|
||||
persistenceKey: 'device_category_list',
|
||||
persistenceType: 'localStorage',
|
||||
}}
|
||||
request={async (params = {}, sort) => {
|
||||
const { current, ...rest } = params;
|
||||
const reqParams = {
|
||||
page: current,
|
||||
desc: false,
|
||||
orderKey: '',
|
||||
...rest,
|
||||
};
|
||||
if (sort && Object.keys(sort).length) {
|
||||
reqParams.orderKey = Object.keys(sort)[0];
|
||||
let sort_select = sort[reqParams.orderKey];
|
||||
reqParams.desc = sort_select === 'descend';
|
||||
}
|
||||
// let resp = await postDeviceCategoryGetDeviceCategoryList({ ...reqParams });
|
||||
let resp = await getAlarmRulesList();
|
||||
return {
|
||||
data: resp.data.list.map((v: API.DeviceCategory) => {
|
||||
return { ...v, key: v.id };
|
||||
}),
|
||||
success: resp.success,
|
||||
total: resp.data.total,
|
||||
current: resp.data.page,
|
||||
pageSize: resp.data.pageSize,
|
||||
};
|
||||
}}
|
||||
columns={columns}
|
||||
/>
|
||||
<UpdateForm
|
||||
updateModalOpen={updateModalOpen}
|
||||
values={currentRow || {}}
|
||||
handleModal={handleUpdateModal}
|
||||
reload={actionRef.current?.reload}
|
||||
/>
|
||||
</PageContainer>
|
||||
);
|
||||
};
|
||||
|
||||
export default AlarmRulesList;
|
@ -0,0 +1,191 @@
|
||||
/**
|
||||
* 接口管理新建弹框
|
||||
*
|
||||
*/
|
||||
import { postBusinessImageCreateBusinessImage } from '@/services/resource/BusinessImage';
|
||||
import { ModalForm, ProForm, ProFormText, ProFormTextArea } from '@ant-design/pro-components';
|
||||
import { FormattedMessage, useIntl } from '@umijs/max';
|
||||
import { Button, Form, message } from 'antd';
|
||||
import { proFormItemStyleProps, proFormModelWidth } from '../../../../../config/defaultForm';
|
||||
import React from 'react';
|
||||
export type FormValueType = {
|
||||
target?: string;
|
||||
template?: string;
|
||||
type?: string;
|
||||
time?: string;
|
||||
frequency?: string;
|
||||
} & Partial<API.BusinessImage>;
|
||||
|
||||
export type CreateFormProps = {
|
||||
createModalOpen: boolean;
|
||||
handleModal: () => void;
|
||||
values: Partial<API.BusinessImage>;
|
||||
reload: any;
|
||||
};
|
||||
const CreateForm: React.FC<CreateFormProps> = (props) => {
|
||||
const intl = useIntl();
|
||||
const [form] = Form.useForm<API.BusinessImage>();
|
||||
|
||||
return (
|
||||
<ModalForm<API.BusinessImage>
|
||||
width={proFormModelWidth}
|
||||
title={intl.formatMessage({
|
||||
id: 'resource.server_status.table.list.add',
|
||||
defaultMessage: '$$$',
|
||||
})}
|
||||
open={props.createModalOpen}
|
||||
form={form}
|
||||
autoFocusFirstInput
|
||||
modalProps={{
|
||||
destroyOnClose: true,
|
||||
onCancel: () => props.handleModal(),
|
||||
}}
|
||||
submitTimeout={2000}
|
||||
onFinish={async (values) => {
|
||||
postBusinessImageCreateBusinessImage(values)
|
||||
.then(() => {
|
||||
message.success(intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' }));
|
||||
props.reload();
|
||||
})
|
||||
.catch(() => {
|
||||
message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' }));
|
||||
});
|
||||
props.handleModal();
|
||||
return true;
|
||||
}}
|
||||
>
|
||||
<span style={{
|
||||
display: 'inline-block',
|
||||
fontWeight: 600,
|
||||
marginBottom: 12
|
||||
}}>
|
||||
<FormattedMessage id="resource.server_status.table.list.parameter" defaultMessage="$$$" />
|
||||
</span>
|
||||
<ProForm.Group>
|
||||
<ProFormText
|
||||
width={proFormItemStyleProps.column2Width}
|
||||
name="name"
|
||||
label={
|
||||
<FormattedMessage id="resource.server_status.table.list.name" defaultMessage="$$$" />
|
||||
}
|
||||
placeholder={`${intl.formatMessage({
|
||||
id: 'common.please_input',
|
||||
defaultMessage: '$$$',
|
||||
})}${intl.formatMessage({
|
||||
id: 'resource.server_status.table.list.name',
|
||||
defaultMessage: '$$$',
|
||||
})}`}
|
||||
required={false}
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: (
|
||||
<FormattedMessage
|
||||
id="resource.server_status.table.list.name"
|
||||
defaultMessage="name is required"
|
||||
/>
|
||||
),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<ProFormText
|
||||
width={proFormItemStyleProps.column2Width}
|
||||
name="userName"
|
||||
label={
|
||||
<FormattedMessage
|
||||
id="resource.server_status.table.list.userName"
|
||||
defaultMessage="$$$"
|
||||
/>
|
||||
}
|
||||
placeholder={`${intl.formatMessage({
|
||||
id: 'common.please_input',
|
||||
defaultMessage: '$$$',
|
||||
})}${intl.formatMessage({
|
||||
id: 'resource.server_status.table.list.userName',
|
||||
defaultMessage: '$$$',
|
||||
})}`}
|
||||
required={false}
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: (
|
||||
<FormattedMessage
|
||||
id="resource.server_status.table.list.userName"
|
||||
defaultMessage="version is required"
|
||||
/>
|
||||
),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
<ProFormText
|
||||
width={proFormItemStyleProps.column2Width}
|
||||
name="ip"
|
||||
label={
|
||||
<FormattedMessage id="resource.server_status.table.list.ip" defaultMessage="$$$" />
|
||||
}
|
||||
placeholder={`${intl.formatMessage({
|
||||
id: 'common.please_input',
|
||||
defaultMessage: '$$$',
|
||||
})}${intl.formatMessage({
|
||||
id: 'resource.server_status.table.list.ip',
|
||||
defaultMessage: '$$$',
|
||||
})}`}
|
||||
required={false}
|
||||
/>
|
||||
<ProFormText
|
||||
width={proFormItemStyleProps.column2Width}
|
||||
name="password"
|
||||
label={
|
||||
<FormattedMessage
|
||||
id="resource.server_status.table.list.password"
|
||||
defaultMessage="$$$"
|
||||
/>
|
||||
}
|
||||
placeholder={`${intl.formatMessage({
|
||||
id: 'common.please_input',
|
||||
defaultMessage: '$$$',
|
||||
})}${intl.formatMessage({
|
||||
id: 'resource.server_status.table.list.password',
|
||||
defaultMessage: '$$$',
|
||||
})}`}
|
||||
required={false}
|
||||
/>
|
||||
<ProFormText
|
||||
width={proFormItemStyleProps.column2Width}
|
||||
name="defaultPort"
|
||||
label={
|
||||
<FormattedMessage
|
||||
id="resource.server_status.table.list.defaultPort"
|
||||
defaultMessage="$$$"
|
||||
/>
|
||||
}
|
||||
placeholder={`${intl.formatMessage({
|
||||
id: 'common.please_input',
|
||||
defaultMessage: '$$$',
|
||||
})}${intl.formatMessage({
|
||||
id: 'resource.server_status.table.list.defaultPort',
|
||||
defaultMessage: '$$$',
|
||||
})}`}
|
||||
required={false}
|
||||
/>
|
||||
<ProFormTextArea
|
||||
width={proFormItemStyleProps.width}
|
||||
name="publicKeyString"
|
||||
label={
|
||||
<FormattedMessage id="resource.server_status.table.list.publicKeyString" defaultMessage="$$$" />
|
||||
}
|
||||
placeholder={`${intl.formatMessage({
|
||||
id: 'common.please_input',
|
||||
defaultMessage: '$$$',
|
||||
})}${intl.formatMessage({
|
||||
id: 'resource.server_status.table.list.publicKeyString',
|
||||
defaultMessage: '$$$',
|
||||
})}`}
|
||||
required={false}
|
||||
/>
|
||||
<Button type="primary" ghost><FormattedMessage id="resource.server_status.table.list.connectivityTesting" defaultMessage="$$$" /></Button>
|
||||
</ProForm.Group>
|
||||
</ModalForm>
|
||||
);
|
||||
};
|
||||
export default CreateForm;
|
@ -0,0 +1,169 @@
|
||||
/*
|
||||
* @Author: zhoux zhouxia@supervision.ltd
|
||||
* @Date: 2023-11-01 13:56:33
|
||||
* @LastEditors: zhoux zhouxia@supervision.ltd
|
||||
* @LastEditTime: 2023-12-26 15:01:08
|
||||
* @FilePath: \general-ai-platform-web\src\pages\Device\DeviceCategoryList\components\UpdateForm.tsx
|
||||
* @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
|
||||
*/
|
||||
import { putDeviceCategoryUpdateDeviceCategory } from '@/services/device/DeviceCategory';
|
||||
import { postDeviceGroupGetDeviceGroupFkSelect } from '@/services/device/DeviceGroup';
|
||||
import { ModalForm, ProForm, ProFormFieldSet, ProFormSelect, ProFormSwitch, ProFormText } from '@ant-design/pro-components';
|
||||
import { FormattedMessage, useIntl } from '@umijs/max';
|
||||
import { Form, message } from 'antd';
|
||||
import React from 'react';
|
||||
import {
|
||||
proFormSmallItemStyleProps,
|
||||
proFormSmallModelWidth,
|
||||
} from '../../../../../config/defaultForm';
|
||||
export type FormValueType = {
|
||||
target?: string;
|
||||
template?: string;
|
||||
type?: string;
|
||||
time?: string;
|
||||
frequency?: string;
|
||||
} & Partial<API.DeviceCategory>;
|
||||
|
||||
export type UpdateFormProps = {
|
||||
updateModalOpen: boolean;
|
||||
handleModal: () => void;
|
||||
values: Partial<API.DeviceCategory>;
|
||||
reload: any;
|
||||
};
|
||||
const UpdateForm: React.FC<UpdateFormProps> = (props) => {
|
||||
const intl = useIntl();
|
||||
const [form] = Form.useForm<API.DeviceCategory>();
|
||||
|
||||
return (
|
||||
<ModalForm<any>
|
||||
width={proFormSmallModelWidth}
|
||||
title={intl.formatMessage({
|
||||
id: 'alarm_rules.page.form.title',
|
||||
defaultMessage: `编辑${props.values.name}`,
|
||||
})}
|
||||
open={props.updateModalOpen}
|
||||
form={form}
|
||||
autoFocusFirstInput
|
||||
modalProps={{
|
||||
destroyOnClose: true,
|
||||
onCancel: () => props.handleModal(),
|
||||
}}
|
||||
submitTimeout={2000}
|
||||
onFinish={async (values) => {
|
||||
console.log(values);
|
||||
// putDeviceCategoryUpdateDeviceCategory(values)
|
||||
// .then(() => {
|
||||
// message.success(intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' }));
|
||||
// props.reload();
|
||||
// })
|
||||
// .catch(() => {
|
||||
// message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' }));
|
||||
// });
|
||||
|
||||
// props.handleModal();
|
||||
// return true;
|
||||
}}
|
||||
>
|
||||
<ProForm.Group>
|
||||
{/* <ProFormText
|
||||
width={proFormSmallItemStyleProps.width}
|
||||
name="name"
|
||||
label={<FormattedMessage id="alarm_rules.page.form.enabled" defaultMessage="$$$" />}
|
||||
placeholder={`${intl.formatMessage({
|
||||
id: 'common.please_input',
|
||||
defaultMessage: '$$$',
|
||||
})}${intl.formatMessage({
|
||||
id: 'alarm_rules.page.form.enabled',
|
||||
defaultMessage: '$$$',
|
||||
})}`}
|
||||
required={false}
|
||||
initialValue={props.values.enabled}
|
||||
disabled={false}
|
||||
/> */}
|
||||
<ProFormSwitch
|
||||
width={proFormSmallItemStyleProps.column2Width}
|
||||
name="isEnable"
|
||||
label={
|
||||
<FormattedMessage
|
||||
id="alarm_rules.page.form.isEnabled"
|
||||
defaultMessage="$$$"
|
||||
/>
|
||||
}
|
||||
checkedChildren="启用"
|
||||
unCheckedChildren="关闭"
|
||||
initialValue={props.values.isEnabled}
|
||||
disabled={false}
|
||||
/>
|
||||
<ProFormText
|
||||
width={proFormSmallItemStyleProps.width}
|
||||
name="name"
|
||||
label={<FormattedMessage id="alarm_rules.page.form.name" defaultMessage="$$$" />}
|
||||
placeholder={`${intl.formatMessage({
|
||||
id: 'common.please_input',
|
||||
defaultMessage: '$$$',
|
||||
})}${intl.formatMessage({
|
||||
id: 'alarm_rules.page.form.name',
|
||||
defaultMessage: '$$$',
|
||||
})}`}
|
||||
required={true}
|
||||
initialValue={props.values.name}
|
||||
disabled={false}
|
||||
rules={[
|
||||
{
|
||||
required: true,
|
||||
message: (
|
||||
<FormattedMessage
|
||||
id="alarm_rules.page.rule.required.name"
|
||||
defaultMessage="name is required"
|
||||
/>
|
||||
),
|
||||
},
|
||||
]}
|
||||
/>
|
||||
{/* <ProFormSelect
|
||||
width={proFormSmallItemStyleProps.width}
|
||||
name="level"
|
||||
label={<FormattedMessage id="alarm.setting.table.list.level" defaultMessage="$$$" />}
|
||||
placeholder={`${intl.formatMessage({
|
||||
id: 'common.please_select',
|
||||
defaultMessage: '$$$',
|
||||
})}${intl.formatMessage({
|
||||
id: 'alarm.setting.table.list.level',
|
||||
defaultMessage: '$$$',
|
||||
})}`}
|
||||
required={false}
|
||||
// TODO 在types中增加类型注释
|
||||
initialValue={props.values?.level}
|
||||
debounceTime={1000}
|
||||
request={async () => {
|
||||
// TODO 此处需要使用告警级别接口联调
|
||||
const resp = await postDeviceGroupGetDeviceGroupFkSelect({});
|
||||
return resp.data.list.map((v: any) => {
|
||||
return {
|
||||
label: v.name,
|
||||
value: v.id,
|
||||
};
|
||||
});
|
||||
}}
|
||||
/> */}
|
||||
{/* <ProFormText
|
||||
width={proFormSmallItemStyleProps.width}
|
||||
name="triggerConditions"
|
||||
label={<FormattedMessage id="alarm_rules.page.form.triggerConditions" defaultMessage="$$$" />}
|
||||
placeholder={`${intl.formatMessage({
|
||||
id: 'common.please_input',
|
||||
defaultMessage: '$$$',
|
||||
})}${intl.formatMessage({
|
||||
id: 'alarm_rules.page.form.triggerConditions',
|
||||
defaultMessage: '$$$',
|
||||
})}`}
|
||||
required={false}
|
||||
initialValue={props.values.triggerConditions}
|
||||
disabled={false}
|
||||
/> */}
|
||||
|
||||
</ProForm.Group>
|
||||
</ModalForm>
|
||||
);
|
||||
};
|
||||
export default UpdateForm;
|
@ -0,0 +1,240 @@
|
||||
import AlarmLevelBox from '@/components/DictionaryBox/alarmLevel';
|
||||
import TableActionCard from '@/components/TableActionCard';
|
||||
import IsDelete from '@/components/TableActionCard/isDelete';
|
||||
import { alarmLevelStatusEnum } from '@/enums/status';
|
||||
import {
|
||||
deleteDeviceCategoryDeleteDeviceCategory,
|
||||
postDeviceCategoryGetDeviceCategoryList,
|
||||
} from '@/services/device/DeviceCategory';
|
||||
import type { ActionType, ProColumns } from '@ant-design/pro-components';
|
||||
import { PageContainer, ProTable } from '@ant-design/pro-components';
|
||||
import { FormattedMessage, useIntl } from '@umijs/max';
|
||||
import { Button, Space, Tag, message } from 'antd';
|
||||
import React, { useRef, useState } from 'react';
|
||||
import { proTablePaginationOptions } from '../../../../config/defaultTable';
|
||||
import { proIconForTableActionStyle } from '../../../../config/defaultIcon';
|
||||
import { EditOutlined } from '@ant-design/icons';
|
||||
import UpdateForm from './components/UpdateForm';
|
||||
const InterfaceManageList: React.FC = () => {
|
||||
/**
|
||||
* @en-US International configuration
|
||||
* @zh-CN 国际化配置
|
||||
* */
|
||||
const intl = useIntl();
|
||||
const actionRef = useRef<ActionType>();
|
||||
// 动态设置每页数量
|
||||
const [currentPageSize, setCurrentPageSize] = useState<number>(10);
|
||||
|
||||
const handleDestroy = async (selectedRow: API.DeviceCategory) => {
|
||||
deleteDeviceCategoryDeleteDeviceCategory({ id: selectedRow.id })
|
||||
.then(() => {
|
||||
message.success(intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' }));
|
||||
actionRef.current?.reload();
|
||||
})
|
||||
.catch(() => {
|
||||
message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' }));
|
||||
});
|
||||
};
|
||||
|
||||
const [currentRow, setCurrentRow] = useState<API.DeviceCategory>();
|
||||
// 编辑弹框
|
||||
const [updateModalOpen, setUpdateModalOpen] = useState<boolean>(false);
|
||||
|
||||
const handleUpdateModal = () => {
|
||||
if (updateModalOpen) {
|
||||
setUpdateModalOpen(false);
|
||||
setCurrentRow(undefined);
|
||||
} else {
|
||||
setUpdateModalOpen(true);
|
||||
}
|
||||
};
|
||||
|
||||
const getAlarmRulesList = async () => {
|
||||
return {
|
||||
code: 0,
|
||||
success: true,
|
||||
data: {
|
||||
"list": [
|
||||
{
|
||||
"id": 1,
|
||||
"createTime": "2023-10-17T02:35:41.14308Z",
|
||||
"updateTime": "2023-10-17T02:35:41.14308Z",
|
||||
"name": "单人徘徊告警",
|
||||
"address": "https://xxxx%E5%BC%80%E5%85%B3",
|
||||
"isEnabled": true,
|
||||
"remark": ""
|
||||
},
|
||||
{
|
||||
"id": 2,
|
||||
"createTime": "2023-10-17T02:40:28.292883Z",
|
||||
"updateTime": "2023-10-26T03:02:51.356036Z",
|
||||
"name": "多人聚集告警",
|
||||
"address": "https://xxxx%E5%BC%80%E5%85%B3",
|
||||
"isEnabled": false,
|
||||
"remark": ""
|
||||
},
|
||||
{
|
||||
"id": 4,
|
||||
"createTime": "2023-12-12T02:54:52.204957Z",
|
||||
"updateTime": "2023-12-12T02:54:52.204957Z",
|
||||
"name": "敏感时间段告警",
|
||||
"address": "https://xxxx%E5%BC%80%E5%85%B3",
|
||||
"isEnabled": false,
|
||||
"remark": ""
|
||||
}
|
||||
],
|
||||
"total": 3,
|
||||
"page": 1,
|
||||
"pageSize": 10
|
||||
},
|
||||
msg: "获取成功"
|
||||
}
|
||||
}
|
||||
|
||||
const columns: ProColumns<API.DeviceCategory>[] = [
|
||||
{
|
||||
title: <FormattedMessage id="device.interface_manage.table.list.name" defaultMessage="$$$" />,
|
||||
dataIndex: 'name',
|
||||
hideInSearch: true,
|
||||
},
|
||||
|
||||
{
|
||||
title: <FormattedMessage id="device.interface_manage.table.list.address" defaultMessage="$$$" />,
|
||||
dataIndex: 'address',
|
||||
hideInSearch: true,
|
||||
},
|
||||
{
|
||||
title: <FormattedMessage id="device.interface_manage.table.list.createTime" defaultMessage="$$$" />,
|
||||
dataIndex: 'createTime',
|
||||
sorter: true,
|
||||
hideInSearch: true,
|
||||
valueType: 'dateTime',
|
||||
},
|
||||
|
||||
{
|
||||
title: <FormattedMessage id="pages.searchTable.titleOption" defaultMessage="Operating" />,
|
||||
dataIndex: 'option',
|
||||
valueType: 'option',
|
||||
fixed: 'right',
|
||||
render: (_, record) => [
|
||||
<TableActionCard
|
||||
key="TableActionCardRef"
|
||||
renderActions={[
|
||||
{
|
||||
key: 'update',
|
||||
renderDom: (
|
||||
<Button
|
||||
key="update"
|
||||
type="link"
|
||||
size="small"
|
||||
style={{
|
||||
color:"#081FA8",
|
||||
|
||||
}}
|
||||
icon={<EditOutlined style={{
|
||||
marginRight: 3
|
||||
}} />}
|
||||
onClick={() => {
|
||||
setUpdateModalOpen(true);
|
||||
setCurrentRow(record);
|
||||
}}
|
||||
>
|
||||
<FormattedMessage id="common.edit" defaultMessage="Update" />
|
||||
</Button>
|
||||
),
|
||||
},
|
||||
{
|
||||
key: 'destroy',
|
||||
renderDom: (
|
||||
<IsDelete
|
||||
deleteApi={() => {
|
||||
handleDestroy(record).then(() => {});
|
||||
}}
|
||||
></IsDelete>
|
||||
),
|
||||
},
|
||||
]}
|
||||
></TableActionCard>,
|
||||
],
|
||||
},
|
||||
];
|
||||
return (
|
||||
<PageContainer
|
||||
title={false}
|
||||
content={
|
||||
<div style={{
|
||||
display: 'flex',
|
||||
justifyContent: 'space-between'
|
||||
}}>
|
||||
<div style={{
|
||||
fontWeight: 600,
|
||||
fontSize: 20,
|
||||
color: '#333'
|
||||
}}>接口管理</div>
|
||||
<Button type="primary"
|
||||
onClick={() => {
|
||||
// setCreateModalOpen(true);
|
||||
}}
|
||||
>
|
||||
<FormattedMessage id="resource.server_status.table.list.add" defaultMessage="add" />
|
||||
</Button>
|
||||
</div>
|
||||
}
|
||||
>
|
||||
<ProTable<API.DeviceCategory>
|
||||
cardProps={{
|
||||
bodyStyle: {
|
||||
padding: 20
|
||||
}
|
||||
}}
|
||||
options={{ fullScreen: false, setting: false, density: false, reload: false }}
|
||||
actionRef={actionRef}
|
||||
rowKey="key"
|
||||
search={false}
|
||||
pagination={{
|
||||
...proTablePaginationOptions,
|
||||
pageSize: currentPageSize,
|
||||
onChange: (page, pageSize) => setCurrentPageSize(pageSize),
|
||||
}}
|
||||
columnsState={{
|
||||
persistenceKey: 'device_category_list',
|
||||
persistenceType: 'localStorage',
|
||||
}}
|
||||
request={async (params = {}, sort) => {
|
||||
const { current, ...rest } = params;
|
||||
const reqParams = {
|
||||
page: current,
|
||||
desc: false,
|
||||
orderKey: '',
|
||||
...rest,
|
||||
};
|
||||
if (sort && Object.keys(sort).length) {
|
||||
reqParams.orderKey = Object.keys(sort)[0];
|
||||
let sort_select = sort[reqParams.orderKey];
|
||||
reqParams.desc = sort_select === 'descend';
|
||||
}
|
||||
// let resp = await postDeviceCategoryGetDeviceCategoryList({ ...reqParams });
|
||||
let resp = await getAlarmRulesList();
|
||||
return {
|
||||
data: resp.data.list.map((v: API.DeviceCategory) => {
|
||||
return { ...v, key: v.id };
|
||||
}),
|
||||
success: resp.success,
|
||||
total: resp.data.total,
|
||||
current: resp.data.page,
|
||||
pageSize: resp.data.pageSize,
|
||||
};
|
||||
}}
|
||||
columns={columns}
|
||||
/>
|
||||
<UpdateForm
|
||||
updateModalOpen={updateModalOpen}
|
||||
values={currentRow || {}}
|
||||
handleModal={handleUpdateModal}
|
||||
reload={actionRef.current?.reload}
|
||||
/>
|
||||
</PageContainer>
|
||||
);
|
||||
};
|
||||
|
||||
export default InterfaceManageList;
|
Loading…
Reference in New Issue