氚云--用前端代码删除除开需要部门的子表行数据

发布时间 2023-06-07 16:15:06作者: 山君与见山

场景:一张警示主表,发起警示分解表子流程,带入发起人进行发起,之后加一个发起人的经办节点,在分解表中发起人部门之外的数据不能 出现在任务明细子表中。但是在主表进行子流程带数据到分解表时,不能对部门进行判断带入相应部门的子表数据。

解决:在分解表中获取发起人相关部门,获取子表数据,判断子表中部门是否包含发起人的相关部门信息,先设置数组,储存所有的子表id,以及包含发起人相关部门的子表id,进行两个数组的循环判断,判断后出去所有id数组中包含发起人相关id的值内容,之后使用新数组,传递不包含发起人相关部门的数组数据。

下面代码是进行后端判断,传值到前端

   //根据actionName判断当前请求是否是为了获取当前登录人信息
        string dq = this.Request.ActivityCode;
        if(actionName == "GetCurrentLoginUser" && (dq == "Activity74" || dq == "Activity33"))
        {
            //       string ActivityCode=this.Request.ActivityCode ;
            string objectidi = this.Request.BizObject["ObjectId"] + string.Empty;
            string fqr = "SELECT * FROM H_WorkItem where BizObjectId='" + objectidi + "'";
            System.Data.DataTable fqrlc = this.Engine.Query.QueryTable(fqr, null);
            string yh = fqrlc.Rows[0]["Originator"].ToString();
            string YH = "SELECT * FROM H_User where ObjectId='" + yh + "'";
            System.Data.DataTable yhlc = this.Engine.Query.QueryTable(YH, null);
            string bm1 = fqrlc.Rows[0]["OriginatorParent"].ToString();
            string BM1 = "SELECT * FROM H_Organizationunit where ObjectId='" + bm1 + "'";
            System.Data.DataTable bmlc1 = this.Engine.Query.QueryTable(BM1, null);

            string bm = this.Request.BizObject["OwnerDeptId"] + string.Empty;
            string BM = "SELECT * FROM H_Organizationunit where ObjectId='" + bm + "'";
            System.Data.DataTable bmlc = this.Engine.Query.QueryTable(BM, null);
            //获取子表的值:
            H3.DataModel.BizObject[] details = (H3.DataModel.BizObject[]) this.Request.BizObject["D102301Fgdb1i8tixyk8ol1dsnb68wht6"];//子表
            string shifou = "";
            string zibObjectid = "";
            String[] zrbm = null;//责任部门
            String[] zib = null;//子表id
            String[] zibiao = null;
            String[]zibin = null;
            //String[]xinn = null;
            string sjbm = bmlc.Rows[0]["ParentId"].ToString();//当前部门的父部门
            string BMsj = "SELECT * FROM H_Organizationunit where ObjectId='" + sjbm + "'";
            System.Data.DataTable bmlcsj = this.Engine.Query.QueryTable(BMsj, null);
            string ssjbm = "";
            if(bmlcsj.Rows.Count > 0)
            {
                ssjbm = bmlcsj.Rows[0]["ParentId"].ToString();
            }

            string BMssj = "SELECT * FROM H_Organizationunit where ObjectId='" + ssjbm + "'";
            // System.Data.DataTable bmlcssj = this.Engine.Query.QueryTable(BMssj, null);
            // string sssjbm = bmlcssj.Rows[0]["ParentId"].ToString();
            if(details != null && details.Length > 0)
            {


                // List < string > strList=new List<string>(zrbm);
                List < string > strList=new List<string>();
                List < string > strzib=new List<string>();
                List < string > zib2=new List<string>();

                foreach(H3.DataModel.BizObject detail in details)
                {
                    zib2.Add(detail["ObjectId"].ToString());
                    String[] xuh = (System.String[]) detail["F0000047"];//部门
                    for(int i = 0;i < xuh.Length; i++) {
                        if(xuh[i].ToString() == bm || xuh[i].ToString() == sjbm || xuh[i].ToString() == ssjbm)
                        {//判断是否当前发起人部门是否等于发起人的部门、上级部门、上上级部门,等于纳入zrbm(责任部门)与zib(子表id)数组中
                            strList.Add(xuh[i].ToString());
                            strzib.Add(detail["ObjectId"].ToString());
                        }
                        //strList.Add(xuh[i].ToString());

                    }
                    zrbm = strList.ToArray();
                    // strzib.Add(detail["ObjectId"].ToString());
                    //子表id
                    zib = strzib.ToArray();//存在相关部门的数据id
                    zrbm = strList.ToArray();
                }
                //获取子表所有循环判断结果
                zibiao = zib2.ToArray();//所有子表id
                List < string > zib3=new List<string>();
                //进行判断是否相等:判断子表所有id是否等于具有与发起人有关的子表id,相等就在所有的子表id中,将对应的索引下的值改为空
                for(int i = 0;i < zibiao.Length; i++) {
                    for(int j = 0;j < zib.Length; j++) {
                        string d = zibiao[i].ToString();
                        string c = zib[j].ToString();
                        if(zibiao[i].ToString() == zib[j].ToString())
                        {
                            // zibin=zibiao[i].ToString();
                            //zib3.Add(zibiao[j].ToString());
                            zibiao[i] = "";
                        }
                    }
                }
                //拿取与发起人无关部门的数据,进行数据传输
                List < string > xin=new List<string>();
                for(int j = 0;j < zibiao.Length; j++) {
                    if(zibiao[j].ToString() != "")
                    {
                        xin.Add(zibiao[j].ToString());
                    }
                }
                xinn = xin.ToArray();

                for(int k = 0;k < xinn.Length; k++) {
                    // string str = "SELECT * FROM i_D102301Fgdb1i8tixyk8ol1dsnb68wht6 where ObjectId='" + xinn[k].ToString() + "'";
                    // System.Data.DataTable det = this.Engine.Query.QueryTable(str, null);
                    // if(de) { }
                    string str = "DELETE FROM i_D102301Fgdb1i8tixyk8ol1dsnb68wht6 where ObjectId='" + xinn[k].ToString() + "'";
                    System.Data.DataTable de = this.Engine.Query.QueryTable(str, null);
                }
                //zibiao = zib3.ToArray();
            }


            H3.Organization.User user = this.Request.UserContext.User; //获取当前登录用户的用户对象    

            response.ReturnData = new Dictionary<string, object>();//默认response.ReturnData值为null,所以此处需要初始化
            response.ReturnData.Add("UserId", yh);//将当前登录用户的用户Id响应回前端 
            response.ReturnData.Add("UserName", user.Name); //将当前登录用户的用户姓名响应回前端

            response.ReturnData.Add("UnitId", bm);//将当前登录用户的主部门Id响应回前端
            response.ReturnData.Add("ZRBM", zrbm);//将当前登录用户的主部门Id响应回前端
            response.ReturnData.Add("ZBI", xinn);//将当前登录用户的主部门Id响应回前端
            //response.ReturnData.Add("SFBH", shifou);//将当前登录用户的主部门Id响应回前端
            response.ReturnData.Add("ZBObjectid", zibObjectid);//将当前登录用户的主部门Id响应回前端
            //        response.ReturnData.Add("ActivityCode",ActivityCode );//将当前审批节点响应回前端


        }

前端代码:在前端展示下删除列数据

  OnLoad:function(){
           debugger;
        var parent = this;
        var enviroment = $.SmartForm.ResponseContext;
        if( !enviroment.IsCreateMode ) {
            //PostForm请求后端,actionName为"GetCurrentLoginUser"
            var result = "";
            var UserId = "";
            var UserName = "";
            var UnitId = "";
            var ZBI="";
            var ActivityCode =$.SmartForm.ResponseContext.ActivityCode;
            $.SmartForm.PostForm( "GetCurrentLoginUser", {},
                function( data ) {
                    if( data.Errors && data.Errors.length ) {
                        $.IShowError( "错误", JSON.stringify( data.Errors ) );//将后端添加到Errors集合里的异常信息弹出
                    } else {
                        result = data.ReturnData;//取出后端响应的数据                   
                        UserId = result[ "UserId" ];//取出result对象的UserId属性值,并赋值到一个人员单选控件中                  
                        UserName = result[ "UserName" ];//取出result对象的UserName属性值,并赋值到一个单行文本控件中                    
                        UnitId = result[ "UnitId" ];//取出result对象的UnitId属性值,并赋值到一个部门单选控件中
                        SFBH=result["SFBH"];
                        ZBI=result["ZBI"];
                     //   ActivityCode = result[ "ActivityCode" ];//取出result对象的UnitId属性值,并赋值到一个部门单选控件中
                    }
                },
                function( error ) {
                    $.IShowError( "错误", JSON.stringify( error ) );//将后端未知异常弹出
                }, false );
                
                for( var i = 0;i < ZBI.length;i++ ) {
                        $( "#" + ZBI[i] ).remove();
                    }

          
            
        }
    },