예제 #1
0
        protected void impBtn_Click(object sender, EventArgs e)
        {
            Flow flow = new Flow(this.FK_Flow);

            GERpt rpt = flow.HisGERpt;

            rpt.RetrieveByAttr(GERptAttr.OID, this.WorkID);

            string zhiduNo = rpt.GetValStringByKey("ZhiDuNo");


            string filePath = AppDomain.CurrentDomain.BaseDirectory + ("/DataUser/OfficeFile/" + this.FK_Flow + "/" + this.WorkID + ".doc");

            if (!File.Exists(filePath))
            {
                filePath = AppDomain.CurrentDomain.BaseDirectory + ("/DataUser/OfficeFile/" + this.FK_Flow + "/" + this.WorkID + ".docx");
            }


            string url = BP.Sys.SystemConfig.AppSettings["BaseUrl"] + "/ZhiDu/UploadHander.ashx?zhiduNo=" + zhiduNo + "&IsSendXCBank=0";

            byte[] result = null;
            using (WebClient client = new WebClient())
            {
                client.Headers.Add(HttpRequestHeader.ContentType, "application/octet-stream");
                // wc.Headers.Add(HttpRequestHeader.UserAgent, "Mwwozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
                client.Headers.Add("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)");
                result = client.UploadFile(url, "POST", filePath);
            }
            LoadMenu(true);
        }
예제 #2
0
        /// <summary>
        /// 设置父子关系.
        /// </summary>
        /// <returns></returns>
        public string RefBill_Done()
        {
            try
            {
                string frmID  = this.GetRequestVal("FrmID");
                Int64  workID = this.GetRequestValInt64("WorkID");
                GERpt  rpt    = new GERpt(frmID, workID);

                string pFrmID  = this.GetRequestVal("PFrmID");
                Int64  pWorkID = this.GetRequestValInt64("PWorkID");

                //把数据copy到当前的子表单里.
                GERpt rptP = new GERpt(pFrmID, pWorkID);
                rpt.Copy(rptP);
                rpt.PWorkID = pWorkID;
                rpt.SetValByKey("PFrmID", pFrmID);
                rpt.Update();

                //更新控制表,设置父子关系.
                GenerBill gbill = new GenerBill(workID);
                gbill.PFrmID  = pFrmID;
                gbill.PWorkID = pWorkID;
                gbill.Update();
                return("执行成功");
            }
            catch (Exception ex)
            {
                return("err@" + ex.Message);
            }
        }
예제 #3
0
        private void LoadAttachment()
        {
            string EnName = "ND" + this.FK_Node;

            BP.Sys.MapData mapdata = new BP.Sys.MapData(EnName);

            FrmAttachments attachments = new BP.Sys.FrmAttachments();

            attachments = mapdata.FrmAttachments;


            bool isCompleate = false;

            BP.WF.Node node = new BP.WF.Node(FK_Node);
            try
            {
                WorkFlow workFlow = new WorkFlow(node.FK_Flow, WorkID);
                isCompleate = workFlow.IsComplete;
            }
            catch (Exception)
            {
                try
                {
                    Flow  fl  = new Flow(node.FK_Flow);
                    GERpt rpt = fl.HisGERpt;
                    rpt.OID = WorkID;
                    rpt.Retrieve();

                    if (rpt != null)
                    {
                        if (rpt.WFState == WFState.Complete)
                        {
                            isCompleate = true;
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            }



            foreach (FrmAttachment ath in attachments)
            {
                string src = "";
                if (!isCompleate)
                {
                    src = CCFlowAppPath + "WF/CCForm/AttachmentUpload.aspx?PKVal=" + this.WorkID + "&Ath=" + ath.NoOfObj + "&FK_MapData=" + EnName + "&FK_FrmAttachment=" + ath.MyPK + "&FK_Node=" + this.FK_Node;
                }
                else
                {
                    src = CCFlowAppPath + "WF/CCForm/AttachmentUpload.aspx?PKVal=" + this.WorkID + "&Ath=" + ath.NoOfObj + "&FK_MapData=" + EnName + "&FK_FrmAttachment=" + ath.MyPK + "&FK_Node=" + this.FK_Node + "&IsReadonly=1";
                }

                this.Pub1.Add("<iframe ID='F" + ath.MyPK + "'    src='" + src + "' frameborder=0  style='position:absolute;width:" + ath.W + "px; height:" + ath.H + "px;text-align: left;'  leftMargin='0'  topMargin='0' scrolling=auto /></iframe>");
            }
        }
예제 #4
0
 /// <summary>
 /// 条件
 /// </summary>
 /// <param name="ct">类型</param>
 /// <param name="nodeID">节点</param>
 public Conds(CondType ct, int nodeID, Int64 workid, GERpt enData)
 {
     this.NodeID = nodeID;
     this.Retrieve(CondAttr.NodeID, nodeID, CondAttr.CondType, (int)ct, CondAttr.PRI);
     foreach (Cond en in this)
     {
         en.WorkID = workid;
         en.en     = enData;
     }
 }
예제 #5
0
        /// <summary>
        /// 检查节点是否是启用接收人选择器
        /// </summary>
        /// <returns></returns>
        private string CheckAccepterOper()
        {
            int tempToNodeID = 0;
            //获取到当前节点
            Node _HisNode = new Node(this.FK_Node);

            /*如果到达的点为空 */
            Nodes nds = _HisNode.HisToNodes;

            if (nds.Count == 0)
            {
                //当前点是最后的一个节点,不能使用此功能
                return("end");
            }
            else if (nds.Count == 1)
            {
                BP.WF.Node toND = nds[0] as BP.WF.Node;
                tempToNodeID = toND.NodeID;
            }
            else
            {
                foreach (BP.WF.Node mynd in nds)
                {
                    //if (mynd.HisDeliveryWay != DeliveryWay.BySelected)
                    //    continue;

                    GERpt _wk = _HisNode.HisFlow.HisGERpt;
                    _wk.OID = this.WorkID;
                    _wk.Retrieve();
                    _wk.ResetDefaultVal();

                    #region 过滤不能到达的节点.
                    Cond cond = new Cond();
                    int  i    = cond.Retrieve(CondAttr.FK_Node, _HisNode.NodeID, CondAttr.ToNodeID, mynd.NodeID);
                    if (i == 0)
                    {
                        continue; // 没有设置方向条件,就让它跳过去。
                    }
                    cond.WorkID = this.WorkID;
                    cond.en     = _wk;
                    if (cond.IsPassed == false)
                    {
                        continue;
                    }
                    #endregion 过滤不能到达的节点.
                    tempToNodeID = mynd.NodeID;
                }
            }
            //不存在下一个节点,检查是否配置了有用户选择节点
            if (tempToNodeID == 0)
            {
                try
                {
                    //检查必填项
                    BP.WF.WorkNode workeNode = new WorkNode(this.WorkID, this.FK_Node);
                    workeNode.CheckFrmIsNotNull();
                }
                catch (Exception ex)
                {
                    return("error:" + ex.Message);
                }
                //按照用户选择计算
                if (_HisNode.CondModel == CondModel.ByUserSelected)
                {
                    return("byuserselected");
                }
                return("notonode");
            }

            //判断到达的节点是否是按接受人选择
            Node toNode = new Node(tempToNodeID);
            if (toNode.HisDeliveryWay == DeliveryWay.BySelected)
            {
                return("byselected");
            }
            return("nodata");
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            this.Page.RegisterClientScriptBlock("s",
                                                "<link href='/WF/Comm/Style/Table" + BP.Web.WebUser.Style + ".css' rel='stylesheet' type='text/css' />");

            string sql = "SELECT a.* ,b.FK_Flow,b.FK_Node,b.FlowName,b.NodeName,b.IsRead,b.Starter,b.ADT,b.SDT,b.WorkID FROM ND22Rpt"
                         + " a , WF_EmpWorks b WHERE a.OID=B.WorkID AND b.WFState not in (7)"
                         + " AND b.FK_Emp='" + WebUser.No + "'";
            DataTable dt = BP.DA.DBAccess.RunSQLReturnTable(sql);

            int    gIdx    = 0;
            string thStyle = "style='font-size: 12px;border: 1px solid #C2D5E3;text-align: center;height: 25px;line-height: 25px;color: #336699;white-space: nowrap;padding: 0 2px;'";
            string tdStyle = "style='border: 1px solid #D6DDE6;padding: 4px;text-align: left;background-color: #FFFFFF; color: #333333;'";

            this.monthReport.AddTable("style='width:100%;border:1px solid #CCCCCC;padding: inherit;margin: 0;margin-bottom: 0px;border-collapse:collapse;align=center'");
            //添加标题
            this.monthReport.Add("<thead>");
            this.monthReport.AddTR("style='width:100%;border:1px solid #C2D5E3;padding: inherit;margin: 0;margin-bottom: 0px;border-collapse:collapse;align=center'");
            this.monthReport.AddTDTitle(thStyle + " width='5%'", "序号");
            this.monthReport.AddTDTitle(thStyle + " width='10%'", "计划项目类别");
            this.monthReport.AddTDTitle(thStyle + " width='10%'", "工作项目");
            this.monthReport.AddTDTitle(thStyle, "工作内容及要求");
            this.monthReport.AddTDTitle(thStyle + " width='10%'", "完成时间");
            this.monthReport.AddTDTitle(thStyle + " width='10%'", "责任部门");
            this.monthReport.AddTDTitle(thStyle + " width='10%'", "配合部门");
            this.monthReport.AddTDTitle(thStyle + " width='10%'", "检查部门");
            this.monthReport.AddTREnd();
            this.monthReport.Add("</thead>");
            Flow  flow = new Flow("022");
            GERpt rpt  = flow.HisGERpt;

            foreach (DataRow row in dt.Rows)
            {
                rpt.OID = int.Parse(row["WorkID"].ToString());
                rpt.Retrieve();

                if (rpt != null)
                {
                    gIdx++;
                    this.monthReport.AddTR("style='height:80px;text-align:center;border:1px solid #D6DDE6;padding: inherit;margin: 0;margin-bottom: 0px;border-collapse:collapse;'");
                    this.monthReport.AddTD("style='text-align:center;border: 1px solid #D6DDE6;padding: 4px;background-color: #FFFFFF; color: #333333;'", gIdx);
                    this.monthReport.AddTD(tdStyle, rpt.GetValByKey("SF_PlanItemText").ToString());
                    this.monthReport.AddTD(tdStyle, row["GongZuoXiangMu"].ToString());
                    this.monthReport.AddTD(tdStyle, "<p>" + row["GZNRJYQ"].ToString() + "</p>");
                    this.monthReport.AddTD(tdStyle, row["WanChengShiJian"].ToString());
                    this.monthReport.AddTD(tdStyle, rpt.GetValByKey("SF_ZRBMText").ToString());
                    this.monthReport.AddTD(tdStyle, row["PeiHeBuMen"].ToString());
                    this.monthReport.AddTD(tdStyle, rpt.GetValByKey("SF_JCBMText").ToString());
                    this.monthReport.AddTREnd();
                }
            }
            this.monthReport.AddTableEnd();

            string request = Request.QueryString["exporttype"];

            if (!string.IsNullOrEmpty(request))
            {
                if (request == "xls")
                {
                    exportexcel();
                }
                if (request == "doc")
                {
                    exportword();
                }
            }
        }
예제 #7
0
        /// <summary>
        /// 恢复已完成的流程数据到指定的节点,如果节点为0就恢复到最后一个完成的节点上去.
        /// </summary>
        /// <param name="workid">要恢复的workid</param>
        /// <param name="backToNodeID">恢复到的节点编号,如果是0,标示回复到流程最后一个节点上去.</param>
        /// <param name="note"></param>
        /// <returns></returns>
        public string DoRebackFlowData(Int64 workid, int backToNodeID, string note)
        {
            if (note.Length <= 2)
            {
                return("请填写恢复已完成的流程原因.");
            }

            Flow fl = new Flow(this.No);

            GERpt rpt = new GERpt("ND" + int.Parse(this.No) + "Rpt");

            rpt.OID = workid;
            int i = rpt.RetrieveFromDBSources();

            if (i == 0)
            {
                throw new Exception("@错误,流程数据丢失。");
            }
            if (backToNodeID == 0)
            {
                backToNodeID = rpt.FlowEndNode;
            }

            Emp empStarter = new Emp(rpt.FlowStarter);

            // 最后一个节点.
            Node          endN = new Node(backToNodeID);
            GenerWorkFlow gwf  = null;

            try
            {
                #region 创建流程引擎主表数据.
                gwf        = new GenerWorkFlow();
                gwf.WorkID = workid;
                if (gwf.RetrieveFromDBSources() == 1)
                {
                    throw new Exception("@当前工作ID为:" + workid + "的流程没有结束,不能采用此方法恢复。");
                }

                gwf.FK_Flow  = this.No;
                gwf.FlowName = this.Name;
                gwf.WorkID   = workid;
                gwf.PWorkID  = rpt.PWorkID;
                gwf.PFlowNo  = rpt.PFlowNo;
                gwf.FK_Node  = backToNodeID;
                gwf.NodeName = endN.Name;

                gwf.Starter     = rpt.FlowStarter;
                gwf.StarterName = empStarter.Name;
                gwf.FK_FlowSort = fl.FK_FlowSort;
                gwf.Title       = rpt.Title;
                gwf.WFState     = WFState.ReturnSta; /*设置为退回的状态*/
                gwf.FK_Dept     = rpt.FK_Dept;

                Dept dept = new Dept(empStarter.FK_Dept);

                gwf.DeptName = dept.Name;
                gwf.PRI      = 1;

                DateTime dttime = DateTime.Now;
                dttime = dttime.AddDays(3);

                gwf.SDTOfNode = dttime.ToString("yyyy-MM-dd");
                gwf.SDTOfFlow = dttime.ToString("yyyy-MM-dd");
                gwf.Insert(); /*插入流程引擎数据.*/

                #endregion 创建流程引擎主表数据

                int    startNode  = int.Parse(this.No + "01");
                string ndTrack    = "ND" + int.Parse(this.No) + "Track";
                string actionType = (int)ActionType.Forward + "," + (int)ActionType.FlowOver + "," + (int)ActionType.ForwardFL + "," + (int)ActionType.ForwardHL;
                // string actionType = " NDFrom=" + (int)ActionType.Forward + " OR NDFrom=" + (int)ActionType.FlowOver + " OR NDFrom=" + (int)ActionType.ForwardFL + " OR NDFrom=" + (int)ActionType.ForwardHL;
                string sql = "SELECT  * FROM " + ndTrack + " WHERE   ActionType IN (" + actionType + ")  and WorkID=" + workid + " ORDER BY RDT DESC, NDFrom ";
                System.Data.DataTable dt = DBAccess.RunSQLReturnTable(sql);
                if (dt.Rows.Count == 0)
                {
                    throw new Exception("@工作ID为:" + workid + "的数据不存在.");
                }

                string          starter        = "";
                bool            isMeetSpecNode = false;
                GenerWorkerList currWl         = new GenerWorkerList();
                foreach (DataRow dr in dt.Rows)
                {
                    int  ndFrom = int.Parse(dr["NDFrom"].ToString());
                    Node nd     = new Node(ndFrom);

                    string ndFromT = dr["NDFromT"].ToString();

                    string EmpFrom  = dr[TrackAttr.EmpFrom].ToString();
                    string EmpFromT = dr[TrackAttr.EmpFromT].ToString();

                    // 增加上 工作人员的信息.
                    GenerWorkerList gwl = new GenerWorkerList();
                    gwl.WorkID  = workid;
                    gwl.FK_Flow = this.No;

                    gwl.FK_Node     = ndFrom;
                    gwl.FK_NodeText = ndFromT;

                    if (gwl.FK_Node == backToNodeID)
                    {
                        gwl.IsPass = false;
                        currWl     = gwl;
                    }

                    gwl.FK_Emp     = EmpFrom;
                    gwl.FK_EmpText = EmpFromT;
                    if (gwl.IsExits)
                    {
                        continue; /*有可能是反复退回的情况.*/
                    }
                    Emp emp = new Emp(gwl.FK_Emp);
                    gwl.FK_Dept1 = emp.FK_Dept;

                    gwl.RDT         = dr["RDT"].ToString();
                    gwl.SDT         = dr["RDT"].ToString();
                    gwl.DTOfWarning = gwf.SDTOfNode;
                    gwl.WarningDays = nd.WarningDays;
                    gwl.IsEnable    = true;
                    gwl.WhoExeIt    = nd.WhoExeIt;
                    gwl.Insert();
                }

                #region 加入退回信息, 让接受人能够看到退回原因.
                ReturnWork rw = new ReturnWork();
                rw.WorkID         = workid;
                rw.ReturnNode     = backToNodeID;
                rw.ReturnNodeName = endN.Name;
                rw.Returner       = WebUser.No;
                rw.ReturnerName   = WebUser.Name;

                rw.ReturnToNode   = currWl.FK_Node;
                rw.ReturnToEmp    = currWl.FK_Emp;
                rw.Note           = note;
                rw.RDT            = DataType.CurrentDataTime;
                rw.IsBackTracking = false;
                rw.MyPK           = BP.DA.DBAccess.GenerGUID();
                #endregion   加入退回信息, 让接受人能够看到退回原因.

                //更新流程表的状态.
                rpt.FlowEnder   = currWl.FK_Emp;
                rpt.WFState     = WFState.ReturnSta; /*设置为退回的状态*/
                rpt.FlowEndNode = currWl.FK_Node;
                rpt.Update();

                // 向接受人发送一条消息.
                BP.WF.Dev2Interface.Port_SendMail(currWl.FK_Emp, "工作恢复:" + gwf.Title, "工作被:" + WebUser.No + " 恢复." + note, "ReBack" + workid, this.No, int.Parse(this.No + "01"), workid, 0);

                //写入该日志.
                WorkNode wn = new WorkNode(workid, currWl.FK_Node);
                wn.AddToTrack(ActionType.RebackOverFlow, currWl.FK_Emp, currWl.FK_EmpText, currWl.FK_Node, currWl.FK_NodeText, note);

                return("@已经还原成功,现在的流程已经复原到(" + currWl.FK_NodeText + "). @当前工作处理人为(" + currWl.FK_Emp + " , " + currWl.FK_EmpText + ")  @请通知他处理工作.");
            }
            catch (Exception ex)
            {
                gwf.Delete();
                GenerWorkerList wl = new GenerWorkerList();
                wl.Delete(GenerWorkerListAttr.WorkID, workid);

                string sqls = "";
                sqls += "@UPDATE " + fl.PTable + " SET WFState=" + (int)WFState.Complete + " WHERE OID=" + workid;
                DBAccess.RunSQLs(sqls);
                return("<font color=red>会滚期间出现错误</font><hr>" + ex.Message);
            }
        }
예제 #8
0
        /// <summary>
        /// 说明 :此测试针对于演示环境中的 001 流程编写的单元测试代码。
        /// 涉及到了: 创建,发送,撤销,方向条件、退回等功能。
        /// </summary>
        public override void Do()
        {
            string fk_flow = "032";
            string userNo  = "zhanghaicheng";

            Flow fl = new Flow(fk_flow);

            if (fl.DraftRole == DraftRole.None)
            {
                fl.DraftRole = DraftRole.SaveToDraftList;
                fl.Update(); //草稿列表.
            }

            // zhanghaicheng 登录.
            BP.WF.Dev2Interface.Port_Login(userNo);

            //创建空白工作.
            Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No);

            #region 检查创建新工作是否是blank状态.
            GERpt rpt = fl.HisGERpt;
            rpt.OID = workid;
            rpt.RetrieveFromDBSources();
            if (rpt.WFState != WFState.Blank)
            {
                throw new Exception("@创建新工作应该是Blank状态,现在是:" + rpt.WFState);
            }

            GenerWorkFlow gwf = new GenerWorkFlow();
            gwf.WorkID = workid;
            if (gwf.RetrieveFromDBSources() == 0)
            {
                throw new Exception("@创建workid没有写入到流程注册表.");
            }

            if (gwf.WFState != WFState.Blank)
            {
                throw new Exception("@流程注册表内的wfstate 不是空白状态,现在状态是:" + rpt.WFState);
            }
            #endregion


            //执行保存.
            BP.WF.Dev2Interface.Node_SaveWork(fl.No, 3201, workid);

            #region 检查创建新工作是否是blank状态.
            rpt     = fl.HisGERpt;
            rpt.OID = workid;
            rpt.RetrieveFromDBSources();
            if (rpt.WFState != WFState.Draft)
            {
                throw new Exception("@执行保存后应该是Draft状态,现在是:" + rpt.WFState);
            }
            #endregion


            #region 检查草稿是否有?
            bool      isHave = false;
            DataTable dt     = BP.WF.Dev2Interface.DB_GenerDraftDataTable();
            foreach (DataRow dr in dt.Rows)
            {
                if (dr["OID"].ToString() == workid.ToString())
                {
                    isHave = true;
                    break;
                }
            }
            if (isHave == true)
            {
                throw new Exception("@不应该找到草稿。");
            }
            #endregion

            //删除草稿.
            BP.WF.Dev2Interface.Node_DeleteDraft(fl.No, workid);

            //执行创建工作,一个新的workid.
            Int64 workidNew = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No);

            //比较两个workid是否一致.
            if (workidNew == workid)
            {
                throw new Exception("@执行删除草稿失败.");
            }

            //设置成草稿.
            BP.WF.Dev2Interface.Node_SetDraft(fl.No, workid);

            #region 检查保存的草稿数据是否完整。
            rpt     = fl.HisGERpt;
            rpt.OID = workid;
            rpt.RetrieveFromDBSources();
            if (rpt.WFState != WFState.Draft)
            {
                throw new Exception("@此 GERpt 应该是 Draft 状态,现在是:" + rpt.WFState);
            }

            isHave = false;
            dt     = BP.WF.Dev2Interface.DB_GenerDraftDataTable();
            foreach (DataRow dr in dt.Rows)
            {
                if (dr["OID"].ToString() == workid.ToString())
                {
                    isHave = true;
                    break;
                }
            }
            if (isHave == false)
            {
                throw new Exception("@没有从接口里找到草稿。");
            }
            #endregion
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.Request.QueryString["FK_Node"] == null)
            {
                // 如果没有接收到节点ID参数,就绑定当前人员可以执行批量审核的待办工作.
                int num = this.BindNodeList();
                return;
            }

            BP.WF.Node nd  = new BP.WF.Node(this.FK_Node);
            Flow       fl  = nd.HisFlow;
            string     sql = "";

            if (nd.HisRunModel == RunModel.SubThread)
            {
                sql = "SELECT a.*, b.Starter,b.ADT,b.WorkID FROM " + fl.PTable
                      + " a , WF_EmpWorks b WHERE a.OID=B.FID AND b.WFState Not IN (7) AND b.FK_Node=" + nd.NodeID
                      + " AND b.FK_Emp='" + WebUser.No + "'";
            }
            else
            {
                sql = "SELECT a.*, b.Starter,b.ADT,b.WorkID FROM " + fl.PTable
                      + " a , WF_EmpWorks b WHERE a.OID=B.WorkID AND b.WFState Not IN (7) AND b.FK_Node=" + nd.NodeID
                      + " AND b.FK_Emp='" + WebUser.No + "'";
            }


            // string sql = "SELECT Title,RDT,ADT,SDT,FID,WorkID,Starter FROM WF_EmpWorks WHERE FK_Emp='" + WebUser.No + "'";
            DataTable dt = BP.DA.DBAccess.RunSQLReturnTable(sql);

            if (nd.HisBatchRole == BatchRole.None)
            {
                this.Pub1.AddFieldSetRed("错误", "节点(" + nd.Name + ")不能执行批量处理操作.");
                return;
            }

            string inSQL = "SELECT WorkID FROM WF_EmpWorks WHERE FK_Emp='" + WebUser.No + "' AND WFState!=7 AND FK_Node=" + this.FK_Node;
            Works  wks   = nd.HisWorks;

            wks.RetrieveInSQL(inSQL);

            BtnLab btnLab = new BtnLab(this.FK_Node);

            this.Pub1.AddTable("width='100%'");

            //移动按钮位置
            if (nd.HisBatchRole == BatchRole.Group)
            {
                this.Pub1.AddCaptionMsgLong("<a href='Batch.aspx'>返回</a>&nbsp;&nbsp;<input  ID=\"btnGroup\" type=\"button\" value=\"合卷批复\" CssClass=\"Btn\" onclick=\"BatchGroup()\" />");
            }
            else
            {
                this.Pub1.AddCaptionMsgLong(nd.FlowName + " - <a href='Batch.aspx'>返回</a>");
            }

            #region 生成标题.
            this.Pub1.AddTR();
            this.Pub1.AddTDTitle("序号");
            string str1 = "<INPUT id='checkedAll' onclick='SelectAll()'  text='选择' value='选择' type='checkbox' name='checkedAll'>";
            this.Pub1.AddTDTitle("align='left'", str1 + "选择");
            this.Pub1.AddTDTitle("标题");
            this.Pub1.AddTDTitle("发起人");
            this.Pub1.AddTDTitle("接受日期");

            // 显示出来字段. BatchParas 的规则为 @字段中文名=fieldName@字段中文名1=fieldName1
            MapAttrs attrs = new MapAttrs(this.FK_MapData);
            string[] strs  = nd.BatchParas.Split(',');
            foreach (string str in strs)
            {
                if (string.IsNullOrEmpty(str) ||
                    str.Contains("@PFlowNo") == true)
                {
                    continue;
                }

                foreach (MapAttr attr in attrs)
                {
                    if (str != attr.KeyOfEn)
                    {
                        continue;
                    }
                    this.Pub1.AddTDTitle(attr.Name);
                }
            }
            this.Pub1.AddTREnd();
            #endregion 生成标题.

            GERpt rpt = nd.HisFlow.HisGERpt;
            bool  is1 = false;
            int   idx = 0;
            foreach (Work wk in wks)
            {
                idx++;
                if (idx == nd.BatchListCount)
                {
                    break;
                }

                #region 显示必要的列.
                is1 = this.Pub1.AddTR(is1);
                this.Pub1.AddTDIdx(idx);
                CheckBox cb = new CheckBox();
                cb.ID = "CB_" + wk.OID.ToString();
                foreach (DataRow dr in dt.Rows)
                {
                    if (dr["WorkID"].ToString() != wk.OID.ToString())
                    {
                        continue;
                    }
                    cb.Text = "选择";
                    this.Pub1.AddTD(cb);

                    //this.Pub1.AddTD("<a href=\"javascript:WinOpen('MyFlow.aspx?WorkID=" + wk.OID + "&FK_Node=" + this.FK_Node + "&FK_Flow="+nd.FK_Flow+"','s')\" >" + dr["Title"].ToString() + "</a>");
                    this.Pub1.AddTD("<a href=\"javascript:WinOpen('FlowFormTree/Default.aspx?WorkID=" + wk.OID + "&FK_Node=" + this.FK_Node + "&IsSend=0&FK_Flow=" + nd.FK_Flow + "','s')\" >" + dr["Title"].ToString() + "</a>");
                    this.Pub1.AddTD(dr["Starter"].ToString());
                    this.Pub1.AddTD(dr["ADT"].ToString());
                    break;
                }
                #endregion 显示必要的列.

                #region 显示出来自定义的字段数据..
                foreach (string str in strs)
                {
                    if (string.IsNullOrEmpty(str) || str.Contains("@PFlowNo") == true)
                    {
                        continue;
                    }
                    foreach (MapAttr attr in attrs)
                    {
                        if (str != attr.KeyOfEn)
                        {
                            continue;
                        }

                        TB tb = new TB();
                        tb.ID = "TB_" + attr.KeyOfEn + "_" + wk.OID;
                        switch (attr.LGType)
                        {
                        case FieldTypeS.Normal:
                            switch (attr.MyDataType)
                            {
                            case BP.DA.DataType.AppString:
                                if (attr.UIRows == 1)
                                {
                                    tb.Text = wk.GetValStringByKey(attr.KeyOfEn);
                                    tb.Attributes["style"] = "width: " + attr.UIWidth + "px; text-align: left; height: 15px;padding: 0px;margin: 0px;";
                                    if (attr.UIIsEnable)
                                    {
                                        tb.CssClass = "TB";
                                    }
                                    else
                                    {
                                        tb.CssClass = "TBReadonly";
                                    }
                                    this.Pub1.AddTD(tb);
                                }
                                else
                                {
                                    tb.TextMode                = TextBoxMode.MultiLine;
                                    tb.Text                    = wk.GetValStringByKey(attr.KeyOfEn);
                                    tb.Attributes["style"]     = "width: " + attr.UIWidth + "px; text-align: left;padding: 0px;margin: 0px;";
                                    tb.Attributes["maxlength"] = attr.MaxLen.ToString();
                                    tb.Rows                    = attr.UIRows;
                                    if (attr.UIIsEnable)
                                    {
                                        tb.CssClass = "TBDoc";
                                    }
                                    else
                                    {
                                        tb.CssClass = "TBReadonly";
                                    }
                                    this.Pub1.AddTD(tb);
                                }
                                break;

                            case BP.DA.DataType.AppDate:
                                tb.ShowType = TBType.Date;
                                tb.Text     = wk.GetValStrByKey(attr.KeyOfEn);

                                if (attr.UIIsEnable)
                                {
                                    tb.Attributes["onfocus"] = "WdatePicker();";
                                }

                                if (attr.UIIsEnable)
                                {
                                    tb.Attributes["class"] = "TB";
                                }
                                else
                                {
                                    tb.Attributes["class"] = "TBReadonly";
                                }

                                tb.Attributes["style"] = "width: " + attr.UIWidth + "px; text-align: left; height: 19px;";
                                this.Pub1.AddTD(tb);
                                break;

                            case BP.DA.DataType.AppDateTime:
                                tb.ShowType = TBType.DateTime;
                                tb.Text     = wk.GetValStrByKey(attr.KeyOfEn);     // en.GetValStrByKey(attr.KeyOfEn);

                                if (attr.UIIsEnable)
                                {
                                    tb.Attributes["class"] = "TBcalendar";
                                }
                                else
                                {
                                    tb.Attributes["class"] = "TBReadonly";
                                }

                                if (attr.UIIsEnable)
                                {
                                    tb.Attributes["onfocus"] = "WdatePicker({dateFmt:'yyyy-MM-dd HH:mm'});";
                                }
                                tb.Attributes["style"] = "width: " + attr.UIWidth + "px; text-align: left; height: 19px;";
                                this.Pub1.AddTD(tb);
                                break;

                            case BP.DA.DataType.AppBoolean:
                                cb = new CheckBox();
                                //cb.Width = 350;
                                cb.Text    = attr.Name;
                                cb.ID      = "CB_" + attr.KeyOfEn + "_" + wk.OID;
                                cb.Checked = attr.DefValOfBool;
                                cb.Enabled = attr.UIIsEnable;
                                cb.Checked = wk.GetValBooleanByKey(attr.KeyOfEn);

                                if (cb.Enabled == false)
                                {
                                    cb.Enabled = false;
                                }
                                else
                                {
                                    //add by dgq 2013-4-9,添加内容修改后的事件
                                    // cb.Attributes["onmousedown"] = "Change('" + attr.FK_MapData + "')";
                                    cb.Enabled = true;
                                }
                                this.Pub1.AddTD(cb);
                                break;

                            case BP.DA.DataType.AppDouble:
                            case BP.DA.DataType.AppFloat:
                                tb.Attributes["style"] = "width: " + attr.GetValStrByKey("UIWidth") + "px; text-align: right; height: 19px;word-break: keep-all;";
                                tb.Text = attr.DefVal;

                                if (attr.UIIsEnable)
                                {
                                    //增加验证
                                    tb.Attributes.Add("onkeyup", @"Change('" + attr.FK_MapData + "');");
                                    tb.Attributes.Add("onblur", @"value=value.replace(/[^-?\d+\.*\d*$]/g,'');TB_ClickNum(this,0);");
                                    tb.Attributes.Add("onClick", "TB_ClickNum(this)");
                                    tb.Attributes["OnKeyPress"] += @"javascript:return  VirtyNum(this,'float');";
                                    tb.Attributes["class"]       = "TBNum";
                                }
                                else
                                {
                                    tb.Attributes["class"] = "TBReadonly";
                                }

                                this.Pub1.AddTD(tb);
                                break;

                            case BP.DA.DataType.AppInt:
                                tb.Attributes["style"] = "width: " + attr.GetValStrByKey("UIWidth") + "px; text-align: right; height: 19px;word-break: keep-all;";
                                tb.Text = attr.DefVal;

                                if (attr.UIIsEnable)
                                {
                                    //增加验证
                                    tb.Attributes.Add("onkeyup", @"Change('" + attr.FK_MapData + "');");
                                    tb.Attributes.Add("onblur", @"value=value.replace(/[^-?\d]/g,'');TB_ClickNum(this,0);");
                                    tb.Attributes.Add("onClick", "TB_ClickNum(this)");
                                    tb.Attributes["OnKeyPress"] += @"javascript:return  VirtyNum(this,'int');";
                                    tb.Attributes["class"]       = "TBNum";
                                }
                                else
                                {
                                    tb.Attributes["class"] = "TBReadonly";
                                }

                                this.Pub1.AddTD(tb);
                                break;

                            case BP.DA.DataType.AppMoney:
                                if (attr.UIIsEnable)
                                {
                                    //增加验证
                                    tb.Attributes.Add("onkeyup", @"Change('" + attr.FK_MapData + "');");
                                    tb.Attributes.Add("onblur", @"value=value.replace(/[^-?\d+\.*\d*$]/g,'');TB_ClickNum(this,'0.00');");
                                    tb.Attributes.Add("onClick", "TB_ClickNum(this)");
                                    tb.Attributes["OnKeyPress"] += @"javascript:return  VirtyNum(this,'float');";
                                    tb.Attributes["class"]       = "TBNum";
                                }
                                else
                                {
                                    tb.Attributes["class"] = "TBReadonly";
                                }

                                //  tb.ShowType = TBType.Moneny;
                                tb.Text = wk.GetValIntByKey(attr.KeyOfEn).ToString("0.00");

                                tb.Attributes["style"] = "width: " + attr.GetValStrByKey("UIWidth") + "px; text-align: right; height: 19px;";
                                this.Pub1.AddTD(tb);
                                break;

                            case BP.DA.DataType.AppRate:
                                if (attr.UIIsEnable)
                                {
                                    tb.Attributes["class"] = "TBNum";
                                }
                                else
                                {
                                    tb.Attributes["class"] = "TBReadonly";
                                }
                                tb.ShowType            = TBType.Moneny;
                                tb.Text                = wk.GetValMoneyByKey(attr.KeyOfEn).ToString("0.00");
                                tb.Attributes["style"] = "width: " + attr.GetValStrByKey("UIWidth") + "px; text-align: right; height: 19px;";
                                this.Pub1.AddTD(tb);
                                break;

                            default:
                                break;
                            }
                            break;

                        case FieldTypeS.Enum:
                            if (attr.UIContralType == UIContralType.DDL)
                            {
                                DDL ddle = new DDL();
                                ddle.ID = "DDL_" + attr.KeyOfEn + "_" + wk.OID;
                                ddle.BindSysEnum(attr.UIBindKey);
                                ddle.SetSelectItem(wk.GetValIntByKey(attr.KeyOfEn));
                                ddle.Enabled = attr.UIIsEnable;
                                ddle.Attributes["tabindex"] = attr.Idx.ToString();
                                if (attr.UIIsEnable)
                                {
                                    //add by dgq 2013-4-9,添加内容修改后的事件
                                    ddle.Attributes["onchange"] = "Change('" + attr.FK_MapData + "')";
                                }
                                //    ddle.Enabled = false;
                                this.Pub1.AddTD(ddle);
                            }
                            else
                            {
                            }
                            break;

                        case FieldTypeS.FK:
                            DDL ddl1 = new DDL();
                            ddl1.ID = "DDL_" + attr.KeyOfEn + "_" + wk.OID;
                            ddl1.Attributes["tabindex"] = attr.Idx.ToString();
                            if (ddl1.Enabled)
                            {
                                EntitiesNoName ens = attr.HisEntitiesNoName;
                                ens.RetrieveAll();
                                ddl1.BindEntities(ens);
                                ddl1.SetSelectItem(wk.GetValStrByKey(attr.KeyOfEn));
                            }
                            else
                            {
                                ddl1.Attributes["style"] = "width: " + attr.UIWidth + "px;height: 19px;";
                                if (ddl1.Enabled == true)
                                {
                                    ddl1.Enabled = false;
                                }
                                ddl1.Attributes["Width"] = attr.UIWidth.ToString();
                                ddl1.Items.Add(new ListItem(wk.GetValRefTextByKey(attr.KeyOfEn), wk.GetValStrByKey(attr.KeyOfEn)));
                            }
                            ddl1.Enabled = attr.UIIsEnable;
                            this.Pub1.AddTD(ddl1);
                            break;

                        default:
                            break;
                        }
                    }
                }
                #endregion 显示出来自定义的字段数据..

                this.Pub1.AddTREnd();
            }
            this.Pub1.AddTableEndWithHR();

            MapExts mes = new MapExts(this.FK_MapData);

            #region 处理扩展属性.
            if (mes.Count != 0)
            {
                this.Page.RegisterClientScriptBlock("s81",
                                                    "<script language='JavaScript' src='/WF/Scripts/jquery-1.4.1.min.js' ></script>");
                this.Page.RegisterClientScriptBlock("b81",
                                                    "<script language='JavaScript' src='/WF/CCForm/MapExt.js' defer='defer' type='text/javascript' ></script>");
                this.Pub1.Add("<div id='divinfo' style='width: 155px; position: absolute; color: Lime; display: none;cursor: pointer;align:left'></div>");
                this.Page.RegisterClientScriptBlock("dCd",
                                                    "<script language='JavaScript' src='/DataUser/JSLibData/" + this.FK_MapData + ".js' ></script>");

                foreach (Work wk in wks)
                {
                    foreach (MapExt me in mes)
                    {
                        switch (me.ExtType)
                        {
                        case MapExtXmlList.DDLFullCtrl:     // 自动填充.
                            DDL ddlOper = this.Pub1.GetDDLByID("DDL_" + me.AttrOfOper + "_" + wk.OID);
                            if (ddlOper == null)
                            {
                                continue;
                            }
                            ddlOper.Attributes["onchange"] = "DDLFullCtrl(this.value,\'" + ddlOper.ClientID + "\', \'" + me.MyPK + "\')";
                            break;

                        case MapExtXmlList.ActiveDDL:
                            DDL    ddlPerant = this.Pub1.GetDDLByID("DDL_" + me.AttrOfOper + "_" + wk.OID);
                            string val, valC;
                            if (ddlPerant == null || wk.OID < 100)
                            {
                                continue;
                            }

#warning 此处需要优化
                            string ddlC = "ContentPlaceHolder1_Batch1_DDL_" + me.AttrsOfActive + "_" + wk.OID;
                            //  ddlPerant.Attributes["onchange"] = " isChange=true; DDLAnsc(this.value, \'" + ddlC + "\', \'" + me.MyPK + "\')";
                            ddlPerant.Attributes["onchange"] = "DDLAnsc(this.value, \'" + ddlC + "\', \'" + me.MyPK + "\')";

                            DDL ddlChild = this.Pub1.GetDDLByID("DDL_" + me.AttrsOfActive + "_" + wk.OID);
                            val = ddlPerant.SelectedItemStringVal;
                            if (ddlChild.Items.Count == 0)
                            {
                                valC = wk.GetValStrByKey(me.AttrsOfActive);
                            }
                            else
                            {
                                valC = ddlChild.SelectedItemStringVal;
                            }

                            string mysql = me.Doc.Replace("@Key", val);
                            if (mysql.Contains("@"))
                            {
                                mysql = BP.WF.Glo.DealExp(mysql, wk, null);
                            }

                            ddlChild.Bind(DBAccess.RunSQLReturnTable(mysql), "No", "Name");
                            if (ddlChild.SetSelectItem(valC) == false)
                            {
                                ddlChild.Items.Insert(0, new ListItem("请选择" + valC, valC));
                                ddlChild.SelectedIndex = 0;
                            }
                            break;

                        case MapExtXmlList.AutoFullDLL:     //自动填充下拉框的范围.
                            DDL ddlFull = this.Pub1.GetDDLByID("DDL_" + me.AttrOfOper + "_" + wk.OID);
                            if (ddlFull == null)
                            {
                                continue;
                            }

                            string valOld = wk.GetValStrByKey(me.AttrOfOper);

                            string fullSQL = me.Doc.Replace("@WebUser.No", WebUser.No);
                            fullSQL = fullSQL.Replace("@WebUser.Name", WebUser.Name);
                            fullSQL = fullSQL.Replace("@WebUser.FK_Dept", WebUser.FK_Dept);
                            fullSQL = fullSQL.Replace("@WebUser.FK_DeptName", WebUser.FK_DeptName);
                            fullSQL = fullSQL.Replace("@Key", this.Request.QueryString["Key"]);

                            if (fullSQL.Contains("@"))
                            {
                                Attrs attrsFull = wk.EnMap.Attrs;
                                foreach (Attr attr in attrsFull)
                                {
                                    if (fullSQL.Contains("@") == false)
                                    {
                                        break;
                                    }
                                    fullSQL = fullSQL.Replace("@" + attr.Key, wk.GetValStrByKey(attr.Key));
                                }
                            }

                            ddlFull.Items.Clear();
                            ddlFull.Bind(DBAccess.RunSQLReturnTable(fullSQL), "No", "Name");
                            if (ddlFull.SetSelectItem(valOld) == false)
                            {
                                ddlFull.Items.Insert(0, new ListItem("请选择" + valOld, valOld));
                                ddlFull.SelectedIndex = 0;
                            }
                            // ddlFull.Attributes["onchange"] = " isChange=true;";
                            break;

                        case MapExtXmlList.TBFullCtrl:     // 自动填充.
                            TextBox tbAuto = this.Pub1.GetTextBoxByID("TB_" + me.AttrOfOper + "_" + wk.OID);
                            if (tbAuto == null)
                            {
                                continue;
                            }
                            // tbAuto.Attributes["onkeyup"] = " isChange=true; DoAnscToFillDiv(this,this.value,\'" + tbAuto.ClientID + "\', \'" + me.MyPK + "\');";
                            tbAuto.Attributes["onkeyup"]      = " DoAnscToFillDiv(this,this.value,\'" + tbAuto.ClientID + "\', \'" + me.MyPK + "\');";
                            tbAuto.Attributes["AUTOCOMPLETE"] = "OFF";
                            if (me.Tag != "")
                            {
                                /* 处理下拉框的选择范围的问题 */
                                string[] strsTmp = me.Tag.Split('$');
                                foreach (string str in strsTmp)
                                {
                                    string[] myCtl = str.Split(':');
                                    string   ctlID = myCtl[0];
                                    DDL      ddlC1 = this.Pub1.GetDDLByID("DDL_" + ctlID + "_" + wk.OID);
                                    if (ddlC1 == null)
                                    {
                                        //me.Tag = "";
                                        // me.Update();
                                        continue;
                                    }
                                    sql = myCtl[1].Replace("~", "'");
                                    sql = sql.Replace("@WebUser.No", WebUser.No);
                                    sql = sql.Replace("@WebUser.Name", WebUser.Name);
                                    sql = sql.Replace("@WebUser.FK_Dept", WebUser.FK_Dept);
                                    sql = sql.Replace("@Key", tbAuto.Text.Trim());
                                    dt  = DBAccess.RunSQLReturnTable(sql);
                                    string valC1 = ddlC1.SelectedItemStringVal;
                                    ddlC1.Items.Clear();
                                    foreach (DataRow dr in dt.Rows)
                                    {
                                        ddlC1.Items.Add(new ListItem(dr[1].ToString(), dr[0].ToString()));
                                    }
                                    ddlC1.SetSelectItem(valC1);
                                }
                            }
                            break;

                        case MapExtXmlList.InputCheck:
                            TextBox tbCheck = this.Pub1.GetTextBoxByID("TB_" + me.AttrOfOper + "_" + wk.OID);
                            if (tbCheck != null)
                            {
                                tbCheck.Attributes[me.Tag2] += " rowPK=" + wk.OID + "; " + me.Tag1 + "(this);";
                            }
                            break;

                        case MapExtXmlList.PopVal:     //弹出窗.
                            TB tb = this.Pub1.GetTBByID("TB_" + me.AttrOfOper + "_" + wk.OID);
                            //  tb.Attributes["ondblclick"] = " isChange=true; ReturnVal(this,'" + me.Doc + "','sd');";
                            tb.Attributes["ondblclick"] = " ReturnVal(this,'" + me.Doc + "','sd');";
                            break;

                        case MapExtXmlList.Link:     // 超链接.
                            //TB tb = this.Pub1.GetTBByID("TB_" + me.AttrOfOper + "_" + mydtl.OID);
                            //tb.Attributes["ondblclick"] = " isChange=true; ReturnVal(this,'" + me.Doc + "','sd');";
                            break;

                        case MapExtXmlList.RegularExpression:    //正则表达式,对数据控件处理
                            TextBox tbExp = this.Pub1.GetTextBoxByID("TB_" + me.AttrOfOper + "_" + wk.OID);
                            if (tbExp == null || me.Tag == "onsubmit")
                            {
                                continue;
                            }
                            //验证输入的正则格式
                            string regFilter = me.Doc;
                            if (regFilter.LastIndexOf("/g") < 0 && regFilter.LastIndexOf('/') < 0)
                            {
                                regFilter = "'" + regFilter + "'";
                            }
                            //处理事件
                            tbExp.Attributes.Add("" + me.Tag + "", "return txtTest_Onkeyup(this," + regFilter + ",'" + me.Tag1 + "')");    //[me.Tag] += "this.value=this.value.replace(" + regFilter + ",'')";
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
            #endregion 拓展属性

            Button btn = new Button();
            if (nd.HisBatchRole == BatchRole.Ordinary)
            {
                /*如果普通的批处理.*/
                btn.CssClass = "Btn";
                btn.ID       = "Btn_Send";
                if (nd.BatchParas_IsSelfUrl == true)
                {
                    btn.Text = "选择要批量处理的工作";
                }
                else
                {
                    btn.Text = "批量处理:" + btnLab.SendLab;
                }
                btn.Click += new EventHandler(btn_Send_Click);
                btn.Attributes["onclick"] = " return confirm('您确定要执行吗?');";
                this.Pub1.Add(btn);
                if (btnLab.ReturnEnable == false)
                {
                    btn          = new Button();
                    btn.CssClass = "Btn";
                    btn.ID       = "Btn_Return";
                    btn.Text     = "批量处理:" + btnLab.ReturnEnable;
                    btn.Click   += new EventHandler(btnDelete_Return_Click);
                    btn.Attributes["onclick"] = " return confirm('您确定要执行吗?');";
                    this.Pub1.Add(btn);
                }
            }

            if (nd.HisBatchRole == BatchRole.Group)
            {
                /*如果分组审核?*/
                btn          = new Button();
                btn.CssClass = "Btn";
                btn.ID       = "Btn_Group";
                //btn.Text = btnLab.SendLab;
                btn.Text   = "合卷批复";
                btn.Click += new EventHandler(btn_Group_Click);
                btn.Attributes["onclick"] = " return confirm('您确定要执行吗?');";
                this.Pub1.Add(btn);
            }

            if (btnLab.ReturnEnable == false)
            {
                btn          = new Button();
                btn.CssClass = "Btn";
                btn.ID       = "Btn_Return";
                btn.Text     = "批量处理:" + btnLab.ReturnEnable;
                btn.Click   += new EventHandler(btnDelete_Return_Click);
                btn.Attributes["onclick"] = " return confirm('您确定要执行吗?');";
                this.Pub1.Add(btn);
            }

            if (btnLab.DeleteEnable != 0)
            {
                btn          = new Button();
                btn.CssClass = "Btn";
                btn.ID       = "Btn_Del";
                btn.Text     = "批量处理:" + btnLab.DeleteLab;
                btn.Click   += new EventHandler(btnDelete_Click);
                btn.Attributes["onclick"] = " return confirm('您确定要执行吗?');";
                this.Pub1.Add(btn);
            }
        }
        /// <summary>
        /// view work.
        /// </summary>
        public void BindTrack_ViewWork()
        {
            string appPath = BP.WF.Glo.CCFlowAppPath;//this.Request.ApplicationPath;
            Track  tk      = new Track(this.FK_Flow, this.MyPK);
            Node   nd      = new Node(tk.NDFrom);
            Work   wk      = nd.HisWork;

            wk.OID = tk.WorkID;
            if (wk.RetrieveFromDBSources() == 0)
            {
                GERpt rtp = nd.HisFlow.HisGERpt;
                rtp.OID = this.WorkID;
                if (rtp.RetrieveFromDBSources() == 0)
                {
                    AddEasyUiPanelInfo("打开(" + nd.Name + ")错误",
                                       "<h4>当前的节点数据已经被删除!</h4>"
                                       + "<p style='font-weight:bold'>造成此问题出现的原因如下:<br /><br />"
                                       + "1、当前节点数据被非法删除;<br />"
                                       + "2、节点数据是退回人与被退回人中间的节点,这部分节点数据查看不支持。</p>",
                                       "icon-no");
                    return;
                }
                wk.Row = rtp.Row;
            }

            GenerWorkFlow gwf = new GenerWorkFlow();

            gwf.WorkID = wk.OID;
            gwf.RetrieveFromDBSources();
            if (nd.HisFlow.IsMD5 && wk.IsPassCheckMD5() == false)
            {
                AddEasyUiPanelInfo("打开(" + nd.Name + ")错误",
                                   "<h2>当前的节点数据已经被篡改,请报告管理员。</h2>",
                                   "icon-no");
                return;
            }

            this.UCEn1.IsReadonly = true;
            Frms frms = nd.HisFrms;

            if (frms.Count == 0)
            {
                if (nd.HisFormType == NodeFormType.FreeForm)
                {
                    /* 自由表单 */
                    this.UCEn1.Add("<div id=divCCForm >");
                    this.UCEn1.BindCCForm(wk, "ND" + nd.NodeID, true, 0, false); //, false, false, null);
                    if (wk.WorkEndInfo.Length > 2)
                    {
                        this.UCEn1.Add(wk.WorkEndInfo);
                    }
                    this.UCEn1.Add("</div>");
                }

                if (nd.HisFormType == NodeFormType.FixForm)
                {
                    /*傻瓜表单*/
                    this.UCEn1.IsReadonly = true;
                    this.UCEn1.BindColumn4(wk, "ND" + nd.NodeID); //, false, false, null);
                    if (wk.WorkEndInfo.Length > 2)
                    {
                        this.UCEn1.Add(wk.WorkEndInfo);
                    }
                }

                BillTemplates bills = new BillTemplates();
                bills.Retrieve(BillTemplateAttr.NodeID, nd.NodeID);
                if (bills.Count >= 1)
                {
                    string title = "";
                    foreach (BillTemplate item in bills)
                    {
                        title += "<img src='" + appPath + "WF/Img/Btn/Word.gif' border=0/>" + item.Name + "</a>";
                    }

                    string urlr = appPath + "WF/WorkOpt/PrintDoc.aspx?FK_Node=" + nd.NodeID + "&FID=" + tk.FID + "&WorkID=" + tk.WorkID + "&FK_Flow=" + tk.FK_Flow;
                    this.UCEn1.Add("<p><a  href=\"javascript:WinOpen('" + urlr + "','dsdd');\"  />" + title + "</a></p>");
                    //this.UCEn1.Add("<a href='' target=_blank><img src='/WF/Img/Btn/Word.gif' border=0/>" + bt.Name + "</a>");
                }
            }
            else
            {
                /* 涉及到多个表单的情况...*/
                if (nd.HisFormType != NodeFormType.DisableIt)
                {
                    Frm myfrm = new Frm();
                    myfrm.No             = "ND" + nd.NodeID;
                    myfrm.Name           = wk.EnDesc;
                    myfrm.HisFormRunType = (FormRunType)(int)nd.HisFormType;

                    FrmNode fnNode = new FrmNode();
                    fnNode.FK_Frm  = myfrm.No;
                    fnNode.IsEdit  = true;
                    fnNode.IsPrint = false;
                    switch (nd.HisFormType)
                    {
                    case NodeFormType.FixForm:
                        fnNode.HisFrmType = FrmType.Column4Frm;
                        break;

                    case NodeFormType.FreeForm:
                        fnNode.HisFrmType = FrmType.FreeFrm;
                        break;

                    case NodeFormType.SelfForm:
                        fnNode.HisFrmType = FrmType.Url;
                        break;

                    default:
                        throw new Exception("出现了未判断的异常。");
                    }
                    myfrm.HisFrmNode = fnNode;
                    frms.AddEntity(myfrm, 0);
                }

                Int64 fid = this.FID;
                if (this.FID == 0)
                {
                    fid = tk.WorkID;
                }

                if (frms.Count == 1)
                {
                    /* 如果禁用了节点表单,并且只有一个表单的情况。*/
                    Frm     frm = (Frm)frms[0];
                    FrmNode fn  = frm.HisFrmNode;
                    string  src = "";
                    src = fn.FrmUrl + ".aspx?FK_MapData=" + frm.No + "&FID=" + fid + "&IsEdit=0&IsPrint=0&FK_Node=" + nd.NodeID + "&WorkID=" + tk.WorkID;
                    this.UCEn1.Add("\t\n <DIV id='" + frm.No + "' style='width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;' >");
                    this.UCEn1.Add("\t\n <iframe ID='F" + frm.No + "' src='" + src + "' frameborder=0  style='position:absolute;width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;'  leftMargin='0'  topMargin='0'  /></iframe>");
                    this.UCEn1.Add("\t\n </DIV>");
                }
                else
                {
                    #region 载入相关文件.
                    this.Page.RegisterClientScriptBlock("sg",
                                                        "<link href='./Style/Frm/Tab.css' rel='stylesheet' type='text/css' />");

                    this.Page.RegisterClientScriptBlock("s2g4",
                                                        "<script language='JavaScript' src='./Style/Frm/jquery.min.js' ></script>");

                    this.Page.RegisterClientScriptBlock("sdf24j",
                                                        "<script language='JavaScript' src='./Style/Frm/jquery.idTabs.min.js' ></script>");

                    this.Page.RegisterClientScriptBlock("sdsdf24j",
                                                        "<script language='JavaScript' src='./Style/Frm/TabClick.js' ></script>");
                    #endregion 载入相关文件.

                    this.UCEn1.Clear();
                    this.UCEn1.Add("<div  style='clear:both' ></div>");
                    this.UCEn1.Add("\t\n<div  id='usual2' class='usual' >");  //begain.

                    #region 输出标签.
                    this.UCEn1.Add("\t\n <ul  class='abc' style='background:red;border-color: #800000;border-width: 10px;' >");
                    foreach (Frm frm in frms)
                    {
                        FrmNode fn  = frm.HisFrmNode;
                        string  src = "";
                        src = fn.FrmUrl + ".aspx?FK_MapData=" + frm.No + "&FID=" + fid + "&IsEdit=0&IsPrint=0&FK_Node=" + nd.NodeID + "&WorkID=" + tk.WorkID;
                        this.UCEn1.Add("\t\n<li><a href=\"#" + frm.No + "\" onclick=\"TabClick('" + frm.No + "','" + src + "');\" >" + frm.Name + "</a></li>");
                    }
                    this.UCEn1.Add("\t\n </ul>");
                    #endregion 输出标签.

                    #region 输出表单 iframe 内容.
                    foreach (Frm frm in frms)
                    {
                        FrmNode fn = frm.HisFrmNode;
                        this.UCEn1.Add("\t\n <DIV id='" + frm.No + "' style='width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;' >");
                        string src = "loading.htm";
                        this.UCEn1.Add("\t\n <iframe ID='F" + frm.No + "' src='" + src + "' frameborder=0  style='position:absolute;width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;'  leftMargin='0'  topMargin='0'   /></iframe>");
                        this.UCEn1.Add("\t\n </DIV>");
                    }
                    #endregion 输出表单 iframe 内容.

                    this.UCEn1.Add("\t\n</div>"); // end  usual2

                    // 设置选择的默认值.
                    this.UCEn1.Add("\t\n<script type='text/javascript'>");
                    this.UCEn1.Add("\t\n  $(\"#usual2 ul\").idTabs(\"" + frms[0].No + "\");");
                    this.UCEn1.Add("\t\n</script>");
                }
            }
        }
        /// <summary>
        /// 打开工作处理器,仅仅查看,不能修改。
        /// </summary>
        public void BindTrack_ViewWorkForm()
        {
            string appPath = this.Request.ApplicationPath;
            Node   nd      = null;
            Track  tk      = new Track();

            tk.FK_Flow = this.FK_Flow;
            tk.NDFrom  = this.FK_Node;

            tk.WorkID = this.WorkID;
            if (this.MyPK != null)
            {
                tk = new Track(this.FK_Flow, this.MyPK);
                nd = new Node(tk.NDFrom);
            }
            else
            {
                nd = new Node(this.FK_Node);
            }

            Flow  fl     = new Flow(this.FK_Flow);
            Int64 workid = 0;

            if (nd.HisRunModel == RunModel.SubThread)
            {
                workid = tk.FID;
            }
            else
            {
                workid = tk.WorkID;
            }

            Int64 fid = this.FID;

            if (this.FID == 0)
            {
                fid = tk.FID;
            }

            DataTable ndrpt = DBAccess.RunSQLReturnTable("SELECT PFlowNo,PWorkID FROM " + fl.PTable + " WHERE OID=" + workid);

            string urlExt = "&PFlowNo=" + ndrpt.Rows[0]["PFlowNo"] + "&PWorkID=" + ndrpt.Rows[0]["PWorkID"] + "&IsToobar=0&IsHidden=true";

            urlExt += "&From=CCFlow&TruckKey=" + tk.GetValStrByKey("MyPK");

            if (nd.HisFormType == NodeFormType.SDKForm || nd.HisFormType == NodeFormType.SelfForm)
            {
                if (nd.FormUrl.Contains("?"))
                {
                    this.Response.Redirect(nd.FormUrl + "&WorkID=" + tk.WorkID + "&FK_Node=" + nd.NodeID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + urlExt, true);
                }
                else
                {
                    this.Response.Redirect(nd.FormUrl + "?WorkID=" + tk.WorkID + "&FK_Node=" + nd.NodeID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + urlExt, true);
                }

                if (nd.HisFormType == NodeFormType.SDKForm)
                {
                    if (nd.FormUrl.Contains("?"))
                    {
                        this.Response.Redirect(nd.FormUrl + "&WorkID=" + tk.WorkID + "&FK_Node=" + nd.NodeID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + urlExt, true);
                    }
                    else
                    {
                        this.Response.Redirect(nd.FormUrl + "?WorkID=" + tk.WorkID + "&FK_Node=" + nd.NodeID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + urlExt, true);
                    }
                    return;
                }

                this.Response.Redirect(nd.FormUrl + "&WorkID=" + tk.WorkID + "&FK_Node=" + nd.NodeID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + urlExt, true);
                return;
            }

            Work wk = nd.HisWork;

            wk.OID = tk.WorkID;
            if (wk.RetrieveFromDBSources() == 0)
            {
                GERpt rtp = nd.HisFlow.HisGERpt;
                rtp.OID = this.WorkID;
                if (rtp.RetrieveFromDBSources() == 0)
                {
                    this.UCEn1.AddFieldSet("打开(" + nd.Name + ")错误");
                    this.UCEn1.AddH1("当前的节点数据已经被删除!!!<br> 造成此问题出现的原因如下。");
                    this.UCEn1.AddBR("1、当前节点数据被非法删除。");
                    this.UCEn1.AddBR("2、节点数据是退回人与被退回人中间的节点,这部分节点数据查看不支持。");
                    this.UCEn1.AddH1("技术信息:表" + wk.EnMap.PhysicsTable + " WorkID=" + this.WorkID);
                    this.UCEn1.AddFieldSetEnd();
                    return;
                }
                wk.Row = rtp.Row;
            }

            GenerWorkFlow gwf = new GenerWorkFlow();

            gwf.WorkID = wk.OID;

            if (nd.HisFlow.IsMD5 && wk.IsPassCheckMD5() == false)
            {
                this.UCEn1.AddFieldSet("打开(" + nd.Name + ")错误");
                this.UCEn1.AddH1("当前的节点数据已经被篡改,请报告管理员。");
                this.UCEn1.AddFieldSetEnd();
                return;
            }
            this.InitToolbar(false, appPath);
            this.UCEn1.IsReadonly = true;
            Frms frms = nd.HisFrms;

            if (frms.Count == 0)
            {
                if (nd.HisFormType == NodeFormType.FreeForm)
                {
                    MapData map = new MapData(nd.NodeFrmID);
                    /* 自由表单 */
                    Width = map.MaxRight + map.MaxLeft * 2 + 10 + "";
                    if (float.Parse(Width) < 500)
                    {
                        Width = "900";
                    }
                    Height = map.MaxEnd + "";
                    BtnLab btnLab = new BtnLab(FK_Node);

                    BtnWord = btnLab.WebOfficeEnable + "";

                    this.UCEn1.Add("<div id=divCCForm style='width:" + Width + "px;height:" + Height + "px' >");
                    this.UCEn1.BindCCForm(wk, nd.NodeFrmID, true, 0, false); //, false, false, null);
                    this.UCEn1.Add("</div>");
                }

                if (nd.HisFormType == NodeFormType.FixForm)
                {
                    MapData map = new MapData(nd.NodeFrmID);
                    if (map.TableWidth.Contains("px"))
                    {
                        Width = map.TableWidth.Replace("px", "");
                    }
                    else
                    {
                        Width = map.TableWidth + "";
                    }
                    if (map.TableWidth.Equals("100%"))
                    {
                        Width = "900";
                    }

                    this.UCEn1.Add("<div id=divCCForm style='width:" + Width + "px;height:" + map.FrmH + "px;overflow-x:scroll;' >");
                    /*傻瓜表单*/
                    this.UCEn1.IsReadonly = true;
                    this.UCEn1.BindColumn4(wk, nd.NodeFrmID); //, false, false, null);
                    //if (wk.WorkEndInfo.Length > 2)
                    //    this.UCEn1.Add(wk.WorkEndInfo);
                    this.UCEn1.Add("</div>");
                }



                BillTemplates bills = new BillTemplates();
                bills.Retrieve(BillTemplateAttr.NodeID, nd.NodeID);
                if (bills.Count >= 1)
                {
                    string title = "";
                    foreach (BillTemplate item in bills)
                    {
                        title += "<img src='/WF/Img/Btn/Word.gif' border=0/>" + item.Name + "</a>";
                    }

                    string urlr = appPath + "WF/WorkOpt/PrintDoc.aspx?FK_Node=" + nd.NodeID + "&FID=" + fid + "&WorkID=" + tk.WorkID + "&FK_Flow=" + nd.FK_Flow;
                    this.UCEn1.Add("<p><a  href=\"javascript:WinOpen('" + urlr + "','dsdd');\"  />" + title + "</a></p>");
                    //this.UCEn1.Add("<a href='' target=_blank><img src='/WF/Img/Btn/Word.gif' border=0/>" + bt.Name + "</a>");
                }
            }
            else
            {
                /* 涉及到多个表单的情况...*/
                if (nd.HisFormType == NodeFormType.SheetTree)
                {
                    Response.Redirect(appPath + "WF/FlowFormTree/FlowFormTreeView.aspx?WorkID=" + tk.WorkID + "&FK_Flow=" + nd.FK_Flow + "&FID=" + fid + "&FK_Node=" + nd.NodeID + "&CWorkID=" + this.CWorkID);
                }
                else if (nd.HisFormType != NodeFormType.DisableIt)
                {
                    Frm myfrm = new Frm();
                    myfrm.No             = "ND" + nd.NodeID;
                    myfrm.Name           = wk.EnDesc;
                    myfrm.HisFormRunType = (FormRunType)(int)nd.HisFormType;

                    FrmNode fnNode = new FrmNode();
                    fnNode.FK_Frm  = myfrm.No;
                    fnNode.IsEdit  = true;
                    fnNode.IsPrint = false;
                    switch (nd.HisFormType)
                    {
                    case NodeFormType.FixForm:
                        fnNode.HisFrmType = FrmType.Column4Frm;
                        break;

                    case NodeFormType.FreeForm:
                        fnNode.HisFrmType = FrmType.FreeFrm;
                        break;

                    case NodeFormType.SelfForm:
                        fnNode.HisFrmType = FrmType.Url;
                        break;

                    default:
                        throw new Exception("出现了未判断的异常。");
                    }
                    myfrm.HisFrmNode = fnNode;
                    frms.AddEntity(myfrm, 0);
                }
                if (frms.Count == 1)
                {
                    /* 如果禁用了节点表单,并且只有一个表单的情况。*/
                    Frm     frm = (Frm)frms[0];
                    FrmNode fn  = frm.HisFrmNode;
                    string  src = "";
                    src = fn.FrmUrl + ".aspx?FK_MapData=" + frm.No + "&FID=" + fid + "&IsEdit=0&IsPrint=0&FK_Node=" + nd.NodeID + "&WorkID=" + tk.WorkID + "&CWorkID=" + this.CWorkID;
                    this.UCEn1.Add("\t\n <DIV id='" + frm.No + "' style='width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left; background-color:white;margin:0;padding:0;' >");
                    this.UCEn1.Add("\t\n <iframe ID='F" + frm.No + "' src='" + src + "' frameborder=0  style='margin:0;padding:0;width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;'  leftMargin='0'  topMargin='0'  /></iframe>");
                    this.UCEn1.Add("\t\n </DIV>");
                }
                else
                {
                    Frm frmFirst = null;
                    foreach (Frm frm in frms)
                    {
                        if (frmFirst == null)
                        {
                            frmFirst = frm;
                        }

                        if (frmFirst.FrmW < frm.FrmW)
                        {
                            frmFirst = frm;
                        }
                    }

                    #region 载入相关文件.
                    this.Page.RegisterClientScriptBlock("sg",
                                                        "<link href='./Style/Frm/Tab.css' rel='stylesheet' type='text/css' />");

                    this.Page.RegisterClientScriptBlock("s2g4",
                                                        "<script language='JavaScript' src='./Style/Frm/jquery.min.js' ></script>");

                    this.Page.RegisterClientScriptBlock("sdf24j",
                                                        "<script language='JavaScript' src='./Style/Frm/jquery.idTabs.min.js' ></script>");

                    this.Page.RegisterClientScriptBlock("sdsdf24j",
                                                        "<script language='JavaScript' src='./Style/Frm/TabClick.js' ></script>");
                    #endregion 载入相关文件.

                    this.UCEn1.Clear();
                    this.UCEn1.Add("<div  style='clear:both' ></div>");                                                                                             //
                    this.UCEn1.Add("\t\n<div  id='usual2' class='usual' style='width:" + frmFirst.FrmW + "px;height:auto;margin:0 auto;background-color:white;'>"); //begain.

                    #region 输出标签.
                    this.UCEn1.Add("\t\n <ul  class='abc' style='background:red;border-color: #800000;border-width: 10px;' >");
                    foreach (Frm frm in frms)
                    {
                        FrmNode fn  = frm.HisFrmNode;
                        string  src = "";
                        src = fn.FrmUrl + ".aspx?FK_MapData=" + frm.No + "&FID=" + fid + "&IsEdit=0&IsPrint=0&FK_Node=" + nd.NodeID + "&WorkID=" + tk.WorkID + "&CWorkID=" + this.CWorkID + "&FK_Flow=" + this.FK_Flow;//edited by liuxc,2015-6-17
                        this.UCEn1.Add("\t\n<li><a href=\"#" + frm.No + "\" onclick=\"TabClick('" + frm.No + "','" + src + "');\" >" + frm.Name + "</a></li>");
                    }
                    this.UCEn1.Add("\t\n </ul>");
                    #endregion 输出标签.


                    #region 输出表单 iframe 内容.
                    foreach (Frm frm in frms)
                    {
                        FrmNode fn = frm.HisFrmNode;
                        this.UCEn1.Add("\t\n <DIV id='" + frm.No + "' style='width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;margin:0px;padding:0px;' >");
                        string src = "loading.htm";
                        this.UCEn1.Add("\t\n <iframe ID='F" + frm.No + "' src='" + src + "' frameborder=0  style='margin:0px;padding:0px;width:" + frm.FrmW + "px; height:" + frm.FrmH + "px;text-align: left;'  leftMargin='0'  topMargin='0'   /></iframe>");
                        this.UCEn1.Add("\t\n </DIV>");
                    }
                    #endregion 输出表单 iframe 内容.

                    this.UCEn1.Add("\t\n</div>"); // end  usual2

                    // 设置选择的默认值.
                    this.UCEn1.Add("\t\n<script type='text/javascript'>");
                    this.UCEn1.Add("\t\n  $(\"#usual2 ul\").idTabs(\"" + frms[0].No + "\");");
                    this.UCEn1.Add("\t\n</script>");
                }
            }
        }
예제 #12
0
        /// <summary>
        /// 说明 :此测试针对于演示环境中的 001 流程编写的单元测试代码。
        /// 涉及到了: 创建,发送,撤销,方向条件、退回等功能。
        /// </summary>
        public override void Do()
        {
            if (Glo.IsEnableDraft == false)
            {
                throw new Exception("@此测试需要在Web.config 的 IsEnableDraft = 1 的状态下才能测试它。");
            }

            string fk_flow = "032";
            string userNo  = "zhanghaicheng";

            Flow fl = new Flow(fk_flow);

            // zhoutianjiao 登录.
            BP.WF.Dev2Interface.Port_Login(userNo);

            //创建空白工作.
            Int64 workid = BP.WF.Dev2Interface.Node_CreateBlankWork(fl.No, null, null, WebUser.No, null, 0, null);

            //执行保存.
            BP.WF.Dev2Interface.Node_SaveWork(fl.No, 3201, workid);

            #region 检查保存的草稿数据是否完整。
            GERpt rpt = fl.HisFlowData;
            rpt.OID = workid;
            rpt.RetrieveFromDBSources();
            if (rpt.WFState != WFState.Blank)
            {
                throw new Exception("@保存错误,此 GERpt 应该是 Blank 状态,现在是:" + rpt.WFState);
            }

            bool      isHave = false;
            DataTable dt     = BP.WF.Dev2Interface.DB_GenerDraftDataTable(fl.No);
            foreach (DataRow dr in dt.Rows)
            {
                if (dr["OID"].ToString() == workid.ToString())
                {
                    isHave = true;
                    break;
                }
            }
            if (isHave == true)
            {
                throw new Exception("@不应该找到草稿.。");
            }
            #endregion

            //设置成草稿.
            BP.WF.Dev2Interface.Node_SetDraft(fl.No, workid);

            #region 检查保存的草稿数据是否完整。
            rpt     = fl.HisFlowData;
            rpt.OID = workid;
            rpt.RetrieveFromDBSources();
            if (rpt.WFState != WFState.Draft && Glo.IsEnableDraft)
            {
                throw new Exception("@,此 GERpt 应该是 Draft 状态,现在是:" + rpt.WFState);
            }

            isHave = false;
            dt     = BP.WF.Dev2Interface.DB_GenerDraftDataTable(fl.No);
            foreach (DataRow dr in dt.Rows)
            {
                if (dr["OID"].ToString() == workid.ToString())
                {
                    isHave = true;
                    break;
                }
            }
            if (isHave == false)
            {
                throw new Exception("@没有从接口里找到草稿。");
            }
            #endregion
        }
예제 #13
0
        private void LoadMenu(bool isMenu)
        {
            BtnLab btnLab      = new BtnLab(this.FK_Node);
            bool   isCompleate = false;

            BP.WF.Node node = new BP.WF.Node(FK_Node);
            try
            {
                WorkFlow workFlow = new WorkFlow(node.FK_Flow, WorkID);
                isCompleate = workFlow.IsComplete;
            }
            catch (Exception)
            {
                try
                {
                    Flow  fl  = new Flow(node.FK_Flow);
                    GERpt rpt = fl.HisGERpt;
                    rpt.OID = WorkID;
                    rpt.Retrieve();

                    if (rpt != null)
                    {
                        if (rpt.WFState == WFState.Complete)
                        {
                            isCompleate = true;
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            }



            if (isMenu && !isCompleate)
            {
                if (btnLab.OfficeMarksEnable)
                {
                    divMenu.InnerHtml =
                        "查看留痕:<select id='marks' onchange='ShowUserName()'  style='width: 100px'><option value='显示留痕'>显示留痕</option><option value='隐藏留痕'>隐藏留痕</option><select>";
                }
                if (btnLab.OfficeOpenEnable)
                {
                    AddBtn("openFile", btnLab.OfficeOpenLab, "OpenFile");
                }
                if (btnLab.OfficeOpenTemplateEnable)
                {
                    AddBtn("openTempLate", btnLab.OfficeOpenTemplateLab, "OpenTempLate");
                }
                if (btnLab.OfficeSaveEnable)
                {
                    AddBtn("saveFile", btnLab.OfficeSaveLab, "saveOffice");
                }
                if (btnLab.OfficeAcceptEnable)
                {
                    AddBtn("accept", btnLab.OfficeAcceptLab, "acceptOffice");
                }
                if (btnLab.OfficeRefuseEnable)
                {
                    AddBtn("refuse", btnLab.OfficeRefuseLab, "refuseOffice");
                }
                if (btnLab.OfficeOverEnable)
                {
                    AddBtn("over", btnLab.OfficeOverLab, "overOffice");
                }

                if (btnLab.OfficeSealEnable)
                {
                    AddBtn("seal", btnLab.OfficeSealLab, "sealOffice");
                }

                if (btnLab.OfficeInsertFlowEnable)
                {
                    AddBtn("flow", btnLab.OfficeInsertFlowLab, "InsertFlow");
                }

                if (btnLab.OfficeDownEnable)
                {
                    AddBtn("download", btnLab.OfficeDownLab, "DownLoad");
                }

                if (btnLab.OfficeIsMarks)
                {
                    IsMarks = true;
                }
                if (btnLab.OfficeNodeInfo)
                {
                    IsCheckInfo = true;
                }
            }
            // OfficeTemplate = btnLab.OfficeTemplate;
            IsSavePDF = btnLab.OfficeReSavePDF;

            if (!string.IsNullOrEmpty(this.MarkName))
            {
                AddBtn("ViewMarks", "文档痕迹", "ViewMark");
            }

            if (isMenu)
            {
                LoadAttachment();
            }
        }
예제 #14
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //WebUser.SignInOfGener(new BP.Port.Emp("zhoupeng"));

            string type = Request["action"];

            if (string.IsNullOrEmpty(type))
            {
                InitOffice();
            }
            else
            {
                if (type.Equals("LoadFile"))
                {
                    LoadFile();
                    return;
                }

                if (type.Equals("SaveFile"))
                {
                    SaveFile();
                    return;
                }

                InitOffice();
            }

            var root     = SystemConfig.PathOfDataUser + "\\FrmOfficeTemplate\\" + this.FK_Flow + "\\";
            var rootInfo = new DirectoryInfo(root);

            if (!rootInfo.Exists)
            {
                rootInfo.Create();
            }

            var      docFileName = "Rpt" + this.FK_Flow + "_" + this.WorkID + "_" + this.FK_Node;
            var      docDirName  = this.FK_Flow + "\\" + this.WorkID + "\\";
            var      files       = rootInfo.GetFiles("Rpt" + this.FK_Flow + "_" + this.FK_Node + ".*");
            FileInfo tmpFile     = null;
            FileInfo wordFile    = null;

            var pathDir = SystemConfig.PathOfDataUser + @"\FrmOfficeFiles\" + docDirName;

            if (!Directory.Exists(pathDir))
            {
                Directory.CreateDirectory(pathDir);
            }

            // 判断是否有这个数据文件.
            if (files.Length == 0)
            {
                Response.Write("<h3>Word表单模板文件不存在,请确认已经上传Word表单模板</h3>");
                Response.End();
                return;
            }

            tmpFile  = files[0];
            wordFile = new FileInfo(pathDir + "\\" + docFileName + tmpFile.Extension);

            if (wordFile.Exists == false)
            {
                IsFirst = true;
                File.Copy(tmpFile.FullName, wordFile.FullName);
            }
            else
            {
                IsFirst = false;
            }

            //装载数据.
            var rptName = "ND" + int.Parse(this.FK_Flow) + "Rpt";
            var rpt     = new GERpt(rptName);

            rpt.OID = int.Parse(WorkID);
            if (rpt.RetrieveFromDBSources() == 0)
            {
                Response.Write("<h3>" + rptName + "中不存在WorkID=" + WorkID + "的数据</h3>");
                return;
            }

            var attrs = new MapAttrs(rptName);

            this.LoadFrmData(attrs, rpt);

            //替换掉 word 里面的数据.
            fileName.Text = string.Format(@"\{0}{1}{2}", docDirName, docFileName, wordFile.Extension);
            fileType.Text = wordFile.Extension.TrimStart('.');
        }
예제 #15
0
        private void InitOffice(bool isMenu)
        {
            bool isCompleate = false;

            BP.WF.Node node = new BP.WF.Node();
            node.NodeID = int.Parse(this.FK_Node);
            node.RetrieveFromDBSources();
            try
            {
                WorkFlow workFlow = new WorkFlow(node.FK_Flow, Int64.Parse(PKVal));
                isCompleate = workFlow.IsComplete;
            }
            catch (Exception)
            {
                try
                {
                    Flow  fl  = new Flow(node.FK_Flow);
                    GERpt rpt = fl.HisGERpt;
                    rpt.OID = Int64.Parse(PKVal);
                    rpt.Retrieve();

                    if (rpt != null)
                    {
                        if (rpt.WFState == WFState.Complete)
                        {
                            isCompleate = true;
                        }
                    }
                }
                catch
                {
                }
            }
            if (!isCompleate)
            {
                try
                {
                    isCompleate = !BP.WF.Dev2Interface.Flow_IsCanDoCurrentWork(node.FK_Flow, node.NodeID, Int64.Parse(PKVal), WebUser.No);
                    //WorkFlow workFlow = new WorkFlow(node.FK_Flow, Int64.Parse(PKVal));
                    //isCompleate = !workFlow.IsCanDoCurrentWork(WebUser.No);
                }
                catch
                {
                }
            }

            FrmAttachment attachment = new FrmAttachment();
            int           result     = 0;

            //表单编号与节点不为空
            if (this.FK_MapData != null && this.FK_Node != null)
            {
                BP.En.QueryObject objInfo = new BP.En.QueryObject(attachment);
                objInfo.AddWhere(FrmAttachmentAttr.FK_MapData, this.FK_MapData);
                objInfo.addAnd();
                objInfo.AddWhere(FrmAttachmentAttr.FK_Node, this.FK_Node);
                objInfo.addAnd();
                objInfo.AddWhere(FrmAttachmentAttr.NoOfObj, this.NoOfObj);
                result = objInfo.DoQuery();
                //result = attachment.Retrieve(FrmAttachmentAttr.FK_MapData, this.FK_MapData,
                //                            FrmAttachmentAttr.FK_Node, this.FK_Node, FrmAttachmentAttr.NoOfObj, this.DelPKVal);
            }
            if (result == 0) /*如果没有定义,就获取默认的.*/
            {
                attachment.MyPK = this.FK_FrmAttachment;
                attachment.Retrieve();
            }
            if (!isCompleate)
            {
                if (attachment.IsWoEnableReadonly)
                {
                    ReadOnly = true;
                }
                if (attachment.IsWoEnableCheck)
                {
                    IsCheck = true;
                }
                IsMarks = attachment.IsWoEnableMarks;
            }
            else
            {
                if (attachment.IsWoEnableReadonly)
                {
                    ReadOnly = true;
                }
            }
            if (isMenu && !isCompleate)
            {
                #region 初始化按钮
                if (attachment.IsWoEnableViewKeepMark)
                {
                    divMenu.InnerHtml = "<select id='marks' onchange='ShowUserName()'  style='width: 100px'><option value='1'>显示留痕</option><option value='2'>隐藏留痕</option><select>";
                }

                if (attachment.IsWoEnableTemplete)
                {
                    AddBtn("openTempLate", "打开模板", "OpenTempLate");
                }
                if (attachment.IsWoEnableSave)
                {
                    AddBtn("saveFile", "保存", "saveOffice");
                }
                if (attachment.IsWoEnableRevise)
                {
                    AddBtn("accept", "接受修订", "acceptOffice");
                    AddBtn("refuse", "拒绝修订", "refuseOffice");
                }

                if (attachment.IsWoEnableOver)
                {
                    AddBtn("over", "套红文件", "overOffice");
                }


                if (attachment.IsWoEnableSeal)
                {
                    AddBtn("seal", "签章", "sealOffice");
                }
                if (attachment.IsWoEnableInsertFlow)
                {
                    AddBtn("flow", "插入流程图", "InsertFlow");
                }
                if (attachment.IsWoEnableInsertFlow)
                {
                    AddBtn("fegnxian", "插入风险点", "InsertFengXian");
                }

                #endregion
            }

            #region   初始化文件

            FrmAttachmentDB downDB = new FrmAttachmentDB();

            downDB.MyPK = this.DelPKVal;
            downDB.Retrieve();
            fileName.Text = downDB.FileName;
            fileType.Text = downDB.FileExts;
            RealFileName  = downDB.FileName;
            FileFullName  = downDB.FileFullName;
            FileSavePath  = attachment.SaveTo;

            #endregion
        }
예제 #16
0
        public string ImpData_Done()
        {
            HttpFileCollection files = context.Request.Files;

            if (files.Count == 0)
            {
                return("err@请选择要导入的数据信息。");
            }

            string errInfo = "";

            string ext      = ".xls";
            string fileName = System.IO.Path.GetFileName(files[0].FileName);

            if (fileName.Contains(".xlsx"))
            {
                ext = ".xlsx";
            }


            //设置文件名
            string fileNewName = DateTime.Now.ToString("yyyyMMddHHmmssff") + ext;

            //文件存放路径
            string filePath = BP.Sys.SystemConfig.PathOfTemp + "\\" + fileNewName;

            files[0].SaveAs(filePath);

            //从excel里面获得数据表.
            DataTable dt = BP.DA.DBLoad.ReadExcelFileToDataTable(filePath);

            //删除临时文件
            System.IO.File.Delete(filePath);

            if (dt.Rows.Count == 0)
            {
                return("err@无导入的数据");
            }

            //获得entity.
            FrmBill   bill = new FrmBill(this.FrmID);
            GEEntitys rpts = new GEEntitys(this.FrmID);
            GERpt     en   = new GERpt(this.FrmID);


            string noColName   = ""; //实体列的编号名称.
            string nameColName = ""; //实体列的名字名称.

            BP.En.Map map  = en.EnMap;
            Attr      attr = map.GetAttrByKey("BillNo");

            noColName = attr.Desc; //
            String codeStruct = bill.EnMap.CodeStruct;

            attr        = map.GetAttrByKey("Title");
            nameColName = attr.Desc; //

            //定义属性.
            Attrs attrs = map.Attrs;

            int impWay = this.GetRequestValInt("ImpWay");

            #region 清空方式导入.
            //清空方式导入.
            int    count       = 0; //导入的行数
            int    changeCount = 0; //更新的行数
            String successInfo = "";
            if (impWay == 0)
            {
                rpts.ClearTable();
                foreach (DataRow dr in dt.Rows)
                {
                    string no   = dr[noColName].ToString();
                    string name = dr[nameColName].ToString();

                    //判断是否是自增序列,序列的格式
                    if (!DataType.IsNullOrEmpty(codeStruct))
                    {
                        no = no.PadLeft(System.Int32.Parse(codeStruct), '0');
                    }

                    GERpt myen = new BP.WF.Data.GERpt(this.FrmID);

                    myen.SetValByKey("BillNo", no);

                    if (myen.Retrieve("BillNo", no) == 1)
                    {
                        errInfo += "err@编号[" + no + "][" + name + "]重复.";
                        continue;
                    }


                    //给实体赋值
                    errInfo += SetEntityAttrVal(no, dr, attrs, myen, dt, 0);
                    count++;
                    successInfo += "&nbsp;&nbsp;<span>" + noColName + "为" + no + "," + nameColName + "为" + name + "的导入成功</span><br/>";
                }
            }

            #endregion 清空方式导入.

            #region 更新方式导入
            if (impWay == 1 || impWay == 2)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    string no   = dr[noColName].ToString();
                    string name = dr[nameColName].ToString();
                    //判断是否是自增序列,序列的格式
                    if (!DataType.IsNullOrEmpty(codeStruct))
                    {
                        no = no.PadLeft(System.Int32.Parse(codeStruct), '0');
                    }
                    GERpt myen = rpts.GetNewEntity as GERpt;
                    myen.SetValByKey("BillNo", no);
                    if (myen.Retrieve("BillNo", no) == 1)
                    {
                        //给实体赋值
                        errInfo += SetEntityAttrVal(no, dr, attrs, myen, dt, 1);
                        changeCount++;
                        successInfo += "&nbsp;&nbsp;<span>" + noColName + "为" + no + "," + nameColName + "为" + name + "的更新成功</span><br/>";
                        continue;
                    }


                    //给实体赋值
                    errInfo += SetEntityAttrVal(no, dr, attrs, myen, dt, 0);
                    count++;
                    successInfo += "&nbsp;&nbsp;<span>" + noColName + "为" + no + "," + nameColName + "为" + name + "的导入成功</span><br/>";
                }
            }
            #endregion

            return("errInfo=" + errInfo + "@Split" + "count=" + count + "@Split" + "successInfo=" + successInfo + "@Split" + "changeCount=" + changeCount);
        }
예제 #17
0
        private string SetEntityAttrVal(string no, DataRow dr, Attrs attrs, GERpt en, DataTable dt, int saveType)
        {
            if (saveType == 0)
            {
                string OID = MyBill_CreateBlankDictID();
                en.OID = long.Parse(OID);
                en.RetrieveFromDBSources();
            }

            string errInfo = "";

            //按照属性赋值.
            foreach (Attr item in attrs)
            {
                if (item.Key == "BillNo")
                {
                    en.SetValByKey(item.Key, no);
                    continue;
                }
                if (item.Key == "Title")
                {
                    en.SetValByKey(item.Key, dr[item.Desc].ToString());
                    continue;
                }


                if (dt.Columns.Contains(item.Desc) == false)
                {
                    continue;
                }

                //枚举处理.
                if (item.MyFieldType == FieldType.Enum)
                {
                    string val = dr[item.Desc].ToString();

                    SysEnum se = new SysEnum();
                    int     i  = se.Retrieve(SysEnumAttr.EnumKey, item.UIBindKey, SysEnumAttr.Lab, val);

                    if (i == 0)
                    {
                        errInfo += "err@枚举[" + item.Key + "][" + item.Desc + "],值[" + val + "]不存在.";
                        continue;
                    }

                    en.SetValByKey(item.Key, se.IntKey);
                    continue;
                }

                //外键处理.
                if (item.MyFieldType == FieldType.FK)
                {
                    string val    = dr[item.Desc].ToString();
                    Entity attrEn = item.HisFKEn;
                    int    i      = attrEn.Retrieve("Name", val);
                    if (i == 0)
                    {
                        errInfo += "err@外键[" + item.Key + "][" + item.Desc + "],值[" + val + "]不存在.";
                        continue;
                    }

                    if (i != 1)
                    {
                        errInfo += "err@外键[" + item.Key + "][" + item.Desc + "],值[" + val + "]重复..";
                        continue;
                    }

                    //把编号值给他.
                    en.SetValByKey(item.Key, attrEn.GetValByKey("No"));
                    continue;
                }

                //boolen类型的处理..
                if (item.MyDataType == DataType.AppBoolean)
                {
                    string val = dr[item.Desc].ToString();
                    if (val == "是" || val == "有")
                    {
                        en.SetValByKey(item.Key, 1);
                    }
                    else
                    {
                        en.SetValByKey(item.Key, 0);
                    }
                    continue;
                }

                string myval = dr[item.Desc].ToString();
                en.SetValByKey(item.Key, myval);
            }

            try
            {
                en.Update();
            }
            catch (Exception ex)
            {
                return("err@" + ex.Message);
            }

            return(errInfo);
        }