duheng
2025-03-27 d2ccacb3317aa6310f1b1bb5eb19fbdecba39ff9
WinFrmUI/HStation.WinFrmUI.Xhs.Core/01-home/02-map/MapViewProjectListContainer.cs
@@ -1,4 +1,6 @@
namespace HStation.WinFrmUI
using DevExpress.Mvvm.Native;
namespace HStation.WinFrmUI
{
    public partial class MapViewProjectListContainer : UserControl, IMapViewProjectListContainer
    {
@@ -8,11 +10,14 @@
        }
        public event Action LoadCompletedEvent;
        public event Action LoadFailedEvent;
        public event Action<HandingError> HandingErrorEvent;
        public event Func<string, bool> SelectProjectEvent;
        public event Func<bool> CancelSelectProjectEvent;
        public event Action LoadFailedEvent;
        public event Action<HandingError> HandingErrorEvent;
        public event Action<string> JumpSimulationEvent;
        public event Action<long> JumpDirectEvent;
        /// <summary>
        /// 交互对象
@@ -28,6 +33,7 @@
                return _callBackObj;
            }
        }
        private MapViewProjectListCallBackObj _callBackObj;
        /// <summary>
@@ -40,6 +46,7 @@
                return _isInitialized;
            }
        }
        private bool _isInitialized;
        /// <summary>
@@ -51,9 +58,17 @@
            callBackObj.LoadCompletedEvent += CallBackObj_LoadCompletedEvent;
            callBackObj.LoadFailedEvent += CallBackObj_LoadFailedEvent;
            callBackObj.HandingErrorEvent += CallBackObj_HandingErrorEvent;
            callBackObj.SelectProjectEvent += CallBackObj_SelectProjectEvent;
            callBackObj.CancelSelectProjectEvent += CallBackObj_CancelSelectProjectEvent;
            callBackObj.JumpSimulationEvent += CallBackObj_JumpSimulationEvent;
            await this.webViewControl1.InitialWebBrower(MapViewProjectListUrlHelper.GetUrl(), callBackObj, true);
        }
        //跳转方案
        private void CallBackObj_JumpSimulationEvent(string obj)
        {
            if (long.TryParse(obj, out long PrjID))
            {
                JumpDirectEvent.Invoke(PrjID);
            }
        }
        //加载完成
@@ -75,44 +90,38 @@
            this.HandingErrorEvent?.Invoke(obj);
        }
        //选择项目
        private bool CallBackObj_SelectProjectEvent(string arg)
        {
            if (string.IsNullOrEmpty(arg))
            {
                return false;
            }
            if (this.SelectProjectEvent == null)
            {
                return true;
            }
            return this.SelectProjectEvent.Invoke(arg);
        }
        //取消选择项目
        private bool CallBackObj_CancelSelectProjectEvent()
        {
            if (this.CancelSelectProjectEvent == null)
            {
                return true;
            }
            return this.CancelSelectProjectEvent.Invoke();
        }
        /// <summary>
        /// 设置项目列表
        /// </summary>
        public async Task<bool> SetProjectList(List<MapProjectViewModel> allProjectList)
        public async Task<bool> SetProjectList(List<XhsProjectVmo> allProjectList)
        {
            return await this.webViewControl1.EvaluateScriptAsync<bool>("setProjectList", allProjectList);
            if (!_isInitialized)
            {
                return false;
            }
            var allProjectIds = allProjectList?.Select(x => x.ID).Distinct().ToList();
            var allMapInfoList = await new Yw.BLL.MapInfo().GetByObjectTypeAndObjectIdsOfKindPurpose
                (HStation.Xhs.DataType.XhsProject, allProjectIds, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location);
            var vmList = new List<MapProjectViewModel>();
            if (allMapInfoList != null && allMapInfoList.Count > 0)
            {
                foreach (var mapInfo in allMapInfoList)
                {
                    var project = allProjectList.Find(x => x.ID == mapInfo.ObjectID);
                    var vm = new MapProjectViewModel(project, mapInfo);
                    vmList.Add(vm);
                }
            }
            return await this.webViewControl1.EvaluateScriptAsync<bool>("setProjectList", vmList);
        }
        /// <summary>
        /// 选择项目
        /// </summary>
        public async Task<bool> SelectProject(string projectId)
        public async Task<bool> SelectProject(long projectId)
        {
            return await this.webViewControl1.EvaluateScriptAsync<bool>("selectProject", projectId);
            return await this.webViewControl1.EvaluateScriptAsync<bool>("selectProject", projectId.ToString());
        }
        /// <summary>
@@ -122,7 +131,5 @@
        {
            return await this.webViewControl1.EvaluateScriptAsync<bool>("cancelSelectProject()");
        }
    }
}
}