1质量巡检导出补充无图导出功能

This commit is contained in:
夏菊 2025-04-25 15:58:41 +08:00
parent 6bebbe15ef
commit b66d6aeba3
3 changed files with 163 additions and 154 deletions

View File

@ -2,9 +2,9 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<link href="../../res/css/common.css" rel="stylesheet" type="text/css" />
<link href="../../res/css/common.css" rel="stylesheet" type="text/css" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="../../Controls/My97DatePicker/WdatePicker.js" type="text/javascript"></script>
<title>质量巡检</title>
@ -20,7 +20,7 @@
.LabelColor {
color: Red;
font-size: small;
font-size: small;
}
/*.f-grid-row.LightRedRow {
@ -35,11 +35,12 @@
background-color: #79FF79;
}*/
.Green {
.Green {
background-color: Green;
color:white;
color: white;
}
.Yellow {
.Yellow {
background-color: #FFFF93;
}
@ -50,6 +51,7 @@
.LightGreen {
background-color: LightGreen
}
.f-grid-colheader-text {
white-space: normal;
word-break: break-all;
@ -62,7 +64,6 @@
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" EnableAjax="false" ShowHeader="false" Title="质量巡检记录" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="CheckControlCode" AllowCellEditing="true"
ClicksToEdit="2" DataIDField="CheckControlCode" AllowSorting="true" SortField="CheckDate"
@ -74,47 +75,48 @@
<f:Toolbar ID="Toolbar1" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:DropDownList ID="drpSponsorUnit" runat="server" Label="施工单位" EnableEdit="true" EmptyText="请选择查询条件"
LabelAlign="right">
LabelAlign="right">
</f:DropDownList>
<f:DropDownList ID="drpUnitWork" runat="server" Label="单位工程" LabelAlign="Right" EnableEdit="true">
</f:DropDownList>
<f:DropDownList ID="drpCNProfessional" runat="server" Label="专业" LabelAlign="Right" EnableEdit="true">
</f:DropDownList>
<f:DropDownList ID="drpQuestionType" runat="server" Label="问题类别" Width="210px" LabelAlign="Right" EnableEdit="true">
</f:DropDownList>
</Items>
</f:Toolbar>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:DropDownList ID="dpHandelStatus" runat="server" Label="整改状态" LabelAlign="Right" EnableEdit="true">
<f:ListItem Text="未确认" Value="1" />
<f:ListItem Text="已闭环" Value="2" />
<f:ListItem Text="超期未整改" Value="3" />
<f:ListItem Text="未整改" Value="4" />
<f:DropDownList ID="drpQuestionType" runat="server" Label="问题类别" Width="210px" LabelAlign="Right" EnableEdit="true">
</f:DropDownList>
<f:DatePicker runat="server" DateFormatString="yyyy-MM-dd" Label="开始日期" ID="txtStartTime"
LabelAlign="right" >
</f:DatePicker>
<f:DatePicker runat="server" DateFormatString="yyyy-MM-dd" Label="结束日期" ID="txtEndTime"
LabelAlign="right" >
</f:DatePicker>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnQuery" OnClick="btnQuery_Click" ToolTip="查询" Icon="SystemSearch" EnablePostBack="true" runat="server" >
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnQuery" OnClick="btnQuery_Click" ToolTip="查询" Icon="SystemSearch" EnablePostBack="true" runat="server">
</f:Button>
<f:Button ID="btnRset" OnClick="btnRset_Click" ToolTip="重置" Icon="ArrowUndo" EnablePostBack="true" runat="server" >
<f:Button ID="btnRset" OnClick="btnRset_Click" ToolTip="重置" Icon="ArrowUndo" EnablePostBack="true" runat="server">
</f:Button>
<f:Button ID="btnNew" ToolTip="新增" Icon="Add" EnablePostBack="false" runat="server"
Hidden="true">
</f:Button>
</Items>
</f:Toolbar>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:DropDownList ID="dpHandelStatus" runat="server" Label="整改状态" LabelAlign="Right" EnableEdit="true">
<f:ListItem Text="未确认" Value="1" />
<f:ListItem Text="已闭环" Value="2" />
<f:ListItem Text="超期未整改" Value="3" />
<f:ListItem Text="未整改" Value="4" />
</f:DropDownList>
<f:DatePicker runat="server" DateFormatString="yyyy-MM-dd" Label="开始日期" ID="txtStartTime"
LabelAlign="right">
</f:DatePicker>
<f:DatePicker runat="server" DateFormatString="yyyy-MM-dd" Label="结束日期" ID="txtEndTime"
LabelAlign="right">
</f:DatePicker>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:RadioButtonList ID="rbOutType" Label="导出" runat="server" LabelWidth="50px" Width="180px">
<f:RadioItem Text="无图" Value="0" Selected="true" />
<f:RadioItem Text="有图" Value="1" />
</f:RadioButtonList>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfPageIndex" Width="55px" HeaderText="序号" HeaderTextAlign="Center" TextAlign="Center"
@ -124,7 +126,7 @@
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="120px" ColumnID="CheckDate" DataField="CheckDate" SortField="CheckDate"
FieldType="Date" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderText="检查日期" TextAlign="Center" HeaderTextAlign="Center">
FieldType="Date" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderText="检查日期" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<%-- <f:RenderField ColumnID="DocCode" DataField="DocCode" --%>
<%-- SortField="DocCode" FieldType="String" HeaderText="质量巡检编号" TextAlign="Left" MinWidth="140px" --%>
@ -136,7 +138,7 @@
HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="UnitName" DataField="UnitName"
SortField="UnitName" FieldType="String" HeaderText="施工单位" TextAlign="Left"
SortField="UnitName" FieldType="String" HeaderText="施工单位" TextAlign="Left"
HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="ProfessionalName" DataField="ProfessionalName" SortField="ProfessionalName"
@ -146,22 +148,22 @@
FieldType="String" HeaderText="问题类别" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:TemplateField ColumnID="tfImageUrl1" Width="120px" HeaderText="整改前(照片)" HeaderTextAlign="Center"
TextAlign="Left">
TextAlign="Left">
<ItemTemplate>
<asp:Label ID="lbImageUrl" runat="server" Text='<%# ConvertImageUrlByImage(Eval("CheckControlCode")) %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:TemplateField ColumnID="tfImageUrl2" Width="120px" HeaderText="整改后(照片)" HeaderTextAlign="Center"
TextAlign="Left">
TextAlign="Left">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# ConvertImgUrlByImage(Eval("CheckControlCode")) %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="120px" ColumnID="QuestionDef" DataField="QuestionDef" SortField="QuestionDef"
FieldType="String" HeaderText="问题描述" TextAlign="Center" HeaderTextAlign="Center">
FieldType="String" HeaderText="问题描述" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="RectifyOpinion" DataField="RectifyOpinion" SortField="RectifyOpinion"
FieldType="String" HeaderText="整改意见" TextAlign="Center" HeaderTextAlign="Center">
FieldType="String" HeaderText="整改意见" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<%-- <f:RenderField Width="70px" ColumnID="CheckSite" DataField="CheckSite" SortField="CheckSite" --%>
<%-- FieldType="String" HeaderText="部位" TextAlign="Center" HeaderTextAlign="Center"> --%>
@ -187,7 +189,7 @@
<asp:Label ID="lblAuditMan" runat="server" Text='<%# ConvertMan(Eval("CheckControlCode")) %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:TemplateField ColumnID="State2" HeaderText="整改状态" HeaderTextAlign="Center" TextAlign="Center"
<f:TemplateField ColumnID="State2" HeaderText="整改状态" HeaderTextAlign="Center" TextAlign="Center"
EnableLock="true" Locked="False">
<ItemTemplate>
<asp:Label ID="lblState2" runat="server" Text='<%# Convertstatus(Eval("CheckControlCode")) %>'></asp:Label>

View File

@ -6,7 +6,7 @@ using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Linq;
using System.Text;
using System.Text;
using System.Threading.Tasks;
using NPOI.SS.UserModel;
@ -402,26 +402,26 @@ namespace FineUIPro.Web.CQMS.Check
{
bool isAuthenticated = false;
var query = (from pu in Funs.DB.Project_ProjectUser
join u in Funs.DB.Sys_User on pu.UserId equals u.UserId into userGroup
from u in userGroup.DefaultIfEmpty()
join projectUnit in Funs.DB.Project_ProjectUnit on new { pu.UnitId, pu.ProjectId }
equals new { projectUnit.UnitId, projectUnit.ProjectId } into projectUnitJoin
from projectUnit in projectUnitJoin.DefaultIfEmpty()
join person in Funs.DB.SitePerson_Person on new { pu.ProjectId, u.IdentityCard } equals new
{ person.ProjectId, person.IdentityCard } into personGroup
from person in personGroup.DefaultIfEmpty()
join wp in Funs.DB.Base_WorkPost on person.WorkPostId equals wp.WorkPostId into workPostGroup
from wp in workPostGroup.DefaultIfEmpty()
join sysConst in Funs.DB.Sys_Const on new
{ GroupId = "ProjectUnitType", ConstValue = projectUnit.UnitType } equals new
{ sysConst.GroupId, sysConst.ConstValue } into sysConstJoin
from sysConst in sysConstJoin.DefaultIfEmpty()
where pu.ProjectId == this.ProjectId && pu.UserId == this.CurrUser.UserId && sysConst.ConstText == "总包"
select new
{
pu.RoleId,
wp.WorkPostName,
}).FirstOrDefault();
join u in Funs.DB.Sys_User on pu.UserId equals u.UserId into userGroup
from u in userGroup.DefaultIfEmpty()
join projectUnit in Funs.DB.Project_ProjectUnit on new { pu.UnitId, pu.ProjectId }
equals new { projectUnit.UnitId, projectUnit.ProjectId } into projectUnitJoin
from projectUnit in projectUnitJoin.DefaultIfEmpty()
join person in Funs.DB.SitePerson_Person on new { pu.ProjectId, u.IdentityCard } equals new
{ person.ProjectId, person.IdentityCard } into personGroup
from person in personGroup.DefaultIfEmpty()
join wp in Funs.DB.Base_WorkPost on person.WorkPostId equals wp.WorkPostId into workPostGroup
from wp in workPostGroup.DefaultIfEmpty()
join sysConst in Funs.DB.Sys_Const on new
{ GroupId = "ProjectUnitType", ConstValue = projectUnit.UnitType } equals new
{ sysConst.GroupId, sysConst.ConstValue } into sysConstJoin
from sysConst in sysConstJoin.DefaultIfEmpty()
where pu.ProjectId == this.ProjectId && pu.UserId == this.CurrUser.UserId && sysConst.ConstText == "总包"
select new
{
pu.RoleId,
wp.WorkPostName,
}).FirstOrDefault();
List<string> names = new List<string>();
if (query != null)
{
@ -434,7 +434,7 @@ namespace FineUIPro.Web.CQMS.Check
});
var RoleName = string.Join(",", names);
if (RoleName.Contains("质量") || RoleName.Contains("施工") )
if (RoleName.Contains("质量") || RoleName.Contains("施工"))
{
isAuthenticated = true;
}
@ -442,9 +442,9 @@ namespace FineUIPro.Web.CQMS.Check
return isAuthenticated;
}
#endregion
#region
@ -734,7 +734,7 @@ namespace FineUIPro.Web.CQMS.Check
// cell = row.CreateCell(0);
// cell.CellStyle = cellStyle;
// cell.SetCellValue(item.DocCode);//质量巡检编号
cell = row.CreateCell(0);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.CheckDate.HasValue ? string.Format("{0:yyyy-MM-dd}", item.CheckDate) : "");//检查日期
@ -784,93 +784,91 @@ namespace FineUIPro.Web.CQMS.Check
if (!string.IsNullOrEmpty(item.QuestionType))
{
var qt = Funs.DB.Base_QualityQuestionType.FirstOrDefault(x => x.QualityQuestionTypeId == item.QuestionType);
if (qt!=null)
if (qt != null)
{
t = qt.QualityQuestionType;
}
}
cell.SetCellValue(t);//问题类别
// cell = row.CreateCell(5);
// cell.CellStyle = cellStyle;
// cell.SetCellValue(item.CheckSite);//整改前照片
//整改前照片
var attachFile = Funs.DB.AttachFile
.Where(p => p.MenuId == BLL.Const.CheckListMenuId && p.ToKeyId == item.CheckControlCode)
.FirstOrDefault();
if (attachFile != null)
{
var photoesUrl = attachFile.AttachUrl;
if (photoesUrl != null)
{
string[] arrUrl = photoesUrl.Split(',');
sheet.SetColumnWidth(5, 30 * 256);
row.Height = (short)(90 * 20 * arrUrl.Length);
foreach (string url in arrUrl)
{
var oneUrl = Server.MapPath("~/") + url;
byte[] bytes = System.IO.File.ReadAllBytes(oneUrl);
int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG);
if (rbOutType.SelectedValue == "1")
{//导出带图片
// 第三步:创建画部
IDrawing patriarch = sheet.CreateDrawingPatriarch();
// 第四步:设置锚点
int rowline = 1; // y方向
// 参数说明在起始单元格的X坐标0-1023Y的坐标0-255在终止单元格的X坐标0-1023Y的坐标0-255起始单元格列数行数终止单元格列数行数
IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 5, i, 6, i + 1);
// 第五步:把图片插到相应的位置+1
IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);
//就取第一张,如果后期想取全部 那把下面这个跳出语句去掉
// break;
//整改前照片
var attachFile = Funs.DB.AttachFile.Where(p => p.MenuId == BLL.Const.CheckListMenuId && p.ToKeyId == item.CheckControlCode).FirstOrDefault();
if (attachFile != null)
{
var photoesUrl = attachFile.AttachUrl;
if (photoesUrl != null)
{
string[] arrUrl = photoesUrl.Split(',');
sheet.SetColumnWidth(5, 30 * 256);
row.Height = (short)(90 * 20 * arrUrl.Length);
foreach (string url in arrUrl)
{
var oneUrl = Server.MapPath("~/") + url;
byte[] bytes = System.IO.File.ReadAllBytes(oneUrl);
int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG);
// 第三步:创建画部
IDrawing patriarch = sheet.CreateDrawingPatriarch();
// 第四步:设置锚点
int rowline = 1; // y方向
// 参数说明在起始单元格的X坐标0-1023Y的坐标0-255在终止单元格的X坐标0-1023Y的坐标0-255起始单元格列数行数终止单元格列数行数
IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 5, i, 6, i + 1);
// 第五步:把图片插到相应的位置+1
IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);
//就取第一张,如果后期想取全部 那把下面这个跳出语句去掉
// break;
}
}
}
}
//整改后照片
var attachFile1 = Funs.DB.AttachFile.Where(p =>
p.MenuId == BLL.Const.CheckListMenuId && p.ToKeyId == item.CheckControlCode + "r")
.FirstOrDefault();
if (attachFile1 != null)
{
var photoesUrl1 = attachFile1.AttachUrl;
if (photoesUrl1 != null)
//整改后照片
var attachFile1 = Funs.DB.AttachFile.Where(p => p.MenuId == BLL.Const.CheckListMenuId && p.ToKeyId == item.CheckControlCode + "r").FirstOrDefault();
if (attachFile1 != null)
{
string[] arrUrl = photoesUrl1.Split(',');
sheet.SetColumnWidth(6, 30 * 256);
row.Height = (short)(90 * 20 * arrUrl.Length);
foreach (string url in arrUrl)
var photoesUrl1 = attachFile1.AttachUrl;
if (photoesUrl1 != null)
{
var oneUrl = Server.MapPath("~/") + url;
byte[] bytes = System.IO.File.ReadAllBytes(oneUrl);
int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG);
string[] arrUrl = photoesUrl1.Split(',');
sheet.SetColumnWidth(6, 30 * 256);
row.Height = (short)(90 * 20 * arrUrl.Length);
foreach (string url in arrUrl)
{
var oneUrl = Server.MapPath("~/") + url;
byte[] bytes = System.IO.File.ReadAllBytes(oneUrl);
int pictureIdx = workbook.AddPicture(bytes, PictureType.JPEG);
// 第三步:创建画部
IDrawing patriarch = sheet.CreateDrawingPatriarch();
// 第四步:设置锚点
int rowline = 1; // y方向
// 参数说明在起始单元格的X坐标0-1023Y的坐标0-255在终止单元格的X坐标0-1023Y的坐标0-255起始单元格列数行数终止单元格列数行数
IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 6, i, 7, i + 1);
// 第五步:把图片插到相应的位置+1
IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);
//就取第一张,如果后期想取全部 那把下面这个跳出语句去掉
// break;
// 第三步:创建画部
IDrawing patriarch = sheet.CreateDrawingPatriarch();
// 第四步:设置锚点
int rowline = 1; // y方向
// 参数说明在起始单元格的X坐标0-1023Y的坐标0-255在终止单元格的X坐标0-1023Y的坐标0-255起始单元格列数行数终止单元格列数行数
IClientAnchor anchor = patriarch.CreateAnchor(0, 0, 0, 0, 6, i, 7, i + 1);
// 第五步:把图片插到相应的位置+1
IPicture pict = patriarch.CreatePicture(anchor, pictureIdx);
//就取第一张,如果后期想取全部 那把下面这个跳出语句去掉
// break;
}
}
}
}
else
{
cell = row.CreateCell(5);
cell.CellStyle = cellStyle;
cell.SetCellValue("");//整改前图片
cell = row.CreateCell(6);
cell.CellStyle = cellStyle;
cell.SetCellValue("");//整改后图片
}
// cell = row.CreateCell(6);
// cell.CellStyle = cellStyle;
// cell.SetCellValue(item.CheckSite);//整改后照片
// cell = row.CreateCell(5);
// cell.CellStyle = cellStyle;
// cell.SetCellValue(item.CheckSite);//部位
cell = row.CreateCell(7);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.QuestionDef);//问题描述
cell = row.CreateCell(8);
cell.CellStyle = cellStyle;
cell.SetCellValue(item.RectifyOpinion);//整改意见
@ -935,7 +933,7 @@ namespace FineUIPro.Web.CQMS.Check
}
}
#endregion
/// <summary>
/// 获取整改前图片(放于Img中)
/// </summary>
@ -954,7 +952,7 @@ namespace FineUIPro.Web.CQMS.Check
}
return url;
}
/// <summary>
/// 获取整改后图片(放于Img中)
/// </summary>

View File

@ -95,6 +95,33 @@ namespace FineUIPro.Web.CQMS.Check
/// </remarks>
protected global::FineUIPro.DropDownList drpQuestionType;
/// <summary>
/// btnQuery 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnQuery;
/// <summary>
/// btnRset 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnRset;
/// <summary>
/// btnNew 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnNew;
/// <summary>
/// Toolbar2 控件。
/// </summary>
@ -132,31 +159,13 @@ namespace FineUIPro.Web.CQMS.Check
protected global::FineUIPro.DatePicker txtEndTime;
/// <summary>
/// btnQuery 控件。
/// rbOutType 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnQuery;
/// <summary>
/// btnRset 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnRset;
/// <summary>
/// btnNew 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnNew;
protected global::FineUIPro.RadioButtonList rbOutType;
/// <summary>
/// btnOut 控件。