From b7bae347c65d81fcbd352f03f317e4643a97948b Mon Sep 17 00:00:00 2001 From: JINGYJ <1458671527@qq.com> Date: Fri, 29 Dec 2023 16:43:29 +0800 Subject: [PATCH] =?UTF-8?q?feact:=20=E4=BB=BB=E5=8A=A1=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E3=80=81=E6=9C=8D=E5=8A=A1=E5=99=A8=E7=8A=B6=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.ts | 12 + src/components/Notice/index.tsx | 2 +- src/components/TableActionCard/stopBtn.tsx | 54 +++ src/locales/zh-CN.ts | 2 + src/locales/zh-CN/common.ts | 1 + src/locales/zh-CN/pages.ts | 2 + src/locales/zh-CN/resource.ts | 18 + src/locales/zh-CN/system.ts | 6 + src/pages/Account/Center/index.tsx | 2 +- .../ServerStatus/components/CreateForm.tsx | 185 ++++++++ .../components/DeviceStatusCard.tsx | 115 +++++ .../ServerStatus/components/UpdateForm.tsx | 191 +++++++++ src/pages/Resource/ServerStatus/index.tsx | 394 ++++++++++++++++++ .../components/UpdateParameterForm.tsx | 92 ++++ src/pages/System/ParameterSetting/index.tsx | 244 +++++++++++ .../ParameterSetting/parameterSetting.less | 29 ++ src/pages/Task/TaskList/index.tsx | 6 +- 17 files changed, 1350 insertions(+), 5 deletions(-) create mode 100644 src/components/TableActionCard/stopBtn.tsx create mode 100644 src/pages/Resource/ServerStatus/components/CreateForm.tsx create mode 100644 src/pages/Resource/ServerStatus/components/DeviceStatusCard.tsx create mode 100644 src/pages/Resource/ServerStatus/components/UpdateForm.tsx create mode 100644 src/pages/Resource/ServerStatus/index.tsx create mode 100644 src/pages/System/ParameterSetting/components/UpdateParameterForm.tsx create mode 100644 src/pages/System/ParameterSetting/index.tsx create mode 100644 src/pages/System/ParameterSetting/parameterSetting.less diff --git a/config/routes.ts b/config/routes.ts index 8f68b38..ed6bb95 100644 --- a/config/routes.ts +++ b/config/routes.ts @@ -93,6 +93,12 @@ export default [ component: 'System/OperationRecordList', access: 'canReadMenu', }, + { + name: 'parameter-setting', + path: '/system/parameter-setting', + component: 'System/ParameterSetting', + access: 'canReadMenu', + }, ], }, { @@ -205,6 +211,12 @@ export default [ component: 'Resource/ResourceDeviceStatus', access: 'canReadMenu', }, + { + name: 'server-status', + path: '/resource/server-status', + component: 'Resource/ServerStatus', + access: 'canReadMenu', + }, ], }, { diff --git a/src/components/Notice/index.tsx b/src/components/Notice/index.tsx index c53b595..1d5258b 100644 --- a/src/components/Notice/index.tsx +++ b/src/components/Notice/index.tsx @@ -128,7 +128,7 @@ const Notice: React.FC = () => {
系统消息 - + 紧急
diff --git a/src/components/TableActionCard/stopBtn.tsx b/src/components/TableActionCard/stopBtn.tsx new file mode 100644 index 0000000..491923d --- /dev/null +++ b/src/components/TableActionCard/stopBtn.tsx @@ -0,0 +1,54 @@ +/** + * 停止按钮 + * + */ +import { DeleteOutlined } from '@ant-design/icons'; +import { useIntl } from '@umijs/max'; +import { Button, Popconfirm } from 'antd'; +import { proIconForTableActionStyle } from '../../../config/defaultIcon'; +import { FormattedMessage } from 'react-intl'; + +type StopBtnProps = { + // eslint-disable-next-line @typescript-eslint/ban-types + buttonType?: 'defalut' | 'deleteIcon'; + deleteApi: () => void; +}; + +const StopBtn: React.FC = (props) => { + const intl = useIntl(); + + return ( + { + props.deleteApi(); + }} + > + {/* {props.buttonType === 'deleteIcon' ? ( + <> + + + ) : ( + + )} */} + + + ); +}; + +export default StopBtn; diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 865cb29..647f458 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -26,6 +26,7 @@ import { post, role, user, + parameter_setting, } from '@/locales/zh-CN/system'; import app from './zh-CN/app'; import common from './zh-CN/common'; @@ -63,6 +64,7 @@ export default { ...department, ...operation_record, ...app, + ...parameter_setting, ...Object.assign({}, ...Object.values(analysisZh)), ...Object.assign({}, ...Object.values(errorTypesZh)), diff --git a/src/locales/zh-CN/common.ts b/src/locales/zh-CN/common.ts index 4167c4d..afea17c 100644 --- a/src/locales/zh-CN/common.ts +++ b/src/locales/zh-CN/common.ts @@ -11,6 +11,7 @@ export default { 'common.modal.table.create.title': '新增表单', 'common.modal.table.delete.title': '确定要删除吗?', 'common.modal.table.delete.content': '确定删除吗,删除后将无法找回,请谨慎操作', + 'common.modal.table.stop.content': '确定要停止此任务吗? 停止后模型将停止运行', 'common.enable': '开启', 'common.disable': '禁用', 'common.yes': '是', diff --git a/src/locales/zh-CN/pages.ts b/src/locales/zh-CN/pages.ts index a37eec9..3a9ec5d 100644 --- a/src/locales/zh-CN/pages.ts +++ b/src/locales/zh-CN/pages.ts @@ -70,4 +70,6 @@ export default { 'pages.searchTable.tenThousand': '万', 'pages.searchTable.batchDeletion': '批量删除', 'pages.searchTable.batchApproval': '批量审批', + 'pages.searchTable.stop': '停止', + 'pages.searchTable.edit': '编辑', }; diff --git a/src/locales/zh-CN/resource.ts b/src/locales/zh-CN/resource.ts index b043f40..67e6975 100644 --- a/src/locales/zh-CN/resource.ts +++ b/src/locales/zh-CN/resource.ts @@ -79,3 +79,21 @@ export const model_version: { [key: string]: string } = { 'resource.model_version.table.list.add': '新建模型版本', 'resource.model_version.table.list.update': '更新模型版本', }; +export const server_status: { [key: string]: string } = { + 'resource.server_status.table.list.name': '服务器名称', + 'resource.server_status.table.list.userName': '用户名', + 'resource.server_status.table.list.ip': 'IP', + 'resource.server_status.table.list.password': '密码', + 'resource.server_status.table.list.defaultPort': '默认端口', + 'resource.server_status.table.list.parameter': '服务器参数', + 'resource.server_status.table.list.publicKeyString': '公钥字符串', + 'resource.server_status.table.list.connectivityTesting': '连通性测试', + 'resource.server_status.table.list.isEnable': '是否启用', + 'resource.server_status.table.list.remark': '备注', + 'resource.server_status.table.list.createTime': '创建时间', + 'resource.server_status.table.list.updateTime': '更新时间', + 'resource.server_status.table.rule.required.modelFkId': '模型为必填项', + 'resource.server_status.table.rule.required.path': '模型地址为必填项', + 'resource.server_status.table.list.add': '新建服务器', + 'resource.server_status.table.list.update': '更新模型版本', +}; diff --git a/src/locales/zh-CN/system.ts b/src/locales/zh-CN/system.ts index bde69eb..3e5fa3d 100644 --- a/src/locales/zh-CN/system.ts +++ b/src/locales/zh-CN/system.ts @@ -152,3 +152,9 @@ export const operation_record: { [key: string]: string } = { 'system.operation.table.rule.list.ip': '请填写IP', 'system.operation.table.rule.list.path': '请填写接口路径', } + +export const parameter_setting: { [key: string]: string } = { + 'system.parameter.table.list.label': '标签', + 'system.parameter.table.list.editor': '编辑参数', + 'system.parameter.table.rule.required.label': '参数为必填', +} diff --git a/src/pages/Account/Center/index.tsx b/src/pages/Account/Center/index.tsx index d77038e..02da4c8 100644 --- a/src/pages/Account/Center/index.tsx +++ b/src/pages/Account/Center/index.tsx @@ -135,7 +135,7 @@ const AccountCenter: React.FC = () => {
- 登录密码:wangliqun + 登录密码:*********** + + + ); +}; +export default CreateForm; diff --git a/src/pages/Resource/ServerStatus/components/DeviceStatusCard.tsx b/src/pages/Resource/ServerStatus/components/DeviceStatusCard.tsx new file mode 100644 index 0000000..12caec7 --- /dev/null +++ b/src/pages/Resource/ServerStatus/components/DeviceStatusCard.tsx @@ -0,0 +1,115 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-06 16:12:17 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-12-11 16:12:17 + * @FilePath: \general-ai-platform-web\src\pages\Setting\components\ProjectCardList.tsx + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import React from 'react'; + +import { Progress } from 'antd'; +// import { postModelVersionGetModelVersionListByIds } from '@/services/resource/ModelVersion'; + +// const [tabs, setTabs] = useState([]); +// const [projectData, setProjectData] = useState({}); +// const [tab, setTab] = useState(''); +// const [modelVersionData, setModelVersionData] = useState([]); + +/**styles */ +const listItemStyle = { + display: 'flex', + fontSize: 14, + color: '#333333', + width: '100%', + alignItems: 'center', + padding: '8px 0 0', +}; + +const listItemLabelStyle = { + fontSize: 14, + color: '#666666', + minWidth: 40, +}; + +const listItemTextStyle = { + fontSize: 14, + margin: 0, +}; +// 卡片 +export type UpdateProjectProps = { + info: Record; + // reload: any; +}; + +type DeviceItemProgress = { + label: string; + percent: number; +}; + +// 进度条 +// TODO 进度条的边框圆角调整为矩形 +const DeviceItemProgress: React.FC = (props) => { + let strokeColor = 'rgb(243,48,5)'; + switch (props.label) { + case 'CPU': + strokeColor = 'rgb(243,48,5)'; + break; + case '内存': + strokeColor = 'rgb(33,169,122)'; + break; + case '存储': + strokeColor = 'rgb(33,169,122)'; + break; + case 'GPU': + strokeColor = 'rgb(250,173,20)'; + break; + } + + return ( +
+ {props.label} + +
+ ); +}; + +const DeviceStatusCard: React.FC = ({ + info, +}: { + info: Record; +}) => { + return ( +
+ {/*
+ 苏胜天算法模型 + 经典算法 +
*/} +
    +
  • + +
  • +
  • + +
  • +
  • + +
  • +
  • + +
  • +
+
+ ); +}; + +export default DeviceStatusCard; diff --git a/src/pages/Resource/ServerStatus/components/UpdateForm.tsx b/src/pages/Resource/ServerStatus/components/UpdateForm.tsx new file mode 100644 index 0000000..69dc613 --- /dev/null +++ b/src/pages/Resource/ServerStatus/components/UpdateForm.tsx @@ -0,0 +1,191 @@ +/** + * 服务器状态编辑弹框 + * + */ +import { putBusinessImageUpdateBusinessImage } 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 React from 'react'; +import { proFormItemStyleProps, proFormModelWidth } from '../../../../../config/defaultForm'; +export type FormValueType = { + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; + +export type UpdateFormProps = { + updateModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; +const UpdateForm: React.FC = (props) => { + const intl = useIntl(); + const [form] = Form.useForm(); + + return ( + + width={proFormModelWidth} + title={intl.formatMessage({ + id: 'resource.business_image.table.list.update', + defaultMessage: '$$$', + })} + open={props.updateModalOpen} + form={form} + autoFocusFirstInput + modalProps={{ + destroyOnClose: true, + onCancel: () => props.handleModal(), + }} + submitTimeout={2000} + onFinish={async (values) => { + putBusinessImageUpdateBusinessImage(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; + }} + > + + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.server_status.table.list.name', + defaultMessage: '$$$', + })}`} + required={false} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.server_status.table.list.userName', + defaultMessage: '$$$', + })}`} + required={false} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.server_status.table.list.ip', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.server_status.table.list.password', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.server_status.table.list.defaultPort', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.server_status.table.list.publicKeyString', + defaultMessage: '$$$', + })}`} + required={false} + /> + + + + ); +}; +export default UpdateForm; diff --git a/src/pages/Resource/ServerStatus/index.tsx b/src/pages/Resource/ServerStatus/index.tsx new file mode 100644 index 0000000..85d7820 --- /dev/null +++ b/src/pages/Resource/ServerStatus/index.tsx @@ -0,0 +1,394 @@ +import TableActionCard from '@/components/TableActionCard'; +import { deviceStatusEnums } from '@/enums/status'; +import { ActionType, PageContainer, ProCard, ProList } from '@ant-design/pro-components'; +import { FormattedMessage, useIntl } from '@umijs/max'; +import { Button, Modal, Tag } from 'antd'; +import React, { useRef, useState } from 'react'; +import { proTableCommonOptions, proTablePaginationOptions } from '../../../../config/defaultTable'; +import DeviceStatusCard from './components/DeviceStatusCard'; +import CreateForm from './components/CreateForm'; +import UpdateForm from './components/UpdateForm'; +import { QuestionCircleFilled } from '@ant-design/icons'; + +/** + * @交互说明 + * 1、列表分页展示服务器状态 + */ +const tabOptions: Record = { + allStatus: 90, + onlineStatus: 20, + outlineStatus: 20, + // processingStatus: 10, + // errorStatus: 20, +}; +export type DeleteBoxProps = { + modalOpen: boolean; + handleModal: () => void; + values: any + reload: any; +}; + +const ServerStatus: React.FC = () => { + const [cardActionProps, setCardActionProps] = useState<'actions' | 'extra'>('extra'); + /** + * @en-US Pop-up window of new window + * @zh-CN 新建窗口的弹窗 + * */ + const [createModalOpen, setCreateModalOpen] = useState(false); + /** + * @en-US The pop-up window of the distribution update window + * @zh-CN 更新窗口的弹窗 + * */ + const [updateModalOpen, setUpdateModalOpen] = useState(false); + /** + * @en-US The pop-up window of the distribution update window + * @zh-CN 删除窗口 + * */ + const [modalOpen, setModalOpen] = useState(false); + const [currentRow, setCurrentRow] = useState>({}); + /** + * @en-US International configuration + * @zh-CN 国际化配置 + * */ + // const access = useAccess(); + // const intl = useIntl(); + const actionRef = useRef(); + // 动态设置每页数量 + const [currentPageSize, setCurrentPageSize] = useState(8); + + const [activeTabIndex, setActiveTabIndex] = useState(0); + + const handleCreateModal = () => { + if (createModalOpen) { + setCreateModalOpen(false); + setCurrentRow(undefined); + } else { + setCreateModalOpen(true); + } + }; + + const handleUpdateModal = () => { + if (updateModalOpen) { + setUpdateModalOpen(false); + setCurrentRow(undefined); + } else { + setUpdateModalOpen(true); + } + }; + + const handleDestroy = async () => { + if (modalOpen) { + setModalOpen(false); + setCurrentRow(undefined); + } else { + setModalOpen(true); + } + // deleteBusinessImageDeleteBusinessImage({ 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 { confirm } = Modal; + const showConfirm = (record: any) => { + confirm({ + title: record.status, + icon: , + content: '确定删除服务器1吗?删除后将找不到此服务器,请谨慎操作.', + okText: '确认', + cancelText: '取消', + width: 560, + onOk() { + console.log('OK'); + }, + onCancel() { + console.log('Cancel'); + }, + }); + }; + + const dataTestList = [ + { status: '在线' }, + { status: '在线' }, + { status: '离线' }, + { status: '离线' }, + { status: '离线' }, + { status: '在线' }, + { status: '在线' }, + { status: '离线' }, + ].map((record, index) => { + let currColor = 'default'; + switch (record.status) { + case '在线': + currColor = 'success'; + break; + case '故障': + currColor = 'error'; + break; + case '运行中': + currColor = 'warning'; + break; + default: + currColor = 'default'; + break; + } + return { + content: ( + +
+
+ {record.status} +

+ 服务器{index + 1} +

+
+ { + setUpdateModalOpen(true); + setCurrentRow(record); + }} + > + + + ), + }, + { + key: 'destroy', + renderDom: ( + // { + // handleDestroy(record).then(() => {}); + // }} + // > + + ), + }, + ]} + > +
+ {' '} +
+ ), + }; + }); + + return ( + +
服务器状态
+ +
+ } + > + + className="gn" + ghost={true} + itemCardProps={{ + ghost: true, + bodyStyle: { padding: 0, margin: 0 }, + }} + // search={{ + // labelWidth: proTableCommonOptions.searchLabelWidth, + // }} + headerTitle={ + <> +
+ {Object.keys(tabOptions).map((item, index) => { + // eslint-disable-next-line react/jsx-key + return ( + + ); + })} +
+ + } + cardProps={{ + bodyStyle: { + background: 'white', + padding: '8px 16px 16px', + borderRadius: 8, + }, + }} + pagination={{ + ...proTablePaginationOptions, + pageSize: currentPageSize, + onChange: (page, pageSize) => setCurrentPageSize(pageSize), + }} + showActions="hover" + rowSelection={false} + grid={{ gutter: 16, xs: 1, md: 2, lg: 2, xl: 4, xxl: 4 }} + metas={{ + type: { + // 不展示在筛选项 + hideInSearch: true, + }, + content: { + hideInSearch: true, + }, + actions: { + cardActionProps, + }, + // status1: { + // // 自己扩展的字段,主要用于筛选,不在列表中显示 + // title: '设备组', + // valueType: 'select', + // valueEnum: { + // '0': { text: '全部设备分组', status: '0' }, + // '1': { + // text: '设备分组1', + // status: '1', + // }, + // '2': { + // text: '设备分组2', + // status: '2', + // }, + // '3': { + // text: '设备分组3', + // status: '3', + // }, + // }, + // }, + // status2: { + // // 自己扩展的字段,主要用于筛选,不在列表中显示 + // title: '分类', + // valueType: 'select', + // valueEnum: { + // '0': { text: '全部分类', status: '0' }, + // '1': { + // text: '外围监控', + // status: '1', + // }, + // '2': { + // text: '室内监控', + // status: '2', + // }, + // '3': { + // text: '违规监控', + // status: '3', + // }, + // }, + // }, + }} + 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'; + } + // TODO 联调查询设备状态接口 + // let resps = await postDeviceGroupGetDeviceGroupList({ ...reqParams }); + let resp = { + success: true, + data: { + list: dataTestList, + total: 8, + page: 1, + pageSize: 8, + }, + }; + return { + data: resp.data.list, + success: resp.success, + total: resp.data.total, + current: resp.data.page, + pageSize: resp.data.pageSize, + }; + }} + /> + + + + ); +}; + +export default ServerStatus; diff --git a/src/pages/System/ParameterSetting/components/UpdateParameterForm.tsx b/src/pages/System/ParameterSetting/components/UpdateParameterForm.tsx new file mode 100644 index 0000000..32ed20c --- /dev/null +++ b/src/pages/System/ParameterSetting/components/UpdateParameterForm.tsx @@ -0,0 +1,92 @@ +import { putProjectUpdateProject } from '@/services/project/Project'; +import { + ModalForm, + ProForm, + ProFormText, +} from '@ant-design/pro-components'; +import { FormattedMessage, useIntl } from '@umijs/max'; +import { Form, message } from 'antd'; +import { proFormSmallItemStyleProps, proFormSmallModelWidth } from '../../../../../config/defaultForm'; +import React from 'react'; +export type FormValueType = { + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; + +export type UpdateFormProps = { + updateModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; + + + +const UpdateParameterForm: React.FC = (props) => { + const intl = useIntl(); + const [form] = Form.useForm(); + + return ( + + width={proFormSmallModelWidth} + title={intl.formatMessage({ + id: 'system.parameter.table.list.editor', + defaultMessage: '$$$', + })} + open={props.updateModalOpen} + form={form} + autoFocusFirstInput + modalProps={{ + destroyOnClose: true, + onCancel: () => props.handleModal(), + }} + submitTimeout={2000} + onFinish={async (values) => { + putProjectUpdateProject(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; + }} + > + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'system.parameter.table.list.label', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.name} + disabled={false} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + + ); +}; +export default UpdateParameterForm; diff --git a/src/pages/System/ParameterSetting/index.tsx b/src/pages/System/ParameterSetting/index.tsx new file mode 100644 index 0000000..1ae865f --- /dev/null +++ b/src/pages/System/ParameterSetting/index.tsx @@ -0,0 +1,244 @@ +import { PageContainer, ProCard, ProForm } from '@ant-design/pro-components'; +import React, { useEffect, useRef, useState } from 'react'; + +import { EditOutlined } from '@ant-design/icons'; +import { Button, Input, message, } from 'antd'; +import type { ActionType } from '@ant-design/pro-components'; +import styles from "./parameterSetting.less"; +import UpdateParameterForm from './components/UpdateParameterForm'; +import { FormattedMessage, useIntl } from '@umijs/max'; + + + + +/** + * @参数设置 + * @returns + */ +const ParameterSetting: React.FC = () => { + const intl = useIntl(); + const actionRef = useRef(); + const [updateParameterModalOpen, setUpdateParameterModalOpen] = useState(false); + const [currentRow, setCurrentRow] = useState(); + + const handleUpdateParameterModal = () => { + if (updateParameterModalOpen) { + setUpdateParameterModalOpen(false); + setCurrentRow(undefined); + } else { + setUpdateParameterModalOpen(true); + } + }; + + const [stateValue, setStateValue] = useState({}); + + return ( + + + + + } + style={{ + width: '50%' + }}> + +