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.
109 lines (100 loc) • 2.73 kB
JavaScript
import {
ref,
toRaw,
isRef,
reactive,
computed,
onBeforeUnmount,
watchEffect
} from 'vue';
import {
store
} from '@/common/js/app.js'
import {
ElMessage,
ElMessageBox
} from 'element-plus'
export const topoDrawer = ref(false)
export const createTopo = (data) => {
if (isRef(data)) {
data = toRaw(data.value)
}
if(!store.storage.logic[data.id]){
store.handler('create_topo', {
id: data.id,
config: data
})
} else {
store.handler('edit_topo', {
id: data.id,
config: data
})
}
topoDrawer.value = false;
}
export const groupData = ref({
name: '',
id: '',
introduce: ''
})
export const setGroupData = (data) => {
groupData.value = data
}
export const useRunningTip = () => {
const runningTopoId = computed(() => store.controller.topoId)
const watcher = watchEffect(() => {
if (runningTopoId.value) {
ElNotification({
title: '运行',
message: topoMap.value[runningTopoId.value] ? `${runningTopoId.value} 模块正在运行` : `不存在的模块 ${runningTopoId.value}`,
duration: 2000,
})
}
})
onBeforeUnmount(() => {
watcher();
})
return runningTopoId
}
export const useFilteGroup = () => {
let allGroups = computed(() => {
const set = {};
for (let k in store.storage.logic) {
if (k != '.config') {
if (Array.isArray(store.storage.logic[k].config.group)) {
store.storage.logic[k].config.group = store.storage.logic[k].config.group[0];
}
store.storage.logic[k].config.group = store.storage.logic[k].config.group || 'index';
set[store.storage.logic[k].config.group] = set[store.storage.logic[k].config.group] || [];
set[store.storage.logic[k].config.group].push(store.storage.logic[k]);
}
}
return set;
});
let keyword = ref([]);
const group = computed(() => {
const map = {};
if(keyword.value.length){
keyword.value.map(item => {
map[item] = allGroups.value[item];
});
return map;
}
return allGroups.value;
});
return {
allGroups,
group,
keyword
}
}
export const deleteTopo = val => {
ElMessageBox.alert('确认删除该图?', '删除提示', {
confirmButtonText: '确定',
callback: (action) => {
if (action === 'confirm') {
store.handler('del_topo', val);
}
},
})
}