UNPKG

@egova/vue-cli-plugin-egova-starter-template

Version:
142 lines (118 loc) 3.5 kB
import flagwind from "flagwind-core"; import WorkbenchBase = flagwind.WorkbenchBase; import ApplicationContextBase = flagwind.ApplicationContextBase; import ApplicationContext from "@/application/context"; import Workspace from "@/application/workspace"; import { routes } from "../routes"; import modules from "@/store"; import Vue from "vue"; import Router from "vue-router"; import Vuex from "vuex"; // 导入系统组件 import components from "flagwind-web"; /** * 提供工作台的基本封装。 * @class * @version 1.0.0 */ export default class Workbench extends WorkbenchBase { private _workspace: Workspace | undefined; /** * 获取当前应用的主工作空间。 * @property * @returns Workspace */ public get workspace(): Workspace | undefined { return this._workspace; } /** * 初始化工作台的新实例。 * @param {ApplicationContextBase} applicationContext */ public constructor(context: ApplicationContextBase) { super(context); } /** * 当工作台打开时调用。 * @async * @protected * @virtual * @param {Array<string>} args * @returns void */ protected async onOpen(args: Array<string>): Promise<void> { let context = this.applicationContext as ApplicationContext; // 关闭生产提示 // Vue.config.productionTip = false; // Vue.config.errorHandler = (err, vm, info) => { // console.error(err); // console.warn(info); // }; // 挂载全局事件 const eventBus = new Vue(); Vue.prototype.$bus = eventBus; // 初始化组件 this.initializeComponent(context); // 初始化路由程序 this.initializeRouter(context); // 初始化状态管理程序 this.initializeStore(context); // 初始化自定义指令 this.initializeDirective(context); // 初始化工作空间 this._workspace = this.createWorkspace(); } /** * 创建一个工作空间对象。 * @override * @returns IWorkspace */ protected createWorkspace(): Workspace { return new Workspace(this); } /** * 初始化全局组件。 * @param {ApplicationContext} context 应用程序上下文实例。 * @returns void */ private initializeComponent(context: ApplicationContext): void { // 注册系统组件 Vue.use(components); } /** * 初始化路由程序。 * @param {ApplicationContext} context 应用程序上下文实例。 * @returns void */ private initializeRouter(context: ApplicationContext): void { // 注册路由组件 Vue.use(Router); // 初始化路由程序 let router = new Router({ routes }); // 设置路由程序 context.router = router; } /** * 初始化状态管理程序。 * @param {ApplicationContext} context 应用程序上下文实例。 * @returns void */ private initializeStore(context: ApplicationContext): void { // 注册状态管理程序 Vue.use(Vuex); // 初始化状态容器 let store = new Vuex.Store({ modules }); // 设置状态容器 context.store = store; } /** * 初始化自定义指令。 * @param {ApplicationContext} context 应用程序上下文实例。 * @returns void */ private initializeDirective(context: ApplicationContext): void { // Vue.use(directives); } }