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