From 0946d170d72fd88fa5d876336d125ad248fa9390 Mon Sep 17 00:00:00 2001 From: mtruning <1262327911@qq.com> Date: Sun, 6 Mar 2022 02:08:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E9=A2=84=E8=A7=88?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/SystemSet/index.vue | 20 +++---- src/enums/pageEnum.ts | 6 ++ src/enums/storageEnum.ts | 14 +++-- src/router/index.ts | 3 +- src/router/modules/index.ts | 4 +- src/router/modules/preview.route.ts | 20 +++++++ .../chartEditStore/chartEditStore.d.ts | 7 ++- .../modules/chartEditStore/chartEditStore.ts | 14 ++++- src/utils/router.ts | 20 +++++-- src/utils/storage.ts | 5 +- src/views/chart/HeaderRightBtn/index.vue | 55 ++++++++++++++++--- src/views/chart/HeaderTitle/index.vue | 6 +- src/views/preview/index.vue | 36 ++++++++++++ 13 files changed, 172 insertions(+), 38 deletions(-) create mode 100644 src/router/modules/preview.route.ts create mode 100644 src/views/preview/index.vue diff --git a/src/components/SystemSet/index.vue b/src/components/SystemSet/index.vue index 8994fa52..8ba59157 100644 --- a/src/components/SystemSet/index.vue +++ b/src/components/SystemSet/index.vue @@ -69,16 +69,6 @@ defineProps({ const settingStore = useSettingStore() const list = reactive([ - { - key: SettingStoreEnums.CHART_ALIGN_RANGE, - value: settingStore.getChartAlignRange, - type: 'number', - name: '吸附距离', - min: 10, - suffix: 'px', - step: 2, - desc: '移动图表时的吸附距离' - }, { key: SettingStoreEnums.ASIDE_ALL_COLLAPSED, value: settingStore.getAsideAllCollapsed, @@ -100,6 +90,16 @@ const list = reactive([ name: '切换语言', desc: '切换语言重新加载页面', tip: '若遇到部分区域语言切换失败,则开启' + }, + { + key: SettingStoreEnums.CHART_ALIGN_RANGE, + value: settingStore.getChartAlignRange, + type: 'number', + name: '吸附距离', + min: 10, + suffix: 'px', + step: 2, + desc: '移动图表时的吸附距离' } ]) diff --git a/src/enums/pageEnum.ts b/src/enums/pageEnum.ts index 4019dbdc..af5c92bf 100644 --- a/src/enums/pageEnum.ts +++ b/src/enums/pageEnum.ts @@ -6,6 +6,12 @@ export enum ChartEnum { CHART_HOME_NAME = 'ChartHome', } +export enum PreviewEnum { + // 图表预览 + CHART_PREVIEW = '/chart/preview/:id(.*)*', + CHART_PREVIEW_NAME = 'ChartPreview', +} + export enum PageEnum { // 登录 BASE_LOGIN = '/login', diff --git a/src/enums/storageEnum.ts b/src/enums/storageEnum.ts index 84e144fc..b0818a24 100644 --- a/src/enums/storageEnum.ts +++ b/src/enums/storageEnum.ts @@ -1,14 +1,16 @@ export enum StorageEnum { // 全局设置 - GO_SYSTEM_SETTING_STORE = 'GO-SYSTEM-SETTING', + GO_SYSTEM_SETTING_STORE = 'GO_SYSTEM_SETTING', // token 等信息 - GO_ACCESS_TOKEN_STORE = 'GO-ACCESS-TOKEN', + GO_ACCESS_TOKEN_STORE = 'GO_ACCESS_TOKEN', // 登录信息 GO_LOGIN_INFO_STORE = 'GO_LOGIN_INFO', // 语言 - GO_LANG_STORE = 'GO-LANG', + GO_LANG_STORE = 'GO_LANG', // 当前选择的主题 - GO_DESIGN_STORE = 'GO-DESIGN', - // 拖拽页面 - GO_CHART_LAYOUT_STORE = 'GO-Chart-Layout-Store' + GO_DESIGN_STORE = 'GO_DESIGN', + // 工作台布局配置 + GO_CHART_LAYOUT_STORE = 'GO_CHART_LAYOUT', + // 工作台需要保存的数据 + GO_CHART_STORAGE_LIST = 'GO_CHART_STORAGE_LIST' } diff --git a/src/router/index.ts b/src/router/index.ts index 6c6d4705..88e42395 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -20,7 +20,8 @@ const RootRoute: Array = [ children: [ ...HttpErrorPage, modules.projectRoutes, - modules.chartRoutes + modules.chartRoutes, + modules.previewRoutes ] } ] diff --git a/src/router/modules/index.ts b/src/router/modules/index.ts index 5363caf2..3be2427b 100644 --- a/src/router/modules/index.ts +++ b/src/router/modules/index.ts @@ -1,7 +1,9 @@ import projectRoutes from './project.router' import chartRoutes from './chart.route' +import previewRoutes from './preview.route' export default { projectRoutes, - chartRoutes + chartRoutes, + previewRoutes } \ No newline at end of file diff --git a/src/router/modules/preview.route.ts b/src/router/modules/preview.route.ts new file mode 100644 index 00000000..d6741008 --- /dev/null +++ b/src/router/modules/preview.route.ts @@ -0,0 +1,20 @@ +import { RouteRecordRaw } from 'vue-router' +import { PreviewEnum } from '@/enums/pageEnum' + +// 引入路径 +const importPath = { + 'PreviewEnum.CHART_PREVIEW_NAME': () => import('@/views/preview/index.vue') +} + +const chartRoutes: RouteRecordRaw = { + path: PreviewEnum.CHART_PREVIEW, + name: PreviewEnum.CHART_PREVIEW_NAME, + component: importPath['PreviewEnum.CHART_PREVIEW_NAME'], + meta: { + title: '预览', + isRoot: true + } +} + + +export default chartRoutes \ No newline at end of file diff --git a/src/store/modules/chartEditStore/chartEditStore.d.ts b/src/store/modules/chartEditStore/chartEditStore.d.ts index 682deeaf..fcb64202 100644 --- a/src/store/modules/chartEditStore/chartEditStore.d.ts +++ b/src/store/modules/chartEditStore/chartEditStore.d.ts @@ -120,7 +120,7 @@ export enum ChartEditStoreEnum { } // Store 类型 -export interface chartEditStoreType { +export interface ChartEditStoreType { [ChartEditStoreEnum.EDIT_CANVAS]: EditCanvasType [ChartEditStoreEnum.EDIT_CANVAS_CONFIG]: EditCanvasConfigType [ChartEditStoreEnum.RIGHT_MENU_SHOW]: boolean @@ -129,3 +129,8 @@ export interface chartEditStoreType { [ChartEditStoreEnum.RECORD_CHART]?: RecordChartType [ChartEditStoreEnum.COMPONENT_LIST]: CreateComponentType[] } + +export interface ChartEditStorage { + [ChartEditStoreEnum.EDIT_CANVAS_CONFIG]: EditCanvasConfigType, + [ChartEditStoreEnum.COMPONENT_LIST]: CreateComponentType[] +} \ No newline at end of file diff --git a/src/store/modules/chartEditStore/chartEditStore.ts b/src/store/modules/chartEditStore/chartEditStore.ts index 32a79987..39333971 100644 --- a/src/store/modules/chartEditStore/chartEditStore.ts +++ b/src/store/modules/chartEditStore/chartEditStore.ts @@ -8,7 +8,9 @@ import { defaultTheme, globalThemeJson } from '@/settings/chartThemes/index' import { useChartHistoryStoreStore } from '@/store/modules/chartHistoryStore/chartHistoryStore' import { HistoryActionTypeEnum, HistoryItemType, HistoryTargetTypeEnum } from '@/store/modules/chartHistoryStore/chartHistoryStore.d' import { - chartEditStoreType, + ChartEditStoreEnum, + ChartEditStorage, + ChartEditStoreType, EditCanvasType, MousePositionType, TargetChartType, @@ -21,7 +23,7 @@ const chartHistoryStoreStore = useChartHistoryStoreStore() // 编辑区域内容 export const useChartEditStore = defineStore({ id: 'useChartEditStore', - state: (): chartEditStoreType => ({ + state: (): ChartEditStoreType => ({ // 画布属性 editCanvas: { // 编辑区域 Dom @@ -106,6 +108,13 @@ export const useChartEditStore = defineStore({ }, getComponentList(): CreateComponentType[] { return this.componentList + }, + // 获取需要存储的数据项 + getStorageInfo(): ChartEditStorage { + return { + [ChartEditStoreEnum.EDIT_CANVAS_CONFIG]: this.getEditCanvasConfig, + [ChartEditStoreEnum.COMPONENT_LIST]: this.getComponentList + } } }, actions: { @@ -113,6 +122,7 @@ export const useChartEditStore = defineStore({ setEditCanvas(key: T, value: K) { this.editCanvas[key] = value }, + // * 设置 editCanvasConfig(需保存后端) 数据项 setEditCanvasConfig(key: T, value: K) { this.editCanvasConfig[key] = value }, diff --git a/src/utils/router.ts b/src/utils/router.ts index 4abdc3e6..ac068b48 100644 --- a/src/utils/router.ts +++ b/src/utils/router.ts @@ -37,10 +37,14 @@ export const routerTurnByName = ( * @param pageName */ export const fetchPathByName = (pageName: string, p?: string) => { - const pathData = router.resolve({ - name: pageName, - }) - return p ? (pathData as any)[p] : pathData + try { + const pathData = router.resolve({ + name: pageName, + }) + return p ? (pathData as any)[p] : pathData + } catch (error) { + window['$message'].warning('查询路由信息失败,请联系管理员!') + } } /** @@ -130,8 +134,12 @@ export const openGiteeSourceCode = () => { * @returns object */ export const fetchRouteParams = () => { - const route = useRoute() - return route.params + try { + const route = useRoute() + return route.params + } catch (error) { + window['$message'].warning('查询路由信息失败,请联系管理员!') + } } /** diff --git a/src/utils/storage.ts b/src/utils/storage.ts index 5c238f13..420d9e1f 100644 --- a/src/utils/storage.ts +++ b/src/utils/storage.ts @@ -2,7 +2,7 @@ /** * * 存储本地会话数据 * @param k 键名 - * @param v 键值 + * @param v 键值(无需stringiiy) * @returns RemovableRef */ export const setLocalStorage = (k: string, v: T) => { @@ -15,9 +15,10 @@ /** * * 获取本地会话数据 + * @param k 键名 * @returns any */ -export const getLocalStorage: (k: string) => any = (k: string) => { +export const getLocalStorage = (k: string) => { const item = window.localStorage.getItem(k) try { return item ? JSON.parse(item) : item diff --git a/src/views/chart/HeaderRightBtn/index.vue b/src/views/chart/HeaderRightBtn/index.vue index f808c8c8..b5694ec7 100644 --- a/src/views/chart/HeaderRightBtn/index.vue +++ b/src/views/chart/HeaderRightBtn/index.vue @@ -1,32 +1,73 @@ diff --git a/src/views/chart/HeaderTitle/index.vue b/src/views/chart/HeaderTitle/index.vue index 6e0ed6c5..bb2b3226 100644 --- a/src/views/chart/HeaderTitle/index.vue +++ b/src/views/chart/HeaderTitle/index.vue @@ -34,7 +34,9 @@ const inputInstRef = ref(null) // 根据路由 id 参数获取项目信息 const fetchProhectInfoById = () => { - const { id } = fetchRouteParams() + const routeParamsRes = fetchRouteParams() + if (!routeParamsRes) return + const { id } = routeParamsRes if (id.length) { // todo 从后端获取项目信息并存储 return '编辑项目' + id[0] @@ -43,7 +45,7 @@ const fetchProhectInfoById = () => { } -const title = ref(fetchProhectInfoById()) +const title = ref(fetchProhectInfoById() || '') const comTitle = computed(() => { diff --git a/src/views/preview/index.vue b/src/views/preview/index.vue new file mode 100644 index 00000000..a5af14d3 --- /dev/null +++ b/src/views/preview/index.vue @@ -0,0 +1,36 @@ + + + + + \ No newline at end of file