123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331 |
-
- ///////////////////////////////////////////////////////////////////////////////
- //文件名称: VmMaintainerAssetSelector.cs
- //文件描述: VmMaintainerAssetSelector.cs
- //创 建 者: xls
- //创建日期: 2018/9/18 17:02:38
- //版 本 号:1.0.0.0
- ////////////////////////////////////////////////////////////////////////////////
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows;
- using Com.FirmLib.Bll;
- using Com.FirmLib.UI.BllCommon;
- using Com.FirmLib.UI.Common.Model;
- using Com.FirmLib.UI.Insuer.Model;
- using FWindSoft.DataFramework;
- using FWindSoft.MVVM;
- using FWindSoft.Wpf;
- namespace Com.FirmLib.UI.Maintainer
- {
- public class VmMaintainerAssetSelector : BaseViewModel
- {
- public VmMaintainerAssetSelector()
- {
- Init();
- }
- private void Init()
- {
- SelectedAssetItems = new List<AssetShowItem>();
- ExistAssets = new List<string>();
- //InitSelector();
- }
- public void Init(LoadParameter parameter)
- {
- SelectAssetContext context = parameter.Parameter as SelectAssetContext;
- if (context == null)
- return;
- Context = context;
- ProjectId = context.ProjectId;
- VenderId = context.VenderId;
- VenderName = BllFactory<MaintainerBll>.Instance.GetItem(context.VenderId)?.Name ?? string.Empty;
- ExistAssets = new List<string>(context.ContainIds);
- InitSelector();
- CalcCheckedCount();
- }
- #region 属性相关
- /// <summary>
- /// 厂商名字
- /// </summary>
- private string VenderName { get; set; }
- /// <summary>
- /// 厂商id
- /// </summary>
- public string VenderId { get; set; }
- /// <summary>
- /// 项目id
- /// </summary>
- private string ProjectId { get; set; }
- /// <summary>
- /// 存在资产信息
- /// </summary>
- private List<string> ExistAssets { get; set; }
- private SelectAssetContext Context { get; set; }
- /// <summary>
- /// 当前保单中选中资产
- /// </summary>
- public List<AssetShowItem> SelectedAssetItems { get; set; }
- private ObservableCollection<AssetShowItem> m_RecommendAssetItems;
- /// <summary>
- /// 推荐资产
- /// </summary>
- public ObservableCollection<AssetShowItem> RecommendAssetItems
- {
- get { return this.m_RecommendAssetItems; }
- set
- {
- this.m_RecommendAssetItems = value;
- RaisePropertyChanged(nameof(this.RecommendAssetItems));
- }
- }
- private ObservableCollection<AssetShowItem> m_AllAssetItems;
- /// <summary>
- /// 全部资产
- /// </summary>
- public ObservableCollection<AssetShowItem> AllAssetItems
- {
- get { return this.m_AllAssetItems; }
- set
- {
- this.m_AllAssetItems = value;
- RaisePropertyChanged(nameof(this.AllAssetItems));
- }
- }
- private string m_SelectedAssetCount;
- /// <summary>
- /// 选中资产数量
- /// </summary>
- public string SelectedAssetCount
- {
- get { return this.m_SelectedAssetCount; }
- set
- {
- this.m_SelectedAssetCount = value;
- RaisePropertyChanged(nameof(this.SelectedAssetCount));
- }
- }
- #endregion
- #region 命令相关
- /// <summary>
- /// 确定按钮
- /// </summary>
- /// <param name="parameter"></param>
- [Command]
- public void EnsureCommand(object parameter)
- {
- try
- {
- if (Context != null)
- {
- Context.AddedItems.AddRange(SelectedAssetItems);
- }
- Window win = parameter as Window;
- if (win != null)
- {
- win.DialogResult = true;
- }
- }
- catch (Exception ex)
- {
- MessageTip.Show(ex.Message);
- }
- }
- public bool CanEnsureCommand(object parameter)
- {
- return true;
- }
- /// <summary>
- /// 选择资产变化
- /// </summary>
- /// <param name="parameter"></param>
- [Command]
- public void SelectedAssetChanged(object parameter)
- {
- try
- {
- AssetShowItem item = parameter as AssetShowItem;
- if (item == null)
- return;
- var currentItem = this.SelectedAssetItems.FirstOrDefault(c => c.Id == item.Id);
- bool isChecked = item.IsChecked;
- if (isChecked && currentItem == null)
- {
- this.SelectedAssetItems.Add(item);
- }
- else if (!isChecked && currentItem != null)
- {
- this.SelectedAssetItems.Remove(currentItem);
- }
- CalcCheckedCount();
- }
- catch (Exception ex)
- {
- MessageTip.Show(ex.Message);
- }
- }
- public bool CanSelectedAssetChanged(object parameter)
- {
- AssetShowItem item = parameter as AssetShowItem;
- if (item == null)
- return false;
- return item.IsEnabled;
- }
- /// <summary>
- /// tab切换按钮【联动两边选中项】
- /// </summary>
- /// <param name="parameter"></param>
- [Command]
- public void TabChangedCommand(object parameter)
- {
- try
- {
- //子控件,包含相同的事件也会触发
- int index = Convert.ToInt32(parameter);
- var useCollection = index == 0 ? RecommendAssetItems : AllAssetItems;
- if (useCollection == null)
- return;
- foreach (var item in useCollection)
- {
- item.IsChecked = ExistAssetId(item.Id);
- }
- }
- catch (Exception ex)
- {
- MessageTip.Show(ex.Message);
- }
- }
- public bool CanTabChangedCommand(object parameter)
- {
- return true;
- }
- #endregion
- #region 私有方法
- private void CalcCheckedCount()
- {
- this.SelectedAssetCount = (ExistAssets.Count + this.SelectedAssetItems.Count).ToString();
- }
- private bool ExistAssetId(string no)
- {
- return this.SelectedAssetItems.Any(asset => asset.Id == no);
- }
- private bool ExistInOrigin(string no)
- {
- return this.ExistAssets.Any(id => id == no);
- }
- private void InitSelector()
- {
- RecommendAssetSelecter = new AssetSelector();
- AllAssetSelecter = new AssetSelector();
- RecommendAssetSelecter.Refresh = (selector) =>
- {
- LoadRecommendAssets(selector, ProjectId, VenderId);
- };
- AllAssetSelecter.Refresh = (selector) =>
- {
- LoadAllAssets(selector, ProjectId, string.Empty);
- };
- RecommendAssetSelecter.FilterControl.Refresh();
- AllAssetSelecter.FilterControl.Refresh();
- }
- private void LoadRecommendAssets(AssetSelector selector, string projectId, string venderId)
- {
- string prefix = selector.FilterControl.FilterSetting["LocalName"].ToString();
- int startIndex = Math.Max((selector.CurrentPageIndex - 1), 0) * AssetManager.PerPageCount;
- var venderItem = VenderItem.CreateMaintainerItem(VenderName);
- venderItem.Id = venderId;
- SearchResultList<AssetShowItem> items = AssetManager.GetRecommendShowItems(projectId, prefix, startIndex,venderItem); ;
- foreach (var item in items)
- {
- item.IsChecked = ExistInOrigin(item.Id);
- if (item.IsChecked)
- {
- item.IsEnabled = false;
- }
- else
- {
- item.IsChecked = ExistAssetId(item.Id);
- }
- }
- selector.PageCount = CommomUtils.CalcPageCount(items.TotalCount, AssetManager.PerPageCount);
- RecommendAssetItems = new ObservableCollection<AssetShowItem>(items);
- }
- private void LoadAllAssets(AssetSelector selector, string projectId, string venderId)
- {
- string prefix = selector.FilterControl.FilterSetting["LocalName"].ToString();
- int startIndex = Math.Max((selector.CurrentPageIndex - 1), 0) * AssetManager.PerPageCount;
- SearchResultList<AssetShowItem> items = AssetManager.GetShowEqItems(projectId, prefix, startIndex);
- foreach (var item in items)
- {
- item.IsChecked = ExistInOrigin(item.Id);
- if (item.IsChecked)
- {
- item.IsEnabled = false;
- }
- else
- {
- item.IsChecked = ExistAssetId(item.Id);
- }
- }
- selector.PageCount = CommomUtils.CalcPageCount(items.TotalCount, AssetManager.PerPageCount);
- AllAssetItems = new ObservableCollection<AssetShowItem>(items);
- }
- #endregion
- #region 推荐资产 列表相关
- private AssetSelector m_RecommendAssetSelecter;
- /// <summary>
- /// 推荐资产
- /// </summary>
- public AssetSelector RecommendAssetSelecter
- {
- get { return this.m_RecommendAssetSelecter; }
- private set
- {
- this.m_RecommendAssetSelecter = value;
- RaisePropertyChanged(nameof(this.RecommendAssetSelecter));
- }
- }
- #endregion
- #region 全部资产列表相关
- private AssetSelector m_AllAssetSelecterr;
- /// <summary>
- /// 全部资产选择器
- /// </summary>
- public AssetSelector AllAssetSelecter
- {
- get { return this.m_AllAssetSelecterr; }
- private set
- {
- this.m_AllAssetSelecterr = value;
- RaisePropertyChanged(nameof(this.AllAssetSelecter));
- }
- }
- #endregion
- }
- }
|