ningshuxia
2025-03-28 ce9752fd657c6689ea64929eb962146e2730624e
WinFrmUI/PBS.WinFrmUI.Hydro/02-quick-modeling/02-place/QuickModelingPlaceWizardPage.cs
@@ -1,4 +1,6 @@
namespace PBS.WinFrmUI.Hydro
using Microsoft.Web.WebView2.Core;
namespace PBS.WinFrmUI.Hydro
{
    public partial class QuickModelingPlaceWizardPage : DevExpress.XtraEditors.XtraUserControl, IWizardPageAsync<QuickModelingViewModel>
    {
@@ -6,10 +8,12 @@
        {
            InitializeComponent();
            this.layoutControl1.SetupLayoutControl();
            this.mapSetSimpleMarkerContainer1.LoadCompletedEvent += MapSetSimpleMarkerContainer1_LoadCompletedEvent;
            this.mapSetSimpleMarkerContainer1.SetMarkerEvent += MapSetSimpleMarkerContainer1_SetMarkerEvent;
            this.mapSetPlaceMarkerContainer1.LoadCompletedEvent += MapSetPlaceMarkerContainer1_LoadCompletedEvent;
            this.mapSetPlaceMarkerContainer1.SetMarkerEvent += MapSetPlaceMarkerContainer1_SetMarkerEvent;
            this.mapSetPlaceMarkerContainer1.SetMapBoundsEvent += MapSetPlaceMarkerContainer1_SetMapBoundsEvent;
            this.imgCmbPlaceType.Properties.AddEnum<PBS.ePlaceType>();
        }
        /// <summary>
        /// 状态改变事件
@@ -17,10 +21,9 @@
        public event Action PageStateChangedEvent;
        private QuickModelingViewModel _vm = null;//操作对象
        private bool _isCompleted = false;//是否创建完成
        private bool _createResult = false;//创建结果
        private bool _isCompleted = false;//是否创建完成
        /// <summary>
        /// 初始化页面
@@ -31,53 +34,126 @@
            {
                return;
            }
            _vm = vm;
            _vm = vm;
            _isCompleted = false;
            _createResult = false;
            //_createResult = await QuickModelingHelper.Create(vm, (msg, color) =>
            // {
            //     var drawItem = new DrawItemViewModel
            //     {
            //         Text = msg,
            //         Color = color
            //     };
            //     this.listBoxControl1.Items.Add(drawItem);
            // }, (max, current) =>
            // {
            //     this.progressBarControl1.Properties.Maximum = max;
            //     this.progressBarControl1.Position = current;
            //     //替代方案
            //     // this.progressBarControl1.Properties.Step = current;
            //     // this.progressBarControl1.PerformStep();
            // });
            _isCompleted = true;
            if (!_createResult)
            if (!this.mapSetPlaceMarkerContainer1.IsInitialized)
            {
                //this.progressBarControl1.Position = 0;
                //this.itemForProgress.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never;
            }
                await this.mapSetPlaceMarkerContainer1.InitialContainer();
            }
            this.txtName.EditValue = _vm.Place.Name;
            this.txtTagName.EditValue = _vm.Place.TagName;
            this.txtAddress.EditValue = _vm.Place.Address;
            this.txtDescription.EditValue = _vm.Place.Description;
            this.placeInfoCtrl1.Set(_vm.Place.PlaceType, _vm.Place.PlaceInfo);
            var allFlagsList = await BLLFactory<Yw.BLL.SysFlag>.Instance.GetBySysType(DataType.PBSPlace);
            this.setFlagsEditCtrl1.SetBindingData(allFlagsList?.Select(x => x.Name).Distinct().ToList(), _vm.Place.Flags);
            this.imgCmbPlaceType.EditValue = _vm.Place.PlaceType;
            _isCompleted = true;
            this.PageStateChangedEvent?.Invoke();
        }
        //加载完成事件
        private async void MapSetSimpleMarkerContainer1_LoadCompletedEvent()
        private async void MapSetPlaceMarkerContainer1_LoadCompletedEvent()
        {
            if (_vm.Marker != null)
            {
                await this.mapSetSimpleMarkerContainer1.LoadMarker(_vm.Marker);
                await this.mapSetPlaceMarkerContainer1.LoadMarker(_vm.Marker);
            }
        }
        //设置
        private void MapSetSimpleMarkerContainer1_SetMarkerEvent(Yw.Model.Map.Marker obj)
        //设置地图边界
        private void MapSetPlaceMarkerContainer1_SetMapBoundsEvent(Yw.Model.Map.Point southWest, Yw.Model.Map.Point northEast)
        {
            _vm.Marker = obj;
            if (string.IsNullOrEmpty(this.txtAddress.Text.Trim()))
            _vm.SouthWest = southWest;
            _vm.NorthEast = northEast;
        }
        //设置点
        private void MapSetPlaceMarkerContainer1_SetMarkerEvent(Yw.Model.Map.Marker marker)
        {
            _vm.Marker = marker;
            this.txtAddress.EditValue = marker.Address;
        }
        //场所类型变换
        private void imgCmbPlaceType_EditValueChanged(object sender, EventArgs e)
        {
            var placeType = (PBS.ePlaceType)this.imgCmbPlaceType.EditValue;
            this.placeInfoCtrl1.Set(placeType);
        }
        //验证
        private bool Verify()
        {
            return this.Invoke(() =>
            {
                this.txtAddress.EditValue = obj.Address;
                var isExist = true;
                this.dxErrorProvider1.ClearErrors();
                var name = this.txtName.Text.Trim();
                if (string.IsNullOrEmpty(name))
                {
                    this.dxErrorProvider1.SetError(this.txtName, "必填项");
                    isExist= false;
                }
                if (!this.placeInfoCtrl1.Verify())
                {
                    isExist = false;
                }
                if (_vm.Marker==null)
                {
                    isExist = false;
                    TipFormHelper.ShowWarn("请设置地图信息!");
                }
                if (_vm.SouthWest == null || _vm.NorthEast == null)
                {
                    isExist = false;
                    TipFormHelper.ShowWarn("请设置地图边界信息!");
                }
                return isExist;
            });
        }
        //保存
        private async Task<bool> Save()
        {
            if (!Verify())
            {
                return false;
            }
            var sizeInfo= await this.mapSetPlaceMarkerContainer1.CaptureImage(_vm.TempBackgroundImageUrl,_vm.SouthWest,_vm.NorthEast);
            if (sizeInfo == null)
            {
                _vm.IsCaptureImage = false;
                TipFormHelper.ShowError("截图失败!");
                return false;
            }
            _vm.BackgroundHeight = sizeInfo.Value.Height;
            _vm.BackgroundWidth = sizeInfo.Value.Width;
            _vm.Zoom = sizeInfo.Value.Zoom;
            _vm.IsCaptureImage = true;
            _vm.Place.Name = this.txtName.Text.Trim();
            _vm.Place.PlaceType = (ePlaceType)this.imgCmbPlaceType.EditValue;
            _vm.Place.Flags = this.setFlagsEditCtrl1.SelectedFlagList;
            _vm.Place.TagName = this.txtTagName.Text.Trim();
            _vm.Place.Address = this.txtAddress.Text.Trim();
            _vm.Place.Description = this.txtDescription.Text.Trim();
            _vm.Place.PlaceInfo=this.placeInfoCtrl1.Get();
            return true;
        }
@@ -87,15 +163,7 @@
        public bool AllowPrev
        {
            get
            {
                if (!_isCompleted)
                {
                    return false;
                }
                if (!_createResult)
                {
                    return true;
                }
            {
                return false;
            }
        }
@@ -107,11 +175,11 @@
        {
            get
            {
                if (_createResult)
                if (!_isCompleted)
                {
                    return true;
                }
                return false;
                    return false;
                }
                return true;
            }
        }
@@ -121,11 +189,7 @@
        public bool AllowCancel
        {
            get
            {
                if (!_createResult)
                {
                    return true;
                }
            {
                return false;
            }
        }
@@ -155,7 +219,7 @@
        /// </summary>
        public Task<bool> CanNext()
        {
            return Task.Run(() => this.AllowNext);
            return Task.Run(async () => await Save());
        }
        /// <summary>
@@ -174,6 +238,5 @@
            return Task.Run(() => this.AllowComplete);
        }
    }
}