集团主数据在建项目使用情况

This commit is contained in:
geh
2026-05-26 15:48:00 +08:00
parent b3b3334466
commit 5d423fdcc5
19 changed files with 3580 additions and 408 deletions
@@ -1166,6 +1166,8 @@
<Content Include="indexold.aspx" />
<Content Include="indexProjectOld.aspx" />
<Content Include="ProjectData\LocationSelect.aspx" />
<Content Include="ProjectData\MasterProjectData.aspx" />
<Content Include="ProjectData\MasterProjectDataUsage.aspx" />
<Content Include="ProjectData\ProjectDevices.aspx" />
<Content Include="ProjectData\ProjectDevicesEdit.aspx" />
<Content Include="QualityAudit\SubcontractLeasingProtocolAttachUrl\2024-11\638666775877584960_微信图片_20241106163356.png" />
@@ -12667,6 +12669,10 @@
<Compile Include="ProjectData\LocationSelect.aspx.designer.cs">
<DependentUpon>LocationSelect.aspx</DependentUpon>
</Compile>
<Compile Include="ProjectData\MasterProjectData.aspx.cs" />
<Compile Include="ProjectData\MasterProjectData.aspx.designer.cs" />
<Compile Include="ProjectData\MasterProjectDataUsage.aspx.cs" />
<Compile Include="ProjectData\MasterProjectDataUsage.aspx.designer.cs" />
<Compile Include="ProjectData\ProjectDevices.aspx.cs">
<DependentUpon>ProjectDevices.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
@@ -0,0 +1,266 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MasterProjectData.aspx.cs" Inherits="FineUIPro.Web.ProjectData.MasterProjectData" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>集团在建项目清单</title>
<link href="../res/css/common.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.f-grid-row .f-grid-cell-inner {
white-space: normal;
word-break: break-all;
}
/* 增强合计行样式 - 使用多种选择器确保生效 */
.f-grid-row-summary .f-grid-cell,
.f-grid-summary-row .f-grid-cell-inner {
font-weight: bold !important;
color: red !important;
}
.Pause {
/*background-color: darkgray;*/
background-color: red;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:TabStrip ID="TabStrip1" ShowBorder="true" TabPosition="Top"
EnableTabCloseMenu="false" ActiveTabIndex="0" runat="server" OnTabIndexChanged="TabStrip1_TabIndexChanged" AutoPostBack="true">
<Tabs>
<f:Tab Title="企业主数据与QHSE系统项目建立一览表" BodyPadding="10px" runat="server">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="集团在建项目清单" Height="720px"
EnableCollapse="true" runat="server" BoxFlex="1" EnableColumnLines="true" EnableSummary="true" SummaryPosition="Bottom"
DataKeyNames="Pid" DataIDField="Pid" AllowSorting="true" SortField="Relate,Start_date DESC,StartDate" SortDirection="DESC"
OnSort="Grid1_Sort" AllowPaging="false" IsDatabasePaging="false" PageSize="1000000" OnPageIndexChange="Grid1_PageIndexChange"
EnableRowDoubleClickEvent="true" OnRowDoubleClick="Grid1_RowDoubleClick" EnableTextSelection="True">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:TextBox runat="server" Label="主数据编号" ID="txtProCode" EmptyText="输入主数据项目编号"
AutoPostBack="true" OnTextChanged="TextBox_TextChanged" Width="260px" LabelWidth="100px" LabelAlign="Right">
</f:TextBox>
<f:TextBox runat="server" Label="主数据名称" ID="txtProName" EmptyText="输入主数据项目名称"
AutoPostBack="true" OnTextChanged="TextBox_TextChanged" Width="260px" LabelWidth="100px">
</f:TextBox>
<f:DatePicker runat="server" Label="主数据开工日期" ID="txtStartTime" EmptyText="开始日期" LabelAlign="Right" LabelWidth="120px" Width="220px" AutoPostBack="true" OnTextChanged="TextBox_TextChanged">
</f:DatePicker>
<f:Label ID="Label5" runat="server" Text="至">
</f:Label>
<f:DatePicker runat="server" ID="txtEndTime" LabelAlign="Right" EmptyText="结束日期" Width="110px" AutoPostBack="true" OnTextChanged="TextBox_TextChanged">
</f:DatePicker>
<f:RadioButtonList runat="server" ID="rblIsRelate" AutoPostBack="true" Label="关联" LabelWidth="60px" LabelAlign="Right"
OnSelectedIndexChanged="TextBox_TextChanged" Width="350px">
<f:RadioItem Text="全部" Value="0" Selected="true" />
<f:RadioItem Text="已关联" Value="1" />
<f:RadioItem Text="未关联" Value="2" />
<f:RadioItem Text="未对应" Value="3" />
</f:RadioButtonList>
</Items>
</f:Toolbar>
<f:Toolbar ID="Toolbar1" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:TextBox runat="server" Label="项目编号" ID="txtProjectCode" EmptyText="输入QHSE项目编号"
AutoPostBack="true" OnTextChanged="TextBox_TextChanged" Width="260px" LabelWidth="90px" LabelAlign="Right">
</f:TextBox>
<f:TextBox runat="server" Label="项目名称" ID="txtProjectName" EmptyText="输入QHSE项目名称"
AutoPostBack="true" OnTextChanged="TextBox_TextChanged" Width="260px" LabelWidth="90px">
</f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<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="tfNumber" Width="55px" HeaderText="序号" HeaderTextAlign="Center"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:GroupField ColumnID="GroupField1" runat="server" HeaderText="集团主数据" HeaderTextAlign="Center">
<Columns>
<f:RenderField Width="260px" ColumnID="Pro_name" DataField="Pro_name"
FieldType="String" HeaderText="项目名称" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="160px" ColumnID="Pro_code" DataField="Pro_code"
FieldType="String" HeaderText="项目编号" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="180px" ColumnID="Org_name" DataField="Org_name"
FieldType="String" HeaderText="所属单位" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="160px" ColumnID="Con_mode_desc" DataField="Con_mode_desc"
FieldType="String" HeaderText="承包方式" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Pro_nature" DataField="Pro_nature"
FieldType="String" HeaderText="性质" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="Start_date" DataField="Start_date" FieldType="Date" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderText="开工时间" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="140px" ColumnID="Amount" DataField="Amount"
FieldType="String" HeaderText="合同额/规模(亿)" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Pro_status" DataField="Pro_status"
FieldType="String" HeaderText="状态" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField ColumnID="GroupField2" runat="server" HeaderText="QHSE系统" HeaderTextAlign="Center">
<Columns>
<f:RenderField Width="260px" ColumnID="ProjectName" DataField="ProjectName"
FieldType="String" HeaderText="项目名称" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="160px" ColumnID="ProjectCode" DataField="ProjectCode"
FieldType="String" HeaderText="项目编号" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="StartDate" DataField="StartDate" FieldType="Date" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderText="开工时间" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:TemplateField ColumnID="tfState" Width="110px" HeaderText="状态" HeaderTextAlign="Center" TextAlign="Center"
EnableLock="true" Locked="False">
<ItemTemplate>
<asp:Label ID="lblState" runat="server" Text='<%# ConvertProjectState(Eval("ProjectState")) %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
</Columns>
</f:GroupField>
<f:GroupField ColumnID="GroupField3" runat="server" HeaderText="项目关联使用主数据情况及说明" HeaderTextAlign="Center">
<Columns>
<f:RenderField Width="120px" ColumnID="RelateName" DataField="RelateName"
FieldType="String" HeaderText="是否关联使用" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<%--<f:RenderField Width="120px" ColumnID="Use" DataField="Use"
FieldType="String" HeaderText="是否使用系统" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>--%>
<f:RenderField Width="160px" ColumnID="ReasonType" DataField="ReasonType"
FieldType="String" HeaderText="原因类型" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="360px" ColumnID="Reason" DataField="Reason"
FieldType="String" HeaderText="未关联原因情况说明" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<%--<f:RenderField Width="200px" ColumnID="Reason" DataField="Reason"
FieldType="String" HeaderText="原因说明" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>
<f:RenderField Width="200px" ColumnID="Situation" DataField="Situation"
FieldType="String" HeaderText="其他情况" HeaderTextAlign="Center" TextAlign="Center">
</f:RenderField>--%>
</Columns>
</f:GroupField>
</Columns>
<Listeners>
<f:Listener Event="dataload" Handler="onGridDataLoad" />
</Listeners>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Tab>
<f:Tab Title="企业QHSE项目使用情况一览表" BodyPadding="10px" runat="server">
<Items>
<f:Grid ID="Grid2" ShowBorder="true" ShowHeader="false" Title="QHSE在建项目清单" Height="720px"
EnableCollapse="true" runat="server" BoxFlex="1" EnableColumnLines="true" EnableSummary="true" SummaryPosition="Bottom"
DataKeyNames="ProjectId" DataIDField="ProjectId" AllowSorting="true" SortField="Usage,StartDate" SortDirection="DESC"
OnSort="Grid2_Sort" AllowPaging="false" IsDatabasePaging="false" PageSize="1000000" OnPageIndexChange="Grid2_PageIndexChange"
EnableTextSelection="True">
<Toolbars>
<f:Toolbar ID="Toolbar3" Position="Top" runat="server" ToolbarAlign="Left">
<Items>
<f:TextBox runat="server" Label="项目编号" ID="txtProjectCode2" EmptyText="输入QHSE项目编号"
AutoPostBack="true" OnTextChanged="TextBox_TextChanged2" Width="260px" LabelWidth="90px" LabelAlign="Right">
</f:TextBox>
<f:TextBox runat="server" Label="项目名称" ID="txtProjectName2" EmptyText="输入QHSE项目名称"
AutoPostBack="true" OnTextChanged="TextBox_TextChanged2" Width="260px" LabelWidth="90px">
</f:TextBox>
<f:DatePicker runat="server" Label="开工日期" ID="txtStartTime2" EmptyText="开始日期" LabelAlign="Right" LabelWidth="120px" Width="220px" AutoPostBack="true" OnTextChanged="TextBox_TextChanged2">
</f:DatePicker>
<f:Label ID="Label1" runat="server" Text="至">
</f:Label>
<f:DatePicker runat="server" ID="txtEndTime2" LabelAlign="Right" EmptyText="结束日期" Width="110px" AutoPostBack="true" OnTextChanged="TextBox_TextChanged2">
</f:DatePicker>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnOut2" OnClick="btnOut_Click2" 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">
<ItemTemplate>
<asp:Label ID="lblPageIndex" runat="server" Text='<%# Grid2.PageIndex * Grid2.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="160px" ColumnID="ProjectCode" DataField="ProjectCode"
FieldType="String" HeaderText="项目编号" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="260px" ColumnID="ProjectName" DataField="ProjectName"
FieldType="String" HeaderText="项目名称" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="260px" ColumnID="ShortName" DataField="ShortName"
FieldType="String" HeaderText="项目简称" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="StartDate" DataField="StartDate" FieldType="Date" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderText="开工时间" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="EndDate" DataField="EndDate" FieldType="Date" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderText="完工时间" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:TemplateField ColumnID="tfStatus" Width="110px" HeaderText="状态" HeaderTextAlign="Center" TextAlign="Center"
EnableLock="true" Locked="False">
<ItemTemplate>
<asp:Label ID="lblStatus" runat="server" Text='<%# ConvertProjectState(Eval("ProjectState")) %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="120px" ColumnID="Usage" DataField="Usage"
FieldType="String" HeaderText="使用情况" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="dataload" Handler="onGridDataLoad" />
</Listeners>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator2" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText2" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize2" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize2_SelectedIndexChanged">
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Tab>
</Tabs>
</f:TabStrip>
</Items>
</f:Panel>
<f:Window ID="Window1" Title="集团主数据在建项目使用情况说明" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" IsModal="true" Width="1080px" Height="720px" OnClose="Window1_Close">
</f:Window>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
function onGridDataLoad(event) {
this.mergeColumns(['Pro_name', 'Pro_code', 'Start_date', 'Pro_status'], {
depends: true
});
}
</script>
</body>
</html>
@@ -0,0 +1,554 @@
using BLL;
using FineUIPro.Web.BaseInfo;
using FineUIPro.Web.DataShow;
using Model;
using Model.Customization;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.ProjectData
{
public partial class MasterProjectData : PageBase
{
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Funs.DropDownPageSize(this.ddlPageSize);
this.ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
//// 绑定表格
//this.BindGrid();
TabStrip1_TabIndexChanged(null, null);
}
}
protected void TabStrip1_TabIndexChanged(object sender, EventArgs e)
{
if (TabStrip1.ActiveTabIndex == 0)
{
this.Panel1.Title = "企业主数据与QHSE系统项目建立一览表";
this.BindGrid();
}
else
{
this.Panel1.Title = "企业QHSE项目使用情况一览表";
this.BindGrid2();
}
}
#endregion
#region 使
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
var list = new List<MasterProjectDataInfo>();
var db = Funs.DB;
var masterProDatas = ProjectService.GetMasterProjectDataInfos();
var query = (from x in masterProDatas
join pro in db.Base_Project on x.Pro_id equals pro.MasterSysId into proGroup
from pro in proGroup.DefaultIfEmpty()
join use in db.Project_MasterDataUsage on x.Pro_id equals use.Pro_id into useGroup
from use in useGroup.DefaultIfEmpty()
select new MasterProjectDataInfo
{
//Pid = x.Pro_id + (pro != null ? $"-{pro.ProjectId}" : ""),
Pid = $"{x.Pro_id}|{(pro != null ? $"{pro.ProjectId}" : "")}|{(use != null ? use.Id : "")}",
Pro_id = x.Pro_id,
Pro_name = x.Pro_name,
Pro_code = x.Pro_code,
Start_date = x.Start_date,
Con_mode_desc = x.Con_mode_desc,
Pro_nature = x.Pro_nature,
Pro_status = x.Pro_status,
Org_name = x.Org_name,
Amount = ConvertAmount(x.Ori_amt_sum_vat_fc, x.Amt_add_sum_vat_fc_local),
ProjectId = pro != null ? pro.ProjectId : null,
ProjectName = pro != null ? pro.ProjectName : "",
ProjectCode = pro != null ? pro.ProjectCode : "",
StartDate = pro != null ? pro.StartDate : null,
ProjectState = pro != null ? pro.ProjectState : "",
Relate = pro != null && pro.MasterSysId != null ? 1 : 2,
RelateName = pro != null && pro.MasterSysId != null ? "已关联" : "未关联",
UseId = use != null ? use.Id : null,
//Use = use == null ? "" : (use != null && use.Is_use == true) ? "已使用" : "未使用",
ReasonType = use != null ? use.ReasonType : "",
Reason = use != null ? use.Reason : "",
//Situation = use != null ? use.Situation : "",
//Remark = use != null ? use.Remark : "",
}).ToList();
string startDate = this.txtStartTime.Text.Trim();
string endDate = this.txtEndTime.Text.Trim();
if (!string.IsNullOrWhiteSpace(startDate))
{
query = query.Where(x => Funs.GetNewDateTime(x.Start_date) >= Funs.GetNewDateTime(startDate)).ToList();
}
if (!string.IsNullOrWhiteSpace(endDate))
{
query = query.Where(x => Funs.GetNewDateTime(x.Start_date) <= Funs.GetNewDateTime(endDate)).ToList();
}
query = query.OrderByDescending(x => x.StartDate).ToList();
list.AddRange(query);
//// 获取施工中的项目
var getProjects = ProjectService.GetProjectWorkList();
getProjects = getProjects.Where(x => x.MasterSysId == null).OrderByDescending(x => x.StartDate).ToList();
foreach (var pro in getProjects)
{
list.Add(new MasterProjectDataInfo
{
Pid = $"|{pro.ProjectId}|",
Pro_id = "",
Pro_name = "",
Pro_code = "",
Start_date = "",
Con_mode_desc = "",
Pro_nature = "",
Pro_status = "",
Org_name = "",
Amount = "",
ProjectId = pro != null ? pro.ProjectId : null,
ProjectName = pro != null ? pro.ProjectName : "",
ProjectCode = pro != null ? pro.ProjectCode : "",
StartDate = pro != null ? pro.StartDate : null,
ProjectState = pro != null ? pro.ProjectState : "",
Relate = 3,
RelateName = "未对应",
UseId = null,
//Use = use == null ? "" : (use != null && use.Is_use == true) ? "已使用" : "未使用",
ReasonType = "",
Reason = "",
//Situation = use != null ? use.Situation : "",
//Remark = use != null ? use.Remark : "",
});
}
string proName = this.txtProName.Text.Trim();
string proCode = this.txtProCode.Text.Trim();
string projectName = this.txtProjectName.Text.Trim();
string projectCode = this.txtProjectCode.Text.Trim();
int relate = int.Parse(this.rblIsRelate.SelectedValue);
if (!string.IsNullOrEmpty(proName))
{
list = list.Where(x => x.Pro_name.Contains(proName)).ToList();
}
if (!string.IsNullOrEmpty(proCode))
{
list = list.Where(x => x.Pro_code.Contains(proCode)).ToList();
}
if (!string.IsNullOrEmpty(projectName))
{
list = list.Where(x => x.ProjectName.Contains(projectName)).ToList();
}
if (!string.IsNullOrEmpty(projectCode))
{
list = list.Where(x => x.ProjectCode.Contains(projectCode)).ToList();
}
if (relate > 0)
{
list = list.Where(x => x.Relate == relate).ToList();
}
DataTable tb = Funs.LINQToDataTable(list);
Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
//int masterNum = query.Count();
int masterNum = 0;
int relateNum = 0;
int allQhseNum = 0;
try
{
for (int i = 0; i < Grid1.Rows.Count; i++)
{
var mpCode = table.Rows[i]["Pro_code"].ToString().Trim();
var pCode = table.Rows[i]["ProjectCode"].ToString().Trim();
var relateStr = table.Rows[i]["RelateName"].ToString().Trim();
var reason = table.Rows[i]["Reason"].ToString().Trim();
if (Grid1.Rows[i].DataKeys[0] != null && relateStr == "未关联" && !string.IsNullOrWhiteSpace(reason))
{
Grid1.Rows[i].RowCssClass = "Pause";
}
if (relateStr == "已关联")
{
relateNum++;
}
if (!string.IsNullOrWhiteSpace(mpCode))
{
masterNum++;
}
if (!string.IsNullOrWhiteSpace(pCode))
{
allQhseNum++;
}
}
}
catch (Exception ex) { }
JObject summary = new JObject();
summary.Add("tfNumber", "合计");
//summary.Add("Pro_name", masterNum);
//summary.Add("ProjectName", allQhseNum);
//summary.Add("RelateName", $"已关联:{relateNum}");
summary.Add("Pro_name", $"主数据(已关联/总数):{relateNum}/{masterNum}");
summary.Add("ProjectName", $"QHSE(已关联/总数):{relateNum}/{allQhseNum}");
Grid1.SummaryData = summary;
}
/// <summary>
/// 合同额(亿)
/// </summary>
/// <param name="Ori_amt">合同含税金额原始存档(元)</param>
/// <param name="Amt_add">增补合同本币含税金额(元)</param>
/// <returns></returns>
protected string ConvertAmount(decimal? Ori_amt, decimal? Amt_add)
{
string result = string.Empty;
Ori_amt = Ori_amt == null ? 0 : Ori_amt;
Amt_add = Amt_add == null ? 0 : Amt_add;
decimal? all = Amt_add + Ori_amt;
if (all != null)
{
double amount = all == null ? 0 : (Math.Round((double)(all / 100000000m), 2));
result = amount.ToString();
}
return result;
}
/// <summary>
/// 项目状态
/// </summary>
/// <param name="addType"></param>
/// <returns></returns>
protected string ConvertProjectState(object state)
{
string result = string.Empty;
string stateStr = state.ToString();
if (state != null && !string.IsNullOrWhiteSpace(stateStr))
{
result = stateStr == "2" ? "暂停中" : stateStr == "3" ? "已完工" : "施工中";
}
return result;
}
#endregion
#region Grid
protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
{
EditData(sender, e);
}
/// <summary>
/// 编辑数据方法
/// </summary>
private void EditData(object sender, GridRowClickEventArgs e)
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请至少选择一条记录", MessageBoxIcon.Warning);
return;
}
var pId = Grid1.SelectedRowID;
string pro_id = pId.Split('|')[0];
string projectId = pId.Split('|')[1];
string useId = pId.Split('|')[2];
var obj = Grid1.SelectedRow.Values;
string num = obj[0].ToString();
string pro_name = obj[2].ToString();
string pro_code = obj[3].ToString();
string startdate = obj[7].ToString();
string prostatus = obj[9].ToString();
string projectName = obj[11].ToString();
string projectCode = obj[12].ToString();
string startDate = obj[13].ToString();
string lblState = (Grid1.SelectedRow.FindControl("lblState") as AspNet.Label).Text;
if (!string.IsNullOrWhiteSpace(pro_id))
{
var masterUsage = Funs.DB.Project_MasterDataUsage.Where(x => x.Pro_id == pro_id).FirstOrDefault();
if (masterUsage != null)
{
useId = masterUsage.Id;
}
else
{
useId = SQLHelper.GetNewID(typeof(Model.Project_MasterDataUsage));
Model.Project_MasterDataUsage model = new Model.Project_MasterDataUsage();
model.Id = useId;
model.Pro_id = pro_id;
model.Pro_code = pro_code;
model.Pro_name = pro_name;
model.Is_relate = !string.IsNullOrWhiteSpace(projectId);
model.Is_use = !string.IsNullOrWhiteSpace(projectId);
model.Projectid = projectId;
model.Projectcode = projectName;
model.Projectname = projectCode;
model.Create_user = this.CurrUser.UserName;
model.Create_date = DateTime.Now;
ProjectMasterDataUsageService.AddProjectMasterDataUsage(model);
}
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("MasterProjectDataUsage.aspx?UseId={0}", useId)));
//PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("MasterProjectDataUsage.aspx?UseId={0}&ProId={1}", useId, pro_id)));
}
}
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
this.BindGrid();
}
protected void TextBox_TextChanged(object sender, EventArgs e)
{
this.BindGrid();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
BindGrid();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
BindGrid();
}
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
BindGrid();
}
#endregion
#region
/// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("企业主数据与QHSE系统项目建立一览表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.Grid1.PageSize = this.Grid1.RecordCount;
this.BindGrid();
Response.Write(GetGridMultiHeaderTableHtml(Grid1));
//Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
#endregion
#endregion
#region QHSE在建项目使用情况
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid2()
{
var db = Funs.DB;
//// 获取施工中的项目
var getProjects = ProjectService.GetProjectWorkList();
string projectName = this.txtProjectName2.Text.Trim();
string projectCode = this.txtProjectCode2.Text.Trim();
int relate = int.Parse(this.rblIsRelate.SelectedValue);
var list = new List<QHSEProjectDataInfo>();
if (!string.IsNullOrEmpty(projectName))
{
getProjects = getProjects.Where(x => x.ProjectName.Contains(projectName)).ToList();
}
if (!string.IsNullOrEmpty(projectCode))
{
getProjects = getProjects.Where(x => x.ProjectCode.Contains(projectCode)).ToList();
}
string startDate = this.txtStartTime2.Text.Trim();
string endDate = this.txtEndTime2.Text.Trim();
if (!string.IsNullOrWhiteSpace(startDate))
{
getProjects = getProjects.Where(x => x.StartDate >= Funs.GetNewDateTime(startDate)).ToList();
}
if (!string.IsNullOrWhiteSpace(endDate))
{
getProjects = getProjects.Where(x => x.StartDate <= Funs.GetNewDateTime(endDate)).ToList();
}
var dateNow = DateTime.Now.Date;//现在
var dateMonthAgo = dateNow.AddMonths(-1);//一个月前
var datas = (from x in db.Project_HSSEData_HSSE
where x.ReportDate == dateNow || x.ReportDate == dateMonthAgo
select new QHSEProjectHSSEData
{
ProjectId = x.ProjectId,
ReportDate = x.ReportDate,
DataMetricsSum = (x.JoinConstructionPersonNum ?? 0) + (x.GeneralClosedNum ?? 0) + (x.GeneralNotClosedNum ?? 0) + (x.SafeWorkingHour ?? 0)
}).ToList();
foreach (var pro in getProjects)
{
string result = "正常";
var nowData = datas.Where(x => x.ProjectId == pro.ProjectId && x.ReportDate == dateNow).FirstOrDefault();
var monthAgoData = datas.Where(x => x.ProjectId == pro.ProjectId && x.ReportDate == dateMonthAgo).FirstOrDefault();
if (nowData != null && monthAgoData != null)
{//两个时间点都有指标数据
if (nowData.DataMetricsSum == monthAgoData.DataMetricsSum)
{
result = "异常";
}
}
//else if (nowData != null)
//{//现在有指标数据,一个月前没有
// result = "正常";
//}
//else if (monthAgoData != null)
//{//现在没有指标数据,一个月前有
// result = "正常";
//}
list.Add(new QHSEProjectDataInfo
{
ProjectId = pro.ProjectId,
ProjectName = pro.ProjectName,
ShortName = pro.ShortName,
ProjectCode = pro.ProjectCode,
StartDate = pro.StartDate,
EndDate = pro.EndDate,
ProjectState = pro.ProjectState,
Usage = result
});
}
DataTable tb = Funs.LINQToDataTable(list);
Grid2.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid2, tb);
Grid2.DataSource = table;
Grid2.DataBind();
int exNum = 0;
int allQhseNum = 0;
//int allQhseNum = list.Count();
try
{
for (int i = 0; i < Grid2.Rows.Count; i++)
{
allQhseNum++;
var usage = table.Rows[i]["Usage"].ToString().Trim();
if (usage == "异常")
{
Grid2.Rows[i].RowCssClass = "Pause";
exNum++;
}
}
}
catch (Exception ex) { }
JObject summary = new JObject();
summary.Add("tfNumber", "合计");
summary.Add("ProjectCode", allQhseNum);
summary.Add("Usage", $"异常:{exNum}");
Grid2.SummaryData = summary;
}
protected void TextBox_TextChanged2(object sender, EventArgs e)
{
this.BindGrid2();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid2_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid2();
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize2_SelectedIndexChanged(object sender, EventArgs e)
{
Grid2.PageSize = Convert.ToInt32(ddlPageSize2.SelectedValue);
this.BindGrid2();
}
protected void Grid2_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
this.BindGrid2();
}
#region
/// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click2(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("企业QHSE项目使用情况一览表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.Grid2.PageSize = this.Grid2.RecordCount;
this.BindGrid2();
Response.Write(GetGridMultiHeaderTableHtml(Grid2));
//Response.Write(GetGridTableHtml(Grid2));
Response.End();
}
#endregion
#endregion
}
}
@@ -0,0 +1,332 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ProjectData
{
public partial class MasterProjectData
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// TabStrip1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TabStrip TabStrip1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProCode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProCode;
/// <summary>
/// txtProName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProName;
/// <summary>
/// txtStartTime 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtStartTime;
/// <summary>
/// Label5 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label Label5;
/// <summary>
/// txtEndTime 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtEndTime;
/// <summary>
/// rblIsRelate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RadioButtonList rblIsRelate;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// txtProjectCode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectCode;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// lblState 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblState;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Grid2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid2;
/// <summary>
/// Toolbar3 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar3;
/// <summary>
/// txtProjectCode2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectCode2;
/// <summary>
/// txtProjectName2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName2;
/// <summary>
/// txtStartTime2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtStartTime2;
/// <summary>
/// Label1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label Label1;
/// <summary>
/// txtEndTime2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtEndTime2;
/// <summary>
/// btnOut2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut2;
/// <summary>
/// lblPageIndex 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblPageIndex;
/// <summary>
/// lblStatus 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblStatus;
/// <summary>
/// ToolbarSeparator2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator2;
/// <summary>
/// ToolbarText2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText2;
/// <summary>
/// ddlPageSize2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize2;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}
@@ -0,0 +1,180 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MasterProjectDataUsage.aspx.cs" Inherits="FineUIPro.Web.ProjectData.MasterProjectDataUsage" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>质量巡检</title>
<link href="../../res/css/common.css" rel="stylesheet" type="text/css" />
<style type="text/css">
.labcenter {
text-align: center;
}
.f-grid-row .f-grid-cell-inner {
white-space: normal;
word-break: break-all;
}
.f-grid-row.red {
background-color: #FF7575;
background-image: none;
}
.fontred {
color: #FF7575;
background-image: none;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="SimpleForm1" runat="server" />
<f:Form ID="SimpleForm1" ShowBorder="false" ShowHeader="false" AutoScroll="true"
BodyPadding="10px" runat="server" RedStarPosition="BeforeText" LabelAlign="Right">
<Rows>
<f:FormRow>
<Items>
<f:TextBox ID="txtPro_code" runat="server" Label="主数据项目编号" LabelWidth="120px" LabelAlign="Right" Readonly="true">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtPro_name" runat="server" Label="主数据项目名称" LabelWidth="120px" LabelAlign="Right" Readonly="true">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtProjectcode" runat="server" Label="QHSE项目编号" LabelWidth="120px" LabelAlign="Right" Readonly="true">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtProjectname" runat="server" Label="QHSE项目名称" LabelWidth="120px" LabelAlign="Right" Readonly="true">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:RadioButtonList runat="server" ID="rblIsRelate" Label="是否关联使用" LabelWidth="120px" Readonly="true" Enabled="true" LabelAlign="Right">
<f:RadioItem Text="已关联" Value="1" />
<f:RadioItem Text="未关联" Value="0" />
</f:RadioButtonList>
</Items>
</f:FormRow>
<%--<f:FormRow>
<Items>
<f:RadioButtonList runat="server" ID="rblIsUse" Label="是否使用" LabelWidth="120px" LabelAlign="Right" ShowRedStar="true" AutoPostBack="true" OnSelectedIndexChanged="rblIsUse_SelectedIndexChanged">
<f:RadioItem Text="已使用" Value="1" />
<f:RadioItem Text="未使用" Value="0" />
</f:RadioButtonList>
</Items>
</f:FormRow>--%>
<f:FormRow>
<Items>
<f:RadioButtonList runat="server" ID="rblReasonType" Label="原因类型" LabelWidth="120px" LabelAlign="Right" Required="true" ShowRedStar="true">
<f:RadioItem Text="业主统筹" Value="业主统筹" />
<f:RadioItem Text="工期短/规模小" Value="工期短/规模小" />
<f:RadioItem Text="网络受限" Value="网络受限" />
<f:RadioItem Text="停缓建" Value="停缓建" />
<f:RadioItem Text="其他原因" Value="其他原因" />
</f:RadioButtonList>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextArea ID="txtReason" runat="server" Label="原因说明" EmptyText="请填写未关联使用集团主数据项目的原因情况说明(不超过100字)" LabelAlign="Right" LabelWidth="120px">
</f:TextArea>
<%--<f:TextArea ID="txtReason" runat="server" Label="原因说明" EmptyText="请填写原因说明" LabelAlign="Right" LabelWidth="120px" ShowRedStar="true">
</f:TextArea>--%>
</Items>
</f:FormRow>
<%--<f:FormRow>
<Items>
<f:TextArea ID="txtSituation" runat="server" Label="其他情况" EmptyText="请填写其他情况说明" LabelAlign="Right" LabelWidth="120px" ShowRedStar="true">
</f:TextArea>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextArea ID="txtRemark" runat="server" Label="备注" EmptyText="请填写备注" LabelAlign="Right" LabelWidth="120px" ShowRedStar="true">
</f:TextArea>
</Items>
</f:FormRow>--%>
<f:FormRow ID="Next">
<Items>
<f:RadioButtonList ID="cbNext" runat="server" Label="下一步" AutoPostBack="true" OnSelectedIndexChanged="cbNext_SelectedIndexChanged" LabelWidth="120px" >
<f:RadioItem Text="已完成" Value="0" Selected="true" />
<f:RadioItem Text="下一步审批人" Value="1" />
</f:RadioButtonList>
<f:Label runat="server" ID="lb"></f:Label>
</Items>
</f:FormRow>
<f:FormRow ID="HandleMan" Hidden="true">
<Items>
<f:DropDownBox runat="server" ID="drpHandleMan" EmptyText="请从下拉表格中选择" Label="审批人"
MatchFieldWidth="false" EnableMultiSelect="false" LabelWidth="120px">
<PopPanel>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" runat="server" DataIDField="UserId" DataTextField="UserName"
DataKeyNames="UserId" AllowSorting="true" SortField="UserName" SortDirection="ASC" EnableColumnLines="true"
Hidden="true" Width="800px" Height="520px" EnableMultiSelect="false" KeepCurrentSelection="true" PageSize="10000">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server">
<Items>
<f:TextBox runat="server" Label="查询" ID="txtUserName" EmptyText="输入查询条件" FocusOnPageLoad="true"
AutoPostBack="true" OnTextChanged="TextBox_TextChanged" Width="250px" LabelWidth="80px">
</f:TextBox>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:RowNumberField EnablePagingNumber="true" HeaderText="序号" Width="50px"
HeaderTextAlign="Center" TextAlign="Center" />
<f:RenderField Width="90px" ColumnID="UserCode" DataField="UserCode" SortField="UserCode"
FieldType="String" HeaderText="编号" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="UserName" DataField="UserName"
SortField="UserName" FieldType="String" HeaderText="姓名" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="RoleName" DataField="RoleName" ExpandUnusedSpace="true"
SortField="RoleName" FieldType="String" HeaderText="角色" HeaderTextAlign="Center"
TextAlign="Left">
</f:RenderField>
</Columns>
</f:Grid>
</PopPanel>
</f:DropDownBox>
</Items>
</f:FormRow>
<f:FormRow ID="Audit" Hidden="true">
<Items>
<f:RadioButtonList ID="rblHandleState" runat="server" Label="审核结果" LabelWidth="120px" >
<f:RadioItem Text="通过" Value="1" />
<f:RadioItem Text="不通过" Value="0" />
</f:RadioButtonList>
<f:Label runat="server" ID="Label1"></f:Label>
</Items>
</f:FormRow>
</Rows>
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Bottom" ToolbarAlign="Right" runat="server">
<Items>
<f:HiddenField ID="hfGpsAreId" runat="server"></f:HiddenField>
<f:ToolbarFill ID="ToolbarFill1" runat="server">
</f:ToolbarFill>
<f:Button ID="btnSave" OnClick="btnSave_Click" Icon="SystemSave" ValidateForms="SimpleForm1" runat="server" ToolTip="提交" Text="提交">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
</f:Form>
</form>
</body>
</html>
@@ -0,0 +1,261 @@
using BLL;
using Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
namespace FineUIPro.Web.ProjectData
{
public partial class MasterProjectDataUsage : PageBase
{
#region
/// <summary>
/// 主键
/// </summary>
public string UseId
{
get
{
return (string)ViewState["UseId"];
}
set
{
ViewState["UseId"] = value;
}
}
///// <summary>
///// 主数据项目Id
///// </summary>
//public string ProId
//{
// get
// {
// return (string)ViewState["ProId"];
// }
// set
// {
// ViewState["ProId"] = value;
// }
//}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
//this.ProId = Request.Params["ProId"];
this.UseId = Request.Params["UseId"];
BindGrid();
if (!string.IsNullOrEmpty(UseId))
{
var usage = ProjectMasterDataUsageService.GetProjectMasterDataUsageById(UseId);
//var usage = ProjectMasterDataUsageService.GetProjectMasterDataUsageByProId(ProId);
this.txtPro_code.Text = usage.Pro_code;
this.txtPro_name.Text = usage.Pro_name;
this.txtProjectcode.Text = usage.Projectcode;
this.txtProjectname.Text = usage.Projectname;
this.rblIsRelate.SelectedValue = usage.Is_relate ? "1" : "0";
//this.rblIsUse.SelectedValue = usage.Is_use ? "1" : "0";
this.rblReasonType.SelectedValue = usage.ReasonType;
this.txtReason.Text = usage.Reason;
//this.txtSituation.Text = usage.Situation;
//this.txtReason.Text = usage.Reason;
//this.txtRemark.Text = usage.Remark;
//this.rblIsUse.Readonly = true;
//if (this.rblIsRelate.SelectedValue == "0")
//{
// this.txtReason.Required = true;
// this.txtReason.ShowRedStar = true;
//}
//if (this.rblIsUse.SelectedValue == "1")
//{
// this.Next.Hidden = true;
//}
if (usage.Is_relate)
{
this.Next.Hidden = true;
this.Toolbar1.Hidden = true;
this.txtReason.Required = false;
this.txtReason.ShowRedStar = false;
}
else
{
this.Next.Hidden = false;
this.txtReason.Required = true;
this.txtReason.ShowRedStar = true;
}
string handleMan = this.drpHandleMan.Value;
if (!string.IsNullOrWhiteSpace(usage.HandleMan))
{
//this.cbNext.SelectedValue = "1";
this.drpHandleMan.Value = usage.HandleMan;
this.drpHandleMan.Text = usage.HandleManName;
bool isAuditer = usage.HandleMan == this.CurrUser.UserId || this.CurrUser.UserId == Const.hfnbdId || this.CurrUser.UserId == Const.sysglyId;
if (usage.HandleState == null)
{
if (isAuditer)
{
this.Audit.Hidden = false;
this.rblHandleState.SelectedValue = "1";
}
else
{
this.Next.Hidden = true;
this.Toolbar1.Hidden = true;
}
}
if (usage.HandleState != null)
{
this.Toolbar1.Hidden = true;
this.Next.Hidden = true;
}
}
}
}
}
#region
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
string unitId = CommonService.GetThisUnitId();
string strSql = @"SELECT UserId,UserName,UserCode,role.RoleName"
+ @" FROM Sys_User AS users LEFT JOIN Sys_Role AS role ON users.RoleId= role.RoleId"
+ @" WHERE users.IsPost=1 AND role.IsAuditFlow=1 AND users.IsOffice =1 AND UnitId ='" + unitId + "'";
List<SqlParameter> listStr = new List<SqlParameter>();
if (!string.IsNullOrEmpty(this.txtUserName.Text.Trim()))
{
strSql += " AND (UserName LIKE @Name OR UserCode LIKE @Name OR role.RoleName LIKE @Name)";
listStr.Add(new SqlParameter("@Name", "%" + this.txtUserName.Text.Trim() + "%"));
}
SqlParameter[] parameter = listStr.ToArray();
DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
Grid1.RecordCount = tb.Rows.Count;
var table = this.GetPagedDataTable(Grid1, tb);
Grid1.DataSource = table;
Grid1.DataBind();
}
#region
/// <summary>
/// 下拉框查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TextBox_TextChanged(object sender, EventArgs e)
{
this.drpHandleMan.Values = null;
this.BindGrid();
}
#endregion
#endregion
/// <summary>
/// 是否使用触发事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void rblIsUse_SelectedIndexChanged(object sender, EventArgs e)
{
//string isUse = this.rblIsUse.SelectedValue;
//if (isUse == "0")
//{
// this.txtReason.Required = true;
// this.txtReason.ShowRedStar = true;
// this.Next.Hidden = false;
//}
//else
//{
// this.Next.Hidden = true;
// this.txtReason.Required = false;
// this.txtReason.ShowRedStar = false;
//}
}
/// <summary>
/// 下一步触发事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void cbNext_SelectedIndexChanged(object sender, EventArgs e)
{
if (this.cbNext.SelectedValue == "1")
{
//this.Audit.Hidden = false;
this.HandleMan.Hidden = false;
this.drpHandleMan.Required = true;
this.drpHandleMan.ShowRedStar = true;
}
else
{
//this.Audit.Hidden = true;
this.HandleMan.Hidden = true;
this.drpHandleMan.Required = false;
this.drpHandleMan.ShowRedStar = false;
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
//var model = ProjectMasterDataUsageService.GetProjectMasterDataUsageByProId(ProId);
Project_MasterDataUsage usage = new Project_MasterDataUsage();
//usage.Id = model.Id;
usage.Id = this.UseId;
//usage.Is_use = this.rblIsUse.SelectedValue == "1";
usage.ReasonType = this.rblReasonType.SelectedValue;
usage.Reason = this.txtReason.Text.Trim();
//usage.Situation = this.txtSituation.Text.Trim();
//usage.Reason = this.txtReason.Text.Trim();
//usage.Remark = this.txtRemark.Text.Trim();
//usage.HandleMan = this.drpHandleMan.Value;
//usage.HandleManName = this.drpHandleMan.Text;
string handleMan = this.drpHandleMan.Value;
string handleManName = this.drpHandleMan.Text;
if (!string.IsNullOrWhiteSpace(handleMan))
{//
bool isAuditer = handleMan == this.CurrUser.UserId || this.CurrUser.UserId == Const.hfnbdId || this.CurrUser.UserId == Const.sysglyId;
usage.HandleMan = handleMan;
usage.HandleManName = handleManName;
if (isAuditer)
{
usage.HandleState = this.rblHandleState.SelectedValue;
//usage.HandleMan = this.CurrUser.UserId;
//usage.HandleManName = this.CurrUser.UserName;
usage.HandleDate = DateTime.Now;
}
}
else
{
usage.HandleState = this.rblHandleState.SelectedValue;
usage.HandleDate = DateTime.Now;
}
//if (this.cbNext.SelectedValue == "0")
//{
//}
ProjectMasterDataUsageService.UpdateProjectMasterDataUsage(usage);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
protected void WindowAtt_Close(object sender, WindowCloseEventArgs e)
{
}
}
}
@@ -0,0 +1,242 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ProjectData
{
public partial class MasterProjectDataUsage
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// txtPro_code 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtPro_code;
/// <summary>
/// txtPro_name 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtPro_name;
/// <summary>
/// txtProjectcode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectcode;
/// <summary>
/// txtProjectname 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectname;
/// <summary>
/// rblIsRelate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RadioButtonList rblIsRelate;
/// <summary>
/// rblReasonType 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RadioButtonList rblReasonType;
/// <summary>
/// txtReason 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextArea txtReason;
/// <summary>
/// Next 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.FormRow Next;
/// <summary>
/// cbNext 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RadioButtonList cbNext;
/// <summary>
/// lb 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lb;
/// <summary>
/// HandleMan 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.FormRow HandleMan;
/// <summary>
/// drpHandleMan 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownBox drpHandleMan;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtUserName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtUserName;
/// <summary>
/// Audit 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.FormRow Audit;
/// <summary>
/// rblHandleState 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RadioButtonList rblHandleState;
/// <summary>
/// Label1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label Label1;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// hfGpsAreId 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.HiddenField hfGpsAreId;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnSave 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnSave;
}
}
@@ -18,6 +18,60 @@
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DropDownBox runat="server" ID="drpMasterBox1" Label="集团主数据" EmptyText="请从下拉表格中选择集团主数据项目" DataControlID="Grid1"
EnableMultiSelect="false" MatchFieldWidth="false" ShowRedStar="true" Required="true" AutoPostBack="true" OnTextChanged="MasterData_Changed">
<PopPanel>
<f:Panel ID="Panel7" runat="server" BodyPadding="10px" Width="1280px" Height="520px" Hidden="true"
ShowBorder="true" ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Form ID="Form5" ShowBorder="False" ShowHeader="False" runat="server">
<Rows>
<f:FormRow>
<Items>
<f:TwinTriggerBox Width="200px" runat="server" EmptyText="按项目编号查找" ShowLabel="false" ID="ttbCodeSearch"
ShowTrigger1="false" OnTrigger1Click="ttbCodeSearch_Trigger1Click" OnTrigger2Click="ttbCodeSearch_Trigger2Click"
Trigger1Icon="Clear" Trigger2Icon="Search">
</f:TwinTriggerBox>
<f:TwinTriggerBox Width="400px" runat="server" EmptyText="按项目名称查找" ShowLabel="false" ID="ttbNameSearch"
ShowTrigger1="false" OnTrigger1Click="ttbNameSearch_Trigger1Click" OnTrigger2Click="ttbNameSearch_Trigger2Click"
Trigger1Icon="Clear" Trigger2Icon="Search">
</f:TwinTriggerBox>
</Items>
</f:FormRow>
</Rows>
</f:Form>
<f:Grid ID="Grid1" BoxFlex="1" DataKeyNames="Pro_id" DataIDField="Pro_id" DataTextField="Pro_name" EnableMultiSelect="false"
PageSize="10000" ShowBorder="true" ShowHeader="false" AllowPaging="false" IsDatabasePaging="false" runat="server" EnableCheckBoxSelect="true"
AllowSorting="false" SortField="Start_date" SortDirection="DESC" OnSort="Grid1_Sort">
<Columns>
<f:RowNumberField TextAlign="Center"/>
<f:BoundField Width="120px" DataField="Pro_code" HeaderText="项目编号"/>
<f:BoundField ExpandUnusedSpace="true" MinWidth="220px" DataField="Pro_name" HeaderText="项目名称"/>
<f:BoundField ExpandUnusedSpace="true" MinWidth="220px" DataField="Pro_short_name" HeaderText="项目简称"/>
<f:RenderField Width="110px" ColumnID="Start_date" DataField="Start_date" SortField="Start_date" FieldType="Date" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderText="开工日期" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="End_date" DataField="End_date" SortField="End_date" FieldType="Date" Renderer="Date" RendererArgument="yyyy-MM-dd" HeaderText="完工日期" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:BoundField ExpandUnusedSpace="true" MinWidth="160px" DataField="Address" HeaderText="详细地址"/>
<%--<f:BoundField ExpandUnusedSpace="true" MinWidth="110px" DataField="Pro_add_type" HeaderText="境内/境外" />--%>
<f:TemplateField ColumnID="tfProaddtype" Width="110px" HeaderText="境内/境外" HeaderTextAlign="Center" TextAlign="Center"
EnableLock="true" Locked="False">
<ItemTemplate>
<asp:Label ID="lblProaddtype" runat="server" Text='<%# ConvertProAddType(Eval("Pro_add_type")) %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
</Columns>
</f:Grid>
</Items>
</f:Panel>
</PopPanel>
</f:DropDownBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目名称" Required="true" MaxLength="100"
@@ -166,48 +220,6 @@
<f:Label runat="server"></f:Label>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DropDownBox runat="server" ID="drpMasterBox1" Label="主数据项目" EmptyText="请从下拉表格中选择项目" DataControlID="Grid1"
EnableMultiSelect="false" MatchFieldWidth="false">
<PopPanel>
<f:Panel ID="Panel7" runat="server" BodyPadding="10px" Width="820px" Height="420px" Hidden="true"
ShowBorder="true" ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Form ID="Form5" ShowBorder="False" ShowHeader="False" runat="server">
<Rows>
<f:FormRow>
<Items>
<f:TwinTriggerBox Width="200px" runat="server" EmptyText="按项目编号查找" ShowLabel="false" ID="ttbCodeSearch"
ShowTrigger1="false" OnTrigger1Click="ttbCodeSearch_Trigger1Click" OnTrigger2Click="ttbCodeSearch_Trigger2Click"
Trigger1Icon="Clear" Trigger2Icon="Search">
</f:TwinTriggerBox>
<f:TwinTriggerBox Width="400px" runat="server" EmptyText="按项目名称查找" ShowLabel="false" ID="ttbNameSearch"
ShowTrigger1="false" OnTrigger1Click="ttbNameSearch_Trigger1Click" OnTrigger2Click="ttbNameSearch_Trigger2Click"
Trigger1Icon="Clear" Trigger2Icon="Search">
</f:TwinTriggerBox>
</Items>
</f:FormRow>
</Rows>
</f:Form>
<f:Grid ID="Grid1" BoxFlex="1" DataKeyNames="SysId"
DataIDField="SysId" DataTextField="PrjName" EnableMultiSelect="false"
PageSize="1000" ShowBorder="true" ShowHeader="false"
AllowPaging="false" IsDatabasePaging="false" runat="server" EnableCheckBoxSelect="true"
AllowSorting="false" SortField="PrjName" SortDirection="ASC"
OnSort="Grid1_Sort">
<Columns>
<f:RowNumberField TextAlign="Center" />
<f:BoundField Width="200px" DataField="PrjCode" HeaderText="项目编号" />
<f:BoundField ExpandUnusedSpace="true" MinWidth="400px" DataField="PrjName" HeaderText="项目名称" />
</Columns>
</f:Grid>
</Items>
</f:Panel>
</PopPanel>
</f:DropDownBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DropDownList ID="drpSubjectUnit" runat="server" Label="总包单位"
@@ -6,6 +6,7 @@ using System.Text.RegularExpressions;
using System.Collections.Generic;
using System.Data;
using Model.Customization;
using AspNet = System.Web.UI.WebControls;
namespace FineUIPro.Web.ProjectData
{
@@ -210,20 +211,22 @@ namespace FineUIPro.Web.ProjectData
}
}
/// <summary>
/// 集团主数据项目下拉加载方法
/// </summary>
private void BindGrid()
{
var list = ProjectService.GetMasterProjectInfos();
var list = ProjectService.GetMasterProjectDataInfos();
string code = ttbCodeSearch.Text.Trim();
string name = ttbNameSearch.Text.Trim();
if (!string.IsNullOrWhiteSpace(code))
{
list = list.Where(x => x.PrjCode.Contains(code)).ToList();
list = list.Where(x => x.Pro_code.Contains(code)).ToList();
}
if (!string.IsNullOrWhiteSpace(name))
{
list = list.Where(x => x.PrjName.Contains(name)).ToList();
list = list.Where(x => x.Pro_name.Contains(name)).ToList();
}
// 1.设置总项数(特别注意:数据库分页一定要设置总记录数RecordCount
Grid1.RecordCount = list.Count();
// 2.获取当前分页数据
@@ -234,6 +237,7 @@ namespace FineUIPro.Web.ProjectData
Grid1.DataBind();
}
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
BindGrid();
@@ -299,9 +303,25 @@ namespace FineUIPro.Web.ProjectData
Alert.ShowInTop("坐标中不允许出现汉字,请输入正确的坐标!", MessageBoxIcon.Warning);
return;
}
string masterSysId = this.drpMasterBox1.Value;
if (!string.IsNullOrWhiteSpace(masterSysId))
{
var relatePro = Funs.DB.Base_Project.FirstOrDefault(x => x.MasterSysId == masterSysId && (x.ProjectId != this.ProjectId || (this.ProjectId == null && x.ProjectId != null)));
if (relatePro != null)
{
ShowNotify($"已存在关联此主数据的项目:({relatePro.ProjectCode}{relatePro.ProjectName}", MessageBoxIcon.Warning);
}
}
else
{
ShowNotify($"请选择关联集团主数据项目!", MessageBoxIcon.Warning);
return ;
}
this.SaveData();
}
/// <summary>
/// 判断字符串中是否包含中文
/// </summary>
@@ -891,6 +911,26 @@ namespace FineUIPro.Web.ProjectData
#endregion
protected void txtStartDate_Blur(object sender, EventArgs e)
{
ChangeDuration();
//var sDate = Funs.GetNewDateTime(this.txtStartDate.Text);
//var eDate = Funs.GetNewDateTime(this.txtEndDate.Text);
//if (sDate.HasValue && eDate.HasValue && eDate.Value > sDate.Value)
//{
// int m1 = sDate.Value.Year * 12 + sDate.Value.Month;
// int m2 = eDate.Value.Year * 12 + eDate.Value.Month;
// int a = m2 - m1;
// TimeSpan ts1 = new TimeSpan(sDate.Value.Ticks);
// TimeSpan ts2 = new TimeSpan(eDate.Value.AddMonths(0 - a).Ticks);
// TimeSpan ts = ts1.Subtract(ts2).Duration();
// this.txtDuration.Text = (Math.Round((ts.Days * 1.0 / 30), 1) + a).ToString();
//}
}
/// <summary>
/// 自动计算工期(月)
/// </summary>
private void ChangeDuration()
{
var sDate = Funs.GetNewDateTime(this.txtStartDate.Text);
var eDate = Funs.GetNewDateTime(this.txtEndDate.Text);
@@ -907,6 +947,7 @@ namespace FineUIPro.Web.ProjectData
}
}
protected void drpCountry_SelectedIndexChanged(object sender, EventArgs e)
{
this.drpProvince.Items.Clear();
@@ -990,5 +1031,85 @@ namespace FineUIPro.Web.ProjectData
}
#endregion
/// <summary>
/// 集团主数据境内外
/// </summary>
/// <param name="addType"></param>
/// <returns></returns>
protected string ConvertProAddType(object addType)
{
string result = string.Empty;
string addtypeStr = addType.ToString();
if (addType != null)
{
result = addtypeStr == "1" ? "境内" : addtypeStr == "2" ? "境外" : "";
}
return result;
}
#region
/// <summary>
/// 集团主数据选择触发事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void MasterData_Changed(object sender, EventArgs e)
{
string proName = this.drpMasterBox1.Text.Trim();
string masterSysId = Grid1.SelectedRowID;
if (!string.IsNullOrWhiteSpace(masterSysId))
{
var obj = Grid1.SelectedRow.Values;
string num = obj[0].ToString();
string code = obj[1].ToString();
string name = obj[2].ToString();
string shortname = obj[3].ToString();
string startdate = obj[4].ToString();
string enddate = obj[5].ToString();
string address = obj[6].ToString();
//string proaddtype = obj[7].ToString();
string proaddtype = (Grid1.SelectedRow.FindControl("lblProaddtype") as AspNet.Label).Text;
var relatePro = Funs.DB.Base_Project.FirstOrDefault(x => x.MasterSysId == masterSysId && (x.ProjectId != this.ProjectId || (this.ProjectId == null && x.ProjectId != null)));
if (relatePro != null)
{
ShowNotify($"已存在关联此主数据的项目:({relatePro.ProjectCode}{relatePro.ProjectName}", MessageBoxIcon.Warning);
}
var existPro = Funs.DB.Base_Project.FirstOrDefault(x => (x.ProjectName == name || x.ProjectName == code) && (x.ProjectId != this.ProjectId || (this.ProjectId == null && x.ProjectId != null)));
if (existPro != null)
{
ShowNotify($"已存在相同名称、编号的项目:({relatePro.ProjectCode}{relatePro.ProjectName}", MessageBoxIcon.Warning);
}
this.txtProjectName.Text = name;
this.txtProjectCode.Text = code;
if (!string.IsNullOrWhiteSpace(shortname))
{
this.txtShortName.Text = shortname;
}
if (!string.IsNullOrWhiteSpace(address))
{
this.txtProjectAddress.Text = address;
}
if (!string.IsNullOrWhiteSpace(startdate))
{
this.txtStartDate.Text = startdate;
}
if (!string.IsNullOrWhiteSpace(enddate))
{
this.txtEndDate.Text = enddate;
ChangeDuration();
}
if (proaddtype == "境外")
{
this.ckbIsForeign.Checked = true;
}
}
}
#endregion
}
}
+371 -362
View File
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
// <auto-generated>
// This code was generated by a tool.
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ProjectData
@@ -15,479 +15,488 @@ namespace FineUIPro.Web.ProjectData
{
/// <summary>
/// form1 控件。
/// form1 control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// PageManager1 control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// SimpleForm1 控件。
/// SimpleForm1 control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// txtProjecyId 控件。
/// txtProjecyId control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextBox txtProjecyId;
/// <summary>
/// txtProjectName 控件。
/// drpMasterBox1 control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// drpProjectAttribute 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectAttribute;
/// <summary>
/// txtProjectCode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectCode;
/// <summary>
/// txtShortName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtShortName;
/// <summary>
/// drpProjectType 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectType;
/// <summary>
/// drpProjectState 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectState;
/// <summary>
/// drpProjectState2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectState2;
/// <summary>
/// drpProjectNature 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectNature;
/// <summary>
/// txtStartDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtStartDate;
/// <summary>
/// txtEndDate 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DatePicker txtEndDate;
/// <summary>
/// txtContractNo 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtContractNo;
/// <summary>
/// txtDuration 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtDuration;
/// <summary>
/// drpProjectManager 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectManager;
/// <summary>
/// drpConstructionManager 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpConstructionManager;
/// <summary>
/// drpQAManager 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpQAManager;
/// <summary>
/// drpHSSEManager 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpHSSEManager;
/// <summary>
/// drpDriveManager 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpDriveManager;
/// <summary>
/// txtProjectAddress 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectAddress;
/// <summary>
/// drpUnit 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpUnit;
/// <summary>
/// ckbIsForeign 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox ckbIsForeign;
/// <summary>
/// txtWorkRange 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextArea txtWorkRange;
/// <summary>
/// txtRemark 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextArea txtRemark;
/// <summary>
/// txtProjectInsurance 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextArea txtProjectInsurance;
/// <summary>
/// txtProjectMoney 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtProjectMoney;
/// <summary>
/// txtConstructionMoney 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtConstructionMoney;
/// <summary>
/// txtTelephone 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtTelephone;
/// <summary>
/// drpCountry 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpCountry;
/// <summary>
/// drpProvince 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpProvince;
/// <summary>
/// txtCity 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtCity;
/// <summary>
/// txtMapCoordinates 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtMapCoordinates;
/// <summary>
/// bottomPanel 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ContentPanel bottomPanel;
/// <summary>
/// txtEnglishRemark 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtEnglishRemark;
/// <summary>
/// txtProgress 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.NumberBox txtProgress;
/// <summary>
/// drpMasterBox1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownBox drpMasterBox1;
/// <summary>
/// Panel7 控件。
/// Panel7 control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.Panel Panel7;
/// <summary>
/// Form5 控件。
/// Form5 control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.Form Form5;
/// <summary>
/// ttbCodeSearch 控件。
/// ttbCodeSearch control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TwinTriggerBox ttbCodeSearch;
/// <summary>
/// ttbNameSearch 控件。
/// ttbNameSearch control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TwinTriggerBox ttbNameSearch;
/// <summary>
/// Grid1 控件。
/// Grid1 control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// drpSubjectUnit 控件。
/// lblProaddtype control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblProaddtype;
/// <summary>
/// txtProjectName control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// drpProjectAttribute control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectAttribute;
/// <summary>
/// txtProjectCode control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextBox txtProjectCode;
/// <summary>
/// txtShortName control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextBox txtShortName;
/// <summary>
/// drpProjectType control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectType;
/// <summary>
/// drpProjectState control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectState;
/// <summary>
/// drpProjectState2 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectState2;
/// <summary>
/// drpProjectNature control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectNature;
/// <summary>
/// txtStartDate control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DatePicker txtStartDate;
/// <summary>
/// txtEndDate control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DatePicker txtEndDate;
/// <summary>
/// txtContractNo control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextBox txtContractNo;
/// <summary>
/// txtDuration control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.NumberBox txtDuration;
/// <summary>
/// drpProjectManager control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpProjectManager;
/// <summary>
/// drpConstructionManager control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpConstructionManager;
/// <summary>
/// drpQAManager control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpQAManager;
/// <summary>
/// drpHSSEManager control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpHSSEManager;
/// <summary>
/// drpDriveManager control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpDriveManager;
/// <summary>
/// txtProjectAddress control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextBox txtProjectAddress;
/// <summary>
/// drpUnit control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpUnit;
/// <summary>
/// ckbIsForeign control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.CheckBox ckbIsForeign;
/// <summary>
/// txtWorkRange control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextArea txtWorkRange;
/// <summary>
/// txtRemark control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextArea txtRemark;
/// <summary>
/// txtProjectInsurance control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextArea txtProjectInsurance;
/// <summary>
/// txtProjectMoney control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.NumberBox txtProjectMoney;
/// <summary>
/// txtConstructionMoney control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.NumberBox txtConstructionMoney;
/// <summary>
/// txtTelephone control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextBox txtTelephone;
/// <summary>
/// drpCountry control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpCountry;
/// <summary>
/// drpProvince control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpProvince;
/// <summary>
/// txtCity control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextBox txtCity;
/// <summary>
/// txtMapCoordinates control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextBox txtMapCoordinates;
/// <summary>
/// bottomPanel control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.ContentPanel bottomPanel;
/// <summary>
/// txtEnglishRemark control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.TextBox txtEnglishRemark;
/// <summary>
/// txtProgress control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.NumberBox txtProgress;
/// <summary>
/// drpSubjectUnit control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpSubjectUnit;
/// <summary>
/// drpSubjectProject 控件。
/// drpSubjectProject control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.DropDownList drpSubjectProject;
/// <summary>
/// Toolbar1 控件。
/// Toolbar1 control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// ckIsUpTotalMonth 控件。
/// ckIsUpTotalMonth control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.CheckBox ckIsUpTotalMonth;
/// <summary>
/// btnAttachUrl 控件。
/// btnAttachUrl control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.Button btnAttachUrl;
/// <summary>
/// btnAttachUrl2 控件。
/// btnAttachUrl2 control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.Button btnAttachUrl2;
/// <summary>
/// btnSave 控件。
/// btnSave control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.Button btnSave;
/// <summary>
/// btnClose 控件。
/// btnClose control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.Button btnClose;
/// <summary>
/// hdCompileMan 控件。
/// hdCompileMan control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.HiddenField hdCompileMan;
/// <summary>
/// WindowAtt 控件。
/// WindowAtt control.
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::FineUIPro.Window WindowAtt;
}
+220
View File
@@ -1312,5 +1312,225 @@ namespace FineUIPro.Web
return ip;
}
/// <summary>
/// 多表头导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
public string GetGridMultiHeaderTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
//sb.Append("<tr>");
//foreach (GridColumn column in grid.Columns)
//{
// if (column.ColumnID != "ckbIsSelected" && column.ColumnID != "Punish" && column.ColumnID != "Del")
// {
// sb.AppendFormat("<td>{0}</td>", column.HeaderText);
// }
//}
//sb.Append("</tr>");
MultiHeaderTable mht = new MultiHeaderTable();
mht.ResolveMultiHeaderTable(grid.Columns);
foreach (List<object[]> rows in mht.MultiTable)
{
sb.Append("<tr>");
foreach (object[] cell in rows)
{
int rowspan = Convert.ToInt32(cell[0]);
int colspan = Convert.ToInt32(cell[1]);
GridColumn column = cell[2] as GridColumn;
if (column.Hidden == false)
{
sb.AppendFormat("<th{0}{1}{2}>{3}</th>",
rowspan != 1 ? " rowspan=\"" + rowspan + "\"" : "",
colspan != 1 ? " colspan=\"" + colspan + "\"" : "",
colspan != 1 ? " style=\"text-align:center;\"" : "",
column.HeaderText);
}
}
sb.Append("</tr>");
}
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
//if (row.Grid.gr.Hidden == false) {
foreach (GridColumn column in mht.Columns)
{
if (column.ColumnID != "ckbIsSelected" && column.ColumnID != "Punish" && column.ColumnID != "Del")
{
string html = row.Values[column.ColumnIndex].ToString();
if (column.ColumnID == "tfNumber")
{
html = (row.FindControl("lblNumber") as AspNet.Label).Text;
}
else if (column.ColumnID == "tfPageIndex")
{
html = (row.FindControl("lblPageIndex") as AspNet.Label).Text;
}
else if (column.ColumnID == "tfState")
{
html = (row.FindControl("lblState") as AspNet.Label).Text;
}
else if (column.ColumnID == "tfStatus")
{
html = (row.FindControl("lblStatus") as AspNet.Label).Text;
}
sb.AppendFormat("<td>{0}</td>", html);
}
}
//}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#region
/// <summary>
/// 处理多表头的类
/// </summary>
public class MultiHeaderTable
{
// 包含 rowspancolspan 的多表头,方便生成 HTML 的 table 标签
public List<List<object[]>> MultiTable = new List<List<object[]>>();
// 最终渲染的列数组
public List<GridColumn> Columns = new List<GridColumn>();
public void ResolveMultiHeaderTable(GridColumnCollection columns)
{
List<object[]> row = new List<object[]>();
foreach (GridColumn column in columns)
{
object[] cell = new object[4];
cell[0] = 1; // rowspan
cell[1] = 1; // colspan
cell[2] = column;
cell[3] = null;
row.Add(cell);
}
ResolveMultiTable(row, 0);
ResolveColumns(row);
}
private void ResolveColumns(List<object[]> row)
{
foreach (object[] cell in row)
{
GroupField groupField = cell[2] as GroupField;
if (groupField != null && groupField.Columns.Count > 0)
{
List<object[]> subrow = new List<object[]>();
foreach (GridColumn column in groupField.Columns)
{
subrow.Add(new object[]
{
1,
1,
column,
groupField
});
}
ResolveColumns(subrow);
}
else
{
Columns.Add(cell[2] as GridColumn);
}
}
}
private void ResolveMultiTable(List<object[]> row, int level)
{
List<object[]> nextrow = new List<object[]>();
foreach (object[] cell in row)
{
GroupField groupField = cell[2] as GroupField;
if (groupField != null && groupField.Columns.Count > 0)
{
// 如果当前列包含子列,则更改当前列的 colspan,以及增加父列(向上递归)的colspan
cell[1] = Convert.ToInt32(groupField.Columns.Count);
PlusColspan(level - 1, cell[3] as GridColumn, groupField.Columns.Count - 1);
foreach (GridColumn column in groupField.Columns)
{
nextrow.Add(new object[]
{
1,
1,
column,
groupField
});
}
}
}
MultiTable.Add(row);
// 如果当前下一行,则增加上一行(向上递归)中没有子列的列的 rowspan
if (nextrow.Count > 0)
{
PlusRowspan(level);
ResolveMultiTable(nextrow, level + 1);
}
}
private void PlusRowspan(int level)
{
if (level < 0)
{
return;
}
foreach (object[] cells in MultiTable[level])
{
GroupField groupField = cells[2] as GroupField;
if (groupField != null && groupField.Columns.Count > 0)
{
// ...
}
else
{
cells[0] = Convert.ToInt32(cells[0]) + 1;
}
}
PlusRowspan(level - 1);
}
private void PlusColspan(int level, GridColumn parent, int plusCount)
{
if (level < 0)
{
return;
}
foreach (object[] cells in MultiTable[level])
{
GridColumn column = cells[2] as GridColumn;
if (column == parent)
{
cells[1] = Convert.ToInt32(cells[1]) + plusCount;
PlusColspan(level - 1, cells[3] as GridColumn, plusCount);
}
}
}
}
#endregion
}
}