金蝶云星空业务对象自定义按钮进行权限控制
背景说明
金蝶标准:权限绑定操作,操作绑定按钮。
实际需求:按钮不绑定操作,直接验权。
创建按钮
菜单集合
列表菜单
创建权限项
添加权限项到权限对象
创建公共权限服务
using Kingdee.BOS;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.Permission;
using Kingdee.BOS.ServiceHelper;
namespace MM.K3.Business.Common
{
/// <summary>
/// 功能描述 :权限公共服务
/// 创 建 者 :Administrator
/// 创建日期 :2023/10/11 10:56:46
/// 最后修改者 :Krystal
/// 最后修改日期:2023/10/11 10:56:46
/// </summary>
public class PermissionFunc
{
#region <常量>
#endregion <常量>
#region <变量>
#endregion <变量>
#region <属性>
#endregion <属性>
#region <构造方法和析构方法>
#endregion <构造方法和析构方法>
#region <方法>
/// <summary>
/// 校验是否有权限
/// </summary>
/// <param name="ctx">上下文</param>
/// <param name="view">表单视图</param>
/// <param name="sPermissionItemId">权限项的id:表 T_SEC_PERMISSIONITEM的FITEMID</param>
/// <param name="isShowMsg">是否提示无权,默认是</param>
/// <returns></returns>
public static bool AuthorizePermissionForEdit(Context ctx
, IDynamicFormView view, string sPermissionItemId, bool isShowMsg = true)
{
string id = view.BillBusinessInfo.GetForm().Id;//业务对象标识
string strPerItemId = sPermissionItemId;
BusinessObject bizObject = new BusinessObject
{
Id=id,
SubSystemId=view.OpenParameter.SubSystemId,
PermissionControl=1
};
if (PermissionServiceHelper.FuncPermissionAuth(ctx,bizObject,strPerItemId).Passed)
{
return true;
}
if (isShowMsg)
{
view.ShowMessage("您没有权限执行此操作。");
}
return false;
}
#endregion <方法>
#region <事件>
#endregion <事件>
}
}
表单插件编码实现
列表插件编码实现
测试
不授权
提示无权。符合预期。
授权
不再提示无权,且能提示权限校验之后的其他校验。说明权限验证通过,符合预期。
总结
将验证做成公共方法,因为很多场景都是只有按钮,没有操作。