|
- import { DatasetData, ModelData } from '@/pages/Dataset/config';
- import { ServiceData } from '@/pages/ModelDeployment/types';
- import { getDatasetList, getModelList } from '@/services/dataset/index.js';
- import { getServiceListReq } from '@/services/modelDeployment';
- import type { JCCResourceImage, JCCResourceStandard, JCCResourceType } from '@/state/jcdResource';
- import { filterResourceStandard, resourceFieldNames } from '@/state/systemResource';
- import { type SelectProps } from 'antd';
-
- export type SelectPropsConfig = {
- getOptions?: () => Promise<any>; // 获取下拉数据
- fieldNames?: SelectProps['fieldNames']; // 下拉数据字段
- optionFilterProp?: SelectProps['optionFilterProp']; // 过滤字段名
- filterOption?: SelectProps['filterOption']; // 过滤函数
- isObjectValue: boolean; // value 是对象
- getValue?: (value: any) => string | number; // 对象类型时,获取其值
- getLabel?: (value: any) => string; // 对象类型时,获取其 label
- };
-
- export type ParameterSelectDataType =
- | 'dataset'
- | 'model'
- | 'service'
- | 'resource'
- | 'remote-image'
- | 'remote-resource-type'
- | 'remote-resource';
-
- export const paramSelectConfig: Record<ParameterSelectDataType, SelectPropsConfig> = {
- dataset: {
- getOptions: async () => {
- const res = await getDatasetList({
- page: 0,
- size: 1000,
- is_public: false,
- });
- return res?.data?.content ?? [];
- },
- optionFilterProp: 'label',
- getValue: (value: DatasetData) => {
- return value.id;
- },
- getLabel: (value: DatasetData) => {
- return value.name;
- },
- isObjectValue: true,
- },
- model: {
- getOptions: async () => {
- const res = await getModelList({
- page: 0,
- size: 1000,
- is_public: false,
- });
- return res?.data?.content ?? [];
- },
- optionFilterProp: 'label',
- getValue: (value: ModelData) => {
- return value.id;
- },
- getLabel: (value: ModelData) => {
- return value.name;
- },
- isObjectValue: true,
- },
- service: {
- getOptions: async () => {
- const res = await getServiceListReq({
- page: 0,
- size: 1000,
- });
- return res?.data?.content ?? [];
- },
- optionFilterProp: 'label',
- getValue: (value: ServiceData) => {
- return value.id;
- },
- getLabel: (value: ServiceData) => {
- return value.service_name;
- },
- isObjectValue: true,
- },
- resource: {
- fieldNames: resourceFieldNames,
- filterOption: filterResourceStandard as SelectProps['filterOption'],
- isObjectValue: false,
- },
- 'remote-resource-type': {
- optionFilterProp: 'label',
- isObjectValue: false,
- getValue: (value: JCCResourceType) => {
- return value.value;
- },
- getLabel: (value: JCCResourceType) => {
- return value.label;
- },
- },
- 'remote-image': {
- optionFilterProp: 'label',
- getValue: (value: JCCResourceImage) => {
- return value.imageID;
- },
- getLabel: (value: JCCResourceImage) => {
- return value.name;
- },
- isObjectValue: true,
- },
- 'remote-resource': {
- optionFilterProp: 'label',
- getValue: (value: JCCResourceStandard) => {
- return value.id;
- },
- getLabel: (value: JCCResourceStandard) => {
- const cpu = value.baseResourceSpecs.find((v) => v.type === 'CPU');
- const ram = value.baseResourceSpecs.find((v) => v.type === 'MEMORY' && v.name === 'RAM');
- const vram = value.baseResourceSpecs.find((v) => v.type === 'MEMORY' && v.name === 'VRAM');
- const cpuText = cpu ? `CPU:${cpu.availableValue}, ` : '';
- const ramText = ram ? `内存: ${ram.availableValue}${ram.availableUnit?.toUpperCase()}` : '';
- const vramText = vram
- ? `(显存${vram.availableValue}${vram.availableUnit?.toUpperCase()})`
- : '';
- return `${value.type}: ${value.availableCount}*${value.name}${vramText}, ${cpuText}${ramText}`;
- },
- isObjectValue: true,
- },
- };
|