From e51547255abd99ee3405ec661f4a091ee6601756 Mon Sep 17 00:00:00 2001
From: wendy <408182087@qq.com>
Date: Wed, 17 Apr 2024 17:02:46 +0800
Subject: [PATCH] =?UTF-8?q?20240417=20=E5=9F=B9=E8=AE=AD=E8=AE=B0=E5=BD=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Comprehensive/TrainingRecordsService.cs | 11 +
SGGL/BLL/Common/Const.cs | 10 +
.../CQMS/Comprehensive/TrainingRecords.aspx | 99 +++-
.../Comprehensive/TrainingRecords.aspx.cs | 235 +++++++-
.../TrainingRecords.aspx.designer.cs | 153 +++++
.../Comprehensive/TrainingRecordsDataIn.aspx | 167 ++++++
.../TrainingRecordsDataIn.aspx.cs | 521 ++++++++++++++++++
.../TrainingRecordsDataIn.aspx.designer.cs | 267 +++++++++
.../TrainingRecordsDataInEdit.aspx | 66 +++
.../TrainingRecordsDataInEdit.aspx.cs | 175 ++++++
...TrainingRecordsDataInEdit.aspx.designer.cs | 150 +++++
.../Comprehensive/TrainingRecordsEdit.aspx | 62 +++
.../Comprehensive/TrainingRecordsEdit.aspx.cs | 118 ++++
.../TrainingRecordsEdit.aspx.designer.cs | 123 +++++
.../File/Excel/DataIn/培训记录导入模板.xlsx | Bin 0 -> 10425 bytes
SGGL/FineUIPro.Web/FineUIPro.Web.csproj | 24 +
SGGL/FineUIPro.Web/common/Menu_CQMS.xml | 1 +
SGGL/FineUIPro.Web/common/Menu_Personal.xml | 3 -
SGGL/FineUIPro.Web/common/Menu_TestRun.xml | 13 +-
SGGL/FineUIPro.Web/common/Menu_Transfer.xml | 18 -
SGGL/FineUIPro.Web/common/Menu_ZHGL.xml | 4 -
21 files changed, 2181 insertions(+), 39 deletions(-)
create mode 100644 SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx
create mode 100644 SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx.cs
create mode 100644 SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx.designer.cs
create mode 100644 SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx
create mode 100644 SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx.cs
create mode 100644 SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx.designer.cs
create mode 100644 SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx
create mode 100644 SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx.cs
create mode 100644 SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx.designer.cs
create mode 100644 SGGL/FineUIPro.Web/File/Excel/DataIn/培训记录导入模板.xlsx
diff --git a/SGGL/BLL/CQMS/Comprehensive/TrainingRecordsService.cs b/SGGL/BLL/CQMS/Comprehensive/TrainingRecordsService.cs
index f9f008b1..5131de34 100644
--- a/SGGL/BLL/CQMS/Comprehensive/TrainingRecordsService.cs
+++ b/SGGL/BLL/CQMS/Comprehensive/TrainingRecordsService.cs
@@ -21,6 +21,17 @@ namespace BLL
return Funs.DB.Comprehensive_TrainingRecords.FirstOrDefault(e => e.TrainingRecordsId == trainingRecordsId);
}
+ ///
+ /// 根据培训内容、专业获取培训记录
+ ///
+ ///
+ ///
+ ///
+ public static Model.Comprehensive_TrainingRecords GetTrainingRecordsByName(string trainingContents, string cNProfessionalId)
+ {
+ return Funs.DB.Comprehensive_TrainingRecords.FirstOrDefault(e => e.TrainingContents == trainingContents && e.CNProfessionalId == cNProfessionalId);
+ }
+
///
/// 添加培训记录
///
diff --git a/SGGL/BLL/Common/Const.cs b/SGGL/BLL/Common/Const.cs
index 6d133b12..ff6456f1 100644
--- a/SGGL/BLL/Common/Const.cs
+++ b/SGGL/BLL/Common/Const.cs
@@ -3245,6 +3245,11 @@ namespace BLL
/// 资料收发文登记记录导入模板原始虚拟路径
///
public const string CQMS_DataReceivingDocTempUrl = "File\\Excel\\DataIn\\资料收发文登记记录导入模板.xlsx";
+
+ ///
+ /// 培训记录导入模板原始虚拟路径
+ ///
+ public const string CQMS_TrainingRecordsTemplateUrl= "File\\Excel\\DataIn\\培训记录导入模板.xlsx";
#endregion
#region 绩效考核模板文件路径
@@ -3844,6 +3849,11 @@ namespace BLL
///
public const string DesignDrawingsMenuId = "d8de4143-b680-44cf-9a78-acd3d49a8d00";
+ ///
+ /// 培训记录
+ ///
+ public const string TrainingRecordsMenuId = "CFD19410-DF80-494A-A2DD-D23A03438742";
+
///
/// 图纸会审管理
///
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx
index 660d8410..4b7d336d 100644
--- a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx
@@ -4,13 +4,106 @@
-
+
培训记录
+
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx.cs
index ffd327a9..27eeb729 100644
--- a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx.cs
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx.cs
@@ -1,5 +1,8 @@
-using System;
+using BLL;
+using System;
using System.Collections.Generic;
+using System.Data;
+using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
@@ -7,11 +10,237 @@ using System.Web.UI.WebControls;
namespace FineUIPro.Web.CQMS.Comprehensive
{
- public partial class TrainingRecords : System.Web.UI.Page
+ public partial class TrainingRecords : PageBase
{
+ #region 加载
+ ///
+ /// 加载页面
+ ///
+ ///
+ ///
protected void Page_Load(object sender, EventArgs e)
{
-
+ if (!IsPostBack)
+ {
+ GetButtonPower();
+ BLL.CNProfessionalService.InitCNProfessionalDownList(this.drpCNProfessionalId, true);
+ BindGrid();
+ }
}
+
+ ///
+ /// 数据绑定
+ ///
+ public void BindGrid()
+ {
+ string strSql = @"SELECT C.TrainingRecordsId,
+ C.ProjectId,
+ C.TrainingContents,
+ C.CNProfessionalId,
+ C.TrainingObject,
+ C.TrainingAddress,
+ C.Hours,
+ C.KeynoteSpeaker,
+ C.Remark,
+ CN.ProfessionalName"
+ + @" FROM Comprehensive_TrainingRecords C "
+ + @" LEFT JOIN Base_CNProfessional CN ON C.CNProfessionalId=CN.CNProfessionalId"
+ + @" WHERE C.ProjectId = @ProjectId";
+ List listStr = new List();
+ listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
+ if (drpCNProfessionalId.SelectedValue != BLL.Const._Null)
+ {
+ strSql += " AND C.CNProfessionalId=@CNProfessionalId";
+ listStr.Add(new SqlParameter("@CNProfessionalId", drpCNProfessionalId.SelectedValue));
+ }
+ if (!string.IsNullOrEmpty(this.txtTrainingContents.Text.Trim()))
+ {
+ strSql += " AND C.TrainingContents LIKE @TrainingContents";
+ listStr.Add(new SqlParameter("@TrainingContents", "%" + this.txtTrainingContents.Text.Trim() + "%"));
+ }
+ SqlParameter[] parameter = listStr.ToArray();
+ DataTable tb = SQLHelper.GetDataTableRunText(strSql, parameter);
+ Grid1.RecordCount = tb.Rows.Count;
+ //tb = GetFilteredTable(Grid1.FilteredData, tb);
+ var table = this.GetPagedDataTable(Grid1, tb);
+ Grid1.DataSource = table;
+ Grid1.DataBind();
+ }
+ #endregion
+
+ #region 查询
+ ///
+ /// 查询
+ ///
+ ///
+ ///
+ protected void btnSearch_Click(object sender, EventArgs e)
+ {
+ BindGrid();
+ }
+ #endregion
+
+ #region 分页、排序
+ ///
+ /// 分页下拉
+ ///
+ ///
+ ///
+ protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
+ {
+ Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
+ BindGrid();
+ }
+
+ ///
+ /// 排序
+ ///
+ ///
+ ///
+ protected void Grid1_Sort(object sender, GridSortEventArgs e)
+ {
+ Grid1.SortDirection = e.SortDirection;
+ Grid1.SortField = e.SortField;
+ BindGrid();
+ }
+
+ ///
+ /// 分页
+ ///
+ ///
+ ///
+ protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
+ {
+ BindGrid();
+ }
+ #endregion
+
+ #region 新增
+ ///
+ /// 新增按钮事件
+ ///
+ ///
+ ///
+ protected void btnNew_Click(object sender, EventArgs e)
+ {
+ PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("TrainingRecordsEdit.aspx", "编辑 - ")));
+ }
+ #endregion
+
+ #region 编辑
+ ///
+ /// 右键修改
+ ///
+ ///
+ ///
+ protected void btnMenuModify_Click(object sender, EventArgs e)
+ {
+ if (Grid1.SelectedRowIndexArray.Length == 0)
+ {
+ Alert.ShowInTop("请至少选择一条记录", MessageBoxIcon.Warning);
+ return;
+ }
+ PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("TrainingRecordsEdit.aspx?id={0}", Grid1.SelectedRowID, "编辑 - ")));
+ }
+
+ ///
+ /// Grid行双击事件
+ ///
+ ///
+ ///
+ protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
+ {
+ this.btnMenuModify_Click(sender, e);
+ }
+ #endregion
+
+ #region 删除
+ ///
+ /// 右键删除
+ ///
+ ///
+ ///
+ protected void btnMenuDel_Click(object sender, EventArgs e)
+ {
+ if (Grid1.SelectedRowIndexArray.Length > 0)
+ {
+ foreach (int rowIndex in Grid1.SelectedRowIndexArray)
+ {
+ string rowID = Grid1.DataKeys[rowIndex][0].ToString();
+ var trainingRecords = BLL.TrainingRecordsService.GetTrainingRecordsById(rowID);
+ if (trainingRecords != null)
+ {
+ BLL.TrainingRecordsService.DeleteTrainingRecordsById(rowID);
+ }
+ }
+ BindGrid();
+ ShowNotify("删除数据成功!", MessageBoxIcon.Success);
+ }
+ }
+ #endregion
+
+ #region 关闭弹出窗口
+ ///
+ /// 关闭弹出窗口
+ ///
+ ///
+ ///
+ protected void Window1_Close(object sender, WindowCloseEventArgs e)
+ {
+ BindGrid();
+ }
+ #endregion
+
+ #region 导入
+ ///
+ /// 导入按钮
+ ///
+ ///
+ ///
+ protected void btnImport_Click(object sender, EventArgs e)
+ {
+ PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("TrainingRecordsDataIn.aspx", "导入 - ")));
+ }
+ #endregion
+
+ #region 获取按钮权限
+ ///
+ /// 获取按钮权限
+ ///
+ ///
+ ///
+ private void GetButtonPower()
+ {
+ if (Request.Params["value"] == BLL.Const._Null)
+ {
+ return;
+ }
+ var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.TrainingRecordsMenuId);
+ if (buttonList.Count() > 0)
+ {
+ if (buttonList.Contains(BLL.Const.BtnAdd))
+ {
+ this.btnNew.Hidden = false;
+ }
+ if (buttonList.Contains(BLL.Const.BtnModify))
+ {
+ this.btnMenuModify.Hidden = false;
+ this.Grid1.EnableRowDoubleClickEvent = true;
+ }
+ else
+ {
+ this.Grid1.EnableRowDoubleClickEvent = false;
+ }
+ if (buttonList.Contains(BLL.Const.BtnDelete))
+ {
+ this.btnMenuDel.Hidden = false;
+ }
+ if (buttonList.Contains(BLL.Const.BtnSave))
+ {
+ this.btnImport.Hidden = false;
+ }
+ }
+ }
+ #endregion
}
}
\ No newline at end of file
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx.designer.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx.designer.cs
index ea703d60..52402bab 100644
--- a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx.designer.cs
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecords.aspx.designer.cs
@@ -20,5 +20,158 @@ namespace FineUIPro.Web.CQMS.Comprehensive {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
///
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
+
+ ///
+ /// PageManager1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.PageManager PageManager1;
+
+ ///
+ /// Panel1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Panel Panel1;
+
+ ///
+ /// Grid1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Grid Grid1;
+
+ ///
+ /// ToolSearch 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar ToolSearch;
+
+ ///
+ /// drpCNProfessionalId 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.DropDownList drpCNProfessionalId;
+
+ ///
+ /// txtTrainingContents 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtTrainingContents;
+
+ ///
+ /// btnSearch 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnSearch;
+
+ ///
+ /// btnNew 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnNew;
+
+ ///
+ /// btnImport 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnImport;
+
+ ///
+ /// lblPageIndex 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.Label lblPageIndex;
+
+ ///
+ /// ToolbarText1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.ToolbarText ToolbarText1;
+
+ ///
+ /// ddlPageSize 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.DropDownList ddlPageSize;
+
+ ///
+ /// Window1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Window Window1;
+
+ ///
+ /// Window2 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Window Window2;
+
+ ///
+ /// Menu1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Menu Menu1;
+
+ ///
+ /// btnMenuModify 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.MenuButton btnMenuModify;
+
+ ///
+ /// btnMenuDel 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.MenuButton btnMenuDel;
}
}
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx
new file mode 100644
index 00000000..b83bf5de
--- /dev/null
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx
@@ -0,0 +1,167 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TrainingRecordsDataIn.aspx.cs" Inherits="FineUIPro.Web.CQMS.Comprehensive.TrainingRecordsDataIn" %>
+
+
+
+
+
+
+ 导入培训记录
+
+
+
+
+
+
+
+
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx.cs
new file mode 100644
index 00000000..eb107868
--- /dev/null
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx.cs
@@ -0,0 +1,521 @@
+using BLL;
+using Model;
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Data.SqlClient;
+using System.IO;
+using System.Linq;
+using System.Threading;
+
+namespace FineUIPro.Web.CQMS.Comprehensive
+{
+ public partial class TrainingRecordsDataIn : PageBase
+ {
+ #region 定义项
+ ///
+ /// 上传预设的虚拟路径
+ ///
+ private string initPath = Const.ExcelUrl;
+
+ ///
+ /// 错误集合
+ ///
+ public static string errorInfos = string.Empty;
+
+ #endregion
+
+ #region 加载
+ ///
+ /// 加载页面
+ ///
+ ///
+ ///
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ if (!IsPostBack)
+ {
+ if (percent == null)
+ {
+ percent = new Dictionary();
+ }
+ this.id.Text = this.CurrUser.UserId;
+ this.ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
+ // 绑定表格
+ this.BindGrid();
+ }
+ else if (GetRequestEventArgument() == "reloadGrid")
+ {
+ BindGrid();
+ }
+ }
+ #endregion
+
+ #region 绑定数据
+ ///
+ /// 绑定数据
+ ///
+ private void BindGrid()
+ {
+ string strSql = @"SELECT TempId,ProjectId,UserId,Time,RowNo,ToopValue,Value1,Value2,Value3,Value4,Value5,Value6,Value7,Value8,Value9,Value10"
+ + @" ,Value11,Value12,Value13,Value14,Value15,Value16,Value17,Value18,Value19,Value20,Value21,Value22,Value23,Value24,Value25,Value26,Value27,Value28,Value29,Value30"
+ + @" ,Value31,Value32,Value33,Value34,Value35,Value36,Value37,Value38,Value39,Value40,Value41,Value42,Value43,Value44,Value45,Value46,Value47,Value48,Value49,Value50,ToopValue,Type"
+ + @" FROM Sys_DataInTemp "
+ + @" WHERE ProjectId=@ProjectId AND UserId=@UserId AND Type=@Type";
+ List listStr = new List();
+ listStr.Add(new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId));
+ listStr.Add(new SqlParameter("@UserId", this.CurrUser.UserId));
+ listStr.Add(new SqlParameter("@Type", "TrainingRecords"));//培训记录
+ 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();
+
+ var dataInTempAll = from x in Funs.DB.Sys_DataInTemp
+ where x.ProjectId == this.CurrUser.LoginProjectId && x.UserId == this.CurrUser.UserId && x.Type == "TrainingRecords"
+ select x;
+ for (int i = 0; i < Grid1.Rows.Count; i++)
+ {
+ var dataInTemp = dataInTempAll.FirstOrDefault(x => x.TempId == Grid1.Rows[i].DataKeys[0].ToString());
+ if (dataInTemp != null)
+ {
+ if (!string.IsNullOrEmpty(dataInTemp.ToopValue))
+ {
+ Grid1.Rows[i].RowCssClass = "red";
+ }
+ }
+ }
+ var errData = from x in dataInTempAll where x.ToopValue != null select x;
+ this.lbDataCout.Text = errData.Count().ToString();
+ }
+ #endregion
+
+ #region 双击事件
+ ///
+ /// Grid行双击事件
+ ///
+ ///
+ ///
+ protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
+ {
+ if (Grid1.SelectedRowIndexArray.Length == 0)
+ {
+ Alert.ShowInTop("请选择一条记录!", MessageBoxIcon.Warning);
+ return;
+ }
+ if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.TrainingRecordsMenuId, Const.BtnSave))
+ {
+ PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("TrainingRecordsDataInEdit.aspx?TempId={0}", Grid1.SelectedRowID, "维护 - ")));
+ }
+ else
+ {
+ ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
+ }
+ }
+ #endregion
+
+ #region 导入信息 维护
+ ///
+ /// 导入信息编辑
+ ///
+ ///
+ ///
+ protected void btnMenuEdit_Click(object sender, EventArgs e)
+ {
+ if (BLL.CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.TrainingRecordsMenuId, BLL.Const.BtnSave))
+ {
+ if (Grid1.SelectedRowIndexArray.Length == 0)
+ {
+ Alert.ShowInTop("请选择一条记录!", MessageBoxIcon.Warning);
+ return;
+ }
+ PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("TrainingRecordsDataInEdit.aspx?TempId={0}", Grid1.SelectedRowID, "维护 - ")));
+ }
+ else
+ {
+ ShowNotify("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
+ }
+ }
+
+ ///
+ /// 删除按钮
+ ///
+ ///
+ ///
+ protected void btnMenuDelete_Click(object sender, EventArgs e)
+ {
+ if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.TrainingRecordsMenuId, Const.BtnSave))
+ {
+ if (Grid1.SelectedRowIndexArray.Length == 0)
+ {
+ Alert.ShowInTop("请选择一条记录!", MessageBoxIcon.Warning);
+ return;
+ }
+ foreach (int rowIndex in Grid1.SelectedRowIndexArray)
+ {
+ string rowID = Grid1.DataKeys[rowIndex][0].ToString();
+ BLL.Sys_DataTempService.DeleteDataInTempByDataInTempID(rowID);
+ }
+ ShowNotify("删除成功!", MessageBoxIcon.Success);
+ this.BindGrid();
+ }
+ else
+ {
+ Alert.ShowInTop("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
+ return;
+ }
+ }
+ #endregion
+
+ #region 分页 排序
+ ///
+ /// 分页
+ ///
+ ///
+ ///
+ protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
+ {
+ BindGrid();
+ }
+
+ ///
+ /// 分页显示条数下拉框
+ ///
+ ///
+ ///
+ 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 删除所有数据事件
+ ///
+ /// 删除所有数据事件
+ ///
+ ///
+ ///
+ protected void btnAllDelete_Click(object sender, EventArgs e)
+ {
+ if (CommonService.GetAllButtonPowerList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, Const.TrainingRecordsMenuId, Const.BtnSave))
+ {
+ //先删除临时表中 该人员以前导入的数据
+ BLL.Sys_DataTempService.DeleteDataInTempByProjectIdUserId(this.CurrUser.LoginProjectId, this.CurrUser.UserId, "TrainingRecords");
+ this.BindGrid();
+ ShowNotify("删除成功!", MessageBoxIcon.Success);
+ this.lbDataCout.Text = string.Empty;
+ }
+ else
+ {
+ Alert.ShowInTop("您没有这个权限,请与管理员联系!", MessageBoxIcon.Warning);
+ return;
+ }
+ }
+ #endregion
+
+ #region 下载模板
+ ///
+ /// 下载模板
+ ///
+ ///
+ ///
+ protected void imgbtnUpload_Click(object sender, EventArgs e)
+ {
+ this.TemplateUpload(BLL.Const.CQMS_TrainingRecordsTemplateUrl);
+ }
+
+ protected void TemplateUpload(string initTemplatePath)
+ {
+ string rootPath = Server.MapPath("~/");
+ string uploadfilepath = rootPath + initTemplatePath;
+ string filePath = Const.CQMS_TrainingRecordsTemplateUrl;
+ string fileName = Path.GetFileName(filePath);
+ FileInfo info = new FileInfo(uploadfilepath);
+ long fileSize = info.Length;
+ Response.ClearContent();
+ Response.AddHeader("Content-Disposition", "attachment;filename=" + System.Web.HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8));
+ Response.ContentType = "excel/plain";
+ Response.ContentEncoding = System.Text.Encoding.UTF8;
+ Response.AddHeader("Content-Length", fileSize.ToString().Trim());
+ Response.TransmitFile(uploadfilepath, 0, fileSize);
+ Response.End();
+ }
+
+ ///
+ /// 导入说明
+ ///
+ ///
+ ///
+ //protected void lkAchievements_Click(object sender, EventArgs e)
+ //{
+ // this.TemplateUpload(Const.CQMS_DataReceivingDocTempUrl);
+ //}
+ #endregion
+
+ #region 进度条
+ public static Dictionary percent { get; set; }
+ public static Dictionary url { get; set; }
+
+ [System.Web.Services.WebMethod]
+ public static int getPercent(string id)
+ {
+ return percent[id];
+ }
+ #endregion
+
+ #region 文件上传
+ ///
+ /// 文件上传
+ ///
+ ///
+ ///
+ protected void imgbtnImport_Click(object sender, EventArgs e)
+ {
+ try
+ {
+ if (this.FileExcel.HasFile == false)
+ {
+ ShowNotify("请选择Excel文件!", MessageBoxIcon.Warning);
+ return;
+ }
+ string IsXls = Path.GetExtension(this.FileExcel.FileName).ToString().Trim().ToLower();
+ if (IsXls != ".xls" && IsXls != ".xlsx")
+ {
+ ShowNotify("只能选择Excel文件!", MessageBoxIcon.Warning);
+ return;
+ }
+ string rootPath = Server.MapPath("~/");
+ string initFullPath = rootPath + initPath;
+ if (!Directory.Exists(initFullPath))
+ {
+ Directory.CreateDirectory(initFullPath);
+ }
+ //指定上传文件名称
+ this.hdfileName.Text = BLL.Funs.GetNewFileName() + IsXls;
+ //上传文件路径
+ string filePath = initFullPath + this.hdfileName.Text;
+ //文件上传服务器
+ this.FileExcel.PostedFile.SaveAs(filePath);
+ //文件上传服务器后的名称
+ string fileName = rootPath + initPath + this.hdfileName.Text;
+ //读取Excel
+ DataSet ds = NPOIHelper.ExcelToDataSet(fileName, out errorInfos, true);
+ //验证Excel读取是否有误
+ if (!string.IsNullOrEmpty(errorInfos))
+ {
+ ShowNotify(errorInfos, MessageBoxIcon.Warning);
+ return;
+ }
+
+ if (ds.Tables.Count > 0)
+ {
+ for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
+ {
+ Sys_DataInTemp newDataInTemp = new Sys_DataInTemp();
+ newDataInTemp.TempId = SQLHelper.GetNewID(typeof(Model.Sys_DataInTemp));
+ newDataInTemp.ProjectId = this.CurrUser.LoginProjectId;
+ newDataInTemp.UserId = this.CurrUser.UserId;
+ newDataInTemp.Time = System.DateTime.Now;
+ newDataInTemp.Type = "TrainingRecords";
+ newDataInTemp.RowNo = i + 2;
+ newDataInTemp.Value1 = ds.Tables[0].Rows[i]["培训内容"].ToString().Trim();
+ newDataInTemp.Value2 = ds.Tables[0].Rows[i]["专业"].ToString().Trim();
+ newDataInTemp.Value3 = ds.Tables[0].Rows[i]["培训对象"].ToString().Trim();
+ newDataInTemp.Value4 = ds.Tables[0].Rows[i]["培训地点"].ToString().Trim();
+ newDataInTemp.Value5 = ds.Tables[0].Rows[i]["课时(小时)"].ToString().Trim();
+ newDataInTemp.Value6 = ds.Tables[0].Rows[i]["主讲人"].ToString().Trim();
+ newDataInTemp.Value7 = ds.Tables[0].Rows[i]["备注"].ToString().Trim();
+
+ BLL.Sys_DataTempService.AddDataInTemp(newDataInTemp);
+ }
+ this.BindGrid();
+ ShowNotify("数据已导入临时表!", MessageBoxIcon.Success);
+ }
+ else
+ {
+ ShowNotify("无数据!", MessageBoxIcon.Warning);
+ return;
+ }
+ }
+ catch (Exception ex)
+ {
+ Alert.ShowInTop("'" + ex.Message + "'", MessageBoxIcon.Warning);
+ }
+ }
+ #endregion
+
+ #region 保存审核事件
+ ///
+ /// 保存审核事件
+ ///
+ ///
+ ///
+ protected void btnSave_Click(object sender, EventArgs e)
+ {
+ Thread t = new Thread(new ThreadStart(() => { btnSaveMethod(this.CurrUser.LoginProjectId, this.CurrUser.UserId); }));
+ t.Start();
+ if (percent.ContainsKey(this.CurrUser.UserId))
+ {
+ percent[CurrUser.UserId] = 0;
+ }
+ else
+ {
+ percent.Add(CurrUser.UserId, 0);
+ }
+ PageContext.RegisterStartupScript("printX()");
+ }
+ protected void btnRefresh_Click(object sender, EventArgs e)
+ {
+ this.BindGrid();
+ }
+
+ protected void btnSaveMethod(string LoginProjectId, string UserId)
+ {
+ var cNProfessionals = from x in Funs.DB.Base_CNProfessional select x;//专业
+
+ var dataInTemp = from x in Funs.DB.Sys_DataInTemp
+ where x.ProjectId == LoginProjectId && x.UserId == UserId && x.Type == "TrainingRecords"
+ select x;
+ int okCount = 0;
+ int i = 0;
+ int ir = dataInTemp.Count();
+ string erreMessage = "";
+ foreach (var tempData in dataInTemp)
+ {
+ if (tempData != null)
+ {
+ i++;
+ percent[UserId] = (int)(100 * i / ir);
+ string errInfo = string.Empty;
+ var isExitValue = Funs.DB.Comprehensive_TrainingRecords.FirstOrDefault(x => x.ProjectId == this.CurrUser.LoginProjectId && x.TrainingContents == tempData.Value1
+ && x.CNProfessionalId == tempData.Value2);
+ if (isExitValue == null || this.ckUpdate.Checked)
+ {
+ Model.Comprehensive_TrainingRecords newData = new Model.Comprehensive_TrainingRecords();
+ if (!string.IsNullOrEmpty(tempData.Value1.Trim()))
+ {
+ newData.TrainingContents = tempData.Value1.Trim();
+ }
+ else
+ {
+ errInfo += "培训内容为必填项;";
+ }
+
+ if (!string.IsNullOrEmpty(tempData.Value2.Trim()))
+ {
+ var professional = cNProfessionals.FirstOrDefault(e => e.ProfessionalName == tempData.Value2.Trim());
+ if (professional != null)
+ {
+ newData.CNProfessionalId = professional.CNProfessionalId;
+ }
+ else
+ {
+ errInfo += "专业不存在;";
+ }
+ }
+ else
+ {
+ errInfo += "专业为必填项;";
+ }
+ if (!string.IsNullOrEmpty(tempData.Value3.Trim()))
+ {
+ newData.TrainingObject = tempData.Value3.Trim();
+ }
+ else
+ {
+ errInfo += "培训对象为必填项;";
+ }
+ if (!string.IsNullOrEmpty(tempData.Value4.Trim()))
+ {
+ newData.TrainingAddress = tempData.Value4.Trim();
+ }
+ else
+ {
+ errInfo += "培训地点为必填项;";
+ }
+ if (!string.IsNullOrEmpty(tempData.Value5.Trim()))
+ {
+ try
+ {
+ newData.Hours = Funs.GetNewDecimal(tempData.Value5.Trim());
+ }
+ catch (Exception)
+ {
+ errInfo += "课时(小时)格式错误;";
+ }
+ }
+ if (!string.IsNullOrEmpty(tempData.Value6.Trim()))
+ {
+ newData.KeynoteSpeaker = tempData.Value6.Trim();
+ }
+ if (!string.IsNullOrEmpty(tempData.Value7.Trim()))
+ {
+ newData.Remark = tempData.Value7.Trim();
+ }
+ if (string.IsNullOrEmpty(errInfo)) ////所有信息正确的话 这插入管线焊口
+ {
+ newData.ProjectId = this.CurrUser.LoginProjectId;
+
+ var data = BLL.TrainingRecordsService.GetTrainingRecordsByName(newData.TrainingContents, newData.CNProfessionalId);
+ if (data == null)
+ {
+ newData.TrainingRecordsId = SQLHelper.GetNewID(typeof(Model.Comprehensive_TrainingRecords));
+ BLL.TrainingRecordsService.AddTrainingRecords(newData);
+ }
+ else
+ {
+ newData.TrainingRecordsId = data.TrainingRecordsId;
+ BLL.TrainingRecordsService.UpdateTrainingRecords(newData);
+ }
+
+ BLL.Sys_DataTempService.DeleteDataInTempByDataInTempID(tempData.TempId);
+ okCount++;
+ }
+ }
+ else
+ {
+ errInfo = "该条记录已存在于培训记录表中。";
+ }
+
+ if (!string.IsNullOrEmpty(errInfo))
+ {
+ tempData.ToopValue = errInfo;
+ BLL.Sys_DataTempService.UpdateDataInTemp(tempData);
+ erreMessage += errInfo + ";";
+ }
+ }
+ }
+ }
+ #endregion
+
+ #region 导出按钮
+ /// 导出按钮
+ ///
+ ///
+ ///
+ protected void btnOut_Click(object sender, EventArgs e)
+ {
+ Response.ClearContent();
+ string filename = Funs.GetNewFileName();
+ Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("培训记录导入模板" + filename, System.Text.Encoding.UTF8) + ".xlsx");
+ Response.ContentType = "application/excel";
+ Response.ContentEncoding = System.Text.Encoding.UTF8;
+ Response.Write(GetGridTableHtml(Grid1));
+ Response.End();
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx.designer.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx.designer.cs
new file mode 100644
index 00000000..e30ff7cd
--- /dev/null
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataIn.aspx.designer.cs
@@ -0,0 +1,267 @@
+//------------------------------------------------------------------------------
+// <自动生成>
+// 此代码由工具生成。
+//
+// 对此文件的更改可能导致不正确的行为,如果
+// 重新生成代码,则所做更改将丢失。
+// 自动生成>
+//------------------------------------------------------------------------------
+
+namespace FineUIPro.Web.CQMS.Comprehensive {
+
+
+ public partial class TrainingRecordsDataIn {
+
+ ///
+ /// form1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlForm form1;
+
+ ///
+ /// PageManager1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.PageManager PageManager1;
+
+ ///
+ /// id 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.HiddenField id;
+
+ ///
+ /// Panel1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Panel Panel1;
+
+ ///
+ /// Toolbar1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar Toolbar1;
+
+ ///
+ /// hdfileName 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.HiddenField hdfileName;
+
+ ///
+ /// FileExcel 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.FileUpload FileExcel;
+
+ ///
+ /// imgbtnImport 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button imgbtnImport;
+
+ ///
+ /// ToolbarFill1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.ToolbarFill ToolbarFill1;
+
+ ///
+ /// ckUpdate 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.CheckBox ckUpdate;
+
+ ///
+ /// btnSave 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnSave;
+
+ ///
+ /// btnRefresh 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnRefresh;
+
+ ///
+ /// btnAllDelete 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnAllDelete;
+
+ ///
+ /// btnOut 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnOut;
+
+ ///
+ /// imgbtnUpload 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button imgbtnUpload;
+
+ ///
+ /// Grid1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Grid Grid1;
+
+ ///
+ /// lblPageIndex 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.WebControls.Label lblPageIndex;
+
+ ///
+ /// ToolbarSeparator1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
+
+ ///
+ /// ToolbarText1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.ToolbarText ToolbarText1;
+
+ ///
+ /// ddlPageSize 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.DropDownList ddlPageSize;
+
+ ///
+ /// lbDataCout 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Label lbDataCout;
+
+ ///
+ /// Window1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Window Window1;
+
+ ///
+ /// Window2 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Window Window2;
+
+ ///
+ /// ContentPanel3 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.ContentPanel ContentPanel3;
+
+ ///
+ /// Menu1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Menu Menu1;
+
+ ///
+ /// btnMenuEdit 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.MenuButton btnMenuEdit;
+
+ ///
+ /// btnMenuDelete 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.MenuButton btnMenuDelete;
+
+ ///
+ /// ScriptManager2 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.ScriptManager ScriptManager2;
+ }
+}
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx
new file mode 100644
index 00000000..544fd18f
--- /dev/null
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx
@@ -0,0 +1,66 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TrainingRecordsDataInEdit.aspx.cs" Inherits="FineUIPro.Web.CQMS.Comprehensive.TrainingRecordsDataInEdit" %>
+
+
+
+
+
+
+ 编辑培训记录导入
+
+
+
+
+
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx.cs
new file mode 100644
index 00000000..bcbfbac4
--- /dev/null
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx.cs
@@ -0,0 +1,175 @@
+using BLL;
+using System;
+using System.Linq;
+
+namespace FineUIPro.Web.CQMS.Comprehensive
+{
+ public partial class TrainingRecordsDataInEdit : PageBase
+ {
+ #region 定义项
+ ///
+ /// 临时表主键
+ ///
+ public string TempId
+ {
+ get
+ {
+ return (string)ViewState["TempId"];
+ }
+ set
+ {
+ ViewState["TempId"] = value;
+ }
+ }
+ #endregion
+
+ #region 加载页面
+ ///
+ /// 加载页面
+ ///
+ ///
+ ///
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ if (!IsPostBack)
+ {
+ this.TempId = Request.Params["TempId"];
+ this.txtValue1.Focus();
+ var dataInTemp = BLL.Sys_DataTempService.GetDataInTempByTempId(this.TempId);
+ if (dataInTemp != null)
+ {
+ this.txtValue1.Text = dataInTemp.Value1;
+ this.txtValue2.Text = dataInTemp.Value2;
+ this.txtValue3.Text = dataInTemp.Value3;
+ this.txtValue4.Text = dataInTemp.Value4;
+ this.txtValue5.Text = dataInTemp.Value5;
+ this.txtValue6.Text = dataInTemp.Value6;
+ this.txtValue7.Text = dataInTemp.Value7;
+
+ this.lbErrCout.Text = dataInTemp.ToopValue;
+ }
+ }
+ }
+ #endregion
+
+ #region 保存按钮
+ ///
+ /// 保存按钮
+ ///
+ ///
+ ///
+ protected void btnSave_Click(object sender, EventArgs e)
+ {
+ var dataInTemp = BLL.Sys_DataTempService.GetDataInTempByTempId(this.TempId);
+ if (this.ckAll.Checked)
+ {
+ var allDataInTemp = from x in Funs.DB.Sys_DataInTemp where x.ProjectId == this.CurrUser.LoginProjectId && x.UserId == this.CurrUser.UserId select x;
+ if (dataInTemp.Value1 != this.txtValue1.Text.Trim())
+ {
+ var tempValue1 = allDataInTemp.Where(x => x.Value1 == dataInTemp.Value1 || (x.Value1 == null && dataInTemp.Value1 == null));
+ if (tempValue1 != null)
+ {
+ foreach (var item in tempValue1)
+ {
+ item.Value1 = this.txtValue1.Text.Trim();
+ Funs.DB.SubmitChanges();
+ }
+ }
+ }
+ if (dataInTemp.Value2 != this.txtValue2.Text.Trim())
+ {
+ var tempValue2 = allDataInTemp.Where(x => x.Value2 == dataInTemp.Value2 || (x.Value2 == null && dataInTemp.Value2 == null));
+ if (tempValue2 != null)
+ {
+ foreach (var item in tempValue2)
+ {
+ item.Value2 = this.txtValue2.Text.Trim();
+ Funs.DB.SubmitChanges();
+ }
+ }
+ }
+ if (dataInTemp.Value3 != this.txtValue3.Text.Trim())
+ {
+ var tempValue3 = allDataInTemp.Where(x => x.Value3 == dataInTemp.Value3 || (x.Value3 == null && dataInTemp.Value3 == null));
+ if (tempValue3 != null)
+ {
+ foreach (var item in tempValue3)
+ {
+ item.Value3 = this.txtValue3.Text.Trim();
+ Funs.DB.SubmitChanges();
+ }
+ }
+ }
+ if (dataInTemp.Value5 != this.txtValue5.Text.Trim())
+ {
+ var tempValue5 = allDataInTemp.Where(x => x.Value5 == dataInTemp.Value5 || (x.Value5 == null && dataInTemp.Value5 == null));
+ if (tempValue5 != null)
+ {
+ foreach (var item in tempValue5)
+ {
+ item.Value5 = this.txtValue5.Text.Trim();
+ Funs.DB.SubmitChanges();
+ }
+ }
+ }
+ if (dataInTemp.Value6 != this.txtValue6.Text.Trim())
+ {
+ var tempValue6 = allDataInTemp.Where(x => x.Value6 == dataInTemp.Value6 || (x.Value6 == null && dataInTemp.Value6 == null));
+ if (tempValue6 != null)
+ {
+ foreach (var item in tempValue6)
+ {
+ item.Value6 = this.txtValue6.Text.Trim();
+ Funs.DB.SubmitChanges();
+ }
+ }
+ }
+ if (dataInTemp.Value7 != this.txtValue7.Text.Trim())
+ {
+ var tempValue7 = allDataInTemp.Where(x => x.Value7 == dataInTemp.Value7 || (x.Value7 == null && dataInTemp.Value7 == null));
+ if (tempValue7 != null)
+ {
+ foreach (var item in tempValue7)
+ {
+ item.Value7 = this.txtValue7.Text.Trim();
+ Funs.DB.SubmitChanges();
+ }
+ }
+ }
+ var toopValue = allDataInTemp.Where(x => x.ToopValue == dataInTemp.ToopValue);
+ if (toopValue != null)
+ {
+ foreach (var item in toopValue)
+ {
+ item.ToopValue = null;
+ Funs.DB.SubmitChanges();
+ }
+ }
+ }
+ else
+ {
+ Model.Sys_DataInTemp newDataInTemp = new Model.Sys_DataInTemp();
+ newDataInTemp.ProjectId = this.CurrUser.LoginProjectId;
+ newDataInTemp.UserId = this.CurrUser.UserId;
+ newDataInTemp.Time = System.DateTime.Now;
+ newDataInTemp.Type = dataInTemp.Type;
+ newDataInTemp.Value1 = this.txtValue1.Text.Trim();
+ newDataInTemp.Value2 = this.txtValue2.Text.Trim();
+ newDataInTemp.Value3 = this.txtValue3.Text.Trim();
+ newDataInTemp.Value4 = this.txtValue4.Text.Trim();
+ newDataInTemp.Value5 = this.txtValue5.Text.Trim();
+ newDataInTemp.Value6 = this.txtValue6.Text.Trim();
+ newDataInTemp.Value7 = this.txtValue7.Text.Trim();
+ if (!string.IsNullOrEmpty(this.TempId))
+ {
+ newDataInTemp.TempId = this.TempId;
+ newDataInTemp.ToopValue = null;
+ BLL.Sys_DataTempService.UpdateDataInTemp(newDataInTemp);
+ }
+ }
+ ShowNotify("信息修改完成!", MessageBoxIcon.Success);
+ PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx.designer.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx.designer.cs
new file mode 100644
index 00000000..61b04fe6
--- /dev/null
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsDataInEdit.aspx.designer.cs
@@ -0,0 +1,150 @@
+//------------------------------------------------------------------------------
+// <自动生成>
+// 此代码由工具生成。
+//
+// 对此文件的更改可能导致不正确的行为,如果
+// 重新生成代码,则所做更改将丢失。
+// 自动生成>
+//------------------------------------------------------------------------------
+
+namespace FineUIPro.Web.CQMS.Comprehensive {
+
+
+ public partial class TrainingRecordsDataInEdit {
+
+ ///
+ /// form1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlForm form1;
+
+ ///
+ /// PageManager1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.PageManager PageManager1;
+
+ ///
+ /// SimpleForm1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Form SimpleForm1;
+
+ ///
+ /// Toolbar1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar Toolbar1;
+
+ ///
+ /// ToolbarFill1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.ToolbarFill ToolbarFill1;
+
+ ///
+ /// btnSave 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnSave;
+
+ ///
+ /// txtValue1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtValue1;
+
+ ///
+ /// txtValue2 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtValue2;
+
+ ///
+ /// txtValue3 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtValue3;
+
+ ///
+ /// txtValue4 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtValue4;
+
+ ///
+ /// txtValue5 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtValue5;
+
+ ///
+ /// txtValue6 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtValue6;
+
+ ///
+ /// txtValue7 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtValue7;
+
+ ///
+ /// ckAll 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.CheckBox ckAll;
+
+ ///
+ /// lbErrCout 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextArea lbErrCout;
+ }
+}
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx
new file mode 100644
index 00000000..8218aa47
--- /dev/null
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx
@@ -0,0 +1,62 @@
+<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="TrainingRecordsEdit.aspx.cs" Inherits="FineUIPro.Web.CQMS.Comprehensive.TrainingRecordsEdit" %>
+
+
+
+
+
+
+ 编辑培训记录
+
+
+
+
+
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx.cs
new file mode 100644
index 00000000..ca55ca85
--- /dev/null
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx.cs
@@ -0,0 +1,118 @@
+using BLL;
+using System;
+using System.Linq;
+
+namespace FineUIPro.Web.CQMS.Comprehensive
+{
+ public partial class TrainingRecordsEdit : PageBase
+ {
+ #region 定义变量
+ ///
+ /// 主键
+ ///
+ public string TrainingRecordsId
+ {
+ get
+ {
+ return (string)ViewState["TrainingRecordsId"];
+ }
+ set
+ {
+ ViewState["TrainingRecordsId"] = value;
+ }
+ }
+ #endregion
+
+ #region 加载
+ ///
+ /// 加载页面
+ ///
+ ///
+ ///
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ if (!IsPostBack)
+ {
+ GetButtonPower();
+ BLL.CNProfessionalService.InitCNProfessionalDownList(this.drpCNProfessionalId, true);
+ this.TrainingRecordsId = Request.Params["id"];
+ Model.Comprehensive_TrainingRecords trainingRecords = BLL.TrainingRecordsService.GetTrainingRecordsById(this.TrainingRecordsId);
+ if (trainingRecords != null)
+ {
+ this.TrainingRecordsId = trainingRecords.TrainingRecordsId;
+ this.txtTrainingContents.Text = trainingRecords.TrainingContents;
+ if (!string.IsNullOrEmpty(trainingRecords.CNProfessionalId))
+ {
+ this.drpCNProfessionalId.SelectedValue = trainingRecords.CNProfessionalId;
+ }
+ this.txtTrainingObject.Text = trainingRecords.TrainingObject;
+ this.txtTrainingAddress.Text = trainingRecords.TrainingAddress;
+ this.txtHours.Text = trainingRecords.Hours.HasValue ? trainingRecords.Hours.ToString() : "";
+ this.txtKeynoteSpeaker.Text = trainingRecords.KeynoteSpeaker;
+ this.txtRemark.Text = trainingRecords.Remark;
+ }
+ }
+ }
+ #endregion
+
+ #region 保存
+ ///
+ /// 保存按钮
+ ///
+ ///
+ ///
+ protected void btnSave_Click(object sender, EventArgs e)
+ {
+ if (drpCNProfessionalId.SelectedValue == BLL.Const._Null)
+ {
+ Alert.ShowInTop("请选择专业!", MessageBoxIcon.Warning);
+ return;
+ }
+ Model.Comprehensive_TrainingRecords trainingRecords = new Model.Comprehensive_TrainingRecords();
+ trainingRecords.CNProfessionalId = this.drpCNProfessionalId.SelectedValue;
+ trainingRecords.TrainingContents = this.txtTrainingContents.Text.Trim();
+ trainingRecords.TrainingObject = this.txtTrainingObject.Text.Trim();
+ trainingRecords.TrainingAddress = this.txtTrainingAddress.Text.Trim();
+ trainingRecords.Hours = Funs.GetNewDecimal(this.txtHours.Text.Trim());
+ trainingRecords.KeynoteSpeaker = this.txtKeynoteSpeaker.Text.Trim();
+ trainingRecords.Remark = this.txtRemark.Text.Trim();
+ if (!string.IsNullOrEmpty(this.TrainingRecordsId))
+ {
+ trainingRecords.TrainingRecordsId = this.TrainingRecordsId;
+ BLL.TrainingRecordsService.UpdateTrainingRecords(trainingRecords);
+ }
+ else
+ {
+ trainingRecords.TrainingRecordsId = SQLHelper.GetNewID(typeof(Model.Comprehensive_TrainingRecords));
+ trainingRecords.ProjectId = this.CurrUser.LoginProjectId;
+ BLL.TrainingRecordsService.AddTrainingRecords(trainingRecords);
+ }
+ ShowNotify("保存成功!", MessageBoxIcon.Success);
+ PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
+ }
+ #endregion
+
+ #region 获取按钮权限
+ ///
+ /// 获取按钮权限
+ ///
+ ///
+ ///
+ private void GetButtonPower()
+ {
+ if (Request.Params["value"] == "0")
+ {
+ return;
+ }
+ var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.TrainingRecordsMenuId);
+ if (buttonList.Count() > 0)
+ {
+ if (buttonList.Contains(BLL.Const.BtnSave))
+ {
+ this.btnSave.Hidden = false;
+ }
+ }
+ }
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx.designer.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx.designer.cs
new file mode 100644
index 00000000..0ea812a2
--- /dev/null
+++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/TrainingRecordsEdit.aspx.designer.cs
@@ -0,0 +1,123 @@
+//------------------------------------------------------------------------------
+// <自动生成>
+// 此代码由工具生成。
+//
+// 对此文件的更改可能导致不正确的行为,如果
+// 重新生成代码,则所做更改将丢失。
+// 自动生成>
+//------------------------------------------------------------------------------
+
+namespace FineUIPro.Web.CQMS.Comprehensive {
+
+
+ public partial class TrainingRecordsEdit {
+
+ ///
+ /// form1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlForm form1;
+
+ ///
+ /// PageManager1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.PageManager PageManager1;
+
+ ///
+ /// SimpleForm1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Form SimpleForm1;
+
+ ///
+ /// txtTrainingContents 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtTrainingContents;
+
+ ///
+ /// drpCNProfessionalId 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.DropDownList drpCNProfessionalId;
+
+ ///
+ /// txtTrainingObject 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtTrainingObject;
+
+ ///
+ /// txtTrainingAddress 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtTrainingAddress;
+
+ ///
+ /// txtHours 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.NumberBox txtHours;
+
+ ///
+ /// txtKeynoteSpeaker 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextBox txtKeynoteSpeaker;
+
+ ///
+ /// txtRemark 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.TextArea txtRemark;
+
+ ///
+ /// Toolbar1 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Toolbar Toolbar1;
+
+ ///
+ /// btnSave 控件。
+ ///
+ ///
+ /// 自动生成的字段。
+ /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
+ ///
+ protected global::FineUIPro.Button btnSave;
+ }
+}
diff --git a/SGGL/FineUIPro.Web/File/Excel/DataIn/培训记录导入模板.xlsx b/SGGL/FineUIPro.Web/File/Excel/DataIn/培训记录导入模板.xlsx
new file mode 100644
index 0000000000000000000000000000000000000000..ed68bb54d37c4fe3667bcd3852c6fbbda04ea49f
GIT binary patch
literal 10425
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
+
+
+
@@ -7729,6 +7732,27 @@
TrainingRecords.aspx
+
+ TrainingRecordsDataIn.aspx
+ ASPXCodeBehind
+
+
+ TrainingRecordsDataIn.aspx
+
+
+ TrainingRecordsDataInEdit.aspx
+ ASPXCodeBehind
+
+
+ TrainingRecordsDataInEdit.aspx
+
+
+ TrainingRecordsEdit.aspx
+ ASPXCodeBehind
+
+
+ TrainingRecordsEdit.aspx
+
ConstructionStandardList.aspx
ASPXCodeBehind
diff --git a/SGGL/FineUIPro.Web/common/Menu_CQMS.xml b/SGGL/FineUIPro.Web/common/Menu_CQMS.xml
index 1ebd1ff1..d66d477e 100644
--- a/SGGL/FineUIPro.Web/common/Menu_CQMS.xml
+++ b/SGGL/FineUIPro.Web/common/Menu_CQMS.xml
@@ -19,6 +19,7 @@
+
diff --git a/SGGL/FineUIPro.Web/common/Menu_Personal.xml b/SGGL/FineUIPro.Web/common/Menu_Personal.xml
index a9d07855..2854ffd9 100644
--- a/SGGL/FineUIPro.Web/common/Menu_Personal.xml
+++ b/SGGL/FineUIPro.Web/common/Menu_Personal.xml
@@ -6,7 +6,4 @@
-
-
-
\ No newline at end of file
diff --git a/SGGL/FineUIPro.Web/common/Menu_TestRun.xml b/SGGL/FineUIPro.Web/common/Menu_TestRun.xml
index 68f5e44c..b1a26ee1 100644
--- a/SGGL/FineUIPro.Web/common/Menu_TestRun.xml
+++ b/SGGL/FineUIPro.Web/common/Menu_TestRun.xml
@@ -46,12 +46,12 @@
-
-
-
-
+
+
+
+
@@ -69,11 +69,9 @@
-
-
@@ -121,8 +119,7 @@
-
-
+
diff --git a/SGGL/FineUIPro.Web/common/Menu_Transfer.xml b/SGGL/FineUIPro.Web/common/Menu_Transfer.xml
index 4d3b9e97..91d9fd84 100644
--- a/SGGL/FineUIPro.Web/common/Menu_Transfer.xml
+++ b/SGGL/FineUIPro.Web/common/Menu_Transfer.xml
@@ -1,21 +1,3 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/SGGL/FineUIPro.Web/common/Menu_ZHGL.xml b/SGGL/FineUIPro.Web/common/Menu_ZHGL.xml
index 69859890..ed44c8fe 100644
--- a/SGGL/FineUIPro.Web/common/Menu_ZHGL.xml
+++ b/SGGL/FineUIPro.Web/common/Menu_ZHGL.xml
@@ -83,8 +83,4 @@
-
-
-
-
\ No newline at end of file