最近,在把应用A下面的单据,发布到应用B之后,发现在移动端上提示没有对应的权限,但是在pc端是正常的。
为此,我写了一篇文章,讲一下这个问题出现的原因,以及如何处理。
也感谢在这个过程中,基础数据服务部的同事为我解惑。
单据如何发布到其他应用,请查看其他文档
官方知识:
https://vip.kingdee.com/article/232909790409007616?productLineId=29
文章:
https://vip.kingdee.com/article/119368209119131904?productLineId=29
现象
如下所示,把“纺织物”单据发布到 “xjq工作应用”应用
在直接授权里面,授权给当前用户权限。
用移动端打开这个单据页面,会出现没有权限的提示。
而从pc端进入这个单据,是正常的(pc端和移动端的页面不一样)
分析原因
pc端的页面,都是统一从应用首页开始进入的,而应用首页会默认把当前应用的信息保存到ShowParameter的AppId里面。
移动端没有应用首页,需要开发者自己去做首页的开发,
并且,移动端的页面,有些还是不需要经过首页,用代码去做跳转访问的,这就导致了移动端没有当前应用的信息,使得校验应用的权限失败。
解决方法
如果各位ISV伙伴的项目里面,以移动端为主,建议添加一个统一入口作为应用首页,然后在首页当中设置当前应用的应用编码,这样,应用信息也会随之后续打开的子页面向下传递,后续子页面也能根据应用信息去校验权限,也就不会有页面提示没有权限的问题了。
或者,如果当前页面是独立的,也需要在初始化时,设置一个应用编码,这样就能正常使用移动端页面了。
以下是我个人验证这个解决方法的截图:
新建一个应用首页的移动页面,按钮添加跳转操作
应用首页添加插件代码:
代码如下
package kd.ecos.demo; import kd.bos.form.plugin.AbstractMobFormPlugin; import java.util.EventObject; public class DemoSetAppIdMobPlugin extends AbstractMobFormPlugin { @Override public void initialize() { super.initialize(); // 设置应用编码,或者应用的内码id也能生效 getView().getFormShowParameter().setAppId("kdec_test1"); } }
效果
成功打开单据的移动页面,不在提示没有权限
推荐阅读