Forráskód Böngészése

xls:增加局部同步项目数据

xulisong 6 éve
szülő
commit
71814978d4

BIN
MBI/Dlls/FirmLibDll/FWindSoft.Wpf.dll


BIN
MBI/Dlls/FirmLibDll/FWindSoft.Wpf.pdb


BIN
MBI/Dlls/FirmLibDll/FWindSoft.dll


BIN
MBI/Dlls/FirmLibDll/FWindSoft.pdb


+ 1 - 0
MBI/FirmLib/Com.FirmLib.UI/Com.FirmLib.UI.csproj

@@ -299,6 +299,7 @@
     <Compile Include="Seller\WinSupplyContractNoSelector.xaml.cs">
       <DependentUpon>WinSupplyContractNoSelector.xaml</DependentUpon>
     </Compile>
+    <Compile Include="Common\SingleInstance.cs" />
     <Compile Include="WinFirmMain.xaml.cs">
       <DependentUpon>WinFirmMain.xaml</DependentUpon>
     </Compile>

+ 63 - 0
MBI/FirmLib/Com.FirmLib.UI/Common/SingleInstance.cs

@@ -0,0 +1,63 @@
+/*-------------------------------------------------------------------------
+ * 功能描述:SingleInstance
+ * 作者:xulisong
+ * 创建时间: 2018/12/21 9:01:34
+ * 版本号:v1.0
+ *  -------------------------------------------------------------------------*/
+
+using FWindSoft.Wpf;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Reflection;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+
+namespace Com.FirmLib.UI
+{
+    public class WindowSingleInstance<T> where T:Window
+    {
+        private readonly Func<T> m_CreateInstance;
+        public WindowSingleInstance()
+        {
+            m_CreateInstance = CreateInstance;
+        }
+        public WindowSingleInstance(Func<T> createInstance)
+        {
+            m_CreateInstance = createInstance;
+        }
+
+        protected T CreateInstance()
+        {
+            Type type = typeof(T);
+            ConstructorInfo  construct = type.GetConstructor(Type.EmptyTypes);
+            if (construct == null)
+                return default(T);
+            return (T)construct.Invoke(null);
+        }
+        protected T m_Target;
+        /// <summary>
+        /// 目标信息
+        /// </summary>
+        public virtual T Target
+        {
+            get
+            {
+                if (m_Target == null||m_Target.IsDisposed())
+                {
+                    if (m_CreateInstance!=null)
+                    {
+                        m_Target = m_CreateInstance();
+                    }                  
+                }
+                else
+                {
+                    m_Target.Visibility = Visibility.Visible;
+                    m_Target.Activate();
+                }
+                return m_Target;
+            }
+        }      
+    }  
+}

+ 67 - 0
MBI/FirmLib/Com.FirmLib.UI/Insuer/VmInsuerInfo.cs

@@ -12,6 +12,7 @@ using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 using System.Windows;
 using Com.FirmLib.Bll;
@@ -23,6 +24,7 @@ using FWindSoft.DataFramework;
 using FWindSoft.MVVM;
 using FWindSoft.Wpf;
 using FWindSoft.SystemExtensions;
+using FWindSoft.Tools;
 
 namespace Com.FirmLib.UI.Insuer
 {
@@ -152,7 +154,57 @@ namespace Com.FirmLib.UI.Insuer
         {
             return true;
         }
+        /// <summary>
+        /// 刷新动画
+        /// </summary>
+        /// <param name="parameter"></param>
+        [Command]
+        public void RefreshCommand(object parameter)
+        {
+            var item = parameter as ProjectRelationShowItem;
+            if (item != null)
+            {
+                item.IsLoading = true;
+                TaskUtil.StartSTATask((obj) =>
+              {
+                  var useItem = obj as ProjectRelationShowItem;
+                  if (useItem == null)
+                      return;
+                  try
+                  {
+                      BllFactory<ProjectBll>.Instance.ProjectSync(useItem.ProjectId);
+                      Thread.Sleep(3000);//立即执行偶尔导致连接取消
+                      var projects = BllFactory<InsuerBll>.Instance.GetProjectItems(Id);
+                      foreach (var project in projects)
+                      {
+                          if (project.Id == useItem.ProjectId)
+                          {
+                              useItem.AssetCount = (int)project.TotalCount.ToDouble();
+                              useItem.InsurancePolicyCount = (int)project.ContractCount.ToDouble();
+                          }
+
+                      }
+                  }
+                  catch (Exception ex)
+                  {
+                      MessageTipEx.Show(ex);
+                  }
 
+                  finally
+                  {
+
+                      useItem.IsLoading = false;
+                  }
+              }, item);
+
+            }
+
+
+        }
+        public bool CanRefreshCommand(object parameter)
+        {
+            return true;
+        }
         #endregion
 
         #region 公开方法
@@ -289,5 +341,20 @@ namespace Com.FirmLib.UI.Insuer
                 RaisePropertyChanged(() => this.AssetCount);
             }
         }
+
+
+        private bool m_IsLoading;
+        /// <summary>
+        /// 加载数据
+        /// </summary>
+        public bool IsLoading
+        {
+            get { return this.m_IsLoading; }
+            set
+            {
+                this.m_IsLoading = value;
+                RaisePropertyChanged(nameof(this.IsLoading));
+            }
+        }
     }
 }

+ 13 - 2
MBI/FirmLib/Com.FirmLib.UI/Insuer/WinInsuerInfo.xaml

@@ -62,14 +62,25 @@
                             <Setter Property="Template">
                                 <Setter.Value>
                                     <ControlTemplate TargetType="{x:Type ListBoxItem}">
-                                        <Border BorderThickness="1"  BorderBrush="Black" Margin="5" Padding="5">
+                                        <Border BorderThickness="1"  BorderBrush="Black" Margin="5" Padding="5" fw:MaskOptions.IsManualHide="true" fw:MaskOptions.IsShow="{Binding IsLoading}">
+                                               <fw:MaskOptions.MaskTemplate>
+                                            <ControlTemplate>
+                                                <Border Background="Gray" Opacity="0.5">
+                                                    <ProgressBar  VerticalAlignment="Center" Margin="5" IsIndeterminate="True"></ProgressBar>
+                                                </Border>
+                                            </ControlTemplate>
+                                        </fw:MaskOptions.MaskTemplate>
                                             <Grid Width="150" Height="80" >
                                                 <Grid.RowDefinitions>
                                                     <RowDefinition></RowDefinition>
                                                     <RowDefinition Height="Auto"></RowDefinition>
                                                 </Grid.RowDefinitions>
                                                 <StackPanel Orientation="Vertical" Grid.Row="0">
-                                                    <TextBlock Margin="5,0,5,0" Name="TxtName" FontSize="20" Text="{Binding ProjectLocalName}"></TextBlock>
+                                                    <Grid>
+                                                         <TextBlock Margin="5,0,5,0" Name="TxtName" FontSize="20" Text="{Binding ProjectLocalName}"></TextBlock>
+                                                         <Button  HorizontalAlignment="Right" VerticalAlignment="Center" Content="刷新" Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.LinkButtonKey}}" Command="{Binding Data.Commands.RefreshCommand,Source={StaticResource ResourceKey=DATA}}" CommandParameter="{Binding}" ></Button>
+                                                    </Grid>
+                                                  
                                                     <StackPanel Orientation="Horizontal">
                                                         <TextBlock Margin="5,0,5,0"  Text="涉及的保单:"  />
                                                         <TextBlock Margin="5,0,5,0" x:Name="TXTN" Text="{Binding InsurancePolicyCount}" TextDecorations="Underline"/>

+ 66 - 0
MBI/FirmLib/Com.FirmLib.UI/Maintainer/VmMaintainerInfo.cs

@@ -12,6 +12,7 @@ using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 using System.Windows;
 using Com.FirmLib.Bll;
@@ -21,6 +22,7 @@ using Com.FirmLib.UI.Maintainer.Mode;
 using FWindSoft.Data;
 using FWindSoft.DataFramework;
 using FWindSoft.MVVM;
+using FWindSoft.Tools;
 using FWindSoft.Wpf;
 
 namespace Com.FirmLib.UI.Maintainer
@@ -281,7 +283,56 @@ namespace Com.FirmLib.UI.Maintainer
         {
             return true;
         }
+        /// <summary>
+        /// 刷新动画
+        /// </summary>
+        /// <param name="parameter"></param>
+        [Command]
+        public void RefreshCommand(object parameter)
+        {
+            var item = parameter as ProjectMaintainerAssetItem;
+            if (item != null)
+            {
+                item.IsLoading = true;
+               TaskUtil.StartSTATask((obj) =>
+              {
+                  var useItem = obj as ProjectMaintainerAssetItem;
+                  if (useItem == null)
+                      return;
+                  try
+                  {
+                      BllFactory<ProjectBll>.Instance.ProjectSync(useItem.ProjectId);
+                      Thread.Sleep(3000);//立即执行偶尔导致连接取消
+                      var projects = BllFactory<MaintainerBll>.Instance.GetProjectItems(Id);
+                      foreach (var project in projects)
+                      {
+                          if (project.Id == useItem.ProjectId)
+                          {
+                              useItem.ValidityAssetCount = project.TotalCount;
+                              useItem.NearOutDateAssetCount = project.NearlyExpireCount;
+                          }
+                      }
+                  }
+                  catch (Exception ex)
+                  {
+                      MessageTipEx.Show(ex);
+                  }
+
+                  finally
+                  {
+
+                      useItem.IsLoading = false;
+                  }
+              }, item);
+
+            }
 
+
+        }
+        public bool CanRefreshCommand(object parameter)
+        {
+            return true;
+        }
         #endregion
 
         #region 公开方法
@@ -492,6 +543,21 @@ namespace Com.FirmLib.UI.Maintainer
             }
         }
 
+
+        private bool m_IsLoading;
+        /// <summary>
+        /// 加载数据
+        /// </summary>
+        public bool IsLoading
+        {
+            get { return this.m_IsLoading; }
+            set
+            {
+                this.m_IsLoading = value;
+                RaisePropertyChanged(nameof(this.IsLoading));
+            }
+        }
+
     }
 
     /// <summary>

+ 14 - 2
MBI/FirmLib/Com.FirmLib.UI/Maintainer/WinMaintainerInfo.xaml

@@ -176,14 +176,26 @@
                             <Setter Property="Template">
                                 <Setter.Value>
                                     <ControlTemplate TargetType="{x:Type ListBoxItem}">
-                                        <Border BorderThickness="1"  BorderBrush="Black" Margin="5" Padding="5">
+                                        <Border BorderThickness="1"  BorderBrush="Black" Margin="5" Padding="5" fw:MaskOptions.IsManualHide="true" fw:MaskOptions.IsShow="{Binding IsLoading}">
+<fw:MaskOptions.MaskTemplate>
+                                            <ControlTemplate>
+                                                <Border Background="Gray" Opacity="0.5">
+                                                    <ProgressBar  VerticalAlignment="Center" Margin="5" IsIndeterminate="True"></ProgressBar>
+                                                </Border>
+                                            </ControlTemplate>
+                                        </fw:MaskOptions.MaskTemplate>
+
                                             <Grid Width="170" Height="80" >
                                                 <Grid.RowDefinitions>
                                                     <RowDefinition></RowDefinition>
                                                     <RowDefinition Height="Auto"></RowDefinition>
                                                 </Grid.RowDefinitions>
                                                 <StackPanel Orientation="Vertical" Grid.Row="0">
-                                                    <TextBlock Margin="5,0,5,0" Name="TxtName" FontSize="20" Text="{Binding ProjectLocalName}"></TextBlock>
+                                                    <Grid>
+                                                          <TextBlock Margin="5,0,5,0" Name="TxtName" FontSize="20" Text="{Binding ProjectLocalName}"></TextBlock>
+                                                          <Button  HorizontalAlignment="Right" VerticalAlignment="Center" Content="刷新" Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.LinkButtonKey}}" Command="{Binding Data.Commands.RefreshCommand,Source={StaticResource ResourceKey=DATA}}" CommandParameter="{Binding}" ></Button>
+                                                    </Grid>
+                                                  
                                                     <StackPanel Orientation="Horizontal">
                                                         <TextBlock Margin="5,0,5,0"  Text="维护合同有效期内的资产:"  />
                                                         <TextBlock Margin="5,0,5,0" x:Name="TXTN" Text="{Binding ValidityAssetCount}" TextDecorations="Underline"/>

+ 70 - 1
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/VmManufactureInfo.cs

@@ -11,6 +11,8 @@ using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
 using System.Windows;
 using Com.FirmLib.Bll;
 using Com.FirmLib.Entity;
@@ -19,6 +21,7 @@ using Com.FirmLib.UI.Manufacturer.Model;
 using FWindSoft.Data;
 using FWindSoft.DataFramework;
 using FWindSoft.MVVM;
+using FWindSoft.Tools;
 using FWindSoft.Wpf;
 
 namespace Com.FirmLib.UI.Manufacturer
@@ -412,6 +415,57 @@ namespace Com.FirmLib.UI.Manufacturer
             return true;
         }
 
+
+        /// <summary>
+        /// 刷新动画
+        /// </summary>
+        /// <param name="parameter"></param>
+        [Command]
+        public void RefreshCommand(object parameter)
+        {
+            var item = parameter as ProjectAssetShowItem;
+            if (item != null)
+            {
+                item.IsLoading = true;          
+                TaskUtil.StartSTATask((obj) =>
+                {
+                    var useItem = obj as ProjectAssetShowItem;
+                    if (useItem == null)
+                        return;
+                    try
+                    {
+                        BllFactory<ProjectBll>.Instance.ProjectSync(useItem.ProjectId);
+                        Thread.Sleep(3000);//立即执行偶尔导致连接取消
+                        var projectAssetItems = BllFactory<ManufacturerBll>.Instance.GetProjectItems(Id);
+                        foreach (var dataItem in projectAssetItems)
+                        {
+                            if (dataItem.Id == useItem.ProjectId)
+                            {
+                                useItem.AssetCount = dataItem.TotalCount.ToString();
+                            }
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        MessageTipEx.Show(ex);
+                    }
+
+                    finally
+                    {
+
+                        useItem.IsLoading = false;
+                    }
+                }, item);
+            
+            }
+
+           
+        }
+        public bool CanRefreshCommand(object parameter)
+        {
+            return true;
+        }
+
         #endregion
         #region 单条修改模块
         public bool UpdateManufacture()
@@ -479,7 +533,7 @@ namespace Com.FirmLib.UI.Manufacturer
         }
 
         /// <summary>
-        /// 加载目资产信息
+        /// 加载目资产信息
         /// </summary>
         /// <param name="manufactureId"></param>
         private void LoadProjectAssetItems(string manufactureId)
@@ -669,5 +723,20 @@ namespace Com.FirmLib.UI.Manufacturer
                 RaisePropertyChanged(() => this.AssetCount);
             }
         }
+
+
+        private bool m_IsLoading;
+        /// <summary>
+        /// 是否在加载
+        /// </summary>
+        public bool IsLoading
+        {
+            get { return this.m_IsLoading; }
+            set
+            {
+                this.m_IsLoading = value;
+                RaisePropertyChanged(nameof(this.IsLoading));
+            }
+        }
     }
 }

+ 29 - 16
MBI/FirmLib/Com.FirmLib.UI/Manufacturer/WinManufactureInfo.xaml

@@ -48,7 +48,7 @@
                                  Command="{x:Static bllCommon:EditCommands.SingleUpdate}" CommandParameter="{Binding RelativeSource={RelativeSource Self}}">
                 </fw:TextBoxEditor>
                 <!--<Button Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.ButtonKey}}"  Height="23"  Margin="10"  fw:ButtonOptions.Icon="../Images/修改.jpg" Padding="0"/>-->
-                
+
             </StackPanel>
             <StackPanel Grid.Row="0" Grid.Column="1" Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Right">
                 <Button Command="{Binding Commands.AddBranchCommand}" Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.ButtonKey}}"  Height="23"  Margin="10" Content="添加品牌"/>
@@ -62,9 +62,9 @@
                 </ItemsPanelTemplate>
             </ListBox.ItemsPanel>
             <ListBox.ItemContainerStyle>
-                
+
                 <Style TargetType="{x:Type ListBoxItem}">
-                  
+
                     <Setter Property="Template">
                         <Setter.Value>
                             <ControlTemplate TargetType="{x:Type ListBoxItem}">
@@ -113,7 +113,7 @@
                                 <MenuItem Header="删除" Command="{Binding Data.Commands.DeleteCommand,Source={StaticResource ResourceKey=DATA}}" CommandParameter="{Binding }"></MenuItem>
                             </ContextMenu>
                         </Setter.Value>
-                      
+
                     </Setter>
                     <Setter Property="Height" Value="30"></Setter>
                     <Style.Triggers>
@@ -136,7 +136,7 @@
                                 <Button IsEnabled="False" Command="{Binding Data.Commands.ManageTypeCommand,Source={StaticResource ResourceKey=DATA} }" CommandParameter="{Binding}" Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.LinkButtonKey}}"   Content="管理常见问题" HorizontalAlignment="Left" Padding="5,0,5,0"/>
                                 <Button Command="{Binding Data.Commands.ManageTypeCommand,Source={StaticResource ResourceKey=DATA} }" CommandParameter="{Binding}" Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.LinkButtonKey}}"   Content="管理型号" HorizontalAlignment="Left" Padding="5,0,5,0"/>
                             </StackPanel>
-                          
+
                         </DataTemplate>
                     </DataGridTemplateColumn.CellTemplate>
 
@@ -166,14 +166,27 @@
                         <Setter Property="Template">
                             <Setter.Value>
                                 <ControlTemplate TargetType="{x:Type ListBoxItem}">
-                                    <Border BorderThickness="1"  BorderBrush="Black" Margin="5" Padding="5">
+                                    <Border BorderThickness="1"  BorderBrush="Black" Margin="5" Padding="5" fw:MaskOptions.IsManualHide="true" fw:MaskOptions.IsShow="{Binding IsLoading}">
+                                        <fw:MaskOptions.MaskTemplate>
+                                            <ControlTemplate>
+                                                <Border Background="Gray" Opacity="0.5">
+                                                    <ProgressBar  VerticalAlignment="Center" Margin="5" IsIndeterminate="True"></ProgressBar>
+                                                </Border>
+                                            </ControlTemplate>
+                                        </fw:MaskOptions.MaskTemplate>
+
                                         <Grid Width="150" Height="80" >
                                             <Grid.RowDefinitions>
                                                 <RowDefinition></RowDefinition>
                                                 <RowDefinition Height="Auto"></RowDefinition>
                                             </Grid.RowDefinitions>
                                             <StackPanel Orientation="Vertical" Grid.Row="0">
-                                                <TextBlock Margin="5,0,5,0" Name="TxtName" FontSize="20" Text="{Binding ProjectLocalName}"></TextBlock>
+                                                <Grid>
+                                                   
+                                                    <TextBlock Margin="5,0,5,0" Name="TxtName" FontSize="20" Text="{Binding ProjectLocalName}"></TextBlock>
+                                                     <Button  HorizontalAlignment="Right" VerticalAlignment="Center" Content="刷新" Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.LinkButtonKey}}" Command="{Binding Data.Commands.RefreshCommand,Source={StaticResource ResourceKey=DATA}}" CommandParameter="{Binding}" ></Button>
+                                                </Grid>
+
                                                 <StackPanel Orientation="Horizontal">
                                                     <TextBlock Margin="5,0,5,0"  Text="涉及资产:"  />
                                                     <TextBlock Margin="5,0,5,0" x:Name="TXTN" Text="{Binding AssetCount}" TextDecorations="Underline"/>
@@ -183,7 +196,7 @@
                                             <Button Grid.Row="1" Grid.Column="0" x:Name="BTNU" HorizontalAlignment="Right" Content="资产清单" Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.LinkButtonKey}}" Command="{Binding Data.Commands.GoAssetCommand,Source={StaticResource ResourceKey=DATA}}" CommandParameter="{Binding}" ></Button>
                                         </Grid>
                                     </Border>
-                                 
+
                                 </ControlTemplate>
                             </Setter.Value>
                         </Setter>
@@ -193,7 +206,7 @@
         </GroupBox>
 
         <GroupBox MaxHeight="170" Grid.Row="4" Grid.Column="0"  Margin="0,10,0,0" Header="供应该厂家产品的所有供应商"  Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.GroupBoxKey}}">
-              <ListBox ItemsSource="{Binding SellerItems}" BorderThickness="0"  ScrollViewer.HorizontalScrollBarVisibility="Auto" Margin="-5,0,-5,0">
+            <ListBox ItemsSource="{Binding SellerItems}" BorderThickness="0"  ScrollViewer.HorizontalScrollBarVisibility="Auto" Margin="-5,0,-5,0">
                 <ListBox.ItemsPanel >
                     <ItemsPanelTemplate>
                         <WrapPanel Orientation="Horizontal"  Width="{Binding Path=Width,RelativeSource={RelativeSource AncestorType=ListBox}}"/>
@@ -212,13 +225,13 @@
                                             </Grid.RowDefinitions>
                                             <StackPanel Orientation="Vertical" Grid.Row="0">
                                                 <TextBlock Margin="5,0,5,0"  FontSize="20" Text="{Binding VenderName}"></TextBlock>
-                                                 <TextBlock Margin="5,0,5,0" Text="{Binding WebSite}"></TextBlock>
+                                                <TextBlock Margin="5,0,5,0" Text="{Binding WebSite}"></TextBlock>
                                                 <StackPanel Orientation="Horizontal">
                                                     <TextBlock Margin="5,0,5,0"  Text="供应名录中涉及我的品牌:"  />
                                                     <TextBlock Margin="2,0,2,0"  Text="{Binding BrandCount}" TextDecorations="Underline"/>
                                                     <TextBlock Margin="2,0,2,0"  Text="个" />
                                                 </StackPanel>
-                                                 <StackPanel Orientation="Horizontal">
+                                                <StackPanel Orientation="Horizontal">
                                                     <TextBlock Margin="5,0,5,0"  Text="涉及产品:"  />
                                                     <TextBlock Margin="2,0,2,0"  Text="{Binding ProductCount}" TextDecorations="Underline"/>
                                                     <TextBlock Margin="2,0,2,0"  Text="个" />
@@ -227,7 +240,7 @@
                                             <Button Grid.Row="1" Grid.Column="0" x:Name="BTNU" HorizontalAlignment="Right" Content="查看供应名录" Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.LinkButtonKey}}" Command="{Binding Data.Commands.ScanRefTypesCommand,Source={StaticResource ResourceKey=DATA}}" CommandParameter="{Binding}" ></Button>
                                         </Grid>
                                     </Border>
-                                 
+
                                 </ControlTemplate>
                             </Setter.Value>
                         </Setter>
@@ -237,7 +250,7 @@
         </GroupBox>
 
         <GroupBox MaxHeight="170" Grid.Row="5" Grid.Column="0"  Margin="0,10,0,0" Header="维修该厂家产品的所有维修商"  Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.GroupBoxKey}}">
-           <ListBox ItemsSource="{Binding MaintainerItems}" BorderThickness="0"  ScrollViewer.HorizontalScrollBarVisibility="Auto" Margin="-5,0,-5,0">
+            <ListBox ItemsSource="{Binding MaintainerItems}" BorderThickness="0"  ScrollViewer.HorizontalScrollBarVisibility="Auto" Margin="-5,0,-5,0">
                 <ListBox.ItemsPanel >
                     <ItemsPanelTemplate>
                         <WrapPanel Orientation="Horizontal"  Width="{Binding Path=Width,RelativeSource={RelativeSource AncestorType=ListBox}}"/>
@@ -248,7 +261,7 @@
                         <Setter Property="Template">
                             <Setter.Value>
                                 <ControlTemplate TargetType="{x:Type ListBoxItem}">
-                                  <Border BorderThickness="1"  BorderBrush="Black" Margin="5" Padding="5">
+                                    <Border BorderThickness="1"  BorderBrush="Black" Margin="5" Padding="5">
                                         <Grid Width="180" Height="110" >
                                             <Grid.RowDefinitions>
                                                 <RowDefinition></RowDefinition>
@@ -256,13 +269,13 @@
                                             </Grid.RowDefinitions>
                                             <StackPanel Orientation="Vertical" Grid.Row="0">
                                                 <TextBlock Margin="5,0,5,0"  FontSize="20" Text="{Binding VenderName}"></TextBlock>
-                                                 <TextBlock Margin="5,0,5,0" Text="{Binding WebSite}"></TextBlock>
+                                                <TextBlock Margin="5,0,5,0" Text="{Binding WebSite}"></TextBlock>
                                                 <StackPanel Orientation="Horizontal">
                                                     <TextBlock Margin="5,0,5,0"  Text="维修名录中涉及我的品牌:"  />
                                                     <TextBlock Margin="2,0,2,0"  Text="{Binding BrandCount}" TextDecorations="Underline"/>
                                                     <TextBlock Margin="2,0,2,0"  Text="个" />
                                                 </StackPanel>
-                                                 <StackPanel Orientation="Horizontal">
+                                                <StackPanel Orientation="Horizontal">
                                                     <TextBlock Margin="5,0,5,0"  Text="涉及产品:"  />
                                                     <TextBlock Margin="2,0,2,0"  Text="{Binding ProductCount}" TextDecorations="Underline"/>
                                                     <TextBlock Margin="2,0,2,0"  Text="个" />

+ 71 - 0
MBI/FirmLib/Com.FirmLib.UI/Seller/VmSellerInfo.cs

@@ -12,16 +12,19 @@ using System.Collections.Generic;
 using System.Collections.ObjectModel;
 using System.Linq;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 using System.Windows;
 using Com.FirmLib.Bll;
 using Com.FirmLib.Entity;
 using Com.FirmLib.UI.Common;
+using Com.FirmLib.UI.Maintainer;
 using Com.FirmLib.UI.Manufacturer.Model;
 using Com.FirmLib.UI.Seller.Model;
 using FWindSoft.Data;
 using FWindSoft.DataFramework;
 using FWindSoft.MVVM;
+using FWindSoft.Tools;
 using FWindSoft.Wpf;
 
 namespace Com.FirmLib.UI.Seller
@@ -235,6 +238,59 @@ namespace Com.FirmLib.UI.Seller
         {
             return true;
         }
+
+        /// <summary>
+        /// 刷新动画
+        /// </summary>
+        /// <param name="parameter"></param>
+        [Command]
+        public void RefreshCommand(object parameter)
+        {
+            var item = parameter as ProjectRelationShowItem;
+            if (item != null)
+            {
+                item.IsLoading = true;
+                TaskUtil.StartSTATask((obj) =>
+               {
+                   var useItem = obj as ProjectRelationShowItem;
+                   if (useItem == null)
+                       return;
+                   try
+                   {
+                       BllFactory<ProjectBll>.Instance.ProjectSync(useItem.ProjectId);
+                       Thread.Sleep(3000);//立即执行偶尔导致连接取消
+                       var projects = BllFactory<SellerBll>.Instance.GetProjectItems(Id);
+                       foreach (var project in projects)
+                       {
+                           if (project.Id == useItem.ProjectId)
+                           {
+                               useItem.ContractCount = project.ContractCount;
+                               useItem.AssetCount = project.TotalCount;
+                           }
+                       }
+                   }
+                   catch (Exception ex)
+                   {
+                       MessageTipEx.Show(ex);
+                   }
+
+                   finally
+                   {
+
+                       useItem.IsLoading = false;
+                   }
+
+
+               }, item);
+
+            }
+
+
+        }
+        public bool CanRefreshCommand(object parameter)
+        {
+            return true;
+        }
         #endregion
 
         #region 公开方法
@@ -475,5 +531,20 @@ namespace Com.FirmLib.UI.Seller
                 RaisePropertyChanged(() => this.AssetCount);
             }
         }
+
+
+        private bool m_IsLoading;
+        /// <summary>
+        /// 是否加载
+        /// </summary>
+        public bool IsLoading
+        {
+            get { return this.m_IsLoading; }
+            set
+            {
+                this.m_IsLoading = value;
+                RaisePropertyChanged(nameof(this.IsLoading));
+            }
+        }
     }
 }

+ 31 - 9
MBI/FirmLib/Com.FirmLib.UI/Seller/VmSupplyAssetCreater.cs

@@ -106,6 +106,7 @@ namespace Com.FirmLib.UI.Seller
             set
             {
                 this.m_CurrentProductType = value;
+                AttachLocalName(value);
                 RaisePropertyChanged(nameof(this.CurrentProductType));
             }
         }
@@ -203,15 +204,7 @@ namespace Com.FirmLib.UI.Seller
             }
             else
             {
-                string localName = string.Empty;
-                if (CurrentProductType != null)
-                {
-                    StringBuilder builder = new StringBuilder();
-                    string famiy = EquipmentFamilyManager.GetFamilyName(CurrentProductType.FamilyCode);
-                    builder.Append($"{CurrentProductType.ProductName}({famiy}){CurrentProductType.ProductTypeName}");
-                    localName = builder.ToString();
-                }
-
+                string localName = GetLocalName(CurrentProductType);            
                 for (int i = 0; i < currentCount; i++)
                 {
                     var dataItem = this.AssetItems[i];
@@ -226,6 +219,35 @@ namespace Com.FirmLib.UI.Seller
                 }
             }
         }
+
+        private void AttachLocalName(ProductTypeShowItem product)
+        {
+            if (product == null)
+                return;
+             string localName = GetLocalName(product);       
+            for (int i = 0; i < this.AssetItems.Count; i++)
+            {
+                var dataItem = this.AssetItems[i];
+                if (dataItem != null && string.IsNullOrWhiteSpace(dataItem.LocalName))
+                {
+                    dataItem.LocalName = localName ?? string.Empty;
+                }
+            }
+        }
+
+        private string GetLocalName(ProductTypeShowItem product)
+        {
+            string localName = string.Empty;
+            if (product != null)
+            {
+                StringBuilder builder = new StringBuilder();
+                string famiy = EquipmentFamilyManager.GetFamilyName(CurrentProductType.FamilyCode);
+                builder.Append($"{CurrentProductType.ProductName}({famiy}){CurrentProductType.ProductTypeName}");
+                localName = builder.ToString();
+            }
+            return localName;
+        }
+
         /// <summary>
         /// 整理显示对象数据
         /// </summary>

+ 14 - 2
MBI/FirmLib/Com.FirmLib.UI/Seller/WinSellerInfo.xaml

@@ -210,14 +210,26 @@
                             <Setter Property="Template">
                                 <Setter.Value>
                                     <ControlTemplate TargetType="{x:Type ListBoxItem}">
-                                        <Border BorderThickness="1"  BorderBrush="Black" Margin="5" Padding="5">
+                                        <Border BorderThickness="1"  BorderBrush="Black" Margin="5" Padding="5" fw:MaskOptions.IsManualHide="true" fw:MaskOptions.IsShow="{Binding IsLoading}">
+<fw:MaskOptions.MaskTemplate>
+                                            <ControlTemplate>
+                                                <Border Background="Gray" Opacity="0.5">
+                                                    <ProgressBar  VerticalAlignment="Center" Margin="5" IsIndeterminate="True"></ProgressBar>
+                                                </Border>
+                                            </ControlTemplate>
+                                        </fw:MaskOptions.MaskTemplate>
+
                                             <Grid Width="150" Height="80" >
                                                 <Grid.RowDefinitions>
                                                     <RowDefinition></RowDefinition>
                                                     <RowDefinition Height="Auto"></RowDefinition>
                                                 </Grid.RowDefinitions>
                                                 <StackPanel Orientation="Vertical" Grid.Row="0">
-                                                    <TextBlock Margin="5,0,5,0" Name="TxtName" FontSize="20" Text="{Binding ProjectLocalName}"></TextBlock>
+                                                    <Grid>
+                                                        <TextBlock Margin="5,0,5,0" Name="TxtName" FontSize="20" Text="{Binding ProjectLocalName}"></TextBlock>
+                                                         <Button  HorizontalAlignment="Right" VerticalAlignment="Center" Content="刷新" Style="{StaticResource ResourceKey={x:Static uc:CommonStyles.LinkButtonKey}}" Command="{Binding Data.Commands.RefreshCommand,Source={StaticResource ResourceKey=DATA}}" CommandParameter="{Binding}" ></Button>
+                                                    </Grid>
+                                                 
                                                     <StackPanel Orientation="Horizontal">
                                                         <TextBlock Margin="5,0,5,0"  Text="涉及供应合同:"  />
                                                         <TextBlock Margin="5,0,5,0" x:Name="TXTN" Text="{Binding ContractCount}" TextDecorations="Underline"/>

+ 1 - 2
MBI/SAGA.GplotRelationComputerManage/ReadSpaceCommand.cs

@@ -102,8 +102,7 @@ namespace SAGA.GplotRelationComputerManage
                 if (File.Exists(fileInfo))
                 {
                     var uiApp = ExternalDataWrapper.Current.UiApp.Application;
-                    var doc = uiApp.OpenDocumentFile(fileInfo);
-    
+                    var doc = uiApp.OpenDocumentFile(fileInfo);   
                     ComputerSpace(doc);
                 }
             }

+ 3 - 0
MBI/SAGA.GplotRelationComputerManage/SpaceRelation/SpaceComputerManager.cs

@@ -13,6 +13,9 @@ using System.Threading.Tasks;
 
 namespace SAGA.GplotRelationComputerManage
 {
+    /*
+     * 记录一些在控件计算和显示中,一些配置类的问题
+     */
     /// <summary>
     /// 空间计算管理
     /// </summary>

+ 55 - 26
MBI/SAGA.RevitFirmLib/Command.cs

@@ -5,15 +5,9 @@
  * ==============================================================================*/
 
 using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Text.RegularExpressions;
 using System.Windows;
 using Autodesk.Revit.Attributes;
 using Autodesk.Revit.DB;
-using Autodesk.Revit.DB.ExtensibleStorage;
-using Autodesk.Revit.DB.Mechanical;
 using Autodesk.Revit.UI;
 using Com.FirmLib.UI;
 using Com.FirmLib.UI.Insuer;
@@ -22,23 +16,36 @@ using Com.FirmLib.UI.Manufacturer;
 using Com.FirmLib.UI.Seller;
 using SAGA.RevitUtils;
 using SAGA.RevitUtils.Extends;
-using SAGA.RevitUtils.Windows;
 namespace SAGA.RevitFirmLib
 {
+    public class SingleWindowCommand: ExternalCommand
+    {
+        //只在命令里单例,可能其他地方不单例
+        
+    }
+
     /// <summary>
     /// 生产厂商
     /// </summary>
     [Transaction(TransactionMode.Manual)]
     [Regeneration(RegenerationOption.Manual)]
-    public class ManufactureCommand : ExternalCommand, IExternalCommandAvailability
+    public class ManufactureCommand : SingleWindowCommand
     {
+        private static WindowSingleInstance<Window> m_WindowManager;
         public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
         {
             try
             {
-                WinFirmMain main = new WinFirmMain(new WinManufactureBaseInfo());
-                main.Title += "--生产商管理";
-                main.ShowDialog();
+                if (m_WindowManager == null)
+                {
+                    m_WindowManager = new WindowSingleInstance<Window>(() =>
+                    {
+                        WinFirmMain window = new WinFirmMain(new WinManufactureBaseInfo());
+                        window.Title += "--生产商管理";
+                        return window;
+                    });
+                }
+               m_WindowManager.Target?.Show();            
             }
             catch (Exception e)
             {
@@ -60,16 +67,23 @@ namespace SAGA.RevitFirmLib
     /// </summary>
     [Transaction(TransactionMode.Manual)]
     [Regeneration(RegenerationOption.Manual)]
-    public class SellerCommand : ExternalCommand, IExternalCommandAvailability
+    public class SellerCommand : SingleWindowCommand
     {
+         private static WindowSingleInstance<Window> m_WindowManager;
         public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
         {
             try
             {
-
-                WinFirmMain main = new WinFirmMain(new WinSellerBaseInfo());
-                main.Title += "--供应商管理";
-                main.ShowDialog();
+                if (m_WindowManager == null)
+                {
+                    m_WindowManager = new WindowSingleInstance<Window>(() =>
+                    {
+                        WinFirmMain window =  new WinFirmMain(new WinSellerBaseInfo());
+                        window.Title +=  "--供应商管理";;
+                        return window;
+                    });
+                }
+                m_WindowManager.Target?.Show();
             }
             catch (Exception e)
             {
@@ -89,20 +103,27 @@ namespace SAGA.RevitFirmLib
 
 
     /// <summary>
-    /// 维修
+    /// 维修商
     /// </summary>
     [Transaction(TransactionMode.Manual)]
     [Regeneration(RegenerationOption.Manual)]
-    public class MaintainerCommand : ExternalCommand//, IExternalCommandAvailability
+    public class MaintainerCommand : SingleWindowCommand
     {
+          private static WindowSingleInstance<Window> m_WindowManager;
         public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
         {
             try
             {
-
-                WinFirmMain main = new WinFirmMain(new WinMaintainerBaseInfo());
-                main.Title += "--维修商管理";
-                main.ShowDialog();
+                if (m_WindowManager == null)
+                {
+                    m_WindowManager = new WindowSingleInstance<Window>(() =>
+                    {
+                        WinFirmMain window = new WinFirmMain(new WinMaintainerBaseInfo());
+                        window.Title += "--维修商管理"; ;
+                        return window;
+                    });
+                }
+                m_WindowManager.Target?.Show();           
             }
             catch (Exception e)
             {
@@ -123,15 +144,23 @@ namespace SAGA.RevitFirmLib
     /// </summary>
     [Transaction(TransactionMode.Manual)]
     [Regeneration(RegenerationOption.Manual)]
-    public class InsuerCommand : ExternalCommand//, IExternalCommandAvailability
+    public class InsuerCommand : SingleWindowCommand
     {
+          private static WindowSingleInstance<Window> m_WindowManager;
         public override Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
         {
             try
             {
-                WinFirmMain main = new WinFirmMain(new WinInsuerBaseInfo());
-                main.Title += "--保险商管理";
-                main.ShowDialog();
+                if (m_WindowManager == null)
+                {
+                    m_WindowManager = new WindowSingleInstance<Window>(() =>
+                    {
+                        WinFirmMain window = new WinFirmMain(new WinInsuerBaseInfo());
+                        window.Title += "--保险商管理"; ;
+                        return window;
+                    });
+                }
+                m_WindowManager.Target?.Show();               
             }
             catch (Exception e)
             {