@@ -60,7 +60,7 @@ namespace BPASmartClient.Business | |||||
var MqttServerConfig = Plugin.GetInstance().GetPlugin<ConfigMgr>().MQTT_Config; | var MqttServerConfig = Plugin.GetInstance().GetPlugin<ConfigMgr>().MQTT_Config; | ||||
var MqttServerAccount = Plugin.GetInstance().GetPlugin<ConfigMgr>().Mqtt_Account; | var MqttServerAccount = Plugin.GetInstance().GetPlugin<ConfigMgr>().Mqtt_Account; | ||||
//MQTT 初始化 | //MQTT 初始化 | ||||
mqttProxy.Connect(MqttServerAccount.UserName, MqttServerAccount.Password, MqttServerConfig.Host, MqttServerConfig.Port, Guid.NewGuid().ToString()); | |||||
mqttProxy.Connect(MqttServerAccount.UserName, MqttServerAccount.Password, MqttServerConfig.Host, MqttServerConfig.Port, "qsqd--morks--"+ Guid.NewGuid().ToString()); | |||||
ThreadManage.GetInstance().Start(() => | ThreadManage.GetInstance().Start(() => | ||||
{ | { | ||||
@@ -1,6 +1,8 @@ | |||||
using BPASmartClient.CustomResource.Pages.Enums; | using BPASmartClient.CustomResource.Pages.Enums; | ||||
using BPASmartClient.Model; | |||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
using System.Collections.ObjectModel; | |||||
using System.Linq; | using System.Linq; | ||||
using System.Text; | using System.Text; | ||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
@@ -13,6 +15,10 @@ namespace BPASmartClient.CustomResource.Pages.Model | |||||
public static UserInfo userInfo { get; set; } = new UserInfo(); | public static UserInfo userInfo { get; set; } = new UserInfo(); | ||||
/// <summary> | /// <summary> | ||||
/// 设备原料集合 | |||||
/// </summary> | |||||
public static ObservableCollection<RawMaterialModel> DeviceRawMaterials { get; set; } = new ObservableCollection<RawMaterialModel>(); | |||||
/// <summary> | |||||
/// 重置密码页面传值 | /// 重置密码页面传值 | ||||
/// </summary> | /// </summary> | ||||
public static UserInfo changeUserInfo { get; set; } = null; | public static UserInfo changeUserInfo { get; set; } = null; | ||||
@@ -0,0 +1,15 @@ | |||||
using BPASmartClient.Model; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Collections.ObjectModel; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.CustomResource.Pages.Model | |||||
{ | |||||
public class LocaMaterial | |||||
{ | |||||
public ObservableCollection<RawMaterialModel> LocalMaterails { get; set; } = new ObservableCollection<RawMaterialModel>(); | |||||
} | |||||
} |
@@ -0,0 +1,17 @@ | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.CustomResource.Pages.Model | |||||
{ | |||||
public class MaterailConfig | |||||
{ | |||||
public string MaterialName { get; set; } | |||||
public string MaterialId { get; set; } | |||||
public string DeviceAddress { get; set; } | |||||
} | |||||
} |
@@ -1,4 +1,5 @@ | |||||
using BPASmartClient.CustomResource.Pages.Enums; | using BPASmartClient.CustomResource.Pages.Enums; | ||||
using BPASmartClient.Model; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | using Microsoft.Toolkit.Mvvm.ComponentModel; | ||||
using System; | using System; | ||||
using System.Collections.Generic; | using System.Collections.Generic; | ||||
@@ -11,16 +12,29 @@ namespace BPASmartClient.CustomResource.Pages.Model | |||||
public class UserInfo:ObservableObject | public class UserInfo:ObservableObject | ||||
{ | { | ||||
public String LastLogInTime { get; set; } = "无"; | public String LastLogInTime { get; set; } = "无"; | ||||
public List<UserTreeViewModel> userTreeViewModels { get; set; } | public List<UserTreeViewModel> userTreeViewModels { get; set; } | ||||
public string Id { get { return _id; }set { _id = value;OnPropertyChanged(); } } | public string Id { get { return _id; }set { _id = value;OnPropertyChanged(); } } | ||||
private string _id; | private string _id; | ||||
public Permission permission { get { return _perimission; } set { _perimission = value;OnPropertyChanged(); } } | public Permission permission { get { return _perimission; } set { _perimission = value;OnPropertyChanged(); } } | ||||
private Permission _perimission; | private Permission _perimission; | ||||
public string UserName { get { return _userName; } set { _userName = value;OnPropertyChanged(); } } | public string UserName { get { return _userName; } set { _userName = value;OnPropertyChanged(); } } | ||||
private string _userName; | private string _userName; | ||||
public string Password { get { return _password; } set { _password = value;OnPropertyChanged(); } } | public string Password { get { return _password; } set { _password = value;OnPropertyChanged(); } } | ||||
private string _password; | private string _password; | ||||
public List<string> CardId { get; set; } = new List<string>(); | public List<string> CardId { get; set; } = new List<string>(); | ||||
public List<RawMaterialModel> locaRawMaterials { get; set; } = new List<RawMaterialModel>(); | |||||
public List<RawMaterialModel> devRawMaterials { get; set; } = new List<RawMaterialModel>(); | |||||
} | } | ||||
} | } |
@@ -224,6 +224,131 @@ | |||||
</Setter> | </Setter> | ||||
</Style> | </Style> | ||||
<!--切换button--> | |||||
<Style x:Key="changebutton_local" TargetType="Button"> | |||||
<Setter Property="Height" Value="32"/> | |||||
<Setter Property="Width" Value="130"/> | |||||
<Setter Property="FontSize" Value="18"/> | |||||
<Setter Property="Foreground" Value="White"/> | |||||
<Setter Property="Template"> | |||||
<Setter.Value> | |||||
<ControlTemplate TargetType="Button" > | |||||
<Border x:Name="border" BorderThickness="0" BorderBrush="White" SnapsToDevicePixels="True"> | |||||
<Border.Background> | |||||
<DrawingBrush> | |||||
<DrawingBrush.Drawing> | |||||
<GeometryDrawing Brush="#009DFF"> | |||||
<GeometryDrawing.Pen> | |||||
<Pen x:Name="pen" Thickness="3" Brush="{TemplateBinding BorderBrush }" ></Pen> | |||||
</GeometryDrawing.Pen> | |||||
<GeometryDrawing.Geometry > | |||||
<PathGeometry Figures="m-70 -80 L200 -80 L200 80 L70 80 L-70 80 A 10,10 0 0 1 -80,70 L-80 70 L-80 -70 A 10,10 0 0 1 -70,-80"></PathGeometry> | |||||
</GeometryDrawing.Geometry> | |||||
</GeometryDrawing> | |||||
</DrawingBrush.Drawing> | |||||
</DrawingBrush> | |||||
</Border.Background> | |||||
<TextBlock Text="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,5,0,0" /> | |||||
</Border> | |||||
<ControlTemplate.Triggers> | |||||
<Trigger Property="IsMouseOver" Value="True"> | |||||
</Trigger> | |||||
<DataTrigger Binding="{Binding IsChecked}" Value="true"> | |||||
<Setter Property="Height" Value="43"/> | |||||
<Setter Property="Width" Value="133"/> | |||||
<Setter Property="Effect"> | |||||
<Setter.Value> | |||||
<DropShadowEffect Color="Black" Direction="220" ShadowDepth="15" Opacity="1"/> | |||||
</Setter.Value> | |||||
</Setter> | |||||
<Setter TargetName="border" Property="Background" > | |||||
<Setter.Value> | |||||
<DrawingBrush> | |||||
<DrawingBrush.Drawing> | |||||
<GeometryDrawing Brush="#009DFF"> | |||||
<GeometryDrawing.Pen> | |||||
<Pen Thickness="5" Brush="White" ></Pen> | |||||
</GeometryDrawing.Pen> | |||||
<GeometryDrawing.Geometry > | |||||
<PathGeometry Figures="m-70 -80 L200 -80 L200 80 L200 80 L50 80 L60 130 L70 80 L-70 80 A 10,10 0 0 1 -80,70 L-80 70 L-80 -70 A 10,10 0 0 1 -70,-80"></PathGeometry> | |||||
</GeometryDrawing.Geometry> | |||||
</GeometryDrawing> | |||||
</DrawingBrush.Drawing> | |||||
</DrawingBrush> | |||||
</Setter.Value> | |||||
</Setter> | |||||
</DataTrigger> | |||||
</ControlTemplate.Triggers> | |||||
</ControlTemplate> | |||||
</Setter.Value> | |||||
</Setter> | |||||
<Style.Triggers> | |||||
</Style.Triggers> | |||||
</Style> | |||||
<Style x:Key="changebutton_device" TargetType="Button"> | |||||
<Setter Property="Height" Value="32"/> | |||||
<Setter Property="Width" Value="130"/> | |||||
<Setter Property="FontSize" Value="18"/> | |||||
<Setter Property="Foreground" Value="White"/> | |||||
<Setter Property="Template"> | |||||
<Setter.Value> | |||||
<ControlTemplate TargetType="Button" > | |||||
<Border x:Name="border" BorderThickness="0" BorderBrush="White" SnapsToDevicePixels="True"> | |||||
<Border.Background> | |||||
<DrawingBrush> | |||||
<DrawingBrush.Drawing> | |||||
<GeometryDrawing Brush="#009DFF"> | |||||
<GeometryDrawing.Pen> | |||||
<Pen x:Name="pen" Thickness="3" Brush="{TemplateBinding BorderBrush }" ></Pen> | |||||
</GeometryDrawing.Pen> | |||||
<GeometryDrawing.Geometry > | |||||
<PathGeometry Figures="m-70 -80 L200 -80 L200 80 L70 80 L-70 80 A 10,10 0 0 1 -80,70 L-80 70 L-80 -70 A 10,10 0 0 1 -70,-80"></PathGeometry> | |||||
</GeometryDrawing.Geometry> | |||||
</GeometryDrawing> | |||||
</DrawingBrush.Drawing> | |||||
</DrawingBrush> | |||||
</Border.Background> | |||||
<TextBlock Text="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" VerticalAlignment="Top" HorizontalAlignment="Center" Margin="0,5,0,0" /> | |||||
</Border> | |||||
<ControlTemplate.Triggers> | |||||
<Trigger Property="IsMouseOver" Value="True"> | |||||
</Trigger> | |||||
<DataTrigger Binding="{Binding IsChecked}" Value="false"> | |||||
<Setter Property="Height" Value="43"/> | |||||
<Setter Property="Width" Value="133"/> | |||||
<Setter Property="Effect"> | |||||
<Setter.Value> | |||||
<DropShadowEffect Color="Black" Direction="220" ShadowDepth="15" Opacity="1"/> | |||||
</Setter.Value> | |||||
</Setter> | |||||
<Setter TargetName="border" Property="Background" > | |||||
<Setter.Value> | |||||
<DrawingBrush> | |||||
<DrawingBrush.Drawing> | |||||
<GeometryDrawing Brush="#009DFF"> | |||||
<GeometryDrawing.Pen> | |||||
<Pen Thickness="5" Brush="White" ></Pen> | |||||
</GeometryDrawing.Pen> | |||||
<GeometryDrawing.Geometry > | |||||
<PathGeometry Figures="m-70 -80 L200 -80 L200 80 L200 80 L50 80 L60 130 L70 80 L-70 80 A 10,10 0 0 1 -80,70 L-80 70 L-80 -70 A 10,10 0 0 1 -70,-80"></PathGeometry> | |||||
</GeometryDrawing.Geometry> | |||||
</GeometryDrawing> | |||||
</DrawingBrush.Drawing> | |||||
</DrawingBrush> | |||||
</Setter.Value> | |||||
</Setter> | |||||
</DataTrigger> | |||||
</ControlTemplate.Triggers> | |||||
</ControlTemplate> | |||||
</Setter.Value> | |||||
</Setter> | |||||
</Style> | |||||
@@ -243,13 +368,13 @@ | |||||
<Image Source="../../Image/权限背景.png" Stretch="Fill"/> | <Image Source="../../Image/权限背景.png" Stretch="Fill"/> | ||||
<Grid Background="Transparent"> | <Grid Background="Transparent"> | ||||
<Grid.RowDefinitions> | <Grid.RowDefinitions> | ||||
<RowDefinition Height="80"/> | |||||
<RowDefinition Height="50"/> | |||||
<RowDefinition Height="*"/> | |||||
<RowDefinition Height="50"/> | |||||
<RowDefinition Height="*"/> | |||||
<RowDefinition Height="60"/> | |||||
<RowDefinition Height="40"/> | |||||
<RowDefinition Height="10*"/> | |||||
<RowDefinition Height="40"/> | |||||
<RowDefinition Height="13*"/> | |||||
<RowDefinition Height="50"/> | <RowDefinition Height="50"/> | ||||
<RowDefinition Height="10"/> | |||||
<RowDefinition Height="5"/> | |||||
</Grid.RowDefinitions> | </Grid.RowDefinitions> | ||||
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> | <StackPanel Orientation="Horizontal" HorizontalAlignment="Center" VerticalAlignment="Center"> | ||||
<TextBlock Text="{Binding UserName}" HorizontalAlignment="Center" | <TextBlock Text="{Binding UserName}" HorizontalAlignment="Center" | ||||
@@ -262,7 +387,7 @@ | |||||
</StackPanel> | </StackPanel> | ||||
<TextBlock Grid.Row="1" | <TextBlock Grid.Row="1" | ||||
Text="页面权限分配" Margin="10,0,0,0" | Text="页面权限分配" Margin="10,0,0,0" | ||||
HorizontalAlignment="Center" VerticalAlignment="Center" | |||||
HorizontalAlignment="Center" VerticalAlignment="Top" | |||||
FontSize="20" | FontSize="20" | ||||
Foreground="#ddd"/> | Foreground="#ddd"/> | ||||
<TextBlock Grid.Row="3" | <TextBlock Grid.Row="3" | ||||
@@ -281,23 +406,25 @@ | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<TextBlock Text="权限列表" Width="20" | <TextBlock Text="权限列表" Width="20" | ||||
TextWrapping="Wrap" Grid.Column="0" | TextWrapping="Wrap" Grid.Column="0" | ||||
HorizontalAlignment="Right" VerticalAlignment="Center" | |||||
HorizontalAlignment="Center" VerticalAlignment="Center" | |||||
FontSize="20" | FontSize="20" | ||||
Foreground="#ddd"/> | Foreground="#ddd"/> | ||||
<TextBlock Text="当前用户权限" Width="20" | <TextBlock Text="当前用户权限" Width="20" | ||||
Grid.Column="4" | Grid.Column="4" | ||||
TextWrapping="Wrap" | TextWrapping="Wrap" | ||||
HorizontalAlignment="Left" VerticalAlignment="Center" | |||||
HorizontalAlignment="Center" VerticalAlignment="Center" | |||||
FontSize="20" | FontSize="20" | ||||
Foreground="#ddd"/> | Foreground="#ddd"/> | ||||
<!--#region 页面权限--> | <!--#region 页面权限--> | ||||
<ScrollViewer Grid.Column="1" Margin="20,0,0,0" Template="{StaticResource ScrollViewerControlTemplate1}" CanContentScroll="True"> | |||||
<Border Grid.Column="1" BorderBrush="#1874CD" BorderThickness="1" /> | |||||
<Border Grid.Column="3" BorderBrush="#1874CD" BorderThickness="1" /> | |||||
<ScrollViewer Grid.Column="1" Margin="20,5,5,5" Template="{StaticResource ScrollViewerControlTemplate1}" CanContentScroll="True" > | |||||
<TreeView x:Name="MyTreeView" ItemsSource="{Binding pageTreeViewModels}" | <TreeView x:Name="MyTreeView" ItemsSource="{Binding pageTreeViewModels}" | ||||
ScrollViewer.VerticalScrollBarVisibility="Disabled" HorizontalAlignment="Stretch" Background="Transparent" BorderBrush="Transparent"></TreeView> | ScrollViewer.VerticalScrollBarVisibility="Disabled" HorizontalAlignment="Stretch" Background="Transparent" BorderBrush="Transparent"></TreeView> | ||||
</ScrollViewer> | </ScrollViewer> | ||||
<ScrollViewer Grid.Column="3" Margin="10,0,20,0" Template="{StaticResource ScrollViewerControlTemplate1}" CanContentScroll="True"> | |||||
<ScrollViewer Grid.Column="3" Margin="10,0,10,0" Template="{StaticResource ScrollViewerControlTemplate1}" CanContentScroll="True"> | |||||
<ListBox x:Name="RightListBox" Grid.Column="3" Background="Transparent" ItemContainerStyle="{StaticResource ItemContainer}" FocusVisualStyle="{x:Null}" | <ListBox x:Name="RightListBox" Grid.Column="3" Background="Transparent" ItemContainerStyle="{StaticResource ItemContainer}" FocusVisualStyle="{x:Null}" | ||||
ItemsSource="{Binding SelectePage}" > | ItemsSource="{Binding SelectePage}" > | ||||
<ListBox.Template> | <ListBox.Template> | ||||
@@ -343,18 +470,18 @@ | |||||
<StackPanel Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"> | <StackPanel Grid.Column="2" HorizontalAlignment="Center" VerticalAlignment="Center"> | ||||
<Button Foreground="White" Background="#009DFF" | <Button Foreground="White" Background="#009DFF" | ||||
FontSize="16" Height="50" Width="70" Margin="10,20" | FontSize="16" Height="50" Width="70" Margin="10,20" | ||||
Command="{Binding AddAllPageCommand}"> | |||||
Command="{Binding AddAllCommand}" CommandParameter="page"> | |||||
<TextBlock Text="全部 | <TextBlock Text="全部 | ||||
添加" TextWrapping="Wrap"/> | 添加" TextWrapping="Wrap"/> | ||||
</Button> | </Button> | ||||
<Button Foreground="White" Background="#009DFF" | <Button Foreground="White" Background="#009DFF" | ||||
FontSize="16" Height="50" Width="70" Margin="10,20" | FontSize="16" Height="50" Width="70" Margin="10,20" | ||||
Command="{Binding DeleteAllPageCommand}"> | |||||
Command="{Binding DeleteAllCommand}" CommandParameter="page"> | |||||
<TextBlock Text="全部 | <TextBlock Text="全部 | ||||
移除" TextWrapping="Wrap"/> | 移除" TextWrapping="Wrap"/> | ||||
</Button> | </Button> | ||||
</StackPanel> | </StackPanel> | ||||
<!--#endregion--> | <!--#endregion--> | ||||
</Grid> | </Grid> | ||||
@@ -366,17 +493,271 @@ | |||||
<ColumnDefinition Width="*"/> | <ColumnDefinition Width="*"/> | ||||
<ColumnDefinition Width="50"/> | <ColumnDefinition Width="50"/> | ||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<TextBlock Text="当前用户权限" Width="20" | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="60"/> | |||||
<RowDefinition Height="*"/> | |||||
</Grid.RowDefinitions> | |||||
<TextBlock Text="权限列表" Width="20" | |||||
Grid.Row="1" | |||||
TextWrapping="Wrap" | TextWrapping="Wrap" | ||||
HorizontalAlignment="Center" VerticalAlignment="Center" | HorizontalAlignment="Center" VerticalAlignment="Center" | ||||
FontSize="20" | FontSize="20" | ||||
Foreground="#ddd"/> | Foreground="#ddd"/> | ||||
<TextBlock Text="权限列表" Width="20" | |||||
<TextBlock Text="当前用户权限" Width="20" | |||||
Grid.Row="1" | |||||
Grid.Column="4" | Grid.Column="4" | ||||
TextWrapping="Wrap" | TextWrapping="Wrap" | ||||
HorizontalAlignment="Center" VerticalAlignment="Center" | HorizontalAlignment="Center" VerticalAlignment="Center" | ||||
FontSize="20" | FontSize="20" | ||||
Foreground="#ddd"/> | Foreground="#ddd"/> | ||||
<Button Content="本地原料" Grid.Column="1" Style="{DynamicResource changebutton_local}" HorizontalAlignment="Right" | |||||
Command="{Binding ChangeMaterailPageCommand}" CommandParameter="Local"/> | |||||
<Button Content="设备原料" Grid.Column="3" Style="{DynamicResource changebutton_device}" HorizontalAlignment="Left" | |||||
Command="{Binding ChangeMaterailPageCommand}" CommandParameter="Device"/> | |||||
<!--#region 本地原料权限--> | |||||
<Border Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" BorderBrush="#1874CD" BorderThickness="1" | |||||
Visibility="{Binding VisibilityLocal}"> | |||||
<Grid Margin="5"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="*"/> | |||||
<ColumnDefinition Width="100"/> | |||||
<ColumnDefinition Width="*"/> | |||||
</Grid.ColumnDefinitions> | |||||
<Border Grid.Column="0" BorderBrush="#1874CD" BorderThickness="1" /> | |||||
<Border Grid.Column="2" BorderBrush="#1874CD" BorderThickness="1" /> | |||||
<ScrollViewer Width="230" Margin="20,5,5,5" Template="{StaticResource ScrollViewerControlTemplate1}" CanContentScroll="True" HorizontalAlignment="Right" > | |||||
<ListBox Background="Transparent" ItemContainerStyle="{StaticResource ItemContainer}" FocusVisualStyle="{x:Null}" | |||||
ItemsSource="{Binding LoaclMaterails}" > | |||||
<ListBox.Template> | |||||
<ControlTemplate> | |||||
<StackPanel Background="Transparent" IsItemsHost="True"></StackPanel> | |||||
</ControlTemplate> | |||||
</ListBox.Template> | |||||
<ListBox.ItemTemplate> | |||||
<DataTemplate> | |||||
<Grid Height="28" Margin="5"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="*"></ColumnDefinition> | |||||
<ColumnDefinition Width="60"></ColumnDefinition> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBlock x:Name="tb_Name" Text="{Binding RawMaterialName}" Foreground="White" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" /> | |||||
<Button x:Name="BtnDelete" Grid.Column="1" Background="Transparent" ToolTip="移除" VerticalAlignment="Center" HorizontalAlignment="Left" | |||||
Command="{Binding DataContext.AddLoaclMaterialCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}}" | |||||
CommandParameter="{Binding Path=Text,ElementName=tb_Name}"> | |||||
<Button.Template> | |||||
<ControlTemplate TargetType="Button"> | |||||
<Grid> | |||||
<Rectangle x:Name="BtnRetangle" Height="17" Width="17" Stroke="Transparent" StrokeThickness="1" VerticalAlignment="Center" HorizontalAlignment="Left"> | |||||
<Rectangle.Fill> | |||||
<ImageBrush ImageSource="../../Image/按钮/AddGreen.png"></ImageBrush> | |||||
</Rectangle.Fill> | |||||
</Rectangle> | |||||
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Content="{TemplateBinding Content}"></ContentPresenter> | |||||
</Grid> | |||||
<ControlTemplate.Triggers> | |||||
<Trigger Property="IsMouseOver" Value="True"> | |||||
<Setter TargetName="BtnRetangle" Property="Height" Value="19"></Setter> | |||||
<Setter TargetName="BtnRetangle" Property="Width" Value="19"></Setter> | |||||
</Trigger> | |||||
</ControlTemplate.Triggers> | |||||
</ControlTemplate> | |||||
</Button.Template> | |||||
</Button> | |||||
</Grid> | |||||
</DataTemplate> | |||||
</ListBox.ItemTemplate> | |||||
</ListBox> | |||||
</ScrollViewer> | |||||
<ScrollViewer Grid.Column="2" Margin="10,0,10,0" Template="{StaticResource ScrollViewerControlTemplate1}" CanContentScroll="True"> | |||||
<ListBox Background="Transparent" ItemContainerStyle="{StaticResource ItemContainer}" FocusVisualStyle="{x:Null}" | |||||
Width="230" | |||||
ItemsSource="{Binding UserLoaclMaterails}" > | |||||
<ListBox.Template> | |||||
<ControlTemplate> | |||||
<StackPanel Background="Transparent" IsItemsHost="True"></StackPanel> | |||||
</ControlTemplate> | |||||
</ListBox.Template> | |||||
<ListBox.ItemTemplate> | |||||
<DataTemplate> | |||||
<Grid Height="28" Margin="5"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="*"></ColumnDefinition> | |||||
<ColumnDefinition Width="60"></ColumnDefinition> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBlock x:Name="tb_Name" Text="{Binding RawMaterialName}" Foreground="White" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" /> | |||||
<Button x:Name="BtnDelete" Grid.Column="1" Background="Transparent" ToolTip="移除" VerticalAlignment="Center" HorizontalAlignment="Left" | |||||
Command="{Binding DataContext.DeleteLoaclMaterialCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}}" | |||||
CommandParameter="{Binding Path=Text,ElementName=tb_Name}"> | |||||
<Button.Template> | |||||
<ControlTemplate TargetType="Button"> | |||||
<Grid> | |||||
<Rectangle x:Name="BtnRetangle" Height="17" Width="17" Stroke="Transparent" StrokeThickness="1" VerticalAlignment="Center" HorizontalAlignment="Left"> | |||||
<Rectangle.Fill> | |||||
<ImageBrush ImageSource="../../Image/按钮/Delete.png"></ImageBrush> | |||||
</Rectangle.Fill> | |||||
</Rectangle> | |||||
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Content="{TemplateBinding Content}"></ContentPresenter> | |||||
</Grid> | |||||
<ControlTemplate.Triggers> | |||||
<Trigger Property="IsMouseOver" Value="True"> | |||||
<Setter TargetName="BtnRetangle" Property="Height" Value="19"></Setter> | |||||
<Setter TargetName="BtnRetangle" Property="Width" Value="19"></Setter> | |||||
</Trigger> | |||||
</ControlTemplate.Triggers> | |||||
</ControlTemplate> | |||||
</Button.Template> | |||||
</Button> | |||||
</Grid> | |||||
</DataTemplate> | |||||
</ListBox.ItemTemplate> | |||||
</ListBox> | |||||
</ScrollViewer> | |||||
<StackPanel Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<Button Foreground="White" Background="#009DFF" | |||||
FontSize="16" Height="50" Width="70" Margin="10,20" | |||||
Command="{Binding AddAllCommand}" CommandParameter="local"> | |||||
<TextBlock Text="全部 | |||||
添加" TextWrapping="Wrap"/> | |||||
</Button> | |||||
<Button Foreground="White" Background="#009DFF" | |||||
FontSize="16" Height="50" Width="70" Margin="10,20" | |||||
Command="{Binding DeleteAllCommand}" CommandParameter="local"> | |||||
<TextBlock Text="全部 | |||||
移除" TextWrapping="Wrap"/> | |||||
</Button> | |||||
</StackPanel> | |||||
</Grid> | |||||
</Border> | |||||
<!--#endregion--> | |||||
<!--#region 设备原料权限--> | |||||
<Border Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" BorderBrush="#1874CD" BorderThickness="1" | |||||
Visibility="{Binding VisibilityDevice}"> | |||||
<Grid Margin="5"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="*"/> | |||||
<ColumnDefinition Width="100"/> | |||||
<ColumnDefinition Width="*"/> | |||||
</Grid.ColumnDefinitions> | |||||
<Border Grid.Column="0" BorderBrush="#1874CD" BorderThickness="1" /> | |||||
<Border Grid.Column="2" BorderBrush="#1874CD" BorderThickness="1" /> | |||||
<ScrollViewer Width="230" Margin="20,5,5,5" Template="{StaticResource ScrollViewerControlTemplate1}" CanContentScroll="True" HorizontalAlignment="Right" > | |||||
<ListBox Background="Transparent" ItemContainerStyle="{StaticResource ItemContainer}" FocusVisualStyle="{x:Null}" | |||||
ItemsSource="{Binding DeviceMaterails}" > | |||||
<ListBox.Template> | |||||
<ControlTemplate> | |||||
<StackPanel Background="Transparent" IsItemsHost="True"></StackPanel> | |||||
</ControlTemplate> | |||||
</ListBox.Template> | |||||
<ListBox.ItemTemplate> | |||||
<DataTemplate> | |||||
<Grid Height="28" Margin="5"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="*"></ColumnDefinition> | |||||
<ColumnDefinition Width="60"></ColumnDefinition> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBlock x:Name="tb_Name" Text="{Binding RawMaterialName}" Foreground="White" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" /> | |||||
<Button x:Name="BtnDelete" Grid.Column="1" Background="Transparent" ToolTip="移除" VerticalAlignment="Center" HorizontalAlignment="Left" | |||||
Command="{Binding DataContext.AddDeviceMaterialCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}}" | |||||
CommandParameter="{Binding Path=Text,ElementName=tb_Name}"> | |||||
<Button.Template> | |||||
<ControlTemplate TargetType="Button"> | |||||
<Grid> | |||||
<Rectangle x:Name="BtnRetangle" Height="17" Width="17" Stroke="Transparent" StrokeThickness="1" VerticalAlignment="Center" HorizontalAlignment="Left"> | |||||
<Rectangle.Fill> | |||||
<ImageBrush ImageSource="../../Image/按钮/AddGreen.png"></ImageBrush> | |||||
</Rectangle.Fill> | |||||
</Rectangle> | |||||
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Content="{TemplateBinding Content}"></ContentPresenter> | |||||
</Grid> | |||||
<ControlTemplate.Triggers> | |||||
<Trigger Property="IsMouseOver" Value="True"> | |||||
<Setter TargetName="BtnRetangle" Property="Height" Value="19"></Setter> | |||||
<Setter TargetName="BtnRetangle" Property="Width" Value="19"></Setter> | |||||
</Trigger> | |||||
</ControlTemplate.Triggers> | |||||
</ControlTemplate> | |||||
</Button.Template> | |||||
</Button> | |||||
</Grid> | |||||
</DataTemplate> | |||||
</ListBox.ItemTemplate> | |||||
</ListBox> | |||||
</ScrollViewer> | |||||
<ScrollViewer Grid.Column="2" Margin="10,0,10,0" Template="{StaticResource ScrollViewerControlTemplate1}" CanContentScroll="True"> | |||||
<ListBox Background="Transparent" ItemContainerStyle="{StaticResource ItemContainer}" FocusVisualStyle="{x:Null}" | |||||
Width="230" | |||||
ItemsSource="{Binding UserDeviceMaterails}" > | |||||
<ListBox.Template> | |||||
<ControlTemplate> | |||||
<StackPanel Background="Transparent" IsItemsHost="True"></StackPanel> | |||||
</ControlTemplate> | |||||
</ListBox.Template> | |||||
<ListBox.ItemTemplate> | |||||
<DataTemplate> | |||||
<Grid Height="28" Margin="5"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="*"></ColumnDefinition> | |||||
<ColumnDefinition Width="60"></ColumnDefinition> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBlock x:Name="tb_Name" Text="{Binding RawMaterialName}" Foreground="White" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Left" /> | |||||
<Button x:Name="BtnDelete" Grid.Column="1" Background="Transparent" ToolTip="移除" VerticalAlignment="Center" HorizontalAlignment="Left" | |||||
Command="{Binding DataContext.DeleteDeviceMaterialCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ListBox}}" | |||||
CommandParameter="{Binding Path=Text,ElementName=tb_Name}"> | |||||
<Button.Template> | |||||
<ControlTemplate TargetType="Button"> | |||||
<Grid> | |||||
<Rectangle x:Name="BtnRetangle" Height="17" Width="17" Stroke="Transparent" StrokeThickness="1" VerticalAlignment="Center" HorizontalAlignment="Left"> | |||||
<Rectangle.Fill> | |||||
<ImageBrush ImageSource="../../Image/按钮/Delete.png"></ImageBrush> | |||||
</Rectangle.Fill> | |||||
</Rectangle> | |||||
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center" Content="{TemplateBinding Content}"></ContentPresenter> | |||||
</Grid> | |||||
<ControlTemplate.Triggers> | |||||
<Trigger Property="IsMouseOver" Value="True"> | |||||
<Setter TargetName="BtnRetangle" Property="Height" Value="19"></Setter> | |||||
<Setter TargetName="BtnRetangle" Property="Width" Value="19"></Setter> | |||||
</Trigger> | |||||
</ControlTemplate.Triggers> | |||||
</ControlTemplate> | |||||
</Button.Template> | |||||
</Button> | |||||
</Grid> | |||||
</DataTemplate> | |||||
</ListBox.ItemTemplate> | |||||
</ListBox> | |||||
</ScrollViewer> | |||||
<StackPanel Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<Button Foreground="White" Background="#009DFF" | |||||
FontSize="16" Height="50" Width="70" Margin="10,20" | |||||
Command="{Binding AddAllCommand}" CommandParameter="device"> | |||||
<TextBlock Text="全部 | |||||
添加" TextWrapping="Wrap"/> | |||||
</Button> | |||||
<Button Foreground="White" Background="#009DFF" | |||||
FontSize="16" Height="50" Width="70" Margin="10,20" | |||||
Command="{Binding DeleteAllCommand}" CommandParameter="device"> | |||||
<TextBlock Text="全部 | |||||
移除" TextWrapping="Wrap"/> | |||||
</Button> | |||||
</StackPanel> | |||||
</Grid> | |||||
</Border> | |||||
<!--#endregion--> | |||||
</Grid> | </Grid> | ||||
<Grid Grid.Row="5"> | <Grid Grid.Row="5"> | ||||
<Grid.ColumnDefinitions> | <Grid.ColumnDefinitions> | ||||
@@ -385,14 +766,14 @@ | |||||
</Grid.ColumnDefinitions> | </Grid.ColumnDefinitions> | ||||
<Button Content="保存" | <Button Content="保存" | ||||
Background="#009DFF" | Background="#009DFF" | ||||
Margin="200,5,20,5" | |||||
Margin="200,10,20,0" | |||||
BorderThickness="0" | BorderThickness="0" | ||||
Command="{Binding SaveCommand}" | Command="{Binding SaveCommand}" | ||||
FontSize="20" | FontSize="20" | ||||
Foreground="White" | Foreground="White" | ||||
TabIndex="3" /> | TabIndex="3" /> | ||||
<Button Content="取消" Grid.Column="1" Background="#009DFF" | <Button Content="取消" Grid.Column="1" Background="#009DFF" | ||||
Margin="20,5,200,5" | |||||
Margin="20,10,200,0" | |||||
BorderThickness="0" | BorderThickness="0" | ||||
Command="{Binding CancelCommand}" | Command="{Binding CancelCommand}" | ||||
FontSize="20" | FontSize="20" | ||||
@@ -400,7 +781,7 @@ | |||||
TabIndex="3"/> | TabIndex="3"/> | ||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
</Grid> | </Grid> | ||||
</Border> | </Border> | ||||
</Window> | </Window> |
@@ -29,9 +29,7 @@ namespace BPASmartClient.CustomResource.Pages.ViewModel | |||||
var res = Global.userManager.userInfos.FirstOrDefault(p => p.CardId?.FirstOrDefault(s => s == cardId && s.Length > 0) != null); | var res = Global.userManager.userInfos.FirstOrDefault(p => p.CardId?.FirstOrDefault(s => s == cardId && s.Length > 0) != null); | ||||
if (res != null) | if (res != null) | ||||
{ | { | ||||
Global.userInfo.permission = res.permission; | |||||
Global.userInfo.UserName = res.UserName; | |||||
Global.userInfo.Password = res.Password; | |||||
Global.userInfo = res; | |||||
for (int i = 0; i < MenuManage.GetInstance.menuModels.Count; i++) | for (int i = 0; i < MenuManage.GetInstance.menuModels.Count; i++) | ||||
{ | { | ||||
if (MenuManage.GetInstance.menuModels.ElementAt(i).MainMenuPermission.Contains(res.permission)) | if (MenuManage.GetInstance.menuModels.ElementAt(i).MainMenuPermission.Contains(res.permission)) | ||||
@@ -60,9 +58,8 @@ namespace BPASmartClient.CustomResource.Pages.ViewModel | |||||
var res = Global.userManager.userInfos.FirstOrDefault(p => p.UserName == UserName && p.Password == Password); | var res = Global.userManager.userInfos.FirstOrDefault(p => p.UserName == UserName && p.Password == Password); | ||||
if (res != null) | if (res != null) | ||||
{ | { | ||||
Global.userInfo.permission = res.permission; | |||||
Global.userInfo.UserName = res.UserName; | |||||
Global.userInfo.Password = res.Password; | |||||
Global.userInfo = res; | |||||
Global.userInfo.LastLogInTime = DateTime.Now.ToString(); | Global.userInfo.LastLogInTime = DateTime.Now.ToString(); | ||||
res.LastLogInTime = DateTime.Now.ToString(); | res.LastLogInTime = DateTime.Now.ToString(); | ||||
Config.GetInstance.SaveUser(); | Config.GetInstance.SaveUser(); | ||||
@@ -8,6 +8,7 @@ using System.Threading.Tasks; | |||||
using System.Windows; | using System.Windows; | ||||
using BPASmartClient.CustomResource.Pages.Model; | using BPASmartClient.CustomResource.Pages.Model; | ||||
using BPASmartClient.Helper; | using BPASmartClient.Helper; | ||||
using BPASmartClient.Model; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | using Microsoft.Toolkit.Mvvm.ComponentModel; | ||||
using Microsoft.Toolkit.Mvvm.Input; | using Microsoft.Toolkit.Mvvm.Input; | ||||
@@ -25,6 +26,12 @@ namespace BPASmartClient.CustomResource.Pages.ViewModel | |||||
PermissionChange(); | PermissionChange(); | ||||
}), "PermissionChange"); | }), "PermissionChange"); | ||||
//测试用 | |||||
Global.DeviceRawMaterials.Add(new RawMaterialModel { RawMaterialName = "营养强化剂", DeviceIp = "192.168.1.111" }); | |||||
Global.DeviceRawMaterials.Add(new RawMaterialModel { RawMaterialName = "甜味剂", DeviceIp = "192.168.1.112" }); | |||||
Global.DeviceRawMaterials.Add(new RawMaterialModel { RawMaterialName = "抗氧化剂", DeviceIp = "192.168.1.113" }); | |||||
Global.DeviceRawMaterials.Add(new RawMaterialModel { RawMaterialName = "食用香料", DeviceIp = "192.168.1.114" }); | |||||
} | } | ||||
private void PermissionChange() | private void PermissionChange() | ||||
@@ -1,6 +1,7 @@ | |||||
using BPASmartClient.CustomResource.Pages.Model; | using BPASmartClient.CustomResource.Pages.Model; | ||||
using BPASmartClient.CustomResource.Pages.View; | using BPASmartClient.CustomResource.Pages.View; | ||||
using BPASmartClient.Helper; | using BPASmartClient.Helper; | ||||
using BPASmartClient.Model; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | using Microsoft.Toolkit.Mvvm.ComponentModel; | ||||
using Microsoft.Toolkit.Mvvm.Input; | using Microsoft.Toolkit.Mvvm.Input; | ||||
using System; | using System; | ||||
@@ -9,6 +10,7 @@ using System.Collections.ObjectModel; | |||||
using System.Linq; | using System.Linq; | ||||
using System.Text; | using System.Text; | ||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
using System.Windows; | |||||
namespace BPASmartClient.CustomResource.Pages.ViewModel | namespace BPASmartClient.CustomResource.Pages.ViewModel | ||||
{ | { | ||||
@@ -22,27 +24,68 @@ namespace BPASmartClient.CustomResource.Pages.ViewModel | |||||
/// 已选择页面 | /// 已选择页面 | ||||
/// </summary> | /// </summary> | ||||
public ObservableCollection<UserTreeViewModel> SelectePage { get; set; } = new ObservableCollection<UserTreeViewModel>(); | public ObservableCollection<UserTreeViewModel> SelectePage { get; set; } = new ObservableCollection<UserTreeViewModel>(); | ||||
/// <summary> | |||||
/// 本地原料集合 | |||||
/// </summary> | |||||
public ObservableCollection<RawMaterialModel> LoaclMaterails { get; set; } = Json<LocaMaterial>.Data.LocalMaterails; | |||||
/// <summary> | |||||
/// 设备原料集合 | |||||
/// </summary> | |||||
public ObservableCollection<RawMaterialModel> DeviceMaterails { get; set; } = Global.DeviceRawMaterials; | |||||
/// <summary> | |||||
/// 用户本地原料权限 | |||||
/// </summary> | |||||
public ObservableCollection<RawMaterialModel> UserLoaclMaterails { get; set; } = new ObservableCollection<RawMaterialModel>(); | |||||
/// <summary> | |||||
/// 用户设备原料权限 | |||||
/// </summary> | |||||
public ObservableCollection<RawMaterialModel> UserDeviceMaterails { get; set; } = new ObservableCollection<RawMaterialModel>(); | |||||
/// <summary> | |||||
/// 切换本地和设备原料权限 | |||||
/// </summary> | |||||
public bool IsChecked { get { return _isChecked; } set { _isChecked = value;OnPropertyChanged(); } } | |||||
private bool _isChecked = true; | |||||
/// <summary> | /// <summary> | ||||
/// 用户名 | /// 用户名 | ||||
/// </summary> | /// </summary> | ||||
public string UserName { get { return _username; } set { _username = value; OnPropertyChanged(); } } | public string UserName { get { return _username; } set { _username = value; OnPropertyChanged(); } } | ||||
private string _username; | private string _username; | ||||
/// <summary> | |||||
/// 本地原料权限显示 | |||||
/// </summary> | |||||
public Visibility VisibilityLocal { get { return _visibilityLocal; } set { _visibilityLocal = value; OnPropertyChanged(); } } | |||||
private Visibility _visibilityLocal = Visibility.Visible; | |||||
/// <summary> | |||||
/// 设备原料权限显示 | |||||
/// </summary> | |||||
public Visibility VisibilityDevice { get { return _visibilityDevice; } set { _visibilityDevice = value; OnPropertyChanged(); } } | |||||
private Visibility _visibilityDevice = Visibility.Collapsed; | |||||
public RelayCommand<object> AddUserPageCommand { get; set; } | public RelayCommand<object> AddUserPageCommand { get; set; } | ||||
public RelayCommand<object> DeleteUserPageCommand { get; set; } | public RelayCommand<object> DeleteUserPageCommand { get; set; } | ||||
public RelayCommand DeleteAllPageCommand { get; set; } | |||||
public RelayCommand AddAllPageCommand { get; set; } | |||||
public RelayCommand<object> DeleteAllCommand { get; set; } | |||||
public RelayCommand<object> AddAllCommand { get; set; } | |||||
public RelayCommand<object> ChangeMaterailPageCommand { get; set; } | |||||
public RelayCommand SaveCommand { get; set; } | public RelayCommand SaveCommand { get; set; } | ||||
public RelayCommand CancelCommand { get; set; } | public RelayCommand CancelCommand { get; set; } | ||||
public RelayCommand<object> AddLoaclMaterialCommand { get; set; } | |||||
public RelayCommand<object> DeleteLoaclMaterialCommand { get; set; } | |||||
public RelayCommand<object> AddDeviceMaterialCommand { get; set; } | |||||
public RelayCommand<object> DeleteDeviceMaterialCommand { get; set; } | |||||
private void AddUserPage(object o) | private void AddUserPage(object o) | ||||
{ | { | ||||
if (o == null) return; | if (o == null) return; | ||||
@@ -63,6 +106,7 @@ namespace BPASmartClient.CustomResource.Pages.ViewModel | |||||
} | } | ||||
} | } | ||||
} | } | ||||
private void DeleteUserPage(object o) | private void DeleteUserPage(object o) | ||||
{ | { | ||||
if (o == null) return; | if (o == null) return; | ||||
@@ -73,41 +117,140 @@ namespace BPASmartClient.CustomResource.Pages.ViewModel | |||||
} | } | ||||
} | } | ||||
private void ChangeMaterailPage(object o) | |||||
{ | |||||
public UserConfigViewModel() | |||||
if (o == null) return; | |||||
if (o is string type) | |||||
{ | |||||
if(type == "Local") {IsChecked = true;VisibilityLocal = Visibility.Visible; VisibilityDevice = Visibility.Collapsed; } | |||||
else {IsChecked = false; VisibilityDevice = Visibility.Visible;VisibilityLocal = Visibility.Collapsed; } | |||||
} | |||||
} | |||||
private void AddLoaclMaterial(object o) | |||||
{ | { | ||||
AddUserPageCommand = new RelayCommand<object>(AddUserPage); | |||||
DeleteUserPageCommand = new RelayCommand<object>(DeleteUserPage); | |||||
if (o == null) return; | |||||
if (o is string materail) | |||||
{ | |||||
var res = LoaclMaterails.FirstOrDefault(p=>p.RawMaterialName == materail); | |||||
if(UserLoaclMaterails.FirstOrDefault(p=>p.RawMaterialName == materail)==null) UserLoaclMaterails.Add(res); | |||||
} | |||||
} | |||||
DeleteAllPageCommand = new RelayCommand(() => | |||||
private void DeleteLoaclMaterial(object o) | |||||
{ | |||||
if (o == null) return; | |||||
if (o is string materail) | |||||
{ | { | ||||
SelectePage.Clear(); | |||||
}); | |||||
var res = UserLoaclMaterails.FirstOrDefault(p => p.RawMaterialName == materail); | |||||
UserLoaclMaterails.Remove(res); | |||||
} | |||||
} | |||||
AddAllPageCommand = new RelayCommand(() => | |||||
private void AddDeviceMaterial(object o) | |||||
{ | |||||
if (o == null) return; | |||||
if (o is string materail) | |||||
{ | { | ||||
foreach(UserTreeViewModel item in pageTreeViewModels) | |||||
var res = DeviceMaterails.FirstOrDefault(p => p.RawMaterialName == materail); | |||||
if(UserDeviceMaterails.FirstOrDefault(p=>p.DeviceIp == res.DeviceIp) == null) | |||||
{ | { | ||||
foreach(var res in item.TreeViewItems) | |||||
UserDeviceMaterails.Add(res); | |||||
} | |||||
} | |||||
} | |||||
private void DeleteDeviceMaterial(object o) | |||||
{ | |||||
if (o == null) return; | |||||
if (o is string materail) | |||||
{ | |||||
var res = UserDeviceMaterails.FirstOrDefault(p => p.RawMaterialName == materail); | |||||
UserDeviceMaterails.Remove(res); | |||||
} | |||||
} | |||||
private void AddAll(object o) | |||||
{ | |||||
if (o == null) return; | |||||
if (o.ToString() == "page") | |||||
{ | |||||
SelectePage.Clear(); | |||||
foreach (UserTreeViewModel item in pageTreeViewModels) | |||||
{ | |||||
foreach (var res in item.TreeViewItems) | |||||
{ | { | ||||
if (!SelectePage.Contains(res)) SelectePage.Add(res); | |||||
SelectePage.Add(res); | |||||
} | } | ||||
} | } | ||||
}); | |||||
} | |||||
else if (o.ToString() == "local") | |||||
{ | |||||
UserLoaclMaterails.Clear(); | |||||
foreach (RawMaterialModel item in LoaclMaterails) | |||||
{ | |||||
UserLoaclMaterails.Add(item); | |||||
} | |||||
} | |||||
else if (o.ToString() == "device") | |||||
{ | |||||
UserDeviceMaterails.Clear(); | |||||
foreach (RawMaterialModel item in DeviceMaterails) | |||||
{ | |||||
UserDeviceMaterails.Add(item); | |||||
} | |||||
} | |||||
} | |||||
private void DeleteAll(object o) | |||||
{ | |||||
if (o == null) return; | |||||
if(o.ToString() == "page") | |||||
{ | |||||
SelectePage.Clear(); | |||||
} | |||||
else if(o.ToString() == "local") | |||||
{ | |||||
UserLoaclMaterails.Clear(); | |||||
} | |||||
else if(o.ToString() == "device") | |||||
{ | |||||
UserDeviceMaterails.Clear(); | |||||
} | |||||
} | |||||
public UserConfigViewModel() | |||||
{ | |||||
AddUserPageCommand = new RelayCommand<object>(AddUserPage); | |||||
DeleteUserPageCommand = new RelayCommand<object>(DeleteUserPage); | |||||
DeleteAllCommand = new RelayCommand<object>(DeleteAll); | |||||
AddAllCommand = new RelayCommand<object>(AddAll); | |||||
ChangeMaterailPageCommand = new RelayCommand<object>(ChangeMaterailPage); | |||||
SaveCommand = new RelayCommand(() => | SaveCommand = new RelayCommand(() => | ||||
{ | { | ||||
var res = Global.userManager.userInfos.FirstOrDefault(p => p.UserName == Global.changeUserInfo.UserName && p.Password == Global.changeUserInfo.Password); | var res = Global.userManager.userInfos.FirstOrDefault(p => p.UserName == Global.changeUserInfo.UserName && p.Password == Global.changeUserInfo.Password); | ||||
if(res != null) | if(res != null) | ||||
{ | { | ||||
res.userTreeViewModels = new List<UserTreeViewModel>(); | res.userTreeViewModels = new List<UserTreeViewModel>(); | ||||
res.userTreeViewModels.AddRange(SelectePage); | res.userTreeViewModels.AddRange(SelectePage); | ||||
res.locaRawMaterials = new List<RawMaterialModel>(); | |||||
res.locaRawMaterials.AddRange(UserLoaclMaterails); | |||||
res.devRawMaterials = new List<RawMaterialModel>(); | |||||
res.devRawMaterials.AddRange(UserDeviceMaterails); | |||||
Config.GetInstance.SaveUser(); | Config.GetInstance.SaveUser(); | ||||
} | } | ||||
Global.changeUserInfo = null; | Global.changeUserInfo = null; | ||||
@@ -120,6 +263,15 @@ namespace BPASmartClient.CustomResource.Pages.ViewModel | |||||
ActionManage.GetInstance.Send("UserConfigViewCancel"); | ActionManage.GetInstance.Send("UserConfigViewCancel"); | ||||
}); | }); | ||||
AddLoaclMaterialCommand = new RelayCommand<object>(AddLoaclMaterial); | |||||
DeleteLoaclMaterialCommand = new RelayCommand<object>(DeleteLoaclMaterial); | |||||
AddDeviceMaterialCommand = new RelayCommand<object>(AddDeviceMaterial); | |||||
DeleteDeviceMaterialCommand = new RelayCommand<object>(DeleteDeviceMaterial); | |||||
foreach (var item in MenuManage.GetInstance.menuModels) | foreach (var item in MenuManage.GetInstance.menuModels) | ||||
{ | { | ||||
List<UserTreeViewModel> list = new List<UserTreeViewModel>(); | List<UserTreeViewModel> list = new List<UserTreeViewModel>(); | ||||
@@ -133,7 +285,7 @@ namespace BPASmartClient.CustomResource.Pages.ViewModel | |||||
TreeViewItems = list | TreeViewItems = list | ||||
}); | }); | ||||
} | } | ||||
//用户已拥有权限 | |||||
if(Global.changeUserInfo != null) | if(Global.changeUserInfo != null) | ||||
{ | { | ||||
UserName = Global.changeUserInfo.UserName; | UserName = Global.changeUserInfo.UserName; | ||||
@@ -146,12 +298,32 @@ namespace BPASmartClient.CustomResource.Pages.ViewModel | |||||
SelectePage.Add(item); | SelectePage.Add(item); | ||||
} | } | ||||
} | } | ||||
if(Global.changeUserInfo.locaRawMaterials.Count>0) | |||||
{ | |||||
foreach(RawMaterialModel model in Global.changeUserInfo.locaRawMaterials) | |||||
{ | |||||
UserLoaclMaterails.Add(model); | |||||
} | |||||
} | |||||
if (Global.changeUserInfo.devRawMaterials.Count > 0) | |||||
{ | |||||
foreach (RawMaterialModel model in Global.changeUserInfo.devRawMaterials) | |||||
{ | |||||
UserDeviceMaterails.Add(model); | |||||
} | |||||
} | |||||
} | } | ||||
} | } | ||||
} | } | ||||
} | } | ||||
@@ -31,6 +31,8 @@ namespace BPASmartClient.MQTT | |||||
public bool IsConnected { get; set; } | public bool IsConnected { get; set; } | ||||
bool push = true; | |||||
Action UseDisconnectedAction; | Action UseDisconnectedAction; | ||||
@@ -152,8 +154,10 @@ namespace BPASmartClient.MQTT | |||||
/// <param name="content">需要发布的内容</param> | /// <param name="content">需要发布的内容</param> | ||||
public async void Publish(string topic, string content) | public async void Publish(string topic, string content) | ||||
{ | { | ||||
; | |||||
if (client != null && client.IsConnected) | if (client != null && client.IsConnected) | ||||
{ | { | ||||
push = true; | |||||
var msg = new MqttApplicationMessageBuilder().WithTopic(topic).WithPayload(content).WithExactlyOnceQoS().Build(); | var msg = new MqttApplicationMessageBuilder().WithTopic(topic).WithPayload(content).WithExactlyOnceQoS().Build(); | ||||
try | try | ||||
{ | { | ||||
@@ -161,6 +165,15 @@ namespace BPASmartClient.MQTT | |||||
} | } | ||||
catch { } | catch { } | ||||
} | } | ||||
if(!client.IsConnected) | |||||
{ | |||||
if(push) | |||||
{ | |||||
MessageLog.GetInstance.ShowEx("MQTT未连接"); | |||||
push = false; | |||||
} | |||||
} | |||||
} | } | ||||
@@ -5,7 +5,7 @@ using System.Linq; | |||||
using System.Text; | using System.Text; | ||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
namespace BPASmartClient.DosingSystem.Model | |||||
namespace BPASmartClient.Model | |||||
{ | { | ||||
/// <summary> | /// <summary> | ||||
/// 原料模块 | /// 原料模块 | ||||
@@ -29,6 +29,7 @@ namespace BPASmartClient.DosingSystem.Model | |||||
public uint RawMaterialWeight { get { return _mRawMaterialWeight; } set { _mRawMaterialWeight = value; OnPropertyChanged(); } } | public uint RawMaterialWeight { get { return _mRawMaterialWeight; } set { _mRawMaterialWeight = value; OnPropertyChanged(); } } | ||||
private uint _mRawMaterialWeight; | private uint _mRawMaterialWeight; | ||||
/// <summary> | /// <summary> | ||||
/// 原料类型 MW18 | /// 原料类型 MW18 | ||||
/// 1:液体 | /// 1:液体 |
@@ -7,9 +7,9 @@ | |||||
<add key="IsEnableTest" value="false"/> | <add key="IsEnableTest" value="false"/> | ||||
<!--测试环境--> | <!--测试环境--> | ||||
<add key="apollouri" value="http://10.2.1.21:28080/"/> | |||||
<!--<add key="apollouri" value="http://10.2.1.21:28080/"/> | |||||
<add key="AppId" value="test1_HostComputer"/> | <add key="AppId" value="test1_HostComputer"/> | ||||
<add key ="Namespaces" value="DEV.test1.Config"/> | |||||
<add key ="Namespaces" value="DEV.test1.Config"/>--> | |||||
<!--开发环境--> | <!--开发环境--> | ||||
<!--<add key="apollouri" value="http://10.2.1.21:28080/"/> | <!--<add key="apollouri" value="http://10.2.1.21:28080/"/> | ||||
@@ -17,9 +17,9 @@ | |||||
<add key ="Namespaces" value="DEV.Config"/>--> | <add key ="Namespaces" value="DEV.Config"/>--> | ||||
<!--正式环境--> | <!--正式环境--> | ||||
<!--<add key="apollouri" value="http://47.108.65.220:28080/"/> | |||||
<add key="apollouri" value="http://47.108.65.220:28080/"/> | |||||
<add key="AppId" value="HostComputer"/> | <add key="AppId" value="HostComputer"/> | ||||
<add key ="Namespaces" value="TEST1.Config"/>--> | |||||
<add key ="Namespaces" value="TEST1.Config"/> | |||||
<!--阿里云上报启动方式:API 或者 LOCAL--> | <!--阿里云上报启动方式:API 或者 LOCAL--> | ||||
<!--API :通过客户端ID,调用接口查询“设备连接信息”--> | <!--API :通过客户端ID,调用接口查询“设备连接信息”--> | ||||
@@ -202,6 +202,7 @@ namespace BPASmartClient.DosingSystem | |||||
{ | { | ||||
Config.GetInstance.Init(); | Config.GetInstance.Init(); | ||||
Json<LocaPar>.Read(); | Json<LocaPar>.Read(); | ||||
Json<LocaMaterial>.Read(); | |||||
} | } | ||||
} | } | ||||
@@ -12,6 +12,7 @@ using System.Threading; | |||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
using BPASmartClient.CustomResource.UserControls.MessageShow; | using BPASmartClient.CustomResource.UserControls.MessageShow; | ||||
using BPASmartClient.CustomResource.Pages.Model; | using BPASmartClient.CustomResource.Pages.Model; | ||||
using BPASmartClient.Model; | |||||
namespace BPASmartClient.DosingSystem.Model | namespace BPASmartClient.DosingSystem.Model | ||||
{ | { | ||||
@@ -110,9 +111,17 @@ namespace BPASmartClient.DosingSystem.Model | |||||
} | } | ||||
} | } | ||||
} | } | ||||
if (!NewRecipeViewModel.RawMaterialNames.Contains(DeviceName)) | |||||
NewRecipeViewModel.RawMaterialNames.Add(DeviceName); | |||||
if(Global.DeviceRawMaterials.Count > 0) | |||||
{ | |||||
if(Global.DeviceRawMaterials.FirstOrDefault(p=>p.RawMaterialName == DeviceName) == null) | |||||
{ | |||||
Global.DeviceRawMaterials.Add(new RawMaterialModel() { RawMaterialName = DeviceName, DeviceIp = ip }); | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
Global.DeviceRawMaterials.Add(new RawMaterialModel() { RawMaterialName = DeviceName, DeviceIp = ip }); | |||||
} | |||||
})); | })); | ||||
} | } | ||||
@@ -136,8 +145,9 @@ namespace BPASmartClient.DosingSystem.Model | |||||
App.Current.Dispatcher.Invoke(new Action(() => | App.Current.Dispatcher.Invoke(new Action(() => | ||||
{ | { | ||||
DeviceListViewModel.devices.Remove(res); | DeviceListViewModel.devices.Remove(res); | ||||
if (NewRecipeViewModel.RawMaterialNames.Contains(res.DeviceName)) | |||||
NewRecipeViewModel.RawMaterialNames.Remove(res.DeviceName); | |||||
var item = Global.DeviceRawMaterials.FirstOrDefault(P => P.RawMaterialName == res.DeviceName); | |||||
if (item!=null) Global.DeviceRawMaterials.Remove(item); | |||||
})); | })); | ||||
if (DeviceLists.ContainsKey(ip)) DeviceLists[ip].Dispose(); | if (DeviceLists.ContainsKey(ip)) DeviceLists[ip].Dispose(); | ||||
}); | }); | ||||
@@ -0,0 +1,15 @@ | |||||
using BPASmartClient.Model; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Collections.ObjectModel; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.DosingSystem.Model | |||||
{ | |||||
public class GlobalData | |||||
{ | |||||
} | |||||
} |
@@ -5,11 +5,14 @@ using System.Text; | |||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
using System.Collections.ObjectModel; | using System.Collections.ObjectModel; | ||||
using BPASmartClient.DosingSystem.ViewModel; | using BPASmartClient.DosingSystem.ViewModel; | ||||
using BPASmartClient.Model; | |||||
namespace BPASmartClient.DosingSystem.Model | namespace BPASmartClient.DosingSystem.Model | ||||
{ | { | ||||
public class LocaPar | public class LocaPar | ||||
{ | { | ||||
public ObservableCollection<RecipeModel> Recipes { get; set; } = new ObservableCollection<RecipeModel>(); | public ObservableCollection<RecipeModel> Recipes { get; set; } = new ObservableCollection<RecipeModel>(); | ||||
} | } | ||||
} | } |
@@ -5,7 +5,7 @@ using System.Linq; | |||||
using System.Text; | using System.Text; | ||||
using System.Threading; | using System.Threading; | ||||
using System.Threading.Tasks; | using System.Threading.Tasks; | ||||
using BPASmartClient.DosingSystem.ViewModel; | |||||
using BPASmartClient.Model; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | using Microsoft.Toolkit.Mvvm.ComponentModel; | ||||
namespace BPASmartClient.DosingSystem.Model | namespace BPASmartClient.DosingSystem.Model | ||||
@@ -0,0 +1,156 @@ | |||||
<Window x:Class="BPASmartClient.DosingSystem.View.NewMaterialView" | |||||
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:BPASmartClient.DosingSystem.View" | |||||
xmlns:vm="clr-namespace:BPASmartClient.DosingSystem.ViewModel" | |||||
mc:Ignorable="d" | |||||
Title="NewMateritalView" | |||||
Width="600" | |||||
Height="600" | |||||
AllowsTransparency="True" | |||||
Background="{x:Null}" | |||||
Topmost="True" | |||||
WindowStartupLocation="CenterScreen" | |||||
WindowStyle="None"> | |||||
<Window.DataContext> | |||||
<vm:NewMaterialViewModel/> | |||||
</Window.DataContext> | |||||
<Window.Resources> | |||||
<ResourceDictionary> | |||||
<ResourceDictionary.MergedDictionaries> | |||||
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/GenricStyle.xaml" /> | |||||
<ResourceDictionary Source="/BPASmartClient.CustomResource;component/Themes/MyStyle.xaml" /> | |||||
<ResourceDictionary> | |||||
<!--#region ListBox样式--> | |||||
<Style x:Key="ListBoxItemStyle1" TargetType="{x:Type ListBoxItem}"> | |||||
<Setter Property="OverridesDefaultStyle" Value="True" /> | |||||
<Setter Property="SnapsToDevicePixels" Value="True" /> | |||||
<Setter Property="BorderBrush" Value="{x:Null}" /> | |||||
<Setter Property="Foreground" Value="White" /> | |||||
<Setter Property="FontSize" Value="20" /> | |||||
<Setter Property="HorizontalContentAlignment" Value="Center" /> | |||||
<Setter Property="VerticalContentAlignment" Value="Center" /> | |||||
<Setter Property="Template"> | |||||
<Setter.Value> | |||||
<ControlTemplate TargetType="{x:Type ListBoxItem}"> | |||||
<Border x:Name="border" CornerRadius="8"> | |||||
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" /> | |||||
</Border> | |||||
</ControlTemplate> | |||||
</Setter.Value> | |||||
</Setter> | |||||
</Style> | |||||
<!--#endregion--> | |||||
</ResourceDictionary> | |||||
</ResourceDictionary.MergedDictionaries> | |||||
</ResourceDictionary> | |||||
</Window.Resources> | |||||
<Border Name="br" BorderThickness="1"> | |||||
<Border.Background> | |||||
<ImageBrush ImageSource="/BPASmartClient.CustomResource;component/Image/bg.png" /> | |||||
</Border.Background> | |||||
<Grid> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="5" /> | |||||
<RowDefinition Height="*"/> | |||||
<RowDefinition Height="40"/> | |||||
<RowDefinition Height="5" /> | |||||
<RowDefinition Height="5*" /> | |||||
</Grid.RowDefinitions> | |||||
<StackPanel Orientation="Horizontal" Grid.Row="1" HorizontalAlignment="Center" VerticalAlignment="Center"> | |||||
<TextBlock | |||||
Margin="10,0,0,0" | |||||
Background="Transparent" | |||||
FontSize="20" | |||||
Foreground="#FF2AB2E7" | |||||
Text="请输入原料名称:" /> | |||||
<TextBox | |||||
Grid.Column="1" | |||||
Width="200" | |||||
Height="30" | |||||
Margin="10" | |||||
FontSize="16" | |||||
Text="{Binding MaterialName}" /> | |||||
<Button | |||||
Width="80" | |||||
Height="30" | |||||
Margin="10" | |||||
Command="{Binding SaveCommand}" | |||||
Content="保存" Cursor="Hand" /> | |||||
<Button | |||||
Name="btClose" | |||||
Width="80" | |||||
Height="30" | |||||
Margin="10" | |||||
Click="btClose_Click" | |||||
Content="取消" /> | |||||
</StackPanel> | |||||
<TextBlock Grid.Row="2" | |||||
Margin="0,0,5,0" | |||||
HorizontalAlignment="Center" | |||||
Background="Transparent" | |||||
FontSize="16" | |||||
Foreground="Red" | |||||
Text="{Binding ErrorInfo}"></TextBlock> | |||||
<Grid Grid.Row="4"> | |||||
<Grid.RowDefinitions> | |||||
<RowDefinition Height="40"/> | |||||
<RowDefinition Height="*"/> | |||||
</Grid.RowDefinitions> | |||||
<TextBlock Text="本地原料" HorizontalAlignment="Center" FontSize="25" Foreground="#FF2AB2E7"/> | |||||
<Border Grid.Row="1" BorderBrush="#FF2AB2E7" BorderThickness="1" Margin="100,10"> | |||||
<ScrollViewer Grid.Row="1" BorderBrush="#FF2AB2E7" BorderThickness="1"> | |||||
<ItemsControl ItemsSource="{Binding Materials}" Margin="10"> | |||||
<ItemsControl.ItemTemplate> | |||||
<DataTemplate> | |||||
<RadioButton GroupName="all"> | |||||
<RadioButton.Template> | |||||
<ControlTemplate TargetType="RadioButton"> | |||||
<Grid Name="gr" Height="40"> | |||||
<Grid.ColumnDefinitions> | |||||
<ColumnDefinition Width="2*"/> | |||||
<ColumnDefinition Width="*" /> | |||||
</Grid.ColumnDefinitions> | |||||
<TextBlock | |||||
Name="tb" | |||||
Grid.Column="0" | |||||
Width="150" | |||||
Height="29" | |||||
Margin="3,1" | |||||
VerticalAlignment="Center" HorizontalAlignment="Center" | |||||
FontSize="20" | |||||
Text="{Binding RawMaterialName}" /> | |||||
<Button | |||||
Grid.Column="1" | |||||
Margin="10,0,10,0" | |||||
Command="{Binding DataContext.RemoveCommand, RelativeSource={RelativeSource AncestorType=ItemsControl, Mode=FindAncestor}}" | |||||
CommandParameter="{Binding RawMaterialId}" | |||||
Content="删除" /> | |||||
</Grid> | |||||
</ControlTemplate> | |||||
</RadioButton.Template> | |||||
</RadioButton> | |||||
</DataTemplate> | |||||
</ItemsControl.ItemTemplate> | |||||
</ItemsControl> | |||||
</ScrollViewer> | |||||
</Border> | |||||
</Grid> | |||||
</Grid> | |||||
</Border> | |||||
</Window> |
@@ -0,0 +1,35 @@ | |||||
using BPASmartClient.Helper; | |||||
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 BPASmartClient.DosingSystem.View | |||||
{ | |||||
/// <summary> | |||||
/// NewMateritalView.xaml 的交互逻辑 | |||||
/// </summary> | |||||
public partial class NewMaterialView : Window | |||||
{ | |||||
public NewMaterialView() | |||||
{ | |||||
InitializeComponent(); | |||||
this.btClose.Click += (o, e) => { this.Close(); }; | |||||
this.br.MouseLeftButtonDown += (o, e) => { if (e.LeftButton == MouseButtonState.Pressed) this.DragMove(); }; | |||||
} | |||||
private void btClose_Click(object sender, RoutedEventArgs e) | |||||
{ | |||||
this.Close(); | |||||
} | |||||
} | |||||
} |
@@ -52,6 +52,17 @@ | |||||
<!--#region 操作按钮--> | <!--#region 操作按钮--> | ||||
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal"> | <StackPanel HorizontalAlignment="Right" Orientation="Horizontal"> | ||||
<pry:IcoButton | |||||
Grid.Column="3" | |||||
Width="140" | |||||
Margin="10" | |||||
HorizontalAlignment="Left" | |||||
Command="{Binding NewMaterital}" | |||||
Content="新建原料" | |||||
FontSize="16" | |||||
Foreground="Aqua" | |||||
IcoText="" | |||||
Style="{StaticResource IcoButtonStyle}" /> | |||||
<pry:IcoButton | <pry:IcoButton | ||||
Grid.Column="3" | Grid.Column="3" | ||||
Width="140" | Width="140" | ||||
@@ -7,6 +7,7 @@ using BPASmartClient.Helper; | |||||
using BPASmartClient.DosingSystem.Model; | using BPASmartClient.DosingSystem.Model; | ||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | using Microsoft.Toolkit.Mvvm.ComponentModel; | ||||
using Microsoft.Toolkit.Mvvm.Input; | using Microsoft.Toolkit.Mvvm.Input; | ||||
using BPASmartClient.CustomResource.Pages.Model; | |||||
namespace BPASmartClient.DosingSystem.ViewModel | namespace BPASmartClient.DosingSystem.ViewModel | ||||
{ | { | ||||
@@ -34,10 +35,9 @@ namespace BPASmartClient.DosingSystem.ViewModel | |||||
ErrorInfo = "设备名称已存在"; | ErrorInfo = "设备名称已存在"; | ||||
else | else | ||||
{ | { | ||||
NewRecipeViewModel.RawMaterialNames.Remove(DeviceListViewModel.devices.ElementAt(index).DeviceName); | |||||
NewRecipeViewModel.RawMaterialNames.Add(DeviceName); | |||||
var res = Global.DeviceRawMaterials.FirstOrDefault(p => p.RawMaterialName == DeviceListViewModel.devices.ElementAt(index).DeviceName); | |||||
res.RawMaterialName = DeviceName; | |||||
DeviceListViewModel.devices.ElementAt(index).DeviceName = DeviceName; | DeviceListViewModel.devices.ElementAt(index).DeviceName = DeviceName; | ||||
DeviceInquire.GetInstance.GetDevice(IpAddress).SetDeviceName(DeviceName);//设置PLC名称 | DeviceInquire.GetInstance.GetDevice(IpAddress).SetDeviceName(DeviceName);//设置PLC名称 | ||||
for (int i = 0; i < Json<LocaPar>.Data.Recipes.Count; i++) | for (int i = 0; i < Json<LocaPar>.Data.Recipes.Count; i++) | ||||
{ | { | ||||
@@ -0,0 +1,64 @@ | |||||
using BPASmartClient.CustomResource.Pages.Model; | |||||
using BPASmartClient.DosingSystem.Model; | |||||
using BPASmartClient.Helper; | |||||
using BPASmartClient.Model; | |||||
using Microsoft.Toolkit.Mvvm.ComponentModel; | |||||
using Microsoft.Toolkit.Mvvm.Input; | |||||
using System; | |||||
using System.Collections.Generic; | |||||
using System.Collections.ObjectModel; | |||||
using System.Linq; | |||||
using System.Text; | |||||
using System.Threading.Tasks; | |||||
namespace BPASmartClient.DosingSystem.ViewModel; | |||||
public class NewMaterialViewModel:ObservableObject | |||||
{ | |||||
public ObservableCollection<RawMaterialModel> Materials { get; set; } = Json<LocaMaterial>.Data.LocalMaterails; | |||||
public string MaterialName { get { return _materialName; } set { _materialName = value; OnPropertyChanged(); } } | |||||
private string _materialName = string.Empty; | |||||
public string ErrorInfo { get { return _mErrorInfo; } set { _mErrorInfo = value; OnPropertyChanged(); } } | |||||
private string _mErrorInfo; | |||||
public RelayCommand<object> RemoveCommand { get; set; } | |||||
public RelayCommand SaveCommand { get; set; } | |||||
private void Remove(object o) | |||||
{ | |||||
if (o == null) return; | |||||
if(o is string id) | |||||
{ | |||||
var res = Materials.FirstOrDefault(p=>p.RawMaterialId == id); | |||||
Materials.Remove(res); | |||||
Json<LocaMaterial>.Save(); | |||||
MessageLog.GetInstance.ShowUserLog($"删除原料--{res.RawMaterialName}"); | |||||
} | |||||
} | |||||
public NewMaterialViewModel() | |||||
{ | |||||
RemoveCommand = new RelayCommand<object>(Remove); | |||||
SaveCommand = new RelayCommand(() => | |||||
{ | |||||
if(MaterialName == String.Empty) { ErrorInfo = "原料名称不能为空";return; } | |||||
if(Global.DeviceRawMaterials.FirstOrDefault(p=>p.RawMaterialName == MaterialName) != null) { ErrorInfo = "设备中已存在该原料名称";return;} | |||||
if(Json<LocaMaterial>.Data.LocalMaterails.FirstOrDefault(p=>p.RawMaterialName == MaterialName) != null) { ErrorInfo = "本地原料名称重复";return ;} | |||||
Json<LocaMaterial>.Data.LocalMaterails.Add(new RawMaterialModel { RawMaterialName = MaterialName, RawMaterialId = Guid.NewGuid().ToString() }); | |||||
Json<LocaMaterial>.Save(); | |||||
MessageLog.GetInstance.ShowUserLog($"添加原料--{MaterialName}"); | |||||
}); | |||||
} | |||||
} |
@@ -9,6 +9,7 @@ using Microsoft.Toolkit.Mvvm.Input; | |||||
using BPASmartClient.Helper; | using BPASmartClient.Helper; | ||||
using BPASmartClient.DosingSystem.Model; | using BPASmartClient.DosingSystem.Model; | ||||
using BPASmartClient.CustomResource.Pages.Model; | using BPASmartClient.CustomResource.Pages.Model; | ||||
using BPASmartClient.Model; | |||||
namespace BPASmartClient.DosingSystem.ViewModel | namespace BPASmartClient.DosingSystem.ViewModel | ||||
{ | { | ||||
@@ -54,6 +55,8 @@ namespace BPASmartClient.DosingSystem.ViewModel | |||||
SaveCommand = new RelayCommand(() => | SaveCommand = new RelayCommand(() => | ||||
{ | { | ||||
ErrorInfo = String.Empty; | |||||
if (RecipeName == String.Empty) { ErrorInfo = "配方名称未填写";return; } | |||||
for (int i = 0; i < RawMaterials.Count; i++) | for (int i = 0; i < RawMaterials.Count; i++) | ||||
{ | { | ||||
var res = DeviceListViewModel.devices.FirstOrDefault(p => p.DeviceName == RawMaterials.ElementAt(i).RawMaterialName); | var res = DeviceListViewModel.devices.FirstOrDefault(p => p.DeviceName == RawMaterials.ElementAt(i).RawMaterialName); | ||||
@@ -86,9 +89,53 @@ namespace BPASmartClient.DosingSystem.ViewModel | |||||
} | } | ||||
} | } | ||||
} | } | ||||
ActionManage.GetInstance.Send("CloseNewRecipeView"); | |||||
}); | }); | ||||
ActionManage.GetInstance.Send("CloseNewRecipeView"); | |||||
//RawMaterialNames.Add("乳化剂"); | |||||
//RawMaterialNames.Add("酶制剂"); | |||||
//RawMaterialNames.Add("增味剂"); | |||||
//RawMaterialNames.Add("营养强化剂"); | |||||
//RawMaterialNames.Add("抗结剂"); | |||||
//RawMaterialNames.Add("消泡剂"); | |||||
//RawMaterialNames.Add("膨松剂"); | |||||
//RawMaterialNames.Add("防腐剂"); | |||||
//RawMaterialNames.Add("着色剂"); | |||||
//RawMaterialNames.Add("甜味剂"); | |||||
//RawMaterialNames.Add("酸味剂"); | |||||
//RawMaterialNames.Add("增白剂"); | |||||
//RawMaterialNames.Add("香料"); | |||||
//RawMaterialNames.Add("抗氧化剂"); | |||||
//RawMaterialNames.Add("食用香料"); | |||||
//RawMaterialNames.Add("增稠剂"); | |||||
if (Global.userInfo.permission == CustomResource.Pages.Enums.Permission.管理员) | |||||
{ | |||||
foreach (var item in Global.DeviceRawMaterials) | |||||
{ | |||||
RawMaterialNames.Add(item.RawMaterialName); | |||||
} | |||||
foreach (var item in Json<LocaMaterial>.Data.LocalMaterails) | |||||
{ | |||||
RawMaterialNames.Add(item.RawMaterialName); | |||||
} | |||||
} | |||||
else | |||||
{ | |||||
foreach (var item in Global.DeviceRawMaterials) | |||||
{ | |||||
if (Global.userInfo.devRawMaterials.FirstOrDefault(p => p.RawMaterialName == item.RawMaterialName) != null) RawMaterialNames.Add(item.RawMaterialName); | |||||
} | |||||
foreach (var item in Json<LocaMaterial>.Data.LocalMaterails) | |||||
{ | |||||
if (Global.userInfo.locaRawMaterials.FirstOrDefault(p => p.RawMaterialName == item.RawMaterialName) != null) RawMaterialNames.Add(item.RawMaterialName); | |||||
} | |||||
} | |||||
} | } | ||||
private void AddRecipes() | private void AddRecipes() | ||||
@@ -106,31 +153,12 @@ namespace BPASmartClient.DosingSystem.ViewModel | |||||
}); | }); | ||||
} | } | ||||
static NewRecipeViewModel() | |||||
{ | |||||
RawMaterialNames.Clear(); | |||||
//RawMaterialNames.Add("乳化剂"); | |||||
//RawMaterialNames.Add("酶制剂"); | |||||
//RawMaterialNames.Add("增味剂"); | |||||
RawMaterialNames.Add("营养强化剂"); | |||||
//RawMaterialNames.Add("抗结剂"); | |||||
//RawMaterialNames.Add("消泡剂"); | |||||
//RawMaterialNames.Add("膨松剂"); | |||||
//RawMaterialNames.Add("防腐剂"); | |||||
//RawMaterialNames.Add("着色剂"); | |||||
RawMaterialNames.Add("甜味剂"); | |||||
//RawMaterialNames.Add("酸味剂"); | |||||
//RawMaterialNames.Add("增白剂"); | |||||
//RawMaterialNames.Add("香料"); | |||||
RawMaterialNames.Add("抗氧化剂"); | |||||
RawMaterialNames.Add("食用香料"); | |||||
//RawMaterialNames.Add("增稠剂"); | |||||
} | |||||
private string RecipCode = string.Empty; | private string RecipCode = string.Empty; | ||||
public string RecipeName { get { return _mRecipeName; } set { _mRecipeName = value; OnPropertyChanged(); } } | public string RecipeName { get { return _mRecipeName; } set { _mRecipeName = value; OnPropertyChanged(); } } | ||||
private string _mRecipeName; | |||||
private string _mRecipeName = string.Empty; | |||||
public string ErrorInfo { get { return _mErrorInfo; } set { _mErrorInfo = value; OnPropertyChanged(); } } | public string ErrorInfo { get { return _mErrorInfo; } set { _mErrorInfo = value; OnPropertyChanged(); } } | ||||
private string _mErrorInfo; | private string _mErrorInfo; | ||||
@@ -143,6 +171,6 @@ namespace BPASmartClient.DosingSystem.ViewModel | |||||
public ObservableCollection<RawMaterialModel> RawMaterials { get; set; } = new ObservableCollection<RawMaterialModel>(); | public ObservableCollection<RawMaterialModel> RawMaterials { get; set; } = new ObservableCollection<RawMaterialModel>(); | ||||
public static ObservableCollection<string> RawMaterialNames { get; set; } = new ObservableCollection<string>(); | |||||
public ObservableCollection<string> RawMaterialNames { get; set; } = new ObservableCollection<string>(); | |||||
} | } | ||||
} | } |
@@ -17,6 +17,7 @@ using BPASmartClient.CustomResource.UserControls.Enum; | |||||
using System.Windows.Media; | using System.Windows.Media; | ||||
using BPASmartClient.CustomResource.UserControls.MessageShow; | using BPASmartClient.CustomResource.UserControls.MessageShow; | ||||
using BPASmartClient.CustomResource.Pages.Model; | using BPASmartClient.CustomResource.Pages.Model; | ||||
using BPASmartClient.Model; | |||||
namespace BPASmartClient.DosingSystem.ViewModel | namespace BPASmartClient.DosingSystem.ViewModel | ||||
{ | { | ||||
@@ -26,6 +27,12 @@ namespace BPASmartClient.DosingSystem.ViewModel | |||||
{ | { | ||||
//Json<LocaPar>.Read(); | //Json<LocaPar>.Read(); | ||||
Recipes = Json<LocaPar>.Data.Recipes; | Recipes = Json<LocaPar>.Data.Recipes; | ||||
NewMaterital = new RelayCommand(() => | |||||
{ | |||||
NewMaterialView newMateritalView = new NewMaterialView(); | |||||
newMateritalView.ShowDialog(); | |||||
}); | |||||
NewRecipe = new RelayCommand(() => | NewRecipe = new RelayCommand(() => | ||||
{ | { | ||||
NewRecipeView nrv = new NewRecipeView(); | NewRecipeView nrv = new NewRecipeView(); | ||||
@@ -60,8 +67,11 @@ namespace BPASmartClient.DosingSystem.ViewModel | |||||
MessageLog.GetInstance.ShowUserLog($"编辑配方名称——{res.RecipeName}"); | MessageLog.GetInstance.ShowUserLog($"编辑配方名称——{res.RecipeName}"); | ||||
} | } | ||||
}); | }); | ||||
} | } | ||||
public RelayCommand NewMaterital { get; set; } | |||||
public RelayCommand NewRecipe { get; set; } | public RelayCommand NewRecipe { get; set; } | ||||
public RelayCommand SaveRecipe { get; set; } | public RelayCommand SaveRecipe { get; set; } | ||||
@@ -1278,6 +1278,7 @@ Global | |||||
{BFA4E222-BBCC-4AC7-9EA4-4549AEF3174B} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} | {BFA4E222-BBCC-4AC7-9EA4-4549AEF3174B} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} | ||||
{75B55300-ABC3-4CA1-B9B6-DF954E6C7B44} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} | {75B55300-ABC3-4CA1-B9B6-DF954E6C7B44} = {8712125E-14CD-4E1B-A1CE-4BDE03805942} | ||||
{C0060FB3-7AEA-4D14-ADCE-DB78D3665D5B} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD} | {C0060FB3-7AEA-4D14-ADCE-DB78D3665D5B} = {666CB1A9-562E-453A-A2C7-FD9D77CFDFDD} | ||||
{1612F583-D328-45C6-8BB1-5D41B8F1D216} = {9FB27073-61A0-4FE3-94DB-5FDDE062332F} | |||||
{42D35B7C-764C-4692-AA85-9B343A0F5B7F} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625} | {42D35B7C-764C-4692-AA85-9B343A0F5B7F} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625} | ||||
{B8D499BA-A18A-4FD6-B036-44F02B4D164B} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625} | {B8D499BA-A18A-4FD6-B036-44F02B4D164B} = {3D1D0E04-03FD-480A-8CF8-6E01A2E28625} | ||||
EndGlobalSection | EndGlobalSection | ||||