예제 #1
0
 /// <summary>
 /// 组织机构数据
 /// </summary>
 /// <param name="ParameterValueStr"></param>
 /// <returns></returns>
 public JsonResult OrganizationData()
 {
     return(ExecuteFunctionRun(() =>
     {
         AbstractPortalTreeHandler handler = new OrganizationHandler(this);
         PortalTreeNode companyNode = new PortalTreeNode();
         var myCompany = Engine.Organization.Company;
         companyNode.ObjectID = myCompany.ObjectID;
         companyNode.Code = myCompany.UnitID;
         companyNode.Text = myCompany.Name;
         companyNode.Icon = "fa fa-building-o";
         companyNode.IsLeaf = false;
         object treeObj = handler.CreatePortalTree(companyNode.ObjectID, companyNode.Code);
         companyNode.CreateChildren(treeObj);
         return Json(new object[] { companyNode }, JsonRequestBehavior.AllowGet);
     }, string.Empty));
 }
        /// <summary>
        /// 将FunctionNode转为PortalTree展示给客户端用
        /// </summary>
        /// <param name="functionID"></param>
        /// <param name="nodes"></param>
        /// <returns></returns>
        protected List <PortalTreeNode> ConvertToPortalTree(string functionID, FunctionNode[] nodes)
        {
            List <PortalTreeNode> treeNodeList = new List <PortalTreeNode>();

            if (nodes == null)
            {
                return(treeNodeList);
            }
            //排序
            //nodes = nodes.OrderBy(p => p.NodeType).ThenBy(p => p.SortKey).ToArray();
            nodes = nodes.OrderBy(p => p.SortKey).ToArray();
            foreach (FunctionNode node in nodes)
            {
                string showUrl     = GetShowPageUrl(functionID, node);
                string toolBarCode = GetToolbarCode(node);
                //string IconUrl = GetIconUrl(node);
                string IconUrl = node.IconCss;
                List <PortalTreeNode> children = GetChildren(node);
                switch (node.Code)
                {
                case FunctionNode.Category_ServiceMoniter_Code:    //后台根节点,默认展开第一级
                    PortalTreeNode adminRooNode = new PortalTreeNode()
                    {
                        ObjectID = node.ObjectID,
                        Code     = node.Code,
                        Text     = getGlobalDisplayName(node),
                        //Icon = this.PortalRoot + "/" + node.IconUrl,
                        Icon        = IconUrl,
                        ShowPageUrl = node.Url,
                        IsLeaf      = true,
                        ParentID    = functionID,
                        NodeType    = node.NodeType
                    };
                    adminRooNode.CreateChildren(this.CreatePortalTree(node.ObjectID, node.Code));
                    treeNodeList.Add(adminRooNode);
                    break;

                case FunctionNode.Organization_Data_Code:    //组织机构
                    treeNodeList.Add(BuildCompanyNode(node, toolBarCode));
                    break;

                default:
                    #region 纠正叶子节点
                    //有子菜单、业务规则、流程模型、业务服务,都不是叶子节点
                    FunctionNode[] ChildrenNodes = controller.UserValidator.GetFunctionsByParentCode(node.Code);
                    bool           isLeaf        = ChildrenNodes == null || ChildrenNodes.Length == 0;
                    if (isLeaf)
                    {
                        isLeaf = children == null;
                        if (isLeaf)
                        {
                            isLeaf = string.IsNullOrWhiteSpace(toolBarCode);    //如果有工具栏,基本上都是有子菜单的
                            if (isLeaf)
                            {
                                isLeaf = !(node.Code == FunctionNode.BizRule_ListRuleTable_Code ||
                                           node.Code == FunctionNode.Category_ProcessModel_Code ||
                                           node.Code == FunctionNode.BizBus_BizService_Code ||
                                           node.Code == FunctionNode.ProcessModel_BizMasterData_Code);
                            }
                        }
                    }
                    #endregion

                    treeNodeList.Add(new PortalTreeNode()
                    {
                        ObjectID = node.ObjectID,
                        Code     = node.Code,
                        Text     = getGlobalDisplayName(node),
                        //Icon = ((IconUrl != null && IconUrl.StartsWith("data:image")) ? IconUrl : (this.PortalRoot + "/" + IconUrl)),
                        Icon                  = node.IconCss,
                        ShowPageUrl           = showUrl,
                        LoadDataUrl           = isLeaf ? string.Empty : GetLoadDataUrl(node.ObjectID, node.Code, node.NodeType, node.OwnSchemaCode),
                        IsLeaf                = isLeaf,
                        ParentID              = functionID,
                        ToolBarCode           = toolBarCode,
                        children              = children,
                        IsLock                = (node.IsLocked == true ? true : false),
                        IsLockedByCurrentUser = (node.IsLocked == true && node.LockedBy == controller.UserValidator.UserID),
                        NodeType              = node.NodeType,
                        OwnSchemaCode         = node.OwnSchemaCode
                    });
                    break;
                }
            }
            return(treeNodeList);
        }