feat(orchestration): 更新全局变量类型支持并优化参数表默认值选择

master
钟良源 3 months ago
parent d88bafdded
commit f41ff69cc7

@ -1,6 +1,7 @@
import React, { useState, useEffect } from 'react'; import React, { useState, useEffect } from 'react';
import { Input, Select, Table, Button } from '@arco-design/web-react'; import { Input, Select, Table, Button } from '@arco-design/web-react';
import { IconDelete } from '@arco-design/web-react/icon'; import { IconDelete } from '@arco-design/web-react/icon';
import { useSelector } from 'react-redux';
interface TableDataItem { interface TableDataItem {
key: number | string; key: number | string;
@ -23,6 +24,7 @@ const ParamsTable: React.FC<ParamsTableProps> = ({
onUpdateData onUpdateData
}) => { }) => {
const [data, setData] = useState<TableDataItem[]>([]); const [data, setData] = useState<TableDataItem[]>([]);
const { gloBalVarList } = useSelector((state: any) => state.ideContainer);
useEffect(() => { useEffect(() => {
// 为现有数据添加key属性如果不存在 // 为现有数据添加key属性如果不存在
@ -40,23 +42,30 @@ const ParamsTable: React.FC<ParamsTableProps> = ({
{ label: 'ARRAY', value: 'ARRAY' }, { label: 'ARRAY', value: 'ARRAY' },
{ label: 'OBJECT', value: 'OBJECT' }, { label: 'OBJECT', value: 'OBJECT' },
{ label: 'JSON', value: 'JSON' }, { label: 'JSON', value: 'JSON' },
{ label: 'DOUBLE', value: 'DOUBLE' }, { label: 'DOUBLE', value: 'DOUBLE' }
{ label: 'DATE', value: 'DATE' },
{ label: 'DATETIME', value: 'DATETIME' },
{ label: 'TIMESTAMP', value: 'TIMESTAMP' },
{ label: 'DATABASE', value: 'DATABASE' }
]; ];
const arrayTypeOptions = [ const arrayTypeOptions = [
{ label: 'STRING', value: 'STRING' }, { label: 'STRING', value: 'STRING' },
{ label: 'INTEGER', value: 'INTEGER' }, { label: 'INTEGER', value: 'INTEGER' },
// { label: 'DOUBLE', value: 'DOUBLE' }, { label: 'DOUBLE', value: 'DOUBLE' },
{ label: 'BOOLEAN', value: 'BOOLEAN' } { label: 'BOOLEAN', value: 'BOOLEAN' },
// { label: 'DATE', value: 'DATE' }, { label: 'JSON', value: 'JSON' },
// { label: 'DATETIME', value: 'DATETIME' }, { label: 'OBJECT', value: 'OBJECT' }
// { label: 'TIMESTAMP', value: 'TIMESTAMP' }
]; ];
// 根据数据类型获取对应的选项列表
const getOptionsByDataType = (dataType: string) => {
// 这里可以根据数据类型从gloBalVarList中筛选出对应的选项
if (gloBalVarList[dataType]) {
return gloBalVarList[dataType].map((item: any) => ({
label: item.name,
value: item.id
}));
}
return [];
};
const columns = [ const columns = [
{ {
title: '标识', title: '标识',
@ -123,22 +132,58 @@ const ParamsTable: React.FC<ParamsTableProps> = ({
{ {
title: '默认值', title: '默认值',
dataIndex: 'defaultValue', dataIndex: 'defaultValue',
render: (_: any, record: TableDataItem) => ( render: (_: any, record: TableDataItem) => {
record.id === 'maxTime' ? ( // 获取当前数据类型对应的选项
<Input const options = getOptionsByDataType(record.dataType);
type="number"
min="1" // 如果有选项则显示下拉选择框,否则显示输入框
step="1" if (options.length > 0) {
value={record.defaultValue} return (
onChange={(value) => handleSave({ ...record, defaultValue: value })} <>
/> <Select
) : ( value={record.refValue}
<Input onChange={(value) => {
value={record.defaultValue} const refValue = options.find((option) => option.value === value)?.label || null;
onChange={(value) => handleSave({ ...record, defaultValue: value })} handleSave({ ...record, refId: value, refValue });
/> }}
) placeholder="请选择默认值"
) // showSearch
allowClear
options={options}
style={{ width: '100%', minWidth: 100 }}
/>
<Input
style={{ width: '100%', minWidth: 100, marginTop: 10 }}
value={record.defaultValue}
onChange={(value) => handleSave({ ...record, defaultValue: value })}
placeholder="请输入默认值"
/>
</>
);
}
else {
// 特殊处理maxTime的情况
if (record.id === 'maxTime') {
return (
<Input
type="number"
min="1"
step="1"
value={record.defaultValue}
onChange={(value) => handleSave({ ...record, defaultValue: value })}
/>
);
}
return (
<Input
value={record.defaultValue}
onChange={(value) => handleSave({ ...record, defaultValue: value })}
placeholder="请输入默认值"
/>
);
}
}
}, },
{ {
title: '操作', title: '操作',

@ -12,11 +12,7 @@ const dataTypeEnum = [
'BOOLEAN', 'BOOLEAN',
'INTEGER', 'INTEGER',
'DOUBLE', 'DOUBLE',
'STRING', 'STRING'
'DATE',
'DATETIME',
'TIMESTAMP',
'DATABASE'
]; ];
// 定义数组元素类型枚举 // 定义数组元素类型枚举
@ -25,9 +21,9 @@ const arrayElementTypeEnum = [
'INTEGER', 'INTEGER',
'DOUBLE', 'DOUBLE',
'BOOLEAN', 'BOOLEAN',
'DATE', 'ARRAY',
'DATETIME', 'JSON',
'TIMESTAMP' 'OBJECT'
]; ];
// 默认值类型校验方法 // 默认值类型校验方法

Loading…
Cancel
Save