import { NButton, NIcon, NInput } from 'naive-ui' import { SaveOutlined, ArrowLeftOutlined } from '@vicons/antd' import { $t } from '@locales/index' import SvgIcon from '@components/SvgIcon' import { useController } from './useController' import { useStore } from './useStore' import EndNode from './components/base/endNode' import NodeWrap from './components/render/nodeWrap' import styles from './index.module.css' import type { FlowNode, FlowNodeProps } from './types' import { useThemeCssVar } from '@baota/naive-ui/theme' export default defineComponent({ name: 'FlowChart', props: { isEdit: { type: Boolean, default: false, }, type: { type: String as PropType<'quick' | 'advanced'>, default: 'quick', }, node: { type: Object as PropType, default: () => ({}), }, // 任务节点列表 taskComponents: { type: Object as PropType>, default: () => ({}), }, }, setup(props: FlowNodeProps, { slots }) { const cssVars = useThemeCssVar([ 'borderColor', 'dividerColor', 'textColor1', 'textColor2', 'primaryColor', 'primaryColorHover', 'bodyColor', ]) const { flowData, selectedNodeId, flowZoom, resetFlowData } = useStore() const { initData, handleSaveConfig, handleZoom, goBack } = useController({ type: props?.type, node: props?.node, isEdit: props?.isEdit, }) // 提供任务节点组件映射给后代组件使用 provide('taskComponents', props.taskComponents) onMounted(initData) onUnmounted(resetFlowData) return () => (
{$t('t_0_1744861190562')}
{$t('t_2_1744861190040')}
{/* 左侧流程容器 */}
{/* 流程容器*/}
{/* 渲染流程节点 */} {/* 流程结束节点 */}
{/* 缩放控制区 */}
handleZoom(1)}>
{flowZoom.value}%
handleZoom(2)}>
{/* 保留原有插槽 */} {slots.default?.()}
) }, })