feat 项目部署功能完善

develop
chunquansang 1 year ago
parent e51acef3aa
commit 953bdf2a40

@ -3,7 +3,7 @@ import {
postDeviceGroupGetDeviceGroupTree,
} from '@/services/device/DeviceGroup';
import { postGetProjectByGroupId } from '@/services/project/Project';
import { postProjectGetProjectByGroupId } from '@/services/project/Project';
import { postModelVersionGetModelVersionListByIds } from '@/services/resource/ModelVersion';
import { FormattedMessage } from '@@/exports';
import { RedoOutlined } from '@ant-design/icons';
@ -42,7 +42,7 @@ const AlgorithmSetting: React.FC = () => {
const [nodeTreeData, setNodeTreeData] = React.useState<DataNode[]>([]);
const [selectNodes, setSelectNodes] = React.useState<any[]>([]);
const [currentRow, setCurrentRow] = useState<API.DeviceGroup>();
const [currentCard, setCurrentCard] = useState<API.DeviceModelInGroup>();
const [currentCard, setCurrentCard] = useState();
const [selectedRowsState, setSelectedRows] = useState<API.DeviceGroup[]>([]);
const [tabs, setTabs] = useState([]);
@ -50,11 +50,11 @@ const AlgorithmSetting: React.FC = () => {
const [modelVersionData, setModelVersionData] = useState<any[]>([]);
const [projectData, setProjectData] = useState<any>({});
const [targetKeys, setTargetKeys] = useState<string[]>([]);
const [projectConfigId, setProjectConfigId] = useState<number>(0)
const handleUpdateModal = () => {
if (updateModalOpen) {
setUpdateModalOpen(false);
setCurrentCard(undefined);
setProjectConfigId(0);
} else {
setUpdateModalOpen(true);
}
@ -169,8 +169,9 @@ const AlgorithmSetting: React.FC = () => {
// TODO 操作左侧网点数据节点, 项目列表数据变更
function fetchProjectByGroupId(record: Record<string, any>) {
// console.log('clickTreeNode', projectCardListRef.current)
postGetProjectByGroupId({ id: record.id }).then((resp) => {
postProjectGetProjectByGroupId({ id: record.id }).then((resp) => {
let tab_data = (resp?.data?.list || []).map((v: any) => {
console.log(resp.data.list)
let model_data = ([...v?.models] || []).map((item: any) =>
(
{
@ -182,9 +183,9 @@ const AlgorithmSetting: React.FC = () => {
actions: [
<Button
type="link"
key={item.id}
key={item.configId}
onClick={() => {
setCurrentCard({ groupFkId: record.id, modelFkId: item.id });
setProjectConfigId(item.configId);
handleUpdateModal();
}}
>
@ -389,10 +390,10 @@ const AlgorithmSetting: React.FC = () => {
</ProCard>
<UpdateForm
updateModalOpen={updateModalOpen}
values={currentCard || {}}
handleModal={handleUpdateModal}
groupId={currentRow?.id || 0}
reload={actionRef.current?.reload}
/>
projectModelConfigId={projectConfigId}/>
</PageContainer>
);
};

@ -6,20 +6,12 @@ import difference from 'lodash/difference';
import {randomInt} from "@antv/xflow-extension";
import {ProTable} from "@ant-design/pro-components";
interface RecordType {
key: string;
title: string;
description: string;
tag: string;
age: number;
interface RecordType extends API.Device{
key: string
}
interface DataType {
key: string;
title: string;
description: string;
tag: string;
age: number;
interface DataType extends API.Device{
key: string,
}
@ -70,10 +62,29 @@ const columns1 = [
},
];
const testData = Array(100).fill(0).map((v, index)=>{
return {
"id": index,
"key": index+"",
"createTime": "2023-10-17T10:47:51.629494+08:00",
"updateTime": "2023-10-26T11:02:39.559715+08:00",
"name": "控制设备",
"code": "DEVICE00002",
"position": "二楼客厅",
"param": "rtsp://admin:@192.168.10.203",
"spec": "",
"categoryFkId": 2,
"groupFkId": 3,
"isEnable": true,
"remark": ""
}
})
interface TableTransferProps extends TransferProps<TransferItem> {
dataSource: DataType[];
leftColumns: ColumnsType<DataType>;
rightColumns: ColumnsType<Pick<DataType, 'title'| 'key'>>
rightColumns: ColumnsType<DataType>
}
// Customize Table Transfer
@ -129,9 +140,12 @@ const TableTransfer = ({ leftColumns, rightColumns, ...restProps }: TableTransfe
<Table<any>
rowSelection={rowSelection}
virtual={true}
columns={columns}
scroll={{y: 500}}
dataSource={filteredItems}
size="small"
pagination={false}
style={{ pointerEvents: listDisabled ? 'none' : undefined, width: 500 }}
onRow={({ key, disabled: itemDisabled }) => ({
onClick: () => {
@ -161,38 +175,38 @@ const originTargetKeys = mockData
const leftTableColumns: ColumnsType<DataType> = [
{
dataIndex: 'title',
dataIndex: 'name',
title: '名称',
},
{
dataIndex: 'tag',
title: '位置',
dataIndex: 'code',
title: '编码',
},
{
dataIndex: 'description',
title: '编码',
dataIndex: 'position',
title: '位置',
},
{
dataIndex: 'age',
dataIndex: 'param',
title: '参数',
},
];
const rightTableColumns: ColumnsType<Pick<DataType, 'title' | 'key'>> = [
const rightTableColumns: ColumnsType<DataType> = [
{
dataIndex: 'title',
dataIndex: 'name',
title: '名称',
},
{
dataIndex: 'tag',
title: '位置',
dataIndex: 'code',
title: '编码',
},
{
dataIndex: 'description',
title: '编码',
dataIndex: 'position',
title: '位置',
},
{
dataIndex: 'age',
dataIndex: 'param',
title: '参数',
},
];
@ -200,6 +214,7 @@ const rightTableColumns: ColumnsType<Pick<DataType, 'title' | 'key'>> = [
export type UpdateFormProps = {
targetKeys: string[];
setTargetKeys: (data: string[])=>void;
dataSource: DataType[];
};
const TableTransferList: React.FC<UpdateFormProps> = (props) => {
@ -215,8 +230,7 @@ const TableTransferList: React.FC<UpdateFormProps> = (props) => {
return (
<>
<TableTransfer
dataSource={mockData}
dataSource={props.dataSource}
targetKeys={props.targetKeys}
showSearch={showSearch}
onChange={onChange}

@ -14,8 +14,15 @@ import { Table, Transfer } from 'antd';
import type { ColumnsType, TableRowSelection } from 'antd/es/table/interface';
import type { TransferItem, TransferProps } from 'antd/es/transfer';
import {TransferDirection} from "antd/es/transfer";
import {postAlgorithmModelGetAlgorithmModelFkSelect} from "@/services/resource/AlgorithmModel";
import {postDeviceGetDeviceFkSelect, postDeviceGetDeviceList} from "@/services/device/Device";
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";
@ -23,50 +30,41 @@ 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} from "@/services/resource/ModelVersion";
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";
const formContainerWidth: number = 755;
const stepFormItemStyleProps: Record<string, any> = {
width: formContainerWidth,
};
interface RecordType {
key: string;
title: string;
description: string;
disabled: boolean;
tag: string;
interface DataType extends API.Device{
key: string,
}
interface DataType {
key: string;
title: string;
description: string;
disabled: boolean;
tag: string;
interface ProjectModelConfigById {
configId: number,
}
interface TableTransferProps extends TransferProps<TransferItem> {
dataSource: DataType[];
leftColumns: ColumnsType<DataType>;
rightColumns: ColumnsType<DataType>;
}
export type FormValueType = {
target?: string;
template?: string;
type?: string;
time?: string;
frequency?: string;
} & Partial<API.DeviceModelInGroup>;
export type UpdateFormProps = {
updateModalOpen: boolean;
handleModal: () => void;
values: Partial<API.DeviceModelInGroup>;
projectModelConfigId: number;
groupId: number;
reload: any;
};
@ -120,16 +118,16 @@ const columns = [
const UpdateForm: React.FC<UpdateFormProps> = (props) => {
const intl = useIntl();
const [form] = Form.useForm<API.DeviceModelInGroup>();
const [modalData, setModalData] = useState<RecordType[]>([]);
const [targetKeys, setTargetKeys] = useState<string[]>([]);
const [current, setCurrent] = useState(0);
const [configData, setConfigData] = useState([]);
const [addrValue, setAddr] = useState('')
const [projectModelConfig, setProjectModelConfig] = useState<API.ProjectModelConfig>({})
const [deviceData, setDeviceData] = useState<DataType[]>([])
const handleSelectChange = (value)=>{
postModelVersionGetModelVersionById({ id: value }).then((resp) => {
let data = resp.data.modelVersion.modelConfig?.params || [];
@ -152,46 +150,40 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
}>
>();
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);
})
// 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([])
if (props.updateModalOpen) {
getModelData();
postDeviceGetDeviceList({groupFkId: 2, page: 1, pageSize:10}).then((resp)=>{
console.log(111, resp)
// getModelData();
console.log(props.projectModelConfigId)
if (props.projectModelConfigId && props.projectModelConfigId !== 0) {
postProjectModelConfigGetProjectModelConfigById({id: props.projectModelConfigId}).then((resp)=>{
setProjectModelConfig(resp.data.ProjectModelConfig)
})
}
// postDeviceGetDeviceList({groupFkId: 2, page: 1, pageSize:10}).then((resp)=>{
// // console.log(111, resp)
// })
} else {
}
}, [props.updateModalOpen])
const handleChange = (newTargetKeys: string[]) => {
setTargetKeys(newTargetKeys);
};
const handleSearch = (dir: TransferDirection, value: string) => {
postDeviceGetDeviceFkSelect({keyword: value}).then((res)=>{
let result = (res.data?.list || []).map((v: any)=>{
return {
key: v.id,
title: v.name,
chosen: false,
}
})
setModalData(result);
})
};
return (
<StepsForm<{
@ -201,7 +193,16 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
labelPlacement: 'vertical',
}}
current={current}
onCurrentChange={setCurrent}
onCurrentChange={(value)=>{
setCurrent(value)
if (value == 1) {
postDeviceGetAllDeviceByGroup({id: props.groupId}).then((resp)=>{
setDeviceData((resp.data?.list || []).map((v: API.Device)=>{
return {key: v.id, ...v}
}))
})
}
}}
onFinish={async () => {
return true;
@ -229,54 +230,47 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
);
}}
>
<StepsForm.StepForm<{
config: string;
}>
name="config3"
title="设备配置"
stepProps={{
description: '业务参数配置',
}}
onFinish={async (values: any) => {
console.log(targetKeys)
return true;
}}
>
<>
<TableTransferList setTargetKeys={setTargetKeys}
targetKeys={targetKeys}></TableTransferList>
</>
</StepsForm.StepForm>
{/* 关联算法模型 */}
<StepsForm.StepForm<{
config: string;
}>
name="config"
title="模型参数配置"
stepProps={{
description: '业务参数配置',
description: '模型参数配置',
}}
onFocus={()=>{
console.log("进入")
}}
onFinish={async (values: any) => {
return true;
}}
>
<>
{
projectModelConfig.modelFkId && projectModelConfig.modelFkId !== 0 && (
<ProFormSelect
name="addr"
width="xs"
label="模型版本"
onChange={handleSelectChange}
initialValue={projectModelConfig.modelVersionFkId}
// dependencies 的内容会注入 request 中
request={async () => [
{ label: 'V1.0', value: 22 },
{ label: 'V1.2', value: 23 },
]}
request={async () => {
let resp =await postAlgorithmModelGetAllVersionsById({id: projectModelConfig.modelFkId})
return resp.data.list.map((v: any)=>{
return {
label: v.name,
value: v.id
}
})
}}
/>
)
}
{
configData.length ?
(
configData.map((item:any, index)=> {
console.log(typeof item.default)
if (typeof item.default === 'number') {
return (<ProFormDigit
key={index}
@ -304,11 +298,40 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
}
}
)
): (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
}
})
}
</>
</StepsForm.StepForm>
{/* 业务参数配置 */}
<StepsForm.StepForm<{
config: string;
}>
@ -322,38 +345,97 @@ const UpdateForm: React.FC<UpdateFormProps> = (props) => {
}}
>
<>
<ProForm.Group>
{
configData.map((item:any, index)=> {
console.log(typeof item.default)
if (typeof item.default === 'number') {
(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.default}
initialValue={item.value}
tooltip={item.remark}
/>)
} else if (typeof item.default === 'boolean') {
} else if (value_type === 'boolean') {
return (<ProFormSwitch
key={index}
name={item.name}
label={item.name}
initialValue={item.default}
initialValue={item.value}
tooltip={item.remark}
/>)
} else {
} else if (value_type === 'string') {
return (<ProFormText
key={index}
name={item.name}
label={item.name}
initialValue={item.default}
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<{
config: string;
}>
name="config3"
title="设备配置"
stepProps={{
description: '设备关联配置',
}}
onFinish={async (values: any) => {
console.log(targetKeys)
return true;
}}
>
<>
{
}
<TableTransferList setTargetKeys={setTargetKeys} dataSource={deviceData}
targetKeys={targetKeys}></TableTransferList>
</>
</StepsForm.StepForm>

@ -152,3 +152,20 @@ export async function postDeviceOpenRtspCamera(
},
);
}
export async function postDeviceGetAllDeviceByGroup(
body: API.GetById,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.AllResult; msg?: string }>(
`/api/v1/device/getAllDeviceByGroup`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}

@ -1,4 +1,7 @@
declare namespace API {
type AllResult = {
list?: any;
};
type Device = {
categoryFkId?: number;
code?: string;

@ -3,7 +3,10 @@
import { request } from '@umijs/max';
/** 创建基础Project POST /project/createProject */
export async function postProjectCreateProject(body: API.Project, options?: { [key: string]: any }) {
export async function postProjectCreateProject(
body: API.Project,
options?: { [key: string]: any },
) {
return request<API.Response & { msg?: string }>(`/api/v1/project/createProject`, {
method: 'POST',
headers: {
@ -15,7 +18,10 @@ export async function postProjectCreateProject(body: API.Project, options?: { [k
}
/** 删除Project DELETE /project/deleteProject */
export async function deleteProjectDeleteProject(body: API.Project, options?: { [key: string]: any }) {
export async function deleteProjectDeleteProject(
body: API.Project,
options?: { [key: string]: any },
) {
return request<API.Response & { msg?: string }>(`/api/v1/project/deleteProject`, {
method: 'DELETE',
headers: {
@ -27,7 +33,10 @@ export async function deleteProjectDeleteProject(body: API.Project, options?: {
}
/** 删除选中Project DELETE /project/deleteProjectByIds */
export async function deleteProjectDeleteProjectByIds(body: API.IdsReq, options?: { [key: string]: any }) {
export async function deleteProjectDeleteProjectByIds(
body: API.IdsReq,
options?: { [key: string]: any },
) {
return request<API.Response & { msg?: string }>(`/api/v1/project/deleteProjectByIds`, {
method: 'DELETE',
headers: {
@ -38,8 +47,26 @@ export async function deleteProjectDeleteProjectByIds(body: API.IdsReq, options?
});
}
/** 根据组id获得项目id和name POST /project/getProjectByGroupId */
export async function postProjectGetProjectByGroupId(
body: API.GetById,
options?: { [key: string]: any },
) {
return request<any>(`/api/v1/project/getProjectByGroupId`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}
/** 根据id获取Project POST /project/getProjectById */
export async function postProjectGetProjectById(body: API.GetById, options?: { [key: string]: any }) {
export async function postProjectGetProjectById(
body: API.GetById,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.ProjectProjectResponse }>(
`/api/v1/project/getProjectById`,
{
@ -90,7 +117,10 @@ export async function postProjectGetProjectList(
}
/** 获得Project名称列表 POST /project/getProjectNames */
export async function postProjectGetProjectNames(body: API.IdsReq, options?: { [key: string]: any }) {
export async function postProjectGetProjectNames(
body: API.IdsReq,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.NamesResult; msg?: string }>(
`/api/v1/project/getProjectNames`,
{
@ -130,15 +160,3 @@ export async function putProjectUpdateProjectGroup(
...(options || {}),
});
}
/** 根据组id获得项目id和name POST /project/getProjectByGroupId */
export async function postGetProjectByGroupId(body: API.GetById, options?: { [key: string]: any }) {
return request<any>(`/api/v1/project/getProjectByGroupId`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
});
}

@ -0,0 +1,111 @@
// @ts-ignore
/* eslint-disable */
import { request } from '@umijs/max';
/** 创建基础ProjectModelConfig POST /project_model_config/createProjectModelConfig */
export async function postProjectModelConfigCreateProjectModelConfig(
body: API.ProjectModelConfig,
options?: { [key: string]: any },
) {
return request<API.Response & { msg?: string }>(
`/api/v1/project_model_config/createProjectModelConfig`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}
/** 删除ProjectModelConfig DELETE /project_model_config/deleteProjectModelConfig */
export async function deleteProjectModelConfigDeleteProjectModelConfig(
body: API.ProjectModelConfig,
options?: { [key: string]: any },
) {
return request<API.Response & { msg?: string }>(
`/api/v1/project_model_config/deleteProjectModelConfig`,
{
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}
/** 删除选中ProjectModelConfig DELETE /project_model_config/deleteProjectModelConfigByIds */
export async function deleteProjectModelConfigDeleteProjectModelConfigByIds(
body: API.IdsReq,
options?: { [key: string]: any },
) {
return request<API.Response & { msg?: string }>(
`/api/v1/project_model_config/deleteProjectModelConfigByIds`,
{
method: 'DELETE',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}
/** 根据id获取ProjectModelConfig POST /project_model_config/getProjectModelConfigById */
export async function postProjectModelConfigGetProjectModelConfigById(
body: API.GetById,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.ProjectProjectModelConfigResponse }>(
`/api/v1/project_model_config/getProjectModelConfigById`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}
/** 分页获取ProjectModelConfig列表 POST /project_model_config/getProjectModelConfigList */
export async function postProjectModelConfigGetProjectModelConfigList(
body: API.SearchProjectModelConfigParams,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.PageResult; msg?: string }>(
`/api/v1/project_model_config/getProjectModelConfigList`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}
/** 修改基础ProjectModelConfig PUT /project_model_config/updateProjectModelConfig */
export async function putProjectModelConfigUpdateProjectModelConfig(
body: API.ProjectModelConfig,
options?: { [key: string]: any },
) {
return request<API.Response & { msg?: string }>(
`/api/v1/project_model_config/updateProjectModelConfig`,
{
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}

@ -3,6 +3,9 @@
// API 更新时间:
// API 唯一标识:
import * as Project from './Project';
import * as ProjectModelConfig from './ProjectModelConfig';
export default {
Project,
ProjectModelConfig,
};

@ -35,13 +35,31 @@ declare namespace API {
id?: number;
inferConfig?: Record<string, any>;
info?: string;
projectFilePath?: string;
isEnable?: boolean;
name?: string;
projectFilePath?: string;
remark?: string;
updateTime?: string;
};
type ProjectModelConfig = {
createTime?: string;
/** 设备是一个 以,隔开的存储device id的字符例如 1,2 */
devices?: string;
id?: number;
modelConfig?: Record<string, any>;
modelFkId?: number;
modelVersionFkId?: number;
projectConfig?: Record<string, any>;
projectGroupFkId?: number;
remark?: string;
updateTime?: string;
};
type ProjectProjectModelConfigResponse = {
ProjectModelConfig?: ProjectModelConfig;
};
type ProjectProjectResponse = {
project?: Project;
};
@ -53,6 +71,30 @@ declare namespace API {
success?: boolean;
};
type SearchProjectModelConfigParams = {
createTime?: string;
/** 排序方式:升序false(默认)|降序true */
desc?: boolean;
/** 设备是一个 以,隔开的存储device id的字符例如 1,2 */
devices?: string;
id?: number;
/** 关键字 */
keyword?: string;
modelConfig?: Record<string, any>;
modelFkId?: number;
modelVersionFkId?: number;
/** 排序 */
orderKey?: string;
/** 页码 */
page?: number;
/** 每页大小 */
pageSize?: number;
projectConfig?: Record<string, any>;
projectGroupFkId?: number;
remark?: string;
updateTime?: string;
};
type SearchProjectParams = {
code?: string;
createTime?: string;
@ -72,6 +114,7 @@ declare namespace API {
page?: number;
/** 每页大小 */
pageSize?: number;
projectFilePath?: string;
remark?: string;
updateTime?: string;
};

@ -136,3 +136,21 @@ export async function putAlgorithmModelUpdateAlgorithmModel(
...(options || {}),
});
}
/** 根据id获取所有的版本 POST /algorithm_model/getAllVersionsById */
export async function postAlgorithmModelGetAllVersionsById(
body: API.GetById,
options?: { [key: string]: any },
) {
return request<API.Response & { data?: API.ResourceModelVersionFkSelectResponse }>(
`/api/v1/algorithm_model/getAllVersionsById`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
data: body,
...(options || {}),
},
);
}

@ -1,4 +1,7 @@
declare namespace API {
type ResourceModelVersionListResponse = {
modelVersions?: ModelVersion[];
};
type AlgorithmModel = {
categoryFkId?: number;
createTime?: string;
@ -9,6 +12,11 @@ declare namespace API {
updateTime?: string;
};
type ResourceModelVersionFkSelectResponse = {
id?: number;
name?: string;
};
type BusinessImage = {
configHash?: string;
createTime?: string;

Loading…
Cancel
Save