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 @@