fix:考试

This commit is contained in:
geh
2025-04-29 19:39:35 +08:00
parent 441fbf5985
commit 714c47eba2
45 changed files with 3660 additions and 78 deletions
@@ -1,5 +1,9 @@
ALTER TABLE Training_TestRecord
ADD Signature NVARCHAR(1000),
ADD Fingerprint NVARCHAR(1000),
ADD Signature NVARCHAR(1000);
go
ALTER TABLE Training_TestRecord
ADD Fingerprint NVARCHAR(1000);
go
ALTER TABLE Training_TestRecord
ADD CompanyTrainingItemId NVARCHAR(50);
go
@@ -0,0 +1,25 @@
-- 分值
ALTER TABLE Training_TestTrainingItem
ADD Score int;
go
-- 菜单
INSERT INTO [dbo].[Sys_Menu] ( [MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed] )
VALUES
( N'2D889FC1-6B76-4F16-B19B-2D586B569B65', N'岗位试题库', NULL, N'HSSE/EduTrain/WorkPostTestTraining.aspx', 40, N'E26D223B-4CA2-4A6D-82D0-224CC9C8676D', N'Menu_DigData', '1', '1', '1' );
INSERT INTO [dbo].[Sys_ButtonToMenu] ( [ButtonToMenuId], [MenuId], [ButtonName], [SortIndex] )
VALUES
( NewID(), N'2D889FC1-6B76-4F16-B19B-2D586B569B65', N'删除', 3 );
INSERT INTO [dbo].[Sys_ButtonToMenu] ( [ButtonToMenuId], [MenuId], [ButtonName], [SortIndex] )
VALUES
( NewID(), N'2D889FC1-6B76-4F16-B19B-2D586B569B65', N'导出', 5 );
INSERT INTO [dbo].[Sys_ButtonToMenu] ( [ButtonToMenuId], [MenuId], [ButtonName], [SortIndex] )
VALUES
( NewID(), N'2D889FC1-6B76-4F16-B19B-2D586B569B65', N'保存', 4 );
INSERT INTO [dbo].[Sys_ButtonToMenu] ( [ButtonToMenuId], [MenuId], [ButtonName], [SortIndex] )
VALUES
( NewID(), N'2D889FC1-6B76-4F16-B19B-2D586B569B65', N'增加', 1 );
INSERT INTO [dbo].[Sys_ButtonToMenu] ( [ButtonToMenuId], [MenuId], [ButtonName], [SortIndex] )
VALUES
( NewID(), N'2D889FC1-6B76-4F16-B19B-2D586B569B65', N'修改', 2 );
@@ -45,6 +45,7 @@ namespace BLL
DItem = TestTrainingItem.DItem,
EItem = TestTrainingItem.EItem,
AnswerItems = TestTrainingItem.AnswerItems,
Score = TestTrainingItem.Score,
};
db.Training_TestTrainingItem.InsertOnSubmit(newTestTrainingItem);
db.SubmitChanges();
@@ -74,6 +75,7 @@ namespace BLL
newTestTrainingItem.DItem = TestTrainingItem.DItem;
newTestTrainingItem.EItem = TestTrainingItem.EItem;
newTestTrainingItem.AnswerItems = TestTrainingItem.AnswerItems;
newTestTrainingItem.Score = TestTrainingItem.Score;
db.SubmitChanges();
}
}
@@ -708,6 +708,24 @@
<Content Include="Door\InOutRecordStatisticsGrid.aspx" />
<Content Include="Door\LeaveRecord.aspx" />
<Content Include="Door\LeaveRecordEdit.aspx" />
<Content Include="File\Excel\DataIn\岗位考试试题模版.xls" />
<Content Include="File\Word\Person\安全教育培训打印整套(司索信号工).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(塔吊司机).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(挖机司机).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(施工电梯司机).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(普工).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(木工).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(架子工).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(桩基).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(水电工).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(渣土车司机).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(班组管理员).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(瓦工).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(电焊工).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(管理人员).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(装配、灌浆工).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(钢筋工).doc" />
<Content Include="File\Word\Person\安全教育培训打印整套(防水普工).doc" />
<Content Include="HJGL\BaseInfo\Components.aspx" />
<Content Include="HJGL\BaseInfo\ComponentsEdit.aspx" />
<Content Include="HJGL\BaseInfo\ComponentsIn.aspx" />
@@ -1016,6 +1034,11 @@
<Content Include="HSSE\EduTrain\TrainTestDBSelectCloumn.aspx" />
<Content Include="HSSE\EduTrain\TrainTestItemEdit.aspx" />
<Content Include="HSSE\EduTrain\TrainTestView.aspx" />
<Content Include="HSSE\EduTrain\WorkPostTestTraining.aspx" />
<Content Include="HSSE\EduTrain\WorkPostTestTrainingItemIn.aspx" />
<Content Include="HSSE\EduTrain\WorkPostTestTrainingItemSave.aspx" />
<Content Include="HSSE\EduTrain\WorkPostTestTrainingOut.aspx" />
<Content Include="HSSE\EduTrain\WorkPostTestTrainingSave.aspx" />
<Content Include="HSSE\Emergency\DrillRecordList.aspx" />
<Content Include="HSSE\Emergency\DrillRecordListEdit.aspx" />
<Content Include="HSSE\Emergency\DrillRecordListView.aspx" />
@@ -11783,6 +11806,26 @@
<Compile Include="HSSE\EduTrain\TrainTestView.aspx.designer.cs">
<DependentUpon>TrainTestView.aspx</DependentUpon>
</Compile>
<Compile Include="HSSE\EduTrain\WorkPostTestTraining.aspx.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="HSSE\EduTrain\WorkPostTestTraining.aspx.designer.cs" />
<Compile Include="HSSE\EduTrain\WorkPostTestTrainingItemIn.aspx.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="HSSE\EduTrain\WorkPostTestTrainingItemIn.aspx.designer.cs" />
<Compile Include="HSSE\EduTrain\WorkPostTestTrainingItemSave.aspx.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="HSSE\EduTrain\WorkPostTestTrainingItemSave.aspx.designer.cs" />
<Compile Include="HSSE\EduTrain\WorkPostTestTrainingOut.aspx.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="HSSE\EduTrain\WorkPostTestTrainingOut.aspx.designer.cs" />
<Compile Include="HSSE\EduTrain\WorkPostTestTrainingSave.aspx.cs">
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="HSSE\EduTrain\WorkPostTestTrainingSave.aspx.designer.cs" />
<Compile Include="HSSE\Emergency\DrillRecordList.aspx.cs">
<DependentUpon>DrillRecordList.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
@@ -85,7 +85,7 @@ namespace FineUIPro.Web.HSSE.EduTrain
private List<Model.Training_TestTraining> GetNewTraining(string parentId)
{
return (from x in Funs.DB.Training_TestTraining
where x.SupTrainingId == parentId
where x.SupTrainingId == parentId && x.TrainingId != "99ccf4c8-6f8e-47da-a900-53b12a278f25"
orderby x.TrainingCode
select x).ToList();
}
@@ -0,0 +1,198 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WorkPostTestTraining.aspx.cs" Inherits="FineUIPro.Web.HSSE.EduTrain.WorkPostTestTraining" %>
<!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" />
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" ShowBorder="false" ShowHeader="false" Layout="Region">
<Items>
<f:Panel runat="server" ID="panelLeftRegion" RegionPosition="Left" RegionSplit="true"
EnableCollapse="true" Width="210px" Title="考试试题库" TitleToolTip="考试试题库" ShowBorder="true"
ShowHeader="false" AutoScroll="true" BodyPadding="2px" IconFont="ArrowCircleLeft"
Layout="Fit">
<Items>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<%-- <f:Button ID="btnNew" Icon="Add" runat="server" OnClick="btnNew_Click" Hidden="true">
</f:Button>--%>
<f:Button ID="btnOut" ToolTip="导出" Icon="FolderUp" runat="server" Text="导出"
OnClick="btnMenuOut_Click">
</f:Button>
</Items>
</f:Toolbar>
<f:Tree ID="tvTestTraining" EnableCollapse="true" ShowHeader="true" Title="考试试题库" OnNodeCommand="tvTestTraining_NodeCommand"
AutoLeafIdentification="true" runat="server" EnableTextSelection="True">
<Listeners>
<f:Listener Event="beforenodecontextmenu" Handler="onTreeNodeContextMenu" />
</Listeners>
</f:Tree>
</Items>
</f:Panel>
<f:Panel runat="server" ID="panelCenterRegion" RegionPosition="Center" ShowBorder="true"
Layout="VBox" ShowHeader="false" BodyPadding="5px" IconFont="PlusCircle" Title="考试试题明细"
TitleToolTip="考试试题明细" AutoScroll="true">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="TrainingItemId" DataIDField="TrainingItemId"
AllowSorting="true" SortField="TrainingItemCode" ForceFit="true"
SortDirection="DESC" OnSort="Grid1_Sort" AllowPaging="true" IsDatabasePaging="true"
PageSize="15" OnPageIndexChange="Grid1_PageIndexChange" EnableRowDoubleClickEvent="true"
OnRowDoubleClick="Grid1_RowDoubleClick" EnableTextSelection="True" EnableColumnLines="true">
<Toolbars>
<f:Toolbar ID="Toolbar3" Position="Top" runat="server">
<Items>
<f:TextBox ID="txtName" runat="server" Label="查询" EmptyText="输入查询条件"
AutoPostBack="true" OnTextChanged="TextBox_TextChanged" Width="250px" LabelWidth="80px"
LabelAlign="Right">
</f:TextBox>
<f:DropDownList runat="server" ID="drptype" AutoPostBack="true" Label="题型" LabelWidth="60px" OnSelectedIndexChanged="TextBox_TextChanged">
<f:ListItem Value="0" Text="全部" Selected="true"/>
<f:ListItem Value="1" Text="单选题"/>
<f:ListItem Value="2" Text="多选题"/>
<f:ListItem Value="3" Text="判断题"/>
</f:DropDownList>
<f:CheckBox runat="server" ID="ckIsItem" Text="选项不全" AutoPostBack="true" OnCheckedChanged="ckIsItem_CheckedChanged"></f:CheckBox>
<f:ToolbarFill ID="ToolbarFill1" runat="server">
</f:ToolbarFill>
<f:Button ID="btnNewDetail" ToolTip="新增" Icon="Add" runat="server" OnClick="btnNewDetail_Click" Text="新增"
Hidden="true">
</f:Button>
<f:Button ID="btnImport" ToolTip="导入" Icon="PageExcel" Hidden="true" runat="server" Text="导入"
OnClick="btnImport_Click">
</f:Button>
<f:Button ID="Button1" OnClick="btnMenuOut1_Click" runat="server" ToolTip="导出" Icon="FolderUp" Text="导出"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
<%-- <f:Button ID="btnRefresh" ToolTip="按基础数据刷新" Icon="ArrowRefresh" runat="server" OnClick="Refresh_Click"
Hidden="true">
</f:Button>
<f:Button ID="btnRefresh1" ToolTip="按列表名称刷新" Icon="ArrowRefresh" runat="server" OnClick="Refresh1_Click"
Hidden="true">
</f:Button>--%>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:RenderField ColumnID="TrainingItemCode" DataField="TrainingItemCode" SortField="TrainingItemCode"
Width="80px" FieldType="String" HeaderText="编号" HeaderTextAlign="Center" TextAlign="left">
</f:RenderField>
<f:RenderField ColumnID="Abstracts" DataField="Abstracts" SortField="Abstracts"
Width="600px" FieldType="String" HeaderText="教材内容" HeaderTextAlign="Center" TextAlign="left">
</f:RenderField>
<f:RenderField ColumnID="WorkPostNames" DataField="WorkPostNames" SortField="WorkPostNames"
Width="200px" FieldType="String" HeaderText="适合岗位" HeaderTextAlign="Center" TextAlign="left">
</f:RenderField>
<f:RenderField ColumnID="TestTypeName" DataField="TestTypeName" SortField="TestTypeName"
Width="70px" FieldType="String" HeaderText="题型" HeaderTextAlign="Center" TextAlign="left">
</f:RenderField>
<f:RenderField Width="200px" ColumnID="AItem" DataField="AItem" FieldType="String"
HeaderText="答案项A" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="200px" ColumnID="BItem" DataField="BItem" FieldType="String"
HeaderText="答案项B" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="200px" ColumnID="CItem" DataField="CItem" FieldType="String"
HeaderText="答案项C" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="200px" ColumnID="DItem" DataField="DItem" FieldType="String"
HeaderText="答案项D" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="200px" ColumnID="EItem" DataField="EItem" FieldType="String"
HeaderText="答案项E" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="90px" ColumnID="AnswerItems" DataField="AnswerItems" FieldType="String"
HeaderText="正确答案项" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="90px" ColumnID="Score" DataField="Score" FieldType="String"
HeaderText="分值" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="beforerowcontextmenu" Handler="onRowContextMenu" />
</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:Panel>
</Items>
</f:Panel>
<f:Window ID="Window1" Title="考试试题" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" OnClose="Window1_Close" IsModal="true"
Width="600px" Height="350px">
</f:Window>
<f:Window ID="Window2" Title="考试试题详情" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" OnClose="Window2_Close" IsModal="true"
Width="900px" Height="580px">
</f:Window>
<f:Window ID="Window3" Title="导入信息" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" OnClose="Window3_Close" IsModal="false"
CloseAction="HidePostBack" Width="1200px" Height="560px">
</f:Window>
<f:Menu ID="Menu1" runat="server">
<f:MenuButton ID="btnMenuEdit" OnClick="btnMenuEdit_Click" EnablePostBack="true"
runat="server" Text="编辑" Hidden="true" Icon="Pencil">
</f:MenuButton>
<f:MenuButton ID="btnMenuDelete" OnClick="btnMenuDelete_Click" EnablePostBack="true"
Icon="Delete" ConfirmText="删除选中行?" ConfirmTarget="Parent" runat="server" Text="删除"
Hidden="true">
</f:MenuButton>
</f:Menu>
<f:Menu ID="Menu2" runat="server">
<f:MenuButton ID="btnMenuADD" OnClick="btnMenuADD_Click" EnablePostBack="true"
runat="server" Text="新增" Icon="Add" Hidden="true">
</f:MenuButton>
<f:MenuButton ID="btnTreeMenuEdit" OnClick="btnTreeMenuEdit_Click" EnablePostBack="true"
runat="server" Text="编辑" Hidden="true" Icon="Pencil">
</f:MenuButton>
<f:MenuButton ID="btnQR" OnClick="btnQR_Click" EnablePostBack="true"
runat="server" Text="二维码" Icon="Shading">
</f:MenuButton>
<f:MenuButton ID="btnTreeMenuDelete" OnClick="btnTreeMenuDelete_Click" EnablePostBack="true"
Icon="Delete" ConfirmText="删除选中节点?" ConfirmTarget="Parent" runat="server" Text="删除"
Hidden="true">
</f:MenuButton>
</f:Menu>
</form>
<script type="text/javascript">
var treeID = '<%= tvTestTraining.ClientID %>';
var menuID = '<%= Menu1.ClientID %>';
var menuID2 = '<%= Menu2.ClientID %>';
// 保存当前菜单对应的树节点ID
var currentNodeId;
// 返回false,来阻止浏览器右键菜单
function onTreeNodeContextMenu(event, nodeId) {
currentNodeId = nodeId;
F(menuID2).show();
return false;
}
// 返回false,来阻止浏览器右键菜单
function onRowContextMenu(event, rowId) {
F(menuID).show(); //showAt(event.pageX, event.pageY);
return false;
}
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>
@@ -0,0 +1,557 @@
using BLL;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class WorkPostTestTraining : PageBase
{
/// <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.GetButtonPower();
this.InitTreeMenu();
}
}
/// <summary>
/// 初始化树
/// </summary>
private void InitTreeMenu()
{
tvTestTraining.Nodes.Clear();
tvTestTraining.ShowBorder = false;
tvTestTraining.ShowHeader = false;
tvTestTraining.EnableIcons = true;
tvTestTraining.AutoScroll = true;
tvTestTraining.EnableSingleClickExpand = true;
TreeNode rootNode = new TreeNode
{
Text = "考试试题库",
NodeID = "0",
Expanded = true
};
this.tvTestTraining.Nodes.Add(rootNode);
BoundTree(rootNode.Nodes, rootNode.NodeID);
}
private void BoundTree(TreeNodeCollection nodes, string parentId)
{
var dt = GetNewTraining(parentId);
if (dt.Count() > 0)
{
TreeNode tn = null;
foreach (var dr in dt)
{
string name = dr.TrainingName;
if (!string.IsNullOrEmpty(dr.TrainingCode))
{
name = "[" + dr.TrainingCode + "]" + dr.TrainingName;
}
tn = new TreeNode
{
Text = name,
NodeID = dr.TrainingId,
EnableClickEvent = true,
ToolTip = dr.TrainingName
};
nodes.Add(tn);
///是否存在下级节点
var sup = Funs.DB.Training_TestTraining.FirstOrDefault(x => x.SupTrainingId == tn.NodeID);
if (sup != null)
{
BoundTree(tn.Nodes, tn.NodeID);
}
}
}
}
/// <summary>
/// 得到培训类型
/// </summary>
/// <param name="parentId"></param>
/// <returns></returns>
private List<Model.Training_TestTraining> GetNewTraining(string parentId)
{
return (from x in Funs.DB.Training_TestTraining
where x.SupTrainingId == parentId && x.TrainingId == "99ccf4c8-6f8e-47da-a900-53b12a278f25"
orderby x.TrainingCode
select x).ToList();
}
//protected void btnNew_Click(object sender, EventArgs e)
//{
// PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("TrainingSave.aspx", "编辑 - ")));
//}
protected void btnMenuADD_Click(object sender, EventArgs e)
{
if (this.tvTestTraining.SelectedNode != null)
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("WorkPostTestTrainingSave.aspx?SupTrainingId={0}", this.tvTestTraining.SelectedNode.NodeID, "新增 - ")));
}
else
{
ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
}
}
protected void btnTreeMenuEdit_Click(object sender, EventArgs e)
{
if (this.tvTestTraining.SelectedNode != null)
{
if (this.tvTestTraining.SelectedNode.NodeID != "0") //非根节点可以编辑
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("WorkPostTestTrainingSave.aspx?TrainingId={0}", this.tvTestTraining.SelectedNode.NodeID, "编辑 - ")));
}
else
{
ShowNotify("根节点无法编辑!", MessageBoxIcon.Warning);
}
}
else
{
ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
}
}
protected void btnTreeMenuDelete_Click(object sender, EventArgs e)
{
if (this.tvTestTraining.SelectedNode != null && this.tvTestTraining.SelectedNodeID != "0")
{
var edu = Funs.DB.Training_TestTraining.FirstOrDefault(x => x.SupTrainingId == this.tvTestTraining.SelectedNode.NodeID);
if (edu == null)
{
BLL.TestTrainingService.DeleteTestTrainingById(this.tvTestTraining.SelectedNode.NodeID);
InitTreeMenu();
Grid1.DataSource = null;
Grid1.DataBind();
}
else
{
ShowNotify("存在子目录,不能删除!", MessageBoxIcon.Warning);
}
}
else
{
ShowNotify("请选择删除项!", MessageBoxIcon.Warning);
}
}
protected void tvTestTraining_NodeCommand(object sender, FineUIPro.TreeCommandEventArgs e)
{
BindGrid();
}
#region BindGrid
private void BindGrid()
{
if (this.tvTestTraining.SelectedNode != null && !string.IsNullOrEmpty(this.tvTestTraining.SelectedNode.NodeID))
{
string strSql = @"SELECT TrainingItemId,TrainingId,TrainingItemCode,TrainingItemName,Abstracts,AttachUrl,VersionNum,TestType "
+ @" ,(CASE WHEN TestType = '1' THEN '单选题' WHEN TestType = '2' THEN '多选题' ELSE '判断题' END) AS TestTypeName "
+ @" ,(CASE WHEN WorkPostNames IS NULL THEN '通用' ELSE WorkPostNames END) AS WorkPostNames,AItem,BItem,CItem,DItem,EItem,AnswerItems,Score "
+ @" FROM dbo.Training_TestTrainingItem"
+ @" WHERE TrainingId=@TrainingId ";
List<SqlParameter> listStr = new List<SqlParameter>
{
new SqlParameter("@TrainingId", this.tvTestTraining.SelectedNode.NodeID)
};
if (!string.IsNullOrEmpty(this.txtName.Text.Trim()))
{
strSql += " AND (TrainingItemCode LIKE @Name OR TrainingItemName LIKE @Name OR Abstracts LIKE @Name OR WorkPostNames LIKE @Name)";
listStr.Add(new SqlParameter("@Name", "%" + this.txtName.Text.Trim() + "%"));
}
if (this.drptype.SelectedValue != "0")
{
strSql += " AND TestType=@TestType";
listStr.Add(new SqlParameter("@TestType", this.drptype.SelectedValue));
}
if (this.ckIsItem.Checked)
{
strSql += " AND (AItem IS NULL OR BItem IS NULL OR AItem ='' OR BItem ='')";
}
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();
}
}
#endregion
#region Events
protected void Window1_Close(object sender, EventArgs e)
{
this.InitTreeMenu();
}
protected void Window2_Close(object sender, EventArgs e)
{
this.BindGrid();
}
protected void Window3_Close(object sender, EventArgs e)
{
this.InitTreeMenu();
this.BindGrid();
}
/// <summary>
/// 右键删除事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuDelete_Click(object sender, EventArgs e)
{
this.DeleteData();
}
/// <summary>
/// 删除方法
/// </summary>
private void DeleteData()
{
if (Grid1.SelectedRowIndexArray.Length > 0)
{
foreach (int rowIndex in Grid1.SelectedRowIndexArray)
{
string rowID = Grid1.DataKeys[rowIndex][0].ToString();
var getD = BLL.TestTrainingItemService.GetTestTrainingItemById(rowID);
if (getD != null)
{
BLL.LogService.AddSys_Log(this.CurrUser, getD.TrainingItemCode, getD.TrainingItemId, BLL.Const.TestTrainingMenuId, BLL.Const.BtnDelete);
BLL.TestTrainingItemService.DeleteTestTrainingItemById(rowID);
}
}
BindGrid();
ShowNotify("删除数据成功!");
}
}
#endregion
#region GV排序页面
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
Grid1.PageIndex = e.NewPageIndex;
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)
{
Grid1.SortDirection = e.SortDirection;
Grid1.SortField = e.SortField;
BindGrid();
}
#endregion
/// <summary>
/// 编辑试题
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_RowDoubleClick(object sender, GridRowClickEventArgs e)
{
this.EditData();
}
/// <summary>
/// 右键编辑事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuEdit_Click(object sender, EventArgs e)
{
this.EditData();
}
/// <summary>
/// 编辑数据方法
/// </summary>
private void EditData()
{
if (Grid1.SelectedRowIndexArray.Length == 0)
{
Alert.ShowInTop("请至少选择一条记录!", MessageBoxIcon.Warning);
return;
}
string trainingItemId = Grid1.SelectedRowID;
PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("WorkPostTestTrainingItemSave.aspx?TrainingItemId={0}", trainingItemId, "编辑 - ")));
}
/// <summary>
/// 增加
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnNewDetail_Click(object sender, EventArgs e)
{
if (this.tvTestTraining.SelectedNode != null)
{
string id = this.tvTestTraining.SelectedNodeID;
var testTrain = BLL.TestTrainingService.GetTestTrainingById(id);
if (testTrain != null && testTrain.IsEndLever == true)
{
PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("WorkPostTestTrainingItemSave.aspx?TrainingId={0}", this.tvTestTraining.SelectedNode.NodeID, "编辑 - ")));
}
else
{
ShowNotify("请选择末级树节点!", MessageBoxIcon.Warning);
}
}
else
{
ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
}
}
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.TestTrainingMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnAdd))
{
this.btnMenuADD.Hidden = false;
this.btnImport.Hidden = false;
this.btnNewDetail.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnModify))
{
this.btnTreeMenuEdit.Hidden = false;
this.btnMenuEdit.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnDelete))
{
this.btnTreeMenuDelete.Hidden = false;
this.btnMenuDelete.Hidden = false;
}
}
//if (this.CurrUser.UserId == BLL.Const.sysglyId)
//{
// this.btnRefresh.Hidden = false;
// this.btnRefresh1.Hidden = false;
//}
}
#endregion
/// <summary>
/// 查询
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TextBox_TextChanged(object sender, EventArgs e)
{
this.BindGrid();
}
#region
/// <summary>
/// 导入按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnImport_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Window3.GetShowReference(String.Format("WorkPostTestTrainingItemIn.aspx", "导入 - ")));
}
#endregion
#region
/// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuOut_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Window3.GetShowReference(String.Format("WorkPostTestTrainingOut.aspx", "导出 - ")));
}
/// <summary>
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuOut1_Click(object sender, EventArgs e)
{
if (this.tvTestTraining.SelectedNode != null && this.tvTestTraining.SelectedNodeID != "0")
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition", "attachment; filename=" + System.Web.HttpUtility.UrlEncode("考试试题" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.Grid1.PageSize = Grid1.RecordCount;
BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
else
{
ShowNotify("请选择树节点!", MessageBoxIcon.Warning);
}
}
#endregion
#region
/// <summary>
/// 刷新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Refresh_Click(object sender, EventArgs e)
{
var trainingItems = from x in Funs.DB.Training_TestTrainingItem select x;
if (trainingItems.Count() > 0)
{
foreach (var trainingItem in trainingItems)
{
if (trainingItem.TestType == "3" && string.IsNullOrEmpty(trainingItem.AItem))
{
trainingItem.AItem = "对";
trainingItem.BItem = "错";
}
if (!string.IsNullOrEmpty(trainingItem.WorkPostIds))
{
string name = string.Empty;
var workPostList = Funs.GetStrListByStr(trainingItem.WorkPostIds, ',');
if (workPostList.Count() > 0)
{
foreach (var workPostId in workPostList)
{
var workPost = BLL.WorkPostService.GetWorkPostById(workPostId).WorkPostName;
if (!string.IsNullOrEmpty(workPost))
{
name += workPost + ",";
}
}
}
if (!string.IsNullOrEmpty(name))
{
trainingItem.WorkPostNames = name.Substring(0, name.LastIndexOf(","));
}
}
BLL.TestTrainingItemService.UpdateTestTrainingItem(trainingItem);
}
}
Alert.ShowInTop("操作完成!", MessageBoxIcon.Success);
}
/// <summary>
/// 刷新
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Refresh1_Click(object sender, EventArgs e)
{
var trainingItems = from x in Funs.DB.Training_TestTrainingItem select x;
if (trainingItems.Count() > 0)
{
foreach (var trainingItem in trainingItems)
{
if (trainingItem.TestType == "3" && string.IsNullOrEmpty(trainingItem.AItem))
{
trainingItem.AItem = "对";
trainingItem.BItem = "错";
}
if (!string.IsNullOrEmpty(trainingItem.WorkPostNames))
{
string getInstallationId = string.Empty;
var installList = Funs.GetStrListByStr(trainingItem.WorkPostNames, ',');
if (installList.Count() > 0)
{
foreach (var installItem in installList)
{
var install = Funs.DB.Base_WorkPost.FirstOrDefault(x => x.WorkPostName == installItem);
if (install != null && !string.IsNullOrEmpty(install.WorkPostId))
{
getInstallationId += install.WorkPostId + ",";
}
}
}
if (!string.IsNullOrEmpty(getInstallationId))
{
trainingItem.WorkPostIds = getInstallationId.Substring(0, getInstallationId.LastIndexOf(","));
}
}
BLL.TestTrainingItemService.UpdateTestTrainingItem(trainingItem);
}
}
Alert.ShowInTop("操作完成!", MessageBoxIcon.Success);
}
#endregion
/// <summary>
/// 显示选项不全的题目
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ckIsItem_CheckedChanged(object sender, CheckedEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 查看二维码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnQR_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Window1.GetShowReference
(String.Format("~/Controls/SeeQRImage.aspx?TrainingId={0}&strCode={1}", this.tvTestTraining.SelectedNode.NodeID
, "testTraining$" + this.tvTestTraining.SelectedNode.NodeID),
"二维码查看", 400, 400));
}
}
}
@@ -0,0 +1,296 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class WorkPostTestTraining
{
/// <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>
/// panelLeftRegion 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelLeftRegion;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// tvTestTraining 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Tree tvTestTraining;
/// <summary>
/// panelCenterRegion 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel panelCenterRegion;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar3 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar3;
/// <summary>
/// txtName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtName;
/// <summary>
/// drptype 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drptype;
/// <summary>
/// ckIsItem 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox ckIsItem;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnNewDetail 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnNewDetail;
/// <summary>
/// btnImport 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnImport;
/// <summary>
/// Button1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button Button1;
/// <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>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
/// <summary>
/// Window2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window2;
/// <summary>
/// Window3 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window3;
/// <summary>
/// Menu1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu Menu1;
/// <summary>
/// btnMenuEdit 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuEdit;
/// <summary>
/// btnMenuDelete 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuDelete;
/// <summary>
/// Menu2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu Menu2;
/// <summary>
/// btnMenuADD 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuADD;
/// <summary>
/// btnTreeMenuEdit 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnTreeMenuEdit;
/// <summary>
/// btnQR 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnQR;
/// <summary>
/// btnTreeMenuDelete 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnTreeMenuDelete;
}
}
@@ -0,0 +1,109 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WorkPostTestTrainingItemIn.aspx.cs" Inherits="FineUIPro.Web.HSSE.EduTrain.WorkPostTestTrainingItemIn" %>
<!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" />
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="SimpleForm1" runat="server" OnCustomEvent="PageManager1_CustomEvent" />
<f:Form ID="SimpleForm1" ShowBorder="false" ShowHeader="false" AutoScroll="true"
BodyPadding="10px" runat="server" RedStarPosition="BeforeText" LabelAlign="Right">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" ToolbarAlign="Right" runat="server">
<Items>
<f:ToolbarFill ID="ToolbarFill1" runat="server"></f:ToolbarFill>
<f:Button ID="btnAudit" Icon="ApplicationEdit" runat="server" ToolTip="数据导入" ValidateForms="SimpleForm1" Text="数据导入"
OnClick="btnAudit_Click">
</f:Button>
<f:Button ID="btnDownLoad" runat="server" Icon="ApplicationGo" ToolTip="下载模板" OnClick="btnDownLoad_Click" Text="下载模板">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Rows>
<f:FormRow>
<Items>
<f:FileUpload runat="server" ID="fuAttachUrl" EmptyText="选择要导入的文件" Label="选择要导入的文件"
LabelWidth="150px">
</f:FileUpload>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" EnableCollapse="true" runat="server"
EnableColumnLines="true" BoxFlex="1" DataKeyNames="TrainingItemId" ForceFit="true"
DataIDField="TrainingItemId" AllowSorting="true" SortField="TrainingCode,TrainingItemCode"
PageSize="50" Height="360px">
<Columns>
<f:TemplateField Width="55px" HeaderText="序号">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="90px" ColumnID="TrainingCode" DataField="TrainingCode" FieldType="String"
HeaderText="类型编号" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="TrainingName" DataField="TrainingName" FieldType="String"
HeaderText="试题类型" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="TrainingItemCode" DataField="TrainingItemCode" FieldType="String"
HeaderText="编号" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="90px" ColumnID="TestTypeName" DataField="TestTypeName" FieldType="String"
HeaderText="题型" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="140px" ColumnID="WorkPostNames" DataField="WorkPostNames" FieldType="String"
HeaderText="适合岗位" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="200px" ColumnID="Abstracts" DataField="Abstracts" FieldType="String"
HeaderText="试题内容" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="AItem" DataField="AItem" FieldType="String"
HeaderText="答案项A" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="BItem" DataField="BItem" FieldType="String"
HeaderText="答案项B" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="CItem" DataField="CItem" FieldType="String"
HeaderText="答案项C" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="DItem" DataField="DItem" FieldType="String"
HeaderText="答案项D" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="EItem" DataField="EItem" FieldType="String"
HeaderText="答案项E" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="90px" ColumnID="AnswerItems" DataField="AnswerItems" FieldType="String"
HeaderText="正确答案项" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
</Columns>
</f:Grid>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:HiddenField ID="hdFileName" runat="server">
</f:HiddenField>
<f:HiddenField ID="hdCheckResult" runat="server">
</f:HiddenField>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:Label ID="lblBottom" runat="server" Text="说明:1 导入模板为.xls后缀的EXCEL文件,黑体字为必填项。2 对于导入信息中重复记录自动过滤插入一条记录。3 题型为单选题、多选题、判断题,多岗位时用,隔开。4 适合岗位空时为通用试题。 5 数据导入完成,成功后自动返回,如果有不成功数据页面弹出提示框,列表显示导入成功数据。">
</f:Label>
</Items>
</f:FormRow>
</Rows>
</f:Form>
<f:Window ID="Window1" Title="导入信息" Hidden="true" EnableIFrame="true" EnableMaximize="true"
Target="Parent" EnableResize="false" runat="server" OnClose="Window1_Close" IsModal="false"
CloseAction="HidePostBack" Width="900px" Height="600px">
</f:Window>
</form>
</body>
</html>
@@ -0,0 +1,452 @@
using BLL;
using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Data;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class WorkPostTestTrainingItemIn : PageBase
{
#region
/// <summary>
/// 上传预设的虚拟路径
/// </summary>
private string initPath = Const.ExcelUrl;
/// <summary>
/// 导入集合
/// </summary>
public static List<Model.View_Training_TestTrainingItem> viewTrainingItems = new List<Model.View_Training_TestTrainingItem>();
/// <summary>
/// 错误集合
/// </summary>
public static string errorInfos = string.Empty;
#endregion
#region
/// <summary>
/// 加载页面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.hdFileName.Text = string.Empty;
this.hdCheckResult.Text = string.Empty;
if (viewTrainingItems != null)
{
viewTrainingItems.Clear();
}
errorInfos = string.Empty;
}
}
#endregion
#region
/// <summary>
/// 数据导入
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAudit_Click(object sender, EventArgs e)
{
try
{
if (this.fuAttachUrl.HasFile == false)
{
ShowNotify("请您选择Excel文件!", MessageBoxIcon.Warning);
return;
}
string IsXls = Path.GetExtension(this.fuAttachUrl.FileName).ToString().Trim().ToLower();
if (IsXls != ".xls")
{
ShowNotify("只可以选择Excel文件!", MessageBoxIcon.Warning);
return;
}
if (viewTrainingItems != null)
{
viewTrainingItems.Clear();
}
if (!string.IsNullOrEmpty(errorInfos))
{
errorInfos = string.Empty;
}
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.fuAttachUrl.PostedFile.SaveAs(filePath);
ImportXlsToData(rootPath + initPath + this.hdFileName.Text);
}
catch (Exception ex)
{
ShowNotify("'" + ex.Message + "'", MessageBoxIcon.Warning);
}
}
#region Excel提取数据
/// <summary>
/// 从Excel提取数据--》Dataset
/// </summary>
/// <param name="filename">Excel文件路径名</param>
private void ImportXlsToData(string fileName)
{
try
{
viewTrainingItems.Clear();
string oleDBConnString = String.Empty;
oleDBConnString = "Provider=Microsoft.Jet.OLEDB.4.0;";
oleDBConnString += "Data Source=";
oleDBConnString += fileName;
oleDBConnString += ";Extended Properties=Excel 8.0;";
OleDbConnection oleDBConn = null;
OleDbDataAdapter oleAdMaster = null;
DataTable m_tableName = new DataTable();
DataSet ds = new DataSet();
oleDBConn = new OleDbConnection(oleDBConnString);
oleDBConn.Open();
m_tableName = oleDBConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
if (m_tableName != null && m_tableName.Rows.Count > 0)
{
m_tableName.TableName = m_tableName.Rows[0]["TABLE_NAME"].ToString().Trim();
}
string sqlMaster;
sqlMaster = " SELECT * FROM [" + m_tableName.TableName + "]";
oleAdMaster = new OleDbDataAdapter(sqlMaster, oleDBConn);
oleAdMaster.Fill(ds, "m_tableName");
oleAdMaster.Dispose();
oleDBConn.Close();
oleDBConn.Dispose();
AddDatasetToSQL(ds.Tables[0]);
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region Dataset的数据导入数据库
/// <summary>
/// 将Dataset的数据导入数据库
/// </summary>
/// <param name="pds">数据集</param>
/// <param name="Cols">数据集行数</param>
/// <returns></returns>
private bool AddDatasetToSQL(DataTable pds)
{
string result = string.Empty;
int ic, ir;
ic = pds.Columns.Count;
ir = pds.Rows.Count;
if (pds != null && ir > 0)
{
///试题类型
var trainings = from x in Funs.DB.Training_TestTraining select x;
///岗位
var workPosts = from x in Funs.DB.Base_WorkPost select x;
for (int i = 0; i < ir; i++)
{
Model.View_Training_TestTrainingItem newViewTrainingItem = new Model.View_Training_TestTrainingItem
{
TrainingCode = pds.Rows[i][0].ToString().Trim(),
TrainingItemCode = pds.Rows[i][2].ToString().Trim(),
Abstracts = pds.Rows[i][5].ToString().Trim(),
AItem = pds.Rows[i][6].ToString().Trim(),
BItem = pds.Rows[i][7].ToString().Trim(),
};
if (!string.IsNullOrEmpty(pds.Rows[i][12].ToString().Trim()))
{
newViewTrainingItem.Score = int.Parse(pds.Rows[i][12].ToString().Trim());
}
////试题类型
string col1 = pds.Rows[i][1].ToString().Trim();
if (string.IsNullOrEmpty(col1))
{
result += "第" + (i + 2).ToString() + "行," + "导入试题类型" + "," + "此项为必填项!" + "|";
}
else
{
var standard = trainings.FirstOrDefault(x => x.TrainingName == col1);
if (standard != null)
{
newViewTrainingItem.TrainingId = standard.TrainingId;
newViewTrainingItem.TrainingCode = standard.TrainingCode;
newViewTrainingItem.TrainingName = standard.TrainingName;
}
else
{
Model.Training_TestTraining newTraining = new Model.Training_TestTraining();
newViewTrainingItem.TrainingId = newTraining.TrainingId = SQLHelper.GetNewID(typeof(Model.Training_TestTraining));
newViewTrainingItem.TrainingName = newTraining.TrainingName = col1;
newTraining.TrainingCode = newViewTrainingItem.TrainingCode;
BLL.TestTrainingService.AddTestTraining(newTraining);
}
}
///试题题型
string col3 = pds.Rows[i][3].ToString().Trim();
if (string.IsNullOrEmpty(col3))
{
result += "第" + (i + 2).ToString() + "行," + "导入试题题型" + "," + "此项为必填项!" + "|";
}
else
{
if (col3 == "单选题")
{
newViewTrainingItem.TestType = "1";
//newViewTrainingItem.Score = SValue;
newViewTrainingItem.CItem = pds.Rows[i][8].ToString().Trim();
newViewTrainingItem.DItem = pds.Rows[i][9].ToString().Trim();
//if (string.IsNullOrEmpty(newViewTrainingItem.AItem) || string.IsNullOrEmpty(newViewTrainingItem.BItem) || string.IsNullOrEmpty(newViewTrainingItem.CItem) || string.IsNullOrEmpty(newViewTrainingItem.DItem))
//{
// result += "第" + (i + 2).ToString() + "行," + "单选题ABCD都不能为空!" + "|";
//}
}
else if (col3 == "多选题")
{
newViewTrainingItem.TestType = "2";
//newViewTrainingItem.Score = MValue;
newViewTrainingItem.CItem = pds.Rows[i][8].ToString().Trim();
newViewTrainingItem.DItem = pds.Rows[i][9].ToString().Trim();
newViewTrainingItem.EItem = pds.Rows[i][10].ToString().Trim();
//if (string.IsNullOrEmpty(newViewTrainingItem.AItem) || string.IsNullOrEmpty(newViewTrainingItem.BItem) || string.IsNullOrEmpty(newViewTrainingItem.CItem) || string.IsNullOrEmpty(newViewTrainingItem.DItem))
//{
// result += "第" + (i + 2).ToString() + "行," + "多选题ABCD都不能为空!" + "|";
//}
}
else
{
newViewTrainingItem.TestType = "3";
//newViewTrainingItem.Score = JValue;
//if (string.IsNullOrEmpty(newViewTrainingItem.AItem) || string.IsNullOrEmpty(newViewTrainingItem.BItem))
//{
// result += "第" + (i + 2).ToString() + "行," + "判断题AB不能为空!" + "|";
//}
}
}
////适合岗位
string col4 = pds.Rows[i][4].ToString().Trim();
if (!string.IsNullOrEmpty(col4))
{
List<string> WorkPostSels = Funs.GetStrListByStr(col4, ',');
if (WorkPostSels.Count() > 0)
{
string ids = string.Empty;
foreach (var item in WorkPostSels)
{
var wp = workPosts.FirstOrDefault(x => x.WorkPostName == item);
if (wp != null)
{
ids += wp.WorkPostId + ",";
}
else
{
result += "第" + (i + 2).ToString() + "行," + "导入适合岗位" + item + "," + "此项基础表不存在!" + "|";
}
}
if (!string.IsNullOrEmpty(ids))
{
newViewTrainingItem.WorkPostNames = col4;
newViewTrainingItem.WorkPostIds = ids.Substring(0, ids.LastIndexOf(","));
}
}
}
////正确答案
string col11 = pds.Rows[i][11].ToString().Trim();
if (string.IsNullOrEmpty(col11))
{
result += "第" + (i + 2).ToString() + "行," + "导入正确答案项" + "," + "为必填项!" + "|";
}
else
{
int icount = 0;
List<string> selecItem = Funs.GetStrListByStr(col11, ',');
foreach (var item in selecItem)
{
if (item != "A" && item != "a" && item != "B" && item != "b" && item != "C" && item != "c" && item != "D" && item != "d" && item != "E" && item != "e")
{
icount++;
}
}
if (icount == 0)
{
newViewTrainingItem.AnswerItems = col11.Replace("a", "A").Replace("b", "B").Replace("c", "C").Replace("d", "D").Replace("e", "E");
}
else
{
result += "第" + (i + 2).ToString() + "行," + "正确答案项只能输入ABCDE且用','隔开!" + "|";
}
}
////试题内容
if (string.IsNullOrEmpty(newViewTrainingItem.Abstracts))
{
result += "第" + (i + 2).ToString() + "行," + "导入试题内容" + "," + "为必填项!" + "|";
}
else
{
var addTrainingItem = Funs.DB.Training_TestTrainingItem.FirstOrDefault(x => x.Abstracts == newViewTrainingItem.Abstracts
&& x.TrainingId == newViewTrainingItem.TrainingId);
if (addTrainingItem == null)
{
Model.Training_TestTrainingItem newTrainingItem = new Model.Training_TestTrainingItem
{
TrainingItemId = newViewTrainingItem.TrainingItemId = SQLHelper.GetNewID(typeof(Model.Training_TestTraining)),
TrainingId = newViewTrainingItem.TrainingId,
TrainingItemCode = newViewTrainingItem.TrainingItemCode,
TrainingItemName = newViewTrainingItem.TrainingItemName,
AttachUrl = newViewTrainingItem.AttachUrl,
VersionNum = newViewTrainingItem.VersionNum,
TestType = newViewTrainingItem.TestType,
WorkPostIds = newViewTrainingItem.WorkPostIds,
WorkPostNames = newViewTrainingItem.WorkPostNames,
AItem = newViewTrainingItem.AItem,
BItem = newViewTrainingItem.BItem,
CItem = newViewTrainingItem.CItem,
DItem = newViewTrainingItem.DItem,
EItem = newViewTrainingItem.EItem,
Score = newViewTrainingItem.Score,
AnswerItems = newViewTrainingItem.AnswerItems,
};
if (newViewTrainingItem.Abstracts.Contains("(") || newViewTrainingItem.Abstracts.Contains(")")
|| newViewTrainingItem.Abstracts.Contains("") || newViewTrainingItem.Abstracts.Contains(""))
{
newTrainingItem.Abstracts = newViewTrainingItem.Abstracts;
}
else
{
newTrainingItem.Abstracts = newViewTrainingItem.Abstracts + "( )";
}
BLL.TestTrainingItemService.AddTestTrainingItem(newTrainingItem);
///加入培训试题库
viewTrainingItems.Add(newViewTrainingItem);
}
else
{
result += "第" + (i + 2).ToString() + "行," + "导入试题重复" + "|";
}
}
}
if (viewTrainingItems.Count > 0)
{
viewTrainingItems = viewTrainingItems.Distinct().ToList();
this.Grid1.Hidden = false;
this.Grid1.DataSource = viewTrainingItems;
this.Grid1.DataBind();
}
if (!string.IsNullOrEmpty(result))
{
viewTrainingItems.Clear();
result = "数据导入完成,未成功数据:" + result.Substring(0, result.LastIndexOf("|"));
errorInfos = result;
Alert alert = new Alert
{
Message = result,
Target = Target.Self
};
alert.Show();
}
else
{
errorInfos = string.Empty;
ShowNotify("导入成功!", MessageBoxIcon.Success);
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
}
else
{
Alert.ShowInTop("导入数据为空!", MessageBoxIcon.Warning);
}
return true;
}
#endregion
#endregion
#region
/// <summary>
/// 关闭导入弹出窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
if (Session["trainingItem"] != null)
{
viewTrainingItems = Session["trainingItem"] as List<Model.View_Training_TestTrainingItem>;
}
if (viewTrainingItems.Count > 0)
{
this.Grid1.Hidden = false;
this.Grid1.DataSource = viewTrainingItems;
this.Grid1.DataBind();
}
}
#endregion
#region
/// <summary>
/// 下载模板按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDownLoad_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Confirm.GetShowReference("确定下载导入模板吗?", String.Empty, MessageBoxIcon.Question, PageManager1.GetCustomEventReference(false, "Confirm_OK"), PageManager1.GetCustomEventReference("Confirm_Cancel")));
}
/// <summary>
/// 下载导入模板
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void PageManager1_CustomEvent(object sender, CustomEventArgs e)
{
if (e.EventArgument == "Confirm_OK")
{
string rootPath = Server.MapPath("~/");
string filePath = "File\\Excel\\DataIn\\岗位考试试题模版.xls";;
string uploadfilepath = rootPath + filePath;
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();
}
}
#endregion
}
}
@@ -0,0 +1,143 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class WorkPostTestTrainingItemIn
{
/// <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>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnAudit 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnAudit;
/// <summary>
/// btnDownLoad 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnDownLoad;
/// <summary>
/// fuAttachUrl 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.FileUpload fuAttachUrl;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Label2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label Label2;
/// <summary>
/// hdFileName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.HiddenField hdFileName;
/// <summary>
/// hdCheckResult 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.HiddenField hdCheckResult;
/// <summary>
/// lblBottom 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lblBottom;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}
@@ -0,0 +1,145 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WorkPostTestTrainingItemSave.aspx.cs" Inherits="FineUIPro.Web.HSSE.EduTrain.WorkPostTestTrainingItemSave" %>
<!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" />
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="SimpleForm1" runat="server" AjaxAspnetControls="divFile,divBeImageUrl" />
<f:Form ID="SimpleForm1" ShowBorder="false" ShowHeader="false" AutoScroll="true"
BodyPadding="10px" runat="server" RedStarPosition="BeforeText" LabelAlign="Right">
<Rows>
<f:FormRow ColumnWidths="40% 40% 20%">
<Items>
<f:TextBox ID="txtTrainingItemCode" runat="server" Label="编号" Required="true" ShowRedStar="true"
FocusOnPageLoad="true" MaxLength="50">
</f:TextBox>
<f:RadioButtonList runat="server" ID="rblTestType" Label="题型"
AutoPostBack="true" OnSelectedIndexChanged="rblTestType_SelectedIndexChanged">
<f:RadioItem Text="单选题" Value="1" Selected="true"/>
<f:RadioItem Text="多选题" Value="2" />
<f:RadioItem Text="判断题" Value="3" />
</f:RadioButtonList>
<f:Label runat="server" ID="lbScore" Label="分值"></f:Label>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DropDownBox runat="server" Label="适合岗位" ID="DropDownBox1"
DataControlID="RadioButtonList1" EnableMultiSelect="true" >
<PopPanel>
<f:SimpleForm ID="SimpleForm2" BodyPadding="10px" runat="server" AutoScroll="true"
ShowBorder="True" ShowHeader="false" Hidden="true">
<Items>
<f:Label ID="Label1" runat="server" Text="请选择适合的岗位"></f:Label>
<f:CheckBoxList ID="RadioButtonList1" ColumnNumber="3" runat="server">
</f:CheckBoxList>
</Items>
</f:SimpleForm>
</PopPanel>
</f:DropDownBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextArea ID="txtAbstracts" runat="server" Label="内容" Required="true" ShowRedStar="true"
MaxLength="2000" Height="64px"></f:TextArea>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtAItem" runat="server" Label="答案项A" MaxLength="500" ShowRedStar="true" Required="true">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtBItem" runat="server" Label="答案项B" MaxLength="500" ShowRedStar="true" Required="true">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow runat="server" ID="trC">
<Items>
<f:TextBox ID="txtCItem" runat="server" Label="答案项C" MaxLength="500">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow runat="server" ID="trD">
<Items>
<f:TextBox ID="txtDItem" runat="server" Label="答案项D" MaxLength="500">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow runat="server" ID="trE">
<Items>
<f:TextBox ID="txtEItem" runat="server" Label="答案项E" MaxLength="500">
</f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DropDownBox runat="server" Label="正确答案项" ID="DropDownBox2" DataControlID="RadioButtonList2" EnableMultiSelect="true">
<PopPanel>
<f:SimpleForm ID="SimpleForm3" BodyPadding="10px" runat="server" AutoScroll="true"
ShowBorder="True" ShowHeader="false" Hidden="true">
<Items>
<f:Label ID="Label2" runat="server" Text="请选择正确答案项:"></f:Label>
<f:CheckBoxList ID="RadioButtonList2" ColumnNumber="1" runat="server">
</f:CheckBoxList>
</Items>
</f:SimpleForm>
</PopPanel>
</f:DropDownBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:FileUpload runat="server" ID="btnFile" EmptyText="请选择图片/视频" OnFileSelected="btnFile_Click"
AutoPostBack="true" Label="图片/视频" >
</f:FileUpload>
<f:ContentPanel ID="ContentPanel2" runat="server" ShowHeader="false" ShowBorder="false"
Title="附件">
<table>
<tr style="height: 25px">
<td align="left">
<div id="divFile" runat="server">
</div>
</td>
</tr>
<tr style="height:130px" runat="server" id="trImageUrl" visible="false">
<td style="text-align:left">
<div id="divBeImageUrl" runat="server">
</div>
</td>
</tr>
</table>
</f:ContentPanel>
<f:Button ID="btnDelete" Icon="Delete" runat="server" OnClick="btnDelete_Click" ToolTip="删除">
</f:Button>
</Items>
</f:FormRow>
</Rows>
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Bottom" ToolbarAlign="Right" runat="server">
<Items>
<f:Label runat="server" ID="lbTemp"></f:Label>
<f:ToolbarFill ID="ToolbarFill1" runat="server"></f:ToolbarFill>
<f:Button ID="btnSave" Icon="SystemSave" runat="server" ValidateForms="SimpleForm1" Text="保存"
OnClick="btnSave_Click" Hidden="true">
</f:Button>
<f:Button ID="btnClose" EnablePostBack="false" runat="server" Icon="SystemClose" Text="关闭">
</f:Button>
<f:HiddenField ID="hdCompileMan" runat="server">
</f:HiddenField>
</Items>
</f:Toolbar>
</Toolbars>
</f:Form>
</form>
</body>
</html>
@@ -0,0 +1,391 @@
using BLL;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class WorkPostTestTrainingItemSave : PageBase
{
#region
/// <summary>
/// 主键
/// </summary>
public string TrainingItemId
{
get
{
return (string)ViewState["TrainingItemId"];
}
set
{
ViewState["TrainingItemId"] = value;
}
}
/// <summary>
/// 主表主键
/// </summary>
public string TrainingId
{
get
{
return (string)ViewState["TrainingId"];
}
set
{
ViewState["TrainingId"] = value;
}
}
/// <summary>
/// 附件
/// </summary>
private string AttachUrl
{
get
{
return (string)ViewState["AttachUrl"];
}
set
{
ViewState["AttachUrl"] = value;
}
}
/// <summary>
/// 单选题分值
/// </summary>
private int SValue
{
get
{
return (int)ViewState["SValue"];
}
set
{
ViewState["SValue"] = value;
}
}
/// <summary>
/// 多选题分值
/// </summary>
private int MValue
{
get
{
return (int)ViewState["MValue"];
}
set
{
ViewState["MValue"] = value;
}
}
/// <summary>
/// 判断题分值
/// </summary>
private int JValue
{
get
{
return (int)ViewState["JValue"];
}
set
{
ViewState["JValue"] = value;
}
}
#endregion
#region
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
SValue = 1;
MValue = 2;
JValue = 1;
var testRule = Funs.DB.Sys_TestRule.FirstOrDefault();
if (testRule != null)
{
SValue = testRule.SValue;
MValue = testRule.MValue;
JValue = testRule.JValue;
}
this.GetButtonPower();
LoadData();
BindEnumrableToDropDownList();
this.TrainingItemId = Request.QueryString["TrainingItemId"];
this.TrainingId = Request.QueryString["TrainingId"];
if (!String.IsNullOrEmpty(this.TrainingItemId))
{
var q = BLL.TestTrainingItemService.GetTestTrainingItemById(this.TrainingItemId);
if (q != null)
{
txtTrainingItemCode.Text = q.TrainingItemCode;
if (!string.IsNullOrEmpty(q.TestType))
{
this.rblTestType.SelectedValue = q.TestType;
if (q.TestType == "1")
{
this.lbScore.Text = SValue.ToString();
this.trE.Hidden = true;
}
else if (q.TestType == "2")
{
this.lbScore.Text = MValue.ToString();
}
else if (q.TestType == "3")
{
this.lbScore.Text = JValue.ToString();
this.trC.Hidden = true;
this.trD.Hidden = true;
this.trE.Hidden = true;
}
System.Web.UI.WebControls.ListItem[] myList2 = BLL.TestTrainingItemService.GetAnswerItemsList(this.rblTestType.SelectedValue);
RadioButtonList2.DataTextField = "Text";
RadioButtonList2.DataValueField = "Value";
RadioButtonList2.DataSource = myList2;
RadioButtonList2.DataBind();
if (!string.IsNullOrEmpty(q.AnswerItems))
{
string[] ids2 = q.AnswerItems.Split(',');
DropDownBox2.Values = ids2;
}
}
txtAbstracts.Text = q.Abstracts;
if (!string.IsNullOrEmpty(q.WorkPostIds))
{
string[] ids1 = q.WorkPostIds.Split(',');
DropDownBox1.Values = ids1;
}
this.txtAItem.Text = q.AItem;
this.txtBItem.Text = q.BItem;
this.txtCItem.Text = q.CItem;
this.txtDItem.Text = q.DItem;
this.txtEItem.Text = q.EItem;
this.AttachUrl = q.AttachUrl;
if (!string.IsNullOrEmpty(this.AttachUrl))
{
this.trImageUrl.Visible = true;
this.divFile.InnerHtml = BLL.UploadAttachmentService.ShowAttachment("../../", this.AttachUrl);
this.divBeImageUrl.InnerHtml = BLL.UploadAttachmentService.ShowImage("../../", this.AttachUrl);
}
}
}
else
{
this.lbScore.Text = SValue.ToString();
this.trE.Hidden = true;
}
}
}
/// <summary>
/// 删除附件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDelete_Click(object sender, EventArgs e)
{
this.trImageUrl.Visible = false;
this.AttachUrl = string.Empty;
this.divFile.InnerHtml = string.Empty;
this.divBeImageUrl.InnerHtml = string.Empty; ;
}
private void LoadData()
{
btnClose.OnClientClick = ActiveWindow.GetHideReference();
}
private void BindEnumrableToDropDownList()
{
List<Model.Base_WorkPost> myList = BLL.WorkPostService.GetWorkPostList();
RadioButtonList1.DataTextField = "WorkPostName";
RadioButtonList1.DataValueField = "WorkPostId";
RadioButtonList1.DataSource = myList;
RadioButtonList1.DataBind();
System.Web.UI.WebControls.ListItem[] myList2 = BLL.TestTrainingItemService.GetAnswerItemsList(this.rblTestType.SelectedValue);
RadioButtonList2.DataTextField = "Text";
RadioButtonList2.DataValueField = "Value";
RadioButtonList2.DataSource = myList2;
RadioButtonList2.DataBind();
}
#endregion
#region
/// <summary>
/// 保存数据
/// </summary>
private void SaveData(bool isClosed)
{
Model.Training_TestTrainingItem trainingItem = new Training_TestTrainingItem
{
TrainingItemCode = txtTrainingItemCode.Text.Trim(),
Abstracts = txtAbstracts.Text.Trim(),
TestType = this.rblTestType.SelectedValue,
AItem = txtAItem.Text.Trim(),
BItem = txtBItem.Text.Trim(),
CItem = txtCItem.Text.Trim(),
DItem = txtDItem.Text.Trim(),
EItem = txtEItem.Text.Trim(),
AttachUrl = this.AttachUrl,
};
if (!string.IsNullOrEmpty(DropDownBox1.Text))
{
trainingItem.WorkPostIds = String.Join(",", DropDownBox1.Values);
trainingItem.WorkPostNames = String.Join(",", DropDownBox1.Texts);
}
if (!string.IsNullOrEmpty(DropDownBox2.Text))
{
trainingItem.AnswerItems = String.Join(",", DropDownBox2.Values);
}
else
{
trainingItem.AnswerItems = string.Empty;
}
if (String.IsNullOrEmpty(TrainingItemId))
{
trainingItem.TrainingItemId = SQLHelper.GetNewID(typeof(Model.Training_TestTrainingItem));
trainingItem.TrainingId = this.TrainingId;
this.TrainingItemId = trainingItem.TrainingItemId;
BLL.TestTrainingItemService.AddTestTrainingItem(trainingItem);
BLL.LogService.AddSys_Log(this.CurrUser, trainingItem.TrainingItemCode, trainingItem.TrainingItemId, BLL.Const.TestTrainingMenuId, BLL.Const.BtnAdd);
}
else
{
Model.Training_TestTrainingItem t = BLL.TestTrainingItemService.GetTestTrainingItemById(TrainingItemId);
trainingItem.TrainingItemId = TrainingItemId;
if (t != null)
{
trainingItem.TrainingId = t.TrainingId;
}
BLL.TestTrainingItemService.UpdateTestTrainingItem(trainingItem);
BLL.LogService.AddSys_Log(this.CurrUser, trainingItem.TrainingItemCode, trainingItem.TrainingItemId, BLL.Const.TestTrainingMenuId, BLL.Const.BtnModify);
}
if (isClosed)
{
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
}
}
protected void btnSave_Click(object sender, EventArgs e)
{
SaveData(true);
}
#endregion
#region
/// <summary>
/// 附件上传
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnFile_Click(object sender, EventArgs e)
{
if (btnFile.HasFile)
{
this.AttachUrl = BLL.UploadFileService.UploadAttachment(BLL.Funs.RootPath, this.btnFile, this.AttachUrl, UploadFileService.TrainingFilePath);
if (!string.IsNullOrEmpty(this.AttachUrl))
{
this.trImageUrl.Visible = true;
this.divFile.InnerHtml = BLL.UploadAttachmentService.ShowAttachment("../../", this.AttachUrl);
this.divBeImageUrl.InnerHtml = BLL.UploadAttachmentService.ShowImage("../../", this.AttachUrl);
}
}
}
#endregion
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.TestTrainingMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnSave))
{
this.btnSave.Hidden = false;
}
}
}
#endregion
#region
/// <summary>
/// 验证教材名称是否存在
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TextBox_TextChanged(object sender, EventArgs e)
{
//var q = Funs.DB.Training_TrainingItem.FirstOrDefault(x => x.IsPass == true && x.TrainingId == this.TrainingId && x.TrainingItemName == this.txtTrainingItemName.Text.Trim() && (x.TrainingItemId != this.TrainingItemId || (this.TrainingItemId == null && x.TrainingItemId != null)));
//if (q != null)
//{
// ShowNotify("输入的教材名称已存在!", MessageBoxIcon.Warning);
//}
}
#endregion
/// <summary>
/// 题型变换事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void rblTestType_SelectedIndexChanged(object sender, EventArgs e)
{
this.trC.Hidden = false;
this.trD.Hidden = false;
this.trE.Hidden = false;
this.txtAItem.Text = string.Empty;
this.txtBItem.Text = string.Empty;
this.txtCItem.Text = string.Empty;
this.txtDItem.Text = string.Empty;
this.txtEItem.Text = string.Empty;
string testType = this.rblTestType.SelectedValue;
System.Web.UI.WebControls.ListItem[] myList2 = BLL.TestTrainingItemService.GetAnswerItemsList(testType);
RadioButtonList2.DataTextField = "Text";
RadioButtonList2.DataValueField = "Value";
RadioButtonList2.DataSource = myList2;
RadioButtonList2.DataBind();
DropDownBox2.Text = string.Empty;
DropDownBox2.Values = null;
if (testType == "1")
{
this.lbScore.Text = SValue.ToString();
this.trE.Hidden = true;
}
else if (testType == "2")
{
this.lbScore.Text = MValue.ToString();
}
else if (testType == "3")
{
this.lbScore.Text = JValue.ToString();
this.trC.Hidden = true;
this.trD.Hidden = true;
this.trE.Hidden = true;
this.txtAItem.Text = "对";
this.txtBItem.Text = "错";
}
}
}
}
@@ -0,0 +1,332 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class WorkPostTestTrainingItemSave
{
/// <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>
/// txtTrainingItemCode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtTrainingItemCode;
/// <summary>
/// rblTestType 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.RadioButtonList rblTestType;
/// <summary>
/// lbScore 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lbScore;
/// <summary>
/// DropDownBox1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownBox DropDownBox1;
/// <summary>
/// SimpleForm2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.SimpleForm SimpleForm2;
/// <summary>
/// Label1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label Label1;
/// <summary>
/// RadioButtonList1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBoxList RadioButtonList1;
/// <summary>
/// txtAbstracts 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextArea txtAbstracts;
/// <summary>
/// txtAItem 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtAItem;
/// <summary>
/// txtBItem 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtBItem;
/// <summary>
/// trC 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.FormRow trC;
/// <summary>
/// txtCItem 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtCItem;
/// <summary>
/// trD 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.FormRow trD;
/// <summary>
/// txtDItem 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtDItem;
/// <summary>
/// trE 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.FormRow trE;
/// <summary>
/// txtEItem 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtEItem;
/// <summary>
/// DropDownBox2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownBox DropDownBox2;
/// <summary>
/// SimpleForm3 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.SimpleForm SimpleForm3;
/// <summary>
/// Label2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label Label2;
/// <summary>
/// RadioButtonList2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBoxList RadioButtonList2;
/// <summary>
/// btnFile 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.FileUpload btnFile;
/// <summary>
/// ContentPanel2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ContentPanel ContentPanel2;
/// <summary>
/// divFile 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divFile;
/// <summary>
/// trImageUrl 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlTableRow trImageUrl;
/// <summary>
/// divBeImageUrl 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divBeImageUrl;
/// <summary>
/// btnDelete 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnDelete;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// lbTemp 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label lbTemp;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnSave 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnSave;
/// <summary>
/// btnClose 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnClose;
/// <summary>
/// hdCompileMan 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.HiddenField hdCompileMan;
}
}
@@ -0,0 +1,97 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WorkPostTestTrainingOut.aspx.cs" Inherits="FineUIPro.Web.HSSE.EduTrain.WorkPostTestTrainingOut" %>
<!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" />
</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:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="考试试题库" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="TrainingItemId" EnableColumnLines="true" ForceFit="true"
DataIDField="TrainingItemId" AllowSorting="true" SortField="TrainingCode,TrainingItemCode"
SortDirection="ASC" OnSort="Grid1_Sort" AllowPaging="true" IsDatabasePaging="true"
PageSize="15" OnPageIndexChange="Grid1_PageIndexChange" Width="980px" EnableTextSelection="True">
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:Button ID="btnOut" OnClick="btnMenuOut_Click" runat="server" ToolTip="导出" Icon="FolderUp" Text="导出"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:RenderField Width="90px" ColumnID="TrainingCode" DataField="TrainingCode" FieldType="String"
HeaderText="类型编号" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="TrainingName" DataField="TrainingName" FieldType="String"
HeaderText="试题类型" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="90px" ColumnID="TrainingItemCode" DataField="TrainingItemCode" FieldType="String"
HeaderText="试题编号" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="TestTypeName" DataField="TestTypeName" FieldType="String"
HeaderText="题型" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="WorkPostNames" DataField="WorkPostNames" FieldType="String"
HeaderText="适合岗位" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="300px" ColumnID="Abstracts" DataField="Abstracts" FieldType="String"
HeaderText="试题内容" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="AItem" DataField="AItem" FieldType="String"
HeaderText="答案项A" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="BItem" DataField="BItem" FieldType="String"
HeaderText="答案项B" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="CItem" DataField="CItem" FieldType="String"
HeaderText="答案项C" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="DItem" DataField="DItem" FieldType="String"
HeaderText="答案项D" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="EItem" DataField="EItem" FieldType="String"
HeaderText="答案项E" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
<f:RenderField Width="80px" ColumnID="AnswerItems" DataField="AnswerItems" FieldType="String"
HeaderText="答案项" HeaderTextAlign="Center" TextAlign="Left">
</f:RenderField>
</Columns>
<Listeners>
<f:Listener Event="beforerowcontextmenu" Handler="onRowContextMenu" />
</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:Panel>
</form>
<script type="text/jscript">
// 返回false,来阻止浏览器右键菜单
function onRowContextMenu(event, rowId) {
// F(menuID).show(); //showAt(event.pageX, event.pageY);
return false;
}
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>
@@ -0,0 +1,124 @@
using BLL;
using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class WorkPostTestTrainingOut : PageBase
{
/// <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();
}
}
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
{
string strSql = @"SELECT TrainingItemId,Training.TrainingCode,Training.TrainingName,TrainingItemCode,TrainingItemName,Abstracts,AttachUrl,VersionNum,TestType,WorkPostIds "
+ @" ,(CASE WHEN TestType = '1' THEN '单选题' WHEN TestType = '2' THEN '多选题' ELSE '判断题' END) AS TestTypeName,WorkPostNames,AItem,BItem,CItem,DItem,EItem "
+ @" ,Score,Replace(Replace(Replace(Replace(Replace(AnswerItems,'1','A'),'2', 'B'),'3', 'C'),'4', 'D'),'5', 'E') AS AnswerItems "
+ @" FROM dbo.Training_TestTrainingItem AS Item"
+ @" LEFT JOIN Training_TestTraining AS Training ON Item.TrainingId=Training.TrainingId"
+ @" WHERE 1 = 1";
List<SqlParameter> listStr = new List<SqlParameter>();
//if (!string.IsNullOrEmpty(this.txtName.Text.Trim()))
//{
// strSql += " AND (JobActivityName LIKE @Name OR JobActivityCode LIKE @Name OR JobActivitys.Remark LIKE @Name OR WorkAreas.WorkAreaName LIKE @Name OR Installation.InstallationName LIKE @Name)";
// listStr.Add(new SqlParameter("@Name", "%" + this.txtName.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.BindGrid();
}
#endregion
#region
/// <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();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, FineUIPro.GridSortEventArgs e)
{
BindGrid();
}
#endregion
#region
/// <summary>
/// 导出事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnMenuOut_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) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.Grid1.PageSize = Grid1.RecordCount;
BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
#endregion
}
}
@@ -0,0 +1,98 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class WorkPostTestTrainingOut
{
/// <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>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <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;
}
}
@@ -0,0 +1,53 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WorkPostTestTrainingSave.aspx.cs" Inherits="FineUIPro.Web.HSSE.EduTrain.WorkPostTestTrainingSave" %>
<!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" />
</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="txtSupTraining" runat="server" Label="上级" Required="true" ShowRedStar="true" MaxLength="50" AutoPostBack="true" OnTextChanged="TextBox_TextChanged"></f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextBox ID="txtTrainingCode" runat="server" Label="编号"
Required="true" ShowRedStar="true" FocusOnPageLoad="true" MaxLength="50"></f:TextBox>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextArea ID="txtTrainingName" runat="server" Label="名称" Required="true" ShowRedStar="true"
MaxLength="100" AutoPostBack="true" OnTextChanged="TextBox_TextChanged"></f:TextArea>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:CheckBox ID="ckIsEndLever" runat="server" Label="末级" Checked="true"></f:CheckBox>
</Items>
</f:FormRow>
</Rows>
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Bottom" ToolbarAlign="Right" runat="server">
<Items>
<f:Button ID="btnSave" Icon="SystemSave" runat="server" ValidateForms="SimpleForm1" Text="保存"
OnClick="btnSave_Click" Hidden="true">
</f:Button>
<f:Button ID="btnClose" EnablePostBack="false" runat="server" Icon="SystemClose" MarginRight="10px" Text="关闭">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
</f:Form>
</form>
</body>
</html>
@@ -0,0 +1,154 @@
using BLL;
using Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class WorkPostTestTrainingSave : PageBase
{
#region
/// <summary>
/// 主键
/// </summary>
public string TrainingId
{
get
{
return (string)ViewState["TrainingId"];
}
set
{
ViewState["TrainingId"] = value;
}
}
/// <summary>
/// 上级主键
/// </summary>
public string SupTrainingId
{
get
{
return (string)ViewState["SupTrainingId"];
}
set
{
ViewState["SupTrainingId"] = value;
}
}
#endregion
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.GetButtonPower();
btnClose.OnClientClick = ActiveWindow.GetHideReference();
this.TrainingId = Request.QueryString["TrainingId"];
this.SupTrainingId = Request.QueryString["SupTrainingId"];
if (!String.IsNullOrEmpty(TrainingId))
{
var q = BLL.TestTrainingService.GetTestTrainingById(TrainingId);
if (q != null)
{
this.SupTrainingId = q.SupTrainingId;
txtTrainingCode.Text = q.TrainingCode;
txtTrainingName.Text = q.TrainingName;
if (q.IsEndLever == true)
{
ckIsEndLever.Checked = true;
}
else
{
ckIsEndLever.Checked = false;
}
}
}
var supq = BLL.TestTrainingService.GetTestTrainingById(this.SupTrainingId);
if (supq != null)
{
this.txtSupTraining.Text = supq.TrainingName;
}
else
{
this.SupTrainingId = "0";
this.txtSupTraining.Text = "考试试题库";
}
}
}
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
Model.Training_TestTraining training = new Training_TestTraining
{
TrainingCode = txtTrainingCode.Text.Trim(),
TrainingName = txtTrainingName.Text.Trim(),
SupTrainingId = this.SupTrainingId,
IsEndLever = this.ckIsEndLever.Checked,
};
if (String.IsNullOrEmpty(TrainingId))
{
TrainingId = SQLHelper.GetNewID(typeof(Model.Training_TestTraining));
training.TrainingId = TrainingId;
BLL.TestTrainingService.AddTestTraining(training);
}
else
{
training.TrainingId = TrainingId;
BLL.TestTrainingService.UpdateTestTraining(training);
}
// 2. 关闭本窗体,然后刷新父窗体
// PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
// 2. 关闭本窗体,然后回发父窗体
PageContext.RegisterStartupScript(ActiveWindow.GetHidePostBackReference());
//PageContext.RegisterStartupScript(ActiveWindow.GetWriteBackValueReference(trainingId) + ActiveWindow.GetHideReference());
}
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
var buttonList = BLL.CommonService.GetAllButtonList(this.CurrUser.LoginProjectId, this.CurrUser.UserId, BLL.Const.TestTrainingMenuId);
if (buttonList.Count() > 0)
{
if (buttonList.Contains(BLL.Const.BtnSave))
{
this.btnSave.Hidden = false;
}
}
}
#endregion
#region
/// <summary>
/// 验证考试试题库名称是否存在
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void TextBox_TextChanged(object sender, EventArgs e)
{
var standard = Funs.DB.Training_TestTraining.FirstOrDefault(x => x.TrainingName == this.txtTrainingName.Text.Trim() && (x.TrainingId != this.TrainingId || (this.TrainingId == null && x.TrainingId != null)));
if (standard != null)
{
ShowNotify("输入的名称已存在!", MessageBoxIcon.Warning);
}
}
#endregion
}
}
@@ -0,0 +1,107 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.HSSE.EduTrain
{
public partial class WorkPostTestTrainingSave
{
/// <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>
/// txtSupTraining 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtSupTraining;
/// <summary>
/// txtTrainingCode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtTrainingCode;
/// <summary>
/// txtTrainingName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextArea txtTrainingName;
/// <summary>
/// ckIsEndLever 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.CheckBox ckIsEndLever;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// btnSave 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnSave;
/// <summary>
/// btnClose 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnClose;
}
}
@@ -822,70 +822,74 @@ namespace FineUIPro.Web.HSSE.SitePerson
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(电工).doc";
}
// else if (person.WorkPostName == "电焊工")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(电焊工).doc";
// }
// else if (person.WorkPostName == "防水普工")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(防水普工).doc";
// }
// else if (person.WorkPostName == "钢筋工")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(钢筋工).doc";
// }
// else if (person.WorkPostName == "管理人员")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(管理人员).doc";
// }
// else if (person.WorkPostName == "架子工")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(架子工).doc";
// }
// else if (person.WorkPostName == "木工")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(木工).doc";
// }
// else if (person.WorkPostName == "普工")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(普工).doc";
// }
// else if (person.WorkPostName == "施工电梯司机")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(施工电梯司机).doc";
// }
// else if (person.WorkPostName == "水电工")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(水电工).doc";
// }
// else if (person.WorkPostName == "司索信号工")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(司索信号工).doc";
// }
// else if (person.WorkPostName == "塔吊司机")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(塔吊司机).doc";
// }
// else if (person.WorkPostName == "挖机司机")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(挖机司机).doc";
// }
// else if (person.WorkPostName == "瓦工")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(瓦工).doc";
// }
// else if (person.WorkPostName == "渣土车司机")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(渣土车司机).doc";
// }
// else if (person.WorkPostName == "桩基")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(桩基).doc";
// }
// else if (person.WorkPostName == "装配、灌浆工")
// {
// initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(装配、灌浆工).doc";
// }
else if (person.WorkPostName == "电焊工")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(电焊工).doc";
}
else if (person.WorkPostName == "防水普工")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(防水普工).doc";
}
else if (person.WorkPostName == "钢筋工")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(钢筋工).doc";
}
else if (person.WorkPostName == "管理人员")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(管理人员).doc";
}
else if (person.WorkPostName == "架子工")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(架子工).doc";
}
else if (person.WorkPostName == "木工")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(木工).doc";
}
else if (person.WorkPostName == "普工")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(普工).doc";
}
else if (person.WorkPostName == "施工电梯司机")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(施工电梯司机).doc";
}
else if (person.WorkPostName == "水电工")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(水电工).doc";
}
else if (person.WorkPostName == "司索信号工")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(司索信号工).doc";
}
else if (person.WorkPostName == "塔吊司机")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(塔吊司机).doc";
}
else if (person.WorkPostName == "挖机司机")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(挖机司机).doc";
}
else if (person.WorkPostName == "瓦工")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(瓦工).doc";
}
else if (person.WorkPostName == "渣土车司机")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(渣土车司机).doc";
}
else if (person.WorkPostName == "桩基")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(桩基).doc";
}
else if (person.WorkPostName == "装配、灌浆工")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(装配、灌浆工).doc";
}
else if (person.WorkPostName == "班组管理员")
{
initTemplatePath = "File\\Word\\Person\\安全教育培训打印整套(班组管理员).doc";
}
else
{
Alert.ShowInTop("当前岗位类型不可导出!", MessageBoxIcon.Warning);
@@ -965,7 +969,7 @@ namespace FineUIPro.Web.HSSE.SitePerson
int MValueCount = 0;
int JValue = 0;
int JValueCount = 0;
Sys_TestRule sysTestRule = null;
// Sys_TestRule sysTestRule = null;
IQueryable<Training_TestRecordItem> getTestItems = null;
List<Training_TestRecordItem> getSingleItem = new List<Training_TestRecordItem>();
List<Training_TestRecordItem> getMultipleItem = new List<Training_TestRecordItem>();
@@ -985,21 +989,21 @@ namespace FineUIPro.Web.HSSE.SitePerson
unitName = BLL.UnitService.GetUnitNameByUnitId(person.UnitId);
workPostName = WorkPostService.getWorkPostNamesWorkPostIds(person.WorkPostId);
sysTestRule = Funs.DB.Sys_TestRule.FirstOrDefault();
// sysTestRule = Funs.DB.Sys_TestRule.FirstOrDefault();
getTestItems = from x in Funs.DB.Training_TestRecordItem
where x.TestRecordId == TestRecordId
select x;
getSingleItem = getTestItems.Where(x => x.TestType == "1").ToList();
SValue = sysTestRule.SValue; //每题分数
SValueCount = sysTestRule.SValue * getSingleItem.Count; //总分
// SValue = sysTestRule.SValue; //每题分数
// SValueCount = sysTestRule.SValue * getSingleItem.Count; //总分
getMultipleItem = getTestItems.Where(x => x.TestType == "2").ToList();
MValue = sysTestRule.MValue; //每题分数
MValueCount = sysTestRule.MValue * getMultipleItem.Count; //总分
// MValue = sysTestRule.MValue; //每题分数
// MValueCount = sysTestRule.MValue * getMultipleItem.Count; //总分
getIsTrueItem = getTestItems.Where(x => x.TestType == "3").ToList();
JValue = sysTestRule.JValue; //每题分数
JValueCount = sysTestRule.JValue * getIsTrueItem.Count; //总分
// JValue = sysTestRule.JValue; //每题分数
// JValueCount = sysTestRule.JValue * getIsTrueItem.Count; //总分
}
if (!string.IsNullOrEmpty(sign1))
@@ -1081,6 +1085,8 @@ namespace FineUIPro.Web.HSSE.SitePerson
if (getSingleItem.Count > 0)
{
SValue = (int)getSingleItem.FirstOrDefault().Score; //每题分数
SValueCount = (int)getSingleItem.Sum(item => item.Score); //总分
int num = 1;
foreach (var item in getSingleItem)
{
@@ -1132,6 +1138,8 @@ namespace FineUIPro.Web.HSSE.SitePerson
tableM.Columns.Add("MOption");
if (getMultipleItem.Count > 0)
{
MValue = (int)getMultipleItem.FirstOrDefault().Score; //每题分数
MValueCount = (int)getMultipleItem.Sum(item => item.Score); //总分
int num = 1;
foreach (var item in getMultipleItem)
{
@@ -1183,6 +1191,8 @@ namespace FineUIPro.Web.HSSE.SitePerson
if (getIsTrueItem.Count > 0)
{
JValue = (int)getIsTrueItem.FirstOrDefault().Score; //每题分数
JValueCount = (int)getIsTrueItem.Sum(item => item.Score); //总分
int num = 1;
foreach (var item in getIsTrueItem)
{
+60
View File
@@ -439196,6 +439196,8 @@ namespace Model
private string _EItemRussian;
private System.Nullable<int> _Score;
private EntityRef<Training_TestTraining> _Training_TestTraining;
private EntityRef<Training_TestTraining> _Training;
@@ -439260,6 +439262,8 @@ namespace Model
partial void OnDItemRussianChanged();
partial void OnEItemRussianChanging(string value);
partial void OnEItemRussianChanged();
partial void OnScoreChanging(System.Nullable<int> value);
partial void OnScoreChanged();
#endregion
public Training_TestTrainingItem()
@@ -439833,6 +439837,26 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Score", DbType="Int")]
public System.Nullable<int> Score
{
get
{
return this._Score;
}
set
{
if ((this._Score != value))
{
this.OnScoreChanging(value);
this.SendPropertyChanging();
this._Score = value;
this.SendPropertyChanged("Score");
this.OnScoreChanged();
}
}
}
[global::System.Data.Linq.Mapping.AssociationAttribute(Name="FK_Training_TestTrainingItem_Training_TestTraining", Storage="_Training_TestTraining", ThisKey="TrainingId", OtherKey="TrainingId", IsForeignKey=true)]
public Training_TestTraining Training_TestTraining
{
@@ -486479,6 +486503,8 @@ namespace Model
private System.Nullable<int> _TrainCount;
private System.Nullable<int> _TestCount;
private string _AuditorId;
private string _AuditorName;
@@ -487217,6 +487243,22 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TestCount", DbType="Int")]
public System.Nullable<int> TestCount
{
get
{
return this._TestCount;
}
set
{
if ((this._TestCount != value))
{
this._TestCount = value;
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AuditorId", DbType="NVarChar(50)")]
public string AuditorId
{
@@ -492417,6 +492459,8 @@ namespace Model
private string _EItemEng;
private System.Nullable<int> _Score;
private string _AnswerItems;
public View_Training_TestTrainingItem()
@@ -492791,6 +492835,22 @@ namespace Model
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Score", DbType="Int")]
public System.Nullable<int> Score
{
get
{
return this._Score;
}
set
{
if ((this._Score != value))
{
this._Score = value;
}
}
}
[global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_AnswerItems", DbType="NVarChar(50)")]
public string AnswerItems
{
@@ -429,5 +429,104 @@ namespace WebAPI.Controllers
}
#endregion
#region PersonId的岗位获取试卷
/// <summary>
/// 根据PersonId的岗位获取试卷
/// </summary>
/// <param name="personId">人员ID</param>
/// <returns></returns>
public Model.ResponeData getTestPlanRecordItemByPersonId(string personId, string projectId)
{
var responeData = new Model.ResponeData();
try
{
var person = Funs.DB.View_SitePerson_Person.FirstOrDefault(x => x.PersonId == personId);
if (person != null)
{
Model.Training_TestRecord newTestRecord = new Model.Training_TestRecord
{
TestRecordId = SQLHelper.GetNewID(),
ProjectId = projectId,
TestManId = person.PersonId
};
TestRecordService.AddTestRecord(newTestRecord);
var testRecordId = CreateTestRecordItemNew(newTestRecord.TestRecordId, person);
responeData.code = 1;
responeData.data = new { testRecordId };
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
public static string CreateTestRecordItemNew(string testRecordId, Model.View_SitePerson_Person person)
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
var getTestTrainingItemList = (from x in Funs.DB.Training_TestTrainingItem
where x.TrainingId == "99ccf4c8-6f8e-47da-a900-53b12a278f25" &&
x.WorkPostNames.Contains(person.WorkPostName)
orderby x.TestType, x.TrainingItemCode
select new
{
x.TrainingItemId,
x.TrainingId,
x.TrainingItemName,
x.TrainingItemCode,
x.Abstracts,
x.AttachUrl,
x.TestType,
x.WorkPostIds,
x.WorkPostNames,
x.AItem,
x.BItem,
x.CItem,
x.DItem,
x.EItem,
x.AnswerItems,
x.Score
}).ToList();
if (getTestTrainingItemList.Count() > 0)
{
var getItems = from x in getTestTrainingItemList
select new Model.Training_TestRecordItem
{
TestRecordItemId = SQLHelper.GetNewID(),
TestRecordId = testRecordId,
TrainingItemName = x.TrainingItemName,
TrainingItemCode = x.TrainingItemCode,
Abstracts = x.Abstracts,
AttachUrl = x.AttachUrl,
TestType = x.TestType,
AItem = x.AItem,
BItem = x.BItem,
CItem = x.CItem,
DItem = x.DItem,
EItem = x.EItem,
AnswerItems = x.AnswerItems,
Score = x.Score,
};
db.Training_TestRecordItem.InsertAllOnSubmit(getItems);
db.SubmitChanges();
}
return testRecordId;
}
}
#endregion
}
}
@@ -634,5 +634,73 @@ namespace WebAPI.Controllers
#endregion
#region
/// <summary>
/// 岗位交卷
/// <param name="testRecordId">试卷ID</param>
/// </summary>
public Model.ResponeData SaveSubmitTestRecord(string testRecordId,string Signature)
{
var responeData = new Model.ResponeData();
try
{
using (Model.SUBQHSEDB db = new Model.SUBQHSEDB(Funs.ConnString))
{
string returnTestRecordId = string.Empty;
decimal getTestScores = 0;
var getTestRecord = db.Training_TestRecord.FirstOrDefault(e => e.TestRecordId == testRecordId);
if (getTestRecord != null)
{
if (getTestRecord.TestStartTime.HasValue)
{
getTestRecord.Signature = Signature;
getTestRecord.TestEndTime = DateTime.Now;
getTestRecord.TestScores = db.Training_TestRecordItem.Where(x => x.TestRecordId == testRecordId).Sum(x => x.SubjectScore ?? 0);
db.SubmitChanges();
getTestScores = getTestRecord.TestScores ?? 0;
}
////考试分数
int getPassScores = 70;
if (getTestScores < getPassScores)
{
int testCount = db.Training_TestRecord.Where(x => x.TestPlanId == getTestRecord.TestPlanId && x.TestManId == getTestRecord.TestManId).Count();
if (testCount < 2)
{
////重新生成一条考试记录 以及考试试卷
returnTestRecordId = APITestRecordService.getResitTestRecord(getTestRecord);
responeData.message = "考试不合格!您的成绩为:【" + getTestScores.ToString() + "】,您将进入补考。";
}
else
{
// APITestRecordService.updateAll(getTestRecord.TestPlanId);
responeData.message = "考试不合格!您的成绩为:【" + getTestScores.ToString() + "】,请再次参加培训后补考。";
}
}
else
{
// APITestRecordService.updateAll(getTestRecord.TestPlanId);
responeData.message = "恭喜考试通过!您的成绩为:【" + getTestScores.ToString() + "】。";
}
responeData.data = new { getTestScores, getPassScores, returnTestRecordId };
}
}
}
catch (Exception ex)
{
responeData.code = 0;
responeData.message = ex.Message;
}
return responeData;
}
#endregion
}
}
+12 -3
View File
@@ -1158,15 +1158,24 @@ namespace WebAPI.Controllers
{
if (person != null && !string.IsNullOrEmpty(person.IdentityCard))
{
var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.IdentityCard == person.IdentityCard.Trim() && x.ProjectId == person.ProjectId);
var getPerson = db.SitePerson_Person.FirstOrDefault(x => x.IdentityCard == person.IdentityCard.Trim() && x.UnitId == person.UnitId);
if (getPerson != null)
{
responeData.code = -1;
responeData.message = "该身份证号码已存在两条记录,请联系管理员处理!";
responeData.message = "该身份证号码在次单位下已存在两条记录,请联系管理员处理!";
}
else
{
var items = db.SitePerson_Person.Where(x => x.IdentityCard == person.IdentityCard.Trim()).ToList();
if (items.Count > 0)
{
foreach (var item in items)
{
item.IsUsedType = "0";
PersonService.UpdatePerson(item);
}
}
Model.SitePerson_Person newPerson = new Model.SitePerson_Person
{
PersonId = SQLHelper.GetNewID(),
@@ -154,6 +154,11 @@ namespace WebAPI.Filter
, "ProjectUnitPenetrate*getDataByProjectUnitId"
, "Rectify*getRectifyList"
, "Rectify*getRectifyItemListBy"
, "TestPlan*getTestPlanRecordItemByPersonId"
, "TestRecord*getTestRecordItemListByTestRecordId"
, "TestRecord*getTestTimesByTestRecordId"
, "TestRecord*getTestRecordItemAnswerBySelectedItem"
, "TestRecord*SaveSubmitTestRecord"
};
/// <summary>
+1
View File
@@ -204,6 +204,7 @@
<Compile Include="Controllers\HSSE\InformedConsentFormController.cs" />
<Compile Include="Controllers\HSSE\MaterialController.cs" />
<Compile Include="Controllers\HSSE\ModelTestRecordController.cs" />
<Compile Include="Controllers\HSSE\RectifyController.cs" />
<Compile Include="Controllers\HSSE\TrainTestRecordController.cs" />
<Compile Include="Controllers\HSSE\ViolationPersonController.cs" />
<Compile Include="Controllers\SHIYE\ShiYeController.cs" />