From c3738fab45de01ab53395963c588c4968a028e2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A5=94=E8=B7=91=E7=9A=84=E9=9D=A2=E6=9D=A1?= <1262327911@qq.com> Date: Tue, 24 May 2022 18:16:33 +0800 Subject: [PATCH] =?UTF-8?q?faet:=20=E6=96=B0=E5=A2=9E=E4=BF=9D=E5=AD=98?= =?UTF-8?q?=E5=BF=AB=E6=8D=B7=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/enums/editPageEnum.ts | 3 ++- src/utils/router.ts | 13 +++++++++++++ src/views/chart/hooks/useKeyboard.hook.ts | 14 +++++++++++++- src/views/chart/hooks/useSync.hook.ts | 14 ++++---------- 4 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/enums/editPageEnum.ts b/src/enums/editPageEnum.ts index 7e4fdac5..068dbbaa 100644 --- a/src/enums/editPageEnum.ts +++ b/src/enums/editPageEnum.ts @@ -19,7 +19,8 @@ export enum MenuEnum { DOWN = 'down', CLEAR = 'clear', BACK = 'back', - FORWORD = 'forward' + FORWORD = 'forward', + SAVE = 'save' } // Win 键盘枚举 diff --git a/src/utils/router.ts b/src/utils/router.ts index 2b28bf65..b1ee6a76 100644 --- a/src/utils/router.ts +++ b/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 diff --git a/src/views/chart/hooks/useKeyboard.hook.ts b/src/views/chart/hooks/useKeyboard.hook.ts index 0d7d4ad2..c20ddb8e 100644 --- a/src/views/chart/hooks/useKeyboard.hook.ts +++ b/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 = [ winKeyboardValue.back, winKeyboardValue.forward, + + winKeyboardValue.save, ] // Mac 快捷键列表 @@ -73,6 +78,8 @@ const macKeyList: Array = [ 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) => { diff --git a/src/views/chart/hooks/useSync.hook.ts b/src/views/chart/hooks/useSync.hook.ts index 158fae7c..1321c62b 100644 --- a/src/views/chart/hooks/useSync.hook.ts +++ b/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)