diff --git a/.env b/.env
index 682ae1b9..d8481af0 100644
--- a/.env
+++ b/.env
@@ -3,9 +3,9 @@ VITE_DEV_PORT = '8080'
# development path
# VITE_DEV_PATH = 'http://192.168.0.34:11887'
-VITE_DEV_PATH = 'http://114.115.222.135:9015/'
+VITE_DEV_PATH = 'http://192.168.0.34:8102/'
# VITE_DEV_PATH = 'http://192.168.0.120:3001'
-VITE_DEV_TOKEN = '2a6c435a-1b8f-43b6-938c-ab6b73f96801'
+VITE_DEV_TOKEN = 'dd23c593-c823-4eb3-86d0-54ec77c99880'
# production path
VITE_PRO_PATH = 'http://192.168.0.235:8177'
diff --git a/src/packages/components/Charts/Maps/MapBase/config.ts b/src/packages/components/Charts/Maps/MapBase/config.ts
index 5829309e..a714114e 100644
--- a/src/packages/components/Charts/Maps/MapBase/config.ts
+++ b/src/packages/components/Charts/Maps/MapBase/config.ts
@@ -8,6 +8,8 @@ import dataJson from './data.json'
export const includes = []
export const option = {
+ canScroll: true,
+ canDrag: true,
dataset: dataJson,
mapRegion: {
adcode: 'china',
diff --git a/src/packages/components/Charts/Maps/MapBase/config.vue b/src/packages/components/Charts/Maps/MapBase/config.vue
index f21e4fb4..3b7590ea 100644
--- a/src/packages/components/Charts/Maps/MapBase/config.vue
+++ b/src/packages/components/Charts/Maps/MapBase/config.vue
@@ -2,6 +2,16 @@
+
+
+
+
+
+
+
+
+
+
-
+
@@ -306,6 +306,113 @@ watch(() => customData.value.dataMap, () => {
immediate: true
})
+let scale = ref(1)
+const handleWheel = (event: any) => {
+ // 阻止默认行为(例如页面滚动)
+ event.preventDefault();
+ if(!option.value.canScroll) return
+ // 检查滚动方向
+ if (event.deltaY < 0) {
+ scale.value = Math.min(3, scale.value + 0.1)
+ }
+ else {
+ scale.value = Math.max(0.1, scale.value - 0.1)
+ }
+}
+
+// 查找父元素,确保父元素的类名为 .go-preview-scale
+function findParentWithClass(element: any, className: string) {
+ // 当前元素的父元素
+ let parent = element.parentElement;
+ // 遍历父元素链,直到找到匹配的类名或到达文档根元素
+ while (parent && !parent.classList.contains(className)) {
+ parent = parent.parentElement;
+ }
+ // 返回找到的父元素,或者 null 如果没有匹配的父元素
+ return parent;
+}
+
+const getScaleXY = (v: string) => {
+ // 定义正则表达式来匹配 scale 函数中的两个数字
+ const regex = /scale\((\d*\.?\d+),\s*(\d*\.?\d+)\)/;
+
+ // 使用正则表达式匹配并提取数字
+ const matches = v.match(regex);
+
+ if (matches) {
+ const scaleX = parseFloat(matches[1]);
+ const scaleY = parseFloat(matches[2]);
+ return [scaleX, scaleY]
+ } else {
+ return [1, 1]
+ }
+}
+
+let offsetX:number, offsetY:number
+let left:number, top:number
+let isDragging = ref(false)
+const box = ref()
+const handleMousedown = (event: any) => {
+ if(box.value) {
+ let el = box.value
+ isDragging.value = true;
+
+ offsetX = event.clientX
+ offsetY = event.clientY
+ left = el.style.left.replace('px', '') * 1 || 0
+ top = el.style.top.replace('px', '') * 1 || 0
+
+ // 添加鼠标移动和松开事件监听器
+ document.addEventListener('mousemove', handleMousemove)
+ document.addEventListener('mouseup', handleMouseup)
+ }
+}
+
+// 当鼠标移动时触发
+const handleMousemove = (event: any) => {
+ if(!option.value.canDrag) return
+ if (!isDragging.value) return;
+ if(box.value){
+ let parent = findParentWithClass(box.value, 'go-preview-scale')
+ let [scaleX, scaleY] = getScaleXY(parent.style.transform)
+ let el = box.value
+
+
+ // 计算元素的新位置
+ const x = left + (event.clientX - offsetX) / scaleX
+ const y = top + (event.clientY - offsetY) / scaleY
+ // 更新元素的位置
+ el.style.left = `${x}px`;
+ el.style.top = `${y}px`;
+ }
+}
+
+// 当鼠标松开时触发
+const handleMouseup = (event: any) => {
+ if(!option.value.canDrag) return
+ isDragging.value = false;
+
+ // 移除鼠标移动和松开事件监听器
+ document.removeEventListener('mousemove', handleMousemove);
+ document.removeEventListener('mouseup', handleMouseup);
+}
+
+onMounted(() => {
+ nextTick(() => {
+ if(vChartRef.value) {
+ vChartRef.value.$el.addEventListener('wheel', handleWheel, { passive: false })
+ }
+ if(box.value) {
+ box.value.addEventListener('mousedown', handleMousedown)
+ }
+ })
+})
+
+onUnmounted(() => {
+ vChartRef?.value?.$el?.removeEventListener('wheel', handleWheel, { passive: false })
+ box?.value?.removeEventListener('mousedown', handleMousedown)
+})
+
// //监听 dataset 数据发生变化
// watch(
// () => props.chartConfig.option.dataset,