!提交代码
This commit is contained in:
57
货架标准上位机/Views/Controls/DataChartView.xaml
Normal file
57
货架标准上位机/Views/Controls/DataChartView.xaml
Normal file
@ -0,0 +1,57 @@
|
||||
<pi:UserControlBase x:Class="货架标准上位机.DataChartView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
|
||||
mc:Ignorable="d"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
d:DesignHeight="450" d:DesignWidth="800" LoadedVisibleFirst="loadFirst">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<!--筛选栏-->
|
||||
<Grid Margin="5,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="auto"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<UniformGrid Grid.Column="0" Columns="2">
|
||||
<ComboBox Margin="5" ItemsSource="{Binding Year}" SelectedIndex="{Binding YearIndex}" Style="{StaticResource ComboBoxExtend}" hc:InfoElement.Placeholder="请选择年份" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="年份"></ComboBox>
|
||||
<ComboBox Margin="5" ItemsSource="{Binding Month}" SelectedIndex="{Binding MonthIndex}" Style="{StaticResource ComboBoxExtend}" hc:InfoElement.Placeholder="请选择月份" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="月份"></ComboBox>
|
||||
</UniformGrid>
|
||||
<hc:UniformSpacingPanel Grid.Column="1" Spacing="5">
|
||||
<Button Command="{Binding ButStatChartCommand}" Style="{StaticResource ButtonDefault}" Width="70" >刷新</Button>
|
||||
</hc:UniformSpacingPanel>
|
||||
</Grid>
|
||||
<hc:LoadingLine VerticalAlignment="Top" IsRunning="{Binding IsLoad}" Visibility="{Binding IsLoad,Converter={StaticResource Boolean2VisibilityConverter}}"/>
|
||||
<!--图表栏-->
|
||||
<lvc:CartesianChart Grid.Row="1" Grid.ColumnSpan="3" LegendLocation="Top" >
|
||||
<!--内容-->
|
||||
<lvc:CartesianChart.Series>
|
||||
<lvc:LineSeries LineSmoothness="0.3" Stroke="DeepSkyBlue" Title="总数量" Values="{Binding ChartValues1}" DataLabels="True"></lvc:LineSeries>
|
||||
<lvc:LineSeries LineSmoothness="0.3" Stroke="LimeGreen" Title="合格数量" Values="{Binding ChartValues2}" DataLabels="False"></lvc:LineSeries>
|
||||
<lvc:LineSeries LineSmoothness="0.3" Stroke="OrangeRed" Title="不合格数量" Values="{Binding ChartValues3}" DataLabels="False"></lvc:LineSeries>
|
||||
</lvc:CartesianChart.Series>
|
||||
<!--x轴-->
|
||||
<lvc:CartesianChart.AxisX>
|
||||
<!--<lvc:Axis Title="日期" LabelFormatter="{Binding LabelFormatterX}"></lvc:Axis>-->
|
||||
<lvc:Axis Title="日期" Labels="{Binding ChartLabelsX}">
|
||||
<!--显示所有的列-->
|
||||
<lvc:Axis.Separator>
|
||||
<lvc:Separator Step="1"></lvc:Separator>
|
||||
</lvc:Axis.Separator>
|
||||
</lvc:Axis>
|
||||
</lvc:CartesianChart.AxisX>
|
||||
<!--y轴-->
|
||||
<lvc:CartesianChart.AxisY>
|
||||
<!--<lvc:Axis Title="数量" LabelFormatter="{Binding LabelFormatterY}"></lvc:Axis>-->
|
||||
<lvc:Axis Title="数量" MinValue="0"></lvc:Axis>
|
||||
</lvc:CartesianChart.AxisY>
|
||||
</lvc:CartesianChart>
|
||||
</Grid>
|
||||
</pi:UserControlBase>
|
44
货架标准上位机/Views/Controls/DataChartView.xaml.cs
Normal file
44
货架标准上位机/Views/Controls/DataChartView.xaml.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using HandyControl.Controls;
|
||||
using Ping9719.WpfEx;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据图表
|
||||
/// </summary>
|
||||
public partial class DataChartView : UserControlBase
|
||||
{
|
||||
DataChartViewModel viewModel = new DataChartViewModel();
|
||||
public DataChartView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
//第一次加载
|
||||
private void loadFirst(object sender, EventArgs e)
|
||||
{
|
||||
if (IsInDesignMode)
|
||||
return;
|
||||
|
||||
viewModel.UpdataYear();
|
||||
}
|
||||
}
|
||||
}
|
62
货架标准上位机/Views/Controls/DataListView.xaml
Normal file
62
货架标准上位机/Views/Controls/DataListView.xaml
Normal file
@ -0,0 +1,62 @@
|
||||
<pi:UserControlBase x:Class="货架标准上位机.DataListView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
d:DesignHeight="450" d:DesignWidth="800" LoadedVisibleFirst="loadFirst">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<!--条件区-->
|
||||
<Grid Margin="5,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="auto"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<UniformGrid Grid.Column="0" Columns="4">
|
||||
<hc:DateTimePicker SelectedDateTime="{Binding TimeGo}" Margin="5" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="开始时间" VerticalAlignment="Center"/>
|
||||
<hc:DateTimePicker SelectedDateTime="{Binding TimeTo}" Margin="5" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="结束时间" VerticalAlignment="Center"/>
|
||||
<hc:TextBox Text="{Binding Info1}" Margin="5" Style="{StaticResource TextBoxExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="信息1" hc:InfoElement.Placeholder="模糊匹配" VerticalAlignment="Center"/>
|
||||
<hc:TextBox Text="{Binding Info2}" Margin="5" Style="{StaticResource TextBoxExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="信息2" hc:InfoElement.Placeholder="模糊匹配" VerticalAlignment="Center"/>
|
||||
</UniformGrid>
|
||||
<hc:UniformSpacingPanel Grid.Column="1" Spacing="5">
|
||||
<Button Content="导出Excel" Command="{Binding ExportExcelCommand}" Style="{StaticResource ButtonSuccess}" Width="80"></Button>
|
||||
<Button Content="查询" Command="{Binding UpdateListCommand}" Style="{StaticResource ButtonPrimary}" Width="70"></Button>
|
||||
</hc:UniformSpacingPanel>
|
||||
</Grid>
|
||||
<hc:LoadingLine VerticalAlignment="Top" IsRunning="{Binding IsLoad}" Visibility="{Binding IsLoad,Converter={StaticResource Boolean2VisibilityConverter}}"/>
|
||||
<!--内容区-->
|
||||
<Border Grid.Row="1" Style="{StaticResource BorderRegion}" BorderThickness="1" Background="#EEEEEE" Margin="3,0,3,3" Padding="0" >
|
||||
<DataGrid RowHeaderWidth="50" HeadersVisibility="All" AutoGenerateColumns="False" ItemsSource="{Binding DataList}" hc:DataGridAttach.CanUnselectAllWithBlankArea="False" hc:DataGridAttach.ShowSelectAllButton="False" hc:DataGridAttach.ShowRowNumber="True">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="200" Binding="{Binding Info1}" Header="信息1" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="200" Binding="{Binding Info2}" Header="信息2" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="200" Binding="{Binding Status}" Header="状态结果" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="200" Binding="{Binding Time,StringFormat=yyyy-MM-dd HH:mm}" Header="测试时间" CanUserSort="False"/>
|
||||
<DataGridTemplateColumn CanUserResize="False" Width="auto">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Button Style="{StaticResource ButtonSuccess}" IsEnabled="True" Content="详情" Width="70" Command="{Binding DataContext.SeeCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding }"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Border>
|
||||
<!--页码区-->
|
||||
<hc:Pagination Grid.Row="2" AutoHiding="True" MaxPageCount="{Binding MaxPageCount}" PageIndex="{Binding PageIndex}" DataCountPerPage="{Binding DataCountPerPage}" IsJumpEnabled="False" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,3" FontSize="16" >
|
||||
<hc:Interaction.Triggers>
|
||||
<hc:EventTrigger EventName="PageUpdated">
|
||||
<hc:EventToCommand Command="{Binding PageUpdateCommand}" PassEventArgsToCommand="True" />
|
||||
</hc:EventTrigger>
|
||||
</hc:Interaction.Triggers>
|
||||
</hc:Pagination>
|
||||
</Grid>
|
||||
</pi:UserControlBase>
|
45
货架标准上位机/Views/Controls/DataListView.xaml.cs
Normal file
45
货架标准上位机/Views/Controls/DataListView.xaml.cs
Normal file
@ -0,0 +1,45 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using HandyControl.Controls;
|
||||
using Microsoft.Win32;
|
||||
using MiniExcelLibs;
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据列表
|
||||
/// </summary>
|
||||
public partial class DataListView : UserControlBase
|
||||
{
|
||||
DataListViewModel viewModel = new DataListViewModel();
|
||||
public DataListView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
//第一次加载
|
||||
private void loadFirst(object sender, EventArgs e)
|
||||
{
|
||||
if (IsInDesignMode)
|
||||
return;
|
||||
|
||||
viewModel.UpdateList();
|
||||
}
|
||||
}
|
||||
}
|
64
货架标准上位机/Views/Controls/DataListWarnInfoView.xaml
Normal file
64
货架标准上位机/Views/Controls/DataListWarnInfoView.xaml
Normal file
@ -0,0 +1,64 @@
|
||||
<pi:UserControlBase x:Class="货架标准上位机.DataListWarnInfoView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
d:DesignHeight="450" d:DesignWidth="800" LoadedVisibleFirst="loadFirst">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="*" />
|
||||
<RowDefinition Height="auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<!--条件区-->
|
||||
<Grid Margin="5,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="auto"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<UniformGrid Grid.Column="0" Columns="4">
|
||||
<hc:DateTimePicker SelectedDateTime="{Binding TimeGo}" Margin="5" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="开始时间" VerticalAlignment="Center"/>
|
||||
<hc:DateTimePicker SelectedDateTime="{Binding TimeTo}" Margin="5" Style="{StaticResource DateTimePickerExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="结束时间" VerticalAlignment="Center"/>
|
||||
<hc:TextBox Text="{Binding Info1}" Margin="5" Style="{StaticResource TextBoxExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="来源" hc:InfoElement.Placeholder="模糊匹配" VerticalAlignment="Center"/>
|
||||
<hc:TextBox Text="{Binding Info2}" Margin="5" Style="{StaticResource TextBoxExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="级别" hc:InfoElement.Placeholder="模糊匹配" VerticalAlignment="Center"/>
|
||||
</UniformGrid>
|
||||
<hc:UniformSpacingPanel Grid.Column="1" Spacing="5">
|
||||
<ToggleButton Content="导出Excel" Command="{Binding ExportExcelCommand}" Style="{StaticResource ToggleButtonLoadingSuccess}" IsChecked="{Binding IsLoad1}" Width="80"></ToggleButton>
|
||||
<ToggleButton Content="查询" Command="{Binding UpdateListCommand}" Style="{StaticResource ToggleButtonLoadingPrimary}" IsChecked="{Binding IsLoad2}" Width="70"></ToggleButton>
|
||||
</hc:UniformSpacingPanel>
|
||||
</Grid>
|
||||
<!--内容区-->
|
||||
<Border Grid.Row="1" Style="{StaticResource BorderRegion}" BorderThickness="1" Background="#EEEEEE" Margin="3,0,3,3" Padding="0" >
|
||||
<DataGrid RowHeaderWidth="50" HeadersVisibility="All" AutoGenerateColumns="False" ItemsSource="{Binding DataList}" hc:DataGridAttach.CanUnselectAllWithBlankArea="False" hc:DataGridAttach.ShowSelectAllButton="False" hc:DataGridAttach.ShowRowNumber="True">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="100" Binding="{Binding Source}" Header="来源" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="200" Binding="{Binding Text}" Header="信息" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="100" Binding="{Binding Level}" Header="级别" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="200" Binding="{Binding Solution}" Header="解决方案" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="100" Binding="{Binding WarnType}" Header="警告类型" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="200" Binding="{Binding TimeGo,StringFormat=yyyy-MM-dd HH:mm}" Header="开始时间" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="160" Binding="{Binding DuraTime}" Header="持续时间" CanUserSort="False"/>
|
||||
<!--<DataGridTemplateColumn CanUserResize="False" Width="auto">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<Button Style="{StaticResource ButtonSuccess}" IsEnabled="True" Content="详情" Width="70" Command="{Binding DataContext.SeeCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding }"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>-->
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Border>
|
||||
<!--页码区-->
|
||||
<hc:Pagination Grid.Row="2" AutoHiding="True" MaxPageCount="{Binding MaxPageCount}" PageIndex="{Binding PageIndex}" DataCountPerPage="{Binding DataCountPerPage}" IsJumpEnabled="False" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,3" FontSize="16" >
|
||||
<hc:Interaction.Triggers>
|
||||
<hc:EventTrigger EventName="PageUpdated">
|
||||
<hc:EventToCommand Command="{Binding PageUpdateCommand}" PassEventArgsToCommand="True" />
|
||||
</hc:EventTrigger>
|
||||
</hc:Interaction.Triggers>
|
||||
</hc:Pagination>
|
||||
</Grid>
|
||||
</pi:UserControlBase>
|
45
货架标准上位机/Views/Controls/DataListWarnInfoView.xaml.cs
Normal file
45
货架标准上位机/Views/Controls/DataListWarnInfoView.xaml.cs
Normal file
@ -0,0 +1,45 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using HandyControl.Controls;
|
||||
using Microsoft.Win32;
|
||||
using MiniExcelLibs;
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 数据列表
|
||||
/// </summary>
|
||||
public partial class DataListWarnInfoView : UserControlBase
|
||||
{
|
||||
DataListWarnInfoViewModel viewModel = new DataListWarnInfoViewModel();
|
||||
public DataListWarnInfoView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
//第一次加载
|
||||
private void loadFirst(object sender, EventArgs e)
|
||||
{
|
||||
if (IsInDesignMode)
|
||||
return;
|
||||
|
||||
viewModel.UpdateList();
|
||||
}
|
||||
}
|
||||
}
|
138
货架标准上位机/Views/Controls/DeviceView.xaml
Normal file
138
货架标准上位机/Views/Controls/DeviceView.xaml
Normal file
@ -0,0 +1,138 @@
|
||||
<pi:UserControlBase x:Class="货架标准上位机.DeviceView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
d:DesignHeight="450" d:DesignWidth="800" LoadedVisibleFirst="visfir" IsVisibleChanged="vis">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<GroupBox Header="模式选择" Margin="3" Style="{StaticResource GroupBoxTab}">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<Button Margin="5,3" Padding="30,0" Content="初始化"></Button>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
|
||||
<hc:ScrollViewer Grid.Row="1" Margin="3,3" IsInertiaEnabled="True" hc:ScrollViewerAttach.AutoHide="True">
|
||||
<StackPanel Margin="0" Orientation="Vertical">
|
||||
<!--监听-->
|
||||
<Border Style="{StaticResource BorderRegion}" Effect="{StaticResource EffectShadow1}" Visibility="{Binding IsVisRead,Converter={StaticResource Boolean2VisibilityConverter}}">
|
||||
<Expander Style="{StaticResource BaseStyle}" Margin="0" Header="监听" IsExpanded="{Binding IsVisExpRead}">
|
||||
<hc:TransitioningContentControl TransitionMode="Top2BottomWithFade">
|
||||
<!--<local:IotReadListView Margin="0,10,0,0" Data="{Binding DataRead}"/>-->
|
||||
<StackPanel x:Name="stackPanel1">
|
||||
<StackPanel.Resources>
|
||||
<ResourceDictionary>
|
||||
<Style TargetType="pi:IotStateInfo" BasedOn="{StaticResource IotStateInfoStyle}">
|
||||
<Setter Property="Width" Value="150"></Setter>
|
||||
<Setter Property="Margin" Value="3,1"></Setter>
|
||||
<!--<Setter Property="BorderThickness" Value="1"></Setter>-->
|
||||
<Setter Property="Opacity" Value="0.8"></Setter>
|
||||
<Setter Property="OkBrush" Value="DarkTurquoise"></Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</StackPanel.Resources>
|
||||
<WrapPanel>
|
||||
<pi:IotStateInfo Header="传感器1" Value="false"></pi:IotStateInfo>
|
||||
<pi:IotStateInfo Header="传感器2" Value="True"></pi:IotStateInfo>
|
||||
</WrapPanel>
|
||||
<Expander Header="分组1" IsExpanded="True" BorderThickness="0" Background="{StaticResource DefaultBrush}">
|
||||
<WrapPanel>
|
||||
<pi:IotStateInfo Header="温度1" Value="1.23"></pi:IotStateInfo>
|
||||
</WrapPanel>
|
||||
</Expander>
|
||||
</StackPanel>
|
||||
</hc:TransitioningContentControl>
|
||||
</Expander>
|
||||
</Border>
|
||||
<!--控制-->
|
||||
<Border Margin="0,10,0,0" Style="{StaticResource BorderRegion}" Effect="{StaticResource EffectShadow1}" Visibility="{Binding IsVisWrite,Converter={StaticResource Boolean2VisibilityConverter}}">
|
||||
<Expander Style="{StaticResource BaseStyle}" Margin="0" Header="控制" IsExpanded="{Binding IsVisExpWrite}">
|
||||
<hc:TransitioningContentControl TransitionMode="Top2BottomWithFade">
|
||||
<!--<local:IotWriteListView Margin="0,10,0,0" Data="{Binding DataWrite}"/>-->
|
||||
<StackPanel x:Name="stackPanel2">
|
||||
<StackPanel.Resources>
|
||||
<ResourceDictionary>
|
||||
<Style TargetType="pi:IotStateInfo" BasedOn="{StaticResource IotStateInfoStyle}">
|
||||
<Setter Property="Width" Value="150"></Setter>
|
||||
<Setter Property="Margin" Value="3,1"></Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</StackPanel.Resources>
|
||||
<WrapPanel>
|
||||
<pi:IotStateInfo Header="传感器1" Value="false"></pi:IotStateInfo>
|
||||
<pi:IotStateInfo Header="传感器2" Value="True"></pi:IotStateInfo>
|
||||
</WrapPanel>
|
||||
<Expander Header="分组1" IsExpanded="True" BorderThickness="0" Background="{StaticResource DefaultBrush}">
|
||||
<WrapPanel>
|
||||
<pi:IotStateInfo Header="温度1" Value="1.23"></pi:IotStateInfo>
|
||||
</WrapPanel>
|
||||
</Expander>
|
||||
</StackPanel>
|
||||
</hc:TransitioningContentControl>
|
||||
</Expander>
|
||||
</Border>
|
||||
<!--气缸-->
|
||||
<Border Margin="0,10,0,0" Style="{StaticResource BorderRegion}" Effect="{StaticResource EffectShadow1}" Visibility="{Binding IsVisUrn,Converter={StaticResource Boolean2VisibilityConverter}}">
|
||||
<Expander Style="{StaticResource BaseStyle}" Margin="0" Header="气缸" IsExpanded="{Binding IsVisExpUrn}">
|
||||
<hc:TransitioningContentControl TransitionMode="Top2BottomWithFade">
|
||||
<!--<local:IotUrnListView Margin="0,10,0,0" Data="{Binding DataUrn}"/>-->
|
||||
<StackPanel x:Name="stackPanel3">
|
||||
<StackPanel.Resources>
|
||||
<ResourceDictionary>
|
||||
<Style TargetType="pi:IotUrnMode" BasedOn="{StaticResource IotUrnModeStyle}">
|
||||
<Setter Property="Margin" Value="3,1"></Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</StackPanel.Resources>
|
||||
<WrapPanel>
|
||||
<pi:IotUrnMode Text="气缸1"></pi:IotUrnMode>
|
||||
<pi:IotUrnMode Text="气缸1" IsButBadge1="True"></pi:IotUrnMode>
|
||||
</WrapPanel>
|
||||
<Expander Header="分组1" IsExpanded="True" BorderThickness="0" Background="{StaticResource DefaultBrush}">
|
||||
<WrapPanel>
|
||||
<pi:IotUrnMode Text="气缸1"></pi:IotUrnMode>
|
||||
</WrapPanel>
|
||||
</Expander>
|
||||
</StackPanel>
|
||||
</hc:TransitioningContentControl>
|
||||
</Expander>
|
||||
</Border>
|
||||
<!--伺服-->
|
||||
<Border Margin="0,10,0,0" Style="{StaticResource BorderRegion}" Effect="{StaticResource EffectShadow1}" Visibility="{Binding IsVisServo,Converter={StaticResource Boolean2VisibilityConverter}}">
|
||||
<Expander Style="{StaticResource BaseStyle}" Margin="0" Header="伺服" IsExpanded="{Binding IsVisExpServo}">
|
||||
<hc:TransitioningContentControl TransitionMode="Top2BottomWithFade">
|
||||
<!--<local:IotServoListView Margin="0,10,0,0" Data="{Binding DataServo}"/>-->
|
||||
<StackPanel x:Name="stackPanel4">
|
||||
<StackPanel.Resources>
|
||||
<ResourceDictionary>
|
||||
<Style TargetType="pi:IotServoMode" BasedOn="{StaticResource IotServoModeStyle}">
|
||||
<Setter Property="Margin" Value="3,1"></Setter>
|
||||
<Setter Property="VerticalAlignment" Value="Top"></Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</StackPanel.Resources>
|
||||
<WrapPanel>
|
||||
<pi:IotServoMode Text="伺服1"/>
|
||||
<pi:IotServoMode Text="伺服1"/>
|
||||
</WrapPanel>
|
||||
<Expander Header="分组1" IsExpanded="True" BorderThickness="0" Background="{StaticResource DefaultBrush}">
|
||||
<WrapPanel>
|
||||
<pi:IotServoMode Text="伺服1"/>
|
||||
<pi:IotServoMode Text="伺服1"/>
|
||||
</WrapPanel>
|
||||
</Expander>
|
||||
</StackPanel>
|
||||
</hc:TransitioningContentControl>
|
||||
</Expander>
|
||||
</Border>
|
||||
</StackPanel>
|
||||
</hc:ScrollViewer>
|
||||
</Grid>
|
||||
</pi:UserControlBase>
|
390
货架标准上位机/Views/Controls/DeviceView.xaml.cs
Normal file
390
货架标准上位机/Views/Controls/DeviceView.xaml.cs
Normal file
@ -0,0 +1,390 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using HandyControl.Controls;
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 设备手动信息
|
||||
/// </summary>
|
||||
public partial class DeviceView : UserControlBase
|
||||
{
|
||||
DeviceViewModel viewModel = new DeviceViewModel();
|
||||
|
||||
public DeviceView()
|
||||
{
|
||||
InitializeComponent();
|
||||
//viewModel.plc = LocalStatic.Plc;
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
//第一次显示,渲染Ui
|
||||
private void visfir(object sender, EventArgs e)
|
||||
{
|
||||
if (IsInDesignMode)
|
||||
return;
|
||||
|
||||
if (!System.IO.File.Exists(LocalFile.PlcDotPath))
|
||||
{
|
||||
Growl.Info($"没有找到文档[{LocalFile.PlcDotPath}],请联系管理员。");
|
||||
return;
|
||||
}
|
||||
|
||||
//读Excel
|
||||
viewModel.DataReads = ExcelDeviceReadModel.GetDatas();
|
||||
viewModel.DataWrites = ExcelDeviceWriteModel.GetDatas();
|
||||
viewModel.DataUrns = ExcelDeviceUrnModel.GetDatas();
|
||||
viewModel.DataServos = ExcelDeviceServoModel.GetDatas();
|
||||
|
||||
//加载页面
|
||||
ReadUi(viewModel.DataReads);
|
||||
WriteUi(viewModel.DataWrites);
|
||||
UrnUi(viewModel.DataUrns);
|
||||
ServoUi(viewModel.DataServos);
|
||||
|
||||
//展示限制
|
||||
viewModel.IsVisRead = viewModel.DataReads.Any();
|
||||
viewModel.IsVisWrite = viewModel.DataWrites.Any();
|
||||
viewModel.IsVisUrn = viewModel.DataUrns.Any();
|
||||
viewModel.IsVisServo = viewModel.DataServos.Any();
|
||||
|
||||
Task.Run(viewModel.WhileRead);
|
||||
}
|
||||
|
||||
private void vis(object sender, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
if (IsInDesignMode)
|
||||
return;
|
||||
|
||||
viewModel.IsVis = (bool)e.NewValue;
|
||||
}
|
||||
|
||||
#region 渲染页面
|
||||
void ReadUi(IEnumerable<DeviceReadModel> data)
|
||||
{
|
||||
stackPanel1.Children.Clear();
|
||||
if (data == null || !data.Any())
|
||||
return;
|
||||
|
||||
var moren = data.Where(o => string.IsNullOrWhiteSpace(o.ExcelTag.组名));
|
||||
var group = data.Where(o => !string.IsNullOrWhiteSpace(o.ExcelTag.组名)).GroupBy(o => o.ExcelTag.组名);
|
||||
|
||||
if (moren.Any())
|
||||
{
|
||||
WrapPanel wrapPanel = new WrapPanel();
|
||||
foreach (var item in moren)
|
||||
{
|
||||
item.Value = item.ExcelTag.类型.Trim().ToLower() == "bool" ? false : "-";
|
||||
item.IsExpanded = true;
|
||||
|
||||
IotStateInfo iotState = new IotStateInfo();
|
||||
iotState.DataContext = item;
|
||||
iotState.SetBinding(IotStateInfo.HeaderProperty, nameof(item.Name));
|
||||
iotState.SetBinding(IotStateInfo.ValueProperty, nameof(item.Value));
|
||||
iotState.SetBinding(IotStateInfo.PostfixProperty, $"{nameof(item.ExcelTag)}.{nameof(item.ExcelTag.单位)}");
|
||||
|
||||
wrapPanel.Children.Add(iotState);
|
||||
}
|
||||
stackPanel1.Children.Add(wrapPanel);
|
||||
}
|
||||
if (group.Any())
|
||||
{
|
||||
foreach (var item in group)
|
||||
{
|
||||
Expander expander = new Expander();
|
||||
expander.Header = item.Key;
|
||||
expander.Tag = item;
|
||||
expander.Expanded += (s, e) =>
|
||||
{
|
||||
var c = (IGrouping<string, DeviceReadModel>)((Expander)s).Tag;
|
||||
foreach (var item in c)
|
||||
{
|
||||
item.IsExpanded = true;
|
||||
}
|
||||
};
|
||||
expander.Collapsed += (s, e) =>
|
||||
{
|
||||
var c = (IGrouping<string, DeviceReadModel>)((Expander)s).Tag;
|
||||
foreach (var item in c)
|
||||
{
|
||||
item.IsExpanded = false;
|
||||
}
|
||||
};
|
||||
|
||||
WrapPanel wrapPanel = new WrapPanel();
|
||||
foreach (var item2 in item)
|
||||
{
|
||||
item2.Value = item2.ExcelTag.类型.Trim().ToLower() == "bool" ? false : "-";
|
||||
|
||||
IotStateInfo iotState = new IotStateInfo();
|
||||
iotState.DataContext = item2;
|
||||
iotState.SetBinding(IotStateInfo.HeaderProperty, nameof(item2.Name));
|
||||
iotState.SetBinding(IotStateInfo.ValueProperty, nameof(item2.Value));
|
||||
iotState.SetBinding(IotStateInfo.PostfixProperty, $"{nameof(item2.ExcelTag)}.{nameof(item2.ExcelTag.单位)}");
|
||||
|
||||
wrapPanel.Children.Add(iotState);
|
||||
}
|
||||
expander.Content = wrapPanel;
|
||||
stackPanel1.Children.Add(expander);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WriteUi(IEnumerable<DeviceWriteModel> data)
|
||||
{
|
||||
if (true)
|
||||
{
|
||||
stackPanel2.Children.Clear();
|
||||
if (data == null || !data.Any())
|
||||
return;
|
||||
|
||||
var moren = data.Where(o => string.IsNullOrWhiteSpace(o.ExcelTag.组名));
|
||||
var group = data.Where(o => !string.IsNullOrWhiteSpace(o.ExcelTag.组名)).GroupBy(o => o.ExcelTag.组名);
|
||||
|
||||
if (moren.Any())
|
||||
{
|
||||
WrapPanel wrapPanel = new WrapPanel();
|
||||
foreach (var item in moren)
|
||||
{
|
||||
item.Value = item.ExcelTag.类型.Trim().ToLower() == "bool" ? false : "-";
|
||||
item.IsExpanded = true;
|
||||
|
||||
IotStateInfo iotState = new IotStateInfo();
|
||||
iotState.DataContext = item;
|
||||
iotState.Click += viewModel.WriteClick;
|
||||
iotState.PreviewMouseLeftButtonDown += viewModel.LeftDown;
|
||||
iotState.PreviewMouseLeftButtonUp += viewModel.LeftUp;
|
||||
iotState.SetBinding(IotStateInfo.HeaderProperty, nameof(item.Name));
|
||||
iotState.SetBinding(IotStateInfo.ValueProperty, nameof(item.Value));
|
||||
iotState.SetBinding(IotStateInfo.PostfixProperty, $"{nameof(item.ExcelTag)}.{nameof(item.ExcelTag.单位)}");
|
||||
|
||||
wrapPanel.Children.Add(iotState);
|
||||
}
|
||||
stackPanel2.Children.Add(wrapPanel);
|
||||
}
|
||||
if (group.Any())
|
||||
{
|
||||
foreach (var item in group)
|
||||
{
|
||||
Expander expander = new Expander();
|
||||
expander.Header = item.Key;
|
||||
expander.Tag = item;
|
||||
expander.Expanded += (s, e) =>
|
||||
{
|
||||
var c = (IGrouping<string, DeviceWriteModel>)((Expander)s).Tag;
|
||||
foreach (var item in c)
|
||||
{
|
||||
item.IsExpanded = true;
|
||||
}
|
||||
};
|
||||
expander.Collapsed += (s, e) =>
|
||||
{
|
||||
var c = (IGrouping<string, DeviceWriteModel>)((Expander)s).Tag;
|
||||
foreach (var item in c)
|
||||
{
|
||||
item.IsExpanded = false;
|
||||
}
|
||||
};
|
||||
|
||||
WrapPanel wrapPanel = new WrapPanel();
|
||||
foreach (var item2 in item)
|
||||
{
|
||||
item2.Value = item2.ExcelTag.类型.Trim().ToLower() == "bool" ? false : "-";
|
||||
|
||||
IotStateInfo iotState = new IotStateInfo();
|
||||
iotState.DataContext = item2;
|
||||
iotState.Click += viewModel.WriteClick;
|
||||
iotState.PreviewMouseLeftButtonDown += viewModel.LeftDown;
|
||||
iotState.PreviewMouseLeftButtonUp += viewModel.LeftUp;
|
||||
iotState.SetBinding(IotStateInfo.HeaderProperty, nameof(item2.Name));
|
||||
iotState.SetBinding(IotStateInfo.ValueProperty, nameof(item2.Value));
|
||||
iotState.SetBinding(IotStateInfo.PostfixProperty, $"{nameof(item2.ExcelTag)}.{nameof(item2.ExcelTag.单位)}");
|
||||
|
||||
wrapPanel.Children.Add(iotState);
|
||||
}
|
||||
expander.Content = wrapPanel;
|
||||
stackPanel2.Children.Add(expander);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UrnUi(IEnumerable<DeviceUrnModel> data)
|
||||
{
|
||||
if (true)
|
||||
{
|
||||
stackPanel3.Children.Clear();
|
||||
if (data == null || !data.Any())
|
||||
return;
|
||||
|
||||
var moren = data.Where(o => string.IsNullOrWhiteSpace(o.ExcelTag.组名));
|
||||
var group = data.Where(o => !string.IsNullOrWhiteSpace(o.ExcelTag.组名)).GroupBy(o => o.ExcelTag.组名);
|
||||
|
||||
if (moren.Any())
|
||||
{
|
||||
WrapPanel wrapPanel = new WrapPanel();
|
||||
foreach (var item in moren)
|
||||
{
|
||||
item.IsExpanded = true;
|
||||
|
||||
IotUrnMode iotUrn = new IotUrnMode();
|
||||
iotUrn.DataContext = item;
|
||||
iotUrn.SetBinding(IotUrnMode.TextProperty, nameof(item.Name));
|
||||
iotUrn.SetBinding(IotUrnMode.IsButBadge1Property, nameof(item.IsGoTo));
|
||||
iotUrn.SetBinding(IotUrnMode.IsButBadge2Property, nameof(item.IsRetTo));
|
||||
iotUrn.Button1.Click += viewModel.Button1_Click;
|
||||
iotUrn.Button1.PreviewMouseLeftButtonDown += viewModel.But1ClickDown;
|
||||
iotUrn.Button1.PreviewMouseLeftButtonUp += viewModel.But1ClickUp;
|
||||
iotUrn.Button2.Click += viewModel.Button2_Click;
|
||||
iotUrn.Button2.PreviewMouseLeftButtonDown += viewModel.But2ClickDown;
|
||||
iotUrn.Button2.PreviewMouseLeftButtonUp += viewModel.But2ClickUp;
|
||||
|
||||
wrapPanel.Children.Add(iotUrn);
|
||||
}
|
||||
stackPanel3.Children.Add(wrapPanel);
|
||||
}
|
||||
if (group.Any())
|
||||
{
|
||||
foreach (var item in group)
|
||||
{
|
||||
Expander expander = new Expander();
|
||||
expander.Header = item.Key;
|
||||
expander.Tag = item;
|
||||
expander.Expanded += (s, e) =>
|
||||
{
|
||||
var c = (IGrouping<string, DeviceUrnModel>)((Expander)s).Tag;
|
||||
foreach (var item in c)
|
||||
{
|
||||
item.IsExpanded = true;
|
||||
}
|
||||
};
|
||||
expander.Collapsed += (s, e) =>
|
||||
{
|
||||
var c = (IGrouping<string, DeviceUrnModel>)((Expander)s).Tag;
|
||||
foreach (var item in c)
|
||||
{
|
||||
item.IsExpanded = false;
|
||||
}
|
||||
};
|
||||
|
||||
WrapPanel wrapPanel = new WrapPanel();
|
||||
foreach (var item2 in item)
|
||||
{
|
||||
IotUrnMode iotUrn = new IotUrnMode();
|
||||
iotUrn.DataContext = item2;
|
||||
iotUrn.SetBinding(IotUrnMode.TextProperty, nameof(item2.Name));
|
||||
iotUrn.SetBinding(IotUrnMode.IsButBadge1Property, nameof(item2.IsGoTo));
|
||||
iotUrn.SetBinding(IotUrnMode.IsButBadge2Property, nameof(item2.IsRetTo));
|
||||
iotUrn.Button1.Click += viewModel.Button1_Click;
|
||||
iotUrn.Button1.PreviewMouseLeftButtonDown += viewModel.But1ClickDown;
|
||||
iotUrn.Button1.PreviewMouseLeftButtonUp += viewModel.But1ClickUp;
|
||||
iotUrn.Button2.Click += viewModel.Button2_Click;
|
||||
iotUrn.Button2.PreviewMouseLeftButtonDown += viewModel.But2ClickDown;
|
||||
iotUrn.Button2.PreviewMouseLeftButtonUp += viewModel.But2ClickUp;
|
||||
|
||||
wrapPanel.Children.Add(iotUrn);
|
||||
}
|
||||
expander.Content = wrapPanel;
|
||||
stackPanel3.Children.Add(expander);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ServoUi(IEnumerable<DeviceServoModel> data)
|
||||
{
|
||||
if (true)
|
||||
{
|
||||
stackPanel4.Children.Clear();
|
||||
if (data == null || !data.Any())
|
||||
return;
|
||||
|
||||
var moren = data.Where(o => string.IsNullOrWhiteSpace(o.ExcelTag.组名));
|
||||
var group = data.Where(o => !string.IsNullOrWhiteSpace(o.ExcelTag.组名)).GroupBy(o => o.ExcelTag.组名);
|
||||
|
||||
if (moren.Any())
|
||||
{
|
||||
WrapPanel wrapPanel = new WrapPanel();
|
||||
foreach (var item in moren)
|
||||
{
|
||||
item.IsExpanded = true;
|
||||
|
||||
IotServoMode iotServo = new IotServoMode();
|
||||
iotServo.DataContext = item;
|
||||
iotServo.SetBinding(IotServoMode.TextProperty, nameof(item.Name));
|
||||
iotServo.SetBinding(IotServoMode.Speed1Property, nameof(item.JogSpeed));
|
||||
iotServo.SetBinding(IotServoMode.Speed2Property, nameof(item.AutoSpeed));
|
||||
iotServo.SetBinding(IotServoMode.LocationProperty, nameof(item.Location));
|
||||
iotServo.SetBinding(IotServoMode.IsVis1Property, new Binding(nameof(item.IsJog)) { Mode = BindingMode.TwoWay });
|
||||
iotServo.SetBinding(IotServoMode.IsFoldProperty, new Binding(nameof(item.IsFold)) { Mode = BindingMode.TwoWay });
|
||||
iotServo.LocationChange += viewModel.LocationChange;
|
||||
iotServo.SpeedChange += viewModel.SpeedChange;
|
||||
|
||||
wrapPanel.Children.Add(iotServo);
|
||||
}
|
||||
stackPanel4.Children.Add(wrapPanel);
|
||||
}
|
||||
if (group.Any())
|
||||
{
|
||||
foreach (var item in group)
|
||||
{
|
||||
Expander expander = new Expander();
|
||||
expander.Header = item.Key;
|
||||
expander.Tag = item;
|
||||
expander.Expanded += (s, e) =>
|
||||
{
|
||||
var c = (IGrouping<string, DeviceServoModel>)((Expander)s).Tag;
|
||||
foreach (var item in c)
|
||||
{
|
||||
item.IsExpanded = true;
|
||||
}
|
||||
};
|
||||
expander.Collapsed += (s, e) =>
|
||||
{
|
||||
var c = (IGrouping<string, DeviceServoModel>)((Expander)s).Tag;
|
||||
foreach (var item in c)
|
||||
{
|
||||
item.IsExpanded = false;
|
||||
}
|
||||
};
|
||||
|
||||
WrapPanel wrapPanel = new WrapPanel();
|
||||
foreach (var item2 in item)
|
||||
{
|
||||
IotServoMode iotServo = new IotServoMode();
|
||||
iotServo.DataContext = item2;
|
||||
iotServo.SetBinding(IotServoMode.TextProperty, nameof(item2.Name));
|
||||
iotServo.SetBinding(IotServoMode.Speed1Property, nameof(item2.JogSpeed));
|
||||
iotServo.SetBinding(IotServoMode.Speed2Property, nameof(item2.AutoSpeed));
|
||||
iotServo.SetBinding(IotServoMode.LocationProperty, nameof(item2.Location));
|
||||
iotServo.SetBinding(IotServoMode.IsVis1Property, new Binding(nameof(item2.IsJog)) { Mode = BindingMode.TwoWay });
|
||||
iotServo.SetBinding(IotServoMode.IsFoldProperty, new Binding(nameof(item2.IsFold)) { Mode = BindingMode.TwoWay });
|
||||
iotServo.LocationChange += viewModel.LocationChange;
|
||||
iotServo.SpeedChange += viewModel.SpeedChange;
|
||||
|
||||
wrapPanel.Children.Add(iotServo);
|
||||
}
|
||||
expander.Content = wrapPanel;
|
||||
stackPanel4.Children.Add(expander);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
26
货架标准上位机/Views/Controls/ImageListenerView.xaml
Normal file
26
货架标准上位机/Views/Controls/ImageListenerView.xaml
Normal file
@ -0,0 +1,26 @@
|
||||
<UserControl xmlns:hc="https://handyorg.github.io/handycontrol" x:Class="货架标准上位机.ImageListenerView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="800">
|
||||
<Border Style="{StaticResource BorderRegion}" BorderThickness="1" Background="{DynamicResource SecondaryRegionBrush}" Padding="0" ClipToBounds="True">
|
||||
<Border.Resources>
|
||||
<TransformGroup x:Key="Imageview">
|
||||
<ScaleTransform ScaleX="{Binding ScaleXY}" ScaleY="{Binding ScaleXY}" CenterX="{Binding CenterX}" CenterY="{Binding CenterY}"/>
|
||||
<TranslateTransform X="{Binding TranslateX}" Y="{Binding TranslateY}"/>
|
||||
</TransformGroup>
|
||||
</Border.Resources>
|
||||
<Image x:Name="img" RenderTransform="{StaticResource Imageview}" Source="{Binding ImageSource}" PreviewMouseLeftButtonDown="previewMouseDoubleClick">
|
||||
<Image.ContextMenu>
|
||||
<ContextMenu>
|
||||
<MenuItem Header="预览图片" Click="ckyt"></MenuItem>
|
||||
<MenuItem Header="适应窗口" Click="syck"></MenuItem>
|
||||
<MenuItem Header="原图大小" Click="ytdx"></MenuItem>
|
||||
</ContextMenu>
|
||||
</Image.ContextMenu>
|
||||
</Image>
|
||||
</Border>
|
||||
</UserControl>
|
236
货架标准上位机/Views/Controls/ImageListenerView.xaml.cs
Normal file
236
货架标准上位机/Views/Controls/ImageListenerView.xaml.cs
Normal file
@ -0,0 +1,236 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using HandyControl.Controls;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using Path = System.IO.Path;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 图像监听。可针对文件夹文件进行监听显示
|
||||
/// </summary>
|
||||
public partial class ImageListenerView : UserControl
|
||||
{
|
||||
ImageListenerViewModel viewModel = new ImageListenerViewModel();
|
||||
public FileSystemWatcher FileWatcher = new FileSystemWatcher();
|
||||
/// <summary>
|
||||
/// 当前加载的图像路径
|
||||
/// </summary>
|
||||
public string FullPath { get; private set; }
|
||||
public ImageListenerView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
|
||||
//拖动
|
||||
img.MouseLeftButtonDown += Img_MouseLeftButtonDown;
|
||||
img.MouseLeftButtonUp += Img_MouseLeftButtonUp;
|
||||
img.MouseMove += Img_MouseMove;
|
||||
//鼠标滚轮
|
||||
this.MouseWheel += Img_MouseWheel;
|
||||
//监听
|
||||
FileWatcher.Changed += FileSystemWatcher;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 如果在选项卡中,是否自动切换到当前变化的项来。默认为false
|
||||
/// </summary>
|
||||
public bool IsAutoActiveTabItem
|
||||
{
|
||||
get { return (bool)GetValue(IsAutoActiveTabItemProperty); }
|
||||
set { SetValue(IsAutoActiveTabItemProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty IsAutoActiveTabItemProperty =
|
||||
DependencyProperty.Register("IsAutoActiveTabItem", typeof(bool), typeof(ImageListenerView), new PropertyMetadata(false));
|
||||
|
||||
/// <summary>
|
||||
/// 开始监听
|
||||
/// </summary>
|
||||
/// <param name="path">监听的目录或文件</param>
|
||||
/// <param name="filter">对目录的筛选值(文件无效)</param>
|
||||
public void StartListener(string path, string filter = "*.jpg")
|
||||
{
|
||||
FileWatcher.EnableRaisingEvents = false;
|
||||
|
||||
path = (path ?? "").Trim();
|
||||
if (string.IsNullOrEmpty(path))
|
||||
return;
|
||||
|
||||
if (Path.HasExtension(path))
|
||||
{
|
||||
var ext = Path.GetFileName(path);
|
||||
if (!string.IsNullOrEmpty(ext))
|
||||
filter = ext;
|
||||
|
||||
path = Path.GetDirectoryName(path);
|
||||
}
|
||||
|
||||
Directory.CreateDirectory(path);
|
||||
|
||||
FileWatcher.Path = path;
|
||||
FileWatcher.Filter = filter;
|
||||
FileWatcher.NotifyFilter = NotifyFilters.Size | NotifyFilters.LastWrite | NotifyFilters.CreationTime | NotifyFilters.LastAccess;
|
||||
FileWatcher.IncludeSubdirectories = false;
|
||||
FileWatcher.EnableRaisingEvents = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 停止监听
|
||||
/// </summary>
|
||||
public void StopListener()
|
||||
{
|
||||
FileWatcher.EnableRaisingEvents = false;
|
||||
}
|
||||
|
||||
string FullPathTop = string.Empty;
|
||||
private void FileSystemWatcher(object sender, FileSystemEventArgs e)
|
||||
{
|
||||
if (FullPathTop == e.FullPath)
|
||||
return;
|
||||
|
||||
FullPathTop = e.FullPath;
|
||||
|
||||
Thread.Sleep(400);//确保大图片的成功
|
||||
this.Dispatcher.BeginInvoke(new Action(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
viewModel.ImageSource = null;
|
||||
viewModel.ImageSource = BitmapFrame.Create(new Uri(e.FullPath), BitmapCreateOptions.IgnoreImageCache, BitmapCacheOption.OnLoad);
|
||||
viewModel.ImageHeight = viewModel.ImageSource.Height;
|
||||
viewModel.ImageWidth = viewModel.ImageSource.Width;
|
||||
|
||||
FullPath = e.FullPath;
|
||||
viewModel.ImgAutoSize();
|
||||
|
||||
if (IsAutoActiveTabItem)
|
||||
{
|
||||
if (this.Parent is System.Windows.Controls.TabItem tabItem)
|
||||
{
|
||||
if (tabItem.Parent is System.Windows.Controls.TabControl tabControl)
|
||||
{
|
||||
tabControl.SelectedItem = tabItem;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
}
|
||||
finally
|
||||
{
|
||||
FullPathTop = string.Empty;
|
||||
}
|
||||
}));
|
||||
}
|
||||
|
||||
#region 变换
|
||||
private bool mouseLeftDown = false;
|
||||
private Point mouseLeftXY;
|
||||
|
||||
private void Img_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
mouseLeftDown = true;
|
||||
mouseLeftXY = e.GetPosition((FrameworkElement)this);
|
||||
}
|
||||
|
||||
private void Img_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
mouseLeftDown = false;
|
||||
}
|
||||
|
||||
private void Img_MouseMove(object sender, MouseEventArgs e)
|
||||
{
|
||||
if (mouseLeftDown && e.LeftButton == MouseButtonState.Pressed)
|
||||
{
|
||||
var position = e.GetPosition((FrameworkElement)this);
|
||||
viewModel.TranslateX -= mouseLeftXY.X - position.X;
|
||||
viewModel.TranslateY -= mouseLeftXY.Y - position.Y;
|
||||
mouseLeftXY = position;
|
||||
}
|
||||
}
|
||||
|
||||
private void Img_MouseWheel(object sender, MouseWheelEventArgs e)
|
||||
{
|
||||
var delta = e.Delta * 0.001;
|
||||
var scaleXY = viewModel.ScaleXY + delta;
|
||||
if (scaleXY < 0.05 || scaleXY > 5)
|
||||
return;
|
||||
|
||||
viewModel.CenterX = img.ActualWidth / 2;
|
||||
viewModel.CenterY = img.ActualHeight / 2;
|
||||
|
||||
//校正
|
||||
var point = Mouse.GetPosition(img);
|
||||
//图片外
|
||||
if (point.X < 0 || point.Y < 0 || point.X > img.ActualWidth || point.Y > img.ActualHeight)
|
||||
{
|
||||
//不需要校正
|
||||
}
|
||||
else
|
||||
{
|
||||
var lx = img.ActualWidth / 2.00 - point.X;
|
||||
var ly = img.ActualHeight / 2.00 - point.Y;
|
||||
var pyx = lx * scaleXY - lx * viewModel.ScaleXY;
|
||||
var pyy = ly * scaleXY - ly * viewModel.ScaleXY;
|
||||
|
||||
viewModel.TranslateX += pyx;
|
||||
viewModel.TranslateY += pyy;
|
||||
}
|
||||
|
||||
viewModel.ScaleXY = scaleXY;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 效果
|
||||
DateTime dtsj = DateTime.Now;
|
||||
private void previewMouseDoubleClick(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
if ((DateTime.Now - dtsj).TotalMilliseconds <= 300)
|
||||
{
|
||||
if (e.ChangedButton == MouseButton.Left && !string.IsNullOrEmpty(FullPath))
|
||||
if (File.Exists(FullPath))
|
||||
new ImageBrowser(new Uri(FullPath)).Show();
|
||||
}
|
||||
dtsj = DateTime.Now;
|
||||
}
|
||||
|
||||
private void ckyt(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (File.Exists(FullPath))
|
||||
new ImageBrowser(new Uri(FullPath)).Show();
|
||||
}
|
||||
|
||||
private void syck(object sender, RoutedEventArgs e)
|
||||
{
|
||||
viewModel.ImgAutoSize();
|
||||
}
|
||||
|
||||
private void ytdx(object sender, RoutedEventArgs e)
|
||||
{
|
||||
viewModel.ScaleXY = viewModel.ImageWidth / this.ActualWidth;
|
||||
viewModel.CenterX = img.ActualWidth / 2;
|
||||
viewModel.CenterY = img.ActualHeight / 2;
|
||||
viewModel.TranslateX = 0;
|
||||
viewModel.TranslateY = 0;
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
}
|
35
货架标准上位机/Views/Controls/OutputStatChartView.xaml
Normal file
35
货架标准上位机/Views/Controls/OutputStatChartView.xaml
Normal file
@ -0,0 +1,35 @@
|
||||
<pi:UserControlBase x:Class="货架标准上位机.OutputStatChartView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
xmlns:lvc="clr-namespace:LiveCharts.Wpf;assembly=LiveCharts.Wpf"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="450" d:DesignWidth="800" LoadedVisibleFirst="loadFir">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Text="{Binding Title,FallbackValue=当日生产统计}" HorizontalAlignment="Center" VerticalAlignment="Center" Style="{StaticResource TextBlockDefaultSecLight}"></TextBlock>
|
||||
<StackPanel Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center" Visibility="{Binding IsZero,Converter={StaticResource Boolean2VisibilityConverter}}">
|
||||
<TextBlock FontSize="40" FontFamily="{StaticResource IconFont}" Text="">
|
||||
<TextBlock.Foreground>
|
||||
<LinearGradientBrush EndPoint="0.5,1">
|
||||
<GradientStop Color="White"/>
|
||||
<GradientStop Color="Gray" Offset="1"/>
|
||||
</LinearGradientBrush>
|
||||
</TextBlock.Foreground>
|
||||
</TextBlock>
|
||||
<TextBlock Foreground="Gray" HorizontalAlignment="Center">无数据</TextBlock>
|
||||
</StackPanel>
|
||||
<lvc:PieChart Grid.Row="1" LegendLocation="Bottom">
|
||||
<lvc:PieChart.Series>
|
||||
<lvc:PieSeries Title="合格" Fill="LimeGreen" Values="{Binding Values1}" DataLabels="True" LabelPoint="{Binding PointLabel}"/>
|
||||
<lvc:PieSeries Title="不合格" Fill="OrangeRed" Values="{Binding Values2}" DataLabels="True" LabelPoint="{Binding PointLabel}"/>
|
||||
</lvc:PieChart.Series>
|
||||
</lvc:PieChart>
|
||||
</Grid>
|
||||
</pi:UserControlBase>
|
44
货架标准上位机/Views/Controls/OutputStatChartView.xaml.cs
Normal file
44
货架标准上位机/Views/Controls/OutputStatChartView.xaml.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using LiveCharts.Wpf;
|
||||
using LiveCharts;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using 货架标准上位机.ViewModel;
|
||||
using System.Runtime.InteropServices.ComTypes;
|
||||
using Ping9719.WpfEx;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 日产量统计扇形图
|
||||
/// </summary>
|
||||
public partial class OutputStatChartView : UserControlBase
|
||||
{
|
||||
public static OutputStatChartViewModel viewModel = new OutputStatChartViewModel();
|
||||
public OutputStatChartView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
private void loadFir(object sender, EventArgs e)
|
||||
{
|
||||
if (this.IsInDesignMode)
|
||||
return;
|
||||
|
||||
viewModel.UpdataData();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
52
货架标准上位机/Views/Controls/RoleView.xaml
Normal file
52
货架标准上位机/Views/Controls/RoleView.xaml
Normal file
@ -0,0 +1,52 @@
|
||||
<pi:UserControlBase x:Class="货架标准上位机.RoleView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
d:DesignHeight="450" d:DesignWidth="800" LoadedVisibleFirst="loadFirst">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<!--条件区-->
|
||||
<Grid Margin="5,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="auto"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<UniformGrid Grid.Column="0" Columns="1">
|
||||
<hc:TextBox Text="{Binding Info1}" Margin="5" Style="{StaticResource TextBoxExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="角色名称" hc:InfoElement.Placeholder="模糊匹配" VerticalAlignment="Center"/>
|
||||
</UniformGrid>
|
||||
<hc:UniformSpacingPanel Grid.Column="1" Spacing="5">
|
||||
<Button Content="新增" Command="{Binding AddCommand}" Style="{StaticResource ButtonSuccess}" Width="70" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.权限},Converter={StaticResource AuthVisConverter}}"></Button>
|
||||
<Button Content="查询" Command="{Binding UpdateListCommand}" Style="{StaticResource ButtonPrimary}" Width="70"></Button>
|
||||
</hc:UniformSpacingPanel>
|
||||
</Grid>
|
||||
<!--内容区-->
|
||||
<Border Grid.Row="1" Grid.Column="0" Style="{StaticResource BorderRegion}" BorderThickness="1" Background="#EEEEEE" Margin="3,0,3,3" Padding="0" >
|
||||
<DataGrid RowHeaderWidth="50" HeadersVisibility="All" AutoGenerateColumns="False" ItemsSource="{Binding DataList}" hc:DataGridAttach.CanUnselectAllWithBlankArea="False" hc:DataGridAttach.ShowSelectAllButton="False" hc:DataGridAttach.ShowRowNumber="True">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="3*" Binding="{Binding Name}" Header="角色名称" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="7*" Binding="{Binding AuthNames,Converter={StaticResource List2StrConverter}}" Header="认证模块" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="200" Binding="{Binding Time,StringFormat=yyyy-MM-dd HH:mm}" Header="创建时间" CanUserSort="False"/>
|
||||
<DataGridTemplateColumn CanUserResize="False" Width="auto">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal" IsEnabled="{Binding IsAdmin,Converter={StaticResource Boolean2BooleanReConverter}}">
|
||||
<Button Style="{StaticResource ButtonInfo}" Margin="0,0,5,0" IsEnabled="True" Content="查看" Width="60" Command="{Binding DataContext.SeeCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding }"/>
|
||||
<Button Style="{StaticResource ButtonWarning}" Margin="0,0,5,0" IsEnabled="True" Content="修改" Width="60" Command="{Binding DataContext.UpdateCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding }" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.权限},Converter={StaticResource AuthVisConverter}}"/>
|
||||
<Button Style="{StaticResource ButtonDanger}" Margin="0,0,0,0" IsEnabled="True" Content="删除" Width="60" Command="{Binding DataContext.DelCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding }" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.权限},Converter={StaticResource AuthVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</pi:UserControlBase>
|
42
货架标准上位机/Views/Controls/RoleView.xaml.cs
Normal file
42
货架标准上位机/Views/Controls/RoleView.xaml.cs
Normal file
@ -0,0 +1,42 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 角色
|
||||
/// </summary>
|
||||
public partial class RoleView : UserControlBase
|
||||
{
|
||||
RoleViewModel viewModel = new RoleViewModel();
|
||||
public RoleView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
//第一次加载
|
||||
private void loadFirst(object sender, EventArgs e)
|
||||
{
|
||||
if (IsInDesignMode)
|
||||
return;
|
||||
|
||||
viewModel.UpdateList();
|
||||
}
|
||||
}
|
||||
}
|
20
货架标准上位机/Views/Controls/ScannerDisplayControl.xaml
Normal file
20
货架标准上位机/Views/Controls/ScannerDisplayControl.xaml
Normal file
@ -0,0 +1,20 @@
|
||||
<UserControl x:Class="货架标准上位机.Views.Controls.ScannerDisplayControl"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机.Views.Controls"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="200" d:DesignWidth="150">
|
||||
|
||||
<Border Name="border" Grid.Column="0" Margin="5" BorderThickness="1" Background="LightSkyBlue" BorderBrush="Black" CornerRadius="3">
|
||||
<StackPanel Margin="3">
|
||||
<TextBlock HorizontalAlignment="Center">串口号</TextBlock>
|
||||
<TextBlock Name="txtCom" HorizontalAlignment="Center"></TextBlock>
|
||||
<TextBlock HorizontalAlignment="Center">当前入库货架</TextBlock>
|
||||
<TextBlock Name="txtCurrentShelf" HorizontalAlignment="Center"></TextBlock>
|
||||
<TextBlock HorizontalAlignment="Center">当前入库物料</TextBlock>
|
||||
<TextBlock Name="txtCurrentMat" HorizontalAlignment="Center"></TextBlock>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</UserControl>
|
40
货架标准上位机/Views/Controls/ScannerDisplayControl.xaml.cs
Normal file
40
货架标准上位机/Views/Controls/ScannerDisplayControl.xaml.cs
Normal file
@ -0,0 +1,40 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机.Views.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// ShelfStatusControl.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class ScannerDisplayControl : UserControl
|
||||
{
|
||||
|
||||
public ScannerDisplayControl(string COM)
|
||||
{
|
||||
InitializeComponent();
|
||||
txtCom.Text = COM;
|
||||
}
|
||||
|
||||
public void RefreshValues(string shelfCode, string matSn)
|
||||
{
|
||||
Dispatcher.BeginInvoke(new Action(() =>
|
||||
{
|
||||
txtCurrentShelf.Text = shelfCode;
|
||||
txtCurrentMat.Text = matSn;
|
||||
}));
|
||||
}
|
||||
}
|
||||
}
|
17
货架标准上位机/Views/Controls/ShelfStatusControl.xaml
Normal file
17
货架标准上位机/Views/Controls/ShelfStatusControl.xaml
Normal file
@ -0,0 +1,17 @@
|
||||
<UserControl x:Class="货架标准上位机.Views.Controls.ShelfStatusControl"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机.Views.Controls"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="200" d:DesignWidth="150">
|
||||
|
||||
<Border Name="border" Grid.Column="0" Margin="5" BorderThickness="1" Background="LightSkyBlue" BorderBrush="Black" CornerRadius="3">
|
||||
<StackPanel Margin="3">
|
||||
<TextBlock Name="txtShelfCode" HorizontalAlignment="Center"></TextBlock>
|
||||
<TextBlock Name="txtCurrentMode" HorizontalAlignment="Center"></TextBlock>
|
||||
<TextBlock Name="txtGroupName" HorizontalAlignment="Center"></TextBlock>
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</UserControl>
|
59
货架标准上位机/Views/Controls/ShelfStatusControl.xaml.cs
Normal file
59
货架标准上位机/Views/Controls/ShelfStatusControl.xaml.cs
Normal file
@ -0,0 +1,59 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机.Views.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// ShelfStatusControl.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class ShelfStatusControl : UserControl
|
||||
{
|
||||
|
||||
public ShelfStatusControl(string shelfCode, int currentMode, string groupName)
|
||||
{
|
||||
InitializeComponent();
|
||||
txtShelfCode.Text = shelfCode;
|
||||
txtGroupName.Text = groupName;
|
||||
//待机模式 = 0,
|
||||
//入库模式 = 1,
|
||||
//出库模式 = 2,
|
||||
//盘点模式 = 3
|
||||
switch (currentMode)
|
||||
{
|
||||
case 0:
|
||||
txtCurrentMode.Text = "待机模式";
|
||||
border.Background = Brushes.White;
|
||||
break;
|
||||
case 1:
|
||||
txtCurrentMode.Text = "入库模式";
|
||||
border.Background = Brushes.LightSkyBlue;
|
||||
break;
|
||||
case 2:
|
||||
txtCurrentMode.Text = "出库模式";
|
||||
border.Background = Brushes.Green;
|
||||
break;
|
||||
case 3:
|
||||
txtCurrentMode.Text = "盘点模式";
|
||||
border.Background = Brushes.Pink;
|
||||
break;
|
||||
default:
|
||||
txtCurrentMode.Text = "未知";
|
||||
border.Background = Brushes.White;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
16
货架标准上位机/Views/Controls/TextDialog.xaml
Normal file
16
货架标准上位机/Views/Controls/TextDialog.xaml
Normal file
@ -0,0 +1,16 @@
|
||||
<Border x:Class="货架标准上位机.Views.Controls.TextDialog"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
CornerRadius="10"
|
||||
Width="300"
|
||||
Height="186"
|
||||
Background="{DynamicResource RegionBrush}">
|
||||
<hc:SimplePanel>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
|
||||
<hc:LoadingCircle Height="25"/>
|
||||
<TextBlock Style="{StaticResource TextBlockLargeBold}" Text="请稍候..."/>
|
||||
</StackPanel>
|
||||
<Button Width="22" Height="22" Command="hc:ControlCommands.Close" Style="{StaticResource ButtonIcon}" Foreground="{DynamicResource PrimaryBrush}" hc:IconElement.Geometry="{StaticResource ErrorGeometry}" Padding="0" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,4,4,0"/>
|
||||
</hc:SimplePanel>
|
||||
</Border>
|
28
货架标准上位机/Views/Controls/TextDialog.xaml.cs
Normal file
28
货架标准上位机/Views/Controls/TextDialog.xaml.cs
Normal file
@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机.Views.Controls
|
||||
{
|
||||
/// <summary>
|
||||
/// TextDialog.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class TextDialog
|
||||
{
|
||||
public TextDialog()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
52
货架标准上位机/Views/Controls/UserView.xaml
Normal file
52
货架标准上位机/Views/Controls/UserView.xaml
Normal file
@ -0,0 +1,52 @@
|
||||
<pi:UserControlBase x:Class="货架标准上位机.UserView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
d:DesignHeight="450" d:DesignWidth="800" LoadedVisibleFirst="loadFirst">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
<!--条件区-->
|
||||
<Grid Margin="5,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="auto"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<UniformGrid Grid.Column="0" Columns="1">
|
||||
<hc:TextBox Text="{Binding Info1}" Margin="5" Style="{StaticResource TextBoxExtend}" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="用户名称" hc:InfoElement.Placeholder="模糊匹配" VerticalAlignment="Center"/>
|
||||
</UniformGrid>
|
||||
<hc:UniformSpacingPanel Grid.Column="1" Spacing="5">
|
||||
<Button Content="新增" Command="{Binding AddCommand}" Style="{StaticResource ButtonSuccess}" Width="70" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.权限},Converter={StaticResource AuthVisConverter}}"></Button>
|
||||
<Button Content="查询" Command="{Binding UpdateListCommand}" Style="{StaticResource ButtonPrimary}" Width="70"></Button>
|
||||
</hc:UniformSpacingPanel>
|
||||
</Grid>
|
||||
<!--内容区-->
|
||||
<Border Grid.Row="1" Grid.Column="0" Style="{StaticResource BorderRegion}" BorderThickness="1" Background="#EEEEEE" Margin="3,0,3,3" Padding="0" >
|
||||
<DataGrid RowHeaderWidth="50" HeadersVisibility="All" AutoGenerateColumns="False" ItemsSource="{Binding DataList}" hc:DataGridAttach.CanUnselectAllWithBlankArea="False" hc:DataGridAttach.ShowSelectAllButton="False" hc:DataGridAttach.ShowRowNumber="True">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="5*" Binding="{Binding LoginName}" Header="用户名称" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="5*" Binding="{Binding RoleNames,Converter={StaticResource List2StrConverter}}" Header="角色" CanUserSort="False"/>
|
||||
<DataGridTextColumn IsReadOnly="True" Width="200" Binding="{Binding Time,StringFormat=yyyy-MM-dd HH:mm}" Header="创建时间" CanUserSort="False"/>
|
||||
<DataGridTemplateColumn CanUserResize="False" Width="auto">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<StackPanel Orientation="Horizontal" IsEnabled="{Binding IsAdmin,Converter={StaticResource Boolean2BooleanReConverter}}">
|
||||
<Button Style="{StaticResource ButtonInfo}" Margin="0,0,5,0" IsEnabled="True" Content="查看" Width="60" Command="{Binding DataContext.SeeCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding }"/>
|
||||
<Button Style="{StaticResource ButtonWarning}" Margin="0,0,5,0" IsEnabled="True" Content="修改" Width="60" Command="{Binding DataContext.UpdateCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding }" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.权限},Converter={StaticResource AuthVisConverter}}"/>
|
||||
<Button Style="{StaticResource ButtonDanger}" Margin="0,0,0,0" IsEnabled="True" Content="删除" Width="60" Command="{Binding DataContext.DelCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGrid}}" CommandParameter="{Binding }" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.权限},Converter={StaticResource AuthVisConverter}}"/>
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</pi:UserControlBase>
|
42
货架标准上位机/Views/Controls/UserView.xaml.cs
Normal file
42
货架标准上位机/Views/Controls/UserView.xaml.cs
Normal file
@ -0,0 +1,42 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户
|
||||
/// </summary>
|
||||
public partial class UserView : UserControlBase
|
||||
{
|
||||
UserViewModel viewModel = new UserViewModel();
|
||||
public UserView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
//第一次加载
|
||||
private void loadFirst(object sender, EventArgs e)
|
||||
{
|
||||
if (IsInDesignMode)
|
||||
return;
|
||||
|
||||
viewModel.UpdateList();
|
||||
}
|
||||
}
|
||||
}
|
62
货架标准上位机/Views/HomeView.xaml
Normal file
62
货架标准上位机/Views/HomeView.xaml
Normal file
@ -0,0 +1,62 @@
|
||||
<pi:UserControlBase x:Class="货架标准上位机.HomeView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
xmlns:controls="clr-namespace:货架标准上位机.Views.Controls"
|
||||
mc:Ignorable="d"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
d:DesignHeight="737" d:DesignWidth="1192" LoadedVisibleFirst="loadFir">
|
||||
<Border Margin="0" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="7*"/>
|
||||
<RowDefinition Height="3*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<!--内容区-->
|
||||
<!--<Grid Grid.Row="0" Margin="5,5,5,0">-->
|
||||
<!--货架状态显示区-->
|
||||
<Border Grid.Row="0" Margin="5,5,5,0" BorderThickness="1" Background="White" BorderBrush="DodgerBlue" CornerRadius="3">
|
||||
<hc:ScrollViewer IsInertiaEnabled="True" hc:ScrollViewerAttach.AutoHide="False">
|
||||
<WrapPanel Name="shelfsWrapPanel">
|
||||
|
||||
</WrapPanel>
|
||||
</hc:ScrollViewer>
|
||||
</Border>
|
||||
<!--</Grid>-->
|
||||
<!--消息区-->
|
||||
<Border Grid.Row="1" Margin="5,5,5,5" BorderThickness="1" Background="White" BorderBrush="DodgerBlue" CornerRadius="3">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="4*"/>
|
||||
<ColumnDefinition Width="6*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<!--报警-->
|
||||
<GroupBox Grid.Column="0" Background="White" Padding="0" Style="{StaticResource GroupBoxTab}" Margin="5,5,5,5">
|
||||
<GroupBox.Header>
|
||||
<Grid Width="{Binding ActualWidth,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type GroupBox}}}">
|
||||
<TextBlock Margin="5,0" HorizontalAlignment="Left" VerticalAlignment="Center">报警</TextBlock>
|
||||
<Button HorizontalAlignment="Right" Height="25" Margin="10,0" Padding="10,0" FontFamily="{StaticResource IconFont}" Command="{Binding ClearTextErrCommand}"> 清除</Button>
|
||||
</Grid>
|
||||
</GroupBox.Header>
|
||||
<TextBox Style="{StaticResource TextBoxExtend.Multi}" IsReadOnly="True" Margin="-1" Text="{Binding TextErr}" Foreground="Tomato" hc:InfoElement.Placeholder="没有报警信息"></TextBox>
|
||||
</GroupBox>
|
||||
<!--日志-->
|
||||
<GroupBox Grid.Column="1" Background="White" Padding="0" Style="{StaticResource GroupBoxTab}" Margin="0,5,5,5" >
|
||||
<GroupBox.Header>
|
||||
<Grid Width="{Binding ActualWidth,RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type GroupBox}}}">
|
||||
<TextBlock Margin="5,0" HorizontalAlignment="Left" VerticalAlignment="Center">日志</TextBlock>
|
||||
<Button HorizontalAlignment="Right" Height="25" Margin="10,0" Padding="10,0" FontFamily="{StaticResource IconFont}" Command="{Binding ClearTextInfoCommand}"> 清空</Button>
|
||||
</Grid>
|
||||
</GroupBox.Header>
|
||||
<pi:TextBoxLog Style="{StaticResource TextBoxExtend.Multi}" Margin="-1" hc:InfoElement.Placeholder="没有日志信息" Foreground="CornflowerBlue"></pi:TextBoxLog>
|
||||
</GroupBox>
|
||||
</Grid>
|
||||
</Border>
|
||||
<Button Grid.Row="2" Command="{Binding AddUserControlCommand}" Content="点击添加控件"></Button>
|
||||
</Grid>
|
||||
</Border>
|
||||
</pi:UserControlBase>
|
44
货架标准上位机/Views/HomeView.xaml.cs
Normal file
44
货架标准上位机/Views/HomeView.xaml.cs
Normal file
@ -0,0 +1,44 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using 货架标准上位机.Views.Controls;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 主页
|
||||
/// </summary>
|
||||
public partial class HomeView : UserControlBase
|
||||
{
|
||||
HomeViewModel viewModel = new HomeViewModel();
|
||||
|
||||
public HomeView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
private void loadFir(object sender, EventArgs e)
|
||||
{
|
||||
viewModel.wrapPanel = shelfsWrapPanel;
|
||||
if (this.IsInDesignMode)
|
||||
return;
|
||||
|
||||
viewModel.LoadTask();
|
||||
}
|
||||
}
|
||||
}
|
140
货架标准上位机/Views/InInventoryView.xaml
Normal file
140
货架标准上位机/Views/InInventoryView.xaml
Normal file
@ -0,0 +1,140 @@
|
||||
<pi:UserControlBase
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
x:Class="货架标准上位机.InInventoryView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="737" d:DesignWidth="1192" LoadedVisible="UserControlBase_LoadedVisible" Loaded="UserControlBase_Loaded" LoadedVisibleFirst="UserControlBase_LoadedVisibleFirst">
|
||||
<Border Margin="0" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="10*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Grid.Row="0" Margin="0" Background="AliceBlue" CornerRadius="0" Padding="0" MouseUp="Border_MouseUp">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<StackPanel Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Column="2" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
|
||||
<Button Style="{StaticResource ButtonDanger}" Margin="10" hc:BorderElement.CornerRadius="15"
|
||||
MinHeight="40" FontSize="20" Content="结束入库" FontFamily="{StaticResource IconFont}"
|
||||
Command="{Binding BtnEndCommand}">
|
||||
</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="1" Margin="1" Background="AliceBlue" Padding="0">
|
||||
<WrapPanel Name="scannersWrapPanel">
|
||||
|
||||
</WrapPanel>
|
||||
<!--<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="8*"></RowDefinition>
|
||||
<RowDefinition Height="8*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid Grid.Row="0">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="1.2*"></RowDefinition>
|
||||
<RowDefinition Height="1.2*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Row="0" Grid.Column="0"
|
||||
Text="最小包装条码:" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBlock Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="3"
|
||||
Text="{Binding MatSN}" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
></TextBlock>
|
||||
<TextBlock Grid.Row="1" Grid.Column="0"
|
||||
Text="物料编码:" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBlock Grid.Row="1" Grid.Column="1"
|
||||
Text="{Binding MatCode}" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
></TextBlock>
|
||||
<TextBlock Grid.Row="2" Grid.Column="0"
|
||||
Text="物料名称:" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBlock Grid.Row="2" Grid.Column="1"
|
||||
Text="{Binding MatName}" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
></TextBlock>
|
||||
<TextBlock Grid.Row="3" Grid.Column="0"
|
||||
Text="物料规格:" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBlock Grid.Row="3" Grid.Column="1" Grid.ColumnSpan="3"
|
||||
Text="{Binding MatSpec}" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
>
|
||||
</TextBlock>
|
||||
|
||||
<TextBlock Grid.Row="4" Grid.Column="0"
|
||||
Text="物料批次:" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right">
|
||||
</TextBlock>
|
||||
<TextBlock Grid.Row="4" Grid.Column="1"
|
||||
Text="{Binding MatBatch}" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left">
|
||||
</TextBlock>
|
||||
|
||||
<TextBlock Grid.Row="5" Grid.Column="0"
|
||||
Text="物料数量:" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBlock Grid.Row="5" Grid.Column="1"
|
||||
Text="{Binding MatQty}" FontSize="20"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"></TextBlock>
|
||||
|
||||
<TextBlock Grid.Row="4" Grid.Column="2"
|
||||
Text="当前入库货架:" FontSize="20" FontWeight="Bold"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBlock Grid.Row="4" Grid.Column="3" Grid.RowSpan="2"
|
||||
Text="{Binding ShelfCode}" FontSize="5" FontWeight="Bold"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left">
|
||||
</TextBlock>
|
||||
|
||||
|
||||
</Grid>
|
||||
<DataGrid Grid.Row="1" SelectedCellsChanged="DataGrid_SelectedCellsChanged"
|
||||
ItemsSource="{Binding DataGridItemSource}"
|
||||
RowHeight="39" Margin="5"
|
||||
AutoGenerateColumns="False" FontSize="18" CanUserSortColumns="False">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="物料编码" Binding="{Binding MatCode}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="物料名称" Binding="{Binding MatName}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="物料规格" Binding="{Binding MatSpec}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="批次" Binding="{Binding MatBatch}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="数量" Binding="{Binding MatQty}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="入库位置" Binding="{Binding StoreCode}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="入库人" Binding="{Binding InstoreUser}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="入库时间" Binding="{Binding InstoreTime ,StringFormat='yyyy-MM-dd HH:mm:ss'}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="最小包装条码" Binding="{Binding MatSN}"></DataGridTextColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
</Grid>-->
|
||||
</Border>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</pi:UserControlBase>
|
69
货架标准上位机/Views/InInventoryView.xaml.cs
Normal file
69
货架标准上位机/Views/InInventoryView.xaml.cs
Normal file
@ -0,0 +1,69 @@
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using 货架标准上位机.ViewModel;
|
||||
using 货架标准上位机.Views.Controls;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// InInventoryView.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class InInventoryView : UserControlBase
|
||||
{
|
||||
public InInventoryViewModel viewModel = new InInventoryViewModel();
|
||||
public InInventoryView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
|
||||
|
||||
var scanners = ScannerManager.Scanners.Select(t => t).ToList();
|
||||
scanners.ForEach(t =>
|
||||
{
|
||||
var control = new ScannerDisplayControl(t.COM);
|
||||
t.ScannerDisplayControl = control;
|
||||
scannersWrapPanel.Children.Add(control);
|
||||
});
|
||||
}
|
||||
|
||||
private void DataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
|
||||
{
|
||||
DataGrid datagrid = sender as DataGrid;
|
||||
datagrid.UnselectAllCells();
|
||||
}
|
||||
|
||||
private void UserControlBase_Loaded(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void Border_MouseUp(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void UserControlBase_LoadedVisibleFirst(object sender, EventArgs e)
|
||||
{
|
||||
if (IsInDesignMode)
|
||||
return;
|
||||
//viewModel.NewMethod();
|
||||
}
|
||||
|
||||
private void UserControlBase_LoadedVisible(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
185
货架标准上位机/Views/InterfaceRecordView.xaml
Normal file
185
货架标准上位机/Views/InterfaceRecordView.xaml
Normal file
@ -0,0 +1,185 @@
|
||||
<pi:UserControlBase
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
x:Class="货架标准上位机.InterfaceRecordView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="737" d:DesignWidth="1192" LoadedVisibleFirst="LoadedVisible">
|
||||
<Border Margin="0" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="1.5*"></RowDefinition>
|
||||
<RowDefinition Height="8*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Grid.Row="0" Margin="3" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="0.6*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="0.7*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="0.7*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="0.7*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Margin="5"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
Text="接口地址:" FontSize="18" ></TextBlock>
|
||||
<TextBox Grid.Row="0" Grid.Column="1" Text="{Binding RequestUrl}"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
FontSize="18" MinWidth="120"></TextBox>
|
||||
|
||||
<TextBlock Grid.Row="0" Grid.Column="2" Margin="5"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="请求参数:" FontSize="18" ></TextBlock>
|
||||
<TextBox Grid.Row="0" Grid.Column="3" Text="{Binding RequestBody}"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
FontSize="18" MinWidth="120"></TextBox>
|
||||
|
||||
|
||||
|
||||
<TextBlock Grid.Row="2" Grid.Column="0" Margin="5"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
Text="调用类型:" FontSize="18" ></TextBlock>
|
||||
<ComboBox Grid.Row="2" Grid.Column="1"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
FontSize="18" MinWidth="120" SelectedIndex="0" Text="{Binding RequestType}">
|
||||
<ComboBoxItem Content="调用"></ComboBoxItem>
|
||||
<ComboBoxItem Content="被调用"></ComboBoxItem>
|
||||
</ComboBox>
|
||||
|
||||
|
||||
<StackPanel Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="6" Orientation="Horizontal"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left" >
|
||||
<TextBlock Grid.Row="1" Grid.Column="0" Margin="5"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="时间:" FontSize="18" ></TextBlock>
|
||||
<ComboBox Grid.Row="1" Grid.Column="1"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
FontSize="18" MinWidth="120"
|
||||
ItemsSource="{Binding TimeTypes}"
|
||||
SelectedValue="{Binding TimeType, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
|
||||
SelectedIndex="0"
|
||||
>
|
||||
</ComboBox>
|
||||
<TextBlock FontSize="18" VerticalAlignment="Center" Text=" "></TextBlock>
|
||||
<hc:DateTimePicker FontSize="18" Height="24" MinWidth="180" Style="{StaticResource DateTimePickerExtend}" SelectedDateTime="{Binding StartTime}"></hc:DateTimePicker>
|
||||
<TextBlock FontSize="18" VerticalAlignment="Center" Text=" 到 "></TextBlock>
|
||||
<hc:DateTimePicker FontSize="18" Height="24" MinWidth="180" Style="{StaticResource DateTimePickerExtend}" SelectedDateTime="{Binding EndTime}"></hc:DateTimePicker>
|
||||
</StackPanel>
|
||||
|
||||
<Button Style="{StaticResource ButtonSuccess}"
|
||||
Command="{Binding BtnSearchCommand}"
|
||||
hc:BorderElement.CornerRadius="5"
|
||||
Grid.Column="5" Grid.Row="0" MinHeight="36" FontSize="16" Content=" 搜索" FontFamily="{StaticResource IconFont}" Margin="0,0,0,-5" >
|
||||
</Button>
|
||||
|
||||
<Button Style="{StaticResource ButtonWarning}"
|
||||
Command="{Binding BtnResetCommand}"
|
||||
hc:BorderElement.CornerRadius="5"
|
||||
Grid.Column="6" Grid.Row="0" MinHeight="36" FontSize="16" Content=" 重置" FontFamily="{StaticResource IconFont}" Margin="0,0,0,-5" >
|
||||
</Button>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="1" Margin="3" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="0.8*"></RowDefinition>
|
||||
<RowDefinition Height="8*"></RowDefinition>
|
||||
<RowDefinition Height="0.7*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
||||
<Button MinHeight="40" FontSize="18" Margin="5" Command="{Binding BtnExportCommand}"
|
||||
Content=" 导 出" FontFamily="{StaticResource IconFont}"
|
||||
Style="{StaticResource ButtonWarning}" Background="DarkOrange">
|
||||
</Button>
|
||||
</StackPanel>
|
||||
<DataGrid Grid.Row="1"
|
||||
SelectedCellsChanged="DataGrid_SelectedCellsChanged"
|
||||
ItemsSource="{Binding DataGridItemSource}"
|
||||
RowHeight="39"
|
||||
AutoGenerateColumns="False"
|
||||
FontSize="13">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="序号" Binding="{Binding RowNumber}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="接口地址" Binding="{Binding RequestUrl}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="设备IP" Binding="{Binding DeviceIp}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="请求参数" Binding="{Binding RequestBody}" MaxWidth="100"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="QueryString" Binding="{Binding QueryString}" MaxWidth="100"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="请求时间" Binding="{Binding RequestTime,StringFormat='yyyy-MM-dd HH:mm:ss'}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="返回参数" Binding="{Binding ResponseJson}" MaxWidth="100"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="返回时间" Binding="{Binding ResponseTime,StringFormat='yyyy-MM-dd HH:mm:ss'}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="耗时(ms)" Binding="{Binding ExecutionTime}"></DataGridTextColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
<Grid Grid.Row="2">
|
||||
<Border CornerRadius="3" Background="Transparent" VerticalAlignment="Center" >
|
||||
<Grid HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Top" Width="Auto" MinHeight="26">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock FontSize="14" Text="共"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding TotalCount ,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="条记录 "></TextBlock>
|
||||
<TextBlock FontSize="14" Text="第"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding CurrentPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="/"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding MaxPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="页"></TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Column="1">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions >
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="0" Name="btnFirst" Content="首页" Foreground="Black" FontSize="14"
|
||||
Command="{Binding BtnFirstPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="1" Name="btnPrev" Content="上一页" FontSize="14"
|
||||
Command="{Binding BtnPrePageCommand}"/>
|
||||
<TextBox BorderBrush="Transparent" Grid.Column="2" FontSize="14" MinWidth="50" HorizontalAlignment="Center" VerticalAlignment="Center" Cursor="IBeam" IsEnabled="False"
|
||||
Text ="{Binding CurrentPage}" TextAlignment="Center"
|
||||
|
||||
/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="3" Name="btnNext" Content="下一页" FontSize="14"
|
||||
Command="{Binding BtnNextPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="4" Name="btnLast" Content="末页" FontSize="14"
|
||||
Command="{Binding BtnLastPageCommand}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</pi:UserControlBase>
|
46
货架标准上位机/Views/InterfaceRecordView.xaml.cs
Normal file
46
货架标准上位机/Views/InterfaceRecordView.xaml.cs
Normal file
@ -0,0 +1,46 @@
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using 货架标准上位机.ViewModel;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
public partial class InterfaceRecordView : UserControlBase
|
||||
{
|
||||
public InterfaceRecordViewModel viewModel { get; set; } = new InterfaceRecordViewModel();
|
||||
public InterfaceRecordView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
private void DataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
|
||||
{
|
||||
//try
|
||||
//{
|
||||
// DataGrid datagrid = sender as DataGrid;
|
||||
// datagrid.UnselectAllCells();
|
||||
//}
|
||||
//catch
|
||||
//{
|
||||
|
||||
//}
|
||||
}
|
||||
|
||||
private void LoadedVisible(object sender, EventArgs e)
|
||||
{
|
||||
viewModel.BtnReset();
|
||||
}
|
||||
}
|
||||
}
|
78
货架标准上位机/Views/MainWindows/MainWindow.xaml
Normal file
78
货架标准上位机/Views/MainWindows/MainWindow.xaml
Normal file
@ -0,0 +1,78 @@
|
||||
<hc:Window xmlns:View="clr-namespace:货架标准上位机" x:Class="货架标准上位机.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||
mc:Ignorable="d"
|
||||
Title="{Binding Title}" Height="800" Width="1280" Icon="/Resources/Logo.ico"
|
||||
WindowStartupLocation="CenterScreen" Loaded="load">
|
||||
<!--标题栏-->
|
||||
<hc:Window.NonClientAreaContent>
|
||||
<StackPanel HorizontalAlignment="Right">
|
||||
<Menu Height="29">
|
||||
<MenuItem Height="29" Command="{Binding OpenUserCommand}">
|
||||
<MenuItem.Header>
|
||||
<TextBlock Text="{Binding LoginName,Source={x:Static local:UserInfoView.viewModel},TargetNullValue=登录}" Foreground="DimGray" Margin="-5,0"></TextBlock>
|
||||
</MenuItem.Header>
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<!--<MenuItem Height="29" Width="35" Header="">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="15" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
<MenuItem Width="120" Header="蓝色">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" Foreground="Blue" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Width="120" Header="紫色">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" Foreground="Purple" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Width="120" Header="黑夜">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" Foreground="Black" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</MenuItem>-->
|
||||
<MenuItem Height="29" Width="35" Header="">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="15" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
<MenuItem Width="120" Header="日志" Command="{Binding OpenLogCommand}">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Width="120" Header="帮助" Command="{Binding OpenHelpCommand}">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Width="120" Header="关于" Command="{Binding OpenWeCommand}">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</MenuItem>
|
||||
</Menu>
|
||||
</StackPanel>
|
||||
</hc:Window.NonClientAreaContent>
|
||||
<Grid>
|
||||
<!--内容-->
|
||||
<Grid>
|
||||
|
||||
</Grid>
|
||||
<!--全局提示-->
|
||||
<ScrollViewer Background="{x:Null}" Grid.Row="0" VerticalScrollBarVisibility="Auto" HorizontalAlignment="Right" VerticalAlignment="Top">
|
||||
<StackPanel Background="{x:Null}" hc:Growl.GrowlParent="True" VerticalAlignment="Top" Margin="0,10,10,10" HorizontalAlignment="Right"/>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</hc:Window>
|
43
货架标准上位机/Views/MainWindows/MainWindow.xaml.cs
Normal file
43
货架标准上位机/Views/MainWindows/MainWindow.xaml.cs
Normal file
@ -0,0 +1,43 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using System.Windows.Threading;
|
||||
using 货架标准上位机.ViewModel;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// MainWindow.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class MainWindow : HandyControl.Controls.Window
|
||||
{
|
||||
public static MainViewModel viewModel = new MainViewModel();
|
||||
public MainWindow()
|
||||
{
|
||||
if (!viewModel.InitAgo())
|
||||
this.Close();
|
||||
|
||||
InitializeComponent();
|
||||
|
||||
viewModel.Init(this);
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
private void load(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
283
货架标准上位机/Views/MainWindows/MainWindow1.xaml
Normal file
283
货架标准上位机/Views/MainWindows/MainWindow1.xaml
Normal file
@ -0,0 +1,283 @@
|
||||
<hc:Window xmlns:View="clr-namespace:货架标准上位机" x:Class="货架标准上位机.MainWindow1"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
xmlns:md="http://materialdesigninxaml.net/winfx/xaml/themes"
|
||||
mc:Ignorable="d"
|
||||
Title="{Binding Title}" NonClientAreaBackground="#FFDCEEFF" Height="800" Width="1280" Icon="/Resources/Logo.ico"
|
||||
Background="#FFDCEEFF" WindowStartupLocation="CenterScreen" Loaded="load">
|
||||
<!--标题栏-->
|
||||
<hc:Window.NonClientAreaContent>
|
||||
<StackPanel HorizontalAlignment="Right">
|
||||
<Menu Height="29" Background="#FFDCEEFF">
|
||||
<!--<MenuItem Height="29" Command="{Binding OpenUserCommand}" Visibility="{Binding IsLogin,Converter={StaticResource Boolean2VisibilityConverter}}">-->
|
||||
<MenuItem Height="29" Command="{Binding OpenUserCommand}">
|
||||
<MenuItem.Header>
|
||||
<TextBlock Text="{Binding LoginName,Source={x:Static local:UserInfoView.viewModel},TargetNullValue=登录}" Foreground="DimGray" Margin="-5,0"></TextBlock>
|
||||
</MenuItem.Header>
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<!--<MenuItem Height="29" Width="35" Header="">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="15" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
<MenuItem Width="120" Header="蓝色">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" Foreground="Blue" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Width="120" Header="紫色">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" Foreground="Purple" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Width="120" Header="黑夜">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" Foreground="Black" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</MenuItem>-->
|
||||
<MenuItem Height="29" Width="35">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="15" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
<MenuItem Width="120" Header="本地日志" Command="{Binding OpenLogCommand}">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Width="120" Header="操作说明" Command="{Binding OpenHelpCommand}">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
<MenuItem Width="120" Header="关 于" Command="{Binding OpenWeCommand}">
|
||||
<MenuItem.Icon>
|
||||
<TextBlock Text="" FontSize="16" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</MenuItem>
|
||||
</Menu>
|
||||
</StackPanel>
|
||||
</hc:Window.NonClientAreaContent>
|
||||
<!--内容-->
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="3"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<!--内容-->
|
||||
<TabControl Grid.Row="1" TabStripPlacement="Left" Margin="5,0,5,2" Padding="0,0,3,0" BorderThickness="0" Style="{StaticResource TabControlRectangle}" PreviewKeyDown="tabControl_PreviewKeyDown">
|
||||
<TabItem Padding="10,10,40,10" IsSelected="True">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">主页</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:HomeView />
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
|
||||
|
||||
|
||||
|
||||
<TabItem Padding="10,10,40,10" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.查询},Converter={StaticResource AuthVisConverter}}">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">物料入库</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:InInventoryView/>
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Padding="10,10,40,10" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.查询},Converter={StaticResource AuthVisConverter}}">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">物料出库</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:MatBaseInfoView/>
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Padding="10,10,40,10" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.查询},Converter={StaticResource AuthVisConverter}}">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">物料盘点</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:MatBaseInfoView/>
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
|
||||
|
||||
<TabItem Padding="10,10,40,10" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.查询},Converter={StaticResource AuthVisConverter}}">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">库存查询</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:MatInventoryDetailView/>
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Padding="10,10,40,10" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.查询},Converter={StaticResource AuthVisConverter}}">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">出入记录</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Padding="10,10,40,10" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.查询},Converter={StaticResource AuthVisConverter}}">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">库位管理</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<TabControl Style="{StaticResource TabControlBaseStyle.MouseOver}">
|
||||
<TabItem Header="货架管理" >
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:ShelfInfoView />
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
<TabItem Header="模组管理">
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:RoleView />
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
<TabItem Header="库位管理">
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:RoleView />
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Padding="10,10,40,10" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.查询},Converter={StaticResource AuthVisConverter}}">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">物料管理</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:MatBaseInfoView/>
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Padding="10,10,40,10" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.查询},Converter={StaticResource AuthVisConverter}}">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">条码打印</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:MatBaseInfoView/>
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Padding="10,10,40,10" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.查询},Converter={StaticResource AuthVisConverter}}">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">接口记录</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:InterfaceRecordView/>
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Padding="10,10,40,10" >
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">权限</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<TabControl Margin="5" Style="{StaticResource TabControlBaseStyle.MouseOver}">
|
||||
<TabItem Header="用户管理" >
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:UserView Margin="0,5"/>
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
<TabItem Header="角色管理">
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:RoleView Margin="0,5"/>
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Padding="10,10,40,10" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.调试},Converter={StaticResource AuthVisConverter}}">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">调试</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<TabControl Margin="5" Style="{StaticResource TabControlBaseStyle.MouseOver}">
|
||||
<TabItem Header="PLC">
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:DeviceView Margin="0,5"/>
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
<TabItem Header="扫码枪">
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<pi:TextBoxScanner Style="{StaticResource TextBoxExtend.Multi}" hc:InfoElement.Placeholder="鼠标点击此处激活" hc:InfoElement.Title="码信息" hc:InfoElement.TitlePlacement="Top" AutoClear="NextClear" IsAutoFocus="True"></pi:TextBoxScanner>
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
</TabItem>
|
||||
|
||||
<TabItem Padding="10,10,40,10" Visibility="{Binding Auth,Source={x:Static local:UserInfoView.viewModel},ConverterParameter={x:Static local:AuthEnum.设置},Converter={StaticResource AuthVisConverter}}">
|
||||
<TabItem.Header>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Text="" FontSize="20" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
<TextBlock Margin="10,0,0,0" FontSize="16">设置</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem.Header>
|
||||
<hc:TransitioningContentControl TransitionMode="Fade">
|
||||
<View:SetView />
|
||||
</hc:TransitioningContentControl>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
<!--状态栏-->
|
||||
<Border Margin="5,3" Grid.Row="2" Grid.ColumnSpan="2" Background="AliceBlue" CornerRadius="3">
|
||||
<Grid>
|
||||
<StackPanel Margin="5" Orientation="Horizontal" HorizontalAlignment="Left">
|
||||
<pi:IotState Content="状态内容待定" IsOk="False" Height="auto" Width="auto" InteriorHeight="13" Foreground="Gray" Background="{x:Null}"></pi:IotState>
|
||||
</StackPanel>
|
||||
<StackPanel Margin="5" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||
<TextBlock Margin="0,0" Text="{Binding Time,StringFormat=yyyy-MM-dd HH:mm:ss,FallbackValue=2000-01-01 00:00:00}" Foreground="#FF3A90C1" VerticalAlignment="Center"></TextBlock>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
<!--全局提示-->
|
||||
<ScrollViewer Background="{x:Null}" Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalAlignment="Right" VerticalAlignment="Bottom">
|
||||
<StackPanel Background="{x:Null}" hc:Growl.GrowlParent="True" VerticalAlignment="Top" Margin="0,10,10,10" HorizontalAlignment="Right"/>
|
||||
</ScrollViewer>
|
||||
</Grid>
|
||||
</hc:Window>
|
50
货架标准上位机/Views/MainWindows/MainWindow1.xaml.cs
Normal file
50
货架标准上位机/Views/MainWindows/MainWindow1.xaml.cs
Normal file
@ -0,0 +1,50 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
using System.Windows.Threading;
|
||||
using 货架标准上位机.ViewModel;
|
||||
using HandyControl.Controls;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// MainWindow1.xaml 的交互逻辑
|
||||
/// </summary>
|
||||
public partial class MainWindow1 : HandyControl.Controls.Window
|
||||
{
|
||||
public static MainViewModel viewModel = MainWindow.viewModel;
|
||||
public MainWindow1()
|
||||
{
|
||||
if (!viewModel.InitAgo())
|
||||
this.Close();
|
||||
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
private void load(object sender, RoutedEventArgs e)
|
||||
{
|
||||
viewModel.Init(this);
|
||||
}
|
||||
|
||||
private void tabControl_PreviewKeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
//取消tabControl快捷键切换
|
||||
if (e.Key == Key.LeftCtrl || e.Key == Key.LeftCtrl || e.Key == Key.Tab)
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
}
|
92
货架标准上位机/Views/MatBaseInfoAddOrUpdateView.xaml
Normal file
92
货架标准上位机/Views/MatBaseInfoAddOrUpdateView.xaml
Normal file
@ -0,0 +1,92 @@
|
||||
<Window
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
x:Class="货架标准上位机.MatBaseInfoAddOrUpdateView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
mc:Ignorable="d"
|
||||
Height="320" Width="320" WindowStyle="None" BorderThickness="0" Background="{x:Null}" AllowsTransparency="True" WindowStartupLocation="CenterScreen" Opacity="1">
|
||||
<Border BorderBrush="Gray" Background="WhiteSmoke" CornerRadius="5" BorderThickness="1">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock FontSize="18" Name="Title" Text="{Binding Title, FallbackValue=新增物料}" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center"/>
|
||||
<Button Margin="-5,-1"
|
||||
Visibility="{Binding IsClose,Converter={StaticResource Boolean2VisibilityConverter}}"
|
||||
Style="{StaticResource ButtonIcon}"
|
||||
hc:IconElement.Geometry="{StaticResource CloseGeometry}" HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top" Click="closeClick"/>
|
||||
|
||||
<StackPanel Margin="5,0" Grid.Row="1" >
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="物料编码:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="MatCode" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource TextBoxExtend}"
|
||||
hc:InfoElement.Placeholder="此项必填"
|
||||
></TextBox>
|
||||
<TextBlock Text="*" Foreground="Red" VerticalAlignment="Center">
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="物料名称:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="MatName" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource TextBoxExtend}"
|
||||
hc:InfoElement.Placeholder="此项必填"
|
||||
></TextBox>
|
||||
<TextBlock Text="*" Foreground="Red" VerticalAlignment="Center">
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="物料规格:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="MatSpec" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource TextBoxExtend}">
|
||||
</TextBox>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="物料单位:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="MatUnit" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource TextBoxExtend}">
|
||||
</TextBox>
|
||||
</StackPanel>
|
||||
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="物料客户:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="MatCustomer" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource TextBoxExtend}">
|
||||
</TextBox>
|
||||
</StackPanel>
|
||||
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="状 态:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<ComboBox Name="IsEnable" MinWidth="100" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
SelectedValuePath="Tag" SelectedValue="{Binding IsEnable}">
|
||||
<ComboBoxItem IsSelected="True" Tag="True">启用</ComboBoxItem>
|
||||
<ComboBoxItem Tag="False">禁用</ComboBoxItem>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Margin="5" x:Name="spacingPanel" Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||
<Button Margin="5" MinHeight="30" FontSize="15" Content="确认" Name="btnOk" Click="btnOk_Click"/>
|
||||
<Button Margin="5" MinHeight="30" FontSize="15" Content="取消" Click="closeClick"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Window>
|
94
货架标准上位机/Views/MatBaseInfoAddOrUpdateView.xaml.cs
Normal file
94
货架标准上位机/Views/MatBaseInfoAddOrUpdateView.xaml.cs
Normal file
@ -0,0 +1,94 @@
|
||||
using HandyControl.Controls;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Windows;
|
||||
using WCS.BLL.DbModels;
|
||||
using 货架标准上位机.ViewModel;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
public partial class MatBaseInfoAddOrUpdateView : System.Windows.Window
|
||||
{
|
||||
|
||||
public MatBaseInfoAddOrUpdateViewModel ViewModel = new MatBaseInfoAddOrUpdateViewModel();
|
||||
public MatBaseInfoModel matBaseInfo = null;
|
||||
|
||||
|
||||
public MatBaseInfoAddOrUpdateView(string _titleText, MatBaseInfoModel _matBaseInfo = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = ViewModel;
|
||||
|
||||
if (_matBaseInfo != null)
|
||||
{
|
||||
matBaseInfo = _matBaseInfo;
|
||||
//绑定数据
|
||||
MatCode.Text = matBaseInfo.MatCode;
|
||||
MatName.Text = matBaseInfo.MatName;
|
||||
MatSpec.Text = matBaseInfo.MatSpec;
|
||||
MatUnit.Text = matBaseInfo.MatUnit;
|
||||
MatCustomer.Text = matBaseInfo.MatCustomer;
|
||||
ViewModel.IsEnable = matBaseInfo.IsEnable;
|
||||
|
||||
MatCode.IsEnabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
matBaseInfo = new MatBaseInfoModel();
|
||||
ViewModel.IsEnable = true;
|
||||
}
|
||||
|
||||
|
||||
//绑定标题
|
||||
if (!string.IsNullOrEmpty(_titleText))
|
||||
{
|
||||
Title.Text = _titleText;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
private void btnOk_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (string.IsNullOrEmpty(MatCode.Text))
|
||||
{
|
||||
Growl.Warning($"物料编码必填!");
|
||||
MatCode.Focus();
|
||||
return;
|
||||
}
|
||||
else if (string.IsNullOrEmpty(MatName.Text))
|
||||
{
|
||||
Growl.Warning($"物料名称必填!");
|
||||
MatName.Focus();
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
matBaseInfo.MatCode = MatCode.Text;
|
||||
matBaseInfo.MatName = MatName.Text;
|
||||
matBaseInfo.MatSpec = MatSpec.Text;
|
||||
matBaseInfo.MatUnit = MatUnit.Text;
|
||||
matBaseInfo.MatCustomer = MatCustomer.Text;
|
||||
matBaseInfo.IsEnable = ViewModel.IsEnable;
|
||||
}
|
||||
//绑定数据
|
||||
catch (Exception ex)
|
||||
{
|
||||
Growl.Error($"发生异常:{ex.Message}");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
this.DialogResult = true;
|
||||
this.Close();
|
||||
}
|
||||
|
||||
private void closeClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.DialogResult = false;
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
320
货架标准上位机/Views/MatBaseInfoView.xaml
Normal file
320
货架标准上位机/Views/MatBaseInfoView.xaml
Normal file
@ -0,0 +1,320 @@
|
||||
<pi:UserControlBase
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
x:Class="货架标准上位机.MatBaseInfoView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="737" d:DesignWidth="1192" LoadedVisibleFirst="LoadedVisible">
|
||||
<Border Margin="0" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="1*"></RowDefinition>
|
||||
<RowDefinition Height="10*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Border Grid.Row="0" Margin="5 5 5 0" Background="AliceBlue" CornerRadius="5" Padding="0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1.9*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="1.9*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="1.9*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="1.9*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Column="0"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="物料编码:" FontSize="18" ></TextBlock>
|
||||
<TextBox Grid.Column="1"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
FontSize="18" MinWidth="90" Text="{Binding MatCode}"></TextBox>
|
||||
|
||||
<TextBlock Grid.Column="2"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="物料名称:" FontSize="18" ></TextBlock>
|
||||
<TextBox Grid.Column="3"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
FontSize="18" MinWidth="90" Text="{Binding MatName}"></TextBox>
|
||||
|
||||
<TextBlock Grid.Column="4"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="物料规格:" FontSize="18" ></TextBlock>
|
||||
<TextBox Grid.Column="5"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
FontSize="18" MinWidth="90" Text="{Binding MatSpec}"></TextBox>
|
||||
|
||||
<TextBlock Grid.Column="6"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="物料状态:" FontSize="18" ></TextBlock>
|
||||
<ComboBox Grid.Column="7"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
FontSize="18" MinWidth="90"
|
||||
SelectedValuePath="Tag" SelectedValue="{Binding IsEnable}"
|
||||
>
|
||||
<ComboBoxItem IsSelected="True" Tag="{x:Null}" >全部</ComboBoxItem>
|
||||
<ComboBoxItem Tag="True">启用</ComboBoxItem>
|
||||
<ComboBoxItem Tag="False">禁用</ComboBoxItem>
|
||||
</ComboBox>
|
||||
|
||||
|
||||
<Button Style="{StaticResource ButtonSuccess}" hc:BorderElement.CornerRadius="15"
|
||||
Grid.Column="9" MinHeight="40" FontSize="18" Content=" 搜索" FontFamily="{StaticResource IconFont}"
|
||||
Command="{Binding BtnSearchCommand}">
|
||||
</Button>
|
||||
<Button Style="{StaticResource ButtonWarning}" hc:BorderElement.CornerRadius="15"
|
||||
Grid.Column="10" MinHeight="40" FontSize="18" Content=" 重置" FontFamily="{StaticResource IconFont}"
|
||||
Command="{Binding BtnResetCommand}">
|
||||
</Button>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="1" Margin="5" Background="AliceBlue" CornerRadius="5" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="0.8*"></RowDefinition>
|
||||
<RowDefinition Height="9*"></RowDefinition>
|
||||
<RowDefinition Height="0.8*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
||||
<Button MinHeight="40" FontSize="18" Margin="5"
|
||||
Content="新 增" FontFamily="{StaticResource IconFont}"
|
||||
Foreground="WhiteSmoke"
|
||||
Background="HotPink"
|
||||
Command="{Binding BtnAddCommand}"
|
||||
>
|
||||
</Button>
|
||||
|
||||
<Button MinHeight="40" FontSize="18" Margin="5"
|
||||
Content="修 改" FontFamily="{StaticResource IconFont}"
|
||||
Foreground="WhiteSmoke"
|
||||
Background="CadetBlue"
|
||||
Command="{Binding BtnEditCommand}"
|
||||
|
||||
>
|
||||
</Button>
|
||||
|
||||
|
||||
<Button MinHeight="40" FontSize="18" Margin="5"
|
||||
Content="删 除" FontFamily="{StaticResource IconFont}"
|
||||
Foreground="WhiteSmoke"
|
||||
Command="{Binding BtnDeleteCommand}"
|
||||
Style="{StaticResource ButtonDanger}"
|
||||
|
||||
>
|
||||
</Button>
|
||||
|
||||
<Button MinHeight="40" FontSize="18" Margin="5"
|
||||
Content="导 入" FontFamily="{StaticResource IconFont}"
|
||||
Command="{Binding BtnImportCommand}"
|
||||
Foreground="WhiteSmoke"
|
||||
Background="Green"
|
||||
>
|
||||
</Button>
|
||||
<Button MinHeight="40" FontSize="18" Margin="5"
|
||||
Content="导 出" FontFamily="{StaticResource IconFont}"
|
||||
Command="{Binding BtnExportCommand}"
|
||||
Foreground="WhiteSmoke"
|
||||
Background="DarkOrange"
|
||||
>
|
||||
</Button>
|
||||
|
||||
|
||||
<Button MinHeight="40" FontSize="18" Margin="5"
|
||||
Content="打 印" FontFamily="{StaticResource IconFont}"
|
||||
Command="{Binding BtnPrintCommand}"
|
||||
Foreground="WhiteSmoke"
|
||||
Background="DarkOrange"
|
||||
>
|
||||
</Button>
|
||||
|
||||
</StackPanel>
|
||||
|
||||
<DataGrid Grid.Row="1"
|
||||
SelectionChanged="DataGrid_SelectionChanged"
|
||||
SelectedItem="{Binding SelectedataGridItem}"
|
||||
Name="dataGrid"
|
||||
SelectedCellsChanged="DataGrid_SelectedCellsChanged"
|
||||
ItemsSource="{Binding DataGridItemSource}"
|
||||
RowHeight="39"
|
||||
AutoGenerateColumns="False" FontSize="13">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTemplateColumn CanUserResize="False">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<CheckBox Width="30" Height="30" IsHitTestVisible="False" IsChecked="{Binding IsSelected}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<CheckBox Width="30" Height="30" Unchecked="allChecked_Unchecked" Checked="allChecked_Checked" Name="allChecked"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="序号" Binding="{Binding RowNumber}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="物料编码" Binding="{Binding MatCode}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="名称" Binding="{Binding MatName}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="规格" Binding="{Binding MatSpec}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="单位" Binding="{Binding MatUnit}"></DataGridTextColumn>
|
||||
|
||||
<DataGridTextColumn IsReadOnly="True" Header="客户" Binding="{Binding MatCustomer}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="状态" Binding="{Binding IsEnableStr}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="更新人" Binding="{Binding ModifyUser}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="更新时间" Binding="{Binding ModifyTime ,StringFormat='yyyy-MM-dd HH:mm:ss'}"></DataGridTextColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<Grid Grid.Row="2">
|
||||
<Border CornerRadius="3" Background="Transparent" VerticalAlignment="Center" >
|
||||
<Grid HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Top" Width="Auto" MinHeight="26">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock FontSize="14" Text="共"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding TotalCount ,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="条记录 "></TextBlock>
|
||||
<TextBlock FontSize="14" Text="第"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding CurrentPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="/"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding MaxPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="页"></TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Column="1">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions >
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="0" Name="btnFirst" Content="首页" Foreground="Black" FontSize="14"
|
||||
Command="{Binding BtnFirstPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="1" Name="btnPrev" Content="上一页" FontSize="14"
|
||||
Command="{Binding BtnPrePageCommand}"/>
|
||||
<TextBox BorderBrush="Transparent" Grid.Column="2" FontSize="14" MinWidth="50" HorizontalAlignment="Center" VerticalAlignment="Center" Cursor="IBeam" IsEnabled="False"
|
||||
Text ="{Binding CurrentPage}" TextAlignment="Center"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="3" Name="btnNext" Content="下一页" FontSize="14"
|
||||
Command="{Binding BtnNextPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="4" Name="btnLast" Content="末页" FontSize="14"
|
||||
Command="{Binding BtnLastPageCommand}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
<!--<Border Grid.Row="1" Margin="3" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="0.8*"></RowDefinition>
|
||||
<RowDefinition Height="8*"></RowDefinition>
|
||||
<RowDefinition Height="0.7*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
||||
<Button MinHeight="40" FontSize="18" Margin="5" Command="{Binding BtnExportCommand}"
|
||||
Content=" 导 出" FontFamily="{StaticResource IconFont}"
|
||||
Style="{StaticResource ButtonWarning}" Background="DarkOrange">
|
||||
</Button>
|
||||
</StackPanel>
|
||||
<DataGrid Grid.Row="1"
|
||||
SelectedCellsChanged="DataGrid_SelectedCellsChanged"
|
||||
ItemsSource="{Binding DataGridItemSource}"
|
||||
RowHeight="39"
|
||||
AutoGenerateColumns="False"
|
||||
FontSize="13">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="序号" Binding="{Binding RowNumber}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="接口地址" Binding="{Binding RequestUrl}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="设备IP" Binding="{Binding DeviceIp}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="请求参数" Binding="{Binding RequestBody}" MaxWidth="100"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="QueryString" Binding="{Binding QueryString}" MaxWidth="100"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="请求时间" Binding="{Binding RequestTime,StringFormat='yyyy-MM-dd HH:mm:ss'}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="返回参数" Binding="{Binding ResponseJson}" MaxWidth="100"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="返回时间" Binding="{Binding ResponseTime,StringFormat='yyyy-MM-dd HH:mm:ss'}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="耗时(ms)" Binding="{Binding ExecutionTime}"></DataGridTextColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<Grid Grid.Row="2">
|
||||
<Border CornerRadius="3" Background="Transparent" VerticalAlignment="Center" >
|
||||
<Grid HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Top" Width="Auto" MinHeight="26">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock FontSize="14" Text="共"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding TotalCount ,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="条记录 "></TextBlock>
|
||||
<TextBlock FontSize="14" Text="第"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding CurrentPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="/"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding MaxPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="页"></TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Column="1">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions >
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="0" Name="btnFirst" Content="首页" Foreground="Black" FontSize="14"
|
||||
Command="{Binding BtnFirstPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="1" Name="btnPrev" Content="上一页" FontSize="14"
|
||||
Command="{Binding BtnPrePageCommand}"/>
|
||||
<TextBox BorderBrush="Transparent" Grid.Column="2" FontSize="14" MinWidth="50" HorizontalAlignment="Center" VerticalAlignment="Center" Cursor="IBeam" IsEnabled="False"
|
||||
Text ="{Binding CurrentPage}" TextAlignment="Center"
|
||||
|
||||
/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="3" Name="btnNext" Content="下一页" FontSize="14"
|
||||
Command="{Binding BtnNextPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="4" Name="btnLast" Content="末页" FontSize="14"
|
||||
Command="{Binding BtnLastPageCommand}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>-->
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</pi:UserControlBase>
|
88
货架标准上位机/Views/MatBaseInfoView.xaml.cs
Normal file
88
货架标准上位机/Views/MatBaseInfoView.xaml.cs
Normal file
@ -0,0 +1,88 @@
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using 货架标准上位机.ViewModel;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
public partial class MatBaseInfoView : UserControlBase
|
||||
{
|
||||
public MatBaseInfoViewModel viewModel { get; set; } = new MatBaseInfoViewModel();
|
||||
public MatBaseInfoView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
private void LoadedVisible(object sender, EventArgs e)
|
||||
{
|
||||
viewModel.BtnReset();
|
||||
}
|
||||
|
||||
private void DataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (viewModel.SelectedataGridItem != null)
|
||||
{
|
||||
viewModel.SelectedataGridItem.IsSelected = !viewModel.SelectedataGridItem.IsSelected;
|
||||
dataGrid.UnselectAllCells();//取消选中 避免手动点击check选项时反选失败 和重新点击该项时反选失败
|
||||
}
|
||||
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void DataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
|
||||
{
|
||||
//try
|
||||
//{
|
||||
// if (viewModel.SelectedataGridItem != null)
|
||||
// {
|
||||
// viewModel.SelectedataGridItem.IsSelected = !viewModel.SelectedataGridItem.IsSelected;
|
||||
// }
|
||||
|
||||
//}
|
||||
//catch
|
||||
//{
|
||||
|
||||
//}
|
||||
}
|
||||
|
||||
private void allChecked_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (viewModel != null && viewModel.DataGridItemSource != null && viewModel.DataGridItemSource.Count() > 0)
|
||||
{
|
||||
foreach (var item in viewModel.DataGridItemSource)
|
||||
{
|
||||
item.IsSelected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void allChecked_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (viewModel != null && viewModel.DataGridItemSource != null && viewModel.DataGridItemSource.Count() > 0)
|
||||
{
|
||||
foreach (var item in viewModel.DataGridItemSource)
|
||||
{
|
||||
item.IsSelected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
194
货架标准上位机/Views/MatInventoryDetailView.xaml
Normal file
194
货架标准上位机/Views/MatInventoryDetailView.xaml
Normal file
@ -0,0 +1,194 @@
|
||||
<pi:UserControlBase
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
x:Class="货架标准上位机.MatInventoryDetailView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="737" d:DesignWidth="1192" LoadedVisibleFirst="LoadedVisible">
|
||||
|
||||
<Border Margin="0" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="1.4*"></RowDefinition>
|
||||
<RowDefinition Height="8*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Border Grid.Row="0" Margin="3" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
<RowDefinition></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock Grid.Row="0" Grid.Column="0" Margin="5"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="货架类型:" FontSize="18" ></TextBlock>
|
||||
<ComboBox Grid.Row="0" Grid.Column="1"
|
||||
DisplayMemberPath="ShelfTypeName"
|
||||
ItemsSource="{Binding ShelfTypeItems}"
|
||||
SelectedItem="{Binding SelectedShelfTypeItem}"
|
||||
FontSize="18"
|
||||
IsEditable="True"/>
|
||||
|
||||
<TextBlock Grid.Row="1" Grid.Column="0" Margin="5"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="物料编码:" FontSize="18" ></TextBlock>
|
||||
<hc:AutoCompleteTextBox Grid.Row="1" Grid.Column="1" MinWidth="120" FontSize="18" IsEditable="True"
|
||||
IsTextSearchEnabled="True"
|
||||
Name="cbxMatCode" Margin="1"
|
||||
ItemsSource="{Binding Items}"
|
||||
Text="{Binding MatCode}"
|
||||
DisplayMemberPath="MatCode"/>
|
||||
|
||||
<TextBlock Grid.Row="1" Grid.Column="2" Margin="5"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="物料名称:" FontSize="18" ></TextBlock>
|
||||
<TextBox Grid.Row="1" Grid.Column="3" Text="{Binding MatName}"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
FontSize="18" MinWidth="120" ></TextBox>
|
||||
|
||||
<TextBlock Grid.Row="1" Grid.Column="4" Margin="5"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="物料批次:" FontSize="18" ></TextBlock>
|
||||
<TextBox Grid.Row="1" Grid.Column="5" Text="{Binding MatBatch}"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
FontSize="18" MinWidth="120" ></TextBox>
|
||||
|
||||
<TextBlock Grid.Row="2" Grid.Column="2" Margin="5"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="物料条码:" FontSize="18" ></TextBlock>
|
||||
<TextBox Grid.Row="2" Grid.Column="3" Text="{Binding MatSN}"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
FontSize="18" MinWidth="120" ></TextBox>
|
||||
|
||||
<TextBlock Grid.Row="2" Grid.Column="0" Margin="5"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text=" 库 位 :" FontSize="18" ></TextBlock>
|
||||
<TextBox Grid.Row="2" Grid.Column="1" Text="{Binding StoreCode}"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Left"
|
||||
FontSize="18" MinWidth="160" ></TextBox>
|
||||
|
||||
<Button Style="{StaticResource ButtonSuccess}"
|
||||
Command="{Binding BtnSearchCommand}"
|
||||
hc:BorderElement.CornerRadius="8"
|
||||
Grid.Column="6" MinHeight="40" FontSize="18" Content=" 搜索" FontFamily="{StaticResource IconFont}" Margin="0,0,0,0" >
|
||||
</Button>
|
||||
|
||||
<Button Style="{StaticResource ButtonWarning}"
|
||||
Command="{Binding BtnResetCommand}"
|
||||
hc:BorderElement.CornerRadius="8"
|
||||
Grid.Column="7" MinHeight="40" FontSize="18" Content=" 重置" FontFamily="{StaticResource IconFont}" Margin="0,0,0,0" >
|
||||
</Button>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="1" Margin="3" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="0.8*"></RowDefinition>
|
||||
<RowDefinition Height="8*"></RowDefinition>
|
||||
<RowDefinition Height="0.7*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
||||
<Button MinHeight="40" FontSize="18" Margin="5" Command="{Binding BtnExportCommand}"
|
||||
Content=" 导 出" FontFamily="{StaticResource IconFont}"
|
||||
Style="{StaticResource ButtonWarning}" Background="DarkOrange">
|
||||
</Button>
|
||||
</StackPanel>
|
||||
|
||||
<DataGrid Grid.Row="1"
|
||||
SelectedCellsChanged="DataGrid_SelectedCellsChanged"
|
||||
ItemsSource="{Binding DataGridItemSource}"
|
||||
RowHeight="39"
|
||||
AutoGenerateColumns="False" FontSize="13">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="序号" Binding="{Binding RowNumber}"></DataGridTextColumn>
|
||||
<DataGridTextColumn MaxWidth="150" Header="物料编码" Binding="{Binding MatCode}"></DataGridTextColumn>
|
||||
<DataGridTextColumn MaxWidth="150" Header="物料名称" Binding="{Binding MatName}"></DataGridTextColumn>
|
||||
<DataGridTextColumn MaxWidth="150" Header="规格" Binding="{Binding MatSpec}"></DataGridTextColumn>
|
||||
<DataGridTextColumn MaxWidth="100" Header="批次" Binding="{Binding MatBatch}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="数量" Binding="{Binding MatQty}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="库位" Binding="{Binding StoreCode}"></DataGridTextColumn>
|
||||
<!--<DataGridTextColumn IsReadOnly="True" Header="R" Binding="{Binding R}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="C" Binding="{Binding C}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="位" Binding="{Binding Wei}"></DataGridTextColumn>-->
|
||||
<DataGridTextColumn IsReadOnly="True" Header="入库时间" Binding="{Binding InstoreTime,StringFormat='yyyy-MM-dd HH:mm:ss'}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="物料SN" Binding="{Binding MatSN}"></DataGridTextColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<Grid Grid.Row="2">
|
||||
<Border CornerRadius="3" Background="Transparent" VerticalAlignment="Center" >
|
||||
<Grid HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Top" Width="Auto" MinHeight="26">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock FontSize="14" Text="共"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding TotalCount ,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="条记录 "></TextBlock>
|
||||
<TextBlock FontSize="14" Text="第"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding CurrentPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="/"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding MaxPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="页"></TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Column="1">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions >
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="0" Name="btnFirst" Content="首页" Foreground="Black" FontSize="14"
|
||||
Command="{Binding BtnFirstPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="1" Name="btnPrev" Content="上一页" FontSize="14"
|
||||
Command="{Binding BtnPrePageCommand}"/>
|
||||
<TextBox BorderBrush="Transparent" Grid.Column="2" FontSize="14" MinWidth="50" HorizontalAlignment="Center" VerticalAlignment="Center" Cursor="IBeam" IsEnabled="False"
|
||||
Text ="{Binding CurrentPage}" TextAlignment="Center"
|
||||
|
||||
/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="3" Name="btnNext" Content="下一页" FontSize="14"
|
||||
Command="{Binding BtnNextPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="4" Name="btnLast" Content="末页" FontSize="14"
|
||||
Command="{Binding BtnLastPageCommand}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
</pi:UserControlBase>
|
47
货架标准上位机/Views/MatInventoryDetailView.xaml.cs
Normal file
47
货架标准上位机/Views/MatInventoryDetailView.xaml.cs
Normal file
@ -0,0 +1,47 @@
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using 货架标准上位机.ViewModel;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
public partial class MatInventoryDetailView : UserControlBase
|
||||
{
|
||||
public MatInventoryDetailViewModel viewModel { get; set; } = new MatInventoryDetailViewModel();
|
||||
public MatInventoryDetailView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
private void DataGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
|
||||
{
|
||||
//try
|
||||
//{
|
||||
// DataGrid datagrid = sender as DataGrid;
|
||||
// datagrid.UnselectAllCells();
|
||||
//}
|
||||
//catch
|
||||
//{
|
||||
|
||||
//}
|
||||
}
|
||||
|
||||
private void LoadedVisible(object sender, EventArgs e)
|
||||
{
|
||||
viewModel.InitMatCode();
|
||||
viewModel.BtnReset();
|
||||
}
|
||||
}
|
||||
}
|
110
货架标准上位机/Views/SetView.xaml
Normal file
110
货架标准上位机/Views/SetView.xaml
Normal file
@ -0,0 +1,110 @@
|
||||
<pi:UserControlBase x:Class="货架标准上位机.SetView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
d:DesignHeight="550" d:DesignWidth="800" LoadedVisible="loadedVisible">
|
||||
<!--资源-->
|
||||
<pi:UserControlBase.Resources>
|
||||
<ResourceDictionary>
|
||||
<Style TargetType="ToggleButton" BasedOn="{StaticResource ToggleButtonSwitch.Small}">
|
||||
<Setter Property="HorizontalAlignment" Value="Left"></Setter>
|
||||
<Setter Property="Margin" Value="0,5"></Setter>
|
||||
<Setter Property="Height" Value="20"></Setter>
|
||||
</Style>
|
||||
<Style TargetType="TextBlock" BasedOn="{StaticResource TextBlockSubTitle}">
|
||||
<Setter Property="HorizontalAlignment" Value="Left"></Setter>
|
||||
</Style>
|
||||
<Style TargetType="TextBox" BasedOn="{StaticResource TextBoxExtend}">
|
||||
<Setter Property="Margin" Value="0,5"></Setter>
|
||||
</Style>
|
||||
<Style TargetType="ComboBox" BasedOn="{StaticResource ComboBoxExtend}">
|
||||
<Setter Property="Margin" Value="0,5"></Setter>
|
||||
</Style>
|
||||
<Style TargetType="TextBlock" x:Key="TextBlockHint" BasedOn="{StaticResource TextBlockDefaultThiLight}">
|
||||
<Setter Property="HorizontalAlignment" Value="Left"></Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</pi:UserControlBase.Resources>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<!--滚动条-->
|
||||
<hc:ScrollViewer Grid.Row="0" IsInertiaEnabled="True" hc:ScrollViewerAttach.AutoHide="False">
|
||||
<!--瀑布流-->
|
||||
<hc:WaterfallPanel VerticalAlignment="Top" Groups="2" hc:PanelElement.FluidMoveBehavior="{StaticResource BehaviorXY200}">
|
||||
<GroupBox Header="扫码枪串口号配置" Margin="5" Padding="5" Style="{StaticResource GroupBoxTab}" Background="{x:Null}">
|
||||
<StackPanel>
|
||||
<StackPanel Orientation="Horizontal">
|
||||
|
||||
<Button Margin="5" Command="{Binding RefreshCOMListCommand}">选择串口号</Button>
|
||||
<ComboBox Margin="5" Name="cbxComs"
|
||||
ItemsSource="{Binding COMList}"
|
||||
SelectedItem="{Binding SelectedCOM}"
|
||||
IsEditable="False">
|
||||
</ComboBox>
|
||||
<Button Margin="5" Content="添加" Command="{Binding AddCOMCommand}"></Button>
|
||||
<Button Margin="5" Content="删除" Command="{Binding DeleteCOMCommand}"></Button>
|
||||
</StackPanel>
|
||||
<ListBox ItemsSource="{Binding ScannerComList}"
|
||||
SelectedItem="{Binding SelectedScannerCom}"
|
||||
>
|
||||
</ListBox>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Header="软件" Margin="5" Padding="5" Style="{StaticResource GroupBoxTab}" Background="{x:Null}">
|
||||
<StackPanel>
|
||||
<TextBlock>开机启动</TextBlock>
|
||||
<ToggleButton IsChecked="{Binding Powerboot}"/>
|
||||
<TextBlock>启动全屏</TextBlock>
|
||||
<ToggleButton IsChecked="{Binding StartupFull}"/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
<GroupBox Header="用户" Margin="5" Padding="5" Style="{StaticResource GroupBoxTab}" Background="{x:Null}">
|
||||
<StackPanel>
|
||||
<TextBlock>登录记忆</TextBlock>
|
||||
<TextBlock Style="{StaticResource TextBlockHint}">在登录成功后会记住账号</TextBlock>
|
||||
<ToggleButton IsChecked="{Binding IsSaveLogin}"/>
|
||||
|
||||
<TextBlock>记忆数量</TextBlock>
|
||||
<TextBlock Style="{StaticResource TextBlockHint}">在登录成功后记住的账号数量</TextBlock>
|
||||
<ComboBox IsEnabled="{Binding IsSaveLogin}" ItemsSource="{Binding SaveLoginCountData}" SelectedItem="{Binding SaveLoginCount}" hc:InfoElement.Placeholder="登录记忆最大数量" hc:InfoElement.Title=""></ComboBox>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox Header="缓存" Margin="5" Padding="5" Style="{StaticResource GroupBoxTab}" Background="{x:Null}">
|
||||
<StackPanel>
|
||||
<TextBlock>日志缓存时间</TextBlock>
|
||||
<TextBlock Style="{StaticResource TextBlockHint}">在软件每次打开的时候会执行清理缓存</TextBlock>
|
||||
<ComboBox ItemsSource="{Binding LogTimeData}" SelectedValue="{Binding SaveLogDay}" SelectedValuePath="Key" DisplayMemberPath="Value" hc:InfoElement.Placeholder="日志缓存保存时间" hc:InfoElement.Title=""/>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
<GroupBox Header="其他列子" Margin="5" Padding="5" Style="{StaticResource GroupBoxTab}" Background="{x:Null}">
|
||||
<StackPanel>
|
||||
<TextBlock>文本框</TextBlock>
|
||||
<TextBox hc:InfoElement.Placeholder="请输入值" hc:InfoElement.Title="" hc:InfoElement.TitlePlacement="Left"></TextBox>
|
||||
|
||||
<TextBlock>文本框(带描述)</TextBlock>
|
||||
<TextBlock Style="{StaticResource TextBlockHint}">我是描述</TextBlock>
|
||||
<TextBox hc:InfoElement.Placeholder="请输入值" hc:InfoElement.Title="" hc:InfoElement.TitlePlacement="Left"></TextBox>
|
||||
|
||||
<TextBlock>范围文本框</TextBlock>
|
||||
<TextBlock Style="{StaticResource TextBlockHint}">我是描述</TextBlock>
|
||||
<UniformGrid Columns="2">
|
||||
<TextBox hc:InfoElement.Placeholder="请输入值" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="" Margin="0,5,10,5"></TextBox>
|
||||
<TextBox hc:InfoElement.Placeholder="请输入值" hc:InfoElement.TitlePlacement="Left" hc:InfoElement.Title="-" Margin="-5,5,0,5"></TextBox>
|
||||
</UniformGrid>
|
||||
</StackPanel>
|
||||
</GroupBox>
|
||||
</hc:WaterfallPanel>
|
||||
</hc:ScrollViewer>
|
||||
<Button Grid.Row="1" Margin="3" Content="保存" FontSize="16" Height="36" Padding="0" hc:IconElement.Geometry="{StaticResource SaveGeometry}" hc:IconElement.Height="16" Command="{Binding SaveCommand}" Style="{StaticResource ButtonPrimary}" HorizontalAlignment="Stretch"/>
|
||||
</Grid>
|
||||
</pi:UserControlBase>
|
40
货架标准上位机/Views/SetView.xaml.cs
Normal file
40
货架标准上位机/Views/SetView.xaml.cs
Normal file
@ -0,0 +1,40 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Navigation;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 设置
|
||||
/// </summary>
|
||||
public partial class SetView : UserControlBase
|
||||
{
|
||||
SetViewModel viewModel = new SetViewModel();
|
||||
public SetView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
private void loadedVisible(object sender, EventArgs e)
|
||||
{
|
||||
if (this.IsInDesignMode)
|
||||
return;
|
||||
|
||||
viewModel.Update();
|
||||
}
|
||||
}
|
||||
}
|
138
货架标准上位机/Views/ShelfInfoAddOrUpdateView.xaml
Normal file
138
货架标准上位机/Views/ShelfInfoAddOrUpdateView.xaml
Normal file
@ -0,0 +1,138 @@
|
||||
<Window
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
x:Class="货架标准上位机.ShelfInfoAddOrUpdateView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
mc:Ignorable="d"
|
||||
Height="440" Width="320" WindowStyle="None" BorderThickness="0" Background="{x:Null}" AllowsTransparency="True" WindowStartupLocation="CenterScreen" Opacity="1">
|
||||
<Border BorderBrush="Gray" Background="WhiteSmoke" CornerRadius="5" BorderThickness="1">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<TextBlock FontSize="18" Name="Title" Text="{Binding Title, FallbackValue=新增货架}" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center"/>
|
||||
<Button Margin="-5,-1"
|
||||
Visibility="{Binding IsClose,Converter={StaticResource Boolean2VisibilityConverter}}"
|
||||
Style="{StaticResource ButtonIcon}"
|
||||
hc:IconElement.Geometry="{StaticResource CloseGeometry}" HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top" Click="closeClick"/>
|
||||
|
||||
<StackPanel Margin="5,0" Grid.Row="1" >
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="货架类型:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<ComboBox Grid.Row="0" Grid.Column="1"
|
||||
DisplayMemberPath="ShelfTypeName"
|
||||
ItemsSource="{Binding ShelfTypeItems}"
|
||||
SelectedItem="{Binding SelectedShelfTypeItem}"
|
||||
IsEditable="False"
|
||||
MinWidth="200"
|
||||
FontSize="18" />
|
||||
<TextBlock Text="*" Foreground="Red" VerticalAlignment="Center">
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="货架编码:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="txtShelfCode" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource TextBoxExtend}"
|
||||
Text="{Binding ShelfCode}"
|
||||
hc:InfoElement.Placeholder="此项必填">
|
||||
</TextBox>
|
||||
<TextBlock Text="*" Foreground="Red" VerticalAlignment="Center">
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="货架行数:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="txtRowCounts" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource TextBoxExtend}"
|
||||
Text="{Binding RowCounts}"
|
||||
hc:InfoElement.Placeholder="此项必填">
|
||||
</TextBox>
|
||||
<TextBlock Text="*" Foreground="Red" VerticalAlignment="Center">
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="货架列数:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="txtColumnCounts" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource TextBoxExtend}"
|
||||
Text="{Binding ColumnCounts}"
|
||||
hc:InfoElement.Placeholder="此项必填">
|
||||
</TextBox>
|
||||
<TextBlock Text="*" Foreground="Red" VerticalAlignment="Center">
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="报警灯ID:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="txtLightId" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource TextBoxExtend}"
|
||||
hc:InfoElement.Placeholder="此项必填"
|
||||
Text="{Binding LightId}">
|
||||
</TextBox>
|
||||
<TextBlock Text="*" Foreground="Red" VerticalAlignment="Center">
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="TCP信息:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="txtClientIp" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource TextBoxExtend}"
|
||||
hc:InfoElement.Placeholder="此项必填"
|
||||
Text="{Binding ClientIp}">
|
||||
</TextBox>
|
||||
<TextBlock Text="*" Foreground="Red" VerticalAlignment="Center">
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="货架区域:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="txtGroupName" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Style="{StaticResource TextBoxExtend}"
|
||||
hc:InfoElement.Placeholder="此项必填"
|
||||
Text="{Binding GroupName}">
|
||||
</TextBox>
|
||||
<TextBlock Text="*" Foreground="Red" VerticalAlignment="Center">
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="是否绑定: " FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<ComboBox Name="IsBind" MinWidth="100" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
SelectedValuePath="Tag" SelectedValue="{Binding IsBind}">
|
||||
<ComboBoxItem Tag="True">启用</ComboBoxItem>
|
||||
<ComboBoxItem Tag="False" IsSelected="True">禁用</ComboBoxItem>
|
||||
</ComboBox>
|
||||
</StackPanel>
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock Text="绑定后货架编码:" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Right"></TextBlock>
|
||||
<TextBox Name="txtBindShelfCode" MinWidth="200" Grid.Row="0" Grid.Column="1" FontSize="15"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
Text="{Binding BindShelfCode}"
|
||||
Style="{StaticResource TextBoxExtend}">
|
||||
</TextBox>
|
||||
</StackPanel>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Margin="5" x:Name="spacingPanel" Grid.Row="2" Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||
<Button Margin="5" MinHeight="30" FontSize="15" Content="确认" Name="btnOk" Click="btnOk_Click"/>
|
||||
<Button Margin="5" MinHeight="30" FontSize="15" Content="取消" Click="closeClick"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</Window>
|
119
货架标准上位机/Views/ShelfInfoAddOrUpdateView.xaml.cs
Normal file
119
货架标准上位机/Views/ShelfInfoAddOrUpdateView.xaml.cs
Normal file
@ -0,0 +1,119 @@
|
||||
using HandyControl.Controls;
|
||||
using SqlSugar;
|
||||
using System;
|
||||
using System.Windows;
|
||||
using WCS.BLL.DbModels;
|
||||
using WCS.Model;
|
||||
using WCS.Model.ApiModel.StoreInfo;
|
||||
using WCS.Model.ApiModel.User;
|
||||
using 货架标准上位机.Api;
|
||||
using 货架标准上位机.ViewModel;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
public partial class ShelfInfoAddOrUpdateView : System.Windows.Window
|
||||
{
|
||||
public ShelfInfoAddOrUpdateViewModel ViewModel = new ShelfInfoAddOrUpdateViewModel();
|
||||
|
||||
public ShelfInfoAddOrUpdateView(string _titleText, ShelfInfoModel _shelfInfoModel = null)
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = ViewModel;
|
||||
//绑定标题
|
||||
if (!string.IsNullOrEmpty(_titleText))
|
||||
{
|
||||
Title.Text = _titleText;
|
||||
}
|
||||
ViewModel.SetValues(_shelfInfoModel);
|
||||
}
|
||||
|
||||
|
||||
private void btnOk_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
#region 校验填写的值
|
||||
if (string.IsNullOrEmpty(ViewModel.ShelfCode))
|
||||
{
|
||||
Growl.Warning("请输入货架编码!");
|
||||
txtShelfCode.Focus();
|
||||
return;
|
||||
}
|
||||
if (ViewModel.RowCounts == 0)
|
||||
{
|
||||
Growl.Warning("请输入货架行数!");
|
||||
txtRowCounts.Focus();
|
||||
return;
|
||||
}
|
||||
if (ViewModel.ColumnCounts == 0)
|
||||
{
|
||||
Growl.Warning("请输入货架列数!");
|
||||
txtColumnCounts.Focus();
|
||||
return;
|
||||
}
|
||||
if (ViewModel.LightId == 0)
|
||||
{
|
||||
Growl.Warning("请输入报警灯Id!");
|
||||
txtLightId.Focus();
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrEmpty(ViewModel.ClientIp))
|
||||
{
|
||||
Growl.Warning("请输入TCP信息!");
|
||||
txtClientIp.Focus();
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrEmpty(ViewModel.GroupName))
|
||||
{
|
||||
Growl.Warning("请输入货架区域!");
|
||||
txtGroupName.Focus();
|
||||
return;
|
||||
}
|
||||
if (ViewModel.IsBind && string.IsNullOrEmpty(ViewModel.BindShelfCode))
|
||||
{
|
||||
Growl.Warning("需要绑定的货架需要输入绑定后货架编码!");
|
||||
txtBindShelfCode.Focus();
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region 保存/修改值
|
||||
var IsAdd = Title.Text == "新增货架";
|
||||
var body = new AddShelfInfoRequest<ShelfInfoModel>()
|
||||
{
|
||||
UserName = LocalStatic.CurrentUser,
|
||||
DeviceType = LocalFile.Config.DeviceType,
|
||||
ShelfInfo = ViewModel.GetValues(),
|
||||
AddOrUpdate = IsAdd ? AddOrUpdate.Add : AddOrUpdate.Update
|
||||
};
|
||||
var Result = ApiHelp.GetDataFromHttp<ResponseBase<object>>(LocalFile.Config.ApiIpHost + "storeInfo/addOrUpdateShelfInfo", body, "POST");
|
||||
if (Result != null && Result.Code == 200)
|
||||
{
|
||||
if (IsAdd)
|
||||
Growl.Success("添加成功!");
|
||||
else
|
||||
Growl.Success("修改成功!");
|
||||
this.DialogResult = true;
|
||||
this.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Growl.Error($"{Result?.Message?.ToString()}");
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
//绑定数据
|
||||
catch (Exception ex)
|
||||
{
|
||||
Growl.Error($"操作异常:{ex.Message}");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private void closeClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.DialogResult = false;
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
272
货架标准上位机/Views/ShelfInfoView.xaml
Normal file
272
货架标准上位机/Views/ShelfInfoView.xaml
Normal file
@ -0,0 +1,272 @@
|
||||
<pi:UserControlBase
|
||||
xmlns:pi="https://github.com/ping9719/wpfex"
|
||||
x:Class="货架标准上位机.ShelfInfoView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="737" d:DesignWidth="1192" LoadedVisibleFirst="LoadedVisible">
|
||||
<Border Margin="0" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="1*"></RowDefinition>
|
||||
<RowDefinition Height="10*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Border Grid.Row="0" Margin="0" Background="AliceBlue" CornerRadius="5" Padding="0">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="3*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="3*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="1.9*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="1.9*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="2*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBlock Grid.Row="0" Grid.Column="0"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="货架类型:" FontSize="18" ></TextBlock>
|
||||
<ComboBox Grid.Row="0" Grid.Column="1"
|
||||
DisplayMemberPath="ShelfTypeName"
|
||||
ItemsSource="{Binding ShelfTypeItems}"
|
||||
SelectedItem="{Binding SelectedShelfTypeItem}"
|
||||
Height="30"
|
||||
FontSize="18"
|
||||
IsEditable="False"/>
|
||||
<TextBlock Grid.Column="2"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Right"
|
||||
Text="货架编码:" FontSize="18" ></TextBlock>
|
||||
<TextBox Grid.Column="3"
|
||||
VerticalAlignment="Center" HorizontalAlignment="Stretch"
|
||||
FontSize="18" MinWidth="90" Text="{Binding ShelfCode}"></TextBox>
|
||||
<Button Style="{StaticResource ButtonSuccess}" hc:BorderElement.CornerRadius="15"
|
||||
Grid.Column="9" MinHeight="40" FontSize="18" Content=" 搜索" FontFamily="{StaticResource IconFont}"
|
||||
Command="{Binding BtnSearchCommand}">
|
||||
</Button>
|
||||
<Button Style="{StaticResource ButtonWarning}" hc:BorderElement.CornerRadius="15"
|
||||
Grid.Column="10" MinHeight="40" FontSize="18" Content=" 重置" FontFamily="{StaticResource IconFont}"
|
||||
Command="{Binding BtnResetCommand}">
|
||||
</Button>
|
||||
</Grid>
|
||||
</Border>
|
||||
|
||||
<Border Grid.Row="1" Margin="5" Background="AliceBlue" CornerRadius="5" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="0.8*"></RowDefinition>
|
||||
<RowDefinition Height="9*"></RowDefinition>
|
||||
<RowDefinition Height="0.8*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
||||
<Button MinHeight="40" FontSize="18" Margin="5"
|
||||
Content="新 增" FontFamily="{StaticResource IconFont}"
|
||||
Foreground="WhiteSmoke"
|
||||
Background="HotPink"
|
||||
Command="{Binding BtnAddCommand}">
|
||||
</Button>
|
||||
<Button MinHeight="40" FontSize="18" Margin="5"
|
||||
Content="修 改" FontFamily="{StaticResource IconFont}"
|
||||
Foreground="WhiteSmoke"
|
||||
Background="CadetBlue"
|
||||
Command="{Binding BtnEditCommand}">
|
||||
</Button>
|
||||
<Button MinHeight="40" FontSize="18" Margin="5"
|
||||
Content="删 除" FontFamily="{StaticResource IconFont}"
|
||||
Foreground="WhiteSmoke"
|
||||
Command="{Binding BtnDeleteCommand}"
|
||||
Style="{StaticResource ButtonDanger}">
|
||||
</Button>
|
||||
<Button MinHeight="40" FontSize="18" Margin="5"
|
||||
Content="生成模组" FontFamily="{StaticResource IconFont}"
|
||||
Command="{Binding BtnImportCommand}"
|
||||
Foreground="WhiteSmoke"
|
||||
Background="Green">
|
||||
</Button>
|
||||
</StackPanel>
|
||||
|
||||
<DataGrid Grid.Row="1"
|
||||
SelectedItem="{Binding SelectedataGridItem}"
|
||||
Name="dataGrid"
|
||||
ItemsSource="{Binding DataGridItemSource}"
|
||||
SelectionChanged="dataGrid_SelectionChanged"
|
||||
RowHeight="39"
|
||||
AutoGenerateColumns="False" FontSize="13">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTemplateColumn CanUserResize="False">
|
||||
<DataGridTemplateColumn.CellTemplate>
|
||||
<DataTemplate>
|
||||
<CheckBox Width="30" Height="30" IsHitTestVisible="False" IsChecked="{Binding IsSelected}"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.CellTemplate>
|
||||
<DataGridTemplateColumn.HeaderTemplate>
|
||||
<DataTemplate>
|
||||
<CheckBox Width="30" Height="30" Unchecked="allChecked_Unchecked" Checked="allChecked_Checked" Name="allChecked"/>
|
||||
</DataTemplate>
|
||||
</DataGridTemplateColumn.HeaderTemplate>
|
||||
</DataGridTemplateColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="序号" Binding="{Binding RowNumber}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="货架类型" Binding="{Binding ShelfTypeName}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="货架编码" Binding="{Binding ShelfCode}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="货架行数" Binding="{Binding Rowcounts}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="货架列数" Binding="{Binding Columncounts}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="报警灯ID" Binding="{Binding LightId}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="TCP连接信息" Binding="{Binding ClientIp}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="货架区域(组别)" Binding="{Binding GroupName}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="是否绑定" Binding="{Binding IsBind}"></DataGridTextColumn>
|
||||
<DataGridTextColumn IsReadOnly="True" Header="绑定后货架编码" Binding="{Binding BindShelfCode}"></DataGridTextColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<Grid Grid.Row="2">
|
||||
<Border CornerRadius="3" Background="Transparent" VerticalAlignment="Center" >
|
||||
<Grid HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Top" Width="Auto" MinHeight="26">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock FontSize="14" Text="共"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding TotalCount ,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="条记录 "></TextBlock>
|
||||
<TextBlock FontSize="14" Text="第"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding CurrentPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="/"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding MaxPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="页"></TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Column="1">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions >
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="0" Name="btnFirst" Content="首页" Foreground="Black" FontSize="14"
|
||||
Command="{Binding BtnFirstPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="1" Name="btnPrev" Content="上一页" FontSize="14"
|
||||
Command="{Binding BtnPrePageCommand}"/>
|
||||
<TextBox BorderBrush="Transparent" Grid.Column="2" FontSize="14" MinWidth="50" HorizontalAlignment="Center" VerticalAlignment="Center" Cursor="IBeam" IsEnabled="False"
|
||||
Text ="{Binding CurrentPage}" TextAlignment="Center"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="3" Name="btnNext" Content="下一页" FontSize="14"
|
||||
Command="{Binding BtnNextPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="4" Name="btnLast" Content="末页" FontSize="14"
|
||||
Command="{Binding BtnLastPageCommand}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>
|
||||
<!--<Border Grid.Row="1" Margin="3" Background="AliceBlue" CornerRadius="3" Padding="0">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="0.8*"></RowDefinition>
|
||||
<RowDefinition Height="8*"></RowDefinition>
|
||||
<RowDefinition Height="0.7*"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel Grid.Row="0" Orientation="Horizontal">
|
||||
<Button MinHeight="40" FontSize="18" Margin="5" Command="{Binding BtnExportCommand}"
|
||||
Content=" 导 出" FontFamily="{StaticResource IconFont}"
|
||||
Style="{StaticResource ButtonWarning}" Background="DarkOrange">
|
||||
</Button>
|
||||
</StackPanel>
|
||||
<DataGrid Grid.Row="1"
|
||||
SelectedCellsChanged="DataGrid_SelectedCellsChanged"
|
||||
ItemsSource="{Binding DataGridItemSource}"
|
||||
RowHeight="39"
|
||||
AutoGenerateColumns="False"
|
||||
FontSize="13">
|
||||
<DataGrid.Columns>
|
||||
<DataGridTextColumn Header="序号" Binding="{Binding RowNumber}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="接口地址" Binding="{Binding RequestUrl}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="设备IP" Binding="{Binding DeviceIp}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="请求参数" Binding="{Binding RequestBody}" MaxWidth="100"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="QueryString" Binding="{Binding QueryString}" MaxWidth="100"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="请求时间" Binding="{Binding RequestTime,StringFormat='yyyy-MM-dd HH:mm:ss'}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="返回参数" Binding="{Binding ResponseJson}" MaxWidth="100"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="返回时间" Binding="{Binding ResponseTime,StringFormat='yyyy-MM-dd HH:mm:ss'}"></DataGridTextColumn>
|
||||
<DataGridTextColumn Header="耗时(ms)" Binding="{Binding ExecutionTime}"></DataGridTextColumn>
|
||||
</DataGrid.Columns>
|
||||
</DataGrid>
|
||||
|
||||
<Grid Grid.Row="2">
|
||||
<Border CornerRadius="3" Background="Transparent" VerticalAlignment="Center" >
|
||||
<Grid HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Top" Width="Auto" MinHeight="26">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="5*"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<StackPanel Orientation="Horizontal" Margin="5">
|
||||
<TextBlock FontSize="14" Text="共"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding TotalCount ,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="条记录 "></TextBlock>
|
||||
<TextBlock FontSize="14" Text="第"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding CurrentPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="/"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="{Binding MaxPage,FallbackValue=0}"></TextBlock>
|
||||
<TextBlock FontSize="14" Text="页"></TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" Grid.Column="1">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions >
|
||||
<RowDefinition Height="30"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
<ColumnDefinition Width="auto"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="0" Name="btnFirst" Content="首页" Foreground="Black" FontSize="14"
|
||||
Command="{Binding BtnFirstPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="1" Name="btnPrev" Content="上一页" FontSize="14"
|
||||
Command="{Binding BtnPrePageCommand}"/>
|
||||
<TextBox BorderBrush="Transparent" Grid.Column="2" FontSize="14" MinWidth="50" HorizontalAlignment="Center" VerticalAlignment="Center" Cursor="IBeam" IsEnabled="False"
|
||||
Text ="{Binding CurrentPage}" TextAlignment="Center"
|
||||
|
||||
/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="3" Name="btnNext" Content="下一页" FontSize="14"
|
||||
Command="{Binding BtnNextPageCommand}"/>
|
||||
<Button BorderBrush="Transparent" Background="Transparent" Grid.Column="4" Name="btnLast" Content="末页" FontSize="14"
|
||||
Command="{Binding BtnLastPageCommand}"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Border>-->
|
||||
|
||||
</Grid>
|
||||
</Border>
|
||||
</pi:UserControlBase>
|
90
货架标准上位机/Views/ShelfInfoView.xaml.cs
Normal file
90
货架标准上位机/Views/ShelfInfoView.xaml.cs
Normal file
@ -0,0 +1,90 @@
|
||||
using Ping9719.WpfEx;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using 货架标准上位机.ViewModel;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
public partial class ShelfInfoView : UserControlBase
|
||||
{
|
||||
public ShelfInfoViewModel viewModel { get; set; } = new ShelfInfoViewModel();
|
||||
public ShelfInfoView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
private void LoadedVisible(object sender, EventArgs e)
|
||||
{
|
||||
viewModel.BtnReset();
|
||||
viewModel.InitShelfTypeItems();
|
||||
}
|
||||
|
||||
private void allChecked_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (viewModel != null && viewModel.DataGridItemSource != null && viewModel.DataGridItemSource.Count() > 0)
|
||||
{
|
||||
foreach (var item in viewModel.DataGridItemSource)
|
||||
{
|
||||
item.IsSelected = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void allChecked_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (viewModel != null && viewModel.DataGridItemSource != null && viewModel.DataGridItemSource.Count() > 0)
|
||||
{
|
||||
foreach (var item in viewModel.DataGridItemSource)
|
||||
{
|
||||
item.IsSelected = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 更新选中项的状态
|
||||
if (dataGrid.SelectedCells.Count > 0 && viewModel.SelectedataGridItem != null)
|
||||
{
|
||||
viewModel.SelectedataGridItem.IsSelected = !viewModel.SelectedataGridItem.IsSelected;
|
||||
dataGrid.UnselectAllCells(); // 取消选中所有单元格
|
||||
}
|
||||
}
|
||||
catch(Exception ex)
|
||||
{
|
||||
Debug.WriteLine("SelectionChanged event handler failed: " + ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
private void CheckBox_Checked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
|
||||
{
|
||||
;
|
||||
}
|
||||
|
||||
private void CheckBox_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
;
|
||||
}
|
||||
}
|
||||
}
|
31
货架标准上位机/Views/Windows/AboutView.xaml
Normal file
31
货架标准上位机/Views/Windows/AboutView.xaml
Normal file
@ -0,0 +1,31 @@
|
||||
<Window xmlns:hc="https://handyorg.github.io/handycontrol" x:Class="货架标准上位机.AboutView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
Title="关于" Height="300" Width="400" ResizeMode="NoResize" FontSize="18"
|
||||
Icon="/Resources/Logo.ico"
|
||||
WindowStartupLocation="CenterScreen">
|
||||
<Grid Background="White">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="130"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel x:Name="StackPanelInfo" Orientation="Horizontal">
|
||||
<Image Margin="60,15,10,15" HorizontalAlignment="Left" Width="80" Height="80" Source="/Resources/Logo.png"></Image>
|
||||
<!--盟讯-->
|
||||
<TextBlock Margin="0,30" Text="{StaticResource AboutInfo1}" FontSize="28" FontFamily="YouYuan" Foreground="SteelBlue" FontWeight="UltraBold"></TextBlock>
|
||||
<TextBlock Margin="-58,30" Text="{StaticResource AboutInfo2}" FontSize="28" FontFamily="YouYuan" VerticalAlignment="Bottom" Foreground="SteelBlue" FontWeight="UltraBold"></TextBlock>
|
||||
<!--智能制造-->
|
||||
<!--<TextBlock Margin="0,30" Text="智能制造" FontSize="28" FontFamily="YouYuan" Foreground="SteelBlue" FontWeight="UltraBold"></TextBlock>
|
||||
<TextBlock Margin="-58,30" Text="引领未来" FontSize="28" FontFamily="YouYuan" VerticalAlignment="Bottom" Foreground="SteelBlue" FontWeight="UltraBold"></TextBlock>-->
|
||||
</StackPanel>
|
||||
<StackPanel Grid.Row="1">
|
||||
<TextBlock Margin="5" Text="{Binding Name,FallbackValue=xxx程序}" FontSize="32" Foreground="DodgerBlue" HorizontalAlignment="Center"></TextBlock>
|
||||
<TextBlock Margin="5" Text="{Binding Company,FallbackValue=重庆盟讯电子科技有限公司 @2030}" Grid.Row="1" FontSize="14" HorizontalAlignment="Center"></TextBlock>
|
||||
<TextBlock Margin="5" Text="{Binding Ver,FallbackValue=v 1.0.0}" FontSize="14" Foreground="Orange" HorizontalAlignment="Center"></TextBlock>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
30
货架标准上位机/Views/Windows/AboutView.xaml.cs
Normal file
30
货架标准上位机/Views/Windows/AboutView.xaml.cs
Normal file
@ -0,0 +1,30 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 关于
|
||||
/// </summary>
|
||||
public partial class AboutView : Window
|
||||
{
|
||||
AboutViewModel viewModel = new AboutViewModel();
|
||||
public AboutView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
}
|
||||
}
|
40
货架标准上位机/Views/Windows/RoleEditView.xaml
Normal file
40
货架标准上位机/Views/Windows/RoleEditView.xaml
Normal file
@ -0,0 +1,40 @@
|
||||
<Window xmlns:hc="https://handyorg.github.io/handycontrol" x:Class="货架标准上位机.RoleEditView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
Title="权限信息" Height="540" Width="450" ResizeMode="CanResize" Icon="/Resources/Logo.ico" WindowStartupLocation="CenterScreen">
|
||||
|
||||
<Grid Background="White" Margin="10,5">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<TextBox Grid.Row="0" x:Name="textBox" Style="{StaticResource TextBoxExtend}" hc:InfoElement.Placeholder="请输入角色名" hc:InfoElement.Title="角色名" hc:InfoElement.Necessary="True"></TextBox>
|
||||
<TextBlock Grid.Row="1" Text="认证项" Margin="8,5"/>
|
||||
<TreeView Grid.Row="2" x:Name="treeView" ItemsSource="{Binding DataList}">
|
||||
<!--默认展开所有节点-->
|
||||
<TreeView.ItemContainerStyle>
|
||||
<Style TargetType="TreeViewItem">
|
||||
<Setter Property="IsExpanded" Value="True"/>
|
||||
</Style>
|
||||
</TreeView.ItemContainerStyle>
|
||||
<!--绑定数据源-->
|
||||
<TreeView.ItemTemplate>
|
||||
<HierarchicalDataTemplate ItemsSource="{Binding Children}">
|
||||
<CheckBox Margin="1" IsChecked="{Binding IsSelect}" Content="{Binding Name}"/>
|
||||
</HierarchicalDataTemplate>
|
||||
</TreeView.ItemTemplate>
|
||||
</TreeView>
|
||||
|
||||
<StackPanel Grid.Row="3" Margin="10" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||
<Button x:Name="qr" Margin="0,0,10,0" Padding="25,0" Style="{StaticResource ButtonPrimary}">确认</Button>
|
||||
<Button Margin="0,0,10,0" Padding="25,0" Click="qx">取消</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
176
货架标准上位机/Views/Windows/RoleEditView.xaml.cs
Normal file
176
货架标准上位机/Views/Windows/RoleEditView.xaml.cs
Normal file
@ -0,0 +1,176 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using HandyControl.Controls;
|
||||
using HandyControl.Tools.Extension;
|
||||
using Ping9719.WpfEx.Mvvm;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using MessageBox = HandyControl.Controls.MessageBox;
|
||||
using Window = System.Windows.Window;
|
||||
using WCS.Model.ApiModel;
|
||||
using WCS.Model.ApiModel.User;
|
||||
using 货架标准上位机.Api;
|
||||
using WCS.Model;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 角色信息
|
||||
/// </summary>
|
||||
public partial class RoleEditView : Window
|
||||
{
|
||||
public RoleEditView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns>true:成功,false:取消</returns>
|
||||
public static bool Show(RoleModel roleBase, CrudEnum crudEnum)
|
||||
{
|
||||
bool isOk = false;
|
||||
|
||||
Application.Current.Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
var view = new RoleEditView();
|
||||
List<RoleEditTreeViewModel> dataList = new List<RoleEditTreeViewModel>();
|
||||
|
||||
try
|
||||
{
|
||||
if (crudEnum == CrudEnum.Read)
|
||||
view.qr.IsEnabled = false;
|
||||
|
||||
view.textBox.Text = roleBase.Name;
|
||||
dataList = RoleEditTreeViewModel.GetTreeViewModel(roleBase.Auths);
|
||||
view.treeView.ItemsSource = dataList;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString());
|
||||
view = null;
|
||||
return;
|
||||
}
|
||||
|
||||
view.qr.Click += (s, e) =>
|
||||
{
|
||||
try
|
||||
{
|
||||
var treeNode = dataList.ToTreeNode();
|
||||
RoleModel newRole = new RoleModel()
|
||||
{
|
||||
Id = roleBase.Id,
|
||||
IsAdmin = roleBase.IsAdmin,
|
||||
Name = view.textBox.Text.Trim(),
|
||||
Auths = treeNode.Where(o => o.IsSelect).Select(o => (int)o.Id).ToList(),
|
||||
Time = roleBase.Time,
|
||||
};
|
||||
if (crudEnum == CrudEnum.Update)
|
||||
{
|
||||
if (string.IsNullOrEmpty(newRole.Name))
|
||||
{
|
||||
MessageBox.Show("请输入名称");
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
var body = new AddRoleRequest<RoleModel>()
|
||||
{
|
||||
UserName = LocalStatic.CurrentUser,
|
||||
DeviceType = LocalFile.Config.DeviceType,
|
||||
Role = newRole,
|
||||
AddOrUpdate = AddOrUpdate.Update
|
||||
};
|
||||
var Result = ApiHelp.GetDataFromHttp<ResponseCommon<object>>(LocalFile.Config.ApiIpHost + "user/addRole", body, "POST");
|
||||
if (Result != null && Result.Code == 200)
|
||||
{
|
||||
isOk = true;
|
||||
view.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Growl.Error(Result?.Message);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Growl.Error("修改角色失败:" + ex.Message);
|
||||
}
|
||||
}
|
||||
else if (crudEnum == CrudEnum.Create)
|
||||
{
|
||||
newRole.Id = 0;
|
||||
newRole.Time = DateTime.Now;
|
||||
|
||||
if (string.IsNullOrEmpty(newRole.Name))
|
||||
{
|
||||
MessageBox.Show("请输入名称");
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
var body = new AddRoleRequest<RoleModel>()
|
||||
{
|
||||
UserName = LocalStatic.CurrentUser,
|
||||
DeviceType = LocalFile.Config.DeviceType,
|
||||
Role = newRole,
|
||||
AddOrUpdate = AddOrUpdate.Add,
|
||||
};
|
||||
var Result = ApiHelp.GetDataFromHttp<ResponseCommon<object>>(LocalFile.Config.ApiIpHost + "user/addRole", body, "POST");
|
||||
if (Result != null && Result.Code == 200)
|
||||
{
|
||||
isOk = true;
|
||||
view.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Growl.Error(Result?.Message);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Growl.Error("新增角色失败:" + ex.Message);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("不支持此操作");
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString());
|
||||
return;
|
||||
}
|
||||
|
||||
//isOk = true;
|
||||
//view.Close();
|
||||
};
|
||||
|
||||
view.ShowDialog();
|
||||
view = null;
|
||||
}));
|
||||
|
||||
return isOk;
|
||||
}
|
||||
|
||||
private void qx(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
46
货架标准上位机/Views/Windows/TipInputView.xaml
Normal file
46
货架标准上位机/Views/Windows/TipInputView.xaml
Normal file
@ -0,0 +1,46 @@
|
||||
<hc:Window x:Class="货架标准上位机.TipInputView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
Height="220" Width="360" WindowStyle="None" BorderThickness="0" Background="{x:Null}" AllowsTransparency="True" WindowStartupLocation="CenterScreen" Opacity="0.95">
|
||||
<hc:Window.Resources>
|
||||
<ResourceDictionary>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource ButtonDefault}">
|
||||
<Setter Property="Padding" Value="25,0"></Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</hc:Window.Resources>
|
||||
<Border BorderBrush="Gray" Background="WhiteSmoke" CornerRadius="5" BorderThickness="1">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid VerticalAlignment="Top">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="auto"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid PreviewMouseLeftButtonDown="previewMouseLeftButtonDown" Background="Transparent">
|
||||
|
||||
</Grid>
|
||||
<TextBlock Margin="5,0" Text="{Binding Title, FallbackValue=标题}" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Left"/>
|
||||
<Button Grid.Column="1" Visibility="{Binding IsClose,Converter={StaticResource Boolean2VisibilityHiddenConverter}}" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource CloseGeometry}" Click="closeClick"/>
|
||||
</Grid>
|
||||
<StackPanel Grid.Row="1" VerticalAlignment="Center">
|
||||
<TextBox x:Name="tb1" Style="{StaticResource TextBoxExtend}" Margin="10,0" Grid.Row="1" hc:InfoElement.Placeholder="{Binding ContentHint, FallbackValue=请输入值}" hc:InfoElement.Title="{Binding Content, FallbackValue=我是内容}" hc:InfoElement.TitlePlacement="Top" VerticalAlignment="Center"/>
|
||||
<hc:TransitioningContentControl x:Name="transit" TransitionMode="Bottom2TopWithFade" Visibility="Hidden">
|
||||
<TextBlock x:Name="textBlock" Style="{StaticResource TextBlockDefaultDanger}" Margin="10,0" TextWrapping="Wrap" Text="{Binding ContentHint, FallbackValue=请输入内容}"></TextBlock>
|
||||
</hc:TransitioningContentControl>
|
||||
</StackPanel>
|
||||
<hc:UniformSpacingPanel x:Name="spacingPanel" Grid.Row="2" Margin="5,0,5,10" Spacing="10" Width="auto" ChildWrapping="Wrap" HorizontalAlignment="Center">
|
||||
<Button Content="确认" Name="qr"/>
|
||||
</hc:UniformSpacingPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</hc:Window>
|
194
货架标准上位机/Views/Windows/TipInputView.xaml.cs
Normal file
194
货架标准上位机/Views/Windows/TipInputView.xaml.cs
Normal file
@ -0,0 +1,194 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using HandyControl.Controls;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Media;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using Window = System.Windows.Window;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 提示框
|
||||
/// </summary>
|
||||
public partial class TipInputView : HandyControl.Controls.Window
|
||||
{
|
||||
public TipInputView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void closeClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示输入提示框并尝试转为指定类型
|
||||
/// </summary>
|
||||
/// <typeparam name="T">目标类型</typeparam>
|
||||
/// <param name="content">内容</param>
|
||||
/// <param name="verify">验证委托</param>
|
||||
/// <param name="isVisCloseBut">是否显示关闭按钮</param>
|
||||
/// <param name="owner">窗体所有者</param>
|
||||
/// <returns>输入的内容(关闭为null)</returns>
|
||||
public static T? Show<T>(string content, Func<T, string> verify = null, bool isVisCloseBut = true, Window owner = null) where T : struct
|
||||
{
|
||||
return Show<T>(content, string.Empty, "请输入值", verify, isVisCloseBut, owner);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示输入提示框并尝试转为指定类型
|
||||
/// </summary>
|
||||
/// <typeparam name="T">目标类型</typeparam>
|
||||
/// <param name="content">内容</param>
|
||||
/// <param name="title">标题</param>
|
||||
/// <param name="contentHint">内部内容</param>
|
||||
/// <param name="verify">验证委托</param>
|
||||
/// <param name="isVisCloseBut">是否显示关闭按钮</param>
|
||||
/// <param name="owner">窗体所有者</param>
|
||||
/// <returns>输入的内容(关闭为null)</returns>
|
||||
public static T? Show<T>(string content, string title, string contentHint = "请输入值", Func<T, string> verify = null, bool isVisCloseBut = true, Window owner = null) where T : struct
|
||||
{
|
||||
TipInputView? tipView;
|
||||
T? rval = null;
|
||||
Application.Current.Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
tipView = new TipInputView();
|
||||
tipView.tb1.KeyDown += (s, e) =>
|
||||
{
|
||||
if (e.Key == Key.Enter)
|
||||
{
|
||||
e.Handled = true;
|
||||
tipView.qr.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
|
||||
}
|
||||
};
|
||||
tipView.qr.Click += (sender, e) =>
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(tipView.tb1.Text))
|
||||
{
|
||||
tipView.TsTxtx("请填写文本。");
|
||||
return;
|
||||
}
|
||||
|
||||
T val;
|
||||
try
|
||||
{
|
||||
val = (T)Convert.ChangeType(tipView.tb1.Text, typeof(T));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
tipView.TsTxtx($"无法将值{tipView.tb1.Text}换为{typeof(T).Name}。");
|
||||
return;
|
||||
}
|
||||
|
||||
var ts = verify?.Invoke(val);
|
||||
if (!string.IsNullOrEmpty(ts))
|
||||
{
|
||||
tipView.TsTxtx(ts);
|
||||
return;
|
||||
}
|
||||
rval = val;
|
||||
tipView.Close();
|
||||
};
|
||||
tipView.DataContext = new { Title = title, Content = content, ContentHint = contentHint, IsClose = isVisCloseBut };
|
||||
|
||||
tipView.Owner = owner == null ? System.Windows.Application.Current.MainWindow : owner;
|
||||
tipView.tb1.Focus();
|
||||
tipView.ShowDialog();
|
||||
tipView = null;
|
||||
}));
|
||||
|
||||
return rval;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示输入提示框
|
||||
/// </summary>
|
||||
/// <param name="content">内容</param>
|
||||
/// <param name="verify">验证委托</param>
|
||||
/// <param name="isVisCloseBut">是否显示关闭按钮</param>
|
||||
/// <param name="owner">窗体所有者</param>
|
||||
/// <returns>输入的文本(关闭为null)</returns>
|
||||
public static string Show(string content, Func<string, string> verify = null, bool isVisCloseBut = true, Window owner = null)
|
||||
{
|
||||
return Show(content, string.Empty, "请输入值", verify, isVisCloseBut, owner);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示输入提示框
|
||||
/// </summary>
|
||||
/// <param name="content">内容</param>
|
||||
/// <param name="title">标题</param>
|
||||
/// <param name="contentHint">内部内容</param>
|
||||
/// <param name="verify">验证委托</param>
|
||||
/// <param name="isVisCloseBut">是否显示关闭按钮</param>
|
||||
/// <param name="owner">窗体所有者</param>
|
||||
/// <returns>输入的文本(关闭为null)</returns>
|
||||
public static string Show(string content, string title, string contentHint = "请输入值", Func<string, string> verify = null, bool isVisCloseBut = true, Window owner = null)
|
||||
{
|
||||
TipInputView? tipView;
|
||||
string? rval = null;
|
||||
Application.Current.Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
tipView = new TipInputView();
|
||||
tipView.tb1.KeyDown += (s, e) =>
|
||||
{
|
||||
if (e.Key == Key.Enter)
|
||||
{
|
||||
e.Handled = true;
|
||||
tipView.qr.RaiseEvent(new RoutedEventArgs(Button.ClickEvent));
|
||||
}
|
||||
};
|
||||
tipView.qr.Click += (sender, e) =>
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(tipView.tb1.Text))
|
||||
{
|
||||
tipView.TsTxtx("请填写文本。");
|
||||
return;
|
||||
}
|
||||
|
||||
var ts = verify?.Invoke(tipView.tb1.Text);
|
||||
if (!string.IsNullOrEmpty(ts))
|
||||
{
|
||||
tipView.TsTxtx(ts);
|
||||
return;
|
||||
}
|
||||
rval = tipView.tb1.Text;
|
||||
tipView.Close();
|
||||
};
|
||||
tipView.DataContext = new { Title = title, Content = content, ContentHint = contentHint, IsClose = isVisCloseBut };
|
||||
|
||||
tipView.Owner = owner == null ? System.Windows.Application.Current.MainWindow : owner;
|
||||
tipView.tb1.Focus();
|
||||
tipView.ShowDialog();
|
||||
tipView = null;
|
||||
}));
|
||||
|
||||
return rval!;
|
||||
}
|
||||
|
||||
private void TsTxtx(string text)
|
||||
{
|
||||
transit.Visibility = Visibility.Hidden;
|
||||
textBlock.Text = text;
|
||||
transit.Visibility = Visibility.Visible;
|
||||
}
|
||||
|
||||
private void previewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
DragMove();
|
||||
}
|
||||
}
|
||||
}
|
42
货架标准上位机/Views/Windows/TipView.xaml
Normal file
42
货架标准上位机/Views/Windows/TipView.xaml
Normal file
@ -0,0 +1,42 @@
|
||||
<hc:Window x:Class="货架标准上位机.TipView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
xmlns:hc="https://handyorg.github.io/handycontrol"
|
||||
Height="300" Width="520" WindowStyle="None" BorderThickness="0" Background="{x:Null}" AllowsTransparency="True" WindowStartupLocation="CenterScreen" Opacity="0.95">
|
||||
<hc:Window.Resources>
|
||||
<ResourceDictionary>
|
||||
<Style TargetType="Button" BasedOn="{StaticResource ButtonDefault}">
|
||||
<Setter Property="Padding" Value="25,0"></Setter>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</hc:Window.Resources>
|
||||
<Border BorderBrush="Gray" Background="WhiteSmoke" CornerRadius="5" BorderThickness="1">
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
<RowDefinition Height="*"></RowDefinition>
|
||||
<RowDefinition Height="auto"></RowDefinition>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid VerticalAlignment="Top">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*"></ColumnDefinition>
|
||||
<ColumnDefinition Width="auto"></ColumnDefinition>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid PreviewMouseLeftButtonDown="previewMouseLeftButtonDown" Background="Transparent">
|
||||
|
||||
</Grid>
|
||||
<TextBlock Margin="5,0" Text="{Binding Title, FallbackValue=标题}" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Left"/>
|
||||
<Button Grid.Column="1" Visibility="{Binding IsClose,Converter={StaticResource Boolean2VisibilityHiddenConverter}}" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource CloseGeometry}" Click="closeClick"/>
|
||||
</Grid>
|
||||
<TextBlock Margin="5,0" Grid.Row="1" Text="{Binding Content, FallbackValue=我是内容}" FontSize="18" TextWrapping="Wrap" VerticalAlignment="Center" HorizontalAlignment="Center"/>
|
||||
<hc:UniformSpacingPanel x:Name="spacingPanel" Grid.Row="2" Margin="5,0,5,10" Spacing="10" Width="auto" ChildWrapping="Wrap" HorizontalAlignment="Center">
|
||||
<Button Content="确认"/>
|
||||
<Button Content="取消"/>
|
||||
</hc:UniformSpacingPanel>
|
||||
</Grid>
|
||||
</Border>
|
||||
</hc:Window>
|
116
货架标准上位机/Views/Windows/TipView.xaml.cs
Normal file
116
货架标准上位机/Views/Windows/TipView.xaml.cs
Normal file
@ -0,0 +1,116 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Media;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 提示框
|
||||
/// </summary>
|
||||
public partial class TipView : HandyControl.Controls.Window
|
||||
{
|
||||
public TipView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void closeClick(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示提示框
|
||||
/// </summary>
|
||||
/// <param name="content">内容</param>
|
||||
/// <param name="isVisCloseBut">界面右上角是否显示关闭按钮</param>
|
||||
/// <returns>点击的按钮文本</returns>
|
||||
public static string Show(string content, bool isVisCloseBut = true, Window owner = null)
|
||||
{
|
||||
return Show(content, string.Empty, isVisCloseBut);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示提示框
|
||||
/// </summary>
|
||||
/// <param name="content">内容</param>
|
||||
/// <param name="title">标题</param>
|
||||
/// <param name="isVisCloseBut">界面右上角是否显示关闭按钮</param>
|
||||
/// <returns>点击的按钮文本</returns>
|
||||
public static string Show(string content, string title, bool isVisCloseBut = true, Window owner = null)
|
||||
{
|
||||
return Show(content, title, new string[] { "确认" }, isVisCloseBut);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示提示框
|
||||
/// </summary>
|
||||
/// <param name="content">内容</param>
|
||||
/// <param name="buttons">按钮内容</param>
|
||||
/// <param name="isVisCloseBut">界面右上角是否显示关闭按钮</param>
|
||||
/// <returns>点击的按钮文本</returns>
|
||||
public static string Show(string content, IEnumerable<string> buttons, bool isVisCloseBut = true, Window owner = null)
|
||||
{
|
||||
return Show(content, string.Empty, buttons, isVisCloseBut);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 显示提示框
|
||||
/// </summary>
|
||||
/// <param name="content">内容</param>
|
||||
/// <param name="title">标题</param>
|
||||
/// <param name="buttons">按钮内容</param>
|
||||
/// <param name="isVisCloseBut">界面右上角是否显示关闭按钮</param>
|
||||
/// <returns>点击的按钮文本</returns>
|
||||
public static string Show(string content, string title, IEnumerable<string> buttons, bool isVisCloseBut = true, Window owner = null)
|
||||
{
|
||||
TipView? tipView;
|
||||
string clikename = string.Empty;
|
||||
Application.Current.Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
tipView = new TipView();
|
||||
tipView.DataContext = new { Title = title, Content = content, IsClose = isVisCloseBut };
|
||||
tipView.spacingPanel.Children.Clear();
|
||||
|
||||
foreach (var item in buttons)
|
||||
{
|
||||
Button button = new Button()
|
||||
{
|
||||
Content = item,
|
||||
};
|
||||
button.Click += (s, e) =>
|
||||
{
|
||||
clikename = ((Button)s).Content.ToString();
|
||||
tipView.Close();
|
||||
};
|
||||
|
||||
tipView.spacingPanel.Children.Add(button);
|
||||
}
|
||||
|
||||
tipView.Owner = owner == null ? System.Windows.Application.Current.MainWindow : owner;
|
||||
tipView.ShowDialog();
|
||||
tipView = null;
|
||||
}));
|
||||
|
||||
return clikename;
|
||||
}
|
||||
|
||||
private void previewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||||
{
|
||||
DragMove();
|
||||
}
|
||||
}
|
||||
}
|
28
货架标准上位机/Views/Windows/UserEditView.xaml
Normal file
28
货架标准上位机/Views/Windows/UserEditView.xaml
Normal file
@ -0,0 +1,28 @@
|
||||
<Window xmlns:hc="https://handyorg.github.io/handycontrol" x:Class="货架标准上位机.UserEditView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
Title="用户管理信息" Height="300" Width="550" ResizeMode="NoResize" Icon="/Resources/Logo.ico" WindowStartupLocation="CenterScreen">
|
||||
<Grid Background="White">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<hc:ScrollViewer IsInertiaEnabled="True" hc:ScrollViewerAttach.AutoHide="False">
|
||||
<hc:UniformSpacingPanel Margin="20,10" Spacing="10" Orientation="Vertical">
|
||||
<TextBox x:Name="textBox" Style="{StaticResource TextBoxExtend}" hc:InfoElement.Placeholder="请输入用户名" hc:InfoElement.Title="用户名" hc:InfoElement.Necessary="True"></TextBox>
|
||||
<PasswordBox x:Name="passwordBox" Style="{StaticResource PasswordBoxExtend}" hc:InfoElement.Placeholder="请输入密码" hc:InfoElement.Title="密码"></PasswordBox>
|
||||
<hc:CheckComboBox x:Name="checkComboBox" Style="{StaticResource CheckComboBoxPlus}" ShowSelectAllButton="True" hc:InfoElement.Placeholder="请选择角色" hc:InfoElement.Title="角色"/>
|
||||
</hc:UniformSpacingPanel>
|
||||
</hc:ScrollViewer>
|
||||
|
||||
<StackPanel Grid.Row="1" Margin="10" Orientation="Horizontal" HorizontalAlignment="Right">
|
||||
<Button x:Name="qr" Margin="0,0,10,0" Padding="25,0" Style="{StaticResource ButtonPrimary}">确认</Button>
|
||||
<Button Margin="0,0,10,0" Padding="25,0" Click="qx">取消</Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
219
货架标准上位机/Views/Windows/UserEditView.xaml.cs
Normal file
219
货架标准上位机/Views/Windows/UserEditView.xaml.cs
Normal file
@ -0,0 +1,219 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using HandyControl.Controls;
|
||||
using HandyControl.Tools.Extension;
|
||||
using Ping9719.WpfEx.Mvvm;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Controls.Primitives;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using MessageBox = HandyControl.Controls.MessageBox;
|
||||
using Window = System.Windows.Window;
|
||||
using 货架标准上位机.Views.Controls;
|
||||
using WCS.Model.ApiModel.User;
|
||||
using WCS.Model;
|
||||
using 货架标准上位机.Api;
|
||||
using WCS.Model.ApiModel;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户信息
|
||||
/// </summary>
|
||||
public partial class UserEditView : Window
|
||||
{
|
||||
public UserEditView()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <returns>true:成功,false:取消</returns>
|
||||
public static bool Show(UserModel userBase, CrudEnum crudEnum)
|
||||
{
|
||||
bool isOk = false;
|
||||
|
||||
var roleList = new List<RoleModel>();
|
||||
//调用接口获取权限列表
|
||||
var dia = Dialog.Show(new TextDialog());
|
||||
try
|
||||
{
|
||||
var body = new GetUsersRequest()
|
||||
{
|
||||
UserName = LocalStatic.CurrentUser,
|
||||
DeviceType = LocalFile.Config.DeviceType,
|
||||
Info = string.Empty,
|
||||
};
|
||||
var Result = ApiHelp.GetDataFromHttp<ResponseBase<List<RoleModel>>>(LocalFile.Config.ApiIpHost + "user/getRoles", body, "POST");
|
||||
if (Result != null && Result.Data != null)
|
||||
{
|
||||
roleList = Result.Data;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Growl.Error("加载数据失败:" + ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
dia.Close();
|
||||
}
|
||||
|
||||
Application.Current.Dispatcher.Invoke(new Action(() =>
|
||||
{
|
||||
var view = new UserEditView();
|
||||
|
||||
try
|
||||
{
|
||||
if (crudEnum == CrudEnum.Read)
|
||||
view.qr.IsEnabled = false;
|
||||
|
||||
var rs = roleList.Where(o => !o.IsAdmin).ToList();
|
||||
|
||||
view.textBox.Text = userBase.LoginName;
|
||||
view.passwordBox.Password = userBase.Password;
|
||||
view.checkComboBox.ItemsSource = rs;
|
||||
view.checkComboBox.DisplayMemberPath = nameof(RoleModel.Name);
|
||||
view.checkComboBox.SelectedValuePath = nameof(RoleModel.Id);
|
||||
|
||||
//var aaa = rs.Where(o => userBase.RoleIds.Contains(o.Id)).ToList();
|
||||
//ListBoxAttach.SetSelectedItems(view.checkComboBox, aaa);
|
||||
|
||||
foreach (var item in userBase.RoleIds)
|
||||
{
|
||||
var aaa = rs.FirstOrDefault(o => o.Id == item);
|
||||
if (aaa != null)
|
||||
view.checkComboBox.SelectedItems.Add(aaa);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString());
|
||||
view = null;
|
||||
return;
|
||||
}
|
||||
|
||||
view.qr.Click += (s, e) =>
|
||||
{
|
||||
try
|
||||
{
|
||||
UserModel newuser = new UserModel()
|
||||
{
|
||||
Id = userBase.Id,
|
||||
IsAdmin = userBase.IsAdmin,
|
||||
LoginName = view.textBox.Text.Trim(),
|
||||
Password = view.passwordBox.Password,
|
||||
RoleIds = view.checkComboBox.SelectedItems.Cast<RoleModel>().Select(o => o.Id).ToList(),
|
||||
Time = userBase.Time,
|
||||
};
|
||||
|
||||
if (crudEnum == CrudEnum.Update)
|
||||
{
|
||||
if (string.IsNullOrEmpty(newuser.LoginName))
|
||||
{
|
||||
MessageBox.Show("请输入名称");
|
||||
return;
|
||||
}
|
||||
try
|
||||
{
|
||||
var body = new AddUserRequest<UserModel>()
|
||||
{
|
||||
UserName = LocalStatic.CurrentUser,
|
||||
DeviceType = LocalFile.Config.DeviceType,
|
||||
User = newuser,
|
||||
AddOrUpdate = AddOrUpdate.Update
|
||||
};
|
||||
var Result = ApiHelp.GetDataFromHttp<ResponseCommon<object>>(LocalFile.Config.ApiIpHost + "user/addUser", body, "POST");
|
||||
if (Result != null && Result.Code == 200)
|
||||
{
|
||||
isOk = true;
|
||||
view.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Growl.Error(Result.Message);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Growl.Error("更新数据失败:" + ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
else if (crudEnum == CrudEnum.Create)
|
||||
{
|
||||
newuser.Id = 0;
|
||||
newuser.Time = DateTime.Now;
|
||||
|
||||
if (string.IsNullOrEmpty(newuser.LoginName))
|
||||
{
|
||||
MessageBox.Show("请输入名称");
|
||||
return;
|
||||
}
|
||||
|
||||
//调用接口获取权限列表
|
||||
try
|
||||
{
|
||||
var body = new AddUserRequest<UserModel>()
|
||||
{
|
||||
UserName = LocalStatic.CurrentUser,
|
||||
DeviceType = LocalFile.Config.DeviceType,
|
||||
User = newuser,
|
||||
AddOrUpdate = AddOrUpdate.Add
|
||||
};
|
||||
var Result = ApiHelp.GetDataFromHttp<ResponseCommon<object>>(LocalFile.Config.ApiIpHost + "user/addUser", body, "POST");
|
||||
if (Result != null && Result.Code == 200)
|
||||
{
|
||||
isOk = true;
|
||||
view.Close();
|
||||
}
|
||||
else
|
||||
{
|
||||
Growl.Error(Result.Message);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Growl.Error("新增用户失败:" + ex.Message);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show("不支持此操作");
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(ex.ToString());
|
||||
return;
|
||||
}
|
||||
//isOk = true;
|
||||
//view.Close();
|
||||
};
|
||||
|
||||
view.ShowDialog();
|
||||
view = null;
|
||||
}));
|
||||
|
||||
return isOk;
|
||||
}
|
||||
|
||||
private void qx(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
30
货架标准上位机/Views/Windows/UserInfoView.xaml
Normal file
30
货架标准上位机/Views/Windows/UserInfoView.xaml
Normal file
@ -0,0 +1,30 @@
|
||||
<Window xmlns:hc="https://handyorg.github.io/handycontrol" x:Class="货架标准上位机.UserInfoView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
Title="用户信息" Height="380" Width="400" ResizeMode="NoResize" FontSize="18" Icon="/Resources/Logo.ico" WindowStartupLocation="CenterScreen">
|
||||
<Grid Background="White">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="auto"/>
|
||||
<RowDefinition Height="*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel x:Name="StackPanelInfo" Orientation="Horizontal">
|
||||
<Image Margin="60,15,10,15" HorizontalAlignment="Left" Width="80" Height="80" Source="/Resources/Logo.png"></Image>
|
||||
<!--盟讯-->
|
||||
<TextBlock Margin="10,30,10,0" Text="{StaticResource AboutInfo1}" FontSize="28" FontFamily="YouYuan" Foreground="SteelBlue" FontWeight="UltraBold"></TextBlock>
|
||||
<TextBlock Margin="-55,30,-55,10" Text="{StaticResource AboutInfo2}" FontSize="28" FontFamily="YouYuan" VerticalAlignment="Bottom" Foreground="SteelBlue" FontWeight="UltraBold"></TextBlock>
|
||||
</StackPanel>
|
||||
|
||||
<!--使用此方式布局可以注释掉退出登录也不影响-->
|
||||
<StackPanel Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center">
|
||||
<hc:Gravatar Margin="0,0,0,10" Grid.Row="1" Style="{StaticResource GravatarCircleImg}">
|
||||
<TextBlock Text="" TextAlignment="Center" FontSize="65" Foreground="Gray" FontFamily="{StaticResource IconFont}"></TextBlock>
|
||||
</hc:Gravatar>
|
||||
<TextBlock Margin="0,10,0,20" HorizontalAlignment="Center" Text="{Binding LoginName,FallbackValue=admin}"></TextBlock>
|
||||
<Button Margin="0,0,0,10" Background="SteelBlue" Content="退出登录" Width="220" Height="55" Foreground="WhiteSmoke" FontSize="22" HorizontalAlignment="Stretch" Click="tcdl"></Button>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
45
货架标准上位机/Views/Windows/UserInfoView.xaml.cs
Normal file
45
货架标准上位机/Views/Windows/UserInfoView.xaml.cs
Normal file
@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using WCS.Model.ApiModel;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户信息
|
||||
/// </summary>
|
||||
public partial class UserInfoView : Window
|
||||
{
|
||||
public static UserInfoViewModel viewModel = new UserInfoViewModel();
|
||||
|
||||
/// <summary>
|
||||
/// 点击退出登录
|
||||
/// </summary>
|
||||
public bool IsExitLogin = false;
|
||||
public UserInfoView()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
private void tcdl(object sender, RoutedEventArgs e)
|
||||
{
|
||||
IsExitLogin = true;
|
||||
viewModel.IsLogin = false;
|
||||
viewModel.User = null;
|
||||
viewModel.Roles = new List<RoleModel>();
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
}
|
27
货架标准上位机/Views/Windows/UserLoginView.xaml
Normal file
27
货架标准上位机/Views/Windows/UserLoginView.xaml
Normal file
@ -0,0 +1,27 @@
|
||||
<Window xmlns:hc="https://handyorg.github.io/handycontrol" x:Class="货架标准上位机.UserLoginView"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:local="clr-namespace:货架标准上位机"
|
||||
mc:Ignorable="d"
|
||||
Title="登录" Height="440" Width="400" ResizeMode="NoResize" FontSize="18"
|
||||
PreviewKeyDown="Window_PreviewKeyDown" Icon="/Resources/Logo.ico" WindowStartupLocation="CenterScreen" Loaded="load">
|
||||
<Grid Background="White">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="130"/>
|
||||
<RowDefinition Height="80"/>
|
||||
<RowDefinition Height="80"/>
|
||||
<RowDefinition Height="80"/>
|
||||
</Grid.RowDefinitions>
|
||||
<StackPanel x:Name="StackPanelInfo" Orientation="Horizontal">
|
||||
<Image Margin="60,15,10,15" HorizontalAlignment="Left" Width="80" Height="80" Source="/Resources/Logo.png"></Image>
|
||||
<!--盟讯-->
|
||||
<TextBlock Margin="0,30" Text="{StaticResource AboutInfo1}" FontSize="28" FontFamily="YouYuan" Foreground="SteelBlue" FontWeight="UltraBold"></TextBlock>
|
||||
<TextBlock Margin="-58,30" Text="{StaticResource AboutInfo2}" FontSize="28" FontFamily="YouYuan" VerticalAlignment="Bottom" Foreground="SteelBlue" FontWeight="UltraBold"></TextBlock>
|
||||
</StackPanel>
|
||||
<ComboBox x:Name="ComboBoxId" Grid.Row="1" Margin="20,10" Height="50" Width="220" Text="admin" IsEditable="True" hc:InfoElement.Placeholder="输入账号" Style="{StaticResource ComboBoxExtend}" hc:InfoElement.ContentHeight="50"></ComboBox>
|
||||
<PasswordBox x:Name="PasswordBoxPass" Grid.Row="2" Height="50" Width="220" Margin="20,10" hc:InfoElement.Placeholder="输入密码" Style="{StaticResource PasswordBoxExtend}"></PasswordBox>
|
||||
<Button Background="SteelBlue" Content="登录" Width="220" Foreground="WhiteSmoke" FontSize="22" Height="55" Grid.Row="3" HorizontalAlignment="Stretch" Click="Button_Click"></Button>
|
||||
</Grid>
|
||||
</Window>
|
173
货架标准上位机/Views/Windows/UserLoginView.xaml.cs
Normal file
173
货架标准上位机/Views/Windows/UserLoginView.xaml.cs
Normal file
@ -0,0 +1,173 @@
|
||||
using 货架标准上位机.ViewModel;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Documents;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using System.Windows.Shapes;
|
||||
using HandyControl.Controls;
|
||||
using 货架标准上位机.Views.Controls;
|
||||
using WCS.Model.ApiModel.User;
|
||||
using 货架标准上位机.Api;
|
||||
using WCS.Model;
|
||||
using Newtonsoft.Json;
|
||||
using SqlSugar;
|
||||
using WCS.Model.ApiModel;
|
||||
|
||||
namespace 货架标准上位机
|
||||
{
|
||||
/// <summary>
|
||||
/// 用户登录
|
||||
/// </summary>
|
||||
public partial class UserLoginView : System.Windows.Window
|
||||
{
|
||||
UserInfoViewModel viewModel = UserInfoView.viewModel;
|
||||
public UserLoginView()
|
||||
{
|
||||
InitializeComponent();
|
||||
this.DataContext = viewModel;
|
||||
}
|
||||
|
||||
private void load(object sender, RoutedEventArgs e)
|
||||
{
|
||||
//登录记忆
|
||||
if (LocalFile.Config.Sys.IsSaveLogin && LocalFile.Config.Sys.SaveLogin.Any())
|
||||
{
|
||||
ComboBoxId.ItemsSource = LocalFile.Config.Sys.SaveLogin;
|
||||
ComboBoxId.SelectedIndex = 0;
|
||||
}
|
||||
}
|
||||
|
||||
private void Button_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
var loginName = ComboBoxId.Text.Trim();
|
||||
var pass = PasswordBoxPass.Password.ToString();
|
||||
|
||||
if (string.IsNullOrEmpty(loginName))
|
||||
{
|
||||
HandyControl.Controls.MessageBox.Warning("请输入账号!", "提示");
|
||||
return;
|
||||
}
|
||||
if (string.IsNullOrEmpty(pass))
|
||||
{
|
||||
HandyControl.Controls.MessageBox.Warning("请输入密码!", "提示");
|
||||
return;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
try
|
||||
{
|
||||
var body = new UserLoginRequest()
|
||||
{
|
||||
UserName = loginName,
|
||||
DeviceType = LocalFile.Config.DeviceType,
|
||||
PassWord = pass,
|
||||
IsNoLogin = false,
|
||||
};
|
||||
var Result = ApiHelp.GetDataFromHttp<ResponseBase<UserModel>>(LocalFile.Config.ApiIpHost + "user/userLogin",
|
||||
body, "POST");
|
||||
if (Result.Code != 200 || Result.Data == null)
|
||||
{
|
||||
HandyControl.Controls.MessageBox.Warning(Result.Message, "提示");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
viewModel.User = Result.Data;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
HandyControl.Controls.MessageBox.Warning($"登录发生异常:{ex.Message}", "提示");
|
||||
return;
|
||||
}
|
||||
|
||||
//登录记忆
|
||||
if (LocalFile.Config.Sys.IsSaveLogin)
|
||||
{
|
||||
LocalFile.Config.Sys.SaveLogin.RemoveAll(t => t == loginName);
|
||||
LocalFile.Config.Sys.SaveLogin.Insert(0, loginName);
|
||||
LocalFile.Config.Sys.SaveLogin = LocalFile.Config.Sys.SaveLogin.Take(LocalFile.Config.Sys.SaveLoginCount).ToList();
|
||||
LocalFile.SaveConfig();
|
||||
}
|
||||
viewModel.Roles = viewModel.User?.GetRoles;
|
||||
viewModel.IsLogin = true;
|
||||
LocalStatic.CurrentUser = loginName;
|
||||
this.DialogResult = true;
|
||||
this.Close();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
HandyControl.Controls.MessageBox.Error(ex.Message, "错误");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.Key == Key.Enter)
|
||||
{
|
||||
Button_Click(null, null);
|
||||
}
|
||||
else if (e.Key == Key.Escape)
|
||||
{
|
||||
this.Close();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 不登录,直接使用最高权限
|
||||
/// </summary>
|
||||
public static void NotLogin()
|
||||
{
|
||||
try
|
||||
{
|
||||
var body = new GetUsersRequest()
|
||||
{
|
||||
UserName = "未登录",
|
||||
DeviceType = "WCS前端",
|
||||
Info = "admin",
|
||||
};
|
||||
var Result = ApiHelp.Post<ResponseCommon<List<UserModel>>>([LocalFile.Config.ApiIpHost, "user/getUsers"], body).Result;
|
||||
if (Result != null && Result.Data.Any())
|
||||
{
|
||||
UserInfoView.viewModel.User = Result.Data.First();
|
||||
}
|
||||
|
||||
var bodyRole = new GetUsersRequest()
|
||||
{
|
||||
UserName = "未登录",
|
||||
DeviceType = "WCS前端",
|
||||
Info = string.Empty,
|
||||
|
||||
};
|
||||
var ResultRole = ApiHelp.Post<ResponseCommon<List<RoleModel>>>([LocalFile.Config.ApiIpHost, "user/getRoles"], body).Result;
|
||||
if (ResultRole != null && ResultRole.Data.Any())
|
||||
{
|
||||
UserInfoView.viewModel.Roles = ResultRole.Data;
|
||||
}
|
||||
|
||||
UserInfoView.viewModel.IsLogin = true;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Growl.Error("加载数据失败:" + ex.Message);
|
||||
}
|
||||
finally
|
||||
{
|
||||
//dia.Close();
|
||||
}
|
||||
}
|
||||
|
||||
//接口获取User对象
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user