static void SetAreaItems3(this IViewModelField v, IReadOnlyList <IArea> value, bool isSetProperty) { if (isSetProperty) { v.AreaItems3 = value; } else { v.MAreaItems3 = value; } }
static void SetAreaSelectItem3(this IViewModelField v, IArea value, bool isSetProperty) { if (isSetProperty) { v.AreaSelectItem3 = value; } else { v.MAreaSelectItem3 = value; } }
static void SetAreaNotVisible4(this IViewModelField v, bool value, bool isSetProperty) { if (isSetProperty) { v.AreaNotVisible4 = value; } else { v.MAreaNotVisible4 = value; } }
public static void SetAreaId(this IViewModelField v, int areaId, IArea?area, bool isSetProperty) { if (areaId == PleaseSelect.Id) { return; } area ??= Res.GetAll().FirstOrDefault(x => x.Id == areaId); if (area == null) { return; } if (!isSetProperty && area.Up.HasValue) { v.SetAreaId(area.Up.Value, null, isSetProperty); } switch (area.Level) { case AreaLevel.省或直辖市或特别行政区: v.SetAreaItems3(GetAreasByLevel(AreaLevel.市_不包括直辖市, areaId), isSetProperty); v.SetAreaNotVisible3(v.AreaItems3 == GroupEmpty, isSetProperty); v.SetAreaItems4(v.AreaNotVisible3 ? GetAreasByLevel(AreaLevel.区县_县级市, areaId) : GroupEmpty, isSetProperty); v.SetAreaNotVisible4(v.AreaNotVisible3 && v.AreaItems4 == GroupEmpty, isSetProperty); if (!isSetProperty) { v.SetAreaSelectItem2(area, isSetProperty); } v.SetAreaSelectItem3(v.AreaSelectItem4 = PleaseSelect, isSetProperty); break; case AreaLevel.市_不包括直辖市: v.SetAreaItems4(GetAreasByLevel(AreaLevel.区县_县级市, areaId), isSetProperty); v.SetAreaNotVisible4(v.AreaItems4 == GroupEmpty, isSetProperty); if (!isSetProperty) { v.SetAreaSelectItem3(area, isSetProperty); } v.SetAreaSelectItem4(PleaseSelect, isSetProperty); break; case AreaLevel.区县_县级市: if (!isSetProperty) { v.SetAreaSelectItem4(area, isSetProperty); } break; } }
/// <summary> /// 初始化视图模型中的地区数据 /// </summary> /// <param name="v"></param> public static void InitAreas(this IViewModelField v) { v.AreaItems2 = Group2; v.AreaItems3 = v.AreaItems4 = GroupEmpty; v.SetAreaSelectItem4(PleaseSelect, false); v.SetAreaSelectItem3(PleaseSelect, false); v.SetAreaSelectItem2(PleaseSelect, false); void SubscribeAreaSelectItem(IArea?area) { if (area != null) { v.SelectArea(area); } } v.WhenAnyValue(x => x.AreaSelectItem2).Subscribe(SubscribeAreaSelectItem).AddTo(v); v.WhenAnyValue(x => x.AreaSelectItem3).Subscribe(SubscribeAreaSelectItem).AddTo(v); }
/// <inheritdoc cref="SelectAreaId(IViewModelField, int, IArea?)"/> public static void SelectArea(this IViewModelField v, IArea area) => v.SelectAreaId(area.Id);
/// <inheritdoc cref="SelectAreaId(IViewModelField, int, IArea?)"/> public static void SelectAreaId(this IViewModelField v, int areaId) => v.SelectAreaId(areaId, null);
/// <summary> /// 前端选中一个地区 /// </summary> /// <param name="v"></param> /// <param name="areaId"></param> /// <param name="area"></param> /// <param name="setArea"></param> /// <param name="isRecursionUp"></param> static void SelectAreaId(this IViewModelField v, int areaId, IArea?area) => v.SetAreaId(areaId, area, true);
/// <summary> /// 后端设置一个地区 /// </summary> /// <param name="v"></param> /// <param name="areaId"></param> public static void SetAreaId(this IViewModelField v, int areaId) => v.SetAreaId(areaId, null, false);