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<HandingError> HandingErrorEvent;
|
|
public event Action<string> JumpSimulationEvent;
|
|
public event Action<long> JumpDirectEvent;
|
|
/// <summary>
|
/// 交互对象
|
/// </summary>
|
public MapViewProjectListCallBackObj CallBackObj
|
{
|
get
|
{
|
if (_callBackObj == null)
|
{
|
_callBackObj = new MapViewProjectListCallBackObj();
|
}
|
return _callBackObj;
|
}
|
}
|
|
private MapViewProjectListCallBackObj _callBackObj;
|
|
/// <summary>
|
/// 是否初始化
|
/// </summary>
|
public bool IsInitialized
|
{
|
get
|
{
|
return _isInitialized;
|
}
|
}
|
|
private bool _isInitialized;
|
|
/// <summary>
|
/// 初始话容器
|
/// </summary>
|
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);
|
}
|
|
/// <summary>
|
/// 设置项目列表
|
/// </summary>
|
public async Task<bool> SetProjectList(List<PBS.Vmo.FacilityVmo> 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<MapProjectViewModel>();
|
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<bool>("setProjectList", vmList);
|
}
|
|
/// <summary>
|
/// 选择项目
|
/// </summary>
|
public async Task<bool> SelectProject(long projectId)
|
{
|
return await this.webViewControl2.EvaluateScriptAsync<bool>("selectProject", projectId.ToString());
|
}
|
|
/// <summary>
|
/// 取消选择项目
|
/// </summary>
|
public async Task<bool> CancelSelectProject()
|
{
|
return await this.webViewControl2.EvaluateScriptAsync<bool>("cancelSelectProject()");
|
}
|
}
|
}
|