using DevExpress.Mvvm.Native; using Yw.WebBrower; namespace PBS.WinFrmUI { public partial class MapViewProjectListContainer : UserControl, IMapViewProjectListContainer { public MapViewProjectListContainer() { InitializeComponent(); } public event Action LoadCompletedEvent; public event Action LoadFailedEvent; public event Action HandingErrorEvent; public event Action JumpSimulationEvent; public event Action JumpDirectEvent; /// /// 交互对象 /// public MapViewProjectListCallBackObj CallBackObj { get { if (_callBackObj == null) { _callBackObj = new MapViewProjectListCallBackObj(); } return _callBackObj; } } private MapViewProjectListCallBackObj _callBackObj; /// /// 是否初始化 /// public bool IsInitialized { get { return _isInitialized; } } private bool _isInitialized; /// /// 初始话容器 /// public async Task InitialContainer() { var callBackObj = this.CallBackObj; callBackObj.LoadCompletedEvent += CallBackObj_LoadCompletedEvent; callBackObj.LoadFailedEvent += CallBackObj_LoadFailedEvent; callBackObj.HandingErrorEvent += CallBackObj_HandingErrorEvent; callBackObj.JumpSimulationEvent += CallBackObj_JumpSimulationEvent; await this.webViewControl2.InitialWebBrower(MapViewProjectListUrlHelper.GetUrl(), callBackObj, true); } //跳转方案 private void CallBackObj_JumpSimulationEvent(string obj) { if (long.TryParse(obj, out long PrjID)) { //JumpDirectEvent.Invoke(PrjID); } } //加载完成 private void CallBackObj_LoadCompletedEvent() { _isInitialized = true; this.LoadCompletedEvent?.Invoke(); } //加载失败 private void CallBackObj_LoadFailedEvent() { this.LoadFailedEvent?.Invoke(); } //处理错误 private void CallBackObj_HandingErrorEvent(HandingError obj) { this.HandingErrorEvent?.Invoke(obj); } /// /// 设置项目列表 /// public async Task SetProjectList(List allProjectList) { if (!_isInitialized) { return false; } var allProjectIds = allProjectList?.Select(x => x.PlaceID).Distinct().ToList(); var allMapInfoList = await new Yw.BLL.MapInfo().GetByObjectTypeAndObjectIdsOfKindPurpose (PBS.DataType.PBSPlace, allProjectIds, Yw.Map.Kind.Gaodei, Yw.Map.Purpose.Location); var vmList = new List(); if (allMapInfoList != null && allMapInfoList.Count > 0) { foreach (var mapInfo in allMapInfoList) { var project = allProjectList.Find(x => x.PlaceID == mapInfo.ObjectID); if (project != null) { var vm = new MapProjectViewModel(project, mapInfo); vmList.Add(vm); } } } return await this.webViewControl2.EvaluateScriptAsync("setProjectList", vmList); } /// /// 选择项目 /// public async Task SelectProject(long projectId) { return await this.webViewControl2.EvaluateScriptAsync("selectProject", projectId.ToString()); } /// /// 取消选择项目 /// public async Task CancelSelectProject() { return await this.webViewControl2.EvaluateScriptAsync("cancelSelectProject()"); } } }