فهرست منبع

Merge branch 'dev' of http://124.70.149.18:10880/lianghj/queenshow into dev

liwei 1 سال پیش
والد
کامیت
5f370f4431

+ 2 - 2
src/modules/editor/actions/edit.ts

@@ -18,8 +18,8 @@ export const editActions = EditorModule.action({
   },
   // 切换到父组件
   pickParentComp(compId: string) {
-    const pid = this.helper.findComp(compId)?.pid;
-    pid && this.store.setCurrComp(pid);
+    const parentComp = this.helper.findParentComp(compId);
+    parentComp && this.store.setCurrComp(parentComp.id);
   },
   // 删除组件
   removeComp(compId: string) {

+ 2 - 2
src/modules/editor/components/CompUI/basicUI/Container/component.tsx

@@ -23,8 +23,8 @@ export const Component = defineComponent({
           left: helper.designToNaturalSize(value.position[0]),
         }}
       >
-        {Object.values(children).map((comp) => {
-          const compItem = comp as DesignComp;
+        {children.default.map((compId) => {
+          const compItem = helper.findComp(compId) as DesignComp;
           const Comp = CompUI[compItem.compKey].Component;
           return <Comp key={compItem.id} compId={compItem.id} />;
         })}

+ 3 - 0
src/modules/editor/components/CompUI/basicUI/Container/index.ts

@@ -17,6 +17,9 @@ export const { createComp, useCompData } = createCompHooks({
   layout: {
     size: [200, 200],
   },
+  children: {
+    default: () => [] as string[],
+  },
 });
 
 export const Form = createAttrsForm([

+ 3 - 2
src/modules/editor/defines/DesignTemp/versions/0.0.1.ts

@@ -10,11 +10,12 @@ export function dataTransform(data: any) {
     const comp = args.pop();
     set(data.content, args.join("."), comp.id);
     data.compMap[comp.id] = comp;
-    if (!comp.children)
+    if (!comp.children) {
       comp.children = (CompUI as any)[comp.compKey].createComp({
         compKey: comp.compKey,
       }).children;
-    addCacheToMap(data.compMap);
+      addCacheToMap(data.compMap);
+    }
   });
   return data;
 }

+ 20 - 3
src/modules/editor/helpers/index.ts

@@ -12,11 +12,28 @@ export const helpers = EditorModule.helper({
   },
   findParentComp(compId: string): DesignComp | undefined {
     const comp = this.helper.findComp(compId);
-    if (comp?.pid) {
-      return this.helper.findComp(comp?.pid);
-    }
+    const parentComp = Object.values(this.store.designData.compMap).find(
+      (comp) => {
+        const ids = this.helper.getCompChildIds(comp);
+        return ids.includes(compId);
+      }
+    );
+    return parentComp;
   },
   findRootComp() {
     return this.store.designData.compMap["root"];
   },
+  getCompChildIds(comp: DesignComp) {
+    function getIds(data: any, ids: string[] = []) {
+      if (data instanceof Array) {
+        data.forEach((item) => getIds(item, ids));
+      } else if (data instanceof Object) {
+        Object.values(data).forEach((item) => getIds(item, ids));
+      } else if (typeof data === "string") {
+        ids.push(data);
+      }
+      return ids;
+    }
+    return getIds(comp.children);
+  },
 });

+ 2 - 2
src/modules/editor/stores/index.ts

@@ -41,8 +41,8 @@ export const store = EditorModule.store({
     insertCompContainer(compKey: ICompKeys, container: DesignComp) {
       const compId = createCompId(compKey);
       addCacheToMap(this.store.designData.compMap);
-      container.children || (container.children = {});
-      container.children[compId] = compId;
+      container.children.default || (container.children.default = []);
+      container.children.default.push(compId);
       return compId;
     },
     setCurrComp(compId: string) {