using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Text.Json.Serialization; using WalkingTec.Mvvm.Core.Extensions; namespace WalkingTec.Mvvm.Core { /// /// 搜索条件基类,一般和ListVM配合使用实现对ListVM的搜索功能。 /// public class BaseSearcher : ISearcher { #region Property #region 分页相关 /// /// 当前页 /// public int Page { get; set; } /// /// 每页数 /// public int Limit { get; set; } /// /// 记录数 /// [JsonIgnore] public long Count { get; set; } /// /// 分页数 /// [JsonIgnore] public int PageCount { get; set; } #endregion /// /// 记录 Controller 中的表单数据 /// [JsonIgnore] public Dictionary FC { get; set; } [JsonIgnore] public IModelStateService MSD { get => Wtm?.MSD; } /// /// 获取VM的全名 /// [JsonIgnore] public string VMFullName { get { var name = GetType().AssemblyQualifiedName; name = name.Substring(0, name.LastIndexOf(", Version=")); return name; } } private IDataContext _dc; /// /// 数据库环境 /// [JsonIgnore] public IDataContext DC { get { if (_dc == null) { return Wtm?.DC; } else { return _dc; } } set { _dc = value; } } /// /// Session信息 /// [JsonIgnore] public ISessionService Session { get => Wtm?.Session; } /// /// 当前登录人信息 /// [JsonIgnore] public LoginUserInfo LoginUserInfo { get => Wtm?.LoginUserInfo; } [JsonIgnore] public string ViewDivId { get; set; } #region 未使用 /// /// 排序信息 /// public SortInfo SortInfo { get; set; } /// /// 前台搜索框是否展开 /// [JsonIgnore] public bool? IsExpanded { get; set; } private Guid _uniqueId; [JsonIgnore] public string UniqueId { get { if (_uniqueId == Guid.Empty) { _uniqueId = Guid.NewGuid(); } return _uniqueId.ToNoSplitString(); } } [JsonIgnore] public WTMContext Wtm { get; set; } #endregion #endregion #region Event /// /// InitVM 完成后触发的事件 /// public event Action OnAfterInit; /// /// ReInitVM 完成后触发的事件 /// public event Action OnAfterReInit; #endregion #region Method /// /// 调用 InitVM 并触发 OnAfterInit 事件 /// public void DoInit() { InitVM(); OnAfterInit?.Invoke(this); } /// /// 调用 ReInitVM 并触发 OnAfterReInit 事件 /// public void DoReInit() { ReInitVM(); OnAfterReInit?.Invoke(this); } /// /// 初始化ViewModel,框架会在创建VM实例之后自动调用本函数 /// protected virtual void InitVM() { } /// /// 从新初始化ViewModel,框架会在验证失败时自动调用本函数 /// protected virtual void ReInitVM() { InitVM(); } public virtual void Validate() { } /// /// 将源 VM 的 FC 等内容复制到本VM中 /// /// public void CopyContext(IBaseVM vm) { FC = vm.FC; this.Wtm = vm.Wtm; this.ViewDivId = vm.ViewDivId; } #endregion } }