feat 完善项目部署

develop
chunquansang 1 year ago
parent ce2262593f
commit a2d9e3c3f5

@ -21,6 +21,7 @@ import React, { useEffect, useRef, useState } from 'react';
// @ts-ignore
import { FormListActionType } from '@ant-design/pro-form/lib';
import yaml from 'js-yaml';
// @ts-ignore
import cookie from 'react-cookies';
interface RecordType {
@ -62,82 +63,6 @@ const stepFormItemStyleProps: Record<string, any> = {
width: formContainerWidth,
};
const treeData1: any[] = [
{
title: '0-0',
key: '0-0',
children: [
{
title: '0-0-0',
key: '0-0-0',
children: [
{ title: '0-0-0-0', key: '0-0-0-0' },
{ title: '0-0-0-1', key: '0-0-0-1' },
{ title: '0-0-0-2', key: '0-0-0-2' },
],
},
{
title: '0-0-1',
key: '0-0-1',
children: [
{ title: '0-0-1-0', key: '0-0-1-0' },
{ title: '0-0-1-1', key: '0-0-1-1' },
{ title: '0-0-1-2', key: '0-0-1-2' },
{ title: '0-0-1-0', key: '0-0-1-3' },
{ title: '0-0-1-1', key: '0-0-1-4' },
{ title: '0-0-1-2', key: '0-0-1-5' },
{ title: '0-0-1-0', key: '0-0-1-6' },
{ title: '0-0-1-1', key: '0-0-1-7' },
{ title: '0-0-1-2', key: '0-0-1-8' },
{ title: '0-0-1-0', key: '0-0-1-9' },
{ title: '0-0-1-1', key: '0-0-1-10' },
{ title: '0-0-1-2', key: '0-0-1-11' },
{ title: '0-0-1-0', key: '0-0-1-12' },
{ title: '0-0-1-1', key: '0-0-1-13' },
{ title: '0-0-1-2', key: '0-0-1-14' },
{ title: '0-0-1-0', key: '0-0-1-15' },
{ title: '0-0-1-1', key: '0-0-1-16' },
{ title: '0-0-1-2', key: '0-0-1-17' },
{ title: '0-0-1-0', key: '0-0-1-18' },
{ title: '0-0-1-1', key: '0-0-1-19' },
{ title: '0-0-1-2', key: '0-0-1-20' },
{ title: '0-0-1-0', key: '0-0-1-21' },
{ title: '0-0-1-1', key: '0-0-1-22' },
{ title: '0-0-1-2', key: '0-0-1-23' },
{ title: '0-0-1-0', key: '0-0-1-24' },
{ title: '0-0-1-1', key: '0-0-1-25' },
{ title: '0-0-1-2', key: '0-0-1-26' },
{ title: '0-0-1-0', key: '0-0-1-27' },
{ title: '0-0-1-1', key: '0-0-1-28' },
{ title: '0-0-1-2', key: '0-0-1-29' },
{ title: '0-0-1-0', key: '0-0-1-30' },
{ title: '0-0-1-1', key: '0-0-1-31' },
{ title: '0-0-1-2', key: '0-0-1-32' },
{ title: '0-0-1-0', key: '0-0-1-33' },
{ title: '0-0-1-1', key: '0-0-1-34' },
{ title: '0-0-1-2', key: '0-0-1-35' },
],
},
{
title: '0-0-2',
key: '0-0-2',
},
],
},
{
title: '0-1',
key: '0-1',
children: [
{ title: '0-1-0-0', key: '0-1-0-0' },
{ title: '0-1-0-1', key: '0-1-0-1' },
{ title: '0-1-0-2', key: '0-1-0-2' },
],
},
{
title: '0-2',
key: '0-2',
},
];
const MyCreateForm: React.FC<CreateFormProps> = (props) => {
const [treeData, setTreeData] = React.useState<DataNode[]>([]);
@ -555,9 +480,6 @@ const MyCreateForm: React.FC<CreateFormProps> = (props) => {
<ProCard style={{padding: 0, margin: 0}} bodyStyle={{padding: 0, marginRight: 10}}>
<ProFormText key="default" name="default" label="默认值" />
</ProCard>
<ProCard style={{padding: 0, margin: 0}} bodyStyle={{padding: 0, marginRight: 10}}>
<ProFormText key="remark" name="remark" label="备注" />
</ProCard>
</ProCard>
);
}}

@ -236,7 +236,6 @@ const MyCreateForm: React.FC<MyCreateFormProps> = (props) => {
<>
<ProFormText key="name" name="name" label="键名" />
<ProFormText key="default" name="default" label="默认值" />
<ProFormText key="remark" name="remark" label="备注" />
</>
);
}}

@ -177,6 +177,7 @@ const AlgorithmSetting: React.FC = () => {
{
title: (
<>
<div>{JSON.stringify(item.configId)}</div>
<img src="/images/model.png" alt="" style={{ width: '50px' }} />
</>
),

@ -39,7 +39,7 @@ for (let i = 0; i < 5; i += 1) {
: '简短备注文案',
});
}
console.log(tableListDataSource)
const columns1 = [
{
title: '应用名称',
@ -226,7 +226,6 @@ const TableTransferList: React.FC<UpdateFormProps> = (props) => {
const triggerShowSearch = (checked: boolean) => {
setShowSearch(checked);
};
return (
<>
<TableTransfer

@ -1,43 +1,29 @@
import {
ModalForm, ProCard,
ProForm, ProFormDependency, ProFormDigit, ProFormList, ProFormSelect,
ProForm, ProFormDigit, ProFormSelect,
ProFormSwitch,
ProFormText,
ProFormUploadDragger,
StepsForm
} from '@ant-design/pro-components';
import {FormattedMessage, useIntl} from '@umijs/max';
import {useIntl} from '@umijs/max';
import React, {useEffect, useRef, useState} from 'react';
import {Button, Form, message, Modal, Switch, Tree} from 'antd';
import { Table, Transfer } from 'antd';
import type { ColumnsType, TableRowSelection } from 'antd/es/table/interface';
import {message, Modal} from 'antd';
import type { ColumnsType } from 'antd/es/table/interface';
import type { TransferItem, TransferProps } from 'antd/es/transfer';
import {TransferDirection} from "antd/es/transfer";
import {
postAlgorithmModelGetAlgorithmModelFkSelect,
postAlgorithmModelGetAllVersionsById
} from "@/services/resource/AlgorithmModel";
import {
postDeviceGetAllDeviceByGroup,
postDeviceGetDeviceFkSelect,
postDeviceGetDeviceList
} from "@/services/device/Device";
import {postDeviceGroupGetDeviceGroupTree} from "@/services/device/DeviceGroup";
import {putRoleUpdateDevicesInGroupModel} from "@/services/device/DeviceModelInGroup";
import {postProjectCreateProject} from "@/services/project/Project";
import {beforeUploadFile} from "@/utils/common";
import yaml from "js-yaml";
import {CloseOutlined, SnippetsOutlined} from "@ant-design/icons";
import {FormListActionType, ProFormDatePicker} from "@ant-design/pro-form/lib";
import {
postModelVersionGetModelVersionById,
postModelVersionGetModelVersionFkSelect
} from "@/services/resource/ModelVersion";
import difference from 'lodash/difference';
import TableTransferList from "@/pages/Setting/components/TableTransfer";
import {postProjectModelConfigGetProjectModelConfigById} from "@/services/project/ProjectModelConfig";
import {
postProjectModelConfigGetProjectModelConfigById,
putProjectModelConfigUpdateProjectModelConfig
} from "@/services/project/ProjectModelConfig";
const formContainerWidth: number = 755;
@ -68,53 +54,7 @@ export type UpdateFormProps = {
reload: any;
};
const genFormFields = (type: number)=>{
return (
<>
<ProFormText
name="name"
label="实验名称"
width="md"
tooltip="最长为 24 位,用于标定的唯一 id"
placeholder="请输入名称"
rules={[{ required: true }]}
/>
<ProFormDatePicker name="date" label="日期" />
</>
)
}
const dataSource = [
{
key: '1',
name: '胡彦斌',
age: 32,
address: '西湖区湖底公园1号',
},
{
key: '2',
name: '胡彦祖',
age: 42,
address: '西湖区湖底公园1号',
},
];
const columns = [
{
title: '姓名',
dataIndex: 'name',
key: 'name',
},
{
title: '年龄',
dataIndex: 'age',
key: 'age',
},
{
title: '住址',
dataIndex: 'address',
key: 'address',
},
];
const UpdateForm: React.FC<UpdateFormProps> = (props) => {
const intl = useIntl();
@ -122,62 +62,55 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
const [targetKeys, setTargetKeys] = useState<string[]>([]);
const [current, setCurrent] = useState(0);
const [configData, setConfigData] = useState([]);
const [configData, setConfigData] = useState<any>([]);
const [addrValue, setAddr] = useState('')
const [projectModelConfig, setProjectModelConfig] = useState<API.ProjectModelConfig>({})
const [configResult, setConfigResult] = useState<API.ProjectModelConfig>({})
const [deviceData, setDeviceData] = useState<DataType[]>([])
const handleSelectChange = (value)=>{
postModelVersionGetModelVersionById({ id: value }).then((resp) => {
let data = resp.data.modelVersion.modelConfig?.params || [];
setConfigData(data); // 更新状态
});
}
useEffect(() => {
if (addrValue) {
postModelVersionGetModelVersionById({ id: 23 }).then((resp) => {
const [selectValue, setSelectValue] = useState<number>(0)
const [isInit, setIsInit] = useState<boolean>(false)
const handleSelectChange = (value: number)=>{
if (value !== projectModelConfig.modelVersionFkId) {
postModelVersionGetModelVersionById({ id: value }).then((resp) => {
let data = resp.data.modelVersion.modelConfig?.params || [];
setConfigData(data); // 更新状态
setConfigData(data);
});
}
}, [addrValue]);
setSelectValue(value)
}
// useEffect(() => {
// if (selectValue > 0) {
// postModelVersionGetModelVersionById({ id: selectValue }).then((resp) => {
// let data = resp.data.modelVersion.modelConfig?.params || [];
// setConfigData(data); // 更新状态
// });
// }
// }, [selectValue]);
const actionFormListRef = useRef<
FormListActionType<{
name: string;
}>
>();
const getModelData = () => {
// postDeviceGetDeviceFkSelect({keyword: ''}).then((res)=>{
// let result = (res.data?.list || []).map((v: any)=>{
// return {
// key: v.id,
// title: v.name,
// chosen: false,
// }
// })
// setModalData(result);
// })
// setMockData(tempMockData);
// setTargetKeys(tempTargetKeys);
};
useEffect(() => {
setTargetKeys([])
setConfigData([])
setIsInit(false)
if (props.updateModalOpen) {
// getModelData();
console.log(props.projectModelConfigId)
if (props.projectModelConfigId && props.projectModelConfigId !== 0) {
postProjectModelConfigGetProjectModelConfigById({id: props.projectModelConfigId}).then((resp)=>{
setProjectModelConfig(resp.data.ProjectModelConfig)
setTargetKeys((resp.data.ProjectModelConfig?.devices || '').split(',').map((v: string)=>{return parseInt(v)}))
setConfigData(resp.data.ProjectModelConfig?.modelConfig || [])
setSelectValue(resp.data.ProjectModelConfig?.modelVersionFkId || 0)
setIsInit(true)
})
}
// postDeviceGetDeviceList({groupFkId: 2, page: 1, pageSize:10}).then((resp)=>{
// // console.log(111, resp)
// })
} else {
}
}, [props.updateModalOpen])
@ -203,8 +136,8 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
})
}
}}
onFinish={async () => {
onFinish={async (values) => {
setCurrent(0)
return true;
}}
formProps={{
@ -230,6 +163,63 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
);
}}
>
<StepsForm.StepForm<{
config: string;
}>
name="config1"
title="项目参数配置"
stepProps={{
description: '业务参数配置',
}}
onFinish={async (values: any) => {
let projectConfig:any = []
Object.keys(values).forEach((key)=>{
if (key !== 'modelFkId') {
projectConfig.push({name: key, value: values[key]})
}
})
configResult.projectConfig = projectConfig
return true;
}}
>
<>
<ProForm.Group>
{
isInit && (projectModelConfig?.projectConfig || []).map((item: any, index: number)=>{
let value_type = typeof item.value
if (value_type === 'number') {
return (<ProFormDigit
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
tooltip={item.remark}
/>)
} else if (value_type === 'boolean') {
return (<ProFormSwitch
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
tooltip={item.remark}
/>)
} else if (value_type === 'string') {
return (<ProFormText
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
tooltip={item.remark}
/>)
} else {
return
}
})
}
</ProForm.Group>
</>
</StepsForm.StepForm>
<StepsForm.StepForm<{
config: string;
}>
@ -238,18 +228,24 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
stepProps={{
description: '模型参数配置',
}}
onFocus={()=>{
console.log("进入")
}}
onFinish={async (values: any) => {
return true;
configResult.modelVersionFkId = values.modelFkId
let modelConfig:any = []
Object.keys(values).forEach((key)=>{
if (key !== 'modelFkId') {
modelConfig.push({name: key, value: values[key]})
}
})
configResult.modelConfig = modelConfig
return true;
}}
>
<>
<div>{props.projectModelConfigId}</div>
{
projectModelConfig.modelFkId && projectModelConfig.modelFkId !== 0 && (
isInit && projectModelConfig.modelFkId && projectModelConfig.modelFkId !== 0 && (
<ProFormSelect
name="addr"
name="modelFkId"
width="xs"
label="模型版本"
onChange={handleSelectChange}
@ -267,17 +263,17 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
/>
)
}
<div>{selectValue}={projectModelConfig.modelVersionFkId}</div>
{
configData.length ?
isInit && (selectValue !== projectModelConfig.modelVersionFkId ?
(
configData.map((item:any, index)=> {
configData.map((item:any, index: number)=> {
if (typeof item.default === 'number') {
return (<ProFormDigit
key={index}
name={item.name}
label={item.name}
initialValue={item.default}
tooltip={item.remark}
/>)
} else if (typeof item.default === 'boolean') {
return (<ProFormSwitch
@ -285,7 +281,6 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
name={item.name}
label={item.name}
initialValue={item.default}
tooltip={item.remark}
/>)
} else {
return (<ProFormText
@ -293,128 +288,40 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
name={item.name}
label={item.name}
initialValue={item.default}
tooltip={item.remark}
/>)
}
}
)
): (projectModelConfig?.modelConfig || []).map((item, index)=>{
let value_type = typeof item.value
if (value_type === 'number') {
return (<ProFormDigit
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
tooltip={item.remark}
/>)
} else if (value_type === 'boolean') {
return (<ProFormSwitch
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
tooltip={item.remark}
/>)
} else if (value_type === 'string') {
return (<ProFormText
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
tooltip={item.remark}
/>)
} else {
return
}
})
): (configData.map((item:any, index: number)=> {
if (typeof item.value === 'number') {
return (<ProFormDigit
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
/>)
} else if (typeof item.value === 'boolean') {
return (<ProFormSwitch
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
/>)
} else {
return (<ProFormText
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
/>)
}
}
)))
}
</>
</StepsForm.StepForm>
<StepsForm.StepForm<{
config: string;
}>
name="config1"
title="项目参数配置"
stepProps={{
description: '业务参数配置',
}}
onFinish={async (values: any) => {
return true;
}}
>
<>
<ProForm.Group>
{
(projectModelConfig?.projectConfig || []).map((item, index)=>{
let value_type = typeof item.value
if (value_type === 'number') {
return (<ProFormDigit
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
tooltip={item.remark}
/>)
} else if (value_type === 'boolean') {
return (<ProFormSwitch
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
tooltip={item.remark}
/>)
} else if (value_type === 'string') {
return (<ProFormText
key={index}
name={item.name}
label={item.name}
initialValue={item.value}
tooltip={item.remark}
/>)
} else {
return
}
})
}
{
Object.keys(projectModelConfig?.projectConfig || {}).map((item:any, index)=> {
let value_type = typeof projectModelConfig.projectConfig[item]
console.log(value_type, projectModelConfig.projectConfig[item])
if (value_type === 'number') {
return (<ProFormDigit
key={index}
name={item}
label={item}
initialValue={projectModelConfig.projectConfig[item]}
/>)
} else if (value_type === 'boolean') {
return (<ProFormSwitch
key={index}
name={item}
label={item}
initialValue={projectModelConfig.projectConfig[item]}
/>)
} else if (value_type === 'string') {
return (<ProFormText
key={index}
width='md'
name={item}
label={item}
initialValue={projectModelConfig.projectConfig[item]}
/>)
} else {
return
}
}
)
}
</ProForm.Group>
</>
</StepsForm.StepForm>
{/* 关联算法模型 */}
<StepsForm.StepForm<{
@ -426,8 +333,17 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
description: '设备关联配置',
}}
onFinish={async (values: any) => {
console.log(targetKeys)
return true;
configResult.devices = targetKeys.join(',')
configResult.id = props.projectModelConfigId
putProjectModelConfigUpdateProjectModelConfig(configResult).then((resp)=>{
message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'}))
props.handleModal()
props.reload()
return true
}).catch(()=>{
message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'}))
return false;
})
}}
>
<>
@ -437,51 +353,7 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
<TableTransferList setTargetKeys={setTargetKeys} dataSource={deviceData}
targetKeys={targetKeys}></TableTransferList>
</>
</StepsForm.StepForm>
</StepsForm>
// <ModalForm<API.DeviceModelInGroup>
// title={intl.formatMessage({
// id: 'common.modal.table.update.title',
// defaultMessage: '$$$',
// })}
// open={props.updateModalOpen}
// form={form}
// autoFocusFirstInput
// modalProps={{
// destroyOnClose: true,
// onCancel: () => props.handleModal(),
// }}
// submitTimeout={2000}
// onFinish={async (values:any) => {
// console.log(4444, props.values)
// putRoleUpdateDevicesInGroupModel({groupId: props.values.groupFkId, modelId: props.values.modelFkId, deviceIds: values?.devices || []}).then(()=>{
// props.handleModal();
// message.success(intl.formatMessage({id: 'common.success', defaultMessage: '$$$'}))
// }).catch(()=>{
// message.error(intl.formatMessage({id: 'common.failure', defaultMessage: '$$$'}))
// })
// return true;
// }}
// >
// <ProForm.Item name='devices'>
// <Transfer
// dataSource={modalData}
// showSearch
// locale={{ itemUnit: '项', itemsUnit: '项', searchPlaceholder: '请输入搜索内容' }}
// targetKeys={targetKeys}
// onChange={handleChange}
// onSearch={handleSearch}
// style={{marginBottom: '20px'}}
// render={(item) => item.title}
// />
//
// </ProForm.Item>
// </ModalForm>
)}
export default UpdateForm;

Loading…
Cancel
Save