案例1—以 iFrame 形式扩展新的管理页面 |
iPortal 后台管理支持通过 iFrame 方式将指定的 HTML 页面追加至管理菜单中,定制后的效果如下,新增了一个名为“iFrame 嵌入页面”的管理项:
注意:扩展开发所使用的 Ant Design Vue 版本和 Vue 版本需相互兼容,例如 Ant Design Vue 2.x 版本最低支持的版本为 Vue 3.0,更多版本兼容性说明请参见: Ant Design Vue 官方帮助文档
以 iFrame 形式扩展管理菜单的流程如下:
第一步:在 %SuperMap iPortal_HOME%\webapps\iportal\resources\admin-ui\extend 目录下新建扩展开发页面的 js 文件。示例如下:
function GenerateRoutes(UserAddVue) {
const route = [
{
path: '/admin-ui/user-add-page-children1',
name: 'UserAddPage',
component: UserAddVue,
meta: { icon: 'select', title: 'iFrame嵌入页面', keepAlive: true, src: 'https://iportal.supermap.io/iportal' ,permission: ['portal:custom:admin:extendsPage:viewPage1']}
}
];
return route;
}
let addByUrl = {
GenerateRoutes: GenerateRoutes
};
window.addByUrl = addByUrl;
其中 GenerateRoutes 为路由函数,说明如下:
有关路由函数的更多信息,可参考:Vue Router。
第二步:找到位于 %SuperMap iPortal_HOME%\webapps\iportal\resources\admin-ui\extend 目录下的 index.json 文件(如果没有该文件,则新建同名文件),按照在第一步中新建的 js 文件信息进行开发,示例的 index.json 内容如下:
{
"routerName": "GenerateRoutes",
"libraryName": "addByUrl",
"addDependsToVue": "",
"jsUrl": [
"/iportal/resources/admin-ui/extend/addByUrl.js"
]
}
第三步(可选):编辑 %SuperMap iPortal_HOME%\webapps\iportal\resources\admin-ui\extend 目录中的 permissions.json 文件,将第一步中所有的自定义权限表达式以 json 格式写入。该文件可以在角色管理的权限列表中增加针对访问扩展页面的权限设置项,支持中文、英文两种语言,示例如下:
{
"permissions":[
{
"permission": "portal:custom:admin:extendsPage:viewPage1",
"label": {
"zh": "查看iframe扩展示例页面",
"en": "View iframe extends page"
}
}
]
}
保存后,以管理员身份登录 iPortal,即可在管理页面的菜单项中看到扩展的内容。
注意:
1)如果出现乱码,请将文件的编码格式更换为 UTF-8。
2)新扩展的管理页面在刷新后有时会出现 HTTP 404 问题,此时需要在 %SuperMap iPortal_HOME%\webapps\iportal\WEB-INF 目录下的 urlrewrite.xml 文件中新增如下配置:
<rule>
<name>addPage</name>
<from>/admin-ui/user-add-page-children1$</from>
<to>/admin-ui/index-iPortal.html</to>
</rule>