- Прайс-лист: 2 колонки — каталог + «Мой заказ» (состав/кол-во/итог/ грузополучатель/комментарий) + «Сохранить заказ» - Сохранить -> локальный черновик (DraftStore, %APPDATA%) - Заказы: черновики вверху «Не отправлен» + «Отправить заказ»/«Удалить» - как в WinForms: собрал -> сохранил (не отправлен) -> отправил отдельно Проверено вживую: сборка, сохранение, черновик в Заказах. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
84 lines
5.6 KiB
XML
84 lines
5.6 KiB
XML
<UserControl xmlns="https://github.com/avaloniaui"
|
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
|
xmlns:vm="using:Elfisa.Avalonia.ViewModels"
|
|
xmlns:conv="using:Avalonia.Data.Converters"
|
|
x:Class="Elfisa.Avalonia.Views.OrdersView"
|
|
x:DataType="vm:OrdersViewModel">
|
|
|
|
<Grid Margin="24" RowDefinitions="Auto,*">
|
|
<StackPanel Grid.Row="0" Spacing="2" Margin="0,0,0,14">
|
|
<TextBlock Text="Заказы" Classes="h1"/>
|
|
<TextBlock Text="История заказов и их состав" Classes="muted"/>
|
|
</StackPanel>
|
|
|
|
<Grid Grid.Row="1" ColumnDefinitions="*,16,430">
|
|
|
|
<!-- Список заказов -->
|
|
<Border Grid.Column="0" Classes="card" Padding="0" ClipToBounds="True">
|
|
<DataGrid ItemsSource="{Binding Orders}" SelectedItem="{Binding SelectedOrder}"
|
|
x:CompileBindings="False"
|
|
AutoGenerateColumns="False" IsReadOnly="True" HeadersVisibility="Column"
|
|
CanUserResizeColumns="True" CanUserSortColumns="False">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Дата" Width="112" Binding="{Binding Date}"/>
|
|
<DataGridTextColumn Header="Номер" Width="140" Binding="{Binding Number}"/>
|
|
<DataGridTextColumn Header="Поставщик" Width="*" Binding="{Binding Supplier}"/>
|
|
<DataGridTextColumn Header="Позиций" Width="90" Binding="{Binding ItemsCount}" CellStyleClasses="num"/>
|
|
<DataGridTextColumn Header="Сумма" Width="132" Binding="{Binding Sum, StringFormat='{}{0:N2}'}" CellStyleClasses="num"/>
|
|
<DataGridTextColumn Header="Статус" Width="95" Binding="{Binding Status}"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</Border>
|
|
|
|
<!-- Карточка заказа -->
|
|
<Border Grid.Column="2" Classes="card" Padding="18">
|
|
<DockPanel>
|
|
<StackPanel DockPanel.Dock="Top" Spacing="4" Margin="0,0,0,14">
|
|
<TextBlock Text="{Binding SelectedOrder.Number}" Classes="h2"/>
|
|
<StackPanel Orientation="Horizontal" Spacing="10">
|
|
<TextBlock Text="{Binding SelectedOrder.Date}" Classes="muted"/>
|
|
<TextBlock Text="{Binding SelectedOrder.Status}" Classes="muted"/>
|
|
</StackPanel>
|
|
<TextBlock Text="{Binding SelectedOrder.Supplier}" Classes="muted" TextWrapping="Wrap"/>
|
|
<TextBlock Text="{Binding SelectedOrder.Location}" Classes="muted" TextWrapping="Wrap"/>
|
|
</StackPanel>
|
|
|
|
<StackPanel DockPanel.Dock="Bottom" Spacing="10" Margin="0,12,0,0">
|
|
<Border Padding="0,10,0,0" BorderThickness="0,1,0,0" BorderBrush="{DynamicResource Border}">
|
|
<Grid ColumnDefinitions="*,Auto">
|
|
<TextBlock Grid.Column="0" Text="Итого" FontWeight="SemiBold" Foreground="{DynamicResource Text}"/>
|
|
<TextBlock Grid.Column="1" Text="{Binding SelectedOrder.Sum, StringFormat='{}{0:N2}'}"
|
|
FontWeight="SemiBold" Foreground="{DynamicResource Accent}"/>
|
|
</Grid>
|
|
</Border>
|
|
<!-- Действия для черновика (не отправленного заказа) -->
|
|
<StackPanel Orientation="Horizontal" Spacing="10" IsVisible="{Binding SelectedOrder.IsDraft, FallbackValue=False}">
|
|
<Button Classes="primary" Content="Отправить заказ" Command="{Binding SendDraftCommand}" IsEnabled="{Binding !Busy}"/>
|
|
<Button Content="Удалить" Command="{Binding DeleteDraftCommand}"
|
|
Background="Transparent" Foreground="{DynamicResource Muted}"
|
|
BorderBrush="{DynamicResource Border}" BorderThickness="1" CornerRadius="8" Padding="16,9" Cursor="Hand"/>
|
|
</StackPanel>
|
|
</StackPanel>
|
|
|
|
<DataGrid ItemsSource="{Binding SelectedOrder.Items}" x:CompileBindings="False"
|
|
AutoGenerateColumns="False" IsReadOnly="True" HeadersVisibility="Column"
|
|
CanUserResizeColumns="True" CanUserSortColumns="False">
|
|
<DataGrid.Columns>
|
|
<DataGridTextColumn Header="Товар" Width="*" Binding="{Binding Name}"/>
|
|
<DataGridTextColumn Header="Кол-во" Width="78" Binding="{Binding Qty, StringFormat='{}{0:N0}'}" CellStyleClasses="num"/>
|
|
<DataGridTextColumn Header="Сумма" Width="110" Binding="{Binding Sum, StringFormat='{}{0:N2}'}" CellStyleClasses="num"/>
|
|
</DataGrid.Columns>
|
|
</DataGrid>
|
|
</DockPanel>
|
|
</Border>
|
|
</Grid>
|
|
|
|
<!-- Статус -->
|
|
<Border Grid.Row="1" VerticalAlignment="Bottom" HorizontalAlignment="Left" Margin="4"
|
|
Padding="10,7" CornerRadius="6" Background="{DynamicResource AccentSoft}"
|
|
IsVisible="{Binding Status, Converter={x:Static conv:ObjectConverters.IsNotNull}}">
|
|
<TextBlock Text="{Binding Status}" Foreground="{DynamicResource AccentPressed}" FontSize="12.5"/>
|
|
</Border>
|
|
</Grid>
|
|
</UserControl>
|