import Vue from 'vue'; import Router from 'vue-router'; import { AuthGuard } from '@/utils'; import qs from 'qs'; import { globalRoutes, indexRoutes} from '@/router' Vue.use(Router); <#-- 输出重定向页面路径 --> <#macro getRedirectPath subView isIncludeIndex> <#if subView.getViewType() == "APPREDIRECTVIEW"> <#-- 应用全局数据重定向视图start --> { path: '<#if !isIncludeIndex>/</#if>appdataredirectview/:appdataredirectview?', meta: { caption: '<#if subView.isPSDEView()>entities.${subView.getPSDataEntity().getCodeName()?lower_case}.views.${subView.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${subView.getCodeName()?lower_case}.caption</#if>', <#if subView.getPSSysImage()??> imgPath: '${subView.getPSSysImage().getImagePath()}', iconCls: '${subView.getPSSysImage().getCssClass()}', </#if> parameters: [ { pathName: '${subView.getCodeName()?lower_case}', parameterName: '${subView.getCodeName()?lower_case}' }, ], requireAuth: <#if subView.getAccUserMode?? && subView.getAccUserMode()?? && (subView.getAccUserMode() == 1 || subView.getAccUserMode() == 3)>false<#else>true</#if>, }, component: () => import('@pages/${srffilepath2(subView.getPSAppModule().getCodeName())}/${srffilepath2(subView.getCodeName())}/${srffilepath2(subView.getCodeName())}.vue'), }, <#-- 应用全局数据重定向视图end --> <#elseif subView.getViewType() == "APPWFREDIRECTVIEW"> <#-- 应用流程工作重定向视图start --> { path: '<#if !isIncludeIndex>/</#if>appwfdataredirectview/:appwfdataredirectview?', meta: { caption: '<#if subView.isPSDEView()>entities.${subView.getPSDataEntity().getCodeName()?lower_case}.views.${subView.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${subView.getCodeName()?lower_case}.caption</#if>', <#if subView.getPSSysImage()??> imgPath: '${subView.getPSSysImage().getImagePath()}', iconCls: '${subView.getPSSysImage().getCssClass()}', </#if> parameters: [ { pathName: '${subView.getCodeName()?lower_case}', parameterName: '${subView.getCodeName()?lower_case}' }, ], requireAuth: <#if subView.getAccUserMode?? && subView.getAccUserMode()?? && (subView.getAccUserMode() == 1 || subView.getAccUserMode() == 3)>false<#else>true</#if>, }, component: () => import('@pages/${srffilepath2(subView.getPSAppModule().getCodeName())}/${srffilepath2(subView.getCodeName())}/${srffilepath2(subView.getCodeName())}.vue'), }, <#-- 应用流程工作重定向视图end --> <#elseif subView.getViewType() == "DEWFDATAREDIRECTVIEW"> <#-- 实体全局重定向视图start --> { path: '<#if !isIncludeIndex>/</#if>${subView.getViewType()?lower_case}/:${subView.getViewType()?lower_case}?', meta: { caption: '<#if subView.isPSDEView()>entities.${subView.getPSDataEntity().getCodeName()?lower_case}.views.${subView.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${subView.getCodeName()?lower_case}.caption</#if>', <#if subView.getPSSysImage()??> imgPath: '${subView.getPSSysImage().getImagePath()}', iconCls: '${subView.getPSSysImage().getCssClass()}', </#if> parameters: [ { pathName: '${subView.getCodeName()?lower_case}', parameterName: '${subView.getCodeName()?lower_case}' }, ], requireAuth: <#if subView.getAccUserMode?? && subView.getAccUserMode()?? && (subView.getAccUserMode() == 1 || subView.getAccUserMode() == 3)>false<#else>true</#if>, }, component: () => import('@pages/${srffilepath2(subView.getPSAppModule().getCodeName())}/${srffilepath2(subView.getCodeName())}/${srffilepath2(subView.getCodeName())}.vue'), }, <#-- 实体全局重定向视图end --> <#else> <#-- 其他重定向视图start --> { path: '<#if !isIncludeIndex>/</#if>${subView.getCodeName()?lower_case}/:${subView.getCodeName()?lower_case}?', meta: { caption: '<#if subView.isPSDEView()>entities.${subView.getPSDataEntity().getCodeName()?lower_case}.views.${subView.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${subView.getCodeName()?lower_case}.caption</#if>', <#if subView.getPSSysImage()??> imgPath: '${subView.getPSSysImage().getImagePath()}', iconCls: '${subView.getPSSysImage().getCssClass()}', </#if> parameters: [ { pathName: '${subView.getCodeName()?lower_case}', parameterName: '${subView.getCodeName()?lower_case}' }, ], requireAuth: <#if subView.getAccUserMode?? && subView.getAccUserMode()?? && (subView.getAccUserMode() == 1 || subView.getAccUserMode() == 3)>false<#else>true</#if>, }, component: () => import('@pages/${srffilepath2(subView.getPSAppModule().getCodeName())}/${srffilepath2(subView.getCodeName())}/${srffilepath2(subView.getCodeName())}.vue'), }, <#-- 其他重定向视图end --> </#if> </#macro> <#macro getRouteInfo app> <#list app.getAllPSAppViews() as subView> <#if subView.getRefFlag() && subView.getViewType() != "APPINDEXVIEW"> <#if !subView.isRedirectView()> <#if subView.isPSDEView()> <#assign appDataEntity = subView.getPSAppDataEntity()/> <#-- BEGIN:有多重路径 --> <#if subView.getPSAppDERSPathCount() gt 0> <#list 1..subView.getPSAppDERSPathCount() as count> <#assign path = ''/> <#-- BEGIN:循环路径下所有关系 --> <#list subView.getPSAppDERSPath(count_index) as deRSPath> <#assign majorPSAppDataEntity = deRSPath.getMajorPSAppDataEntity()/> <#assign path>${path}${srfpluralize(majorPSAppDataEntity.codeName)?lower_case}/:${majorPSAppDataEntity.getCodeName()?lower_case}?/</#assign> </#list> <#-- END:循环路径下所有关系 --> { path: '/${path}${srfpluralize(appDataEntity.codeName)?lower_case}/:${appDataEntity.getCodeName()?lower_case}?/${subView.getPSDEViewCodeName()?lower_case}/:${subView.getPSDEViewCodeName()?lower_case}?', <#-- 嵌入关系路由未设置name属性 --> meta: { caption: '<#if subView.isPSDEView()>entities.${subView.getPSDataEntity().getCodeName()?lower_case}.views.${subView.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${subView.getCodeName()?lower_case}.caption</#if>', <#if subView.getPSSysImage()??> imgPath: '${subView.getPSSysImage().getImagePath()}', iconCls: '${subView.getPSSysImage().getCssClass()}', </#if> parameters: [ <#list subView.getPSAppDERSPath(count_index) as deRSPath> <#assign majorPSAppDataEntity = deRSPath.getMajorPSAppDataEntity()/> { pathName: '${srfpluralize(majorPSAppDataEntity.codeName)?lower_case}', parameterName: '${majorPSAppDataEntity.getCodeName()?lower_case}' }, </#list> { pathName: '${srfpluralize(appDataEntity.codeName)?lower_case}', parameterName: '${appDataEntity.getCodeName()?lower_case}' }, { pathName: '${subView.getPSDEViewCodeName()?lower_case}', parameterName: '${subView.getPSDEViewCodeName()?lower_case}' }, ], requireAuth: <#if subView.getAccUserMode?? && subView.getAccUserMode()?? && (subView.getAccUserMode() == 1 || subView.getAccUserMode() == 3)>false<#else>true</#if>, }, component: () => import('@pages/${srffilepath2(subView.getPSAppModule().getCodeName())}/${srffilepath2(subView.getCodeName())}/${srffilepath2(subView.getCodeName())}.vue'), }, </#list> </#if> <#-- END:有多重路径 --> { path: '/${srfpluralize(appDataEntity.codeName)?lower_case}/:${appDataEntity.getCodeName()?lower_case}?/${subView.getPSDEViewCodeName()?lower_case}/:${subView.getPSDEViewCodeName()?lower_case}?', meta: { caption: '<#if subView.isPSDEView()>entities.${subView.getPSDataEntity().getCodeName()?lower_case}.views.${subView.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${subView.getCodeName()?lower_case}.caption</#if>', <#if subView.getPSSysImage()??> imgPath: '${subView.getPSSysImage().getImagePath()}', iconCls: '${subView.getPSSysImage().getCssClass()}', </#if> parameters: [ { pathName: '${srfpluralize(appDataEntity.codeName)?lower_case}', parameterName: '${appDataEntity.getCodeName()?lower_case}' }, { pathName: '${subView.getPSDEViewCodeName()?lower_case}', parameterName: '${subView.getPSDEViewCodeName()?lower_case}' }, ], requireAuth: <#if subView.getAccUserMode?? && subView.getAccUserMode()?? && (subView.getAccUserMode() == 1 || subView.getAccUserMode() == 3)>false<#else>true</#if>, }, component: () => import('@pages/${srffilepath2(subView.getPSAppModule().getCodeName())}/${srffilepath2(subView.getCodeName())}/${srffilepath2(subView.getCodeName())}.vue'), }, <#else> { path: '/${subView.getCodeName()?lower_case}/:${subView.getCodeName()?lower_case}?', meta: { caption: '<#if subView.isPSDEView()>entities.${subView.getPSDataEntity().getCodeName()?lower_case}.views.${subView.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${subView.getCodeName()?lower_case}.caption</#if>', <#if subView.getPSSysImage()??> imgPath: '${subView.getPSSysImage().getImagePath()}', iconCls: '${subView.getPSSysImage().getCssClass()}', </#if> parameters: [ { pathName: '${subView.getCodeName()?lower_case}', parameterName: '${subView.getCodeName()?lower_case}' }, ], requireAuth: <#if subView.getAccUserMode?? && subView.getAccUserMode()?? && (subView.getAccUserMode() == 1 || subView.getAccUserMode() == 3)>false<#else>true</#if>, }, component: () => import('@pages/${srffilepath2(subView.getPSAppModule().getCodeName())}/${srffilepath2(subView.getCodeName())}/${srffilepath2(subView.getCodeName())}.vue'), }, </#if> <#else> <@getRedirectPath subView=subView isIncludeIndex=false /> </#if> </#if> </#list> </#macro> const router = new Router({ routes: [ <#-- 路由内容 --> { path: '/${view.getCodeName()?lower_case}/:${view.getCodeName()?lower_case}?', beforeEnter: (to: any, from: any, next: any) => { const routerParamsName = '${view.getCodeName()?lower_case}'; const params: any = {}; if (to.params && to.params[routerParamsName]) { Object.assign(params, qs.parse(to.params[routerParamsName], { delimiter: ';' })); } const url: string = '/appdata'; const auth: Promise<any> = AuthGuard.getInstance().authGuard(url, params, router); auth.then(() => { next(); }).catch(() => { next(); }); }, meta: { caption: '<#if view.isPSDEView()>entities.${view.getPSDataEntity().getCodeName()?lower_case}.views.${view.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${view.getCodeName()?lower_case}.caption</#if>', viewType: 'APPINDEX', <#if view.getPSSysImage()??> imgPath: '${view.getPSSysImage().getImagePath()}', iconCls: '${view.getPSSysImage().getCssClass()}', </#if> parameters: [ { pathName: '${view.getCodeName()?lower_case}', parameterName: '${view.getCodeName()?lower_case}' }, ], requireAuth: <#if view.getAccUserMode?? && view.getAccUserMode()?? && (view.getAccUserMode() == 1 || view.getAccUserMode() == 3)>false<#else>true</#if>, }, component: () => import('@pages/${srffilepath2(view.getPSAppModule().getCodeName())}/${srffilepath2(view.getCodeName())}/${srffilepath2(view.getCodeName())}.vue'), children: [ <#list view.getAllRelatedPSAppViewsEx() as subView> <#if !subView.isRedirectView()> <#if subView.isPSDEView()> <#assign appDataEntity = subView.getPSAppDataEntity()/> <#-- BEGIN:有多重路径 --> <#if subView.getPSAppDERSPathCount() gt 0> <#list 1..subView.getPSAppDERSPathCount() as count> <#assign path = ''/> <#-- BEGIN:循环路径下所有关系 --> <#list subView.getPSAppDERSPath(count_index) as deRSPath> <#assign majorPSAppDataEntity = deRSPath.getMajorPSAppDataEntity()/> <#assign path>${path}${srfpluralize(majorPSAppDataEntity.codeName)?lower_case}/:${majorPSAppDataEntity.getCodeName()?lower_case}?/</#assign> </#list> <#-- END:循环路径下所有关系 --> { path: '${path}${srfpluralize(appDataEntity.codeName)?lower_case}/:${appDataEntity.getCodeName()?lower_case}?/${subView.getPSDEViewCodeName()?lower_case}/:${subView.getPSDEViewCodeName()?lower_case}?', meta: { caption: '<#if subView.isPSDEView()>entities.${subView.getPSDataEntity().getCodeName()?lower_case}.views.${subView.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${subView.getCodeName()?lower_case}.caption</#if>', <#if subView.getPSSysImage()??> imgPath: '${subView.getPSSysImage().getImagePath()}', iconCls: '${subView.getPSSysImage().getCssClass()}', </#if> parameters: [ { pathName: '${view.getCodeName()?lower_case}', parameterName: '${view.getCodeName()?lower_case}' }, <#list subView.getPSAppDERSPath(count_index) as deRSPath> <#assign majorPSAppDataEntity = deRSPath.getMajorPSAppDataEntity()/> { pathName: '${srfpluralize(majorPSAppDataEntity.codeName)?lower_case}', parameterName: '${majorPSAppDataEntity.getCodeName()?lower_case}' }, </#list> { pathName: '${srfpluralize(appDataEntity.codeName)?lower_case}', parameterName: '${appDataEntity.getCodeName()?lower_case}' }, { pathName: '${subView.getPSDEViewCodeName()?lower_case}', parameterName: '${subView.getPSDEViewCodeName()?lower_case}' }, ], requireAuth: <#if subView.getAccUserMode?? && subView.getAccUserMode()?? && (subView.getAccUserMode() == 1 || subView.getAccUserMode() == 3)>false<#else>true</#if>, }, component: () => import('@pages/${srffilepath2(subView.getPSAppModule().getCodeName())}/${srffilepath2(subView.getCodeName())}/${srffilepath2(subView.getCodeName())}.vue'), }, </#list> </#if> <#-- END:有多重路径 --> { path: '${srfpluralize(appDataEntity.codeName)?lower_case}/:${appDataEntity.getCodeName()?lower_case}?/${subView.getPSDEViewCodeName()?lower_case}/:${subView.getPSDEViewCodeName()?lower_case}?', meta: { caption: '<#if subView.isPSDEView()>entities.${subView.getPSDataEntity().getCodeName()?lower_case}.views.${subView.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${subView.getCodeName()?lower_case}.caption</#if>', <#if subView.getPSSysImage()??> imgPath: '${subView.getPSSysImage().getImagePath()}', iconCls: '${subView.getPSSysImage().getCssClass()}', </#if> parameters: [ { pathName: '${view.getCodeName()?lower_case}', parameterName: '${view.getCodeName()?lower_case}' }, { pathName: '${srfpluralize(appDataEntity.codeName)?lower_case}', parameterName: '${appDataEntity.getCodeName()?lower_case}' }, { pathName: '${subView.getPSDEViewCodeName()?lower_case}', parameterName: '${subView.getPSDEViewCodeName()?lower_case}' }, ], requireAuth: <#if subView.getAccUserMode?? && subView.getAccUserMode()?? && (subView.getAccUserMode() == 1 || subView.getAccUserMode() == 3)>false<#else>true</#if>, }, component: () => import('@pages/${srffilepath2(subView.getPSAppModule().getCodeName())}/${srffilepath2(subView.getCodeName())}/${srffilepath2(subView.getCodeName())}.vue'), }, <#else> { path: '${subView.getCodeName()?lower_case}/:${subView.getCodeName()?lower_case}?', meta: { caption: '<#if subView.isPSDEView()>entities.${subView.getPSDataEntity().getCodeName()?lower_case}.views.${subView.getPSDEViewCodeName()?lower_case}.caption<#else>app.views.${subView.getCodeName()?lower_case}.caption</#if>', <#if subView.getPSSysImage()??> imgPath: '${subView.getPSSysImage().getImagePath()}', iconCls: '${subView.getPSSysImage().getCssClass()}', </#if> parameters: [ { pathName: '${view.getCodeName()?lower_case}', parameterName: '${view.getCodeName()?lower_case}' }, { pathName: '${subView.getCodeName()?lower_case}', parameterName: '${subView.getCodeName()?lower_case}' }, ], requireAuth: <#if subView.getAccUserMode?? && subView.getAccUserMode()?? && (subView.getAccUserMode() == 1 || subView.getAccUserMode() == 3)>false<#else>true</#if>, }, component: () => import('@pages/${srffilepath2(subView.getPSAppModule().getCodeName())}/${srffilepath2(subView.getCodeName())}/${srffilepath2(subView.getCodeName())}.vue'), }, </#if> </#if> </#list> <#if app.getAllPSAppViews()??> <#list app.getAllPSAppViews() as subView> <#if subView.isRedirectView()> <@getRedirectPath subView=subView isIncludeIndex=true /> </#if> </#list> </#if> ...indexRoutes, ], }, <@getRouteInfo app/> ...globalRoutes, { path: '/login/:login?', name: 'login', meta: { caption: '登录', viewType: 'login', requireAuth: false, ignoreAddPage: true, }, beforeEnter: (to: any, from: any, next: any) => { router.app.$store.commit('resetRootStateData'); next(); }, component: () => import('@components/login/login.vue'), }, { path: '/404', component: () => import('@components/404/404.vue') }, { path: '/500', component: () => import('@components/500/500.vue') }, { path: '*', redirect: '${view.getCodeName()?lower_case}' }, ], }); export default router;