From 9a5d71fb5cab29f4ed34465339416575d63904c7 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: Mon, 23 May 2022 23:50:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=95=B0=E6=8D=AE=E5=8A=9F=E8=83=BD=EF=BC=8C?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=90=8C=E6=AD=A5=E6=95=B0=E6=8D=AE=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/path/project.ts | 20 +++ src/enums/editPageEnum.ts | 12 ++ src/i18n/zh/index.ts | 2 +- src/plugins/icon.ts | 7 +- .../chartEditStore/chartEditStore.d.ts | 9 +- .../modules/chartEditStore/chartEditStore.ts | 14 +- .../components/EditBottom/index.vue | 16 ++- .../components/EditDataSync/index.ts | 3 + .../components/EditDataSync/index.vue | 75 +++++++++++ .../components/EditHistory/index.vue | 5 +- .../components/EditShortcutKey/index.ts | 1 + .../EditTools/hooks/useFile.hooks.ts | 53 +------- .../components/EditTools/index.vue | 2 +- .../components/EditTools/utils/index.ts | 2 +- src/views/chart/ContentEdit/index.vue | 6 +- src/views/chart/hooks/useSync.hook.ts | 127 ++++++++++++++++++ 16 files changed, 282 insertions(+), 72 deletions(-) create mode 100644 src/views/chart/ContentEdit/components/EditDataSync/index.ts create mode 100644 src/views/chart/ContentEdit/components/EditDataSync/index.vue create mode 100644 src/views/chart/hooks/useSync.hook.ts diff --git a/src/api/path/project.ts b/src/api/path/project.ts index 56eee5b6..8d2d2c6d 100644 --- a/src/api/path/project.ts +++ b/src/api/path/project.ts @@ -32,6 +32,26 @@ export const fetchProjectApi = async (data: object) => { } } +// * 保存项目 +export const saveProjectApi = async (data: object) => { + try { + const res = await http(RequestHttpEnum.POST)(`${ModuleTypeEnum.PROJECT}/save/data`, data); + return res; + } catch { + httpErrorHandle(); + } +} + +// * 修改项目 +export const updateProjectApi = async (data: object) => { + try { + const res = await http(RequestHttpEnum.POST)(`${ModuleTypeEnum.PROJECT}/edit`, data); + return res; + } catch { + httpErrorHandle(); + } +} + // * 删除项目 export const deleteProjectApi = async (data: object) => { diff --git a/src/enums/editPageEnum.ts b/src/enums/editPageEnum.ts index 1bd8fbc6..7e4fdac5 100644 --- a/src/enums/editPageEnum.ts +++ b/src/enums/editPageEnum.ts @@ -35,4 +35,16 @@ export enum MacKeyboard { CTRL = '⌘', SHIFT = '⇧', ALT = '⌥', +} + +// 同步状态枚举 +export enum SyncEnum { + // 等待 + PENDING, + // 开始 + START, + // 成功 + SUCCESS, + // 失败 + FAILURE } \ No newline at end of file diff --git a/src/i18n/zh/index.ts b/src/i18n/zh/index.ts index 80653ded..61587031 100644 --- a/src/i18n/zh/index.ts +++ b/src/i18n/zh/index.ts @@ -34,7 +34,7 @@ const global = { } const http = { - error_message: '接口异常,请检查!', + error_message: '获取数据失败,请稍后重试!', token_overdue_message: '登录过期,请重新登录!' } diff --git a/src/plugins/icon.ts b/src/plugins/icon.ts index 7a9b3adf..50b4fffb 100644 --- a/src/plugins/icon.ts +++ b/src/plugins/icon.ts @@ -52,7 +52,8 @@ import { ArrowBack as ArrowBackIcon, ArrowForward as ArrowForwardIcon, Planet as PawIcon, - Search as SearchIcon + Search as SearchIcon, + Reload as ReloadIcon } from '@vicons/ionicons5' import { @@ -190,7 +191,9 @@ const ionicons5 = { // 狗爪 PawIcon, // 搜索(放大镜) - SearchIcon + SearchIcon, + // 加载 + ReloadIcon } const carbon = { diff --git a/src/store/modules/chartEditStore/chartEditStore.d.ts b/src/store/modules/chartEditStore/chartEditStore.d.ts index 653fc467..34a24a8d 100644 --- a/src/store/modules/chartEditStore/chartEditStore.d.ts +++ b/src/store/modules/chartEditStore/chartEditStore.d.ts @@ -1,6 +1,7 @@ import { CreateComponentType, FilterEnum} from '@/packages/index.d' import { HistoryActionTypeEnum } from '@/store/modules/chartHistoryStore/chartHistoryStore.d' import { RequestHttpEnum, RequestDataTypeEnum } from '@/enums/httpEnum' +import { SyncEnum } from '@/enums/editPageEnum' import { PreviewScaleEnum } from '@/enums/styleEnum' import type { ChartColorsNameType, @@ -17,9 +18,10 @@ export enum EditCanvasTypeEnum { LOCK_SCALE = 'lockScale', IS_CREATE = 'isCreate', IS_DRAG = 'isDrag', + SAVE_STATUS = 'saveStatus' } -// 编辑区域 +// 编辑区域(临时) export type EditCanvasType = { // 编辑区域 DOM [EditCanvasTypeEnum.EDIT_LAYOUT_DOM]: HTMLElement | null @@ -36,6 +38,8 @@ export type EditCanvasType = { [EditCanvasTypeEnum.IS_CREATE]: boolean // 拖拽中 [EditCanvasTypeEnum.IS_DRAG]: boolean + // 保存状态 + [EditCanvasTypeEnum.SAVE_STATUS]: SyncEnum } // 滤镜/背景色/宽高主题等 @@ -50,6 +54,7 @@ export enum EditCanvasConfigEnum { PREVIEW_SCALE_TYPE = 'previewScaleType', } +// 画布属性(需保存) export interface EditCanvasConfigType { // 滤镜-色相 [FilterEnum.HUE_ROTATE]: number @@ -137,6 +142,7 @@ export type RequestGlobalConfigType = { // 轮询时间 requestInterval: number } + // 单个图表请求配置 export type RequestConfigType = { // 获取数据的方式 @@ -159,6 +165,7 @@ export interface ChartEditStoreType { [ChartEditStoreEnum.COMPONENT_LIST]: CreateComponentType[] } +// 需要存储的数据内容 export interface ChartEditStorage { [ChartEditStoreEnum.EDIT_CANVAS_CONFIG]: EditCanvasConfigType [ChartEditStoreEnum.REQUEST_GLOBAL_CONFIG]: RequestGlobalConfigType diff --git a/src/store/modules/chartEditStore/chartEditStore.ts b/src/store/modules/chartEditStore/chartEditStore.ts index 843c942e..16e4e09e 100644 --- a/src/store/modules/chartEditStore/chartEditStore.ts +++ b/src/store/modules/chartEditStore/chartEditStore.ts @@ -9,9 +9,11 @@ import { requestInterval, previewScaleType } from '@/settings/designSetting' import { useChartHistoryStore } from '@/store/modules/chartHistoryStore/chartHistoryStore' // 全局设置 import { useSettingStore } from '@/store/modules/settingStore/settingStore' +// 历史类型 import { HistoryActionTypeEnum, HistoryItemType, HistoryTargetTypeEnum } from '@/store/modules/chartHistoryStore/chartHistoryStore.d' -import { MenuEnum } from '@/enums/editPageEnum' -import { PreviewScaleEnum } from '@/enums/styleEnum' +// 画布枚举 +import { MenuEnum, SyncEnum } from '@/enums/editPageEnum' + import { ChartEditStoreEnum, ChartEditStorage, @@ -47,7 +49,9 @@ export const useChartEditStore = defineStore({ // 初始化 isCreate: false, // 拖拽中 - isDrag: false + isDrag: false, + // 同步中 + saveStatus: SyncEnum.PENDING }, // 右键菜单 rightMenuShow: false, @@ -517,8 +521,8 @@ export const useChartEditStore = defineStore({ attr.x -= distance break; } - }, - // ---------------- + }, + // * 页面缩放设置----------------- // * 设置页面大小 setPageSize(scale: number): void { this.setPageStyle('height', `${this.editCanvasConfig.height * scale}px`) diff --git a/src/views/chart/ContentEdit/components/EditBottom/index.vue b/src/views/chart/ContentEdit/components/EditBottom/index.vue index 864806f9..c0aa4786 100644 --- a/src/views/chart/ContentEdit/components/EditBottom/index.vue +++ b/src/views/chart/ContentEdit/components/EditBottom/index.vue @@ -1,6 +1,10 @@