瀏覽代碼

faet: 新增保存快捷键

奔跑的面条 3 年之前
父節點
當前提交
c3738fab45
共有 4 個文件被更改,包括 32 次插入12 次删除
  1. 2 1
      src/enums/editPageEnum.ts
  2. 13 0
      src/utils/router.ts
  3. 13 1
      src/views/chart/hooks/useKeyboard.hook.ts
  4. 4 10
      src/views/chart/hooks/useSync.hook.ts

+ 2 - 1
src/enums/editPageEnum.ts

@@ -19,7 +19,8 @@ export enum MenuEnum {
   DOWN = 'down',
   CLEAR = 'clear',
   BACK = 'back',
-  FORWORD = 'forward'
+  FORWORD = 'forward',
+  SAVE = 'save'
 }
 
 // Win 键盘枚举

+ 13 - 0
src/utils/router.ts

@@ -163,6 +163,19 @@ export const fetchRouteParams = () => {
   }
 }
 
+/**
+ * * 通过硬解析获取当前路由下的参数
+ * @returns object
+ */
+export const fetchRouteParamsByhistory = () => {
+  try {
+    return document.location.hash.split('/').pop() || ''
+  } catch (error) {
+    window['$message'].warning('查询路由信息失败,请联系管理员!')
+    return ''
+  }
+}
+
 /**
  * * 回到主页面
  * @param confirm

+ 13 - 1
src/views/chart/hooks/useKeyboard.hook.ts

@@ -1,4 +1,5 @@
 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
+import { useSync } from './useSync.hook' 
 import { WinKeyboard, MacKeyboard, MenuEnum } from '@/enums/editPageEnum'
 import throttle from 'lodash/throttle'
 import debounce from 'lodash/debounce'
@@ -6,7 +7,7 @@ import debounce from 'lodash/debounce'
 import keymaster from 'keymaster'
 // Keymaster可以支持识别以下组合键: ⇧,shift,option,⌥,alt,ctrl,control,command,和⌘
 const chartEditStore = useChartEditStore()
-
+const useSyncIns = useSync()
 const winCtrlMerge = (e: string) => `${WinKeyboard.CTRL}+${e}`
 const winShiftMerge = (e: string) => `${WinKeyboard.SHIFT}+${e}`
 const winAltMerge = (e: string) => `${WinKeyboard.ALT}+${e}`
@@ -22,6 +23,7 @@ export const winKeyboardValue = {
   [MenuEnum.DELETE]: 'delete',
   [MenuEnum.BACK]: winCtrlMerge('z'),
   [MenuEnum.FORWORD]: winCtrlMerge(winShiftMerge('z')),
+  [MenuEnum.SAVE]: winCtrlMerge('s'),
 }
 
 // 这个 Ctrl 后面还是换成了 ⌘
@@ -41,6 +43,7 @@ export const macKeyboardValue = {
   [MenuEnum.DELETE]: macCtrlMerge('backspace'),
   [MenuEnum.BACK]: macCtrlMerge('z'),
   [MenuEnum.FORWORD]: macCtrlMerge(macShiftMerge('z')),
+  [MenuEnum.SAVE]: macCtrlMerge('s'),
 }
 
 // Win 快捷键列表
@@ -57,6 +60,8 @@ const winKeyList: Array<string> = [
 
   winKeyboardValue.back,
   winKeyboardValue.forward,
+
+  winKeyboardValue.save,
 ]
 
 // Mac 快捷键列表
@@ -73,6 +78,8 @@ const macKeyList: Array<string> = [
 
   macKeyboardValue.back,
   macKeyboardValue.forward,
+
+  macKeyboardValue.save,
 ]
 
 // 初始化监听事件
@@ -121,6 +128,11 @@ export const useAddKeyboard = () => {
       case keyboardValue.forward:
         keymaster(e, throttle(() => { chartEditStore.setForward(); return false }, 200))
         break;
+
+      // 保存 ct+s
+      case keyboardValue.save:
+        keymaster(e, throttle(() => { useSyncIns.dataSyncUpdate(); return false }, 200))
+        break;
     }
   }
   winKeyList.forEach((key: string) => {

+ 4 - 10
src/views/chart/hooks/useSync.hook.ts

@@ -1,6 +1,5 @@
 import { onUnmounted } from 'vue';
-import { useRoute } from 'vue-router'
-import { httpErrorHandle } from '@/utils'
+import { httpErrorHandle, fetchRouteParamsByhistory } from '@/utils'
 import { useChartEditStore } from '@/store/modules/chartEditStore/chartEditStore'
 import { EditCanvasTypeEnum, ChartEditStoreEnum } from '@/store/modules/chartEditStore/chartEditStore.d'
 import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore'
@@ -18,7 +17,6 @@ import { SyncEnum } from '@/enums/editPageEnum'
 export const useSync = () => {
   const chartEditStore = useChartEditStore()
   const chartHistoryStore = useChartHistoryStore()
-  const routerParamsInfo = useRoute()
 
   /**
    * * 组件动态注册
@@ -71,8 +69,7 @@ export const useSync = () => {
   const dataSyncFetch = async () => {
     chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.START)
     try {
-      const { id } = routerParamsInfo.params
-      const res: any = await fetchProjectApi({ projectId: id[0] })
+      const res: any = await fetchProjectApi({ projectId: fetchRouteParamsByhistory() })
       if (res.code === ResultEnum.SUCCESS) {
         if (res.data) {
           const data = JSON.parse(res.data)
@@ -93,13 +90,10 @@ export const useSync = () => {
 
   // 数据保存
   const dataSyncUpdate = async () => {
-
     chartEditStore.setEditCanvas(EditCanvasTypeEnum.SAVE_STATUS, SyncEnum.START)
-    // 获取id
-    const { id } = routerParamsInfo.params
-
+    
     let params = new FormData()
-    params.append('projectId', id[0])
+    params.append('projectId', fetchRouteParamsByhistory())
     params.append('content', JSON.stringify(chartEditStore.getStorageInfo || {}))
     const res: any = await saveProjectApi(params)