|
@@ -56,6 +56,7 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<t-tree
|
|
|
+ :key="treeKey"
|
|
|
class="flex-grow"
|
|
|
ref="tree"
|
|
|
:data="data.tree"
|
|
@@ -208,6 +209,8 @@ const { taskDialog, setTask } = useTask();
|
|
|
|
|
|
const { payDialog } = usePay();
|
|
|
|
|
|
+const treeKey = ref(s8());
|
|
|
+
|
|
|
onBeforeUnmount(() => {
|
|
|
data.tree = tree.value.getTreeData();
|
|
|
});
|
|
@@ -236,11 +239,38 @@ const onDescription = (node: any) => {
|
|
|
|
|
|
const ondblclick = (node: any) => {
|
|
|
if (node.data.type==='page' && node.data.value !== data.actived[0]) {
|
|
|
+ MessagePlugin.warning('请先选中页面');
|
|
|
return;
|
|
|
}
|
|
|
node.data.edited = true;
|
|
|
};
|
|
|
|
|
|
+const treeAppend = (data,key,node)=>{
|
|
|
+ if(!key){
|
|
|
+ data.push(node);
|
|
|
+ }else{
|
|
|
+ deepAppend(data,key,node);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+const deepAppend = (data,key,node)=>{
|
|
|
+ data.forEach((item,index)=>{
|
|
|
+ if(item.value===key){
|
|
|
+ if(item.type==='page'){
|
|
|
+ data.splice(index+1,0,node);
|
|
|
+ }else{
|
|
|
+ if(!item.children){
|
|
|
+ item.children = [];
|
|
|
+ }
|
|
|
+ item.children.push(node);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if(item.children){
|
|
|
+ deepAppend(item.children,key,node);
|
|
|
+ }
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
const append = async (node, folder?: boolean) => {
|
|
|
const item: any = {
|
|
|
value: s8(),
|
|
@@ -254,13 +284,18 @@ const append = async (node, folder?: boolean) => {
|
|
|
}
|
|
|
if (node && node.data.type === 'page') {
|
|
|
insertAfter(node, folder);
|
|
|
+ treeKey.value = s8();
|
|
|
return;
|
|
|
}
|
|
|
if (!node) {
|
|
|
- tree.value.appendTo('', item);
|
|
|
+ // tree.value.appendTo('', item);
|
|
|
+ treeAppend(data.tree,'',item);
|
|
|
} else {
|
|
|
- tree.value.appendTo(node.value, item);
|
|
|
+ // tree.value.appendTo(node.value, item);
|
|
|
+ treeAppend(data.tree,node.value,item);
|
|
|
}
|
|
|
+ // tree.value?.refresh();
|
|
|
+ treeKey.value = s8();
|
|
|
};
|
|
|
|
|
|
const pastePage = async (node) => {
|
|
@@ -271,9 +306,12 @@ const pastePage = async (node) => {
|
|
|
if (node) {
|
|
|
if (node.data.type === 'page') {
|
|
|
tree.value.insertAfter(node.value, item);
|
|
|
+ treeAppend(data.tree,node.value,item);
|
|
|
} else {
|
|
|
tree.value.appendTo(node.value, item);
|
|
|
+ treeAppend(data.tree,node.value,item);
|
|
|
}
|
|
|
+ treeKey.value = s8();
|
|
|
}
|
|
|
data.actived = [item.value];
|
|
|
let acNode = tree.value.getItem(item.value);
|
|
@@ -297,6 +335,7 @@ const pastePage = async (node) => {
|
|
|
const ret1: any = await addCollection('v', body); // 新增
|
|
|
if (ret1.id) {
|
|
|
saveProject(ret1.id);
|
|
|
+ item.pageId = ret1.id;
|
|
|
router.push({
|
|
|
path: '/',
|
|
|
query: {
|
|
@@ -342,7 +381,8 @@ const insertAfter = async (node, folder?: boolean) => {
|
|
|
item.children = [];
|
|
|
}
|
|
|
if (item) {
|
|
|
- await tree.value.insertAfter(node.value, item);
|
|
|
+ treeAppend(data.tree,node.value,item);
|
|
|
+ // await tree.value.insertAfter(node.value, item);
|
|
|
// setLabel(item.value);
|
|
|
}
|
|
|
};
|
|
@@ -483,6 +523,7 @@ const getScene = async (e) => {
|
|
|
ret.data.id = undefined; //meta2d.store.data.id;
|
|
|
meta2d.open(ret.data);
|
|
|
history.replaceState({}, document.title, window.location.pathname);
|
|
|
+ dot.value = true;
|
|
|
} else if (projectDialog.value.type === 'v') {
|
|
|
//TODO 一个页面不能被多个项目引用。
|
|
|
const ret: any = await getCollection('v', e.id, 'id,other_data');
|