Procházet zdrojové kódy

add platingcell ui

chenzk před 1 dnem
rodič
revize
eedd3a61ba

+ 22 - 0
PunkHPX8_MainPages/ViewModels/PlatingCellHomePageViewModel.cs

@@ -1,6 +1,7 @@
 using Aitex.Core.Common;
 using Aitex.Core.RT.DataCenter;
 using Aitex.Core.UI.MVVM;
+using Caliburn.Micro;
 using MECF.Framework.Common.CommonData.Metal;
 using MECF.Framework.Common.CommonData.PlatingCell;
 using MECF.Framework.Common.CommonData.PowerSupplier;
@@ -19,6 +20,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Threading.Tasks;
+using System.Windows.Forms.VisualStyles;
 using System.Windows.Input;
 using System.Windows.Threading;
 
@@ -71,6 +73,10 @@ namespace PunkHPX8_MainPages.ViewModels
         /// </summary>
         private bool _isEnabled;
         /// <summary>
+        /// UI左边部分启用
+        /// </summary>
+        private bool _isLeftEnabled;
+        /// <summary>
         /// AutoMode页面功能启用
         /// </summary>
         private bool _isAutoEnabled;
@@ -236,6 +242,14 @@ namespace PunkHPX8_MainPages.ViewModels
             set { SetProperty(ref _isEnabled, value); }
         }
         /// <summary>
+        /// 页面ui左边功能启用
+        /// </summary>
+        public bool IsLeftEnabled
+        {
+            get { return _isLeftEnabled; }
+            set { SetProperty(ref _isLeftEnabled, value); }
+        }
+        /// <summary>
         /// AutoMode页面功能启用
         /// </summary>
         public bool IsAutoEnabled
@@ -401,6 +415,14 @@ namespace PunkHPX8_MainPages.ViewModels
         public void LoadData(string systemName)
         {
             Module = systemName;
+            if (!String.IsNullOrEmpty(Module) && ("PlatingCell1".Equals(Module) || "PlatingCell3".Equals(Module)))
+            {
+                IsLeftEnabled = true;
+            }
+            else
+            {
+                IsLeftEnabled= false;
+            }
             RecipeModuleName = "DEP Recipe";
             RecipeType = "dep";
             _rtDataKeys.Clear();

+ 1 - 1
PunkHPX8_MainPages/Views/EfemView.xaml

@@ -263,7 +263,7 @@
 
         </StackPanel>
 
-        <StackPanel Orientation="Horizontal" Canvas.Bottom="150" Canvas.Left="100">
+        <StackPanel Orientation="Horizontal" Canvas.Top="670" Canvas.Left="100">
             <Grid  Width="470" Height="120" Visibility="{Binding IsLP1Installed, Converter={StaticResource bool2VisibilityConverter}}" IsEnabled="{Binding IsLP1Unable,Converter={StaticResource BoolToBool}}">
                 <Grid.RowDefinitions>
                     <RowDefinition Height="24"/>

+ 4 - 3
PunkHPX8_MainPages/Views/PlatingCellHomePageView.xaml

@@ -157,7 +157,7 @@
                     <Border Grid.Row="2" Grid.Column="2"  Margin="5,5,25,5" Background="Black">
                         <TextBlock   Text="mm"  Foreground="Lime" FontSize="16" FontWeight="Bold" HorizontalAlignment="Left" VerticalAlignment="Center"/>
                     </Border>
-                    <Border Grid.Row="3" Grid.Column="1"  Grid.ColumnSpan="2" Background="Black"  Height="30" Margin="5,5,25,5">
+                    <Border Grid.Row="3" Grid.Column="1"  Grid.ColumnSpan="2" Background="Black"  Margin="5,5,25,5">
                         <TextBlock Text="{Binding PlatingCellCommonData.OverFlowStatus}" Foreground="Lime" FontSize="14" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" />
                     </Border>
                     <Border Grid.Row="4" Grid.Column="1"  Margin="5,5,2,5" Background="Black">
@@ -225,9 +225,10 @@
 
                 </Grid>
             </GroupBox>
-            <UserControls:PlatingCellUIControl Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Grid.RowSpan="3" HorizontalAlignment="Center" Margin="-120,100,0,0"
+            <UserControls:PlatingCellUIControl Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Grid.RowSpan="3" HorizontalAlignment="Center" Margin="-320,5,0,0"
                                                 ModuleName="{Binding Module}"
-                                                ReservoirName="{Binding ReservoirName}" 
+                                                ReservoirName="{Binding ReservoirName}"
+                                                IsLeftEnable="{Binding IsLeftEnabled}"
                                                 ANIsolationValve="{Binding ReservoirCommonData.AnIsolation}"
                                                 CAIsolationValve="{Binding ReservoirCommonData.CaIsolation}"
                                      

+ 0 - 1
PunkHPX8_Themes/UserControls/PlatingCellStatusControl.xaml.cs

@@ -232,7 +232,6 @@ namespace PunkHPX8_Themes.UserControls
             }
         }
 
-
         private void ClamshellOpen_Click(object sender, RoutedEventArgs e)
         {
             InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ClamShellOpen");

+ 233 - 17
PunkHPX8_Themes/UserControls/PlatingCellUIControl.xaml

@@ -31,46 +31,189 @@
             <MenuItem Header="Close" Click="CloseANIsolationValve_Click"/>
         </ContextMenu>
     </UserControl.Resources>
-    <Canvas>
-        <Grid Height="50" Width="100" Canvas.Left="206" Canvas.Top="202" HorizontalAlignment="Center" VerticalAlignment="Top"  >
-                <Grid.RowDefinitions>
-                    <RowDefinition Height="30"></RowDefinition>
-                    <RowDefinition Height="20"></RowDefinition>
-                </Grid.RowDefinitions>
-                <Grid Grid.Row="0">
-                    <customControls:CommonValveControl Height="16" Width="16"   ValveOrientation="Horizontal" 
+    <Canvas RenderTransformOrigin="0,0">
+        <Canvas.RenderTransform>
+            <ScaleTransform ScaleX="1.2" ScaleY="1.2" />
+        </Canvas.RenderTransform>
+        <Canvas Width="125" Height="75" Canvas.Left="199" Canvas.Top="234" HorizontalAlignment="Left" VerticalAlignment="Center">
+            <Canvas.RenderTransform>
+                <ScaleTransform ScaleX="0.6667" ScaleY="0.6667" />
+            </Canvas.RenderTransform>
+            <Rectangle Width="200" Height="100" Fill="Yellow" Canvas.Top="0" />
+            <Rectangle Width="160" Height="60" Fill="Gold" Canvas.Top="26" Canvas.Left="20" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+            <Rectangle Width="180" Height="40" Fill="Bisque" Canvas.Top="0" Canvas.Left="7" HorizontalAlignment="Center" VerticalAlignment="Top"/>
+            <Polygon Points="0,20 10,0 20,20" Fill="Yellow" Canvas.Left="7" Canvas.Top="0" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Top">
+                <Polygon.RenderTransform>
+                    <TransformGroup>
+                        <ScaleTransform/>
+                        <SkewTransform/>
+                        <RotateTransform Angle="90"/>
+                        <TranslateTransform/>
+                    </TransformGroup>
+                </Polygon.RenderTransform>
+            </Polygon>
+            <Polygon Points="0,20 10,0 20,20" Fill="Yellow" Canvas.Left="168" Canvas.Top="0" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" VerticalAlignment="Center">
+                <Polygon.RenderTransform>
+                    <TransformGroup>
+                        <ScaleTransform/>
+                        <SkewTransform/>
+                        <RotateTransform Angle="-90"/>
+                        <TranslateTransform/>
+                    </TransformGroup>
+                </Polygon.RenderTransform>
+            </Polygon>
+            <Polygon Points="50,50 210,50 200,60 60,60" 
+        Fill="White"  
+        StrokeThickness="1" Canvas.Left="-30" Canvas.Top="-10"/>
+        </Canvas>
+
+        <Rectangle Width="100" Height="10" Fill="#E0F7FA" Canvas.Top="179" Canvas.Left="215" Stroke="LightGray" StrokeThickness="1" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Polygon Points="10,40 110,40 120,50 0,50" Fill="#E0F7FA" Canvas.Left="205" Canvas.Top="149" HorizontalAlignment="Left" VerticalAlignment="Center" Stroke="LightGray" StrokeThickness="1"/>
+        <Rectangle Fill="#E0F7FA"  Width="120" Height="35" Canvas.Top="199" Canvas.Left="205" Stroke="LightGray" StrokeThickness="3" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="Gold"  Width="80" Height="8" Canvas.Top="159" Canvas.Left="224" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Polygon Points="0,0 90,0 90,10 85,15 5,15 0,10" Fill="Orange" Canvas.Left="219" Canvas.Top="145" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="PeachPuff"  Width="30" Height="10" Canvas.Top="135" Canvas.Left="248" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="Thistle"  Width="3" Height="10" Canvas.Top="135" Canvas.Left="226" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="Thistle"  Width="3" Height="10" Canvas.Top="135" Canvas.Left="298" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="Thistle"  Width="85" Height="10" Canvas.Top="125" Canvas.Left="221" HorizontalAlignment="Left" VerticalAlignment="Center"  RadiusX="5" RadiusY="5"/>
+        <Rectangle Fill="LightGray"  Width="26" Height="5" Canvas.Top="120" Canvas.Left="250" Stroke="Gray" StrokeThickness="1" HorizontalAlignment="Left" VerticalAlignment="Top"/>
+        <Rectangle Fill="LightGray"  Width="20" Height="12" Canvas.Top="108" Canvas.Left="253" Stroke="Gray" StrokeThickness="1" HorizontalAlignment="Left" VerticalAlignment="Top"/>
+        <Rectangle Fill="LightGray"  Width="14" Height="4" Canvas.Top="104" Canvas.Left="256"  HorizontalAlignment="Left" VerticalAlignment="Top"/>
+        <Rectangle Fill="LightGray"  Width="40" Height="150" Canvas.Top="91" Canvas.Left="351" Stroke="Black" StrokeThickness="2" HorizontalAlignment="Left" VerticalAlignment="Top"/>
+        <Polygon Points="-20,0 60,0 80,30 120,30 140,0 220,0 220,10 150,10 120,80 80,80 50,10 -20,10" Fill="Lavender" Canvas.Left="271" Canvas.Top="95" HorizontalAlignment="Left" VerticalAlignment="Top"/>
+
+        <Rectangle Fill="Gold"  Width="80" Height="8" Canvas.Top="161" Canvas.Left="443" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Polygon Points="0,0 90,0 90,10 85,15 5,15 0,10" Fill="Orange" Canvas.Left="438" Canvas.Top="147" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="PeachPuff"  Width="30" Height="10" Canvas.Top="137" Canvas.Left="467" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="Thistle"  Width="3" Height="10" Canvas.Top="137" Canvas.Left="445" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="Thistle"  Width="3" Height="10" Canvas.Top="137" Canvas.Left="517" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="Thistle"  Width="85" Height="10" Canvas.Top="127" Canvas.Left="440"  RadiusX="5" RadiusY="5" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="LightGray"  Width="26" Height="5" Canvas.Top="122" Canvas.Left="468" Stroke="Gray" StrokeThickness="1" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="LightGray"  Width="20" Height="12" Canvas.Top="110" Canvas.Left="471" Stroke="Gray" StrokeThickness="1" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="LightGray"  Width="14" Height="4" Canvas.Top="106" Canvas.Left="474"  HorizontalAlignment="Left" VerticalAlignment="Center"/>
+
+        <Canvas Width="125" Height="75" Canvas.Left="417" Canvas.Top="235" HorizontalAlignment="Left" VerticalAlignment="Center">
+            <Canvas.RenderTransform>
+                <ScaleTransform ScaleX="0.6667" ScaleY="0.6667" />
+            </Canvas.RenderTransform>
+
+            <Rectangle Width="200" Height="100" Fill="Yellow" Canvas.Top="0" />
+            <Rectangle Width="160" Height="60" Fill="Gold" Canvas.Top="26" Canvas.Left="20" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+            <Rectangle Width="180" Height="40" Fill="Bisque" Canvas.Top="0" Canvas.Left="7" HorizontalAlignment="Center" VerticalAlignment="Top"/>
+            <Polygon Points="0,20 10,0 20,20" Fill="Yellow" Canvas.Left="7" Canvas.Top="0" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Top">
+                <Polygon.RenderTransform>
+                    <TransformGroup>
+                        <ScaleTransform/>
+                        <SkewTransform/>
+                        <RotateTransform Angle="90"/>
+                        <TranslateTransform/>
+                    </TransformGroup>
+                </Polygon.RenderTransform>
+            </Polygon>
+            <Polygon Points="0,20 10,0 20,20" Fill="Yellow" Canvas.Left="168" Canvas.Top="0" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Left" VerticalAlignment="Center">
+                <Polygon.RenderTransform>
+                    <TransformGroup>
+                        <ScaleTransform/>
+                        <SkewTransform/>
+                        <RotateTransform Angle="-90"/>
+                        <TranslateTransform/>
+                    </TransformGroup>
+                </Polygon.RenderTransform>
+            </Polygon>
+            <Polygon Points="50,50 210,50 200,60 60,60" 
+        Fill="White"  
+        StrokeThickness="1" Canvas.Left="-30" Canvas.Top="-10"/>
+        </Canvas>
+        <Rectangle Width="100" Height="10" Fill="#E0F7FA" Canvas.Top="180" Canvas.Left="433" Stroke="LightGray" StrokeThickness="1" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Polygon Points="10,40 110,40 120,50 0,50" Fill="#E0F7FA" Canvas.Left="423" Canvas.Top="150" Stroke="LightGray" StrokeThickness="1" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+        <Rectangle Fill="#E0F7FA"  Width="120" Height="35" Canvas.Top="200" Canvas.Left="423" Stroke="LightGray" StrokeThickness="3" HorizontalAlignment="Left" VerticalAlignment="Center"/>
+
+        <Label Content="To AN Tower" FontSize="10" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Top" HorizontalAlignment="Left" Canvas.Left="77" Canvas.Top="259"/>
+        <Label Content="To AN Tower" FontSize="10" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Top" HorizontalAlignment="Left" Canvas.Left="587" Canvas.Top="259"/>
+        <Label Content="Res Return" FontSize="10" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Top" HorizontalAlignment="Left" Canvas.Left="583" Canvas.Top="310"/>
+        <Label Content="Res Return" FontSize="10" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Top" HorizontalAlignment="Left" Canvas.Left="95" Canvas.Top="303"/>
+        <Label Content="Res Source" FontSize="10" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Top" HorizontalAlignment="Center" Canvas.Left="95" Canvas.Top="331"/>
+        <Label Content="Res Source" FontSize="10" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Top" HorizontalAlignment="Left" Canvas.Left="579" Canvas.Top="338"/>
+
+        <Label Content="{Binding ElementName=self,Path=ModuleName}" Visibility="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource boolToVisibility2}}" FontSize="10" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Top" HorizontalAlignment="Left" Canvas.Left="228" Canvas.Top="64"/>
+        <Label Content="{Binding ElementName=self,Path=ModuleName}" Visibility="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource boolToVisibility}}" FontSize="10" FontWeight="Bold" VerticalContentAlignment="Center" HorizontalContentAlignment="Left" VerticalAlignment="Top" HorizontalAlignment="Left" Canvas.Left="450" Canvas.Top="64"/>
+
+
+        <userControls:FlowPipe IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}" IsReverse="True" IsFlowing="{Binding ElementName=self,Path=CCRValve}" Height="8"  Width="140"  Canvas.Left="65"  Canvas.Top="200" RotateTransformValue="0" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}" IsReverse="True" IsFlowing="{Binding ElementName=self,Path=RinseValve}" Height="8"  Width="140"  Canvas.Left="67"  Canvas.Top="224" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Center" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}" IsReverse="True" IsFlowing="True" Height="8"  Width="40"  Canvas.Left="160"  Canvas.Top="266" RotateTransformValue="0" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}" IsReverse="True" IsFlowing="True" Height="8"  Width="60"  Canvas.Left="161"  Canvas.Top="313" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}" IsReverse="True" IsFlowing="{Binding ElementName=self,Path=CAIsolationValve}" Height="8"  Width="110"  Canvas.Left="160"  Canvas.Top="339" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}" IsReverse="True" IsFlowing="{Binding ElementName=self,Path=ANIsolationValve}" Height="8"  Width="80"  Canvas.Left="236"  Canvas.Top="367" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}" IsReverse="False" IsFlowing="True" Height="8"  Width="50"  Canvas.Left="273"  Canvas.Top="296" RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}" IsReverse="False" IsFlowing="True" Height="8"  Width="20"  Canvas.Left="225"  Canvas.Top="301" RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}" IsReverse="False" IsFlowing="True" Height="8"  Width="75"  Canvas.Left="316"  Canvas.Top="299" RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+
+        <userControls:FlowPipe IsReverse="True" IsFlowing="{Binding ElementName=self,Path=CCRValve}" Height="8"  Width="140"  Canvas.Left="65"  Canvas.Top="200" RotateTransformValue="0" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsReverse="True" IsFlowing="{Binding ElementName=self,Path=RinseValve}" Height="8"  Width="140"  Canvas.Left="67"  Canvas.Top="224" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Center" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsReverse="True" IsFlowing="True" Height="8"  Width="40"  Canvas.Left="160"  Canvas.Top="266" RotateTransformValue="0" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsReverse="True" IsFlowing="True" Height="8"  Width="60"  Canvas.Left="161"  Canvas.Top="313" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsReverse="True" IsFlowing="{Binding ElementName=self,Path=CAIsolationValve}" Height="8"  Width="110"  Canvas.Left="160"  Canvas.Top="339" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsReverse="True" IsFlowing="{Binding ElementName=self,Path=ANIsolationValve}" Height="8"  Width="80"  Canvas.Left="236"  Canvas.Top="367" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsReverse="False" IsFlowing="True" Height="8"  Width="50"  Canvas.Left="273"  Canvas.Top="296" RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsReverse="False" IsFlowing="True" Height="8"  Width="20"  Canvas.Left="225"  Canvas.Top="301" RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe IsReverse="False" IsFlowing="True" Height="8"  Width="75"  Canvas.Left="316"  Canvas.Top="299" RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+
+
+
+        <userControls:FlowPipe  IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}" IsReverse="True" IsFlowing="{Binding ElementName=self,Path=CCRValve}" Height="8"  Width="140"  Canvas.Left="541"  Canvas.Top="200" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Center" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe  IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}" IsReverse="True" IsFlowing="{Binding ElementName=self,Path=RinseValve}" Height="8"  Width="140"  Canvas.Left="541"  Canvas.Top="224" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Center" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe  IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}" IsReverse="False" IsFlowing="True" Height="8"  Width="40"  Canvas.Left="542"  Canvas.Top="263" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Center" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe  IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}" IsReverse="False" IsFlowing="True" Height="8"  Width="60"  Canvas.Left="518"  Canvas.Top="318" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe  IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}" IsReverse="True" IsFlowing="{Binding ElementName=self,Path=CAIsolationValve}" Height="8"  Width="110"  Canvas.Left="470"  Canvas.Top="343" RotateTransformValue="0" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe  IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}" IsReverse="True" IsFlowing="{Binding ElementName=self,Path=ANIsolationValve}" Height="8"  Width="80"  Canvas.Left="432"  Canvas.Top="368" RotateTransformValue="0" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe  IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}" IsReverse="False" IsFlowing="True" Height="8"  Width="50"  Canvas.Left="476"  Canvas.Top="301" RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe  IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}" IsReverse="False" IsFlowing="True" Height="8"  Width="20"  Canvas.Left="525"  Canvas.Top="301" RotateTransformValue="90" HorizontalAlignment="Center" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+        <userControls:FlowPipe  IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}" IsReverse="False" IsFlowing="True" Height="8"  Width="75"  Canvas.Left="440"  Canvas.Top="298" RotateTransformValue="90" HorizontalAlignment="Left" VerticalAlignment="Top" Panel.ZIndex="-1"/>
+
+
+        <Grid Height="50" Width="100" Canvas.Left="99" Canvas.Top="188" HorizontalAlignment="Left" VerticalAlignment="Top"  >
+            <Grid.RowDefinitions>
+                <RowDefinition Height="30"></RowDefinition>
+                <RowDefinition Height="20"></RowDefinition>
+            </Grid.RowDefinitions>
+            <Grid Grid.Row="0">
+                <customControls:CommonValveControl Height="16" Width="16"   ValveOrientation="Horizontal" 
+                          IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}"
                           Status="{Binding ElementName=self,Path=CCRValve}"  
                           IsCanEdit="True" 
                           ContextMenu="{StaticResource CCRValve}"/>
-                </Grid>
-                <Grid Grid.Row="1" >
-                    <Label Margin="35,0,0,0" Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="CCR" />
-                </Grid>
             </Grid>
+            <Grid Grid.Row="1" >
+                <Label Margin="35,-80,0,0" Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="CCR"  />
+            </Grid>
+        </Grid>
 
-        <Grid Height="50" Width="100" Canvas.Left="306" Canvas.Top="202" HorizontalAlignment="Center" VerticalAlignment="Top"  >
+        <Grid Height="50" Width="100" Canvas.Left="99" Canvas.Top="213" HorizontalAlignment="Left" VerticalAlignment="Top"  >
             <Grid.RowDefinitions>
                 <RowDefinition Height="30"></RowDefinition>
                 <RowDefinition Height="20"></RowDefinition>
             </Grid.RowDefinitions>
             <Grid Grid.Row="0">
                 <customControls:CommonValveControl Height="16" Width="16"   ValveOrientation="Horizontal" 
+                                                    IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}"
               Status="{Binding ElementName=self,Path=RinseValve}"  
               IsCanEdit="True" 
               ContextMenu="{StaticResource RinseValve}"/>
             </Grid>
             <Grid Grid.Row="1" >
-                <Label Margin="30,0,0,0" Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="Rinse" />
+                <Label Margin="30,-10,0,0" Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="Rinse" />
             </Grid>
         </Grid>
 
-        <Grid Height="50" Width="100" Canvas.Left="306" Canvas.Top="402" HorizontalAlignment="Center" VerticalAlignment="Top"  >
+        <Grid Height="50" Width="100" Canvas.Left="237" Canvas.Top="355" HorizontalAlignment="Left" VerticalAlignment="Top"  >
             <Grid.RowDefinitions>
                 <RowDefinition Height="30"></RowDefinition>
                 <RowDefinition Height="20"></RowDefinition>
             </Grid.RowDefinitions>
             <Grid Grid.Row="0">
                 <customControls:CommonValveControl Height="16" Width="16"   ValveOrientation="Horizontal" 
+                                                    IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}"
                 Status="{Binding ElementName=self,Path=ANIsolationValve}"  
                 IsCanEdit="True" 
                 ContextMenu="{StaticResource ANIsolationValve}"/>
@@ -80,19 +223,92 @@
             </Grid>
         </Grid>
 
-        <Grid Height="50" Width="100" Canvas.Left="306" Canvas.Top="302" HorizontalAlignment="Center" VerticalAlignment="Top"  >
+        <Grid Height="50" Width="100" Canvas.Left="164" Canvas.Top="328" HorizontalAlignment="Left" VerticalAlignment="Top"  >
             <Grid.RowDefinitions>
                 <RowDefinition Height="30"></RowDefinition>
                 <RowDefinition Height="20"></RowDefinition>
             </Grid.RowDefinitions>
             <Grid Grid.Row="0">
                 <customControls:CommonValveControl Height="16" Width="16"   ValveOrientation="Horizontal" 
+                                                    IsEnabled="{Binding ElementName=self,Path=IsLeftEnable}"
                         Status="{Binding ElementName=self,Path=CAIsolationValve}"  
                         IsCanEdit="True" 
                         ContextMenu="{StaticResource CAIsolationValve}"/>
             </Grid>
             <Grid Grid.Row="1" >
-                <Label Margin="13,0,0,0" Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="CA Isolation" />
+                <Label Margin="13,-20,0,0" Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="CA Isolation" />
+            </Grid>
+        </Grid>
+
+        <Grid Height="50" Width="100" Canvas.Left="538" Canvas.Top="188" HorizontalAlignment="Left" VerticalAlignment="Top"  >
+            <Grid.RowDefinitions>
+                <RowDefinition Height="30"></RowDefinition>
+                <RowDefinition Height="20"></RowDefinition>
+            </Grid.RowDefinitions>
+            <Grid Grid.Row="0">
+                <customControls:CommonValveControl Height="16" Width="16"   ValveOrientation="Horizontal" 
+                                                    IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}"
+                  Status="{Binding ElementName=self,Path=CCRValve}"  
+                  IsCanEdit="True" 
+                  ContextMenu="{StaticResource CCRValve}"/>
+            </Grid>
+            <Grid Grid.Row="1" >
+                <Label Margin="35,-80,0,0" Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="CCR" />
+            </Grid>
+        </Grid>
+
+        <Grid Height="50" Width="100" Canvas.Left="538" Canvas.Top="213" HorizontalAlignment="Left" VerticalAlignment="Top"  >
+            <Grid.ColumnDefinitions>
+                <ColumnDefinition Width="21*"/>
+                <ColumnDefinition Width="79*"/>
+            </Grid.ColumnDefinitions>
+            <Grid.RowDefinitions>
+                <RowDefinition Height="30"></RowDefinition>
+                <RowDefinition Height="20"></RowDefinition>
+            </Grid.RowDefinitions>
+            <Grid Grid.Row="0" Grid.ColumnSpan="2">
+                <customControls:CommonValveControl Height="16" Width="16"   ValveOrientation="Horizontal" 
+                                                    IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}"
+                Status="{Binding ElementName=self,Path=RinseValve}"  
+                IsCanEdit="True" 
+                ContextMenu="{StaticResource RinseValve}"/>
+            </Grid>
+            <Grid Grid.Row="1" Grid.ColumnSpan="2" >
+                <Label Margin="30,-20,0,0" Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="Rinse" />
+            </Grid>
+        </Grid>
+
+        <Grid Height="50" Width="100" Canvas.Left="412" Canvas.Top="356" HorizontalAlignment="Left" VerticalAlignment="Top"  >
+            <Grid.RowDefinitions>
+                <RowDefinition Height="30"></RowDefinition>
+                <RowDefinition Height="20"></RowDefinition>
+            </Grid.RowDefinitions>
+            <Grid Grid.Row="0">
+                <customControls:CommonValveControl Height="16" Width="16"   ValveOrientation="Horizontal" 
+                                                    IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}"
+                Status="{Binding ElementName=self,Path=ANIsolationValve}"  
+                IsCanEdit="True" 
+                ContextMenu="{StaticResource ANIsolationValve}"/>
+            </Grid>
+            <Grid Grid.Row="1" >
+                <Label Margin="13,0,0,0" Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="AN Isolation" />
+            </Grid>
+        </Grid>
+
+        <Grid Height="50" Width="100" Canvas.Left="466" Canvas.Top="331" HorizontalAlignment="Left" VerticalAlignment="Top"  >
+            <Grid.RowDefinitions>
+                <RowDefinition Height="30"></RowDefinition>
+                <RowDefinition Height="20"></RowDefinition>
+            </Grid.RowDefinitions>
+            <Grid Grid.Row="0">
+                <customControls:CommonValveControl Height="16" Width="16"   ValveOrientation="Horizontal" 
+                                                    IsEnabled="{Binding ElementName=self,Path=IsLeftEnable,Converter={StaticResource BoolToBool}}"
+                Status="{Binding ElementName=self,Path=CAIsolationValve}"  
+                IsCanEdit="True" 
+                ContextMenu="{StaticResource CAIsolationValve}"/>
+            </Grid>
+            <Grid Grid.Row="1" >
+                <Label Margin="13,-20,0,0" Height="20" Width="100" FontSize="10"  FontWeight="Bold" Content="CA Isolation" />
             </Grid>
         </Grid>
     </Canvas>

+ 17 - 1
PunkHPX8_Themes/UserControls/PlatingCellUIControl.xaml.cs

@@ -130,6 +130,23 @@ namespace PunkHPX8_Themes.UserControls
             }
         }
 
+        public static readonly DependencyProperty IsLeftEnableProperty = DependencyProperty.Register(
+           "IsLeftEnable", typeof(bool), typeof(PlatingCellUIControl), new FrameworkPropertyMetadata(true, FrameworkPropertyMetadataOptions.AffectsRender));
+        /// <summary>
+        /// IsLeftEnable
+        /// </summary>
+        public bool IsLeftEnable
+        {
+            get
+            {
+                return (bool)this.GetValue(IsLeftEnableProperty);
+            }
+            set
+            {
+                this.SetValue(IsLeftEnableProperty, value);
+            }
+        }
+
         private void OpenCCRValve_Click(object sender, RoutedEventArgs e)
         {
 
@@ -170,6 +187,5 @@ namespace PunkHPX8_Themes.UserControls
             InvokeClient.Instance.Service.DoOperation($"{ReservoirName}.ANIsolationOff");
         }
 
-       
     }
 }

+ 24 - 0
PunkHPX8_UI/Config/UIMenu.json

@@ -88,6 +88,22 @@
 				"IsShow": "true",
 				"MenuItem": [
 					{
+						"Id": "PlatingCell1",
+						"ModuleName": "PlatingCell1",
+						"Name": "PlatingCell1",
+						"IsInit": "true",
+						"IsShow": "true",
+						"View": "PlatingCellHomePageView"
+					},
+					{
+						"Id": "PlatingCell2",
+						"ModuleName": "PlatingCell2",
+						"Name": "PlatingCell2",
+						"IsInit": "true",
+						"IsShow": "true",
+						"View": "PlatingCellHomePageView"
+					},
+					{
 						"Id": "PlatingCell3",
 						"ModuleName": "PlatingCell3",
 						"Name": "PlatingCell3",
@@ -95,6 +111,14 @@
 						"IsShow": "true",
 						"View": "PlatingCellHomePageView"
 					},
+					{
+						"Id": "PlatingCell4",
+						"ModuleName": "PlatingCell4",
+						"Name": "PlatingCell4",
+						"IsInit": "true",
+						"IsShow": "true",
+						"View": "PlatingCellHomePageView"
+					}
 				]
 			},
 			{

+ 48 - 0
PunkHPX8_UI/Config/UIMenu_permission.json

@@ -62,8 +62,20 @@
 						"MenuName": "PlatingCells",
 						"Menus": [
 							{
+								"MenuName": "PlatingCell1",
+								"Permission": 2
+							},
+							{
+								"MenuName": "PlatingCell2",
+								"Permission": 2
+							},
+							{
 								"MenuName": "PlatingCell3",
 								"Permission": 2
+							},
+							{
+								"MenuName": "PlatingCell4",
+								"Permission": 2
 							}
 						]
 					},
@@ -398,8 +410,20 @@
 						"MenuName": "PlatingCells",
 						"Menus": [
 							{
+								"MenuName": "PlatingCell1",
+								"Permission": 2
+							},
+							{
+								"MenuName": "PlatingCell2",
+								"Permission": 2
+							},
+							{
 								"MenuName": "PlatingCell3",
 								"Permission": 2
+							},
+							{
+								"MenuName": "PlatingCell4",
+								"Permission": 2
 							}
 						]
 					},
@@ -730,8 +754,20 @@
 						"MenuName": "PlatingCells",
 						"Menus": [
 							{
+								"MenuName": "PlatingCell1",
+								"Permission": 2
+							},
+							{
+								"MenuName": "PlatingCell2",
+								"Permission": 2
+							},
+							{
 								"MenuName": "PlatingCell3",
 								"Permission": 2
+							},
+							{
+								"MenuName": "PlatingCell4",
+								"Permission": 2
 							}
 						]
 					},
@@ -1038,9 +1074,21 @@
 						"MenuName": "PlatingCells",
 						"Menus": [
 							{
+								"MenuName": "PlatingCell1",
+								"Permission": 2
+							},
+							{
+								"MenuName": "PlatingCell2",
+								"Permission": 2
+							},
+							{
 								"MenuName": "PlatingCell3",
 								"Permission": 2
 							},
+							{
+								"MenuName": "PlatingCell4",
+								"Permission": 2
+							}
 						]
 					},
 					{