liwei 1 年之前
父節點
當前提交
e2a3c1bced

+ 6 - 0
src/modules/editor/components/CompUI/defines/createAttrsForm.tsx

@@ -6,6 +6,7 @@ import { any } from "vue-types";
 import { GroupNumber } from "../formItems/GroupNumber";
 import Slider from "../formItems/Slider";
 import { createColorOpts } from "./formOpts/createColorOpts";
+import { Switch } from "ant-design-vue";
 
 export const layoutColumns: ColumnItem[] = [
   {
@@ -105,6 +106,11 @@ export const layoutColumns: ColumnItem[] = [
       step: 1,
     },
   },
+  {
+    label: "锁定",
+    dataIndex: "layout.locked",
+    component: "Switch",
+  },
 ];
 
 export const bgColumns: ColumnItem[] = [

+ 17 - 3
src/modules/editor/controllers/SelectCtrl/index.ts

@@ -250,7 +250,7 @@ export class SelectCtrl extends ModuleControl<EditorModule> {
         this._state = MODE_SCALE_WIDTH;
         if (
           this.store.selected.length == 1 &&
-          this.store.currComp.compKey == "Text"
+          (this.selected[0].comp.compKey == "Text" || this.selected[0].comp.compKey == "Group")
         ) {
           //拖拽的是文本
           const scaleFlags = [
@@ -617,6 +617,16 @@ export class SelectCtrl extends ModuleControl<EditorModule> {
     this.transferStyle.matrix = matrix;
     this.transferStyle.matrixInvert = matrixInvert;
     this.transferStyle.showOrthScale = this.selected.length == 1;
+
+    if (this.selected.length == 1) {
+        const comp = this.selected[0].comp
+        if (comp.compKey == "Group") {
+          this.transferStyle.showOrthScale = false;
+        }
+        if (comp.layout.locked) {
+          this.transferStyle.showGizmo = false;
+        }
+    }
   }
 
   selectId(id: string) {
@@ -863,8 +873,12 @@ export class SelectCtrl extends ModuleControl<EditorModule> {
     let dirOrth = ["scaleright", "scaleleft", "scalebottom", "scaletop"];
 
     const rect = this.store.currStreamCard.$el.getBoundingClientRect();
-    let StartX = event.clientX - rect.left;
-    let StartY = event.clientY - rect.top;
+
+    const maget = this.assistMagnet as AssistMagnetCtrl;
+    maget.test(event);
+
+    let StartX = maget.clientX - rect.left;
+    let StartY = maget.clientY - rect.top;
     const objContainer = this.objContainer as ObjsContainer;
 
     //获取当前屏幕坐标和选框中心点坐标,计算旋转值

+ 5 - 0
src/modules/editor/objects/DesignTemp/creates/createCompStyle.ts

@@ -24,6 +24,11 @@ export function createCompStyle(module: EditorModule, layout: Layout) {
     style["overflow"] = "hidden";
   }
 
+
+  if (layout.locked === true) { 
+    style["pointer-events"] = "none";
+  }
+
   if (layout.zIndex) {
     style["zIndex"] = layout.zIndex;
   }

+ 1 - 1
src/modules/editor/typings.ts

@@ -22,7 +22,7 @@ export type Layout = {
   transformMatrix?: string;
   opacity?: number;
   radius?: number;
-
+  locked?: boolean;
   background?: Background;
 };