using BP.DA; using BP.En; using BP.Sys; namespace BP.WF.Template.Frm { /// /// 自由表单属性 attr /// public class MapFrmNodeAttr : MapDataAttr { /// /// 保存标签 /// public const string BtnSaveLab = "BtnSaveLab"; /// /// 保存是否启用 /// public const string BtnSaveEnable = "BtnSaveEnable"; /// /// 删除标签 /// public const string BtnDelLab = "BtnDelLab"; /// /// 删除是否启用 /// public const string BtnDelEnable = "BtnDelEnable"; /// /// 打印标签 /// public const string BtnPrintLab = "BtnPrintLab"; /// /// 打印是否启用 /// public const string BtnPrintEnable = "BtnPrintEnable"; } /// /// 自由表单属性 /// public class MapFrmNode : EntityNoName { #region 文件模版属性. #endregion 文件模版属性. #region 属性 /// /// 表单事件实体 /// public string FromEventEntity { get { return this.GetValStrByKey(MapDataAttr.FormEventEntity); } set { this.SetValByKey(MapDataAttr.FormEventEntity,value); } } /// /// 是否是节点表单? /// public bool IsNodeFrm { get { if (this.No.Contains("ND") == false) return false; if (this.No.Contains("Rpt") == true) return false; if (this.No.Substring(0, 2) == "ND") return true; return false; } } /// /// 节点ID. /// public int NodeID { get { return int.Parse(this.No.Replace("ND", "")); } } /// /// 表格显示的列 /// public int TableCol { get { return 4; int i = this.GetValIntByKey(MapFrmNodeAttr.TableCol); if (i == 0 || i == 1) return 4; return i; } set { this.SetValByKey(MapFrmNodeAttr.TableCol, value); } } #endregion #region 权限控制. public override UAC HisUAC { get { UAC uac = new UAC(); if (BP.Web.WebUser.No.Equals("admin")==true) { uac.IsDelete = false; uac.IsUpdate = true; return uac; } uac.Readonly(); return uac; } } #endregion 权限控制. #region 构造方法 /// /// 自由表单属性 /// public MapFrmNode() { } /// /// 自由表单属性 /// /// 表单ID public MapFrmNode(string no) : base(no) { } /// /// EnMap /// public override Map EnMap { get { if (this._enMap != null) return this._enMap; Map map = new Map("Sys_MapData", "自由表单属性"); #region 基本属性. map.AddTBStringPK(MapFrmNodeAttr.No, null, "表单编号", true, true, 1, 190, 20); map.AddTBString(MapFrmNodeAttr.PTable, null, "存储表", true, false, 0, 100, 20); map.AddTBString(MapFrmNodeAttr.Name, null, "表单名称", true, false, 0, 200, 20,true); map.AddTBString(MapDataAttr.FormEventEntity, null, "事件实体", true, true, 0, 100, 20, true); //数据源. map.AddDDLEntities(MapFrmNodeAttr.DBSrc, "local", "数据源", new BP.Sys.SFDBSrcs(), true); //宽度高度. map.AddTBInt(MapFrmNodeAttr.FrmW, 900, "宽度", true, false); //表单的运行类型. map.AddDDLSysEnum(MapFrmNodeAttr.FrmType, (int)BP.Sys.FrmType.FoolForm, "表单类型", true, false, MapFrmNodeAttr.FrmType); #endregion 基本属性. #region 设计者信息. map.AddTBString(MapFrmNodeAttr.Designer, null, "设计者", true, false, 0, 500, 20); map.AddTBString(MapFrmNodeAttr.DesignerContact, null, "联系方式", true, false, 0, 500, 20); map.AddTBString(MapFrmNodeAttr.DesignerUnit, null, "单位", true, false, 0, 500, 20, false); map.AddTBString(MapFrmNodeAttr.GUID, null, "GUID", true, true, 0, 128, 20, false); map.AddTBString(MapFrmNodeAttr.Ver, null, "版本号", true, true, 0, 30, 20); map.AddTBStringDoc(MapFrmNodeAttr.Note, null, "备注", true, false, true); //增加参数字段. map.AddTBAtParas(4000); map.AddTBInt(MapFrmNodeAttr.Idx, 100, "顺序号", false, false); #endregion 设计者信息. map.AddMyFile("表单模版"); //查询条件. map.AddSearchAttr(MapFrmNodeAttr.DBSrc); #region 方法 - 基本功能. RefMethod rm = new RefMethod(); rm = new RefMethod(); rm.Title = "启动傻瓜表单设计器"; rm.ClassMethodName = this.ToString() + ".DoDesignerFool"; rm.Icon = "../../WF/Img/FileType/xlsx.gif"; rm.Visable = true; rm.Target = "_blank"; rm.RefMethodType = RefMethodType.LinkeWinOpen; map.AddRefMethod(rm); //rm = new RefMethod(); //rm.Title = "字段维护"; //rm.ClassMethodName = this.ToString() + ".DoEditFiledsList"; //rm.Icon = "../../WF/Admin/CCBPMDesigner/Img/field.png"; //rm.Visable = true; //rm.Target = "_blank"; //rm.RefMethodType = RefMethodType.RightFrameOpen; //map.AddRefMethod(rm); //rm = new RefMethod(); //rm.Title = "批量修改字段"; // "设计表单"; //rm.ClassMethodName = this.ToString() + ".DoBatchEditAttr"; //rm.Icon = "../../WF/Admin/CCBPMDesigner/Img/field.png"; //rm.Visable = true; //rm.RefMethodType = RefMethodType.RightFrameOpen; //rm.Target = "_blank"; //map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "装载填充"; // "设计表单"; rm.ClassMethodName = this.ToString() + ".DoPageLoadFull"; rm.Icon = "../../WF/Img/FullData.png"; rm.Visable = true; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Target = "_blank"; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "表单事件"; // "设计表单"; rm.ClassMethodName = this.ToString() + ".DoEvent"; rm.Icon = "../../WF/Img/Event.png"; rm.Visable = true; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Target = "_blank"; map.AddRefMethod(rm); // rm = new RefMethod(); // rm.Title = "批量设置验证规则"; // rm.Icon = "../../WF/Img/RegularExpression.png"; // rm.ClassMethodName = this.ToString() + ".DoRegularExpressionBatch"; // rm.RefMethodType = RefMethodType.RightFrameOpen; //// map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "JS编程"; // "设计表单"; rm.ClassMethodName = this.ToString() + ".DoInitScript"; rm.Icon = "../../WF/Img/Script.png"; rm.Visable = true; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Target = "_blank"; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "表单body属性"; // "设计表单"; rm.ClassMethodName = this.ToString() + ".DoBodyAttr"; rm.Icon = "../../WF/Img/Script.png"; rm.Visable = true; rm.RefMethodType = RefMethodType.RightFrameOpen; rm.Target = "_blank"; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "导出XML表单模版"; // "设计表单"; rm.ClassMethodName = this.ToString() + ".DoExp"; rm.Icon = "../../WF/Img/Export.png"; rm.Visable = true; rm.RefAttrLinkLabel = "导出到xml"; rm.RefMethodType = RefMethodType.RightFrameOpen; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "Tab顺序键"; // "设计表单"; rm.ClassMethodName = this.ToString() + ".DoTabIdx"; rm.Visable = true; rm.RefMethodType = RefMethodType.RightFrameOpen; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "模板打印"; rm.ClassMethodName = this.ToString() + ".DoBill"; rm.Icon = "../../WF/Img/FileType/doc.gif"; rm.RefMethodType = RefMethodType.RightFrameOpen; map.AddRefMethod(rm); //rm = new RefMethod(); //rm.Title = "节点表单组件"; // "设计表单"; //rm.ClassMethodName = this.ToString() + ".DoNodeFrmCompent"; //rm.Visable = true; //rm.RefAttrLinkLabel = "节点表单组件"; //rm.RefMethodType = RefMethodType.RightFrameOpen; //rm.Target = "_blank"; //rm.Icon = ../../Img/Components.png"; //map.AddRefMethod(rm); #endregion 方法 - 基本功能. #region 高级设置. //带有参数的方法. rm = new RefMethod(); rm.Title = "重命名字段"; // rm.GroupName = "高级设置"; rm.HisAttrs.AddTBString("FieldOld", null, "旧字段英文名", true, false, 0, 100, 100); rm.HisAttrs.AddTBString("FieldNew", null, "新字段英文名", true, false, 0, 100, 100); rm.HisAttrs.AddTBString("FieldNewName", null, "新字段中文名", true, false, 0, 100, 100); rm.ClassMethodName = this.ToString() + ".DoChangeFieldName"; rm.Icon = "../../WF/Img/ReName.png"; rm.GroupName = "高级设置"; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "重命表单ID"; // rm.GroupName = "高级设置"; rm.HisAttrs.AddTBString("NewFrmID1", null, "新表单ID名称", true, false, 0, 100, 100); rm.HisAttrs.AddTBString("NewFrmID2", null, "确认表单ID名称", true, false, 0, 100, 100); rm.ClassMethodName = this.ToString() + ".DoChangeFrmID"; rm.Icon = "../../WF/Img/ReName.png"; rm.GroupName = "高级设置"; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "复制表单"; // rm.GroupName = "高级设置"; rm.HisAttrs.AddTBString("FrmID", null, "要复制新表单ID", true, false, 0, 100, 100); rm.HisAttrs.AddTBString("FrmName", null, "表单名称", true, false, 0, 100, 100); rm.HisAttrs.AddDDLEntities("FrmTree", null, "复制到表单目录", new SysFormTrees(),true); rm.ClassMethodName = this.ToString() + ".DoCopyFrm"; rm.Icon = "../../WF/Img/Btn/Copy.GIF"; rm.GroupName = "高级设置"; map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "手机端表单"; rm.GroupName = "高级设置"; rm.Icon = "../../WF/Admin/CCFormDesigner/Img/telephone.png"; rm.ClassMethodName = this.ToString() + ".MobileFrmDesigner"; rm.RefMethodType = RefMethodType.RightFrameOpen; //map.AddRefMethod(rm); #endregion 高级设置. #region 方法 - 开发接口. rm = new RefMethod(); rm.Title = "调用查询API"; // "设计表单"; rm.ClassMethodName = this.ToString() + ".DoSearch"; rm.Icon = "../../WF/Img/Table.gif"; rm.Visable = true; rm.RefMethodType = RefMethodType.LinkeWinOpen; rm.Target = "_blank"; rm.GroupName = "开发接口"; //map.AddRefMethod(rm); rm = new RefMethod(); rm.Title = "调用分析API"; // "设计表单"; rm.ClassMethodName = this.ToString() + ".DoGroup"; rm.Icon = "../../WF/Img/Table.gif"; rm.Visable = true; rm.RefMethodType = RefMethodType.LinkeWinOpen; rm.Target = "_blank"; rm.GroupName = "开发接口"; map.AddRefMethod(rm); #endregion 方法 - 开发接口. this._enMap = map; return this._enMap; } } #endregion /// /// 单据打印 /// /// public string DoBill() { return "../../Admin/FoolFormDesigner/PrintTemplate/Default.htm?FK_MapData=" + this.No + "&FrmID=" + this.No + "&NodeID=" + this.NodeID + "&FK_Node=" + this.NodeID; // return "../../Admin/AttrNode/Bill.htm?FK_MapData=" + this.No + "&NodeID=" + this.NodeID + "&FK_Node=" + this.NodeID; } protected override bool beforeUpdate() { //注册事件表单实体. BP.Sys.Base.FormEventBase feb = BP.Sys.Base.Glo.GetFormEventBaseByEnName(this.No); if (feb == null) this.FromEventEntity = ""; else this.FromEventEntity = feb.ToString(); return base.beforeUpdate(); } public string DoTabIdx() { return "../../Admin/FoolFormDesigner/TabIdx.htm?FK_MapData=" + this.No; } /// /// 复制表单 /// /// /// /// /// public string DoCopyFrm(string frmID, string frmName, string fk_frmTree) { return BP.Sys.CCFormAPI.CopyFrm(this.No, frmID, frmName, fk_frmTree); } #region 节点表单方法. /// /// 傻瓜表单设计器 /// /// public string DoDesignerFool() { return "../../Admin/FoolFormDesigner/Designer.htm?FK_MapData=" + this.No + "&MyPK=" + this.No + "&IsEditMapData=True&DoDesignerFool&IsFirst=1"; } /// /// 编辑excel模版. /// /// public string DoEditExcelTemplate() { return "../../Admin/CCFormDesigner/ExcelFrmDesigner/Designer.htm?FK_MapData=" + this.No; } /// /// 表单字段. /// /// public string DoEditFiledsList() { return "../../Admin/FoolFormDesigner/BatchEdit.htm?FK_MapData=" + this.No; } #endregion #region 通用方法. /// /// 重命名 /// /// /// /// public string DoChangeFrmID(string frmID1, string frmID2) { MapData md = new MapData(); md.No = frmID1; if (md.IsExits == true) return "表单ID【" + frmID1 + "】已经存在"; if (frmID1 != frmID2) return "两次输入的ID不一致."; string frmIDOld = this.No; string sqls = ""; sqls += "@UPDATE Sys_MapData SET No='" + frmID1 + "' WHERE No='" + frmIDOld + "'"; // sqls += "UPDATE Sys_FrmLine SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; // sqls += "UPDATE Sys_FrmLab SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; sqls += "UPDATE Sys_FrmBtn SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; sqls += "UPDATE Sys_MapAttr SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; sqls += "UPDATE Sys_MapExt SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; sqls += "UPDATE Sys_FrmImg SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; sqls += "UPDATE Sys_FrmImgAth SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; sqls += "UPDATE Sys_FrmRB SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; sqls += "UPDATE Sys_MapDtl SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; sqls += "UPDATE Sys_MapFrame SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; sqls += "UPDATE Sys_FrmEle SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; sqls += "UPDATE Sys_FrmEvent SET FK_MapData='" + frmID1 + "' WHERE FK_MapData='" + frmIDOld + "'"; DBAccess.RunSQLs(sqls); return "重命名成功,你需要关闭窗口重新刷新。"; } /// /// 替换名称 /// /// 旧名称 /// 新字段 /// 新字段名称(可以为空) /// public string DoChangeFieldName(string fieldOld, string newField, string newFieldName) { MapAttr attrOld = new MapAttr(); attrOld.setKeyOfEn(fieldOld); attrOld.setFK_MapData(this.No); attrOld.setMyPK(attrOld.FK_MapData + "_" + attrOld.KeyOfEn); if (attrOld.RetrieveFromDBSources() == 0) return "@旧字段输入错误[" + attrOld.KeyOfEn + "]."; //检查是否存在该字段? MapAttr attrNew = new MapAttr(); attrNew.setKeyOfEn(newField); attrNew.setFK_MapData(this.No); attrNew.setMyPK(attrNew.FK_MapData + "_" + attrNew.KeyOfEn); if (attrNew.RetrieveFromDBSources() == 1) return "@该字段[" + attrNew.KeyOfEn + "]已经存在."; //删除旧数据. attrOld.Delete(); //copy这个数据,增加上它. attrNew.Copy(attrOld); attrNew.setKeyOfEn(newField); attrNew.setFK_MapData(this.No); if (newFieldName != "") attrNew.Name = newFieldName; attrNew.Insert(); //更新处理他的相关业务逻辑. MapExts exts = new MapExts(this.No); foreach (MapExt item in exts) { item.setMyPK(item.MyPK.Replace("_" + fieldOld, "_" + newField)); if (item.AttrOfOper == fieldOld) item.AttrOfOper = newField; if (item.AttrsOfActive == fieldOld) item.AttrsOfActive = newField; item.Tag = item.Tag.Replace(fieldOld, newField); item.Tag1 = item.Tag1.Replace(fieldOld, newField); item.Tag2 = item.Tag2.Replace(fieldOld, newField); item.Tag3 = item.Tag3.Replace(fieldOld, newField); item.AtPara = item.AtPara.Replace(fieldOld, newField); item.Doc = item.Doc.Replace(fieldOld, newField); item.Save(); } return "执行成功"; } /// /// 批量设置正则表达式规则. /// /// public string DoRegularExpressionBatch() { return "../../Admin/FoolFormDesigner/MapExt/RegularExpressionBatch.htm?FK_Flow=&FK_MapData=" + this.No + "&t=" + DataType.CurrentDateTime; } /// /// 批量修改字段 /// /// public string DoBatchEditAttr() { return "../../Admin/FoolFormDesigner/BatchEdit.htm?FK_MapData=" + this.No + "&t=" + DataType.CurrentDateTime; } /// /// 排序字段顺序 /// /// public string MobileFrmDesigner() { return "../../Admin/MobileFrmDesigner/Default.htm?FK_Flow=&FK_MapData=" + this.No + "&t=" + DataType.CurrentDateTime; } /// /// 设计表单 /// /// public string DoDFrom() { string url = "../../Admin/FoolFormDesigner/CCForm/Frm.htm?FK_MapData=" + this.No + "&UserNo=" + BP.Web.WebUser.No + "&Token=" + Web.WebUser.Token + "&AppCenterDBType=" + DBAccess.AppCenterDBType + "&CustomerNo=" + BP.Difference.SystemConfig.CustomerNo; return url; } /// /// 设计傻瓜表单 /// /// public string DoDFromCol4() { string url = "../../Admin/FoolFormDesigner/Designer.htm?FK_MapData=" + this.No + "&UserNo=" + BP.Web.WebUser.No + "&Token=" + Web.WebUser.Token + "&AppCenterDBType=" + DBAccess.AppCenterDBType + "&IsFirst=1&CustomerNo=" + BP.Difference.SystemConfig.CustomerNo; return url; } /// /// 查询 /// /// public string DoSearch() { return "../../Comm/Search.htm?s=34&FK_MapData=" + this.No + "&EnsName=" + this.No; } /// /// 调用分析API /// /// public string DoGroup() { return "../../Comm/Group.htm?s=34&FK_MapData=" + this.No + "&EnsName=" + this.No; } /// /// 数据源管理 /// /// public string DoDBSrc() { return "../../Comm/Search.htm?s=34&FK_MapData=" + this.No + "&EnsName=BP.Sys.SFDBSrcs"; } public string DoPageLoadFull() { return "../../Admin/FoolFormDesigner/MapExt/PageLoadFull.htm?s=34&FK_MapData=" + this.No + "&ExtType=PageLoadFull&RefNo="; } public string DoInitScript() { return "../../Admin/FoolFormDesigner/MapExt/InitScript.htm?s=34&FK_MapData=" + this.No + "&ExtType=PageLoadFull&RefNo="; } /// /// 自由表单属性. /// /// public string DoBodyAttr() { return "../../Admin/FoolFormDesigner/MapExt/BodyAttr.htm?s=34&FK_MapData=" + this.No + "&ExtType=BodyAttr&RefNo="; } /// /// 表单事件 /// /// public string DoEvent() { return "../../Admin/CCFormDesigner/Action.htm?FK_MapData=" + this.No + "&T=sd&FK_Node=0"; } /// /// 导出表单 /// /// public string DoExp() { return "../../Admin/FoolFormDesigner/ImpExp/Exp.htm?FK_MapData=" + this.No; } #endregion 方法. } /// /// 自由表单属性s /// public class MapFrmNodes : EntitiesNoName { #region 构造 /// /// 自由表单属性s /// public MapFrmNodes() { } /// /// 得到它的 Entity /// public override Entity GetNewEntity { get { return new MapFrmNode(); } } #endregion #region 为了适应自动翻译成java的需要,把实体转换成List. /// /// 转化成 java list,C#不能调用. /// /// List public System.Collections.Generic.IList ToJavaList() { return (System.Collections.Generic.IList)this; } /// /// 转化成list /// /// List public System.Collections.Generic.List Tolist() { System.Collections.Generic.List list = new System.Collections.Generic.List(); for (int i = 0; i < this.Count; i++) { list.Add((MapFrmNode)this[i]); } return list; } #endregion 为了适应自动翻译成java的需要,把实体转换成List. } }