From 918b63a4b907a84cb5de6d713da3a8a94efa1ba0 Mon Sep 17 00:00:00 2001 From: gaofei <181547018@qq.com> Date: Wed, 14 Sep 2022 11:23:31 +0800 Subject: [PATCH] =?UTF-8?q?0914-=E5=A2=9E=E5=8A=A0=E8=B4=A8=E9=87=8F?= =?UTF-8?q?=E4=BC=9A=E8=AE=AE=E5=AF=BC=E5=87=BAPDF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + DataBase/版本日志/SGGLDB_V2022-09-14.sql | 7 + .../版本日志/SGGLDB_V2022-09-14修改明细.txt | 3 + .../1-2质量管理(Menu_CQMS).sql | 8 + .../Solution/CQMSConstructSolutionService.cs | 8 +- SGGL/BLL/Common/Const.cs | 4 + .../CQMS/Meeting/MonthMeetingEdit.aspx.cs | 2 +- .../CQMS/Meeting/MonthMeetingFile.aspx | 125 ++++++ .../CQMS/Meeting/MonthMeetingFile.aspx.cs | 402 ++++++++++++++++++ .../Meeting/MonthMeetingFile.aspx.designer.cs | 159 +++++++ .../CQMS/Meeting/SpecialMeetingEdit.aspx.cs | 4 +- .../CQMS/Meeting/SpecialMeetingFile.aspx | 125 ++++++ .../CQMS/Meeting/SpecialMeetingFile.aspx.cs | 402 ++++++++++++++++++ .../SpecialMeetingFile.aspx.designer.cs | 159 +++++++ .../CQMS/Meeting/SpecialMeetingView.aspx.cs | 2 +- .../File/Word/CQMS/Check/质量会议.doc | Bin 0 -> 27648 bytes SGGL/FineUIPro.Web/FineUIPro.Web.csproj | 16 + 17 files changed, 1419 insertions(+), 8 deletions(-) create mode 100644 DataBase/版本日志/SGGLDB_V2022-09-14.sql create mode 100644 DataBase/版本日志/SGGLDB_V2022-09-14修改明细.txt create mode 100644 SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx create mode 100644 SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx.cs create mode 100644 SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx create mode 100644 SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx.cs create mode 100644 SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/File/Word/CQMS/Check/质量会议.doc diff --git a/.gitignore b/.gitignore index 7b2f1c8f..6271f906 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ SGGL/.svn /WebAPI/obj /FineUIPro.Mobile/bin /FineUIPro.Mobile/obj +/SGGL/FineUIPro.Web/FileUpload/CQMS/Meeting/2022-09 diff --git a/DataBase/版本日志/SGGLDB_V2022-09-14.sql b/DataBase/版本日志/SGGLDB_V2022-09-14.sql new file mode 100644 index 00000000..8cac6454 --- /dev/null +++ b/DataBase/版本日志/SGGLDB_V2022-09-14.sql @@ -0,0 +1,7 @@ +INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) +VALUES('B9CE4D86-4A6E-42B2-8736-15595B3C57FC','','CQMS/Meeting/MonthMeetingFile.aspx',31,'390A78F0-43B2-4AF1-81B9-7C216FA7E0A4','Menu_CQMS',0,1,1) +GO + +INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) +VALUES('9F7C7E64-2743-4CF0-B09E-DDB43444A69A','ר','CQMS/Meeting/SpecialMeetingFile.aspx',32,'390A78F0-43B2-4AF1-81B9-7C216FA7E0A4','Menu_CQMS',0,1,1) +GO \ No newline at end of file diff --git a/DataBase/版本日志/SGGLDB_V2022-09-14修改明细.txt b/DataBase/版本日志/SGGLDB_V2022-09-14修改明细.txt new file mode 100644 index 00000000..906b910c --- /dev/null +++ b/DataBase/版本日志/SGGLDB_V2022-09-14修改明细.txt @@ -0,0 +1,3 @@ +--ADD BY gaofei 2022-09-14 +1,质量会议增加导出PDF功能 +--END diff --git a/DataBase/菜单初始化脚本/1-2质量管理(Menu_CQMS).sql b/DataBase/菜单初始化脚本/1-2质量管理(Menu_CQMS).sql index a364fe6f..213266e3 100644 --- a/DataBase/菜单初始化脚本/1-2质量管理(Menu_CQMS).sql +++ b/DataBase/菜单初始化脚本/1-2质量管理(Menu_CQMS).sql @@ -483,6 +483,14 @@ INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffi VALUES('0E6E6022-356E-42A1-9D16-C75BF69EBFB5','施工质量检查记录','CQMS/Check/JointCheckFile.aspx',30,'390A78F0-43B2-4AF1-81B9-7C216FA7E0A4','Menu_CQMS',0,1,1) GO +INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) +VALUES('B9CE4D86-4A6E-42B2-8736-15595B3C57FC','质量月例会','CQMS/Meeting/MonthMeetingFile.aspx',31,'390A78F0-43B2-4AF1-81B9-7C216FA7E0A4','Menu_CQMS',0,1,1) +GO + +INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) +VALUES('9F7C7E64-2743-4CF0-B09E-DDB43444A69A','质量专题会','CQMS/Meeting/SpecialMeetingFile.aspx',32,'390A78F0-43B2-4AF1-81B9-7C216FA7E0A4','Menu_CQMS',0,1,1) +GO + INSERT INTO dbo.Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) VALUES('3354E9AA-8D71-401B-9CFC-03D69DA86B05','工程联络单','CQMS/Check/TechnicalContactListFile.aspx',40,'390A78F0-43B2-4AF1-81B9-7C216FA7E0A4','Menu_CQMS',0,1,1) GO diff --git a/SGGL/BLL/CQMS/Solution/CQMSConstructSolutionService.cs b/SGGL/BLL/CQMS/Solution/CQMSConstructSolutionService.cs index b9f2f11b..6b0b33f1 100644 --- a/SGGL/BLL/CQMS/Solution/CQMSConstructSolutionService.cs +++ b/SGGL/BLL/CQMS/Solution/CQMSConstructSolutionService.cs @@ -98,19 +98,19 @@ namespace BLL { if (state != null) { - if (state.ToString() == BLL.Const.SubPlan_ReCompile) + if (state.ToString() == BLL.Const.CQMSConstructSolution_ReCompile) { return "重报"; } - else if (state.ToString() == BLL.Const.SubPlan_Compile) + else if (state.ToString() == BLL.Const.CQMSConstructSolution_Compile) { return "编制"; } - else if (state.ToString() == BLL.Const.SubPlan_Audit) + else if (state.ToString() == BLL.Const.CQMSConstructSolution_Audit) { return "会签"; } - else if (state.ToString() == BLL.Const.SubPlan_Complete) + else if (state.ToString() == BLL.Const.CQMSConstructSolution_Complete) { return "审批完成"; } diff --git a/SGGL/BLL/Common/Const.cs b/SGGL/BLL/Common/Const.cs index d908756c..8474608d 100644 --- a/SGGL/BLL/Common/Const.cs +++ b/SGGL/BLL/Common/Const.cs @@ -4055,6 +4055,10 @@ /// public const string ConstructSolutionTemplateUrl = "File\\Word\\CQMS\\Check\\施工方案.doc"; /// + /// 质量会议的虚拟路径 + /// + public const string CQMSMeetingTemplateUrl = "File\\Word\\CQMS\\Check\\质量会议.doc"; + /// /// 质量月报的虚拟路径 /// public const string CheckMonthTemplateUrl = "File\\Word\\CQMS\\Check\\质量月报.doc"; diff --git a/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingEdit.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingEdit.aspx.cs index 4e817e8f..b233634d 100644 --- a/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingEdit.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingEdit.aspx.cs @@ -344,7 +344,7 @@ namespace FineUIPro.Web.CQMS.Meeting } CQMSMeeting.AttentPersonNum = num; CQMSMeeting.MeetingTheme = this.txtMeetingTheme.Text.Trim(); - CQMSMeeting.MeetingContents = this.txtMeetingContents.Text.Trim(); + CQMSMeeting.MeetingContents = this.txtMeetingContents.Text; if (saveType == "submit") { CQMSMeeting.State = this.drpHandleType.SelectedValue; diff --git a/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx b/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx new file mode 100644 index 00000000..b30c63d8 --- /dev/null +++ b/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx @@ -0,0 +1,125 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MonthMeetingFile.aspx.cs" Inherits="FineUIPro.Web.CQMS.Meeting.MonthMeetingFile" %> + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx.cs new file mode 100644 index 00000000..2865fd3d --- /dev/null +++ b/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx.cs @@ -0,0 +1,402 @@ +using BLL; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Threading.Tasks; +using Aspose.Words; +using System.IO; + +namespace FineUIPro.Web.CQMS.Meeting +{ + public partial class MonthMeetingFile : PageBase + { + /// + /// 项目id + /// + public string ProjectId + { + get + { + return (string)ViewState["ProjectId"]; + } + set + { + ViewState["ProjectId"] = value; + } + } + #region 加载页面 + /// + /// 加载页面 + /// + /// + /// + protected void Page_Load(object sender, EventArgs e) + { + + // 表头过滤 + //FilterDataRowItem = FilterDataRowItemImplement; + if (!IsPostBack) + { + this.ProjectId = this.CurrUser.LoginProjectId; + ddlPageSize.SelectedValue = Grid1.PageSize.ToString(); + // 绑定表格 + BindGrid(); + } + } + #endregion + + protected DataTable insklistData() + { + string strSql = @"SELECT ins.*,un.UnitName,u.PersonName as CompileManName" + + @" FROM Meeting_CQMSMeeting ins" + + @" left join Base_Unit un on un.UnitId = ins.UnitId" + + @" left join Person_Persons u on u.PersonId = ins.CompileMan" + + @" where ins.ProjectId=@ProjectId and ins.MeetingType='M' and ins.State=@State "; + + List listStr = new List(); + listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); + listStr.Add(new SqlParameter("@State", BLL.Const.CQMSMeeting_Complete)); + SqlParameter[] parameter = listStr.ToArray(); + DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); + return tb; + } + + /// + /// 绑定数据 + /// + + public void BindGrid() + { + DataTable tb = insklistData(); + + // 2.获取当前分页数据 + //var table = this.GetPagedDataTable(Grid1, tb1); + + Grid1.RecordCount = tb.Rows.Count; + tb = GetFilteredTable(Grid1.FilteredData, tb); + var table = this.GetPagedDataTable(Grid1, tb); + Grid1.DataSource = table; + Grid1.DataBind(); + } + + + #region 查询 + /// + /// 查询 + /// + /// + /// + protected void TextBox_TextChanged(object sender, EventArgs e) + { + this.BindGrid(); + } + #endregion + + #region 过滤表头、排序、分页、关闭窗口 + /// + /// 过滤表头 + /// + /// + /// + protected void Grid1_FilterChange(object sender, EventArgs e) + { + BindGrid(); + } + + /// + /// 分页 + /// + /// + /// + protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) + { + Grid1.PageIndex = e.NewPageIndex; + BindGrid(); + } + + /// + /// 排序 + /// + /// + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + //Grid1.SortDirection = e.SortDirection; + //Grid1.SortField = e.SortField; + BindGrid(); + } + + /// + /// 分页显示条数下拉框 + /// + /// + /// + protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) + { + Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); + BindGrid(); + } + + /// + /// 关闭弹出窗 + /// + /// + /// + protected void Window1_Close(object sender, WindowCloseEventArgs e) + { + BindGrid(); + string str = this.hdID.Text; + if (!string.IsNullOrEmpty(str)) + { + PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("MonthMeetingEdit.aspx?MeetingId={0}", str, "查看 - "))); + } + this.hdID.Text = string.Empty; + } + #endregion + + #region Grid双击事件 + /// + /// Grid行双击事件 + /// + /// + /// + protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e) + { + btnMenuView_Click(null, null); + } + #endregion + + protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) + { + object[] keys = Grid1.DataKeys[e.RowIndex]; + string fileId = string.Empty; + if (keys == null) + { + return; + } + else + { + fileId = keys[0].ToString(); + } + if (e.CommandName == "export") + { + string rootPath = Server.MapPath("~/"); + string initTemplatePath = string.Empty; + string uploadfilepath = string.Empty; + string newUrl = string.Empty; + string filePath = string.Empty; + Model.Meeting_CQMSMeeting meeting = CQMS_MeetingService.GetCQMSMeetingById(fileId); + initTemplatePath = Const.CQMSMeetingTemplateUrl; + uploadfilepath = rootPath + initTemplatePath; + newUrl = uploadfilepath.Replace(".doc", meeting.MeetingCode.Replace("/", "-") + ".doc"); + filePath = initTemplatePath.Replace(".doc", meeting.MeetingCode.Replace("/", "-") + ".pdf"); + File.Copy(uploadfilepath, newUrl); + //更新书签内容 + Document doc = new Aspose.Words.Document(newUrl); + Bookmark bookmarkProjectName = doc.Range.Bookmarks["ProjectName"]; + if (bookmarkProjectName != null) + { + var project = ProjectService.GetProjectByProjectId(meeting.ProjectId); + if (project != null) + { + bookmarkProjectName.Text = project.ProjectName; + } + } + Bookmark bookmarkMeetingCode = doc.Range.Bookmarks["MeetingCode"]; + if (bookmarkMeetingCode != null) + { + bookmarkMeetingCode.Text = meeting.MeetingCode; + } + Bookmark bookmarkMeetingDate = doc.Range.Bookmarks["MeetingDate"]; + if (bookmarkMeetingDate != null) + { + if (meeting.MeetingDate != null) + { + bookmarkMeetingDate.Text = string.Format("{0:yyyy-MM-dd}", meeting.MeetingDate); + } + } + Bookmark bookmarkPlace = doc.Range.Bookmarks["Place"]; + if (bookmarkPlace != null) + { + bookmarkPlace.Text = meeting.Place; + } + Bookmark bookmarkHostMan = doc.Range.Bookmarks["HostMan"]; + if (bookmarkHostMan != null) + { + bookmarkHostMan.Text = ConvertHostMan(meeting.HostMan); + } + Bookmark bookmarkAttentPerson = doc.Range.Bookmarks["AttentPerson"]; + if (bookmarkAttentPerson != null) + { + bookmarkAttentPerson.Text = ConvertHostMan(meeting.AttentPerson); + } + Bookmark bookmarkMeetingTheme = doc.Range.Bookmarks["MeetingTheme"]; + if (bookmarkMeetingTheme != null) + { + bookmarkMeetingTheme.Text = meeting.MeetingTheme; + } + Bookmark bookmarkMeetingContents = doc.Range.Bookmarks["MeetingContents"]; + if (bookmarkMeetingContents != null) + { + bookmarkMeetingContents.Text = meeting.MeetingContents; + } + var compileApprove = (from x in Funs.DB.Meeting_CQMSMeetingApprove where x.MeetingId == fileId && x.ApproveType == Const.CQMSMeeting_Compile orderby x.ApproveDate descending select x).FirstOrDefault(); + var auditApprove = (from x in Funs.DB.Meeting_CQMSMeetingApprove where x.MeetingId == fileId && x.ApproveType == Const.CQMSMeeting_Audit orderby x.ApproveDate descending select x).FirstOrDefault(); + Bookmark bookmarkCompileMan = doc.Range.Bookmarks["CompileMan"]; + if (bookmarkCompileMan != null) + { + var user = Person_PersonsService.GetPerson_PersonsById(compileApprove.ApproveMan); + if (user != null) + { + bookmarkCompileMan.Text = user.PersonName; + } + } + Bookmark bookmarkAuditMan = doc.Range.Bookmarks["AuditMan"]; + if (bookmarkAuditMan != null) + { + var user = Person_PersonsService.GetPerson_PersonsById(auditApprove.ApproveMan); + if (user != null) + { + bookmarkAuditMan.Text = user.PersonName; + } + } + doc.Save(newUrl); + //生成PDF文件 + string pdfUrl = newUrl.Replace(".doc", ".pdf"); + Document doc1 = new Aspose.Words.Document(newUrl); + //验证参数 + if (doc1 == null) { throw new Exception("Word文件无效"); } + doc1.Save(pdfUrl, Aspose.Words.SaveFormat.Pdf);//还可以改成其它格式 + string fileName = Path.GetFileName(filePath); + FileInfo info = new FileInfo(pdfUrl); + long fileSize = info.Length; + Response.Clear(); + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); + Response.AddHeader("Content-Length", fileSize.ToString()); + Response.TransmitFile(pdfUrl, 0, fileSize); + Response.Flush(); + Response.Close(); + File.Delete(newUrl); + File.Delete(pdfUrl); + } + if (e.CommandName.Equals("download")) + { + string menuId = Const.CQMSMonthMeetingMenuId; + PageContext.RegisterStartupScript(Windowtt.GetShowReference( + String.Format("../../AttachFile/webuploader.aspx?type=-1&source=1&toKeyId={0}&path=FileUpload/CQMS/Meeting&menuId={1}", fileId, menuId))); + } + } + + // + //获取主持人 + // + // + // + protected string ConvertHostMan(object HostMan) + { + string names = string.Empty; + if (HostMan != null) + { + string[] strs = HostMan.ToString().Split(','); + foreach (var item in strs) + { + names += BLL.Person_PersonsService.GetPersonsNameById(item) + ","; + } + if (!string.IsNullOrEmpty(names)) + { + names = names.Substring(0, names.Length - 1); + } + } + return names; + } + /// + /// 把状态转换代号为文字形式 + /// + /// + /// + protected string ConvertState(object state) + { + if (state != null) + { + if (state.ToString() == BLL.Const.CQMSMeeting_ReCompile) + { + return "重新编制"; + } + else if (state.ToString() == BLL.Const.CQMSMeeting_Compile) + { + return "编制"; + } + else if (state.ToString() == BLL.Const.CQMSMeeting_Audit) + { + return "总包质量经理审批"; + } + else if (state.ToString() == BLL.Const.CQMSMeeting_Complete) + { + return "审批完成"; + } + else + { + return ""; + } + } + return ""; + } + // + //获取办理人姓名 + // + // + // + protected string ConvertMan(object MeetingId) + { + if (MeetingId != null) + { + Model.Meeting_CQMSMeetingApprove a = BLL.CQMS_MeetingApproveService.GetCQMSMeetingApproveByMeetingId(MeetingId.ToString()); + if (a != null) + { + if (a.ApproveMan != null) + { + return BLL.Person_PersonsService.GetPersonsNameById(a.ApproveMan); + } + } + else + { + return ""; + } + } + return ""; + } + + protected void Grid1_RowDataBound(object sender, GridRowEventArgs e) + { + + } + + protected void btnMenuView_Click(object sender, EventArgs e) + { + if (Grid1.SelectedRowIndexArray.Length == 0) + { + Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning); + return; + } + string id = Grid1.SelectedRowID; + var ins = BLL.CQMS_MeetingService.GetCQMSMeetingById(id); + + if (ins != null) + { + PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("MonthMeetingView.aspx?MeetingId={0}", id, "查看 - "))); + } + } + + protected void btnQuery_Click(object sender, EventArgs e) + { + BindGrid(); + } + protected void btnRset_Click(object sender, EventArgs e) + { + BindGrid(); + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx.designer.cs b/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx.designer.cs new file mode 100644 index 00000000..af584dfb --- /dev/null +++ b/SGGL/FineUIPro.Web/CQMS/Meeting/MonthMeetingFile.aspx.designer.cs @@ -0,0 +1,159 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.CQMS.Meeting { + + + public partial class MonthMeetingFile { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar1; + + /// + /// hdID 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.HiddenField hdID; + + /// + /// lblPageIndex 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label lblPageIndex; + + /// + /// Label2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label Label2; + + /// + /// Label1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label Label1; + + /// + /// ToolbarSeparator1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1; + + /// + /// ToolbarText1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarText ToolbarText1; + + /// + /// ddlPageSize 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlPageSize; + + /// + /// Window1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window1; + + /// + /// Windowtt 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Windowtt; + + /// + /// Menu1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Menu Menu1; + + /// + /// btnMenuView 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.MenuButton btnMenuView; + } +} diff --git a/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingEdit.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingEdit.aspx.cs index 204b172a..bb6d42f6 100644 --- a/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingEdit.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingEdit.aspx.cs @@ -222,7 +222,7 @@ namespace FineUIPro.Web.CQMS.Meeting { hdId.Text = SQLHelper.GetNewID(); } - PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../../AttachFile/webuploader.aspx?type=1&toKeyId={0}&path=FileUpload/CQMS/Meeting&menuId={1}", hdId.Text, BLL.Const.CQMSMonthMeetingMenuId))); + PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../../AttachFile/webuploader.aspx?type=1&toKeyId={0}&path=FileUpload/CQMS/Meeting&menuId={1}", hdId.Text, BLL.Const.CQMSSpecialMeetingMenuId))); } /// @@ -344,7 +344,7 @@ namespace FineUIPro.Web.CQMS.Meeting } CQMSMeeting.AttentPersonNum = num; CQMSMeeting.MeetingTheme = this.txtMeetingTheme.Text.Trim(); - CQMSMeeting.MeetingContents = this.txtMeetingContents.Text.Trim(); + CQMSMeeting.MeetingContents = this.txtMeetingContents.Text; if (saveType == "submit") { CQMSMeeting.State = this.drpHandleType.SelectedValue; diff --git a/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx b/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx new file mode 100644 index 00000000..7b00c53a --- /dev/null +++ b/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx @@ -0,0 +1,125 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SpecialMeetingFile.aspx.cs" Inherits="FineUIPro.Web.CQMS.Meeting.SpecialMeetingFile" %> + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx.cs new file mode 100644 index 00000000..2a20bcb7 --- /dev/null +++ b/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx.cs @@ -0,0 +1,402 @@ +using BLL; +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Threading.Tasks; +using Aspose.Words; +using System.IO; + +namespace FineUIPro.Web.CQMS.Meeting +{ + public partial class SpecialMeetingFile : PageBase + { + /// + /// 项目id + /// + public string ProjectId + { + get + { + return (string)ViewState["ProjectId"]; + } + set + { + ViewState["ProjectId"] = value; + } + } + #region 加载页面 + /// + /// 加载页面 + /// + /// + /// + protected void Page_Load(object sender, EventArgs e) + { + + // 表头过滤 + //FilterDataRowItem = FilterDataRowItemImplement; + if (!IsPostBack) + { + this.ProjectId = this.CurrUser.LoginProjectId; + ddlPageSize.SelectedValue = Grid1.PageSize.ToString(); + // 绑定表格 + BindGrid(); + } + } + #endregion + + protected DataTable insklistData() + { + string strSql = @"SELECT ins.*,un.UnitName,u.PersonName as CompileManName" + + @" FROM Meeting_CQMSMeeting ins" + + @" left join Base_Unit un on un.UnitId = ins.UnitId" + + @" left join Person_Persons u on u.PersonId = ins.CompileMan" + + @" where ins.ProjectId=@ProjectId and ins.MeetingType='S' and ins.State=@State "; + + List listStr = new List(); + listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId)); + listStr.Add(new SqlParameter("@State", BLL.Const.CQMSMeeting_Complete)); + SqlParameter[] parameter = listStr.ToArray(); + DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter); + return tb; + } + + /// + /// 绑定数据 + /// + + public void BindGrid() + { + DataTable tb = insklistData(); + + // 2.获取当前分页数据 + //var table = this.GetPagedDataTable(Grid1, tb1); + + Grid1.RecordCount = tb.Rows.Count; + tb = GetFilteredTable(Grid1.FilteredData, tb); + var table = this.GetPagedDataTable(Grid1, tb); + Grid1.DataSource = table; + Grid1.DataBind(); + } + + + #region 查询 + /// + /// 查询 + /// + /// + /// + protected void TextBox_TextChanged(object sender, EventArgs e) + { + this.BindGrid(); + } + #endregion + + #region 过滤表头、排序、分页、关闭窗口 + /// + /// 过滤表头 + /// + /// + /// + protected void Grid1_FilterChange(object sender, EventArgs e) + { + BindGrid(); + } + + /// + /// 分页 + /// + /// + /// + protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) + { + Grid1.PageIndex = e.NewPageIndex; + BindGrid(); + } + + /// + /// 排序 + /// + /// + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + //Grid1.SortDirection = e.SortDirection; + //Grid1.SortField = e.SortField; + BindGrid(); + } + + /// + /// 分页显示条数下拉框 + /// + /// + /// + protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) + { + Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); + BindGrid(); + } + + /// + /// 关闭弹出窗 + /// + /// + /// + protected void Window1_Close(object sender, WindowCloseEventArgs e) + { + BindGrid(); + string str = this.hdID.Text; + if (!string.IsNullOrEmpty(str)) + { + PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("SpecialMeetingEdit.aspx?MeetingId={0}", str, "查看 - "))); + } + this.hdID.Text = string.Empty; + } + #endregion + + #region Grid双击事件 + /// + /// Grid行双击事件 + /// + /// + /// + protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e) + { + btnMenuView_Click(null, null); + } + #endregion + + protected void Grid1_RowCommand(object sender, GridCommandEventArgs e) + { + object[] keys = Grid1.DataKeys[e.RowIndex]; + string fileId = string.Empty; + if (keys == null) + { + return; + } + else + { + fileId = keys[0].ToString(); + } + if (e.CommandName == "export") + { + string rootPath = Server.MapPath("~/"); + string initTemplatePath = string.Empty; + string uploadfilepath = string.Empty; + string newUrl = string.Empty; + string filePath = string.Empty; + Model.Meeting_CQMSMeeting meeting = CQMS_MeetingService.GetCQMSMeetingById(fileId); + initTemplatePath = Const.CQMSMeetingTemplateUrl; + uploadfilepath = rootPath + initTemplatePath; + newUrl = uploadfilepath.Replace(".doc", meeting.MeetingCode.Replace("/", "-") + ".doc"); + filePath = initTemplatePath.Replace(".doc", meeting.MeetingCode.Replace("/", "-") + ".pdf"); + File.Copy(uploadfilepath, newUrl); + //更新书签内容 + Document doc = new Aspose.Words.Document(newUrl); + Bookmark bookmarkProjectName = doc.Range.Bookmarks["ProjectName"]; + if (bookmarkProjectName != null) + { + var project = ProjectService.GetProjectByProjectId(meeting.ProjectId); + if (project != null) + { + bookmarkProjectName.Text = project.ProjectName; + } + } + Bookmark bookmarkMeetingCode = doc.Range.Bookmarks["MeetingCode"]; + if (bookmarkMeetingCode != null) + { + bookmarkMeetingCode.Text = meeting.MeetingCode; + } + Bookmark bookmarkMeetingDate = doc.Range.Bookmarks["MeetingDate"]; + if (bookmarkMeetingDate != null) + { + if (meeting.MeetingDate != null) + { + bookmarkMeetingDate.Text = string.Format("{0:yyyy-MM-dd}", meeting.MeetingDate); + } + } + Bookmark bookmarkPlace = doc.Range.Bookmarks["Place"]; + if (bookmarkPlace != null) + { + bookmarkPlace.Text = meeting.Place; + } + Bookmark bookmarkHostMan = doc.Range.Bookmarks["HostMan"]; + if (bookmarkHostMan != null) + { + bookmarkHostMan.Text = ConvertHostMan(meeting.HostMan); + } + Bookmark bookmarkAttentPerson = doc.Range.Bookmarks["AttentPerson"]; + if (bookmarkAttentPerson != null) + { + bookmarkAttentPerson.Text = ConvertHostMan(meeting.AttentPerson); + } + Bookmark bookmarkMeetingTheme = doc.Range.Bookmarks["MeetingTheme"]; + if (bookmarkMeetingTheme != null) + { + bookmarkMeetingTheme.Text = meeting.MeetingTheme; + } + Bookmark bookmarkMeetingContents = doc.Range.Bookmarks["MeetingContents"]; + if (bookmarkMeetingContents != null) + { + bookmarkMeetingContents.Text = meeting.MeetingContents; + } + var compileApprove = (from x in Funs.DB.Meeting_CQMSMeetingApprove where x.MeetingId == fileId && x.ApproveType == Const.CQMSMeeting_Compile orderby x.ApproveDate descending select x).FirstOrDefault(); + var auditApprove = (from x in Funs.DB.Meeting_CQMSMeetingApprove where x.MeetingId == fileId && x.ApproveType == Const.CQMSMeeting_Audit orderby x.ApproveDate descending select x).FirstOrDefault(); + Bookmark bookmarkCompileMan = doc.Range.Bookmarks["CompileMan"]; + if (bookmarkCompileMan != null) + { + var user = Person_PersonsService.GetPerson_PersonsById(compileApprove.ApproveMan); + if (user != null) + { + bookmarkCompileMan.Text = user.PersonName; + } + } + Bookmark bookmarkAuditMan = doc.Range.Bookmarks["AuditMan"]; + if (bookmarkAuditMan != null) + { + var user = Person_PersonsService.GetPerson_PersonsById(auditApprove.ApproveMan); + if (user != null) + { + bookmarkAuditMan.Text = user.PersonName; + } + } + doc.Save(newUrl); + //生成PDF文件 + string pdfUrl = newUrl.Replace(".doc", ".pdf"); + Document doc1 = new Aspose.Words.Document(newUrl); + //验证参数 + if (doc1 == null) { throw new Exception("Word文件无效"); } + doc1.Save(pdfUrl, Aspose.Words.SaveFormat.Pdf);//还可以改成其它格式 + string fileName = Path.GetFileName(filePath); + FileInfo info = new FileInfo(pdfUrl); + long fileSize = info.Length; + Response.Clear(); + Response.ContentType = "application/x-zip-compressed"; + Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8)); + Response.AddHeader("Content-Length", fileSize.ToString()); + Response.TransmitFile(pdfUrl, 0, fileSize); + Response.Flush(); + Response.Close(); + File.Delete(newUrl); + File.Delete(pdfUrl); + } + if (e.CommandName.Equals("download")) + { + string menuId = Const.CQMSSpecialMeetingMenuId; + PageContext.RegisterStartupScript(Windowtt.GetShowReference( + String.Format("../../AttachFile/webuploader.aspx?type=-1&source=1&toKeyId={0}&path=FileUpload/CQMS/Meeting&menuId={1}", fileId, menuId))); + } + } + + // + //获取主持人 + // + // + // + protected string ConvertHostMan(object HostMan) + { + string names = string.Empty; + if (HostMan != null) + { + string[] strs = HostMan.ToString().Split(','); + foreach (var item in strs) + { + names += BLL.Person_PersonsService.GetPersonsNameById(item) + ","; + } + if (!string.IsNullOrEmpty(names)) + { + names = names.Substring(0, names.Length - 1); + } + } + return names; + } + /// + /// 把状态转换代号为文字形式 + /// + /// + /// + protected string ConvertState(object state) + { + if (state != null) + { + if (state.ToString() == BLL.Const.CQMSMeeting_ReCompile) + { + return "重新编制"; + } + else if (state.ToString() == BLL.Const.CQMSMeeting_Compile) + { + return "编制"; + } + else if (state.ToString() == BLL.Const.CQMSMeeting_Audit) + { + return "总包质量经理审批"; + } + else if (state.ToString() == BLL.Const.CQMSMeeting_Complete) + { + return "审批完成"; + } + else + { + return ""; + } + } + return ""; + } + // + //获取办理人姓名 + // + // + // + protected string ConvertMan(object MeetingId) + { + if (MeetingId != null) + { + Model.Meeting_CQMSMeetingApprove a = BLL.CQMS_MeetingApproveService.GetCQMSMeetingApproveByMeetingId(MeetingId.ToString()); + if (a != null) + { + if (a.ApproveMan != null) + { + return BLL.Person_PersonsService.GetPersonsNameById(a.ApproveMan); + } + } + else + { + return ""; + } + } + return ""; + } + + protected void Grid1_RowDataBound(object sender, GridRowEventArgs e) + { + + } + + protected void btnMenuView_Click(object sender, EventArgs e) + { + if (Grid1.SelectedRowIndexArray.Length == 0) + { + Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning); + return; + } + string id = Grid1.SelectedRowID; + var ins = BLL.CQMS_MeetingService.GetCQMSMeetingById(id); + + if (ins != null) + { + PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("SpecialMeetingView.aspx?MeetingId={0}", id, "查看 - "))); + } + } + + protected void btnQuery_Click(object sender, EventArgs e) + { + BindGrid(); + } + protected void btnRset_Click(object sender, EventArgs e) + { + BindGrid(); + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx.designer.cs b/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx.designer.cs new file mode 100644 index 00000000..4d53040b --- /dev/null +++ b/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingFile.aspx.designer.cs @@ -0,0 +1,159 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.CQMS.Meeting { + + + public partial class SpecialMeetingFile { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar1; + + /// + /// hdID 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.HiddenField hdID; + + /// + /// lblPageIndex 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label lblPageIndex; + + /// + /// Label2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label Label2; + + /// + /// Label1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label Label1; + + /// + /// ToolbarSeparator1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1; + + /// + /// ToolbarText1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarText ToolbarText1; + + /// + /// ddlPageSize 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlPageSize; + + /// + /// Window1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window1; + + /// + /// Windowtt 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Windowtt; + + /// + /// Menu1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Menu Menu1; + + /// + /// btnMenuView 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.MenuButton btnMenuView; + } +} diff --git a/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingView.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingView.aspx.cs index 3509dbd3..33a68a11 100644 --- a/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingView.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Meeting/SpecialMeetingView.aspx.cs @@ -176,7 +176,7 @@ namespace FineUIPro.Web.CQMS.Meeting { hdId.Text = SQLHelper.GetNewID(); } - PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../../AttachFile/webuploader.aspx?type=-1&toKeyId={0}&path=FileUpload/CQMS/Meeting&menuId={1}", hdId.Text, BLL.Const.CQMSMonthMeetingMenuId))); + PageContext.RegisterStartupScript(WindowAtt.GetShowReference(String.Format("../../AttachFile/webuploader.aspx?type=-1&toKeyId={0}&path=FileUpload/CQMS/Meeting&menuId={1}", hdId.Text, BLL.Const.CQMSSpecialMeetingMenuId))); } private string GetStringByArray(string[] array) diff --git a/SGGL/FineUIPro.Web/File/Word/CQMS/Check/质量会议.doc b/SGGL/FineUIPro.Web/File/Word/CQMS/Check/质量会议.doc new file mode 100644 index 0000000000000000000000000000000000000000..8c55649384ded6864aa0cd9853c72aa2c6f9791d GIT binary patch literal 27648 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 d$?u4P+;se=+R+o9w) + + @@ -6364,6 +6366,13 @@ MonthMeetingEdit.aspx + + MonthMeetingFile.aspx + ASPXCodeBehind + + + MonthMeetingFile.aspx + MonthMeetingView.aspx ASPXCodeBehind @@ -6385,6 +6394,13 @@ SpecialMeetingEdit.aspx + + SpecialMeetingFile.aspx + ASPXCodeBehind + + + SpecialMeetingFile.aspx + SpecialMeetingView.aspx ASPXCodeBehind