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')
+ }
+ }
});