feat(clgl): 新增入库材料条形码打印

生成入库单时同步生成入库材料条形码明细,并在入库单管理中支持整单和单条条形码打印。
This commit is contained in:
2026-05-18 21:28:56 +08:00
parent 2c25bb3484
commit 44cd0fcf8c
13 changed files with 563 additions and 43 deletions
+72 -34
View File
@@ -98,6 +98,7 @@
FieldType="String" HeaderText="备注" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:LinkButtonField Width="150px" ColumnID="btnInPlanMasterPrint" TextAlign="Center" CommandName="btnInPlanMasterPrint" Text="入库单打印" />
<f:LinkButtonField Width="150px" ColumnID="btnInputBarCodePrint" TextAlign="Center" CommandName="btnInputBarCodePrint" Text="入库条码打印" />
</Columns>
<Listeners>
<f:Listener Event="beforerowcontextmenu" Handler="onRowContextMenu" />
@@ -125,40 +126,77 @@
<f:Panel runat="server" ID="panelBottomRegion" RegionPosition="Bottom" RegionSplit="true" RegionSplitWidth="20px" EnableCollapse="true"
Title="底部面板" ShowBorder="false" RegionPercent="40%" ShowHeader="false" BodyPadding="1px" Layout="Fit">
<Items>
<f:Panel ID="Panel3" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false" AutoScroll="true"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid2" ShowBorder="true" ShowHeader="true" Title="入库申请明细表" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="Id" AllowCellEditing="true"
ClicksToEdit="2" DataIDField="Id" AllowSorting="true" SortField="Id"
SortDirection="DESC" EnableColumnLines="true"
AllowPaging="true" IsDatabasePaging="true" PageSize="10000" EnableSummary="true" SummaryPosition="Bottom">
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Grid2.PageIndex * Grid2.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="150px" ColumnID="MaterialCode" DataField="MaterialCode" SortField="MaterialCode"
FieldType="String" HeaderText="材料编码" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="MaterialName" DataField="MaterialName" SortField="MaterialName"
FieldType="String" HeaderText="材料名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="300px" ColumnID="MaterialDef" DataField="MaterialDef" SortField="MaterialDef"
FieldType="String" HeaderText="材料描述" TextAlign="Left" HeaderTextAlign="Center" ExpandUnusedSpace="True">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="PlanNum" DataField="PlanNum" SortField="PlanNum"
FieldType="String" HeaderText="计划数量" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="ActNum" DataField="ActNum" SortField="ActNum"
FieldType="String" HeaderText="实际数量" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:Grid>
</Items>
</f:Panel>
<f:TabStrip ID="TabStrip1" ShowBorder="false" TabPosition="Top"
EnableTabCloseMenu="false" ActiveTabIndex="0" runat="server" AutoPostBack="true" OnTabIndexChanged="TabStrip1_TabIndexChanged">
<Tabs>
<f:Tab ID="TabDetail" Title="入库明细表" BodyPadding="1px" Layout="VBox" runat="server" AutoScroll="true">
<Items>
<f:Grid ID="Grid2" ShowBorder="false" ShowHeader="false" Title="入库申请明细表" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="Id" AllowCellEditing="true"
ClicksToEdit="2" DataIDField="Id" AllowSorting="true" SortField="Id"
SortDirection="DESC" EnableColumnLines="true"
AllowPaging="true" IsDatabasePaging="true" PageSize="10000" EnableSummary="true" SummaryPosition="Bottom">
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="Label1" runat="server" Text='<%# Grid2.PageIndex * Grid2.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="150px" ColumnID="MaterialCode" DataField="MaterialCode" SortField="MaterialCode"
FieldType="String" HeaderText="材料编码" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="MaterialName" DataField="MaterialName" SortField="MaterialName"
FieldType="String" HeaderText="材料名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="300px" ColumnID="MaterialDef" DataField="MaterialDef" SortField="MaterialDef"
FieldType="String" HeaderText="材料描述" TextAlign="Left" HeaderTextAlign="Center" ExpandUnusedSpace="True">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="PlanNum" DataField="PlanNum" SortField="PlanNum"
FieldType="String" HeaderText="计划数量" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="ActNum" DataField="ActNum" SortField="ActNum"
FieldType="String" HeaderText="实际数量" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:Grid>
</Items>
</f:Tab>
<f:Tab ID="TabInputDetailBarCode" Title="入库明细条码表" BodyPadding="1px" Layout="VBox" runat="server" AutoScroll="true">
<Items>
<f:Grid ID="Grid3" ShowBorder="false" ShowHeader="false" Title="入库明细条码表" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="Id" DataIDField="Id" AllowSorting="true"
SortField="Id" SortDirection="DESC" EnableColumnLines="true" EnableTextSelection="true"
AllowPaging="true" IsDatabasePaging="true" PageSize="10000" OnRowCommand="Grid3_RowCommand">
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="Label2" runat="server" Text='<%# Grid3.PageIndex * Grid3.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="220px" ColumnID="CusBillCode" DataField="CusBillCode" SortField="CusBillCode"
FieldType="String" HeaderText="入库单编号" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="MaterialCode" DataField="MaterialCode" SortField="MaterialCode"
FieldType="String" HeaderText="材料编码" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="MaterialName" DataField="MaterialName" SortField="MaterialName"
FieldType="String" HeaderText="材料名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="300px" ColumnID="MaterialDef" DataField="MaterialDef" SortField="MaterialDef"
FieldType="String" HeaderText="材料描述" TextAlign="Left" HeaderTextAlign="Center" ExpandUnusedSpace="True">
</f:RenderField>
<f:RenderField Width="360px" ColumnID="BarCode" DataField="BarCode" SortField="BarCode"
FieldType="String" HeaderText="条码内容" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:LinkButtonField Width="120px" ColumnID="btnBarCodePrint" TextAlign="Center" CommandName="btnBarCodePrint" Text="入库条码打印" />
</Columns>
</f:Grid>
</Items>
</f:Tab>
</Tabs>
</f:TabStrip>
</Items>
</f:Panel>
</Items>
+77 -1
View File
@@ -64,6 +64,8 @@ namespace FineUIPro.Web.CLGL
Grid2.DataSource = null;
Grid2.DataBind();
Grid3.DataSource = null;
Grid3.DataBind();
}
private void BindDetailGrid(string inputMasterId)
{
@@ -93,6 +95,15 @@ namespace FineUIPro.Web.CLGL
Grid2.SummaryData = summary;
}
private void BindBarCodeGrid(string inputMasterId)
{
Model.Tw_InputDetailBarCodeOutput table = new Model.Tw_InputDetailBarCodeOutput();
table.InputMasterId = inputMasterId;
var tb = BLL.TwInputdetailBarCodeService.GetListData(table, Grid3);
Grid3.DataSource = tb;
Grid3.DataBind();
}
#endregion
#region GV
@@ -134,6 +145,7 @@ namespace FineUIPro.Web.CLGL
{
string ID = Grid1.DataKeys[e.RowIndex][0].ToString();
BindDetailGrid(ID);
BindBarCodeGrid(ID);
}
}
/// <summary>
@@ -321,7 +333,71 @@ namespace FineUIPro.Web.CLGL
{
Print(e.RowID);
}
else if (e.CommandName == "btnInputBarCodePrint")
{
PrintInputBarCode(e.RowID, string.Empty);
}
}
protected void Grid3_RowCommand(object sender, GridCommandEventArgs e)
{
if (e.CommandName == "btnBarCodePrint")
{
PrintInputBarCode(string.Empty, e.RowID);
}
}
protected void TabStrip1_TabIndexChanged(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Grid1.SelectedRowID))
{
if (TabStrip1.ActiveTabIndex == 0)
{
BindDetailGrid(Grid1.SelectedRowID);
}
else if (TabStrip1.ActiveTabIndex == 1)
{
BindBarCodeGrid(Grid1.SelectedRowID);
}
}
}
private void PrintInputBarCode(string inputMasterId, string barCodeId)
{
if (string.IsNullOrEmpty(inputMasterId) && string.IsNullOrEmpty(barCodeId))
{
ShowNotify("请选择要打印的项", MessageBoxIcon.Warning);
return;
}
BLL.FastReportService.ResetData();
var query = new Tw_InputDetailBarCodeOutput
{
Id = barCodeId,
InputMasterId = inputMasterId
};
var list = TwInputdetailBarCodeService.GetListData(query);
if (list == null || list.Count == 0)
{
ShowNotify("未找到入库条码明细,请确认已生成入库单并已创建条码明细表。", MessageBoxIcon.Warning);
return;
}
DataTable table = LINQToDataTable(list);
if (table != null)
{
table.TableName = "Table1";
}
BLL.FastReportService.AddFastreportTable(table);
string rootPath = Server.MapPath("~/");
string initTemplatePath = "File\\Fastreport\\材料入库条码.frx";
if (File.Exists(rootPath + initTemplatePath))
{
PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("~/Controls/Fastreport.aspx?ReportPath={0}", rootPath + initTemplatePath)));
}
}
private void Print(string Id)
{
BLL.FastReportService.ResetData();
@@ -432,4 +508,4 @@ namespace FineUIPro.Web.CLGL
}
}
}
}
}
+38 -2
View File
@@ -159,13 +159,22 @@ namespace FineUIPro.Web.CLGL
protected global::FineUIPro.Panel panelBottomRegion;
/// <summary>
/// Panel3 控件。
/// TabStrip1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel3;
protected global::FineUIPro.TabStrip TabStrip1;
/// <summary>
/// TabDetail 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Tab TabDetail;
/// <summary>
/// Grid2 控件。
@@ -185,6 +194,33 @@ namespace FineUIPro.Web.CLGL
/// </remarks>
protected global::System.Web.UI.WebControls.Label Label1;
/// <summary>
/// TabInputDetailBarCode 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Tab TabInputDetailBarCode;
/// <summary>
/// Grid3 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid3;
/// <summary>
/// Label2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label Label2;
/// <summary>
/// Window1 控件。
/// </summary>
@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<Report ScriptLanguage="CSharp" ReportInfo.Created="05/18/2026 00:00:00" ReportInfo.Modified="05/18/2026 00:00:00" ReportInfo.CreatorVersion="2021.3.0.0">
<ScriptText>using System;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Windows.Forms;
using System.Drawing;
using System.Data;
using FastReport;
using FastReport.Data;
using FastReport.Dialog;
using FastReport.Barcode;
using FastReport.Table;
using FastReport.Utils;
namespace FastReport
{
public class ReportScript
{
}
}
</ScriptText>
<Dictionary>
<TableDataSource Name="Table1" ReferenceName="Table1" DataType="System.Int32" Enabled="true">
<Column Name="Id" DataType="System.String"/>
<Column Name="InputDetailId" DataType="System.String"/>
<Column Name="InputMasterId" DataType="System.String"/>
<Column Name="CusBillCode" DataType="System.String"/>
<Column Name="MaterialCode" DataType="System.String"/>
<Column Name="MaterialName" DataType="System.String"/>
<Column Name="MaterialDef" DataType="System.String"/>
<Column Name="BarCode" DataType="System.String"/>
</TableDataSource>
</Dictionary>
<ReportPage Name="Page1" PaperWidth="80" PaperHeight="30" LeftMargin="0" TopMargin="0" RightMargin="0" BottomMargin="0">
<DataBand Name="Data1" Width="302.4" Height="113.4" DataSource="Table1">
<BarcodeObject Name="Barcode1" Left="18.9" Top="18.9" Width="264.6" Height="75.6" AutoSize="false" Text="[Table1.BarCode]" ShowText="true" AllowExpressions="true" Barcode="Code128"/>
</DataBand>
</ReportPage>
</Report>
+2 -1
View File
@@ -377,6 +377,7 @@
<Content Include="Controls\QRCodePrint.aspx" />
<Content Include="Controls\SeeQRImage.aspx" />
<Content Include="Controls\ShowQRImage.aspx" />
<Content Include="File\Fastreport\材料入库条码.frx" />
<Content Include="Controls\ProjectWBSControl.ascx" />
<Content Include="Controls\UnitProjectTControl.ascx" />
<Content Include="Controls\WBSControl.ascx" />
@@ -17059,4 +17060,4 @@
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>