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