import { defineStore } from "pinia"; import { computed, ref, watch } from "vue"; import { convertUniverData2ObjectList, array2mindmapData, } from "@/utils/convert"; import type { Workbook, FUniver, Univer } from "@univerjs/presets"; import { ElMessage } from "element-plus"; export const useEditBomStore = defineStore("editBom", () => { const BpmTools = ref(null); const workbook = ref(null); const univerApi = ref(null); const univer = ref(null); /** * 思维导图数据与excel数据转换 * 拦截思维导图数据 转换成excel数据 */ const mindmapData = computed({ get() { const fWorkbook = univerApi.value?.getActiveWorkbook(); const fWorksheet = fWorkbook?.getActiveSheet(); const rows = fWorksheet?.getLastRow() || 0; const columns = fWorksheet?.getLastColumn() || 0; const range = fWorksheet?.getRange(0, 0, rows + 1, columns + 1); // 获取表格数据 const rowData = range?.getValues(); if (!rowData) { ElMessage.error("数据异常"); return []; } // 表格数据转换成对象列表 const json = convertUniverData2ObjectList(rowData); // 转换成mindmap数据 const list = array2mindmapData(json); return { id: "root", data: { type: "root", }, children: list, }; }, set(value: any) { console.log("修改mindmap:", value); // 1、移动行数据 sheet.moveRows(要移动的行(范围), 目标位置) // 2、新增行数据 sheet.insertRowAfter(目标行) // 3、修改行数据 // 3.1 获取范围 // 3.2 设置范围值 if (!workbook.value) return; }, }); watch( () => univerApi.value, (api) => { if(api) { // 开始编辑事件 params.cancel = true 阻止编辑 api.addEvent(api.Event.BeforeSheetEditStart, params => { console.log('BeforeSheetEditStart', params) // params.cancel = true }); api.addEvent(api.Event.SheetEditChanging, params => { console.log('SheetEditChanging', params) }); } } ); return { workbook, mindmapData, univer, univerApi, BpmTools, }; });