1
This commit is contained in:
parent
50e0d99712
commit
07b99aac31
@ -12,7 +12,6 @@ interface IconSelectProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const IconSelect: React.FC<IconSelectProps> = ({
|
const IconSelect: React.FC<IconSelectProps> = ({
|
||||||
value,
|
|
||||||
onChange,
|
onChange,
|
||||||
visible,
|
visible,
|
||||||
onCancel
|
onCancel
|
||||||
|
|||||||
@ -115,7 +115,6 @@ interface DataTablePaginationProps {
|
|||||||
|
|
||||||
const DataTablePagination: React.FC<DataTablePaginationProps> = ({
|
const DataTablePagination: React.FC<DataTablePaginationProps> = ({
|
||||||
pageIndex,
|
pageIndex,
|
||||||
pageSize,
|
|
||||||
pageCount,
|
pageCount,
|
||||||
onPageChange,
|
onPageChange,
|
||||||
}) => {
|
}) => {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import request from '@/utils/request';
|
import request from '@/utils/request';
|
||||||
import type {Page} from '@/types/base/page';
|
|
||||||
import type {RoleResponse, RoleRequest, RoleQuery, RoleTagResponse, RoleTagRequest, Permission} from './types';
|
import type {RoleResponse, RoleRequest, RoleQuery, RoleTagResponse, RoleTagRequest, Permission} from './types';
|
||||||
|
import {Page} from "@/types/base.ts";
|
||||||
|
|
||||||
const BASE_URL = '/api/v1/role';
|
const BASE_URL = '/api/v1/role';
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,4 @@
|
|||||||
import type { BaseResponse } from '@/types/base/response';
|
import {BaseQuery, BaseRequest, BaseResponse} from "@/types/base";
|
||||||
import {BaseRequest} from "@/types/base/request.ts";
|
|
||||||
import {BaseQuery} from "@/types/base";
|
|
||||||
|
|
||||||
// 权限类型枚举
|
// 权限类型枚举
|
||||||
export enum PermissionType {
|
export enum PermissionType {
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import request from '@/utils/request';
|
import request from '@/utils/request';
|
||||||
import type { Page } from '@/types/base/page';
|
|
||||||
import type { UserResponse, UserRequest, UserQuery } from './types';
|
import type { UserResponse, UserRequest, UserQuery } from './types';
|
||||||
|
import {Page} from "@/types/base.ts";
|
||||||
|
import {RoleResponse} from "@/pages/System/Role/types";
|
||||||
|
|
||||||
const BASE_URL = '/api/v1/user';
|
const BASE_URL = '/api/v1/user';
|
||||||
const ROLE_BASE_URL = '/api/v1/role';
|
const ROLE_BASE_URL = '/api/v1/role';
|
||||||
|
|||||||
@ -169,10 +169,6 @@ const NodeConfigDrawer: React.FC<NodeConfigDrawerProps> = ({
|
|||||||
setLocalValues(prev => ({...prev, [key]: value}));
|
setLocalValues(prev => ({...prev, [key]: value}));
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleFormChange = (key: string, value: any) => {
|
|
||||||
setFormValues(prev => ({...prev, [key]: value}));
|
|
||||||
};
|
|
||||||
|
|
||||||
const items: TabsProps['items'] = [
|
const items: TabsProps['items'] = [
|
||||||
nodeDefinition?.panelVariablesSchema && {
|
nodeDefinition?.panelVariablesSchema && {
|
||||||
key: 'panel',
|
key: 'panel',
|
||||||
|
|||||||
@ -1271,7 +1271,6 @@ const WorkflowDesign: React.FC = () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
const edges = graph.getEdges().map(edge => {
|
const edges = graph.getEdges().map(edge => {
|
||||||
const sourceNode = graph.getCellById(edge.getSourceCellId());
|
|
||||||
const condition = edge.getProp('condition');
|
const condition = edge.getProp('condition');
|
||||||
const vertices = edge.getVertices(); // 获取边的顶点信息
|
const vertices = edge.getVertices(); // 获取边的顶点信息
|
||||||
|
|
||||||
|
|||||||
@ -140,7 +140,7 @@ const WorkflowDefinitionList: React.FC = () => {
|
|||||||
key: 'category',
|
key: 'category',
|
||||||
render: (category: string) => {
|
render: (category: string) => {
|
||||||
const categoryInfo = categories.find(c => c.code === category);
|
const categoryInfo = categories.find(c => c.code === category);
|
||||||
return categoryInfo?.lable || category;
|
return categoryInfo?.label || category;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import React, { useState, useEffect } from 'react';
|
import React, { useState, useEffect } from 'react';
|
||||||
import { Modal, Table, Tag, Button, Space } from 'antd';
|
import { Modal, Table, Tag, Button } from 'antd';
|
||||||
import type { ColumnsType } from 'antd/es/table';
|
import type { ColumnsType } from 'antd/es/table';
|
||||||
import { WorkflowHistoricalInstance } from '../types';
|
import { WorkflowHistoricalInstance } from '../types';
|
||||||
import { getHistoricalInstances } from '../service';
|
import { getHistoricalInstances } from '../service';
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import HistoryModal from './components/HistoryModal';
|
|||||||
|
|
||||||
const WorkflowInstanceList: React.FC = () => {
|
const WorkflowInstanceList: React.FC = () => {
|
||||||
const [loading, setLoading] = useState(false);
|
const [loading, setLoading] = useState(false);
|
||||||
const [data, setData] = useState<Page<WorkflowTemplateWithInstances[]>>([]);
|
const [data, setData] = useState<Page<WorkflowTemplateWithInstances[]>>(null);
|
||||||
const [query, setQuery] = useState({
|
const [query, setQuery] = useState({
|
||||||
current: 1,
|
current: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
@ -35,11 +35,6 @@ const WorkflowInstanceList: React.FC = () => {
|
|||||||
loadData(query);
|
loadData(query);
|
||||||
}, [query]);
|
}, [query]);
|
||||||
|
|
||||||
const handleViewDetail = (record: WorkflowTemplateWithInstances) => {
|
|
||||||
setSelectedInstance(record);
|
|
||||||
setDetailVisible(true);
|
|
||||||
};
|
|
||||||
|
|
||||||
const handleViewHistory = (record: WorkflowTemplateWithInstances) => {
|
const handleViewHistory = (record: WorkflowTemplateWithInstances) => {
|
||||||
setSelectedWorkflowDefinitionId(record.id);
|
setSelectedWorkflowDefinitionId(record.id);
|
||||||
setHistoryVisible(true);
|
setHistoryVisible(true);
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import React from 'react';
|
import React from 'react';
|
||||||
import { Card, Row, Col, Statistic, Table, Tag, Space } from 'antd';
|
import {Card, Row, Col, Statistic, Table, Tag, Space} from 'antd';
|
||||||
import { PieChart, Pie, Cell, ResponsiveContainer, Tooltip, Legend } from 'recharts';
|
import {PieChart, Pie, Cell, ResponsiveContainer, Tooltip, Legend} from 'recharts';
|
||||||
|
|
||||||
// Mock 数据
|
// Mock 数据
|
||||||
const mockStatistics = {
|
const mockStatistics = {
|
||||||
@ -11,10 +11,10 @@ const mockStatistics = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const mockStatusDistribution = [
|
const mockStatusDistribution = [
|
||||||
{ name: '运行中', value: 23, color: '#1890ff', percent: '1.8%' },
|
{name: '运行中', value: 23, color: '#1890ff', percent: '1.8%'},
|
||||||
{ name: '已完成', value: 892, color: '#52c41a', percent: '71.0%' },
|
{name: '已完成', value: 892, color: '#52c41a', percent: '71.0%'},
|
||||||
{ name: '失败', value: 45, color: '#ff4d4f', percent: '3.6%' },
|
{name: '失败', value: 45, color: '#ff4d4f', percent: '3.6%'},
|
||||||
{ name: '已终止', value: 296, color: '#faad14', percent: '23.6%' }
|
{name: '已终止', value: 296, color: '#faad14', percent: '23.6%'}
|
||||||
];
|
];
|
||||||
|
|
||||||
const mockRecentExecutions = [
|
const mockRecentExecutions = [
|
||||||
@ -47,12 +47,12 @@ const mockRecentExecutions = [
|
|||||||
const WorkflowMonitor: React.FC = () => {
|
const WorkflowMonitor: React.FC = () => {
|
||||||
const getStatusTag = (status: string) => {
|
const getStatusTag = (status: string) => {
|
||||||
const statusMap: Record<string, { color: string; text: string }> = {
|
const statusMap: Record<string, { color: string; text: string }> = {
|
||||||
COMPLETED: { color: 'success', text: '已完成' },
|
COMPLETED: {color: 'success', text: '已完成'},
|
||||||
RUNNING: { color: 'processing', text: '运行中' },
|
RUNNING: {color: 'processing', text: '运行中'},
|
||||||
FAILED: { color: 'error', text: '失败' },
|
FAILED: {color: 'error', text: '失败'},
|
||||||
TERMINATED: { color: 'warning', text: '已终止' }
|
TERMINATED: {color: 'warning', text: '已终止'}
|
||||||
};
|
};
|
||||||
const statusInfo = statusMap[status] || { color: 'default', text: status };
|
const statusInfo = statusMap[status] || {color: 'default', text: status};
|
||||||
return <Tag color={statusInfo.color}>{statusInfo.text}</Tag>;
|
return <Tag color={statusInfo.color}>{statusInfo.text}</Tag>;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -81,7 +81,7 @@ const WorkflowMonitor: React.FC = () => {
|
|||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
key: 'action',
|
key: 'action',
|
||||||
render: (_, record: any) => (
|
render: (record: any) => (
|
||||||
<Space size="middle">
|
<Space size="middle">
|
||||||
<a onClick={() => console.log('查看详情', record)}>查看详情</a>
|
<a onClick={() => console.log('查看详情', record)}>查看详情</a>
|
||||||
{record.status === 'RUNNING' && (
|
{record.status === 'RUNNING' && (
|
||||||
@ -92,7 +92,7 @@ const WorkflowMonitor: React.FC = () => {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
const CustomTooltip = ({ active, payload }: any) => {
|
const CustomTooltip = ({active, payload}: any) => {
|
||||||
if (active && payload && payload.length) {
|
if (active && payload && payload.length) {
|
||||||
const data = payload[0].payload;
|
const data = payload[0].payload;
|
||||||
return (
|
return (
|
||||||
@ -115,7 +115,7 @@ const WorkflowMonitor: React.FC = () => {
|
|||||||
<Statistic
|
<Statistic
|
||||||
title="总流程实例"
|
title="总流程实例"
|
||||||
value={mockStatistics.totalInstances}
|
value={mockStatistics.totalInstances}
|
||||||
valueStyle={{ color: '#1890ff' }}
|
valueStyle={{color: '#1890ff'}}
|
||||||
/>
|
/>
|
||||||
</Card>
|
</Card>
|
||||||
</Col>
|
</Col>
|
||||||
@ -124,7 +124,7 @@ const WorkflowMonitor: React.FC = () => {
|
|||||||
<Statistic
|
<Statistic
|
||||||
title="运行中实例"
|
title="运行中实例"
|
||||||
value={mockStatistics.runningInstances}
|
value={mockStatistics.runningInstances}
|
||||||
valueStyle={{ color: '#52c41a' }}
|
valueStyle={{color: '#52c41a'}}
|
||||||
/>
|
/>
|
||||||
</Card>
|
</Card>
|
||||||
</Col>
|
</Col>
|
||||||
@ -133,7 +133,7 @@ const WorkflowMonitor: React.FC = () => {
|
|||||||
<Statistic
|
<Statistic
|
||||||
title="今日完成"
|
title="今日完成"
|
||||||
value={mockStatistics.completedToday}
|
value={mockStatistics.completedToday}
|
||||||
valueStyle={{ color: '#1890ff' }}
|
valueStyle={{color: '#1890ff'}}
|
||||||
/>
|
/>
|
||||||
</Card>
|
</Card>
|
||||||
</Col>
|
</Col>
|
||||||
@ -142,7 +142,7 @@ const WorkflowMonitor: React.FC = () => {
|
|||||||
<Statistic
|
<Statistic
|
||||||
title="今日失败"
|
title="今日失败"
|
||||||
value={mockStatistics.failedToday}
|
value={mockStatistics.failedToday}
|
||||||
valueStyle={{ color: '#ff4d4f' }}
|
valueStyle={{color: '#ff4d4f'}}
|
||||||
/>
|
/>
|
||||||
</Card>
|
</Card>
|
||||||
</Col>
|
</Col>
|
||||||
@ -152,7 +152,7 @@ const WorkflowMonitor: React.FC = () => {
|
|||||||
<Row gutter={16}>
|
<Row gutter={16}>
|
||||||
<Col span={8}>
|
<Col span={8}>
|
||||||
<Card title="状态分布">
|
<Card title="状态分布">
|
||||||
<div style={{ height: 300 }}>
|
<div style={{height: 300}}>
|
||||||
<ResponsiveContainer width="100%" height="100%">
|
<ResponsiveContainer width="100%" height="100%">
|
||||||
<PieChart>
|
<PieChart>
|
||||||
<Pie
|
<Pie
|
||||||
@ -163,15 +163,15 @@ const WorkflowMonitor: React.FC = () => {
|
|||||||
outerRadius={80}
|
outerRadius={80}
|
||||||
paddingAngle={5}
|
paddingAngle={5}
|
||||||
dataKey="value"
|
dataKey="value"
|
||||||
label={({ name, percent }) => `${name} ${(percent * 100).toFixed(1)}%`}
|
label={({name, percent}) => `${name} ${(percent * 100).toFixed(1)}%`}
|
||||||
labelLine={true}
|
labelLine={true}
|
||||||
>
|
>
|
||||||
{mockStatusDistribution.map((entry, index) => (
|
{mockStatusDistribution.map((entry, index) => (
|
||||||
<Cell key={index} fill={entry.color} />
|
<Cell key={index} fill={entry.color}/>
|
||||||
))}
|
))}
|
||||||
</Pie>
|
</Pie>
|
||||||
<Tooltip content={<CustomTooltip />} />
|
<Tooltip content={<CustomTooltip/>}/>
|
||||||
<Legend />
|
<Legend/>
|
||||||
</PieChart>
|
</PieChart>
|
||||||
</ResponsiveContainer>
|
</ResponsiveContainer>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import React, {useState, useEffect} from 'react';
|
import React, {useState, useEffect} from 'react';
|
||||||
import {PageContainer} from '@ant-design/pro-layout';
|
import {PageContainer} from '@ant-design/pro-layout';
|
||||||
import {Button, Card, Form, Input, InputNumber, Select, Switch, Space, Menu, Tabs, Row, Col, message, ColorPicker} from 'antd';
|
import {Button, Card, Form, Input, InputNumber, Select, Switch, Tabs, Row, Col, message, ColorPicker} from 'antd';
|
||||||
import type {NodeDesignDataResponse} from './types';
|
import type {NodeDesignDataResponse} from './types';
|
||||||
import * as service from './service';
|
import * as service from './service';
|
||||||
import {useParams} from 'react-router-dom';
|
import {useParams} from 'react-router-dom';
|
||||||
|
|||||||
@ -1,8 +1,8 @@
|
|||||||
import React, { useState, useEffect } from 'react';
|
import React, {useState, useEffect} from 'react';
|
||||||
import { useNavigate } from 'react-router-dom';
|
import {useNavigate} from 'react-router-dom';
|
||||||
import { PageContainer } from '@/components/ui/page-container';
|
import {PageContainer} from '@/components/ui/page-container';
|
||||||
import { PlusOutlined, DeleteOutlined } from '@ant-design/icons';
|
import {PlusOutlined, DeleteOutlined} from '@ant-design/icons';
|
||||||
import { NodeTypeEnum, type NodeDesignDataResponse } from './types';
|
import {NodeTypeEnum, type NodeDesignDataResponse} from './types';
|
||||||
import * as service from './service';
|
import * as service from './service';
|
||||||
import {
|
import {
|
||||||
Table,
|
Table,
|
||||||
@ -18,9 +18,9 @@ import {
|
|||||||
CardHeader,
|
CardHeader,
|
||||||
CardTitle,
|
CardTitle,
|
||||||
} from "@/components/ui/card";
|
} from "@/components/ui/card";
|
||||||
import { Button } from "@/components/ui/button";
|
import {Button} from "@/components/ui/button";
|
||||||
import { Badge } from "@/components/ui/badge";
|
import {Badge} from "@/components/ui/badge";
|
||||||
import { useToast } from "@/components/ui/use-toast";
|
import {useToast} from "@/components/ui/use-toast";
|
||||||
import {
|
import {
|
||||||
AlertDialog,
|
AlertDialog,
|
||||||
AlertDialogAction,
|
AlertDialogAction,
|
||||||
@ -32,7 +32,7 @@ import {
|
|||||||
AlertDialogTitle,
|
AlertDialogTitle,
|
||||||
AlertDialogTrigger,
|
AlertDialogTrigger,
|
||||||
} from "@/components/ui/alert-dialog";
|
} from "@/components/ui/alert-dialog";
|
||||||
import { DataTablePagination } from "@/components/ui/pagination";
|
import {DataTablePagination} from "@/components/ui/pagination";
|
||||||
|
|
||||||
// 节点类型标签样式映射
|
// 节点类型标签样式映射
|
||||||
const nodeTypeStyles = {
|
const nodeTypeStyles = {
|
||||||
@ -63,19 +63,19 @@ const NodeDesignList: React.FC = () => {
|
|||||||
const [detailVisible, setDetailVisible] = useState(false);
|
const [detailVisible, setDetailVisible] = useState(false);
|
||||||
const [currentNode, setCurrentNode] = useState<NodeDesignDataResponse>();
|
const [currentNode, setCurrentNode] = useState<NodeDesignDataResponse>();
|
||||||
const [list, setList] = useState<NodeDesignDataResponse[]>([]);
|
const [list, setList] = useState<NodeDesignDataResponse[]>([]);
|
||||||
const [loading, setLoading] = useState(false);
|
const [setLoading] = useState(false);
|
||||||
const [pagination, setPagination] = useState({
|
const [pagination, setPagination] = useState({
|
||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
totalElements: 0,
|
totalElements: 0,
|
||||||
});
|
});
|
||||||
const { toast } = useToast();
|
const {toast} = useToast();
|
||||||
|
|
||||||
const loadData = async () => {
|
const loadData = async () => {
|
||||||
setLoading(true);
|
setLoading(true);
|
||||||
try {
|
try {
|
||||||
const response = await service.getNodeDefinitions({
|
const response = await service.getNodeDefinitions({
|
||||||
current: pagination.pageNum,
|
pageNum: pagination.pageNum,
|
||||||
pageSize: pagination.pageSize,
|
pageSize: pagination.pageSize,
|
||||||
});
|
});
|
||||||
setList(response.content || []);
|
setList(response.content || []);
|
||||||
@ -127,7 +127,7 @@ const NodeDesignList: React.FC = () => {
|
|||||||
accessorKey: 'nodeCode',
|
accessorKey: 'nodeCode',
|
||||||
header: '节点编码',
|
header: '节点编码',
|
||||||
size: 180,
|
size: 180,
|
||||||
cell: ({ row }) => (
|
cell: ({row}) => (
|
||||||
<div className="font-medium">{row.original.nodeCode}</div>
|
<div className="font-medium">{row.original.nodeCode}</div>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
@ -140,7 +140,7 @@ const NodeDesignList: React.FC = () => {
|
|||||||
accessorKey: 'nodeType',
|
accessorKey: 'nodeType',
|
||||||
header: '节点类型',
|
header: '节点类型',
|
||||||
size: 120,
|
size: 120,
|
||||||
cell: ({ row }) => {
|
cell: ({row}) => {
|
||||||
const style = nodeTypeStyles[row.original.nodeType as NodeTypeEnum] || {
|
const style = nodeTypeStyles[row.original.nodeType as NodeTypeEnum] || {
|
||||||
variant: 'secondary' as const,
|
variant: 'secondary' as const,
|
||||||
label: row.original.nodeType || '未知类型'
|
label: row.original.nodeType || '未知类型'
|
||||||
@ -156,7 +156,7 @@ const NodeDesignList: React.FC = () => {
|
|||||||
accessorKey: 'panelVariablesSchema',
|
accessorKey: 'panelVariablesSchema',
|
||||||
header: '面板变量',
|
header: '面板变量',
|
||||||
size: 100,
|
size: 100,
|
||||||
cell: ({ row }) => (
|
cell: ({row}) => (
|
||||||
<Badge variant={row.original.panelVariablesSchema ? "outline" : "secondary"}>
|
<Badge variant={row.original.panelVariablesSchema ? "outline" : "secondary"}>
|
||||||
{row.original.panelVariablesSchema ? '已配置' : '未配置'}
|
{row.original.panelVariablesSchema ? '已配置' : '未配置'}
|
||||||
</Badge>
|
</Badge>
|
||||||
@ -166,7 +166,7 @@ const NodeDesignList: React.FC = () => {
|
|||||||
accessorKey: 'localVariablesSchema',
|
accessorKey: 'localVariablesSchema',
|
||||||
header: '本地变量',
|
header: '本地变量',
|
||||||
size: 100,
|
size: 100,
|
||||||
cell: ({ row }) => (
|
cell: ({row}) => (
|
||||||
<Badge variant={row.original.localVariablesSchema ? "outline" : "secondary"}>
|
<Badge variant={row.original.localVariablesSchema ? "outline" : "secondary"}>
|
||||||
{row.original.localVariablesSchema ? '已配置' : '未配置'}
|
{row.original.localVariablesSchema ? '已配置' : '未配置'}
|
||||||
</Badge>
|
</Badge>
|
||||||
@ -176,7 +176,7 @@ const NodeDesignList: React.FC = () => {
|
|||||||
accessorKey: 'formVariablesSchema',
|
accessorKey: 'formVariablesSchema',
|
||||||
header: '表单变量',
|
header: '表单变量',
|
||||||
size: 100,
|
size: 100,
|
||||||
cell: ({ row }) => (
|
cell: ({row}) => (
|
||||||
<Badge variant={row.original.formVariablesSchema ? "outline" : "secondary"}>
|
<Badge variant={row.original.formVariablesSchema ? "outline" : "secondary"}>
|
||||||
{row.original.formVariablesSchema ? '已配置' : '未配置'}
|
{row.original.formVariablesSchema ? '已配置' : '未配置'}
|
||||||
</Badge>
|
</Badge>
|
||||||
@ -186,7 +186,7 @@ const NodeDesignList: React.FC = () => {
|
|||||||
id: 'actions',
|
id: 'actions',
|
||||||
header: '操作',
|
header: '操作',
|
||||||
size: 180,
|
size: 180,
|
||||||
cell: ({ row }) => (
|
cell: ({row}) => (
|
||||||
<div className="flex items-center gap-2">
|
<div className="flex items-center gap-2">
|
||||||
<Button
|
<Button
|
||||||
variant="ghost"
|
variant="ghost"
|
||||||
@ -212,7 +212,7 @@ const NodeDesignList: React.FC = () => {
|
|||||||
size="sm"
|
size="sm"
|
||||||
className="text-destructive"
|
className="text-destructive"
|
||||||
>
|
>
|
||||||
<DeleteOutlined className="mr-1" />
|
<DeleteOutlined className="mr-1"/>
|
||||||
删除
|
删除
|
||||||
</Button>
|
</Button>
|
||||||
</AlertDialogTrigger>
|
</AlertDialogTrigger>
|
||||||
@ -244,7 +244,7 @@ const NodeDesignList: React.FC = () => {
|
|||||||
<div className="flex items-center justify-between">
|
<div className="flex items-center justify-between">
|
||||||
<h2 className="text-3xl font-bold tracking-tight">节点管理</h2>
|
<h2 className="text-3xl font-bold tracking-tight">节点管理</h2>
|
||||||
<Button onClick={() => navigate('/workflow/node-design/create')}>
|
<Button onClick={() => navigate('/workflow/node-design/create')}>
|
||||||
<PlusOutlined className="mr-1" />
|
<PlusOutlined className="mr-1"/>
|
||||||
新建节点
|
新建节点
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
@ -261,7 +261,7 @@ const NodeDesignList: React.FC = () => {
|
|||||||
{columns.map((column) => (
|
{columns.map((column) => (
|
||||||
<TableHead
|
<TableHead
|
||||||
key={column.accessorKey || column.id}
|
key={column.accessorKey || column.id}
|
||||||
style={{ width: column.size }}
|
style={{width: column.size}}
|
||||||
>
|
>
|
||||||
{column.header}
|
{column.header}
|
||||||
</TableHead>
|
</TableHead>
|
||||||
@ -276,7 +276,7 @@ const NodeDesignList: React.FC = () => {
|
|||||||
key={column.accessorKey || column.id}
|
key={column.accessorKey || column.id}
|
||||||
>
|
>
|
||||||
{column.cell
|
{column.cell
|
||||||
? column.cell({ row: { original: item } })
|
? column.cell({row: {original: item}})
|
||||||
: item[column.accessorKey!]}
|
: item[column.accessorKey!]}
|
||||||
</TableCell>
|
</TableCell>
|
||||||
))}
|
))}
|
||||||
|
|||||||
@ -79,6 +79,7 @@ export interface NodeDesignDataResponse extends BaseResponse {
|
|||||||
description: string;
|
description: string;
|
||||||
panelVariablesSchema: NodeVariablesSchema | null;
|
panelVariablesSchema: NodeVariablesSchema | null;
|
||||||
localVariablesSchema: NodeVariablesSchema | null;
|
localVariablesSchema: NodeVariablesSchema | null;
|
||||||
|
formVariablesSchema: NodeVariablesSchema | null;
|
||||||
uiVariables: UIVariables;
|
uiVariables: UIVariables;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -24,7 +24,8 @@
|
|||||||
"baseUrl": ".",
|
"baseUrl": ".",
|
||||||
"paths": {
|
"paths": {
|
||||||
"@/*": ["./src/*"]
|
"@/*": ["./src/*"]
|
||||||
}
|
},
|
||||||
|
"allowSyntheticDefaultImports": true
|
||||||
},
|
},
|
||||||
"include": ["src"],
|
"include": ["src"],
|
||||||
"references": [{ "path": "./tsconfig.node.json" }]
|
"references": [{ "path": "./tsconfig.node.json" }]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user