From 473b947c73f6499c4934c7d640b9f83baf1494b4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E5=92=AC=E8=BD=AE=E7=8C=AB?= <10928033@qq.com>
Date: Tue, 25 Oct 2022 22:17:44 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=97=8B=E8=BD=AC=20=E6=9C=89bug=20=20?=
=?UTF-8?q?=E6=97=8B=E8=BD=AC=E5=90=8E=E4=B8=8D=E8=83=BD=E6=AD=A3=E7=A1=AE?=
=?UTF-8?q?=E7=BC=A9=E6=94=BE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/assets/icons/rotate.svg | 1 +
.../components/center-panel/index.vue | 127 ++++++++++++------
.../components/handle-panel/index.vue | 92 +++++++++++--
src/store/global/index.ts | 3 +
src/store/global/types.ts | 15 ++-
vite.config.ts | 7 +-
6 files changed, 187 insertions(+), 58 deletions(-)
create mode 100644 src/assets/icons/rotate.svg
diff --git a/src/assets/icons/rotate.svg b/src/assets/icons/rotate.svg
new file mode 100644
index 0000000..9e88136
--- /dev/null
+++ b/src/assets/icons/rotate.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/components/webtopo-svgedit/components/center-panel/index.vue b/src/components/webtopo-svgedit/components/center-panel/index.vue
index 66904e5..e9ca796 100644
--- a/src/components/webtopo-svgedit/components/center-panel/index.vue
+++ b/src/components/webtopo-svgedit/components/center-panel/index.vue
@@ -27,64 +27,75 @@
:key="item.id"
:transform="`translate(${item.x},${item.y})rotate(0)scale(1)`"
>
-
-
+
-
+ globalStore.intention == EGlobalStoreIntention.Select &&
+ globalStore.handle_svg_info?.info.id == item.id
+ ? 'svg-item-select'
+ : ''
+ }`"
+ @mousedown="onSvgMouseDown(item, index, $event)"
+ >
+
+
-
+
diff --git a/src/store/global/index.ts b/src/store/global/index.ts
index efff90a..d4add30 100644
--- a/src/store/global/index.ts
+++ b/src/store/global/index.ts
@@ -42,6 +42,9 @@ export const useGlobalStore = defineStore('global-store', {
x: 0,
y: 0
}
+ },
+ rotate_info: {
+ angle: 0
}
};
},
diff --git a/src/store/global/types.ts b/src/store/global/types.ts
index c3299d2..1307908 100644
--- a/src/store/global/types.ts
+++ b/src/store/global/types.ts
@@ -8,13 +8,19 @@ export interface IGlobalStore {
mouse_info: IMouseInfo;
handle_svg_info: IHandleSvgInfo | undefined;
scale_info: IScaleInfo;
+ rotate_info: IRotateInfo;
}
export interface IDoneJson extends IConfigItem {
id: string;
x: number;
y: number;
+ client: {
+ x: number;
+ y: number;
+ };
scale_x: number;
scale_y: number;
+ rotate: number;
actual_bound: {
x: number;
y: number;
@@ -28,7 +34,8 @@ export enum EGlobalStoreIntention {
Move = 'Move',
MoveCanvas = 'MoveCanvas',
Select = 'Select',
- Zoom = 'Zoom'
+ Zoom = 'Zoom',
+ Rotate = 'Rotate'
}
export interface IMouseInfo {
state: EMouseInfoState;
@@ -62,6 +69,12 @@ export interface IScaleInfo {
y: number;
};
}
+/**
+ * 旋转信息
+ */
+export interface IRotateInfo {
+ angle: number;
+}
export enum EScaleInfoType {
None = '',
TopLeft = 'TopLeft',
diff --git a/vite.config.ts b/vite.config.ts
index 9ea6314..2ff7291 100644
--- a/vite.config.ts
+++ b/vite.config.ts
@@ -24,5 +24,10 @@ export default defineConfig({
// 禁用压缩 否则想要修改无状态组件的stroke或者fill会影响到预设样式 例如stroke-width
svgoOptions: false
})
- ]
+ ],
+ resolve: {
+ alias: {
+ '@': resolve(__dirname, 'src')
+ }
+ }
});