12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import { GraphNode } from '@vue-flow/core';
- import { defineStore } from 'pinia';
- import { getPin, Pin } from '@/views/flow/store/get';
- import { Component, shallowRef, toRaw } from 'vue';
- import { BlankPin } from '@/views/flow/pin';
- export interface FlowState {
- data: any; // 当前编辑的流程数据
- nodeId: string; // 当前激活的NodeId,通过useVueFlow().findNode获取实例对象
- pin: Pin | null; // 当前激活节点的pin component
- pinComponent: Component;
- showCard: boolean; // 是否展示Node Card面板
- }
- export const useFlowStore = defineStore({
- id: 'flow-store',
- state: (): FlowState => ({
- data: undefined,
- nodeId: '',
- pin: null,
- pinComponent: shallowRef(BlankPin),
- showCard: false,
- }),
- actions: {
- cleanNode() {
- this.nodeId = '';
- this.pin = null;
- this.pinComponent = BlankPin;
- },
- setShowCard() {
- this.showCard = !this.showCard;
- },
- initNode(node: GraphNode) {
- this.nodeId = node.id;
- this.pin = {};
- const pin = getPin(node.type, true);
- if (pin !== undefined && pin.component !== undefined) {
- this.pin = pin;
- this.pin.label = String(node.label);
- this.pinComponent = pin.component;
- }
- if (node.data !== undefined && node.data.des !== undefined) {
- this.pin.des = toRaw(node.data.des);
- }
- },
- initPlugin(plugin: Pin) {
- const pin = getPin(plugin.type, false);
- if (pin == undefined || pin.component == undefined) {
- return;
- }
- this.pin = pin;
- this.pinComponent = pin.component;
- if (plugin.des == undefined) {
- this.pin.des = '';
- }
- },
- },
- });
|