From 7ec6df55402a9967e2d1657ddd3bbe735932cf7b Mon Sep 17 00:00:00 2001 From: zhoux Date: Tue, 14 Nov 2023 17:58:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BB=9F=E4=B8=80=E4=BD=BF=E7=94=A8tab?= =?UTF-8?q?leActionCard=E5=81=9A=E4=B8=BA=E5=88=97=E8=A1=A8=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E6=A0=8F=E7=BB=9F=E4=B8=80=E6=8E=A7=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/defaultForm.ts | 11 +- config/defaultTable.ts | 34 +- src/components/TableActionCard/index.tsx | 56 ++ src/global.css | 25 + src/global.less | 34 + src/locales/zh-CN/resource.ts | 10 +- .../ProjectList/components/MyCreateForm.tsx | 719 +++++++++--------- .../components/CreateForm.tsx | 12 +- .../components/UpdateForm.tsx | 220 ++++-- .../Resource/AlgorithmModelList/index.tsx | 136 ++-- .../components/CreateForm.tsx | 288 ++++--- .../components/UpdateForm.tsx | 327 ++++++-- .../Resource/BusinessImageList/index.tsx | 15 +- .../Resource/ModelCategoryList/index.tsx | 5 +- .../ModelImageList/components/CreateForm.tsx | 224 ++++-- .../ModelImageList/components/UpdateForm.tsx | 251 ++++-- src/pages/Resource/ModelImageList/index.tsx | 7 +- .../components/CreateForm.tsx | 253 ++++-- .../components/MyCreateForm.tsx | 558 ++++++++------ .../components/UpdateForm.tsx | 270 +++++-- src/pages/Resource/ModelVersionList/index.tsx | 178 +---- src/pages/Setting/AlgorithmSetting.tsx | 211 ++--- 22 files changed, 2459 insertions(+), 1385 deletions(-) create mode 100644 src/components/TableActionCard/index.tsx diff --git a/config/defaultForm.ts b/config/defaultForm.ts index b857697..0b3b4c6 100644 --- a/config/defaultForm.ts +++ b/config/defaultForm.ts @@ -1,3 +1,11 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-13 14:19:57 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-11-14 14:46:05 + * @FilePath: \general-ai-platform-web\config\defaultForm.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE2 + */ // 通用表单配置 @@ -7,7 +15,8 @@ export const proFormCommonOptions: Record = { // normal 804 export const proFormModelWidth: number = 804; export const proFormItemStyleProps: Record = { - width: proFormModelWidth - 30, + width: proFormModelWidth - 30, // 一列 + column2Width: (proFormModelWidth - 62)/2 , // 两列 }; // max 968 diff --git a/config/defaultTable.ts b/config/defaultTable.ts index 4928bf1..0f28d22 100644 --- a/config/defaultTable.ts +++ b/config/defaultTable.ts @@ -1,21 +1,35 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-13 11:32:26 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-11-14 16:20:49 + * @FilePath: \general-ai-platform-web\config\defaultTable.ts + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ import { ProColumns } from "@ant-design/pro-components"; // 通用列表配置 export const proTableCommonOptions: Record = { scrollX: 'max-content', // 保证左右侧列的固定,并能保证没列标题不换行 scrollY: 500, // 保证列表高度固定 commscrollX: 1300, + commscrollY: 500, // 保证列表高度固定 searchLabelWidth: 'auto', // 整体对齐,label根据实际字数自适应 } - -// 默认索引列配置 -export const proTableIndexColumnOptions : ProColumns = { - title: '序号', - dataIndex: 'index', - valueType: 'indexBorder', // 增加该属性以添加边框 - fixed: 'left', // 将该列固定在左侧 - width: 70, - align:'center' +// 操作栏位配置 +export const proTableActionColumnOptions: Record = { + dataIndex: 'option', + valueType: 'option', + align: 'center', + fixed: 'right', } - +// 默认索引列配置 +// export const proTableIndexColumnOptions : ProColumns = { +// title: '序号', +// dataIndex: 'index', +// valueType: 'index', // 增加该属性以添加边框 +// fixed: 'left', // 将该列固定在左侧 +// width: 70, +// align:'center' +// } \ No newline at end of file diff --git a/src/components/TableActionCard/index.tsx b/src/components/TableActionCard/index.tsx new file mode 100644 index 0000000..b57d5b7 --- /dev/null +++ b/src/components/TableActionCard/index.tsx @@ -0,0 +1,56 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-14 15:49:36 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-11-14 16:07:11 + * @FilePath: \general-ai-platform-web\src\components\TableActionCard\index.tsx + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ + +import { DownOutlined } from '@ant-design/icons'; +import { Dropdown } from 'antd'; +import React from 'react'; + +//TODO 表单的操作按钮集合 +type TableActionItemProps = { + renderActions: any[]; +}; + + const TableActionCard: React.FC = (props) => { + const { renderActions } = props; + const maxActionCount = 3; + if (renderActions.length <= maxActionCount) { + return renderActions.map((item) => { + return <>{item}; + }); + } + const prevActions: any[] = []; + const moreActions: { key: string; label: any }[] = []; + // eslint-disable-next-line array-callback-return + renderActions.map((item, index) => { + if (index < maxActionCount - 1) { + prevActions.push(item); + } else { + moreActions.push({ + key: index + '', + label: item, + }); + } + // eslint-disable-next-line react/jsx-key + }); + return ( + <> + {prevActions.map((item, index) => { + return
{item}
; + })} + + + 更多 + + + + + ); +}; + +export default TableActionCard \ No newline at end of file diff --git a/src/global.css b/src/global.css index 096ce7b..f436b67 100644 --- a/src/global.css +++ b/src/global.css @@ -115,3 +115,28 @@ ol { .ant-btn-link.ant-btn-dangerous { color: #E80D0D; } +.ant-menu-light .ant-menu-item-selected, +.ant-menu-light > .ant-menu .ant-menu-item-selected { + background-color: rgba(21, 91, 212, 0.1); +} +/* 表单 */ +.ant-form-item { + margin-bottom: 16px; +} +.ant-steps .ant-steps-item-finish .ant-steps-item-icon { + background-color: rgba(21, 91, 212, 0.1); + border-color: #155BD4; +} +.flex-cc { + display: flex; + align-items: center; + justify-content: center; +} +.flex-ac { + display: flex; + align-items: center; + justify-content: space-around; +} +.w100 { + width: 100%; +} diff --git a/src/global.less b/src/global.less index ab841ee..5839539 100644 --- a/src/global.less +++ b/src/global.less @@ -84,6 +84,7 @@ ol { .ant-table-cell .ant-btn.ant-btn-sm{ padding: 0; } +// 更多 .ant-pro-table-search .ant-form-item .ant-form-item-label{ text-align: left } @@ -139,3 +140,36 @@ ol { color: #E80D0D; } +.ant-menu-light .ant-menu-item-selected, .ant-menu-light>.ant-menu .ant-menu-item-selected { + // color: red; + background-color: rgba(#155BD4, 0.1); + +} + + +/* 表单 */ +.ant-form-item { + margin-bottom: 16px; +} +// 分步表单步骤条 +.ant-steps .ant-steps-item-finish .ant-steps-item-icon{ + background-color: rgba(#155BD4, 0.1); + border-color: #155BD4; +} +// .gn .ant-steps-item-finish .ant-steps-item-icon + +.flex-cc{ + display: flex; + align-items: center; + justify-content: center; +} + +.flex-ac{ + display: flex; + align-items: center; + justify-content: space-around; +} + +.w100{ + width: 100%; +} \ No newline at end of file diff --git a/src/locales/zh-CN/resource.ts b/src/locales/zh-CN/resource.ts index 69a82a1..788ed68 100644 --- a/src/locales/zh-CN/resource.ts +++ b/src/locales/zh-CN/resource.ts @@ -2,7 +2,7 @@ * @Author: zhoux zhouxia@supervision.ltd * @Date: 2023-11-01 13:56:33 * @LastEditors: zhoux zhouxia@supervision.ltd - * @LastEditTime: 2023-11-13 13:43:47 + * @LastEditTime: 2023-11-14 14:59:00 * @FilePath: \general-ai-platform-web\src\locales\zh-CN\resource.ts * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -16,6 +16,8 @@ export const algorithm_model: { [key: string]: string } = { 'resource.algorithm_model.table.list.updateTime': '更新时间', 'resource.algorithm_model.table.rule.required.name': '模型名称为必填项', 'resource.algorithm_model.table.rule.required.categoryFkId': '模型类别为必填项', + 'resource.algorithm_model.table.list.add': '新建模型', + 'resource.algorithm_model.table.list.update': '更新模型', }; export const business_image: { [key: string]: string } = { 'resource.business_image.table.list.id': 'ID', @@ -32,6 +34,8 @@ export const business_image: { [key: string]: string } = { 'resource.business_image.table.rule.required.name': '镜像名称为必填项', 'resource.business_image.table.rule.required.version': '镜像版本为必填项', 'resource.business_image.table.rule.required.projectFkId': '项目为必填项', + 'resource.business_image.table.list.add': '新建业务镜像', + 'resource.business_image.table.list.update': '更新业务镜像', }; export const model_category: { [key: string]: string } = { 'resource.model_category.table.list.id': 'ID', @@ -44,8 +48,6 @@ export const model_category: { [key: string]: string } = { 'resource.model_category.table.rule.required.code': '类别代码为必填项', 'resource.model_category.table.list.add': '新建模型类别', 'resource.model_category.table.list.update': '更新模型类别', - - }; export const model_image: { [key: string]: string } = { 'resource.model_image.table.list.id': 'ID', @@ -72,4 +74,6 @@ export const model_version: { [key: string]: string } = { 'resource.model_version.table.list.updateTime': '更新时间', 'resource.model_version.table.rule.required.modelFkId': '模型为必填项', 'resource.model_version.table.rule.required.path': '模型地址为必填项', + 'resource.model_version.table.list.add': '新建模型版本', + 'resource.model_version.table.list.update': '更新模型版本', }; diff --git a/src/pages/Project/ProjectList/components/MyCreateForm.tsx b/src/pages/Project/ProjectList/components/MyCreateForm.tsx index b70551d..cc87549 100644 --- a/src/pages/Project/ProjectList/components/MyCreateForm.tsx +++ b/src/pages/Project/ProjectList/components/MyCreateForm.tsx @@ -60,8 +60,6 @@ const waitTime = (time: number = 100) => { /**styles 配置 */ - - const MyCreateForm: React.FC = (props) => { const [treeData, setTreeData] = React.useState([]); const [modalData, setModalData] = useState([]); @@ -146,376 +144,391 @@ const MyCreateForm: React.FC = (props) => { }); }; return ( - - stepsProps={{ - labelPlacement: 'vertical', - }} - current={current} - onCurrentChange={setCurrent} - onFinish={async () => { - setFileList([]); - let formData = formRef.current?.getFieldsValue(); - if (formData?.name) { - formData.inferConfig = { models: targetKeys, params: configData?.params || [] }; - formData.groupIds = selectKeys; - formData.projectFilePath = filePath; - postProjectCreateProject(formData) - .then(() => { - message.success(intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' })); - props.handleModal(); - props.reload(); - }) - .catch(() => { - message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' })); - return false; - }); - } - return true; - }} - formProps={{ - validateMessages: { - required: '此项为必填项', - }, - }} - stepsFormRender={(dom, submitter) => { - return ( - { - setCurrent(0); - setFileList([]); - formRef.current?.resetFields(); - formRef3.current?.resetFields(); - props.handleModal(); - }} - open={props.createModalOpen} - footer={submitter} - destroyOnClose - > - {dom} - - ); - }} - > - {/* 创建项目数据 */} - + - name="base" - formRef={formRef} - title="创建项目数据" - stepProps={{ - description: '这里填入项目基本信息', - }} - onFinish={async () => { - // setFormData(formRef.current?.getFieldsValue()); - await waitTime(500); - return true; - }} - > - - } - placeholder={`${intl.formatMessage({ - id: 'common.please_input', - defaultMessage: '$$$', - })}${intl.formatMessage({ - id: 'project.project.table.list.name', - defaultMessage: '$$$', - })}`} - required={true} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> - } - placeholder={`${intl.formatMessage({ - id: 'common.please_input', - defaultMessage: '$$$', - })}${intl.formatMessage({ - id: 'project.project.table.list.code', - defaultMessage: '$$$', - })}`} - required={!isAuto} - initialValue="" - disabled={isAuto} - rules={ - isAuto - ? [] - : [ - { - required: true, - message: ( - - ), - }, - ] - } - addonAfter={ - } - unCheckedChildren={} - onChange={setIsAuto} - /> - } - /> - } - placeholder={`${intl.formatMessage({ - id: 'common.please_input', - defaultMessage: '$$$', - })}${intl.formatMessage({ - id: 'project.project.table.list.info', - defaultMessage: '$$$', - })}`} - required={true} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> - } - placeholder={`${intl.formatMessage({ - id: 'common.please_input', - defaultMessage: '$$$', - })}${intl.formatMessage({ - id: 'project.project.table.list.remark', - defaultMessage: '$$$', - })}`} - required={false} - /> - - - - } - initialValue={true} - /> - - - {/* 关联算法模型 */} - - name="model" - title="关联算法模型" - stepProps={{ - description: '选择算法模型', + stepsProps={{ + labelPlacement: 'vertical', }} + current={current} + onCurrentChange={setCurrent} onFinish={async () => { - return true; - }} - > - item.title} - /> - - {/* 上传业务代码 */} - - name="project_file" - title="上传业务代码" - style={{ width: proFormItemStyleProps.width }} - stepProps={{ - description: '上传业务代码格式为(.zip,.tar.gz)', - }} - onFinish={async (values: any) => { - if ('projectFilePath' in values && values['projectFilePath'].length > 0) { - let projectFilePath = values['projectFilePath'][0]?.response?.data?.path || ''; - setFilePath(projectFilePath); + setFileList([]); + let formData = formRef.current?.getFieldsValue(); + if (formData?.name) { + formData.inferConfig = { models: targetKeys, params: configData?.params || [] }; + formData.groupIds = selectKeys; + formData.projectFilePath = filePath; + postProjectCreateProject(formData) + .then(() => { + message.success( + intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' }), + ); + props.handleModal(); + props.reload(); + }) + .catch(() => { + message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' })); + return false; + }); } return true; }} - > - - - {/* 业务参数配置 */} - - name="config" - title="业务参数配置" - stepProps={{ - description: '业务参数配置', + formProps={{ + validateMessages: { + required: '此项为必填项', + }, }} - onFinish={async (values: any) => { - setConfigData(values); - return true; + stepsFormRender={(dom, submitter) => { + return ( + { + setCurrent(0); + setFileList([]); + formRef.current?.resetFields(); + formRef3.current?.resetFields(); + props.handleModal(); + }} + open={props.createModalOpen} + footer={submitter} + destroyOnClose + > + {dom} + + ); }} > - {/* */} - {/* TODO 图标需要替换 */} - - { - let index_ids = actionFormListRef.current?.getList()?.map((v, i) => { - return i; - }); - actionFormListRef.current?.remove(index_ids || []); - }, - beforeUpload: (file, fileList) => { - if ( - !file.name.endsWith('.yaml') && - !file.name.endsWith('.yml') && - !file.name.endsWith('.json') - ) { - message.error('请上传yaml或json文件').then(() => {}); - return false; - } else { - let parsedData = {}; - file - .text() - .then((text) => { - if (file.name.endsWith('.yaml') || file.name.endsWith('.yml')) { - parsedData = yaml.load(text) as Record; - } - if (file.name.endsWith('.json')) { - parsedData = JSON.parse(text) as Record; - } - if (Object.keys(parsedData).length > 0) { - dataFormListRef.current = Object.entries(parsedData).map(([key, value]) => ({ - name: key, - default: value, - })); - - dataFormListRef.current.forEach((v: any, i: number) => { - actionFormListRef.current?.add(v, i); - }); - } - return true; - }) - .catch(() => { - return false; - }); + {/* 创建项目数据 */} + + name="base" + formRef={formRef} + title="创建项目数据" + stepProps={{ + description: '这里填入项目基本信息', + }} + onFinish={async () => { + // setFormData(formRef.current?.getFieldsValue()); + await waitTime(500); + return true; + }} + > + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'project.project.table.list.name', + defaultMessage: '$$$', + })}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'project.project.table.list.code', + defaultMessage: '$$$', + })}`} + required={!isAuto} + initialValue="" + disabled={isAuto} + rules={ + isAuto + ? [] + : [ + { + required: true, + message: ( + + ), + }, + ] + } + addonAfter={ + } + unCheckedChildren={} + onChange={setIsAuto} + /> + } + /> + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'project.project.table.list.info', + defaultMessage: '$$$', + })}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'project.project.table.list.remark', + defaultMessage: '$$$', + })}`} + required={false} + /> + + + } - }, + initialValue={true} + /> + + + {/* 关联算法模型 */} + + name="model" + title="关联算法模型" + stepProps={{ + description: '选择算法模型', }} - /> - { + return true; + }} + > + item.title} + /> + + {/* 上传业务代码 */} + + name="project_file" + title="上传业务代码" style={{ width: proFormItemStyleProps.width }} - actionRef={actionFormListRef} - copyIconProps={{ - Icon: SnippetsOutlined, + stepProps={{ + description: '上传业务代码格式为(.zip,.tar.gz)', }} - deleteIconProps={{ - Icon: CloseOutlined, + onFinish={async (values: any) => { + if ('projectFilePath' in values && values['projectFilePath'].length > 0) { + let projectFilePath = values['projectFilePath'][0]?.response?.data?.path || ''; + setFilePath(projectFilePath); + } + return true; }} - name="params" - label="模型参数" > - {(f, index, action) => { - return ( - - - - - - + + + {/* 业务参数配置 */} + + name="config" + title="业务参数配置" + stepProps={{ + description: '业务参数配置', + }} + onFinish={async (values: any) => { + setConfigData(values); + return true; + }} + > + {/* */} + {/* TODO 图标需要替换 */} + + { + let index_ids = actionFormListRef.current?.getList()?.map((v, i) => { + return i; + }); + actionFormListRef.current?.remove(index_ids || []); + }, + beforeUpload: (file, fileList) => { + if ( + !file.name.endsWith('.yaml') && + !file.name.endsWith('.yml') && + !file.name.endsWith('.json') + ) { + message.error('请上传yaml或json文件').then(() => {}); + return false; + } else { + let parsedData = {}; + file + .text() + .then((text) => { + if (file.name.endsWith('.yaml') || file.name.endsWith('.yml')) { + parsedData = yaml.load(text) as Record; + } + if (file.name.endsWith('.json')) { + parsedData = JSON.parse(text) as Record; + } + if (Object.keys(parsedData).length > 0) { + dataFormListRef.current = Object.entries(parsedData).map( + ([key, value]) => ({ + name: key, + default: value, + }), + ); + + dataFormListRef.current.forEach((v: any, i: number) => { + actionFormListRef.current?.add(v, i); + }); + } + return true; + }) + .catch(() => { + return false; + }); + } + }, + }} + /> + + {(f, index, action) => { + return ( + + + + + + + - - ); + ); + }} + + + {/* 关联网点 */} + + name="group" + title="关联网点" + stepProps={{ + description: '选择网点', }} - - - {/* 关联网点 */} - - name="group" - title="关联网点" - stepProps={{ - description: '选择网点', - }} - onFinish={async () => { - return true; - }} - style={{ width: proFormItemStyleProps.width }} - formRef={formRef3} - > -
{'选择网点'}
- { - // form.setFieldsValue({menuIds: checkedKeys}) - setSelectKeys(checkedKeys); - // formRef3.current?.setFieldValue('groupIds', checkedKeys) + + onFinish={async () => { + return true; }} - treeData={treeData} - // loadData={({treeNode}) => { - // return treeData - // }} - /> - - + style={{ width: proFormItemStyleProps.width }} + formRef={formRef3} + > +
{'选择网点'}
+ { + // form.setFieldsValue({menuIds: checkedKeys}) + setSelectKeys(checkedKeys); + // formRef3.current?.setFieldValue('groupIds', checkedKeys) + }} + treeData={treeData} + // loadData={({treeNode}) => { + // return treeData + // }} + /> + + + ); }; export default MyCreateForm; diff --git a/src/pages/Resource/AlgorithmModelList/components/CreateForm.tsx b/src/pages/Resource/AlgorithmModelList/components/CreateForm.tsx index ff9a4c9..9ce7e65 100644 --- a/src/pages/Resource/AlgorithmModelList/components/CreateForm.tsx +++ b/src/pages/Resource/AlgorithmModelList/components/CreateForm.tsx @@ -2,7 +2,7 @@ * @Author: zhoux zhouxia@supervision.ltd * @Date: 2023-11-01 13:56:33 * @LastEditors: zhoux zhouxia@supervision.ltd - * @LastEditTime: 2023-11-02 14:01:29 + * @LastEditTime: 2023-11-14 14:57:12 * @FilePath: \general-ai-platform-web\src\pages\Resource\AlgorithmModelList\components\CreateForm.tsx * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -12,6 +12,7 @@ import { ModalForm, ProForm, ProFormSelect, ProFormText } from '@ant-design/pro- import { FormattedMessage, useIntl } from '@umijs/max'; import { Form, message } from 'antd'; import React from 'react'; +import { proFormItemStyleProps, proFormModelWidth } from '../../../../../config/defaultForm'; export type FormValueType = { target?: string; template?: string; @@ -32,8 +33,9 @@ const CreateForm: React.FC = (props) => { return ( + width={proFormModelWidth} title={intl.formatMessage({ - id: 'common.modal.table.create.title', + id: 'resource.algorithm_model.table.list.add', defaultMessage: '$$$', })} open={props.createModalOpen} @@ -59,7 +61,7 @@ const CreateForm: React.FC = (props) => { > @@ -85,7 +87,7 @@ const CreateForm: React.FC = (props) => { ]} /> = (props) => { }} /> ; + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; - export type UpdateFormProps = { - updateModalOpen: boolean; - handleModal: () => void; - values: Partial; - reload: any; - }; +export type UpdateFormProps = { + updateModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; const UpdateForm: React.FC = (props) => { - const intl = useIntl(); const [form] = Form.useForm(); return ( title={intl.formatMessage({ - id: 'common.modal.table.update.title', + id: 'resource.algorithm_model.table.list.update', defaultMessage: '$$$', })} open={props.updateModalOpen} @@ -38,46 +43,149 @@ const UpdateForm: React.FC = (props) => { }} submitTimeout={2000} onFinish={async (values) => { - putAlgorithmModelUpdateAlgorithmModel(values).then(()=>{ - message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) - props.reload() - }).catch(()=>{ - message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) - }) + putAlgorithmModelUpdateAlgorithmModel(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.algorithm_model.table.list.name', defaultMessage: '$$$'})}`} required={true} initialValue={props.values.name} disabled={false} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} + + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.algorithm_model.table.list.name', + defaultMessage: '$$$', + })}`} + required={true} + initialValue={props.values.name} + disabled={false} + rules={[ + { + required: true, + message: ( + -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.algorithm_model.table.list.categoryFkId', defaultMessage: '$$$'})}`} required={true} initialValue={props.values.categoryFkId} showSearch debounceTime={1000} request={async (keyWord)=>{ - const resp = await postModelCategoryGetModelCategoryFkSelect({keyword: keyWord?.keyWords || ''}) - return resp.data.list.map((v: any)=>{ - return { - label: v.name, - value: v.id - } - }) - } - }/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.algorithm_model.table.list.remark', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.remark} disabled={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.algorithm_model.table.list.createTime', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.createTime} disabled={true}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.algorithm_model.table.list.updateTime', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.updateTime} disabled={true}/> - -)} + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.algorithm_model.table.list.categoryFkId', + defaultMessage: '$$$', + })}`} + required={true} + initialValue={props.values.categoryFkId} + showSearch + debounceTime={1000} + request={async (keyWord) => { + const resp = await postModelCategoryGetModelCategoryFkSelect({ + keyword: keyWord?.keyWords || '', + }); + return resp.data.list.map((v: any) => { + return { + label: v.name, + value: v.id, + }; + }); + }} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.algorithm_model.table.list.remark', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.remark} + disabled={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.algorithm_model.table.list.createTime', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.createTime} + disabled={true} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.algorithm_model.table.list.updateTime', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.updateTime} + disabled={true} + /> + + + ); +}; export default UpdateForm; diff --git a/src/pages/Resource/AlgorithmModelList/index.tsx b/src/pages/Resource/AlgorithmModelList/index.tsx index 8f266de..afc1e0a 100644 --- a/src/pages/Resource/AlgorithmModelList/index.tsx +++ b/src/pages/Resource/AlgorithmModelList/index.tsx @@ -1,3 +1,4 @@ +import TableActionCard from '@/components/TableActionCard'; import { ColumnDrawer as ModelCategoryColumnDrawer } from '@/pages/Resource/ModelCategoryList/components/ColumnDrawer'; import { ModelCategoryColumns } from '@/pages/Resource/ModelCategoryList/components/Columns'; import { @@ -12,13 +13,16 @@ import { } from '@/services/resource/ModelCategory'; import { ExclamationCircleOutlined, PlusOutlined } from '@ant-design/icons'; import type { ActionType, ProColumns } from '@ant-design/pro-components'; -import { PageContainer, ProFormSelect, ProFormText, ProTable } from '@ant-design/pro-components'; +import { PageContainer, ProFormSelect, ProTable } from '@ant-design/pro-components'; import { Access, FormattedMessage, history, useAccess, useIntl } from '@umijs/max'; import { Button, Modal, Popconfirm, message } from 'antd'; import React, { useRef, useState } from 'react'; -import { proTableCommonOptions, proTableIndexColumnOptions } from '../../../../config/defaultTable'; +import { proTableCommonOptions } from '../../../../config/defaultTable'; import CreateForm from './components/CreateForm'; import UpdateForm from './components/UpdateForm'; +// import TablePaginationCard, { TablePaginationCardProps } from '@/components/TablePaginationCard'; + + const AlgorithmModelList: React.FC = () => { /** @@ -117,7 +121,13 @@ const AlgorithmModelList: React.FC = () => { const columns: ProColumns[] = [ { - ...proTableIndexColumnOptions, + title: ( + + ), + dataIndex: 'name', + hideInSearch: true, + key: 'fixedName', + fixed: 'left', }, { title: , @@ -136,17 +146,7 @@ const AlgorithmModelList: React.FC = () => { ); }, - //update 默认使用renderFormItem update1101 }, - - { - title: ( - - ), - dataIndex: 'name', - hideInSearch: true, - }, - { title: ( { { dataIndex: 'option', valueType: 'option', fixed: 'right', + // width: 140, render: (_, record) => [ - - - - {/* update1101 */} - { - handleDestroy(record).then(() => {}); - }} - > - - - , + // + // eslint-disable-next-line react/jsx-key + { + setCurrentRow(record); + doToDetail(record); + // setShowDetail(true); + }} + > + 详情 + , + , + { + handleDestroy(record).then(() => {}); + }} + > + + , + ]} + >, + // , ], }, ]; @@ -314,7 +320,7 @@ const AlgorithmModelList: React.FC = () => { id: 'pages.searchTable.title', defaultMessage: '$$$', })} - scroll={{ y: proTableCommonOptions.scrollY, x: proTableCommonOptions.commscrollX }} + scroll={{ y: proTableCommonOptions.commscrollY, x: proTableCommonOptions.commscrollX }} options={{ fullScreen: true, setting: true, density: true, reload: true }} actionRef={actionRef} rowKey="key" @@ -329,9 +335,17 @@ const AlgorithmModelList: React.FC = () => { }} pagination={{ showSizeChanger: true, + // showQuickJumper: true, pageSize: currentPageSize, onChange: (page, pageSize) => setCurrentPageSize(pageSize), + showTotal: (total) => `共${total}条`, + // pageSize: 10, + // showSizeChanger: true, + // pageSizeOptions: ['10', '20', '30', '40'], }} + // components={{ + // pagination: TablePaginationCard as React.FC, + // }} columnsState={{ persistenceKey: 'algorithm_model_list', persistenceType: 'localStorage', diff --git a/src/pages/Resource/BusinessImageList/components/CreateForm.tsx b/src/pages/Resource/BusinessImageList/components/CreateForm.tsx index d1327a9..f147552 100644 --- a/src/pages/Resource/BusinessImageList/components/CreateForm.tsx +++ b/src/pages/Resource/BusinessImageList/components/CreateForm.tsx @@ -1,95 +1,209 @@ -import {ModalForm,ProForm} from '@ant-design/pro-components';import {ProFormText} from '@ant-design/pro-components';import {ProFormSelect} from '@ant-design/pro-components'; -import {FormattedMessage, useIntl} from '@umijs/max'; -import {postProjectGetProjectFkSelect} from "@/services/project/Project"; -import {postBusinessImageCreateBusinessImage} from "@/services/resource/BusinessImage"; -import React, {useState} from 'react'; -import {Button, Form, message} from 'antd'; +import { postProjectGetProjectFkSelect } from '@/services/project/Project'; +import { postBusinessImageCreateBusinessImage } from '@/services/resource/BusinessImage'; +import { ModalForm, ProForm, ProFormSelect, ProFormText } from '@ant-design/pro-components'; +import { FormattedMessage, useIntl } from '@umijs/max'; +import { 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; + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; - export type CreateFormProps = { - createModalOpen: boolean; - handleModal: ()=>void; - values: Partial; - reload: any; - }; +export type CreateFormProps = { + createModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; const CreateForm: React.FC = (props) => { + const intl = useIntl(); + const [form] = Form.useForm(); - const intl = useIntl(); - const [form] = Form.useForm(); - - return ( - - title={intl.formatMessage({ - id: 'common.modal.table.create.title', - 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: '$$$'})) - }) + return ( + + width={proFormModelWidth} + title={intl.formatMessage({ + id: 'resource.business_image.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; }} - > - - -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.name', defaultMessage: '$$$'})}`} required={true} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.version', defaultMessage: '$$$'})}`} required={true} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.projectFkId', defaultMessage: '$$$'})}`} required={true} showSearch debounceTime={1000} request={async (keyWord)=>{ - const resp = await postProjectGetProjectFkSelect({keyword: keyWord?.keyWords || ''}) - return resp.data.list.map((v: any)=>{ - return { - label: v.name, - value: v.id - } - }) - } - }/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.path', defaultMessage: '$$$'})}`} required={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.startCode', defaultMessage: '$$$'})}`} required={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.configHash', defaultMessage: '$$$'})}`} required={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.remark', defaultMessage: '$$$'})}`} required={false}/> - -)} + > + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.name', + defaultMessage: '$$$', + })}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.version', + defaultMessage: '$$$', + })}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.projectFkId', + defaultMessage: '$$$', + })}`} + required={true} + showSearch + debounceTime={1000} + request={async (keyWord) => { + const resp = await postProjectGetProjectFkSelect({ keyword: keyWord?.keyWords || '' }); + return resp.data.list.map((v: any) => { + return { + label: v.name, + value: v.id, + }; + }); + }} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.path', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.startCode', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.configHash', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.remark', + defaultMessage: '$$$', + })}`} + required={false} + /> + + + ); +}; export default CreateForm; diff --git a/src/pages/Resource/BusinessImageList/components/UpdateForm.tsx b/src/pages/Resource/BusinessImageList/components/UpdateForm.tsx index 248f73d..961d058 100644 --- a/src/pages/Resource/BusinessImageList/components/UpdateForm.tsx +++ b/src/pages/Resource/BusinessImageList/components/UpdateForm.tsx @@ -1,32 +1,47 @@ -import {ModalForm,ProForm} from '@ant-design/pro-components';import {ProFormText} from '@ant-design/pro-components';import {ProFormSelect} from '@ant-design/pro-components';import {ProFormDateTimePicker} from '@ant-design/pro-components'; -import {FormattedMessage, useIntl} from '@umijs/max'; -import {postProjectGetProjectFkSelect} from "@/services/project/Project"; -import {putBusinessImageUpdateBusinessImage} from "@/services/resource/BusinessImage"; -import React, {useState} from 'react'; -import {Button, Form, message} from 'antd'; +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-01 13:56:33 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-11-14 14:50:08 + * @FilePath: \general-ai-platform-web\src\pages\Resource\BusinessImageList\components\UpdateForm.tsx + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import { postProjectGetProjectFkSelect } from '@/services/project/Project'; +import { putBusinessImageUpdateBusinessImage } from '@/services/resource/BusinessImage'; +import { + ModalForm, + ProForm, + ProFormDateTimePicker, + ProFormSelect, + ProFormText, +} from '@ant-design/pro-components'; +import { FormattedMessage, useIntl } from '@umijs/max'; +import { 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; + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; - export type UpdateFormProps = { - updateModalOpen: boolean; - handleModal: () => void; - values: Partial; - reload: any; - }; +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: 'common.modal.table.update.title', + id: 'resource.business_image.table.list.update', defaultMessage: '$$$', })} open={props.updateModalOpen} @@ -38,62 +53,232 @@ const UpdateForm: React.FC = (props) => { }} 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: '$$$'})) - }) + 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.business_image.table.list.name', defaultMessage: '$$$'})}`} required={true} initialValue={props.values.name} disabled={false} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} + + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.name', + defaultMessage: '$$$', + })}`} + required={true} + initialValue={props.values.name} + disabled={false} + rules={[ + { + required: true, + message: ( + -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.version', defaultMessage: '$$$'})}`} required={true} initialValue={props.values.version} disabled={false} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.version', + defaultMessage: '$$$', + })}`} + required={true} + initialValue={props.values.version} + disabled={false} + rules={[ + { + required: true, + message: ( + -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.projectFkId', defaultMessage: '$$$'})}`} required={true} initialValue={props.values.projectFkId} showSearch debounceTime={1000} request={async (keyWord)=>{ - const resp = await postProjectGetProjectFkSelect({keyword: keyWord?.keyWords || ''}) - return resp.data.list.map((v: any)=>{ - return { - label: v.name, - value: v.id - } - }) - } - }/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.path', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.path} disabled={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.startCode', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.startCode} disabled={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.configHash', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.configHash} disabled={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.remark', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.remark} disabled={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.createTime', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.createTime} disabled={true}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.business_image.table.list.updateTime', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.updateTime} disabled={true}/> - -)} + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.projectFkId', + defaultMessage: '$$$', + })}`} + required={true} + initialValue={props.values.projectFkId} + showSearch + debounceTime={1000} + request={async (keyWord) => { + const resp = await postProjectGetProjectFkSelect({ keyword: keyWord?.keyWords || '' }); + return resp.data.list.map((v: any) => { + return { + label: v.name, + value: v.id, + }; + }); + }} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.path', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.path} + disabled={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.startCode', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.startCode} + disabled={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.configHash', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.configHash} + disabled={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.remark', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.remark} + disabled={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.createTime', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.createTime} + disabled={true} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.business_image.table.list.updateTime', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.updateTime} + disabled={true} + /> + + + ); +}; export default UpdateForm; diff --git a/src/pages/Resource/BusinessImageList/index.tsx b/src/pages/Resource/BusinessImageList/index.tsx index 9fdf58c..c43ce15 100644 --- a/src/pages/Resource/BusinessImageList/index.tsx +++ b/src/pages/Resource/BusinessImageList/index.tsx @@ -19,7 +19,7 @@ import React, { useRef, useState } from 'react'; import { ColumnDrawer } from './components/ColumnDrawer'; import CreateForm from './components/CreateForm'; import UpdateForm from './components/UpdateForm'; -import { proTableCommonOptions, proTableIndexColumnOptions } from '../../../../config/defaultTable'; +import { proTableCommonOptions } from '../../../../config/defaultTable'; const BusinessImageList: React.FC = () => { /** * @en-US Pop-up window of new window @@ -111,7 +111,11 @@ const BusinessImageList: React.FC = () => { const columns: ProColumns[] = [ { - ...proTableIndexColumnOptions + title: , + dataIndex: 'name', + hideInSearch: true, + key: 'fixedName', + fixed: 'left', }, { title: , @@ -131,13 +135,6 @@ const BusinessImageList: React.FC = () => { ); }, }, - - { - title: , - dataIndex: 'name', - hideInSearch: true, - }, - { title: ( diff --git a/src/pages/Resource/ModelCategoryList/index.tsx b/src/pages/Resource/ModelCategoryList/index.tsx index dd35d18..84b5c7c 100644 --- a/src/pages/Resource/ModelCategoryList/index.tsx +++ b/src/pages/Resource/ModelCategoryList/index.tsx @@ -12,6 +12,7 @@ import React, { useRef, useState } from 'react'; import { ColumnDrawer } from './components/ColumnDrawer'; import CreateForm from './components/CreateForm'; import UpdateForm from './components/UpdateForm'; +import { proTableCommonOptions } from '../../../../config/defaultTable'; const ModelCategoryList: React.FC = () => { /** * @en-US Pop-up window of new window @@ -181,9 +182,9 @@ const ModelCategoryList: React.FC = () => { actionRef={actionRef} rowKey="key" search={{ - labelWidth: 120, + labelWidth: proTableCommonOptions.searchLabelWidth, }} - onDataSourceChange={(data) => {}} + onDataSourceChange={() => {}} pagination={{ showSizeChanger: true, pageSize: 10, diff --git a/src/pages/Resource/ModelImageList/components/CreateForm.tsx b/src/pages/Resource/ModelImageList/components/CreateForm.tsx index 7249962..e085744 100644 --- a/src/pages/Resource/ModelImageList/components/CreateForm.tsx +++ b/src/pages/Resource/ModelImageList/components/CreateForm.tsx @@ -1,81 +1,159 @@ -import {ModalForm,ProForm} from '@ant-design/pro-components';import {ProFormText} from '@ant-design/pro-components';import {ProFormSelect} from '@ant-design/pro-components'; -import {FormattedMessage, useIntl} from '@umijs/max'; -import {postModelVersionGetModelVersionFkSelect} from "@/services/resource/ModelVersion"; -import {postModelImageCreateModelImage} from "@/services/resource/ModelImage"; -import React, {useState} from 'react'; -import {Button, Form, message} from 'antd'; +import { postModelImageCreateModelImage } from '@/services/resource/ModelImage'; +import { postModelVersionGetModelVersionFkSelect } from '@/services/resource/ModelVersion'; +import { ModalForm, ProForm, ProFormSelect, ProFormText } from '@ant-design/pro-components'; +import { FormattedMessage, useIntl } from '@umijs/max'; +import { Form, message } from 'antd'; +import React from 'react'; export type FormValueType = { - target?: string; - template?: string; - type?: string; - time?: string; - frequency?: string; - } & Partial; + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; - export type CreateFormProps = { - createModalOpen: boolean; - handleModal: ()=>void; - values: Partial; - reload: any; - }; +export type CreateFormProps = { + createModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; const CreateForm: React.FC = (props) => { + const intl = useIntl(); + const [form] = Form.useForm(); - const intl = useIntl(); - const [form] = Form.useForm(); - - return ( - - title={intl.formatMessage({ - id: 'common.modal.table.create.title', - defaultMessage: '$$$', - })} - open={props.createModalOpen} - form={form} - autoFocusFirstInput - modalProps={{ - destroyOnClose: true, - onCancel: () => props.handleModal(), - }} - submitTimeout={2000} - onFinish={async (values) => { - postModelImageCreateModelImage(values).then(()=>{ - message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) - props.reload() - }).catch(()=>{ - message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) - }) + return ( + + title={intl.formatMessage({ + id: 'common.modal.table.create.title', + defaultMessage: '$$$', + })} + open={props.createModalOpen} + form={form} + autoFocusFirstInput + modalProps={{ + destroyOnClose: true, + onCancel: () => props.handleModal(), + }} + submitTimeout={2000} + onFinish={async (values) => { + postModelImageCreateModelImage(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.model_image.table.list.name', defaultMessage: '$$$'})}`} required={true} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_image.table.list.modelVersionFkId', defaultMessage: '$$$'})}`} required={true} showSearch debounceTime={1000} request={async (keyWord)=>{ - const resp = await postModelVersionGetModelVersionFkSelect({keyword: keyWord?.keyWords || ''}) - return resp.data.list.map((v: any)=>{ - return { - label: v.name, - value: v.id - } - }) - } - }/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_image.table.list.path', defaultMessage: '$$$'})}`} required={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_image.table.list.startCode', defaultMessage: '$$$'})}`} required={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_image.table.list.remark', defaultMessage: '$$$'})}`} required={false}/> - -)} + > + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.name', + defaultMessage: '$$$', + })}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.modelVersionFkId', + defaultMessage: '$$$', + })}`} + required={true} + showSearch + debounceTime={1000} + request={async (keyWord) => { + const resp = await postModelVersionGetModelVersionFkSelect({ + keyword: keyWord?.keyWords || '', + }); + return resp.data.list.map((v: any) => { + return { + label: v.name, + value: v.id, + }; + }); + }} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.path', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.startCode', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.remark', + defaultMessage: '$$$', + })}`} + required={false} + /> + + + ); +}; export default CreateForm; diff --git a/src/pages/Resource/ModelImageList/components/UpdateForm.tsx b/src/pages/Resource/ModelImageList/components/UpdateForm.tsx index 3ecee1e..ee2d4ea 100644 --- a/src/pages/Resource/ModelImageList/components/UpdateForm.tsx +++ b/src/pages/Resource/ModelImageList/components/UpdateForm.tsx @@ -1,25 +1,30 @@ -import {ModalForm,ProForm} from '@ant-design/pro-components';import {ProFormText} from '@ant-design/pro-components';import {ProFormSelect} from '@ant-design/pro-components';import {ProFormDateTimePicker} from '@ant-design/pro-components'; -import {FormattedMessage, useIntl} from '@umijs/max'; -import {postModelVersionGetModelVersionFkSelect} from "@/services/resource/ModelVersion"; -import {putModelImageUpdateModelImage} from "@/services/resource/ModelImage"; -import React, {useState} from 'react'; -import {Button, Form, message} from 'antd'; +import { putModelImageUpdateModelImage } from '@/services/resource/ModelImage'; +import { postModelVersionGetModelVersionFkSelect } from '@/services/resource/ModelVersion'; +import { + ModalForm, + ProForm, + ProFormDateTimePicker, + ProFormSelect, + ProFormText, +} from '@ant-design/pro-components'; +import { FormattedMessage, useIntl } from '@umijs/max'; +import { Form, message } from 'antd'; +import React from 'react'; export type FormValueType = { - target?: string; - template?: string; - type?: string; - time?: string; - frequency?: string; - } & Partial; + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; - export type UpdateFormProps = { - updateModalOpen: boolean; - handleModal: () => void; - values: Partial; - reload: any; - }; +export type UpdateFormProps = { + updateModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; const UpdateForm: React.FC = (props) => { - const intl = useIntl(); const [form] = Form.useForm(); @@ -38,48 +43,180 @@ const UpdateForm: React.FC = (props) => { }} submitTimeout={2000} onFinish={async (values) => { - putModelImageUpdateModelImage(values).then(()=>{ - message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) - props.reload() - }).catch(()=>{ - message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) - }) + putModelImageUpdateModelImage(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.model_image.table.list.name', defaultMessage: '$$$'})}`} required={true} initialValue={props.values.name} disabled={false} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} + + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.name', + defaultMessage: '$$$', + })}`} + required={true} + initialValue={props.values.name} + disabled={false} + rules={[ + { + required: true, + message: ( + -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_image.table.list.modelVersionFkId', defaultMessage: '$$$'})}`} required={true} initialValue={props.values.modelVersionFkId} showSearch debounceTime={1000} request={async (keyWord)=>{ - const resp = await postModelVersionGetModelVersionFkSelect({keyword: keyWord?.keyWords || ''}) - return resp.data.list.map((v: any)=>{ - return { - label: v.name, - value: v.id - } - }) - } - }/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_image.table.list.path', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.path} disabled={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_image.table.list.startCode', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.startCode} disabled={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_image.table.list.remark', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.remark} disabled={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_image.table.list.createTime', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.createTime} disabled={true}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_image.table.list.updateTime', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.updateTime} disabled={true}/> - -)} + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.modelVersionFkId', + defaultMessage: '$$$', + })}`} + required={true} + initialValue={props.values.modelVersionFkId} + showSearch + debounceTime={1000} + request={async (keyWord) => { + const resp = await postModelVersionGetModelVersionFkSelect({ + keyword: keyWord?.keyWords || '', + }); + return resp.data.list.map((v: any) => { + return { + label: v.name, + value: v.id, + }; + }); + }} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.path', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.path} + disabled={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.startCode', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.startCode} + disabled={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.remark', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.remark} + disabled={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.createTime', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.createTime} + disabled={true} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_image.table.list.updateTime', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.updateTime} + disabled={true} + /> + + + ); +}; export default UpdateForm; diff --git a/src/pages/Resource/ModelImageList/index.tsx b/src/pages/Resource/ModelImageList/index.tsx index 4df884c..c19e849 100644 --- a/src/pages/Resource/ModelImageList/index.tsx +++ b/src/pages/Resource/ModelImageList/index.tsx @@ -19,6 +19,7 @@ import React, { useRef, useState } from 'react'; import { ColumnDrawer } from './components/ColumnDrawer'; import CreateForm from './components/CreateForm'; import UpdateForm from './components/UpdateForm'; +import { proTableCommonOptions } from '../../../../config/defaultTable'; const ModelImageList: React.FC = () => { /** @@ -285,11 +286,9 @@ const ModelImageList: React.FC = () => { options={{ fullScreen: true, setting: true, density: true, reload: true }} actionRef={actionRef} rowKey="key" - scroll={{ - x: 1300, - }} + scroll={{ y: proTableCommonOptions.commscrollY, x: proTableCommonOptions.commscrollX }} search={{ - labelWidth: 120, + labelWidth: proTableCommonOptions.searchLabelWidth, }} onDataSourceChange={(data) => { let ModelVersionFkIdIds: any = data.map((v) => { diff --git a/src/pages/Resource/ModelVersionList/components/CreateForm.tsx b/src/pages/Resource/ModelVersionList/components/CreateForm.tsx index af13ced..aba1cf8 100644 --- a/src/pages/Resource/ModelVersionList/components/CreateForm.tsx +++ b/src/pages/Resource/ModelVersionList/components/CreateForm.tsx @@ -1,82 +1,187 @@ -import {ModalForm,ProForm} from '@ant-design/pro-components';import {ProFormSelect} from '@ant-design/pro-components';import {ProFormText} from '@ant-design/pro-components';import {ProFormSwitch} from '@ant-design/pro-components'; -import {FormattedMessage, useIntl} from '@umijs/max'; -import {postAlgorithmModelGetAlgorithmModelFkSelect} from "@/services/resource/AlgorithmModel"; -import {postModelVersionCreateModelVersion} from "@/services/resource/ModelVersion"; -import React, {useState} from 'react'; -import {Button, Form, message} from 'antd'; +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-01 13:56:33 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-11-14 15:29:30 + * @FilePath: \general-ai-platform-web\src\pages\Resource\ModelVersionList\components\CreateForm.tsx + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import { postAlgorithmModelGetAlgorithmModelFkSelect } from '@/services/resource/AlgorithmModel'; +import { postModelVersionCreateModelVersion } from '@/services/resource/ModelVersion'; +import { + ModalForm, + ProForm, + ProFormSelect, + ProFormSwitch, + ProFormText, +} from '@ant-design/pro-components'; +import { FormattedMessage, useIntl } from '@umijs/max'; +import { Form, message } from 'antd'; +import React from 'react'; export type FormValueType = { - target?: string; - template?: string; - type?: string; - time?: string; - frequency?: string; - } & Partial; + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; - export type CreateFormProps = { - createModalOpen: boolean; - handleModal: ()=>void; - values: Partial; - reload: any; - }; +export type CreateFormProps = { + createModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; const CreateForm: React.FC = (props) => { + const intl = useIntl(); + const [form] = Form.useForm(); - const intl = useIntl(); - const [form] = Form.useForm(); - - return ( - - title={intl.formatMessage({ - id: 'common.modal.table.create.title', - defaultMessage: '$$$', - })} - open={props.createModalOpen} - form={form} - autoFocusFirstInput - modalProps={{ - destroyOnClose: true, - onCancel: () => props.handleModal(), - }} - submitTimeout={2000} - onFinish={async (values) => { - postModelVersionCreateModelVersion(values).then(()=>{ - message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) - props.reload() - }).catch(()=>{ - message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) - }) + return ( + + title={intl.formatMessage({ + id: 'resource.model_version.table.list.add', + defaultMessage: '$$$', + })} + open={props.createModalOpen} + form={form} + autoFocusFirstInput + modalProps={{ + destroyOnClose: true, + onCancel: () => props.handleModal(), + }} + submitTimeout={2000} + onFinish={async (values) => { + postModelVersionCreateModelVersion(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.model_version.table.list.modelFkId', defaultMessage: '$$$'})}`} required={true} showSearch debounceTime={1000} request={async (keyWord)=>{ - const resp = await postAlgorithmModelGetAlgorithmModelFkSelect({keyword: keyWord?.keyWords || ''}) - return resp.data.list.map((v: any)=>{ - return { - label: v.name, - value: v.id - } - }) - } - }/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.version', defaultMessage: '$$$'})}`} required={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.path', defaultMessage: '$$$'})}`} required={true} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.startCode', defaultMessage: '$$$'})}`} required={false}/> -} initialValue={true}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.remark', defaultMessage: '$$$'})}`} required={false}/> - -)} + > + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.modelFkId', + defaultMessage: '$$$', + })}`} + required={true} + showSearch + debounceTime={1000} + request={async (keyWord) => { + const resp = await postAlgorithmModelGetAlgorithmModelFkSelect({ + keyword: keyWord?.keyWords || '', + }); + return resp.data.list.map((v: any) => { + return { + label: v.name, + value: v.id, + }; + }); + }} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.version', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.path', + defaultMessage: '$$$', + })}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.startCode', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + initialValue={true} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.remark', + defaultMessage: '$$$', + })}`} + required={false} + /> + + + ); +}; export default CreateForm; diff --git a/src/pages/Resource/ModelVersionList/components/MyCreateForm.tsx b/src/pages/Resource/ModelVersionList/components/MyCreateForm.tsx index 37e087a..288c72f 100644 --- a/src/pages/Resource/ModelVersionList/components/MyCreateForm.tsx +++ b/src/pages/Resource/ModelVersionList/components/MyCreateForm.tsx @@ -1,3 +1,13 @@ +/* + * @Author: zhoux zhouxia@supervision.ltd + * @Date: 2023-11-01 13:56:33 + * @LastEditors: zhoux zhouxia@supervision.ltd + * @LastEditTime: 2023-11-14 15:29:42 + * @FilePath: \general-ai-platform-web\src\pages\Resource\ModelVersionList\components\MyCreateForm.tsx + * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE + */ +import { postAlgorithmModelGetAlgorithmModelFkSelect } from '@/services/resource/AlgorithmModel'; +import { postModelVersionCreateModelVersion } from '@/services/resource/ModelVersion'; import { ProForm, ProFormInstance, @@ -6,40 +16,37 @@ import { ProFormSwitch, ProFormText, ProFormUploadDragger, - StepsForm + StepsForm, } from '@ant-design/pro-components'; -import {FormattedMessage, useIntl} from '@umijs/max'; -import {postAlgorithmModelGetAlgorithmModelFkSelect} from "@/services/resource/AlgorithmModel"; -import {postModelVersionCreateModelVersion} from "@/services/resource/ModelVersion"; -import React, {useRef, useState} from 'react'; -import {Form, message, Modal, UploadFile} from 'antd'; +import { FormListActionType } from '@ant-design/pro-form/lib'; +import { FormattedMessage, useIntl } from '@umijs/max'; +import { Form, Modal, UploadFile, message } from 'antd'; import yaml from 'js-yaml'; -import {FormListActionType} from "@ant-design/pro-form/lib"; - +import React, { useRef, useState } from 'react'; export type FormValueType = { - target?: string; - template?: string; - type?: string; - time?: string; - frequency?: string; + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; } & Partial; export type MyCreateFormProps = { - createModalOpen: boolean; - handleModal: ()=>void; - values: Partial; - reload: any; + createModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; }; const waitTime = (time: number = 100) => { - return new Promise((resolve) => { - setTimeout(() => { - resolve(true); - }, time); - }); + return new Promise((resolve) => { + setTimeout(() => { + resolve(true); + }, time); + }); }; interface ProjectConfig { - params: Array; + params: Array; } const MyCreateForm: React.FC = (props) => { const actionFormListRef = useRef< @@ -63,213 +70,318 @@ const MyCreateForm: React.FC = (props) => { } setFileList([...curFile]); - } + }; const intl = useIntl(); const [dataFormList, setDataFormList] = useState([]); - const dataFormListRef = useRef(dataFormList) + const dataFormListRef = useRef(dataFormList); const [fileList, setFileList] = useState[]>([]); const [form] = Form.useForm(); - const [current, setCurrent] = useState(0); - const formRef = useRef(); - const [configData, setConfigData] = useState({params: []}); - return ( - - - stepsProps={{}} - current={current} - onCurrentChange={setCurrent} - formProps={{ - validateMessages: { - required: '此项为必填项', - }, + const [current, setCurrent] = useState(0); + const formRef = useRef(); + const [configData, setConfigData] = useState({ params: [] }); + return ( + + stepsProps={{}} + current={current} + onCurrentChange={setCurrent} + formProps={{ + validateMessages: { + required: '此项为必填项', + }, + }} + stepsFormRender={(dom, submitter) => { + return ( + { + setCurrent(0); + formRef.current?.resetFields(); + setFileList([]); + props.handleModal(); }} - stepsFormRender={(dom, submitter) => { - return ( - { - setCurrent(0) - formRef.current?.resetFields() - setFileList([]) - props.handleModal(); - }} - open={props.createModalOpen} - footer={submitter} - destroyOnClose - > - {dom} - - ); + open={props.createModalOpen} + footer={submitter} + destroyOnClose + > + {dom} + + ); + }} + > + + name="base" + formRef={formRef} + title="创建模型版本数据" + stepProps={{ + description: '填入模型版本基本信息', + }} + onFinish={async () => { + // setFormData(formRef.current?.getFieldsValue()); + await waitTime(500); + return true; + }} + > + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.modelFkId', + defaultMessage: '$$$', + })}`} + required={true} + showSearch + debounceTime={1000} + request={async (keyWord) => { + const resp = await postAlgorithmModelGetAlgorithmModelFkSelect({ + keyword: keyWord?.keyWords || '', + }); + return resp.data.list.map((v: any) => { + return { + label: v.name, + value: v.id, + }; + }); }} - > - - - name="base" - formRef={formRef} - title="创建模型版本数据" - stepProps={{ - description: '填入模型版本基本信息', - }} - onFinish={async () => { - // setFormData(formRef.current?.getFieldsValue()); - await waitTime(500); - return true; - }} - > - - } placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.modelFkId', defaultMessage: '$$$'})}`} required={true} showSearch debounceTime={1000} request={async (keyWord)=>{ - const resp = await postAlgorithmModelGetAlgorithmModelFkSelect({keyword: keyWord?.keyWords || ''}) - return resp.data.list.map((v: any)=>{ - return { - label: v.name, - value: v.id - } - }) + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.version', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.path', + defaultMessage: '$$$', + })}`} + required={true} + rules={[ + { + required: true, + message: ( + + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.startCode', + defaultMessage: '$$$', + })}`} + required={false} + /> + + } + initialValue={true} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.remark', + defaultMessage: '$$$', + })}`} + required={false} + /> + + + + name="config" + title="业务参数配置" + stepProps={{ + description: '业务参数配置', + }} + onFinish={async (values: any) => { + setFileList([]); + let formData = formRef.current?.getFieldsValue(); + if (formData?.modelFkId) { + await waitTime(500); + formData.modelConfig = { params: values?.params || [] }; + postModelVersionCreateModelVersion(formData) + .then(() => { + message.success( + intl.formatMessage({ id: 'common.success', defaultMessage: '$$$' }), + ); + props.handleModal(); + props.reload(); + }) + .catch(() => { + message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' })); + return false; + }); + } + return true; + }} + > + { + let index_ids = actionFormListRef.current?.getList()?.map((v, i) => { + return i; + }); + actionFormListRef.current?.remove(index_ids || []); + }, + beforeUpload: (file, fileList) => { + if ( + !file.name.endsWith('.yaml') && + !file.name.endsWith('.yml') && + !file.name.endsWith('.json') + ) { + message.error('请上传yaml或json文件').then(() => {}); + return false; + } else { + let parsedData = {}; + file + .text() + .then((text) => { + if (file.name.endsWith('.yaml') || file.name.endsWith('.yml')) { + parsedData = yaml.load(text) as Record; } - }/> - } placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.version', defaultMessage: '$$$'})}`} required={false}/> - } placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.path', defaultMessage: '$$$'})}`} required={true} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} - /> - } placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.startCode', defaultMessage: '$$$'})}`} required={false}/> - } initialValue={true}/> - } placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.remark', defaultMessage: '$$$'})}`} required={false}/> - - - - - name="config" - title="业务参数配置" - stepProps={{ - description: '业务参数配置', - }} - onFinish={async (values: any) => { - setFileList([]) - let formData = formRef.current?.getFieldsValue(); - if (formData?.modelFkId) { - await waitTime(500) - formData.modelConfig = {params: values?.params || []}; - postModelVersionCreateModelVersion(formData).then(()=>{ - message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) - props.handleModal(); - props.reload() - }).catch(()=>{ - message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) - return false - }) - } - return true; - }} - > - { - let index_ids = actionFormListRef.current?.getList()?.map((v, i)=>{ - return i - }) - actionFormListRef.current?.remove(index_ids || []) - }, - beforeUpload: (file, fileList)=>{ - if ( !file.name.endsWith('.yaml') && !file.name.endsWith('.yml') && !file.name.endsWith('.json')) { - message.error('请上传yaml或json文件').then(()=>{}) - return false - } else { - let parsedData = {} - file.text().then((text)=>{ - if (file.name.endsWith('.yaml') || file.name.endsWith('.yml')) { - parsedData = yaml.load(text) as Record; - } - if (file.name.endsWith('.json')) { - parsedData = JSON.parse(text) as Record; - } - if (Object.keys(parsedData).length > 0) { - dataFormListRef.current = Object.entries(parsedData).map(([key, value]) => ({ - name: key, - default: value - })) + if (file.name.endsWith('.json')) { + parsedData = JSON.parse(text) as Record; + } + if (Object.keys(parsedData).length > 0) { + dataFormListRef.current = Object.entries(parsedData).map(([key, value]) => ({ + name: key, + default: value, + })); - dataFormListRef.current.forEach((v:any, i:number)=>{ - actionFormListRef.current?.add(v, i) - }) - } - return true - }).catch(()=>{ - return false - }) - } - }, - }} - /> - { - return {doms}; - }} - alwaysShowItemLabel - > - {(f, index, action) => { - return ( - <> - - - - ); - }} - - - - // - // title={intl.formatMessage({ - // id: 'common.modal.table.create.title', - // defaultMessage: '$$$', - // })} - // open={props.publishModalOpen} - // form={form} - // autoFocusFirstInput - // modalProps={{ - // destroyOnClose: true, - // onCancel: () => props.handleModal(), - // }} - // submitTimeout={2000} - // onFinish={async (values) => { - // console.log(2222, values) - // // postModelVersionCreateModelVersion(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; - // }} - // > - // - // - // - // -)} + dataFormListRef.current.forEach((v: any, i: number) => { + actionFormListRef.current?.add(v, i); + }); + } + return true; + }) + .catch(() => { + return false; + }); + } + }, + }} + /> + { + return {doms}; + }} + alwaysShowItemLabel + > + {(f, index, action) => { + return ( + <> + + + + ); + }} + + + + // + // title={intl.formatMessage({ + // id: 'common.modal.table.create.title', + // defaultMessage: '$$$', + // })} + // open={props.publishModalOpen} + // form={form} + // autoFocusFirstInput + // modalProps={{ + // destroyOnClose: true, + // onCancel: () => props.handleModal(), + // }} + // submitTimeout={2000} + // onFinish={async (values) => { + // console.log(2222, values) + // // postModelVersionCreateModelVersion(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; + // }} + // > + // + // + // + // + ); +}; export default MyCreateForm; diff --git a/src/pages/Resource/ModelVersionList/components/UpdateForm.tsx b/src/pages/Resource/ModelVersionList/components/UpdateForm.tsx index e74f37b..4d84e86 100644 --- a/src/pages/Resource/ModelVersionList/components/UpdateForm.tsx +++ b/src/pages/Resource/ModelVersionList/components/UpdateForm.tsx @@ -1,32 +1,38 @@ -import {ModalForm,ProForm} from '@ant-design/pro-components';import {ProFormSelect} from '@ant-design/pro-components';import {ProFormText} from '@ant-design/pro-components';import {ProFormSwitch} from '@ant-design/pro-components';import {ProFormDateTimePicker} from '@ant-design/pro-components'; -import {FormattedMessage, useIntl} from '@umijs/max'; -import {postAlgorithmModelGetAlgorithmModelFkSelect} from "@/services/resource/AlgorithmModel"; -import {putModelVersionUpdateModelVersion} from "@/services/resource/ModelVersion"; -import React, {useState} from 'react'; -import {Button, Form, message} from 'antd'; +import { postAlgorithmModelGetAlgorithmModelFkSelect } from '@/services/resource/AlgorithmModel'; +import { putModelVersionUpdateModelVersion } from '@/services/resource/ModelVersion'; +import { + ModalForm, + ProForm, + ProFormDateTimePicker, + ProFormSelect, + ProFormSwitch, + ProFormText, +} from '@ant-design/pro-components'; +import { FormattedMessage, useIntl } from '@umijs/max'; +import { Form, message } from 'antd'; +import React from 'react'; export type FormValueType = { - target?: string; - template?: string; - type?: string; - time?: string; - frequency?: string; - } & Partial; + target?: string; + template?: string; + type?: string; + time?: string; + frequency?: string; +} & Partial; - export type UpdateFormProps = { - updateModalOpen: boolean; - handleModal: () => void; - values: Partial; - reload: any; - }; +export type UpdateFormProps = { + updateModalOpen: boolean; + handleModal: () => void; + values: Partial; + reload: any; +}; const UpdateForm: React.FC = (props) => { - const intl = useIntl(); const [form] = Form.useForm(); return ( title={intl.formatMessage({ - id: 'common.modal.table.update.title', + id: 'resource.model_version.table.list.update', defaultMessage: '$$$', })} open={props.updateModalOpen} @@ -38,49 +44,195 @@ const UpdateForm: React.FC = (props) => { }} submitTimeout={2000} onFinish={async (values) => { - putModelVersionUpdateModelVersion(values).then(()=>{ - message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) - props.reload() - }).catch(()=>{ - message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) - }) + putModelVersionUpdateModelVersion(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.model_version.table.list.modelFkId', defaultMessage: '$$$'})}`} required={true} initialValue={props.values.modelFkId} showSearch debounceTime={1000} request={async (keyWord)=>{ - const resp = await postAlgorithmModelGetAlgorithmModelFkSelect({keyword: keyWord?.keyWords || ''}) - return resp.data.list.map((v: any)=>{ - return { - label: v.name, - value: v.id - } - }) - } - }/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.version', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.version} disabled={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.path', defaultMessage: '$$$'})}`} required={true} initialValue={props.values.path} disabled={false} - rules={[ - { - required: true, - message: ( - - ), - }, - ]} + + + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.modelFkId', + defaultMessage: '$$$', + })}`} + required={true} + initialValue={props.values.modelFkId} + showSearch + debounceTime={1000} + request={async (keyWord) => { + const resp = await postAlgorithmModelGetAlgorithmModelFkSelect({ + keyword: keyWord?.keyWords || '', + }); + return resp.data.list.map((v: any) => { + return { + label: v.name, + value: v.id, + }; + }); + }} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.version', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.version} + disabled={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.path', + defaultMessage: '$$$', + })}`} + required={true} + initialValue={props.values.path} + disabled={false} + rules={[ + { + required: true, + message: ( + -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.startCode', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.startCode} disabled={false}/> -} initialValue={props.values.isEnable} disabled={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.remark', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.remark} disabled={false}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.createTime', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.createTime} disabled={true}/> -} placeholder={`${intl.formatMessage({id: 'common.please_input', defaultMessage: '$$$'})}${intl.formatMessage({id: 'resource.model_version.table.list.updateTime', defaultMessage: '$$$'})}`} required={false} initialValue={props.values.updateTime} disabled={true}/> - -)} + ), + }, + ]} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.startCode', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.startCode} + disabled={false} + /> + + } + initialValue={props.values.isEnable} + disabled={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.remark', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.remark} + disabled={false} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.createTime', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.createTime} + disabled={true} + /> + + } + placeholder={`${intl.formatMessage({ + id: 'common.please_input', + defaultMessage: '$$$', + })}${intl.formatMessage({ + id: 'resource.model_version.table.list.updateTime', + defaultMessage: '$$$', + })}`} + required={false} + initialValue={props.values.updateTime} + disabled={true} + /> + + + ); +}; export default UpdateForm; diff --git a/src/pages/Resource/ModelVersionList/index.tsx b/src/pages/Resource/ModelVersionList/index.tsx index adfab9e..0f6401e 100644 --- a/src/pages/Resource/ModelVersionList/index.tsx +++ b/src/pages/Resource/ModelVersionList/index.tsx @@ -11,22 +11,25 @@ import { deleteModelVersionDeleteModelVersionByIds, postModelVersionGetModelVersionList, } from '@/services/resource/ModelVersion'; -import { DownOutlined, PlusOutlined } from '@ant-design/icons'; +import { PlusOutlined } from '@ant-design/icons'; import type { ActionType, ProColumns } from '@ant-design/pro-components'; import { FooterToolbar, PageContainer, ProFormSelect, ProTable } from '@ant-design/pro-components'; import { Access, FormattedMessage, history, useAccess, useIntl } from '@umijs/max'; -import { Button, Dropdown, Popconfirm, message } from 'antd'; +import { Button, Popconfirm, message } from 'antd'; // import { MenuProps } from 'rc-menu'; +import TableActionCard from '@/components/TableActionCard'; import React, { useRef, useState } from 'react'; +import { proTableCommonOptions } from '../../../../config/defaultTable'; import { ColumnDrawer } from './components/ColumnDrawer'; import MyCreateForm from './components/MyCreateForm'; import UpdateForm from './components/UpdateForm'; + const ModelVersionList: React.FC = () => { /** * @en-US Pop-up window of new window * @zh-CN 新建窗口的弹窗 * */ - const [publishModalOpen, setPublishModalOpen] = useState(false); + // const [publishModalOpen, setPublishModalOpen] = useState(false); const [createModalOpen, setCreateModalOpen] = useState(false); /** @@ -85,14 +88,14 @@ const ModelVersionList: React.FC = () => { setUpdateModalOpen(true); } }; - const handlePublishModal = () => { - if (publishModalOpen) { - setPublishModalOpen(false); - setCurrentRow(undefined); - } else { - setPublishModalOpen(true); - } - }; + // const handlePublishModal = () => { + // if (publishModalOpen) { + // setPublishModalOpen(false); + // setCurrentRow(undefined); + // } else { + // setPublishModalOpen(true); + // } + // }; const handleCreateModal = () => { if (createModalOpen) { setCreateModalOpen(false); @@ -119,74 +122,15 @@ const ModelVersionList: React.FC = () => { message.error(intl.formatMessage({ id: 'common.failure', defaultMessage: '$$$' })); }); }; - - //TODO 表单的操作按钮集合 - type TableActionItemProps = { - renderActions: any[]; - }; - - const TableActionCard: React.FC = (props) => { - const { renderActions } = props; - const maxActionCount = 3; - if (renderActions.length <= maxActionCount) { - return renderActions.map((item) => { - return <>{item}; - }); - } - const prevActions: any[] = []; - const moreActions: { key: string; label: any }[] = []; - renderActions.map((item, index) => { - if (index < maxActionCount - 1) { - prevActions.push(item); - } else { - moreActions.push({ - key: index + '', - label: item, - }); - } - // eslint-disable-next-line react/jsx-key - }); - return ( - <> - {prevActions.map((item, index) => { - return
{item}
; - })} - - - 更多 - - - - - ); - }; - + const columns: ProColumns[] = [ - { - title: , - dataIndex: 'id', - sorter: true, - width: 100, - fixed: 'left', - render: (dom, entity) => { - return ( - { - setCurrentRow(entity); - setShowDetail(true); - }} - > - {dom} - - ); - }, - }, - { title: ( ), dataIndex: 'modelFkId', + key: 'fixedModelFkId', + fixed: 'left', hideInSearch: false, render: (text, record) => { if (model_fk_id_column_open) { @@ -237,6 +181,24 @@ const ModelVersionList: React.FC = () => { ); }, }, + { + title: , + dataIndex: 'id', + sorter: true, + width: 100, + render: (dom, entity) => { + return ( + { + setCurrentRow(entity); + setShowDetail(true); + }} + > + {dom} + + ); + }, + }, { title: ( @@ -379,7 +341,7 @@ const ModelVersionList: React.FC = () => { type="link" size="small" onClick={() => { - setPublishModalOpen(true); + // setPublishModalOpen(true); setCurrentRow(record); }} > @@ -406,69 +368,6 @@ const ModelVersionList: React.FC = () => { , ]} > - - {/* { - setUpdateModalOpen(true); - setCurrentRow(record); - }} - > - - - { - handleDestroy(record).then(() => {}); - }} - > - - */} - {/* {}} - onCancel={()=>{}} - okText="Yes" - cancelText="No" - > - { - setPublishModalOpen(true); - setCurrentRow(record); - }}> - - - - { - putAlgorithmModelUpdateAlgorithmModel({id: record.modelFkId, defaultVersionFkId: record.id}).then(()=>{ - message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'})) - }).catch(()=>{ - message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'})) - }) - }} - onCancel={()=>{}} - okText="Yes" - cancelText="No" - > - { - - }}> - - - */} , ], }, @@ -480,13 +379,12 @@ const ModelVersionList: React.FC = () => { id: 'pages.searchTable.title', defaultMessage: '$$$', })} - fixedHeader={true} options={{ fullScreen: true, setting: true, density: true, reload: true }} actionRef={actionRef} rowKey="key" - scroll={{ x: 1300 }} + scroll={{ x: proTableCommonOptions.commscrollX, y: proTableCommonOptions.commscrollY }} search={{ - labelWidth: 120, + labelWidth: proTableCommonOptions.searchLabelWidth, }} onDataSourceChange={(data) => { let ModelFkIdIds: any = data.map((v) => { diff --git a/src/pages/Setting/AlgorithmSetting.tsx b/src/pages/Setting/AlgorithmSetting.tsx index 4a1e1b9..bd648c9 100644 --- a/src/pages/Setting/AlgorithmSetting.tsx +++ b/src/pages/Setting/AlgorithmSetting.tsx @@ -70,11 +70,11 @@ const AlgorithmSetting: React.FC = () => { ]; const columns = [ - { - title: , - dataIndex: 'id', - sorter: true, - }, + // { + // title: , + // dataIndex: 'id', + // sorter: true, + // }, { title: , @@ -82,54 +82,6 @@ const AlgorithmSetting: React.FC = () => { hideInSearch: true, }, - { - title: , - dataIndex: 'code', - hideInSearch: true, - }, - - { - title: , - dataIndex: 'address', - hideInSearch: true, - }, - - { - title: ( - - ), - dataIndex: 'telephone', - hideInSearch: true, - }, - - { - title: , - dataIndex: 'lon', - hideInSearch: true, - }, - - { - title: , - dataIndex: 'lat', - hideInSearch: true, - }, - - { - title: ( - - ), - dataIndex: 'managerName', - hideInSearch: true, - }, - - { - title: ( - - ), - dataIndex: 'managerPhone', - hideInSearch: true, - }, - { title: , dataIndex: 'isEnable', @@ -139,12 +91,6 @@ const AlgorithmSetting: React.FC = () => { valueType: 'switch', }, - { - title: , - dataIndex: 'remark', - hideInSearch: true, - }, - { title: ( @@ -164,9 +110,64 @@ const AlgorithmSetting: React.FC = () => { hideInSearch: true, valueType: 'dateTime', }, + + { + title: , + dataIndex: 'code', + hideInSearch: true, + }, + + { + title: , + dataIndex: 'address', + hideInSearch: true, + }, + + // { + // title: ( + // + // ), + // dataIndex: 'telephone', + // hideInSearch: true, + // }, + + // { + // title: , + // dataIndex: 'lon', + // hideInSearch: true, + // }, + + // { + // title: , + // dataIndex: 'lat', + // hideInSearch: true, + // }, + + // { + // title: ( + // + // ), + // dataIndex: 'managerName', + // hideInSearch: true, + // }, + + // { + // title: ( + // + // ), + // dataIndex: 'managerPhone', + // hideInSearch: true, + // }, + + // { + // title: , + // dataIndex: 'remark', + // hideInSearch: true, + // }, ]; - // TODO 操作左侧网点数据节点, 项目列表数据变更 + // TODO 左侧图标目前写死,需替换 + // 操作左侧网点数据节点, 项目列表数据变更 function fetchProjectByGroupId(record: Record) { // console.log('clickTreeNode', projectCardListRef.current) postProjectGetProjectByGroupId({ id: record.id }).then((resp) => { @@ -174,9 +175,17 @@ const AlgorithmSetting: React.FC = () => { console.log(resp.data.list); let model_data = ([...v?.models] || []).map((item: any) => ({ content: ( - +
{JSON.stringify(item.configId)}
@@ -184,15 +193,15 @@ const AlgorithmSetting: React.FC = () => {
@@ -206,11 +215,11 @@ const AlgorithmSetting: React.FC = () => { key: v.id, children: ( - className='gn' + className="gn" ghost={true} itemCardProps={{ ghost: true, - bodyStyle: { padding: 0, margin: 0 }, + bodyStyle: { padding: 0, margin: 0 }, }} pagination={{ defaultPageSize: 6, @@ -238,37 +247,45 @@ const AlgorithmSetting: React.FC = () => { }); } - // TODO 操作项目列表数据类别切换, 项目列表数据变更 + // TODO 需联调 + // 操作项目列表数据类别切换, 项目列表数据变更 function changeProjectTab(key: React.SetStateAction) { let model_ids = projectData[key]?.inferConfig?.models || []; postModelVersionGetModelVersionListByIds({ ids: model_ids }).then((resp) => { let version_model_data = (resp?.data?.list || []).map((item: Record) => { return { - subTitle: 经典算法, + subTitle: 经典算法, avatar: 'https://gw.alipayobjects.com/zos/antfincdn/UCSiy1j6jx/xingzhuang.svg', - content: -
-
-
{JSON.stringify(item.configId)}
- -
- -
- -
, + content: ( + +
+
+
{JSON.stringify(item.configId)}
+ +
+ +
+ +
+ ), }; }); setModelVersionData(version_model_data); @@ -294,7 +311,7 @@ const AlgorithmSetting: React.FC = () => { } @@ -369,16 +386,16 @@ const AlgorithmSetting: React.FC = () => { }} columns={columns1} rowSelection={{ - onChange: (_, selectedRows) => { - // setSelectedRows(selectedRows); - }, + // onChange: (_, selectedRows) => { + // // setSelectedRows(selectedRows); + // }, }} />