UNPKG

logic-helper

Version:

This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.

140 lines (126 loc) 3.59 kB
import { store } from '@/common/js/app.js' import objectPath from 'object-path' import {toRaw} from 'vue' export function formateId(id) { if (typeof id ?.id == 'string') { id = id.id; } if (typeof id === 'string') { id = id.trim(); id = store.storage.nodeMap[id] || id if (id.indexOf('>') > -1) { id = id .split('>') .map((str) => { let k = str.trim() return store.storage.nodeMap[k] || k; }) .join('>'); } } return id; } export const removeNodeId = (topo, id) => { topo.topo.node = topo.topo.node.filter((item) => item !== id); topo.topo.link = topo.topo.link.filter((item) => !item.split('>').includes(id)); for (let l in topo.config.link) { let newl = l .split('>') .map((item) => (item == id ? newId : item)) .join('>'); if (newl != l) { delete topo.config.link[l]; } } for (let l in topo.config.node) { if (l == id) { delete topo.config.node[l]; } } }; export function getEleInfo(topo, id) { id = formateId(id); return { id, el: store.model.getElementById(id), config: topo.config.node[id] || topo.config.link[id] || {}, } } export function setEleInfo(topo, id, info) { id = formateId(id); objectPath(topo).set(`config.node.${id}`, { ...objectPath(topo).get(`config.node.${id}`,{}), ...info.config }) } export function getSymbolInfo(type){ switch (type) { case 'Conditional': return { value:'Conditional', label:'判断', icon:'icon-suit_diamond', ins_limit: Infinity, outs_limit: Infinity, }; case 'Repeat': return { value:'Repeat', label:'循环', icon:'icon-repeat', ins_limit: 0, outs_limit: 1, }; case 'Start': return { value:'Start', label:'开始', icon:'icon-play-circle-line', ins_limit: 0, outs_limit: 1, }; case 'End': return { value:'End', label:'结束', icon:'icon-OA-end-process', ins_limit: 1, outs_limit: 0, }; case 'Comment': return { value:'Comment', label:'结束', icon:'icon-OA-end-process', ins_limit: 0, outs_limit: 0, }; case 'Input': return { value:'Input', label:'输入', icon:'icon-tx-pinghangsibianxing', ins_limit: 1, outs_limit: 1, }; case 'Subroutine': return { value:'Subroutine', label:'子流程', icon:'icon-tx-pinghangsibianxing', ins_limit: 1, outs_limit: 1, }; default: return { value: 'process', label: '进程', icon:'icon-rectangle', ins_limit: Infinity, outs_limit: 1, }; } } export const allSymbols = ()=>['Conditional','Start','End','Comment','Step','Input'].map(getSymbolInfo)