예제 #1
0
        public void TableMode()
        {
            this.Pub2.AddTable();
            this.Pub2.AddTR();
            this.Pub2.AddTDTitle("IDX");
            this.Pub2.AddTDTitle("日期时间");
            this.Pub2.AddTDTitle("从节点");
            this.Pub2.AddTDTitle("人员");
            this.Pub2.AddTDTitle("到节点");
            this.Pub2.AddTDTitle("人员");
            this.Pub2.AddTDTitle("活动");
            this.Pub2.AddTDTitle("信息");
            this.Pub2.AddTDTitle("表单");
            this.Pub2.AddTDTitle("执行人");
            this.Pub2.AddTREnd();

            string sqlOfWhere1 = "";

            string dbStr = BP.Sys.SystemConfig.AppCenterDBVarStr;
            Paras  prs   = new Paras();

            if (this.FID == 0)
            {
                sqlOfWhere1 = " WHERE (FID=" + dbStr + "WorkID11 OR WorkID=" + dbStr + "WorkID12 )  ";
                prs.Add("WorkID11", this.WorkID);
                prs.Add("WorkID12", this.WorkID);
            }
            else
            {
                sqlOfWhere1 = " WHERE (FID=" + dbStr + "FID11 OR WorkID=" + dbStr + "FID12 ) ";
                prs.Add("FID11", this.FID);
                prs.Add("FID12", this.FID);
            }

            string sql = "";

            sql     = "SELECT MyPK,ActionType,ActionTypeText,FID,WorkID,NDFrom,NDFromT,NDTo,NDToT,EmpFrom,EmpFromT,EmpTo,EmpToT,RDT,WorkTimeSpan,Msg,NodeData,Exer,Tag FROM ND" + int.Parse(this.FK_Flow) + "Track " + sqlOfWhere1;
            prs.SQL = sql;
            DataTable dt = null;

            try
            {
                dt = DBAccess.RunSQLReturnTable(prs);
            }
            catch
            {
                // 处理track表.
                Track.CreateOrRepairTrackTable(this.FK_Flow);
                dt = DBAccess.RunSQLReturnTable(prs);
            }

            DataView dv = dt.DefaultView;

            dv.Sort = "RDT";

            int idx = 1;

            foreach (DataRowView dr in dv)
            {
                ActionType at = (ActionType)int.Parse(dr[TrackAttr.ActionType].ToString());
                if (at != ActionType.WorkCheck)
                {
                    continue;
                }

                this.Pub2.AddTR();
                this.Pub2.AddTDIdx(idx++);
                DateTime dtt = DataType.ParseSysDateTime2DateTime(dr[TrackAttr.RDT].ToString());
                this.Pub2.AddTD(dtt.ToString("yyyy年MM月dd日HH:mm"));

                this.Pub2.AddTD(dr[TrackAttr.NDFromT].ToString());


                this.Pub2.AddTD(dr[TrackAttr.EmpFromT].ToString());
                this.Pub2.AddTD(dr[TrackAttr.NDToT].ToString());
                this.Pub2.AddTD(dr[TrackAttr.EmpToT].ToString());

                this.Pub2.AddTD("<img src='../../Img/Action/" + at.ToString() + ".png' class='ActionType' border=0/>" + BP.WF.Track.GetActionTypeT(at));

                // 删除信息
                string tag = dr[TrackAttr.Tag].ToString();
                string msg = dr[TrackAttr.Msg].ToString();
                switch (at)
                {
                case ActionType.CallChildenFlow:     //被调用父流程吊起。
                    tag = dr[TrackAttr.Tag].ToString();
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        AtPara ap = new AtPara(tag);
                        this.Pub2.AddTD("class=TD", "<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a>");
                    }
                    else
                    {
                        this.Pub2.AddTD("class=TD", msg);
                    }
                    break;

                case ActionType.StartChildenFlow:     //吊起子流程。
                    tag = dr[TrackAttr.Tag].ToString();
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        AtPara ap = new AtPara(tag);
                        this.Pub2.AddTD("class=TD", "<a target=b" + ap.GetValStrByKey("CWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("CWorkID") + "&FK_Flow=" + ap.GetValStrByKey("CFlowNo") + "' >" + msg + "</a>");
                    }
                    else
                    {
                        this.Pub2.AddTD("class=TD", msg);
                    }
                    break;

                default:
                    this.Pub2.AddTD(DataType.ParseText2Html(msg));
                    break;
                }

                this.Pub2.AddTD("<a href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDTo].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">表单</a>");
                this.Pub2.AddTD(dr[TrackAttr.Exer].ToString());
                this.Pub2.AddTREnd();
            }
            this.Pub2.AddTableEnd();

            if (this.CCID != null)
            {
                CCList cl = new CCList();
                cl.MyPK = this.CCID;
                cl.RetrieveFromDBSources();
                this.Pub2.AddFieldSet(cl.Title);
                this.Pub2.Add("抄送人:" + cl.Rec + ", 抄送日期:" + cl.RDT);
                this.Pub2.AddHR();
                this.Pub2.Add(cl.DocHtml);
                this.Pub2.AddFieldSetEnd();
                if (cl.HisSta == CCSta.UnRead)
                {
                    cl.HisSta = CCSta.Read;
                    cl.Update();
                }
            }
        }
예제 #2
0
        public void BindTrack()
        {
            this.Page.Title = "感谢您使用ccflow";
            if (this.DoType == "View")
            {
                this.BindTrack_ViewWork();
                return;
            }

            if (this.DoType == "ViewSpecialWork")
            {
                this.BindTrack_ViewSpecialWork();
                return;
            }

            this.AddTable();
            this.AddTR();
            this.AddTDTitle("IDX");
            this.AddTDTitle("日期时间");
            this.AddTDTitle("从节点");
            this.AddTDTitle("人员");
            this.AddTDTitle("到节点");
            this.AddTDTitle("人员");
            this.AddTDTitle("活动");
            this.AddTDTitle("信息");
            this.AddTDTitle("表单");
            this.AddTDTitle("执行人");
            this.AddTREnd();

            string sqlOfWhere2 = "";
            string sqlOfWhere1 = "";

            string dbStr = BP.SystemConfig.AppCenterDBVarStr;
            Paras  prs   = new Paras();

            if (this.FID == 0)
            {
                sqlOfWhere1 = " WHERE (FID=" + dbStr + "WorkID11 OR WorkID=" + dbStr + "WorkID12 )  ";
                prs.Add("WorkID11", this.WorkID);
                prs.Add("WorkID12", this.WorkID);
            }
            else
            {
                sqlOfWhere1 = " WHERE (FID=" + dbStr + "FID11 OR WorkID=" + dbStr + "FID12 ) ";
                prs.Add("FID11", this.FID);
                prs.Add("FID12", this.FID);
            }

            string sql = "";

            sql     = "SELECT MyPK,ActionType,ActionTypeText,FID,WorkID,NDFrom,NDFromT,NDTo,NDToT,EmpFrom,EmpFromT,EmpTo,EmpToT,RDT,WorkTimeSpan,Msg,NodeData,Exer FROM ND" + int.Parse(this.FK_Flow) + "Track " + sqlOfWhere1;
            prs.SQL = sql;

            DataTable dt = DBAccess.RunSQLReturnTable(prs);
            DataView  dv = dt.DefaultView;

            dv.Sort = "RDT";

            // dv.RowFilter

            int idx = 1;

            foreach (DataRowView dr in dv)
            {
                this.AddTR();
                this.AddTDIdx(idx++);
                DateTime dtt = DataType.ParseSysDateTime2DateTime(dr[TrackAttr.RDT].ToString());
                this.AddTD(dtt.ToString("MM月dd日HH:mm"));

                this.AddTD(dr[TrackAttr.NDFromT].ToString());
                this.AddTD(dr[TrackAttr.EmpFromT].ToString());
                this.AddTD(dr[TrackAttr.NDToT].ToString());
                this.AddTD(dr[TrackAttr.EmpToT].ToString());

                ActionType at = (ActionType)int.Parse(dr[TrackAttr.ActionType].ToString());

                this.AddTD("<img src='./../../Img/Action/" + at.ToString() + ".png' class='ActionType' border=0/>" + BP.WF.Track.GetActionTypeT(at));

                this.AddTD(DataType.ParseText2Html(dr[TrackAttr.Msg].ToString()));

                //this.AddTD(item.NDToT);
                //this.AddTD(item.EmpToT);
                //this.AddTD(item.HisActionTypeT);
                //this.AddTDDoc(item.MsgHtml);

                this.AddTD("<a href=\"javascript:WinOpen('" + this.Request.ApplicationPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">表单</a>");
                this.AddTD(dr[TrackAttr.Exer].ToString());
                this.AddTREnd();
            }
            this.AddTableEnd();

            if (this.CCID != null)
            {
                CCList cl = new CCList();
                cl.MyPK = this.CCID;
                cl.RetrieveFromDBSources();
                this.AddFieldSet(cl.Title);
                this.Add("抄送人:" + cl.Rec + ", 抄送日期:" + cl.RDT);
                this.AddHR();
                this.Add(cl.DocHtml);
                this.AddFieldSetEnd();

                if (cl.HisSta == CCSta.UnRead)
                {
                    cl.HisSta = CCSta.Read;
                    cl.Update();
                }
            }
        }
예제 #3
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //以下判断没发现起到什么作用
            if (BP.WF.Dev2Interface.Flow_IsCanViewTruck(this.FK_Flow, this.WorkID, this.FID) == false)
            {
                //string url = this.Request.RawUrl;
                ////url=url.Replace
                ////this.Response.Redirect(url,true);

                //string errorStr = "您没有权限查看该工作";
                //errorStr += "<br>1,您非该流程的处理人.";
                //errorStr += "<br>2, 您不与该流程发起人是同一个部门。";
                //return ;
            }

            if (this.DoType == "View")
            {
                this.BindTrack_ViewWork();
                return;
            }

            if (this.DoType == "ViewSpecialWork")
            {
                this.BindTrack_ViewSpecialWork();
                return;
            }


            //this.AddTable("class='Table' cellpadding='0' cellspacing='0' border='0' style='width: 100%'");
            //this.AddTR();
            //this.AddTDGroupTitle("style='text-align:center'", "序");
            //this.AddTDGroupTitle("操作时间");
            //this.AddTDGroupTitle("表单"); //moved by liuxc,2014-12-18,应zhangqingpeng要求将此列提前
            //this.AddTDGroupTitle("从节点");
            //this.AddTDGroupTitle("人员");
            //this.AddTDGroupTitle("到节点");
            //this.AddTDGroupTitle("人员");
            //this.AddTDGroupTitle("到达时间");
            //this.AddTDGroupTitle("用时");
            //this.AddTDGroupTitle("活动");
            //this.AddTDGroupTitle("信息");
            //this.AddTDGroupTitle("执行人");
            //this.AddTREnd();

            //获取track.
            DataTable dt = BP.WF.Dev2Interface.DB_GenerTrack(this.FK_Flow, this.WorkID, this.FID).Tables["Track"];
            DataView  dv = dt.DefaultView;

            dv.Sort = "RDT";

            GenerWorkFlow gwf = new GenerWorkFlow();

            gwf.WorkID = this.WorkID;
            gwf.RetrieveFromDBSources();

            string currNodeID = "0";

            if (gwf.WFState != WFState.Complete)
            {
                currNodeID = gwf.FK_Node.ToString(); //获得当前运行到的节点如果流程完成则为O.
            }
            int    idx      = 1;
            string checkStr = "";

            #region    qin   改成时间轴的显示方式 15/7/15   如果不需要这种显示方式
            string str = "";//拼接字符串
            str += "<div style='width: 100%;height:400px;'><div class='content'>";
            str += "<div class='wrapper'>";
            str += "<div class='main'>";

            str += "<h1 class='title'>";
            str += "流程日志</h1>";
            str += "<div class='year'>";
            str += "<h2>";
            str += "<a href='#'>&nbsp;&nbsp;时间轴<i></i></a></h2>";
            str += "<div class='list'>";
            str += "<ul>";
            #endregion qin   改成时间轴的显示方式 15/7/15

            #region 开始循环添加数据
            foreach (DataRowView dr in dv)
            {
                Int64 fid = int.Parse(dr["FID"].ToString());
                if (fid != 0)
                {
                    continue;
                }

                ActionType at = (ActionType)int.Parse(dr[TrackAttr.ActionType].ToString());

                //如果是协作发送,就不输出他. edit 2016.02.20 .
                if (at == ActionType.TeampUp)
                {
                    continue;
                }

                // 记录审核节点。
                if (at == ActionType.WorkCheck)
                {
                    checkStr = dr[TrackAttr.NDFrom].ToString(); //记录当前的审核节点id.
                }
                //审核信息过滤,
                if (at == ActionType.WorkCheck)
                {
                    if (currNodeID == checkStr)
                    {
                        continue;
                    }
                    //如果当前节点与审核信息节点一致,就说明当前人员的审核意见已经保存,但是工作还没有发送,就不让他显示。
                }

                if (at == ActionType.Forward)
                {
                    if (checkStr == dr[TrackAttr.NDFrom].ToString())
                    {
                        continue;
                    }
                }
                str += "<li  class='cls highlight' style=\"background: url('../../Img/Action/" + at.ToString() + ".png') no-repeat 235px 31px\">";
                //this.AddTR();
                //this.AddTDIdx(idx);

                DateTime dtt = DataType.ParseSysDateTime2DateTime(dr[TrackAttr.RDT].ToString());

                // this.AddTD(dtt.ToString("yy年MM月dd日HH:mm"));</br>
                str += "<p class='date'>" + dtt.ToString("yy年MM月dd日") + " " + dtt.ToString("hh时mm分");
                str += "</br>" + BP.DA.DataType.GetWeek((int)dtt.DayOfWeek);
                str += "</br>" + BP.WF.Glo.GenerUserImgHtml(dr[TrackAttr.EmpFrom].ToString(), dr[TrackAttr.EmpFromT].ToString()) + "</p>";
                str += "<p class='intro'>" + dr[TrackAttr.NDFromT].ToString() + "</p>";

                str += "<div class='more'>";

                if (at == ActionType.Forward || at == ActionType.ForwardAskfor || at == ActionType.WorkCheck || at == ActionType.Order ||
                    at == ActionType.FlowOver || //added by liuxc,2014-12-3,正常结束结点也显示表单
                    at == ActionType.Skip)       //added by liuxc,2015-7-13,自动跳转的也显示表单
                {
                    //this.AddTD("<a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDFrom].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">表单</a>");
                    str += "<p><a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDFrom].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">打开<img src='../../Img/Form.png'>表单</a>" + "</p>";
                }

                if (at == ActionType.FlowOver ||
                    at == ActionType.CC ||
                    at == ActionType.UnSend)
                {
                    str += "<p></p>";
                    str += "<p></p>";
                }
                else
                {
                    str += "<p>发送到节点:" + dr[TrackAttr.NDToT].ToString() + "</p>";
                }

                //增加两列,到达时间、用时 added by liuxc,2014-12-4
                if (idx > 1)
                {
                    var toTime = Convert.ToDateTime(dv[idx - 1 - 1][TrackAttr.RDT].ToString());
                    str += "<p>到达时间:" + toTime.ToString("yy年MM月dd日HH:mm") + " 用时:" + DataType.GetSpanTime(toTime, dtt) + "</p>";
                }

                // 删除信息.
                string tag = dr[TrackAttr.Tag].ToString();
                if (tag != null)
                {
                    tag = tag.Replace("~", "'");
                }

                string msg = DataType.ParseText2Html(dr[TrackAttr.Msg].ToString());
                switch (at)
                {
                case ActionType.CallChildenFlow:     //被调用父流程吊起。
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        AtPara        ap    = new AtPara(tag);
                        GenerWorkFlow mygwf = new GenerWorkFlow();
                        mygwf.WorkID = ap.GetValInt64ByKey("PWorkID");
                        if (mygwf.RetrieveFromDBSources() == 1)
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上,被父流程{" + mygwf.FlowName + "},<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a></p>";
                        }
                        else
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上,被父流程调用{" + mygwf.FlowName + "},但是该流程被删除了.</p>" + tag;
                        }

                        msg = "<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a>";
                    }
                    break;

                case ActionType.StartChildenFlow:     //吊起子流程。
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        if (tag.Contains("Sub"))
                        {
                            tag = tag.Replace("Sub", "C");
                        }

                        AtPara        ap    = new AtPara(tag);
                        GenerWorkFlow mygwf = new GenerWorkFlow();
                        mygwf.WorkID = ap.GetValInt64ByKey("CWorkID");
                        if (mygwf.RetrieveFromDBSources() == 1)
                        {
                            msg  = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上调用了子流程{" + mygwf.FlowName + "}, <a target=b" + ap.GetValStrByKey("CWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("CWorkID") + "&FK_Flow=" + ap.GetValStrByKey("CFlowNo") + "' >" + msg + "</a></p>";
                            msg += "<p>当前子流程状态:{" + mygwf.WFStateText + "},运转到:{" + mygwf.NodeName + "},最后处理人{" + mygwf.TodoEmps + "},最后处理时间{" + mygwf.RDT + "}。</p>";
                        }
                        else
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上调用了子流程{" + mygwf.FlowName + "},但是该流程被删除了.</p>" + tag;
                        }
                    }
                    break;

                default:
                    break;
                }

                msg = msg.Replace("\"", "");

                str += "<p>" + msg + "</p>";
                str += "</div>";
                str += "</li>";
                idx++;
            }

            //判断当前工作是否完成,如果没有完成,就输出当前人员的待办信息 ,读取信息。

            if (gwf.WFState == WFState.Runing)
            {
                GenerWorkerLists gwls = new GenerWorkerLists(gwf.WorkID, gwf.FK_Node);
                Node             nd   = new Node(gwf.FK_Node);

                str += "<li  class='cls highlight' style=\"background: url('../../Img/Action/Todolist.png') no-repeat 235px 31px\" >";

                str += "<BR><BR><p class='date'>流程运行到: " + gwf.NodeName + "。";

                if (gwf.TodoEmpsNum == 1)
                {
                    string myemp = gwf.TodoEmps;
                    myemp = myemp.Replace("(", "");
                    myemp = myemp.Replace(")", "");
                    string[] strs = myemp.Split(',');
                    str += "<br>" + BP.WF.Glo.GenerUserImgHtml(strs[0], strs[1]) + "。</p>";
                }
                else
                {
                    //   str += "<br>处理人员:(" + gwf.TodoEmps + ")计(" + gwf.TodoEmpsNum + ")个,。</p>";
                }

                str += "<div></div><br><br>";
                if (nd.HisNodeWorkType == NodeWorkType.WorkFL ||
                    nd.HisNodeWorkType == NodeWorkType.StartWorkFL ||
                    nd.HisNodeWorkType == NodeWorkType.WorkFHL)
                {
                    str += "<div><ul>";
                    foreach (GenerWorkerList item in gwls)
                    {
                        if (gwls.Count == 0 ||
                            nd.TodolistModel == TodolistModel.QiangBan ||
                            nd.TodolistModel == TodolistModel.Sharing)
                        {
                            if (item.IsRead == false)
                            {
                                str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp; <font style='color:#FFFFFF; background-color:#00CC66' >未读</font></li>";
                            }
                            else
                            {
                                str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已读</strong></font></li>";
                            }
                            break;
                        }

                        switch (nd.TodolistModel)
                        {
                        case TodolistModel.QiangBan:
                            str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已读</strong></font></li>";
                            break;

                        case TodolistModel.Order:
                            if (item.IsPassInt == 1)
                            {
                                str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已处理</strong></font></li>";
                            }
                            else
                            {
                                if (item.IsRead == false)
                                {
                                    str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp; <font style='color:#FFFFFF; background-color:#00CC66' >未读</font></li>";
                                }
                                else
                                {
                                    str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已读</strong></font></li>";
                                }
                            }
                            break;

                        case TodolistModel.Sharing:
                            str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已读</strong></font></li>";
                            break;

                        case TodolistModel.Teamup:
                            if (item.IsPassInt == 1)
                            {
                                str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#999966' ><strong>已处理</strong></font></li>";
                            }
                            else
                            {
                                if (item.IsRead == false)
                                {
                                    str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp; <font style='color:#FFFFFF; background-color:#00CC66' >未读</font></li>";
                                }
                                else
                                {
                                    str += "<li><img src='../../Img/Dot.png' width='8px' >处理人:" + BP.WF.Glo.DealUserInfoShowModel(item.FK_Emp, item.FK_EmpText) + "&nbsp;&nbsp;<font style='color:#FFFFFF; background-color:#FF9966' ><strong>已读</strong></font></li>";
                                }
                            }
                            break;

                        default:
                            break;
                        }
                    }
                }

                str += "</ul>";
                str += "</div>";

                str += "<br>";
                str += "<br>";
                str += "<br>";
                str += "<br>";
                str += "<br>";
                str += "<br>";
                str += "<br>";

                str += "</li>";


                ///* 运行中的状态. */
                //str += "<li>";
                //str += "<table>";
                //str += "<caption>当前节点信息</caption>";
                //str += "<tr>";
                //str += "<th>停留节点</th>";
                //str += "<th>处理人</th>";
                //str += "<th>是否读取?</th>";
                //str += "</tr>";
                //foreach (GenerWorkerList item in gwls)
                //{
                //    str += "<tr>";
                //    str += "<td>" + item.FK_NodeText + "</td>";
                //    str += "<td>" + item.FK_EmpText + "</td>";
                //    if (item.IsRead)
                //        str += "<td>已读</td>";
                //    else
                //        str += "<td>未读</td>";
                //    str += "</tr>";
                //}
                //str += "</table>";
                //str += "</li>";
            }

            //结束循环.
            //this.AddTableEnd();
            #endregion

            if (this.CCID != null)
            {
                CCList cl = new CCList();
                cl.MyPK = this.CCID;
                cl.RetrieveFromDBSources();
                // this.AddFieldSet(cl.Title);
                // this.Add("抄送人:" + cl.Rec + ", 抄送日期:" + cl.RDT);
                // this.AddHR();
                // this.Add(cl.DocHtml);
                // this.AddFieldSetEnd();
                str += "<li  class='cls highlight' style=\"background: url('./Img/Action/circle.png') no-repeat 235px 31px\">";
                str += "<p class='date'>&nbsp;</p>";
                str += "<p class='intro'>" + cl.Title + "</p>";
                str += "<p class='version'>&nbsp;</p>";
                str += "<div class='more'>";
                str += "<p>抄送人:" + cl.Rec + "</p>";
                str += "<p>抄送日期:" + cl.RDT + "</p>";
                str += "</div>";
                str += "</li>";
                if (cl.HisSta == CCSta.UnRead)
                {
                    cl.HisSta = CCSta.Read;
                    cl.Update();
                }
            }

            str += "</ul>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            //this.Clear();
            HiddenField1.Value = str.ToString();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.DoType == "View")
            {
                this.BindTrack_ViewWork();
                return;
            }

            if (this.DoType == "ViewSpecialWork")
            {
                this.BindTrack_ViewSpecialWork();
                return;
            }


            //this.AddTable("class='Table' cellpadding='0' cellspacing='0' border='0' style='width: 100%'");
            //this.AddTR();
            //this.AddTDGroupTitle("style='text-align:center'", "序");
            //this.AddTDGroupTitle("操作时间");
            //this.AddTDGroupTitle("表单"); //moved by liuxc,2014-12-18,应zhangqingpeng要求将此列提前
            //this.AddTDGroupTitle("从节点");
            //this.AddTDGroupTitle("人员");
            //this.AddTDGroupTitle("到节点");
            //this.AddTDGroupTitle("人员");
            //this.AddTDGroupTitle("到达时间");
            //this.AddTDGroupTitle("用时");
            //this.AddTDGroupTitle("活动");
            //this.AddTDGroupTitle("信息");
            //this.AddTDGroupTitle("执行人");
            //this.AddTREnd();

            //获取track.
            DataTable dt = BP.WF.Dev2Interface.DB_GenerTrack(this.FK_Flow, this.WorkID, this.FID).Tables["Track"];
            DataView  dv = dt.DefaultView;

            dv.Sort = "RDT";

            GenerWorkFlow gwf = new GenerWorkFlow();

            gwf.WorkID = this.WorkID;
            gwf.RetrieveFromDBSources();

            string currNodeID = "0";

            if (gwf.WFState != WFState.Complete)
            {
                currNodeID = gwf.FK_Node.ToString(); //获得当前运行到的节点如果流程完成则为O.
            }
            int    idx      = 1;
            string checkStr = "";

            #region    qin   改成时间轴的显示方式 15/7/15   如果不需要这种显示方式
            string str = "";//拼接字符串
            str += "<div class='content'>";
            str += "<div class='wrapper'>";
            str += "<div class='main'>";

            str += "<h1 class='title'>";
            str += "ccflow流程日志</h1>";
            str += "<div class='year'>";
            str += "<h2>";
            str += "<a href='#'>到达时间<i></i></a></h2>";

            str += "<div class='list'>";
            str += "<ul>";
            #endregion qin   改成时间轴的显示方式 15/7/15

            #region 开始循环添加数据
            foreach (DataRowView dr in dv)
            {
                ActionType at = (ActionType)int.Parse(dr[TrackAttr.ActionType].ToString());
                // 记录审核节点。
                if (at == ActionType.WorkCheck)
                {
                    checkStr = dr[TrackAttr.NDFrom].ToString(); //记录当前的审核节点id.
                }
                //审核信息过滤,
                if (at == ActionType.WorkCheck)
                {
                    if (currNodeID == checkStr)
                    {
                        continue;
                    }
                    //如果当前节点与审核信息节点一致,就说明当前人员的审核意见已经保存,但是工作还没有发送,就不让他显示。
                }

                if (at == ActionType.Forward)
                {
                    if (checkStr == dr[TrackAttr.NDFrom].ToString())
                    {
                        continue;
                    }
                }
                str += "<li  class='cls highlight' style=\"background: url('../../Img/Action/" + at.ToString() + ".png') no-repeat 235px 31px\">";
                //this.AddTR();
                //this.AddTDIdx(idx);

                DateTime dtt = DataType.ParseSysDateTime2DateTime(dr[TrackAttr.RDT].ToString());


                // this.AddTD(dtt.ToString("yy年MM月dd日HH:mm"));</br>
                str += "<p class='date'>" + dtt.ToString("yy年MM月dd日") + "  " + BP.DA.DataType.GetWeek((int)dtt.DayOfWeek);
                str += "</br>" + dtt.ToString("hh时mm分");
                str += "</br>" + BP.WF.Glo.GenerUserImgHtml(dr[TrackAttr.EmpFrom].ToString(), dr[TrackAttr.EmpFromT].ToString()) + "</p>";
                str += "<p class='intro'>" + dr[TrackAttr.NDFromT].ToString() + "</p>";
                str += "<div class='more'>";

                if (at == ActionType.Forward || at == ActionType.ForwardAskfor || at == ActionType.WorkCheck || at == ActionType.Order ||
                    at == ActionType.FlowOver || //added by liuxc,2014-12-3,正常结束结点也显示表单
                    at == ActionType.Skip)       //added by liuxc,2015-7-13,自动跳转的也显示表单
                {
                    //this.AddTD("<a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDFrom].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">表单</a>");
                    str += "<p>" + "<a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDFrom].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">表单</a>" + "</p>";
                }
                else
                {
                    // this.AddTD("");
                    //  str += "<p>" + "<a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" >表单</a>" + "</p>";
                }
                //this.AddTD(dr[TrackAttr.NDFromT].ToString());
                //this.AddTD(BP.WF.Glo.GenerUserImgSmallerHtml(dr[TrackAttr.EmpFrom].ToString(), dr[TrackAttr.EmpFromT].ToString()));
                //this.AddTD("<img src='../../Img/Action/" + at.ToString() + ".png' class='ActionType' border=0/>" + BP.WF.Track.GetActionTypeT(at));

                if (at == ActionType.FlowOver ||
                    at == ActionType.CC ||
                    at == ActionType.UnSend)
                {
                    str += "<p></p>";
                    str += "<p></p>";
                }
                else
                {
                    str += "<p>到达节点:" + dr[TrackAttr.NDToT].ToString() + "</p>";
                }

                //增加两列,到达时间、用时 added by liuxc,2014-12-4
                if (idx > 1)
                {
                    var toTime = Convert.ToDateTime(dv[idx - 1 - 1][TrackAttr.RDT].ToString());
                    str += "<p>到达时间:" + toTime.ToString("yy年MM月dd日HH:mm") + " 用时:" + DataType.GetSpanTime(toTime, dtt) + "</p>";
                }

                // 删除信息.
                string tag = dr[TrackAttr.Tag].ToString();
                if (tag != null)
                {
                    tag = tag.Replace("~", "'");
                }

                string msg = DataType.ParseText2Html(dr[TrackAttr.Msg].ToString());
                switch (at)
                {
                case ActionType.CallChildenFlow:     //被调用父流程吊起。
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        AtPara        ap    = new AtPara(tag);
                        GenerWorkFlow mygwf = new GenerWorkFlow();
                        mygwf.WorkID = ap.GetValInt64ByKey("PWorkID");
                        if (mygwf.RetrieveFromDBSources() == 1)
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上,被父流程{" + mygwf.FlowName + "},<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a></p>";
                        }
                        else
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上,被父流程调用{" + mygwf.FlowName + "},但是该流程被删除了.</p>" + tag;
                        }

                        msg = "<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a>";
                    }
                    break;

                case ActionType.StartChildenFlow:     //吊起子流程。
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        if (tag.Contains("Sub"))
                        {
                            tag = tag.Replace("Sub", "C");
                        }

                        AtPara        ap    = new AtPara(tag);
                        GenerWorkFlow mygwf = new GenerWorkFlow();
                        mygwf.WorkID = ap.GetValInt64ByKey("CWorkID");
                        if (mygwf.RetrieveFromDBSources() == 1)
                        {
                            msg  = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上调用了子流程{" + mygwf.FlowName + "}, <a target=b" + ap.GetValStrByKey("CWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("CWorkID") + "&FK_Flow=" + ap.GetValStrByKey("CFlowNo") + "' >" + msg + "</a></p>";
                            msg += "<p>当前子流程状态:{" + mygwf.WFStateText + "},运转到:{" + mygwf.NodeName + "},最后处理人{" + mygwf.TodoEmps + "},最后处理时间{" + mygwf.RDT + "}。</p>";
                        }
                        else
                        {
                            msg = "<p>操作员:{" + dr[TrackAttr.EmpFromT].ToString() + "}在当前节点上调用了子流程{" + mygwf.FlowName + "},但是该流程被删除了.</p>" + tag;
                        }
                    }
                    break;

                default:
                    break;
                }

                msg = msg.Replace("\"", "");

                str += "<p>" + msg + "</p>";
                str += "</div>";
                str += "</li>";
                idx++;
            } //结束循环.
            //this.AddTableEnd();
            #endregion

            if (this.CCID != null)
            {
                CCList cl = new CCList();
                cl.MyPK = this.CCID;
                cl.RetrieveFromDBSources();
                // this.AddFieldSet(cl.Title);
                // this.Add("抄送人:" + cl.Rec + ", 抄送日期:" + cl.RDT);
                // this.AddHR();
                // this.Add(cl.DocHtml);
                // this.AddFieldSetEnd();
                str += "<li  class='cls highlight' style=\"background: url('./Img/Action/circle.png') no-repeat 235px 31px\">";
                str += "<p class='date'>&nbsp;</p>";
                str += "<p class='intro'>" + cl.Title + "</p>";
                str += "<p class='version'>&nbsp;</p>";
                str += "<div class='more'>";
                str += "<p>抄送人:" + cl.Rec + "</p>";
                str += "<p>抄送日期:" + cl.RDT + "</p>";
                str += "</div>";
                str += "</li>";
                if (cl.HisSta == CCSta.UnRead)
                {
                    cl.HisSta = CCSta.Read;
                    cl.Update();
                }
            }

            str += "</ul>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            str += "</div>";
            //this.Clear();
            HiddenField1.Value = str.ToString();
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.DoType == "View")
            {
                this.BindTrack_ViewWork();
                return;
            }

            if (this.DoType == "ViewSpecialWork")
            {
                this.BindTrack_ViewSpecialWork();
                return;
            }

            this.AddTable("class='Table' cellpadding='0' cellspacing='0' border='0' style='width: 100%'");
            this.AddTR();
            this.AddTDGroupTitle("style='text-align:center'", "序");
            this.AddTDGroupTitle("操作时间");
            this.AddTDGroupTitle("表单"); //moved by liuxc,2014-12-18,应zhangqingpeng要求将此列提前
            this.AddTDGroupTitle("从节点");
            this.AddTDGroupTitle("人员");
            this.AddTDGroupTitle("到节点");
            this.AddTDGroupTitle("人员");
            this.AddTDGroupTitle("到达时间");
            this.AddTDGroupTitle("用时");
            this.AddTDGroupTitle("活动");
            this.AddTDGroupTitle("信息");
            this.AddTDGroupTitle("执行人");
            this.AddTREnd();

            //获取track.
            DataTable dt = BP.WF.Dev2Interface.DB_GenerTrack(this.FK_Flow, this.WorkID, this.FID).Tables["Track"];
            DataView  dv = dt.DefaultView;

            dv.Sort = "RDT";

            GenerWorkFlow gwf = new GenerWorkFlow();

            gwf.WorkID = this.WorkID;
            gwf.RetrieveFromDBSources();

            string currNodeID = "0";

            if (gwf.WFState != WFState.Complete)
            {
                currNodeID = gwf.FK_Node.ToString(); //获得当前运行到的节点如果流程完成则为O.
            }
            int    idx      = 1;
            string checkStr = "";

            foreach (DataRowView dr in dv)
            {
                ActionType at = (ActionType)int.Parse(dr[TrackAttr.ActionType].ToString());
                // 记录审核节点。
                if (at == ActionType.WorkCheck)
                {
                    checkStr = dr[TrackAttr.NDFrom].ToString(); //记录当前的审核节点id.
                }
                //审核信息过滤,
                if (at == ActionType.WorkCheck)
                {
                    if (currNodeID == checkStr)
                    {
                        continue;
                    }
                    //如果当前节点与审核信息节点一致,就说明当前人员的审核意见已经保存,但是工作还没有发送,就不让他显示。
                }

                if (at == ActionType.Forward)
                {
                    if (checkStr == dr[TrackAttr.NDFrom].ToString())
                    {
                        continue;
                    }
                }

                this.AddTR();
                this.AddTDIdx(idx);
                DateTime dtt = DataType.ParseSysDateTime2DateTime(dr[TrackAttr.RDT].ToString());
                this.AddTD(dtt.ToString("yy年MM月dd日HH:mm"));

                if (at == ActionType.Forward ||
                    at == ActionType.ForwardAskfor ||
                    at == ActionType.WorkCheck ||
                    at == ActionType.Order ||
                    at == ActionType.FlowOver || //added by liuxc,2014-12-3,正常结束结点也显示表单
                    at == ActionType.Skip)       //added by liuxc,2015-7-13,自动跳转的也显示表单
                {
                    this.AddTD("<a class='easyui-linkbutton' data-options=\"iconCls:'icon-sheet'\" href=\"javascript:WinOpen('" + BP.WF.Glo.CCFlowAppPath + "WF/WFRpt.aspx?WorkID=" + dr[TrackAttr.WorkID].ToString() + "&FK_Flow=" + this.FK_Flow + "&FK_Node=" + dr[TrackAttr.NDFrom].ToString() + "&DoType=View&MyPK=" + dr[TrackAttr.MyPK].ToString() + "','" + dr[TrackAttr.MyPK].ToString() + "');\">表单</a>");
                }
                else
                {
                    this.AddTD("");
                }

                this.AddTD(dr[TrackAttr.NDFromT].ToString());
                this.AddTD(BP.WF.Glo.GenerUserImgSmallerHtml(dr[TrackAttr.EmpFrom].ToString(), dr[TrackAttr.EmpFromT].ToString()));

                if (at == ActionType.FlowOver ||
                    at == ActionType.CC ||
                    at == ActionType.UnSend)
                {
                    this.AddTD();
                    this.AddTD();
                }
                else
                {
                    this.AddTD(dr[TrackAttr.NDToT].ToString());
                    this.AddTD(dr[TrackAttr.EmpToT].ToString());
                }

                //增加两列,到达时间、用时 added by liuxc,2014-12-4
                if (idx > 1)
                {
                    var toTime = Convert.ToDateTime(dv[idx - 1 - 1][TrackAttr.RDT].ToString());
                    this.AddTD(toTime.ToString("yy年MM月dd日HH:mm"));
                    this.AddTD(DataType.GetSpanTime(toTime, dtt));
                }
                else
                {
                    this.AddTD();
                    this.AddTD();
                }

                this.AddTD("<img src='../../Img/Action/" + at.ToString() + ".png' class='ActionType' border=0/>" + BP.WF.Track.GetActionTypeT(at));

                // 删除信息.
                string tag = dr[TrackAttr.Tag].ToString();
                if (tag != null)
                {
                    tag = tag.Replace("~", "'");
                }

                string msg = dr[TrackAttr.Msg].ToString();
                switch (at)
                {
                case ActionType.CallChildenFlow:     //被调用父流程吊起。
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        AtPara ap = new AtPara(tag);
                        this.AddTD("class=TD", "<a target=b" + ap.GetValStrByKey("PWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("PWorkID") + "&FK_Flow=" + ap.GetValStrByKey("PFlowNo") + "' >" + msg + "</a>");
                    }
                    else
                    {
                        this.AddTD("class=TD", msg);
                    }
                    break;

                case ActionType.StartChildenFlow:     //吊起子流程。
                    if (string.IsNullOrEmpty(tag) == false)
                    {
                        AtPara ap = new AtPara(tag);
                        this.AddTD("class=TD", "<a target=b" + ap.GetValStrByKey("CWorkID") + " href='Track.aspx?WorkID=" + ap.GetValStrByKey("CWorkID") + "&FK_Flow=" + ap.GetValStrByKey("CFlowNo") + "' >" + msg + "</a>");
                    }
                    else
                    {
                        this.AddTD("class=TD", msg);
                    }
                    break;

                default:
                    this.AddTD(DataType.ParseText2Html(msg));
                    break;
                }

                this.AddTD(dr[TrackAttr.Exer].ToString());
                this.AddTREnd();
                idx++;
            }
            this.AddTableEnd();

            if (this.CCID != null)
            {
                CCList cl = new CCList();
                cl.MyPK = this.CCID;
                cl.RetrieveFromDBSources();
                this.AddFieldSet(cl.Title);
                this.Add("抄送人:" + cl.Rec + ", 抄送日期:" + cl.RDT);
                this.AddHR();
                this.Add(cl.DocHtml);
                this.AddFieldSetEnd();

                if (cl.HisSta == CCSta.UnRead)
                {
                    cl.HisSta = CCSta.Read;
                    cl.Update();
                }
            }
        }