This commit is contained in:
Курнат Андрей
2026-03-18 21:56:53 +03:00
parent ff133e0215
commit ce3a3f02d2
18 changed files with 203 additions and 148 deletions

View File

@@ -5,18 +5,19 @@
StartupUri="MainWindow.xaml"> StartupUri="MainWindow.xaml">
<Application.Resources> <Application.Resources>
<LinearGradientBrush x:Key="AppWindowBackgroundBrush" StartPoint="0,0" EndPoint="1,1"> <LinearGradientBrush x:Key="AppWindowBackgroundBrush" StartPoint="0,0" EndPoint="1,1">
<GradientStop Color="#FFF8FAFD" Offset="0" /> <GradientStop Color="#FFDCE5EE" Offset="0" />
<GradientStop Color="#FFF2F6FB" Offset="1" /> <GradientStop Color="#FFC9D6E3" Offset="1" />
</LinearGradientBrush> </LinearGradientBrush>
<SolidColorBrush x:Key="AppSurfaceBrush" Color="#FFFFFFFF" /> <SolidColorBrush x:Key="AppPanelBrush" Color="#FFF1F6FB" />
<SolidColorBrush x:Key="AppSurfaceBrush" Color="#FFFCFEFF" />
<SolidColorBrush x:Key="AppAccentBrush" Color="#FF5C7FA8" /> <SolidColorBrush x:Key="AppAccentBrush" Color="#FF5C7FA8" />
<SolidColorBrush x:Key="AppAccentSoftBrush" Color="#FFDDE8F3" /> <SolidColorBrush x:Key="AppAccentSoftBrush" Color="#FFD6E3F0" />
<SolidColorBrush x:Key="AppBorderBrush" Color="#FFC9D6E2" /> <SolidColorBrush x:Key="AppBorderBrush" Color="#FFAABBCD" />
<SolidColorBrush x:Key="AppTextBrush" Color="#FF263645" /> <SolidColorBrush x:Key="AppTextBrush" Color="#FF263645" />
<SolidColorBrush x:Key="AppMutedTextBrush" Color="#FF6B7B88" /> <SolidColorBrush x:Key="AppMutedTextBrush" Color="#FF6B7B88" />
<SolidColorBrush x:Key="AppButtonBrush" Color="#FFF5F8FC" /> <SolidColorBrush x:Key="AppButtonBrush" Color="#FFF7FAFD" />
<SolidColorBrush x:Key="AppButtonHoverBrush" Color="#FFEAF2FA" /> <SolidColorBrush x:Key="AppButtonHoverBrush" Color="#FFE7F0F9" />
<SolidColorBrush x:Key="AppSelectionBrush" Color="#FFDDEAF7" /> <SolidColorBrush x:Key="AppSelectionBrush" Color="#FFD8E6F4" />
<SolidColorBrush x:Key="AppSelectionTextBrush" Color="#FF17324A" /> <SolidColorBrush x:Key="AppSelectionTextBrush" Color="#FF17324A" />
<SolidColorBrush x:Key="OpenDocumentTenDaysBrush" Color="#FFF2F8EA" /> <SolidColorBrush x:Key="OpenDocumentTenDaysBrush" Color="#FFF2F8EA" />
<SolidColorBrush x:Key="OpenDocumentTwentyDaysBrush" Color="#FFFCF4E3" /> <SolidColorBrush x:Key="OpenDocumentTwentyDaysBrush" Color="#FFFCF4E3" />
@@ -35,9 +36,38 @@
</Style> </Style>
<Style TargetType="{x:Type GroupBox}"> <Style TargetType="{x:Type GroupBox}">
<Setter Property="Background" Value="{StaticResource AppSurfaceBrush}" /> <Setter Property="Background" Value="{StaticResource AppPanelBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource AppBorderBrush}" /> <Setter Property="BorderBrush" Value="{StaticResource AppBorderBrush}" />
<Setter Property="Foreground" Value="{StaticResource AppAccentBrush}" /> <Setter Property="Foreground" Value="{StaticResource AppAccentBrush}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupBox}">
<Grid SnapsToDevicePixels="True">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Border Grid.Row="1"
Margin="0,2,0,0"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1"
CornerRadius="3">
<ContentPresenter ContentSource="Content" />
</Border>
<Border Grid.Row="0"
Margin="12,0,12,0"
Padding="8,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Background="{StaticResource AppWindowBackgroundBrush}">
<ContentPresenter ContentSource="Header"
RecognizesAccessKey="True" />
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style> </Style>
<Style TargetType="{x:Type Button}"> <Style TargetType="{x:Type Button}">
@@ -75,7 +105,7 @@
</Style> </Style>
<Style TargetType="{x:Type Menu}"> <Style TargetType="{x:Type Menu}">
<Setter Property="Background" Value="{StaticResource AppSurfaceBrush}" /> <Setter Property="Background" Value="{StaticResource AppPanelBrush}" />
<Setter Property="Foreground" Value="{StaticResource AppTextBrush}" /> <Setter Property="Foreground" Value="{StaticResource AppTextBrush}" />
</Style> </Style>
@@ -110,12 +140,14 @@
<Style TargetType="{x:Type DataGrid}"> <Style TargetType="{x:Type DataGrid}">
<Setter Property="Background" Value="{StaticResource AppSurfaceBrush}" /> <Setter Property="Background" Value="{StaticResource AppSurfaceBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource AppBorderBrush}" /> <Setter Property="BorderBrush" Value="{StaticResource AppBorderBrush}" />
<Setter Property="RowBackground" Value="#FFFFFFFF" /> <Setter Property="HorizontalGridLinesBrush" Value="#FFD9E3ED" />
<Setter Property="AlternatingRowBackground" Value="#FFF7FAFD" /> <Setter Property="VerticalGridLinesBrush" Value="#FFD9E3ED" />
<Setter Property="RowBackground" Value="#FFFEFFFF" />
<Setter Property="AlternatingRowBackground" Value="#FFF6FAFD" />
<Setter Property="ColumnHeaderStyle"> <Setter Property="ColumnHeaderStyle">
<Setter.Value> <Setter.Value>
<Style TargetType="{x:Type DataGridColumnHeader}"> <Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Background" Value="#FFEAF2FA" /> <Setter Property="Background" Value="#FFE4EDF6" />
<Setter Property="Foreground" Value="{StaticResource AppAccentBrush}" /> <Setter Property="Foreground" Value="{StaticResource AppAccentBrush}" />
<Setter Property="BorderBrush" Value="{StaticResource AppBorderBrush}" /> <Setter Property="BorderBrush" Value="{StaticResource AppBorderBrush}" />
<Setter Property="FontWeight" Value="SemiBold" /> <Setter Property="FontWeight" Value="SemiBold" />

View File

@@ -11,6 +11,9 @@ namespace XLAB
public int AddFrpdItem(FrpdDirectoryItem item) public int AddFrpdItem(FrpdDirectoryItem item)
{ {
var normalizedItem = NormalizeFrpdItem(item); var normalizedItem = NormalizeFrpdItem(item);
var guidForInsert = string.IsNullOrWhiteSpace(normalizedItem.Guid)
? Guid.NewGuid().ToString().ToUpperInvariant()
: normalizedItem.Guid;
const string sql = @" const string sql = @"
INSERT INTO dbo.FRPD INSERT INTO dbo.FRPD
@@ -38,13 +41,13 @@ SELECT CAST(SCOPE_IDENTITY() AS int);";
using (var command = new SqlCommand(sql, connection)) using (var command = new SqlCommand(sql, connection))
{ {
connection.Open(); connection.Open();
EnsureFrpdGuidIsUnique(connection, normalizedItem.Guid, null); EnsureFrpdGuidIsUnique(connection, guidForInsert, null);
command.CommandTimeout = 60; command.CommandTimeout = 60;
ReferenceDirectorySqlHelpers.AddNullableIntParameter(command, "@ParentId", normalizedItem.ParentId); ReferenceDirectorySqlHelpers.AddNullableIntParameter(command, "@ParentId", normalizedItem.ParentId);
command.Parameters.Add("@Name", SqlDbType.VarChar, FrpdDirectoryRules.NameMaxLength).Value = normalizedItem.Name; command.Parameters.Add("@Name", SqlDbType.VarChar, FrpdDirectoryRules.NameMaxLength).Value = normalizedItem.Name;
ReferenceDirectorySqlHelpers.AddNullableStringParameter(command, "@LocalCode", SqlDbType.VarChar, FrpdDirectoryRules.LocalCodeMaxLength, normalizedItem.LocalCode); ReferenceDirectorySqlHelpers.AddNullableStringParameter(command, "@LocalCode", SqlDbType.VarChar, FrpdDirectoryRules.LocalCodeMaxLength, normalizedItem.LocalCode);
ReferenceDirectorySqlHelpers.AddNullableStringParameter(command, "@Guid", SqlDbType.VarChar, FrpdDirectoryRules.GuidMaxLength, normalizedItem.Guid); ReferenceDirectorySqlHelpers.AddNullableStringParameter(command, "@Guid", SqlDbType.VarChar, FrpdDirectoryRules.GuidMaxLength, guidForInsert);
ReferenceDirectorySqlHelpers.AddNullableDateTimeParameter(command, "@CreatedOn", normalizedItem.CreatedOn); ReferenceDirectorySqlHelpers.AddNullableDateTimeParameter(command, "@CreatedOn", normalizedItem.CreatedOn);
ReferenceDirectorySqlHelpers.AddNullableDateTimeParameter(command, "@LiquidatedOn", normalizedItem.LiquidatedOn); ReferenceDirectorySqlHelpers.AddNullableDateTimeParameter(command, "@LiquidatedOn", normalizedItem.LiquidatedOn);
@@ -54,7 +57,7 @@ SELECT CAST(SCOPE_IDENTITY() AS int);";
} }
catch (SqlException ex) when (ReferenceDirectorySqlHelpers.IsDuplicateViolation(ex, "IX_FRPD_FRPDGUID")) catch (SqlException ex) when (ReferenceDirectorySqlHelpers.IsDuplicateViolation(ex, "IX_FRPD_FRPDGUID"))
{ {
throw CreateFrpdDuplicateGuidException(normalizedItem.Guid); throw CreateFrpdDuplicateGuidException(guidForInsert);
} }
} }
} }

View File

@@ -27,14 +27,14 @@
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<TextBlock Margin="0,0,8,0" <TextBlock Margin="0,0,8,0"
VerticalAlignment="Center" VerticalAlignment="Center"
Text="Поиск по FRPD" /> Text="Поиск " />
<TextBox Width="360" <TextBox Width="360"
Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}" /> Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel> </StackPanel>
</DockPanel> </DockPanel>
<GroupBox Grid.Row="1" <GroupBox Grid.Row="1"
Header="Организации и подразделения (FRPD)"> Header="Организации и подразделения">
<DataGrid ItemsSource="{Binding FrpdItems}" <DataGrid ItemsSource="{Binding FrpdItems}"
SelectedItem="{Binding SelectedFrpd, Mode=TwoWay}" SelectedItem="{Binding SelectedFrpd, Mode=TwoWay}"
AutoGenerateColumns="False" AutoGenerateColumns="False"
@@ -58,21 +58,15 @@
</Style> </Style>
</DataGrid.RowStyle> </DataGrid.RowStyle>
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="80" Binding="{Binding Id}" /> <DataGridTextColumn Header="Наименование" Width="*" Binding="{Binding Name}" />
<DataGridTextColumn Header="Организация/подразделение" Width="*" Binding="{Binding Name}" />
<DataGridTextColumn Header="Родительская запись" Width="240" Binding="{Binding ParentName}" />
<DataGridTextColumn Header="Локальный код" Width="150" Binding="{Binding LocalCode}" /> <DataGridTextColumn Header="Локальный код" Width="150" Binding="{Binding LocalCode}" />
<DataGridTextColumn Header="GUID" Width="220" Binding="{Binding Guid}" />
<DataGridTextColumn Header="Дата создания" Width="120" Binding="{Binding CreatedOn, StringFormat=d}" />
<DataGridTextColumn Header="Дата ликвидации" Width="130" Binding="{Binding LiquidatedOn, StringFormat=d}" />
<DataGridTextColumn Header="Виды деятельности" Width="260" Binding="{Binding ActivityNames}" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</GroupBox> </GroupBox>
<GroupBox Grid.Row="2" <GroupBox Grid.Row="2"
Margin="0,12,0,0" Margin="0,12,0,0"
Header="Виды деятельности организации/подразделения (FRPDVD)"> Header="Виды деятельности подразделения">
<DataGrid ItemsSource="{Binding FrpdvdItems}" <DataGrid ItemsSource="{Binding FrpdvdItems}"
SelectedItem="{Binding SelectedFrpdvd, Mode=TwoWay}" SelectedItem="{Binding SelectedFrpdvd, Mode=TwoWay}"
AutoGenerateColumns="False" AutoGenerateColumns="False"
@@ -96,7 +90,6 @@
</Style> </Style>
</DataGrid.RowStyle> </DataGrid.RowStyle>
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="100" Binding="{Binding Id}" />
<DataGridTextColumn Header="Вид деятельности" Width="*" Binding="{Binding ActivityName}" /> <DataGridTextColumn Header="Вид деятельности" Width="*" Binding="{Binding ActivityName}" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>

View File

@@ -219,7 +219,7 @@ namespace XLAB
} }
await RefreshFrpdCoreAsync(null, null); await RefreshFrpdCoreAsync(null, null);
_dialogService.ShowInfo("Запись FRPD удалена."); _dialogService.ShowInfo("Запись удалена.");
}); });
} }
@@ -246,7 +246,7 @@ namespace XLAB
} }
await RefreshFrpdCoreAsync(selected.FrpdId, null); await RefreshFrpdCoreAsync(selected.FrpdId, null);
_dialogService.ShowInfo("Запись FRPDVD удалена."); _dialogService.ShowInfo("Запись удалена.");
}); });
} }
@@ -305,7 +305,7 @@ namespace XLAB
{ {
await Task.Run(delegate { _service.UpdateFrpdItem(result); }); await Task.Run(delegate { _service.UpdateFrpdItem(result); });
await RefreshFrpdCoreAsync(result.Id, SelectedFrpdvd == null ? (int?)null : SelectedFrpdvd.Id); await RefreshFrpdCoreAsync(result.Id, SelectedFrpdvd == null ? (int?)null : SelectedFrpdvd.Id);
_dialogService.ShowInfo("Запись FRPD обновлена."); _dialogService.ShowInfo("Запись обновлена.");
}); });
} }
@@ -326,7 +326,7 @@ namespace XLAB
{ {
await Task.Run(delegate { _service.UpdateFrpdvdItem(result); }); await Task.Run(delegate { _service.UpdateFrpdvdItem(result); });
await RefreshFrpdCoreAsync(result.FrpdId, result.Id); await RefreshFrpdCoreAsync(result.FrpdId, result.Id);
_dialogService.ShowInfo("Запись FRPDVD обновлена."); _dialogService.ShowInfo("Запись обновлена.");
}); });
} }
@@ -466,7 +466,7 @@ namespace XLAB
{ {
var searchText = string.IsNullOrWhiteSpace(SearchText) ? null : SearchText.Trim(); var searchText = string.IsNullOrWhiteSpace(SearchText) ? null : SearchText.Trim();
StatusText = string.Format( StatusText = string.Format(
"{0}FRPD: {1}/{2}. FRPDVD: {3}.", "{0}Подразделений: {1}/{2}. Видов деятельности: {3}.",
string.IsNullOrWhiteSpace(searchText) ? string.Empty : string.Format("Поиск: \"{0}\". ", searchText), string.IsNullOrWhiteSpace(searchText) ? string.Empty : string.Format("Поиск: \"{0}\". ", searchText),
FrpdItems.Count, FrpdItems.Count,
_frpdCache.Count, _frpdCache.Count,

View File

@@ -2,16 +2,15 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{Binding Title}" Title="{Binding Title}"
Height="360" Height="220"
Width="680" Width="680"
MinHeight="340" MinHeight="220"
MinWidth="620" MinWidth="620"
WindowStartupLocation="CenterOwner"> WindowStartupLocation="CenterOwner">
<Grid Margin="16"> <Grid Margin="16">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="*" /> <RowDefinition Height="*" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Grid Grid.Row="0"> <Grid Grid.Row="0">
@@ -23,13 +22,10 @@
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Родительская запись" /> <!--<TextBlock Grid.Row="0" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Родительская запись" />
<ComboBox Grid.Row="0" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding ParentItems}" SelectedValue="{Binding ParentId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" /> <ComboBox Grid.Row="0" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding ParentItems}" SelectedValue="{Binding ParentId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" />-->
<TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Организация/подразделение" /> <TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Организация/подразделение" />
<TextBox Grid.Row="1" Grid.Column="1" Margin="0,0,0,8" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" /> <TextBox Grid.Row="1" Grid.Column="1" Margin="0,0,0,8" Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" />
@@ -37,14 +33,9 @@
<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Локальный код" /> <TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Локальный код" />
<TextBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,8" Text="{Binding LocalCode, UpdateSourceTrigger=PropertyChanged}" /> <TextBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,8" Text="{Binding LocalCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="3" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="GUID подразделения" />
<TextBox Grid.Row="3" Grid.Column="1" Margin="0,0,0,8" Text="{Binding Guid, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="4" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Дата создания" />
<DatePicker Grid.Row="4" Grid.Column="1" Margin="0,0,0,8" SelectedDate="{Binding CreatedOn, Mode=TwoWay}" SelectedDateFormat="Short" />
<TextBlock Grid.Row="5" Grid.Column="0" Margin="0,0,12,0" VerticalAlignment="Center" Text="Дата ликвидации" />
<DatePicker Grid.Row="5" Grid.Column="1" SelectedDate="{Binding LiquidatedOn, Mode=TwoWay}" SelectedDateFormat="Short" />
</Grid> </Grid>
<TextBlock Grid.Row="1" Margin="0,12,0,0" Foreground="Firebrick" Text="{Binding ValidationMessage}" /> <TextBlock Grid.Row="1" Margin="0,12,0,0" Foreground="Firebrick" Text="{Binding ValidationMessage}" />

View File

@@ -1,6 +1,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Windows;
using System.Windows.Input; using System.Windows.Input;
namespace XLAB namespace XLAB
@@ -48,6 +49,11 @@ namespace XLAB
set { SetProperty(ref _guid, value); } set { SetProperty(ref _guid, value); }
} }
public Visibility GuidFieldVisibility
{
get { return IsNew ? Visibility.Collapsed : Visibility.Visible; }
}
public int Id { get; private set; } public int Id { get; private set; }
public bool IsNew { get; private set; } public bool IsNew { get; private set; }
public DateTime? LiquidatedOn { get; set; } public DateTime? LiquidatedOn { get; set; }

View File

@@ -8,6 +8,22 @@
MinWidth="1180" MinWidth="1180"
WindowState="Maximized" WindowState="Maximized"
Loaded="Window_Loaded"> Loaded="Window_Loaded">
<Window.Resources>
<Style x:Key="GhostGridSplitterStyle" TargetType="GridSplitter">
<Setter Property="Background" Value="Transparent" />
<Setter Property="BorderBrush" Value="Transparent" />
<Setter Property="BorderThickness" Value="0" />
<Setter Property="ShowsPreview" Value="True" />
<Setter Property="Opacity" Value="1" />
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="#D7DADF" />
<Setter Property="BorderBrush" Value="#BCC1C7" />
<Setter Property="BorderThickness" Value="1" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid Margin="12"> <Grid Margin="12">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
@@ -97,7 +113,7 @@
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
<DataTemplate> <DataTemplate>
<Border Padding="8" <Border Padding="8"
BorderBrush="#DDD" BorderBrush="{StaticResource AppBorderBrush}"
BorderThickness="0,0,0,1"> BorderThickness="0,0,0,1">
<Grid> <Grid>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
@@ -148,9 +164,16 @@
Foreground="DimGray" Foreground="DimGray"
Text="{Binding AcceptedOn, StringFormat=d}" /> Text="{Binding AcceptedOn, StringFormat=d}" />
</DockPanel> </DockPanel>
<TextBlock Margin="0,4,0,0" <DockPanel Margin="0,4,0,0"
LastChildFill="True">
<TextBlock DockPanel.Dock="Right"
Foreground="DimGray" Foreground="DimGray"
Text="{Binding CustomerName}" /> Text="{Binding TimelineDisplay}" />
<TextBlock Margin="0,0,12,0"
Foreground="DimGray"
Text="{Binding CustomerName}"
TextTrimming="CharacterEllipsis" />
</DockPanel>
</StackPanel> </StackPanel>
</Grid> </Grid>
</Border> </Border>
@@ -165,10 +188,19 @@
</Grid> </Grid>
</GroupBox> </GroupBox>
<GridSplitter Grid.Column="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ResizeDirection="Columns"
ResizeBehavior="PreviousAndNext"
Style="{StaticResource GhostGridSplitterStyle}"
Cursor="SizeWE" />
<Grid Grid.Column="2"> <Grid Grid.Column="2">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="*" /> <RowDefinition Height="*" />
<RowDefinition Height="10" />
<RowDefinition Height="340" /> <RowDefinition Height="340" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
@@ -250,6 +282,19 @@
SelectedValue="{Binding SelectedCustomerId, Mode=TwoWay}" SelectedValue="{Binding SelectedCustomerId, Mode=TwoWay}"
IsEnabled="{Binding IsCustomerEditable}" /> IsEnabled="{Binding IsCustomerEditable}" />
<TextBlock Grid.Row="1"
Grid.Column="4"
Margin="0,0,8,6"
VerticalAlignment="Center"
Text="Приборов в ПСВ" />
<TextBlock Grid.Row="1"
Grid.Column="5"
Grid.ColumnSpan="2"
Margin="0,0,0,6"
VerticalAlignment="Center"
FontWeight="SemiBold"
Text="{Binding HeaderInstrumentCount}" />
<TextBlock Grid.Row="2" <TextBlock Grid.Row="2"
Grid.ColumnSpan="7" Grid.ColumnSpan="7"
Foreground="DimGray" Foreground="DimGray"
@@ -319,21 +364,41 @@
</Grid> </Grid>
</GroupBox> </GroupBox>
<GroupBox Grid.Row="2" Header="Состав выбранной группы"> <GridSplitter Grid.Row="2"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
ResizeDirection="Rows"
ResizeBehavior="PreviousAndNext"
Style="{StaticResource GhostGridSplitterStyle}"
Cursor="SizeNS" />
<GroupBox Grid.Row="3" Header="Состав выбранной группы">
<Grid Margin="8"> <Grid Margin="8">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="*" /> <RowDefinition Height="*" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<WrapPanel Margin="0,0,0,8"> <Grid Margin="0,0,0,8">
<TextBlock Width="140" <Grid.ColumnDefinitions>
<ColumnDefinition Width="140" />
<ColumnDefinition Width="320" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0"
Margin="0,0,6,0" Margin="0,0,6,0"
VerticalAlignment="Center" VerticalAlignment="Center"
Text="Поиск по зав. №" /> Text="Поиск по зав. №" />
<TextBox Width="320" <TextBox Grid.Column="1"
Text="{Binding GroupDetailFilterText, UpdateSourceTrigger=PropertyChanged}" /> Text="{Binding GroupDetailFilterText, UpdateSourceTrigger=PropertyChanged}" />
</WrapPanel> <TextBlock Grid.Column="2"
Margin="12,0,0,0"
VerticalAlignment="Center"
HorizontalAlignment="Right"
Foreground="DimGray"
Text="{Binding DetailTableCountText}" />
</Grid>
<DataGrid Grid.Row="1" <DataGrid Grid.Row="1"
ItemsSource="{Binding DocumentLinesView}" ItemsSource="{Binding DocumentLinesView}"

View File

@@ -19,8 +19,10 @@ namespace XLAB
private string _documentFilterText; private string _documentFilterText;
private string _documentNumberEditor; private string _documentNumberEditor;
private string _documentStatusText; private string _documentStatusText;
private string _detailTableCountText;
private string _groupDetailFilterText; private string _groupDetailFilterText;
private string _headerDepartmentName; private string _headerDepartmentName;
private int _headerInstrumentCount;
private DateTime? _headerIssuedOn; private DateTime? _headerIssuedOn;
private DateTime? _headerReceivedOn; private DateTime? _headerReceivedOn;
private bool _isBusy; private bool _isBusy;
@@ -67,6 +69,7 @@ namespace XLAB
SaveDocumentHeaderCommand = new RelayCommand(delegate { SaveDocumentAsync(); }, delegate { return CanSaveDocument(); }); SaveDocumentHeaderCommand = new RelayCommand(delegate { SaveDocumentAsync(); }, delegate { return CanSaveDocument(); });
DocumentStatusText = "Готово."; DocumentStatusText = "Готово.";
DetailTableCountText = "Приборов в таблице: 0.";
LineStatusText = "Документ не выбран."; LineStatusText = "Документ не выбран.";
} }
@@ -135,6 +138,12 @@ namespace XLAB
private set { SetProperty(ref _documentStatusText, value); } private set { SetProperty(ref _documentStatusText, value); }
} }
public string DetailTableCountText
{
get { return _detailTableCountText; }
private set { SetProperty(ref _detailTableCountText, value); }
}
public ObservableCollection<PsvDocumentSummary> Documents { get; private set; } public ObservableCollection<PsvDocumentSummary> Documents { get; private set; }
public ICollectionView DocumentsView { get; private set; } public ICollectionView DocumentsView { get; private set; }
@@ -163,6 +172,12 @@ namespace XLAB
private set { SetProperty(ref _headerDepartmentName, value); } private set { SetProperty(ref _headerDepartmentName, value); }
} }
public int HeaderInstrumentCount
{
get { return _headerInstrumentCount; }
private set { SetProperty(ref _headerInstrumentCount, value); }
}
public bool IsDocumentHeaderEditable public bool IsDocumentHeaderEditable
{ {
get get
@@ -631,6 +646,7 @@ namespace XLAB
} }
ClearCollections(DocumentLines); ClearCollections(DocumentLines);
HeaderInstrumentCount = 0;
} }
private void ClearDocumentGroups() private void ClearDocumentGroups()
@@ -2200,6 +2216,7 @@ namespace XLAB
&& previousLine.IsPendingInsert && previousLine.IsPendingInsert
&& string.Equals(line.DuplicateKey, previousLine.DuplicateKey, StringComparison.OrdinalIgnoreCase); && string.Equals(line.DuplicateKey, previousLine.DuplicateKey, StringComparison.OrdinalIgnoreCase);
}); });
HeaderInstrumentCount = DocumentLines.Count;
RefreshDocumentLinesView(); RefreshDocumentLinesView();
RaiseCommandStates(); RaiseCommandStates();
} }
@@ -2447,12 +2464,14 @@ namespace XLAB
{ {
if (SelectedDocument == null) if (SelectedDocument == null)
{ {
DetailTableCountText = "Приборов в таблице: 0.";
LineStatusText = "Документ не выбран."; LineStatusText = "Документ не выбран.";
return; return;
} }
if (DocumentGroupSummaries.Count == 0) if (DocumentGroupSummaries.Count == 0)
{ {
DetailTableCountText = "Приборов в таблице: 0.";
LineStatusText = SelectedDocument.IsDraft LineStatusText = SelectedDocument.IsDraft
? "Черновик пуст. Добавьте приборы через контекстное меню таблицы групп." ? "Черновик пуст. Добавьте приборы через контекстное меню таблицы групп."
: "В документе нет групп приборов."; : "В документе нет групп приборов.";
@@ -2461,6 +2480,7 @@ namespace XLAB
if (SelectedDocumentGroup == null) if (SelectedDocumentGroup == null)
{ {
DetailTableCountText = "Приборов в таблице: 0.";
LineStatusText = string.Format("Групп: {0}. Выберите группу.", DocumentGroupSummaries.Count); LineStatusText = string.Format("Групп: {0}. Выберите группу.", DocumentGroupSummaries.Count);
return; return;
} }
@@ -2472,6 +2492,7 @@ namespace XLAB
&& (string.IsNullOrWhiteSpace(GroupDetailFilterText) || Contains(line.SerialNumber, GroupDetailFilterText)); && (string.IsNullOrWhiteSpace(GroupDetailFilterText) || Contains(line.SerialNumber, GroupDetailFilterText));
}); });
var pendingCount = DocumentLines.Count(delegate(PsvDocumentLine line) { return line.IsPendingInsert; }); var pendingCount = DocumentLines.Count(delegate(PsvDocumentLine line) { return line.IsPendingInsert; });
DetailTableCountText = string.Format("Приборов в таблице: {0}.", filteredCount);
LineStatusText = string.Format( LineStatusText = string.Format(
"Групп: {0}. Приборов в выбранной группе: {1}. Отображено по фильтру: {2}. Не сохранено строк: {3}.", "Групп: {0}. Приборов в выбранной группе: {1}. Отображено по фильтру: {2}. Не сохранено строк: {3}.",

View File

@@ -136,6 +136,21 @@ namespace XLAB
get { return AcceptedOn.HasValue ? AcceptedOn.Value.Date.AddDays(30) : (DateTime?)null; } get { return AcceptedOn.HasValue ? AcceptedOn.Value.Date.AddDays(30) : (DateTime?)null; }
} }
public string TimelineDisplay
{
get
{
if (IssuedOn.HasValue)
{
return string.Format("Выдача: {0:d}", IssuedOn.Value);
}
return DueOn.HasValue
? string.Format("Срок: {0:d}", DueOn.Value)
: string.Empty;
}
}
public bool IsOpenDocumentOverdue public bool IsOpenDocumentOverdue
{ {
get get
@@ -172,6 +187,7 @@ namespace XLAB
private void RaiseOpenDocumentTimelinePropertiesChanged() private void RaiseOpenDocumentTimelinePropertiesChanged()
{ {
OnPropertyChanged("DueOn"); OnPropertyChanged("DueOn");
OnPropertyChanged("TimelineDisplay");
OnPropertyChanged("IsOpenDocumentOverdue"); OnPropertyChanged("IsOpenDocumentOverdue");
OnPropertyChanged("IsOpenDocumentAtTwentyDays"); OnPropertyChanged("IsOpenDocumentAtTwentyDays");
OnPropertyChanged("IsOpenDocumentAtTenDays"); OnPropertyChanged("IsOpenDocumentAtTenDays");

View File

@@ -2,9 +2,9 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{Binding Title}" Title="{Binding Title}"
Height="620" Height="360"
Width="760" Width="760"
MinHeight="580" MinHeight="360"
MinWidth="700" MinWidth="700"
WindowStartupLocation="CenterOwner"> WindowStartupLocation="CenterOwner">
<Grid Margin="16"> <Grid Margin="16">
@@ -41,18 +41,6 @@
<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Тип СИ" /> <TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Тип СИ" />
<TextBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,8" Text="{Binding TypeName, UpdateSourceTrigger=PropertyChanged}" /> <TextBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,8" Text="{Binding TypeName, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="3" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Категория СИ" />
<ComboBox Grid.Row="3" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding Categories}" SelectedValue="{Binding CategoryId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" />
<TextBlock Grid.Row="4" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Конструктивное исполнение" />
<ComboBox Grid.Row="4" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding Designs}" SelectedValue="{Binding DesignId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" />
<TextBlock Grid.Row="5" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Срок службы, лет" />
<TextBox Grid.Row="5" Grid.Column="1" Margin="0,0,0,8" Text="{Binding ServiceLifeYearsText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="6" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="МПИ по Госреестру, мес." />
<TextBox Grid.Row="6" Grid.Column="1" Margin="0,0,0,8" Text="{Binding RegistryPeriodMonthsText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="7" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="№ по Госреестру" /> <TextBlock Grid.Row="7" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="№ по Госреестру" />
<TextBox Grid.Row="7" Grid.Column="1" Margin="0,0,0,8" Text="{Binding RegistryTypeNumber, UpdateSourceTrigger=PropertyChanged}" /> <TextBox Grid.Row="7" Grid.Column="1" Margin="0,0,0,8" Text="{Binding RegistryTypeNumber, UpdateSourceTrigger=PropertyChanged}" />
@@ -60,21 +48,12 @@
<TextBox Grid.Row="8" Grid.Column="1" Margin="0,0,0,8" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" TextWrapping="Wrap" Text="{Binding Notes, UpdateSourceTrigger=PropertyChanged}" /> <TextBox Grid.Row="8" Grid.Column="1" Margin="0,0,0,8" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" TextWrapping="Wrap" Text="{Binding Notes, UpdateSourceTrigger=PropertyChanged}" />
<StackPanel Grid.Row="9" Grid.ColumnSpan="2" Orientation="Horizontal"> <StackPanel Grid.Row="9" Grid.ColumnSpan="2" Orientation="Horizontal">
<StackPanel Width="360" Orientation="Horizontal"> <StackPanel Width="360" Orientation="Horizontal"/>
<TextBlock Width="220" VerticalAlignment="Center" Text="Код ВНИИМС" /> <StackPanel Width="220" Margin="12,0,0,0" Orientation="Horizontal"/>
<TextBox Width="120" Text="{Binding VniimsTypeCodeText, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<StackPanel Width="220" Margin="12,0,0,0" Orientation="Horizontal">
<TextBlock Width="90" VerticalAlignment="Center" Text="Код МК" />
<TextBox Width="120" Text="{Binding MetrControlCode, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
</StackPanel> </StackPanel>
</Grid> </Grid>
<StackPanel Grid.Row="1" Margin="0,12,0,0" Orientation="Horizontal"> <StackPanel Grid.Row="1" Margin="0,12,0,0" Orientation="Horizontal"/>
<CheckBox Margin="0,0,24,0" IsThreeState="True" IsChecked="{Binding IsSpecialPurpose}" Content="Специальное назначение" />
<CheckBox IsThreeState="True" IsChecked="{Binding IsMkPrimaryOnly}" Content="МК только первичный" />
</StackPanel>
<DockPanel Grid.Row="2" Margin="0,12,0,0"> <DockPanel Grid.Row="2" Margin="0,12,0,0">
<TextBlock DockPanel.Dock="Left" VerticalAlignment="Center" Foreground="Firebrick" Text="{Binding ValidationMessage}" /> <TextBlock DockPanel.Dock="Left" VerticalAlignment="Center" Foreground="Firebrick" Text="{Binding ValidationMessage}" />

View File

@@ -2,9 +2,9 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{Binding Title}" Title="{Binding Title}"
Height="320" Height="160"
Width="620" Width="620"
MinHeight="300" MinHeight="160"
MinWidth="580" MinWidth="580"
WindowStartupLocation="CenterOwner"> WindowStartupLocation="CenterOwner">
<Grid Margin="16"> <Grid Margin="16">
@@ -24,17 +24,8 @@
<RowDefinition Height="*" /> <RowDefinition Height="*" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Цикл МК" />
<ComboBox Grid.Row="0" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding CycleItems}" SelectedValue="{Binding CycleId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" />
<TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Группа СИ" />
<ComboBox Grid.Row="1" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding GroupItems}" SelectedValue="{Binding GroupId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" />
<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Период МК, мес." /> <TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Период МК, мес." />
<TextBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,8" Text="{Binding PeriodMonthsText, UpdateSourceTrigger=PropertyChanged}" /> <TextBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,8" Text="{Binding PeriodMonthsText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="3" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Top" Text="Комментарий" />
<TextBox Grid.Row="3" Grid.Column="1" Margin="0,0,0,8" AcceptsReturn="True" VerticalScrollBarVisibility="Auto" TextWrapping="Wrap" Text="{Binding Comment, UpdateSourceTrigger=PropertyChanged}" />
</Grid> </Grid>
<DockPanel Grid.Row="1" Margin="0,12,0,0"> <DockPanel Grid.Row="1" Margin="0,12,0,0">

View File

@@ -2,9 +2,9 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{Binding Title}" Title="{Binding Title}"
Height="620" Height="240"
Width="760" Width="760"
MinHeight="580" MinHeight="240"
MinWidth="700" MinWidth="700"
WindowStartupLocation="CenterOwner"> WindowStartupLocation="CenterOwner">
<Grid Margin="16"> <Grid Margin="16">
@@ -35,36 +35,11 @@
<TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Организация / подразделение" /> <TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Организация / подразделение" />
<ComboBox Grid.Row="1" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding Organizations}" SelectedValue="{Binding OrganizationId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" /> <ComboBox Grid.Row="1" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding Organizations}" SelectedValue="{Binding OrganizationId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" />
<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Квалификация" />
<ComboBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding Qualifications}" SelectedValue="{Binding QualificationId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" />
<TextBlock Grid.Row="3" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Группа СИ" />
<ComboBox Grid.Row="3" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding Groups}" SelectedValue="{Binding GroupId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" />
<TextBlock Grid.Row="4" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Место МК" /> <TextBlock Grid.Row="4" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Место МК" />
<ComboBox Grid.Row="4" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding Places}" SelectedValue="{Binding PlaceId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" /> <ComboBox Grid.Row="4" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding Places}" SelectedValue="{Binding PlaceId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" />
<StackPanel Grid.Row="5" Grid.Column="1" Orientation="Horizontal"/>
<TextBlock Grid.Row="5" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Стоимость / доп. / срочность" /> <StackPanel Grid.Row="6" Grid.Column="1" Orientation="Horizontal"/>
<StackPanel Grid.Row="5" Grid.Column="1" Orientation="Horizontal"> <StackPanel Grid.Row="7" Grid.Column="1" Orientation="Horizontal"/>
<TextBox Width="110" Margin="0,0,8,8" Text="{Binding CostText, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Width="110" Margin="0,0,8,8" Text="{Binding ExtraCostText, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Width="110" Margin="0,0,0,8" Text="{Binding RushMarkupText, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<TextBlock Grid.Row="6" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Норма времени / НД" />
<StackPanel Grid.Row="6" Grid.Column="1" Orientation="Horizontal">
<TextBox Width="110" Margin="0,0,8,8" Text="{Binding TimeNormHoursText, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Width="110" Margin="0,0,0,8" Text="{Binding NormDocHoursText, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<TextBlock Grid.Row="7" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Код нормы / код поверки" />
<StackPanel Grid.Row="7" Grid.Column="1" Orientation="Horizontal">
<TextBox Width="140" Margin="0,0,8,8" Text="{Binding TimeNormCode, UpdateSourceTrigger=PropertyChanged}" />
<TextBox Width="180" Margin="0,0,0,8" Text="{Binding VerificationCode, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<TextBlock Grid.Row="8" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Количество поверителей" />
<TextBox Grid.Row="8" Grid.Column="1" Margin="0,0,0,8" Text="{Binding VerifierCountText, UpdateSourceTrigger=PropertyChanged}" />
</Grid> </Grid>
<DockPanel Grid.Row="1" Margin="0,12,0,0"> <DockPanel Grid.Row="1" Margin="0,12,0,0">

View File

@@ -2,9 +2,9 @@
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="{Binding Title}" Title="{Binding Title}"
Height="340" Height="240"
Width="620" Width="620"
MinHeight="320" MinHeight="220"
MinWidth="580" MinWidth="580"
WindowStartupLocation="CenterOwner"> WindowStartupLocation="CenterOwner">
<Grid Margin="16"> <Grid Margin="16">
@@ -31,14 +31,8 @@
<TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Характеристика точности" /> <TextBlock Grid.Row="1" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Характеристика точности" />
<TextBox Grid.Row="1" Grid.Column="1" Margin="0,0,0,8" Text="{Binding AccuracyText, UpdateSourceTrigger=PropertyChanged}" /> <TextBox Grid.Row="1" Grid.Column="1" Margin="0,0,0,8" Text="{Binding AccuracyText, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="2" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Комплектность МК" />
<ComboBox Grid.Row="2" Grid.Column="1" Margin="0,0,0,8" ItemsSource="{Binding CompletenessItems}" SelectedValue="{Binding CompletenessId}" SelectedValuePath="Id" DisplayMemberPath="Name" IsTextSearchEnabled="True" />
<TextBlock Grid.Row="3" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="№ типоразмера по Госреестру" /> <TextBlock Grid.Row="3" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="№ типоразмера по Госреестру" />
<TextBox Grid.Row="3" Grid.Column="1" Margin="0,0,0,8" Text="{Binding RegistryTypeSizeNumber, UpdateSourceTrigger=PropertyChanged}" /> <TextBox Grid.Row="3" Grid.Column="1" Margin="0,0,0,8" Text="{Binding RegistryTypeSizeNumber, UpdateSourceTrigger=PropertyChanged}" />
<TextBlock Grid.Row="4" Grid.Column="0" Margin="0,0,12,8" VerticalAlignment="Center" Text="Служебный код" />
<TextBox Grid.Row="4" Grid.Column="1" Margin="0,0,0,8" Text="{Binding ServiceCode, UpdateSourceTrigger=PropertyChanged}" />
</Grid> </Grid>
<DockPanel Grid.Row="1" Margin="0,12,0,0"> <DockPanel Grid.Row="1" Margin="0,12,0,0">

View File

@@ -33,7 +33,7 @@
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<TextBlock Margin="0,0,8,0" <TextBlock Margin="0,0,8,0"
VerticalAlignment="Center" VerticalAlignment="Center"
Text="Поиск по TIPS и TPRZ:" /> Text="Поиск по типам и типоразмерам:" />
<TextBox Width="360" <TextBox Width="360"
VerticalAlignment="Center" VerticalAlignment="Center"
Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}" /> Text="{Binding SearchText, UpdateSourceTrigger=PropertyChanged}" />
@@ -47,7 +47,7 @@
</Grid> </Grid>
<GroupBox Grid.Row="1" <GroupBox Grid.Row="1"
Header="Типы СИ (TIPS)"> Header="Типы СИ">
<DataGrid ItemsSource="{Binding TipsItems}" <DataGrid ItemsSource="{Binding TipsItems}"
SelectedItem="{Binding SelectedTips, Mode=TwoWay}" SelectedItem="{Binding SelectedTips, Mode=TwoWay}"
AutoGenerateColumns="False" AutoGenerateColumns="False"
@@ -74,19 +74,16 @@
</Style> </Style>
</DataGrid.RowStyle> </DataGrid.RowStyle>
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="70" Binding="{Binding Id}" />
<DataGridTextColumn Header="Область измерений" Width="260" Binding="{Binding MeasurementAreaName}" /> <DataGridTextColumn Header="Область измерений" Width="260" Binding="{Binding MeasurementAreaName}" />
<DataGridTextColumn Header="Наименование типа СИ" Width="260" Binding="{Binding InstrumentName}" /> <DataGridTextColumn Header="Наименование типа СИ" Width="260" Binding="{Binding InstrumentName}" />
<DataGridTextColumn Header="Тип СИ" Width="*" Binding="{Binding TypeName}" /> <DataGridTextColumn Header="Тип СИ" Width="*" Binding="{Binding TypeName}" />
<DataGridTextColumn Header="Категория" Width="180" Binding="{Binding CategoryName}" />
<DataGridTextColumn Header="Исполнение" Width="160" Binding="{Binding DesignName}" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</GroupBox> </GroupBox>
<GroupBox Grid.Row="2" <GroupBox Grid.Row="2"
Margin="0,12,0,0" Margin="0,12,0,0"
Header="Типоразмеры СИ (TPRZ)"> Header="Типоразмеры СИ">
<DataGrid ItemsSource="{Binding TprzItems}" <DataGrid ItemsSource="{Binding TprzItems}"
SelectedItem="{Binding SelectedTprz, Mode=TwoWay}" SelectedItem="{Binding SelectedTprz, Mode=TwoWay}"
AutoGenerateColumns="False" AutoGenerateColumns="False"
@@ -107,10 +104,8 @@
</Style> </Style>
</DataGrid.RowStyle> </DataGrid.RowStyle>
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="70" Binding="{Binding Id}" />
<DataGridTextColumn Header="Диапазон" Width="*" Binding="{Binding RangeText}" /> <DataGridTextColumn Header="Диапазон" Width="*" Binding="{Binding RangeText}" />
<DataGridTextColumn Header="Х-ка точности" Width="260" Binding="{Binding AccuracyText}" /> <DataGridTextColumn Header="Х-ка точности" Width="260" Binding="{Binding AccuracyText}" />
<DataGridTextColumn Header="Комплектность МК" Width="220" Binding="{Binding CompletenessName}" />
<DataGridTextColumn Header="№ Госреестра" Width="130" Binding="{Binding RegistryTypeSizeNumber}" /> <DataGridTextColumn Header="№ Госреестра" Width="130" Binding="{Binding RegistryTypeSizeNumber}" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
@@ -125,7 +120,7 @@
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<GroupBox Grid.Column="0" <GroupBox Grid.Column="0"
Header="Регламент МК для типоразмера СИ (TPRMK)"> Header="Регламент МК для типоразмера СИ">
<DataGrid ItemsSource="{Binding TprmkItems}" <DataGrid ItemsSource="{Binding TprmkItems}"
SelectedItem="{Binding SelectedTprmk, Mode=TwoWay}" SelectedItem="{Binding SelectedTprmk, Mode=TwoWay}"
AutoGenerateColumns="False" AutoGenerateColumns="False"
@@ -146,18 +141,15 @@
</Style> </Style>
</DataGrid.RowStyle> </DataGrid.RowStyle>
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="70" Binding="{Binding Id}" />
<DataGridTextColumn Header="Вид МК" Width="130" Binding="{Binding VerificationTypeName}" /> <DataGridTextColumn Header="Вид МК" Width="130" Binding="{Binding VerificationTypeName}" />
<DataGridTextColumn Header="Организация" Width="*" Binding="{Binding OrganizationName}" /> <DataGridTextColumn Header="Организация" Width="*" Binding="{Binding OrganizationName}" />
<DataGridTextColumn Header="Место МК" Width="170" Binding="{Binding PlaceName}" /> <DataGridTextColumn Header="Место МК" Width="170" Binding="{Binding PlaceName}" />
<DataGridTextColumn Header="Группа СИ" Width="220" Binding="{Binding GroupName}" />
<DataGridTextColumn Header="Кол-во повер." Width="110" Binding="{Binding VerifierCount}" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</GroupBox> </GroupBox>
<GroupBox Grid.Column="2" <GroupBox Grid.Column="2"
Header="Циклы и периоды МК (TPRMCP)"> Header="Циклы и периоды МК">
<DataGrid ItemsSource="{Binding TprmcpItems}" <DataGrid ItemsSource="{Binding TprmcpItems}"
SelectedItem="{Binding SelectedTprmcp, Mode=TwoWay}" SelectedItem="{Binding SelectedTprmcp, Mode=TwoWay}"
AutoGenerateColumns="False" AutoGenerateColumns="False"
@@ -178,10 +170,7 @@
</Style> </Style>
</DataGrid.RowStyle> </DataGrid.RowStyle>
<DataGrid.Columns> <DataGrid.Columns>
<DataGridTextColumn Header="ID" Width="70" Binding="{Binding Id}" /> <DataGridTextColumn Header="Период, мес." Width="*" Binding="{Binding PeriodMonths}" />
<DataGridTextColumn Header="Цикл МК" Width="180" Binding="{Binding CycleName}" />
<DataGridTextColumn Header="Группа СИ" Width="*" Binding="{Binding GroupName}" />
<DataGridTextColumn Header="Период, мес." Width="110" Binding="{Binding PeriodMonths}" />
</DataGrid.Columns> </DataGrid.Columns>
</DataGrid> </DataGrid>
</GroupBox> </GroupBox>

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB