diff --git a/src/enums/editPageEnum.ts b/src/enums/editPageEnum.ts new file mode 100644 index 00000000..889f2432 --- /dev/null +++ b/src/enums/editPageEnum.ts @@ -0,0 +1,4 @@ +// 页面拖拽键名 +export enum DragKeyEnum { + DROG_KEY = 'ChartData' +} diff --git a/src/packages/components/Chart/Bars/BarCommon/config.ts b/src/packages/components/Chart/Bars/BarCommon/config.ts new file mode 100644 index 00000000..de6737a0 --- /dev/null +++ b/src/packages/components/Chart/Bars/BarCommon/config.ts @@ -0,0 +1,11 @@ +import { getUUID } from '@/utils' + +export class Config { + name: string = 'BarCommon' + id: string = getUUID() + attr = { w: 500, h: 300 } + // 图表的 + public config = { + global: {} + } +} diff --git a/src/packages/components/Chart/Bars/BarCommon/config.vue b/src/packages/components/Chart/Bars/BarCommon/config.vue new file mode 100644 index 00000000..3e3b929c --- /dev/null +++ b/src/packages/components/Chart/Bars/BarCommon/config.vue @@ -0,0 +1,7 @@ + + + diff --git a/src/packages/components/Chart/Bars/BarCommon/index.vue b/src/packages/components/Chart/Bars/BarCommon/index.vue index f3abbb36..fbd1331d 100644 --- a/src/packages/components/Chart/Bars/BarCommon/index.vue +++ b/src/packages/components/Chart/Bars/BarCommon/index.vue @@ -1,13 +1,16 @@ - \ No newline at end of file + diff --git a/src/packages/index.ts b/src/packages/index.ts index a5c1e525..eabca5c2 100644 --- a/src/packages/index.ts +++ b/src/packages/index.ts @@ -8,6 +8,7 @@ import { ChartList } from '@/packages/components/Chart/index' import { DecorateList } from '@/packages/components/Decorate/index' import { InformationList } from '@/packages/components/Information/index' import { TableList } from '@/packages/components/Table/index' +import {} from './useCreate' // 所有图表 let packagesList: PackagesType = { diff --git a/src/packages/useCreate.ts b/src/packages/useCreate.ts new file mode 100644 index 00000000..0a5c4ced --- /dev/null +++ b/src/packages/useCreate.ts @@ -0,0 +1,9 @@ +import { ConfigType } from '@/packages/index.d' + +/** + * * 获取目标拖拽组件信息 + * @param drayData + */ +export const createComponent = (drayData: Exclude) => { + +} diff --git a/src/router/router-guards.ts b/src/router/router-guards.ts index 928bc023..9b550a8c 100644 --- a/src/router/router-guards.ts +++ b/src/router/router-guards.ts @@ -5,7 +5,7 @@ import { PageEnum } from '@/enums/pageEnum' export function createRouterGuards(router: Router) { // 前置 router.beforeEach(async (to, from, next) => { - const Loading = window['$loading'] || null; + const Loading = window['$loading']; Loading && Loading.start(); const isErrorPage = router.getRoutes().findIndex((item) => item.name === to.name); if (isErrorPage === -1) { @@ -15,7 +15,7 @@ export function createRouterGuards(router: Router) { }) router.afterEach((to, _, failure) => { - const Loading = window['$loading'] || null; + const Loading = window['$loading']; document.title = (to?.meta?.title as string) || document.title; Loading && Loading.finish(); }) diff --git a/src/store/modules/chartEditStore/chartEditStore.d.ts b/src/store/modules/chartEditStore/chartEditStore.d.ts index 9b70917b..52e1a658 100644 --- a/src/store/modules/chartEditStore/chartEditStore.d.ts +++ b/src/store/modules/chartEditStore/chartEditStore.d.ts @@ -1,19 +1,19 @@ // 编辑区域大小 export enum EditCanvasTypeEnum { - EDITLAYOUTDOM = 'editLayoutDom', - EDITCONTENTDON = 'editContentDom', + EDIT_LAYOUT_DOM = 'editLayoutDom', + EDIT_CONTENT_DOM = 'editContentDom', WIDTH = 'width', HEIGHT = 'height', OFFSET = 'offset', SCALE = 'scale', - USERSCALE = 'userScale', - LOCKSCALE = 'lockScale', - BACKGROUND = 'background' + USER_SCALE = 'userScale', + LOCK_SCALE = 'lockScale', + BACKGROUND = 'background', } export type EditCanvasType = { // 编辑区域 DOM - [EditCanvasTypeEnum.EDITLAYOUTDOM]: HTMLElement | null - [EditCanvasTypeEnum.EDITCONTENTDON]: HTMLElement | null + [EditCanvasTypeEnum.EDIT_LAYOUT_DOM]: HTMLElement | null + [EditCanvasTypeEnum.EDIT_CONTENT_DOM]: HTMLElement | null // 大屏宽度 [EditCanvasTypeEnum.WIDTH]: number // 大屏高度 @@ -23,9 +23,9 @@ export type EditCanvasType = { // 缩放 [EditCanvasTypeEnum.SCALE]: number // 缩放 - [EditCanvasTypeEnum.USERSCALE]: number + [EditCanvasTypeEnum.USER_SCALE]: number // 锁定缩放 - [EditCanvasTypeEnum.LOCKSCALE]: boolean + [EditCanvasTypeEnum.LOCK_SCALE]: boolean // 背景色 [EditCanvasTypeEnum.BACKGROUND]?: string } @@ -45,9 +45,12 @@ export type MousePositionType = { // Store 类型 export enum chartEditStoreEnum { EDITCANVAS = 'editCanvas', - MOUSEPOSITION = 'mousePosition' + MOUSEPOSITION = 'mousePosition', + COMPONENT_LIST = 'componentList' } + export interface chartEditStoreType { [chartEditStoreEnum.EDITCANVAS]: EditCanvasType [chartEditStoreEnum.MOUSEPOSITION]: MousePositionType + [chartEditStoreEnum.COMPONENT_LIST]: any[] } diff --git a/src/store/modules/chartEditStore/chartEditStore.ts b/src/store/modules/chartEditStore/chartEditStore.ts index 585f5762..91a7732a 100644 --- a/src/store/modules/chartEditStore/chartEditStore.ts +++ b/src/store/modules/chartEditStore/chartEditStore.ts @@ -32,7 +32,8 @@ export const useChartEditStoreStore = defineStore({ mousePosition: { x: 0, y: 0 - } + }, + componentList: [] }), getters: { getMousePosition(): MousePositionType { @@ -41,8 +42,15 @@ export const useChartEditStoreStore = defineStore({ getEditCanvas(): EditCanvasType { return this.editCanvas }, + getComponentList(): any[] { + return this.componentList + }, }, actions: { + // * 新增组件列表 + addComponentList(chartData:T):void { + this.componentList.push(chartData) + }, // * 设置数据项 setEditCanvasItem(key: T, value: K) { this.editCanvas[key] = value diff --git a/src/utils/utils.ts b/src/utils/utils.ts index 623fb5fc..6f5316f9 100644 --- a/src/utils/utils.ts +++ b/src/utils/utils.ts @@ -7,7 +7,7 @@ import debounce from 'lodash/debounce' * * 生成一个不重复的ID * @param { Number } randomLength */ -export function getUUID(randomLength: number) { +export function getUUID(randomLength: number = 10) { return Number( Math.random().toString().substr(2, randomLength) + Date.now() ).toString(36) diff --git a/src/views/chart/components/ContentCharts/components/ItemBox/index.vue b/src/views/chart/components/ContentCharts/components/ItemBox/index.vue index 98fd90f9..70028701 100644 --- a/src/views/chart/components/ContentCharts/components/ItemBox/index.vue +++ b/src/views/chart/components/ContentCharts/components/ItemBox/index.vue @@ -28,6 +28,10 @@ diff --git a/src/views/chart/components/ContentEdit/components/EditBottom/index.vue b/src/views/chart/components/ContentEdit/components/EditBottom/index.vue index 7267d52f..e88b633c 100644 --- a/src/views/chart/components/ContentEdit/components/EditBottom/index.vue +++ b/src/views/chart/components/ContentEdit/components/EditBottom/index.vue @@ -109,7 +109,7 @@ const selectHandle = (v: number) => { // 点击锁处理 const lockHandle = () => { chartEditStore.setEditCanvasItem( - chartEditStoreEnum.LOCKSCALE, + chartEditStoreEnum.LOCK_SCALE, !lockScale.value ) } diff --git a/src/views/chart/components/ContentEdit/hooks/useDrop.hook.ts b/src/views/chart/components/ContentEdit/hooks/useDrop.hook.ts new file mode 100644 index 00000000..4c159b79 --- /dev/null +++ b/src/views/chart/components/ContentEdit/hooks/useDrop.hook.ts @@ -0,0 +1,35 @@ +import { toRefs } from 'vue' +import { useThrottleFn } from '@vueuse/core' +import { getChartEditStore } from './useStore.hook' +import { EditCanvasTypeEnum } from '@/store/modules/chartEditStore/chartEditStore.d' +import { DragKeyEnum } from '@/enums/editPageEnum' + +const chartEditStore = getChartEditStore() +const { scale } = toRefs(chartEditStore.getEditCanvas) + +// * 拖拽中 +export const handleDrop = (e: DragEvent) => { + e.preventDefault() + const Loading = window['$loading'] + try { + Loading.start() + + const chartName = e!.dataTransfer!.getData(DragKeyEnum.DROG_KEY) + console.log(chartName) + chartEditStore.setMousePosition(e.offsetX, e.offsetY) + + setTimeout(() => { + Loading.finish() + }) + } catch (error) { + Loading.error() + window['$message'].success(`添加图表失败,请保存数据后刷新重试`) + } +} + +// * 拖拽结束 +export const handleDragOver = (e: DragEvent) => { + e.preventDefault() + e.stopPropagation() + if (e.dataTransfer) e.dataTransfer.dropEffect = 'copy' +} diff --git a/src/views/chart/components/ContentEdit/hooks/useLayout.hook.ts b/src/views/chart/components/ContentEdit/hooks/useLayout.hook.ts index b945d40e..e4fea09b 100644 --- a/src/views/chart/components/ContentEdit/hooks/useLayout.hook.ts +++ b/src/views/chart/components/ContentEdit/hooks/useLayout.hook.ts @@ -6,13 +6,13 @@ const chartEditStore = getChartEditStore() export const useLayout = () => { onMounted(() => { - // 设置 Dom 值(ref 不生效先用document) + // 设置 Dom 值(ref 不生效先用 document) chartEditStore.setEditCanvasItem( - EditCanvasTypeEnum.EDITLAYOUTDOM, + EditCanvasTypeEnum.EDIT_LAYOUT_DOM, document.getElementById('go-chart-edit-layout') ) chartEditStore.setEditCanvasItem( - EditCanvasTypeEnum.EDITCONTENTDON, + EditCanvasTypeEnum.EDIT_CONTENT_DOM, document.getElementById('go-chart-edit-content') ) diff --git a/src/views/chart/components/ContentEdit/index.vue b/src/views/chart/components/ContentEdit/index.vue index 75c1afa4..670ecadc 100644 --- a/src/views/chart/components/ContentEdit/index.vue +++ b/src/views/chart/components/ContentEdit/index.vue @@ -6,6 +6,8 @@ :showTop="false" :showBottom="true" :depth="1" + @drop="handleDrop" + @dragover="handleDragOver" >
@@ -19,15 +21,15 @@