zhangjie 2 жил өмнө
parent
commit
e9ba038926

+ 12 - 1
card/modules/free/components/CardFreeDesign.vue

@@ -185,12 +185,16 @@
     <right-click-menu></right-click-menu>
     <!-- shortcut-key -->
     <shortcut-key
+      ref="ShortcutKey"
       @sk-save="skSave"
       @sk-submit="skSubmit"
       @sk-preview="skPreview"
     ></shortcut-key>
     <!-- help-dialog -->
-    <help-dialog ref="HelpDialog"></help-dialog>
+    <help-dialog
+      ref="HelpDialog"
+      @on-enable="shortcutEnableChange"
+    ></help-dialog>
   </div>
 </template>
 
@@ -359,6 +363,13 @@ export default {
     skPreview() {
       this.toPreview();
     },
+    shortcutEnableChange(enable) {
+      if (enable) {
+        this.$refs.ShortcutKey.registShortcutKey();
+      } else {
+        this.$refs.ShortcutKey.removeShortcutKey();
+      }
+    },
     toPreview() {
       this.$emit("on-preview", {
         cardConfig: this.cardConfig,

+ 9 - 0
card/modules/free/components/HelpDialog.vue

@@ -8,6 +8,9 @@
     :close-on-click-modal="false"
     append-to-body
   >
+    <div>
+      启用快捷键:<el-switch v-model="shortcutEnable">启用快捷键</el-switch>
+    </div>
     <el-table size="medium" :data="SHORTCUT_KEYS">
       <el-table-column prop="name" label="命令"></el-table-column>
       <el-table-column prop="keys" label="快捷键">
@@ -34,9 +37,15 @@ export default {
   data() {
     return {
       dialogVisible: false,
+      shortcutEnable: false,
       SHORTCUT_KEYS,
     };
   },
+  watch: {
+    shortcutEnable(val) {
+      this.$emit("on-enable", val);
+    },
+  },
   methods: {
     cancel() {
       this.dialogVisible = false;

+ 13 - 14
card/modules/free/components/ShortcutKey.vue

@@ -21,11 +21,9 @@ export default {
       "curPageNo",
       "curColumnId",
       "curCopyElement",
+      "openElementEditDialog",
     ]),
   },
-  mounted() {
-    this.registShortcutKey();
-  },
   methods: {
     ...mapMutations("free", ["setCurCopyElement", "setOpenElementEditDialog"]),
     ...mapActions("free", [
@@ -37,14 +35,15 @@ export default {
       "moveElementZindex",
     ]),
     keyEvent(e) {
-      // console.log(e);
+      if (this.openElementEditDialog) return;
 
       // move
       const moveAction = ["ArrowUp", "ArrowDown", "ArrowLeft", "ArrowRight"];
+      const isCtrlKey = e.ctrlKey || e.metaKey;
       if (moveAction.includes(e.code)) {
         e.preventDefault();
         // move zindex
-        if (e.ctrlKey) {
+        if (isCtrlKey) {
           this.toMoverElementZindex(e.code);
           return;
         }
@@ -53,32 +52,32 @@ export default {
         return;
       }
 
-      if (e.code === "KeyC" && e.ctrlKey && !e.repeat) {
+      if (e.code === "KeyC" && isCtrlKey && !e.repeat) {
         e.preventDefault();
         this.toCopeElement();
         return;
       }
-      if (e.code === "KeyV" && e.ctrlKey && !e.repeat) {
+      if (e.code === "KeyV" && isCtrlKey && !e.repeat) {
         e.preventDefault();
         this.toPasteElement();
         return;
       }
-      if (e.code === "KeyE" && e.ctrlKey && !e.repeat) {
+      if (e.code === "KeyE" && isCtrlKey && !e.repeat) {
         e.preventDefault();
         this.toEditElement();
         return;
       }
-      if (e.code === "KeyP" && e.ctrlKey && !e.repeat) {
+      if (e.code === "KeyP" && isCtrlKey && !e.repeat) {
         e.preventDefault();
         this.$emit("sk-preview");
         return;
       }
-      if (e.code === "KeyS" && e.ctrlKey && !e.shiftKey && !e.repeat) {
+      if (e.code === "KeyS" && isCtrlKey && !e.shiftKey && !e.repeat) {
         e.preventDefault();
         this.$emit("sk-save");
         return;
       }
-      if (e.code === "KeyS" && e.ctrlKey && e.shiftKey && !e.repeat) {
+      if (e.code === "KeyS" && isCtrlKey && e.shiftKey && !e.repeat) {
         e.preventDefault();
         this.$emit("sk-submit");
         return;
@@ -86,7 +85,7 @@ export default {
 
       if (
         e.code === "Delete" &&
-        !e.ctrlKey &&
+        !isCtrlKey &&
         !e.altKey &&
         !e.shiftKey &&
         !e.repeat
@@ -99,13 +98,13 @@ export default {
 
       // create new page
       // ctrl+n / ctrl+shift+n :无法重置浏览器默认操作
-      if (e.code === "KeyN" && e.ctrlKey && e.altKey && !e.repeat) {
+      if (e.code === "KeyN" && isCtrlKey && e.altKey && !e.repeat) {
         e.preventDefault();
         this.toAddPage();
         return;
       }
       // ctrl+alt+delete :无法重置系统默认操作
-      if (e.code === "KeyD" && e.ctrlKey && e.altKey && !e.repeat) {
+      if (e.code === "KeyD" && isCtrlKey && e.altKey && !e.repeat) {
         e.preventDefault();
         this.toDeletePage();
         return;