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.

108 lines (106 loc) 2.78 kB
import { defineStore } from 'pinia'; import { formateId, removeNodeId, setEleInfo, getEleInfo } from '@/utils/topo' import { deepMerge, deepClone } from '@/utils/util.js'; import { store } from '@/common/js/app.js' import {markRaw} from 'vue' export const useTopo = defineStore({ id: 'topo', // id必填,且需要唯一 state: () => { return { currentTopo: {}, selectedEle:null, copyTopo: null, }; }, actions: { setCopyTopo(id){ if(!id){ this.copyTopo = null; return; } this.copyTopo = deepClone(store.storage.logic[id]); return this.copyTopo }, pasteCopyTopo(data){ const copyTopo = this.copyTopo; if(!copyTopo){ return; } const id = Date.now(); const newTopo = deepMerge({},copyTopo); newTopo.config.id = id; newTopo.config.group = data.group; newTopo.config.name = data.name; newTopo.config.introduce = data.introduce; store.storage.logic[id] = newTopo; store.storage.setData() this.copyTopo = null; return newTopo; }, selectEle(ele){ this.selectedEle = ele }, init(currentTopo) { this.currentTopo = currentTopo; return this; }, create({ config: { name, group=['index'], introduce } }) { let id = `${Date.now()}`; store.storage.logic[id] = { config: { id, name, group, introduce, data: { nodeDataArray:[], linkDataArray:[] } }, record:{}, topo:{ name:'', link: [], node: [], topo:{ name, group, } } } store.storage.setData() }, update(id, newVal={}) { for(let k in store.storage.logic[id]) { store.storage.logic[id][k] = { ...store.storage.logic[id][k], ...newVal[k] } } store.storage.forceUpdate() store.storage.setData() }, delete(id) { delete store.storage.logic[id] store.storage.setData() }, } });