menu.ts 1.8 KB
Newer Older
陈文彬 已提交
1 2 3 4 5 6 7 8 9 10
import store from '/@/store';
import { hotModuleUnregisterModule } from '/@/utils/helper/vuexHelper';
import { VuexModule, Module, getModule, Mutation } from 'vuex-module-decorators';

import { appStore } from '/@/store/modules/app';

const NAME = 'menu';
hotModuleUnregisterModule(NAME);
@Module({ namespaced: true, name: NAME, dynamic: true, store })
class Menu extends VuexModule {
V
vben 已提交
11 12
  // // 默认展开
  // private collapsedState: boolean = appStore.getProjectConfig.menuSetting.collapsed;
陈文彬 已提交
13

V
vben 已提交
14 15
  // // 菜单宽度
  // private menuWidthState: number = appStore.getProjectConfig.menuSetting.menuWidth;
陈文彬 已提交
16 17

  // 是否开始拖拽
V
vben 已提交
18
  private dragStartState = false;
陈文彬 已提交
19

V
vben 已提交
20
  private currentTopSplitMenuPathState = '';
陈文彬 已提交
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53

  /**
   * @description: 获取窗口名称
   */
  get getCollapsedState() {
    return appStore.getProjectConfig.menuSetting.collapsed;
  }

  get getCurrentTopSplitMenuPathState() {
    return this.currentTopSplitMenuPathState;
  }

  get getDragStartState() {
    return this.dragStartState;
  }

  get getMenuWidthState() {
    return appStore.getProjectConfig.menuSetting.menuWidth;
  }

  @Mutation
  commitDragStartState(dragStart: boolean): void {
    this.dragStartState = dragStart;
  }

  @Mutation
  commitCurrentTopSplitMenuPathState(path: string): void {
    this.currentTopSplitMenuPathState = path;
  }

  // 改变菜单展开状态
  @Mutation
  commitCollapsedState(collapsed: boolean): void {
V
vben 已提交
54
    // this.collapsedState = collapsed;
陈文彬 已提交
55 56 57 58 59 60 61 62 63
    appStore.commitProjectConfigState({
      menuSetting: {
        collapsed: collapsed,
      },
    });
  }

  @Mutation
  commitMenuWidthState(menuWidth: number): void {
V
vben 已提交
64
    // this.menuWidthState = menuWidth;
陈文彬 已提交
65 66 67 68 69 70 71 72 73 74
    appStore.commitProjectConfigState({
      menuSetting: {
        menuWidth: menuWidth,
      },
    });
  }
}

export { Menu };
export const menuStore = getModule<Menu>(Menu);